From owner-svn-src-all@FreeBSD.ORG Sun Dec 22 23:41:15 2013 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E3F95CBB; Sun, 22 Dec 2013 23:41:15 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C3B401288; Sun, 22 Dec 2013 23:41:15 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id rBMNfFHI086149; Sun, 22 Dec 2013 23:41:15 GMT (envelope-from dumbbell@svn.freebsd.org) Received: (from dumbbell@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id rBMNfF9h086144; Sun, 22 Dec 2013 23:41:15 GMT (envelope-from dumbbell@svn.freebsd.org) Message-Id: <201312222341.rBMNfF9h086144@svn.freebsd.org> From: Jean-Sebastien Pedron Date: Sun, 22 Dec 2013 23:41:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r259754 - in releng/10.0/sys/dev/drm2: radeon ttm X-SVN-Group: releng MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Dec 2013 23:41:16 -0000 Author: dumbbell Date: Sun Dec 22 23:41:14 2013 New Revision: 259754 URL: http://svnweb.freebsd.org/changeset/base/259754 Log: Merge from stable/10, r259742: drm/ttm, drm/radeon: Replace EINTR/ERESTART by ERESTARTSYS... ... for msleep/cv_*wait() return values, where wait_event*() is used on Linux. ERESTARTSYS is the return code expected by callers when the operation was interrupted. For instance, this is the case of radeon_cs_ioctl() (radeon_cs.c): if an error occurs, and the code isn't ERESTARTSYS (eg. EINTR), it logs an error. Note that ERESTARTSYS is defined as ERESTART, but this keeps callers' code close to Linux. Submitted by: avg@ (previous version) Approved by: re (gjb) Modified: releng/10.0/sys/dev/drm2/radeon/radeon_fence.c releng/10.0/sys/dev/drm2/radeon/radeon_sa.c releng/10.0/sys/dev/drm2/ttm/ttm_bo.c releng/10.0/sys/dev/drm2/ttm/ttm_lock.c Directory Properties: releng/10.0/ (props changed) Modified: releng/10.0/sys/dev/drm2/radeon/radeon_fence.c ============================================================================== --- releng/10.0/sys/dev/drm2/radeon/radeon_fence.c Sun Dec 22 23:33:27 2013 (r259753) +++ releng/10.0/sys/dev/drm2/radeon/radeon_fence.c Sun Dec 22 23:41:14 2013 (r259754) @@ -321,6 +321,8 @@ static int radeon_fence_wait_seq(struct &rdev->fence_queue_mtx, timeout); } + if (r == EINTR) + r = ERESTARTSYS; if (r != 0) { if (r == EWOULDBLOCK) { signaled = @@ -334,7 +336,7 @@ static int radeon_fence_wait_seq(struct mtx_unlock(&rdev->fence_queue_mtx); } radeon_irq_kms_sw_irq_put(rdev, ring); - if (unlikely(r == EINTR || r == ERESTART)) { + if (unlikely(r == ERESTARTSYS)) { return -r; } CTR2(KTR_DRM, "radeon fence: wait end (ring=%d, seq=%d)", @@ -514,6 +516,8 @@ static int radeon_fence_wait_any_seq(str &rdev->fence_queue_mtx, timeout); } + if (r == EINTR) + r = ERESTARTSYS; if (r != 0) { if (r == EWOULDBLOCK) { signaled = @@ -531,7 +535,7 @@ static int radeon_fence_wait_any_seq(str radeon_irq_kms_sw_irq_put(rdev, i); } } - if (unlikely(r == EINTR || r == ERESTART)) { + if (unlikely(r == ERESTARTSYS)) { return -r; } CTR2(KTR_DRM, "radeon fence: wait end (ring=%d, target_seq=%d)", Modified: releng/10.0/sys/dev/drm2/radeon/radeon_sa.c ============================================================================== --- releng/10.0/sys/dev/drm2/radeon/radeon_sa.c Sun Dec 22 23:33:27 2013 (r259753) +++ releng/10.0/sys/dev/drm2/radeon/radeon_sa.c Sun Dec 22 23:41:14 2013 (r259754) @@ -363,6 +363,8 @@ int radeon_sa_bo_new(struct radeon_devic while (!radeon_sa_event(sa_manager, size, align)) { r = -cv_wait_sig(&sa_manager->wq, &sa_manager->wq_lock); + if (r == -EINTR) + r = -ERESTARTSYS; if (r != 0) break; } Modified: releng/10.0/sys/dev/drm2/ttm/ttm_bo.c ============================================================================== --- releng/10.0/sys/dev/drm2/ttm/ttm_bo.c Sun Dec 22 23:33:27 2013 (r259753) +++ releng/10.0/sys/dev/drm2/ttm/ttm_bo.c Sun Dec 22 23:41:14 2013 (r259754) @@ -147,6 +147,8 @@ ttm_bo_wait_unreserved_locked(struct ttm } while (ttm_bo_is_reserved(bo)) { ret = -msleep(bo, &bo->glob->lru_lock, flags, wmsg, 0); + if (ret == -EINTR) + ret = -ERESTARTSYS; if (ret != 0) break; } Modified: releng/10.0/sys/dev/drm2/ttm/ttm_lock.c ============================================================================== --- releng/10.0/sys/dev/drm2/ttm/ttm_lock.c Sun Dec 22 23:33:27 2013 (r259753) +++ releng/10.0/sys/dev/drm2/ttm/ttm_lock.c Sun Dec 22 23:41:14 2013 (r259754) @@ -107,6 +107,8 @@ ttm_read_lock(struct ttm_lock *lock, boo mtx_lock(&lock->lock); while (!__ttm_read_lock(lock)) { ret = msleep(lock, &lock->lock, flags, wmsg, 0); + if (ret == EINTR) + ret = ERESTARTSYS; if (ret != 0) break; } @@ -151,6 +153,8 @@ int ttm_read_trylock(struct ttm_lock *lo mtx_lock(&lock->lock); while (!__ttm_read_trylock(lock, &locked)) { ret = msleep(lock, &lock->lock, flags, wmsg, 0); + if (ret == EINTR) + ret = ERESTARTSYS; if (ret != 0) break; } @@ -204,6 +208,8 @@ ttm_write_lock(struct ttm_lock *lock, bo /* XXXKIB: linux uses __ttm_read_lock for uninterruptible sleeps */ while (!__ttm_write_lock(lock)) { ret = msleep(lock, &lock->lock, flags, wmsg, 0); + if (ret == EINTR) + ret = ERESTARTSYS; if (interruptible && ret != 0) { lock->flags &= ~TTM_WRITE_LOCK_PENDING; wakeup(lock); @@ -280,6 +286,8 @@ int ttm_vt_lock(struct ttm_lock *lock, mtx_lock(&lock->lock); while (!__ttm_vt_lock(lock)) { ret = msleep(lock, &lock->lock, flags, wmsg, 0); + if (ret == EINTR) + ret = ERESTARTSYS; if (interruptible && ret != 0) { lock->flags &= ~TTM_VT_LOCK_PENDING; wakeup(lock);