>From ee49e66551a28550b69a1a0fc7f45ec2ab24c295 Mon Sep 17 00:00:00 2001 From: Pekka Paalanen <[email protected]> Date: Tue, 8 Sep 2009 00:05:24 +0300 Subject: [PATCH] drm/nouveau: do not call ttm_bo_wait_unreserved()
In nouveau_gem_puhsbuf_validate() path, ttm_bo_reserve() already calls ttm_bo_wait_unreserved() internally. Calling it again is not only racy and needless, but it makes the X process hang in uninterruptible sleep. Remove the call to ttm_bo_wait_unreserved() from nouveau_gem_pushbuf_validate(). Signed-off-by: Pekka Paalanen <[email protected]> --- NOTE! This is a tentative patch, I didn't even have the time to compile-test it. On top of the previous. drivers/gpu/drm/nouveau/nouveau_gem.c | 17 ++++++----------- 1 files changed, 6 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c index 55e7988..b339de2 100644 --- a/drivers/gpu/drm/nouveau/nouveau_gem.c +++ b/drivers/gpu/drm/nouveau/nouveau_gem.c @@ -286,19 +286,14 @@ nouveau_gem_pushbuf_lookup_and_reserve(struct nouveau_channel *chan, ret = ttm_bo_reserve(&nvbo->bo, false, false, true, chan->fence.sequence); - switch (ret) { - case 0: - *bop = nvbo; - return 0; - case -EAGAIN: - ret = ttm_bo_wait_unreserved(&nvbo->bo, false); - if (ret == 0) - ret = -EAGAIN; - /* fall through */ - default: + + if (ret) { drm_gem_object_unreference(gem); + return ret; } - return ret; + + *bop = nvbo; + return 0; } static int -- 1.6.3.3 _______________________________________________ Nouveau mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/nouveau
