From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jens Axboe Subject: Re: __i915_spin_request() sucks Date: Fri, 13 Nov 2015 08:36:29 -0700 Message-ID: <20151113153629.GB8939@kernel.dk> References: <5644F850.2060803@kernel.dk> <5644F941.9090505@kernel.dk> <20151112221908.GA26194@nuc-i3427.alporthouse.com> <56451812.2050704@kernel.dk> <20151113091558.GN6247@nuc-i3427.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <20151113091558.GN6247@nuc-i3427.alporthouse.com> Sender: linux-kernel-owner@vger.kernel.org To: Chris Wilson Cc: Daniel Vetter , DRI Development , LKML List-Id: dri-devel@lists.freedesktop.org Previous patch was obvious pre-coffee crap, this should work for using ktime to spin max 1usec. diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 5cf4a1998273..21192e55c33c 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -1148,17 +1148,18 @@ static bool missed_irq(struct drm_i915_private *dev_priv, static int __i915_spin_request(struct drm_i915_gem_request *req) { - unsigned long timeout; + ktime_t timeout; if (i915_gem_request_get_ring(req)->irq_refcount) return -EBUSY; - timeout = jiffies + 1; + timeout = ktime_get(); + ktime_add_us(timeout, 1); while (!need_resched()) { if (i915_gem_request_completed(req, true)) return 0; - if (time_after_eq(jiffies, timeout)) + if (ktime_after(ktime_get(), timeout)) break; cpu_relax_lowlatency(); -- Jens Axboe