From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
To: Intel-gfx@lists.freedesktop.org
Subject: [PATCH 5/7] drm/i915: Don't need a timer to wake us up
Date: Mon, 11 Jan 2016 14:08:39 +0000 [thread overview]
Message-ID: <1452521321-4032-6-git-send-email-tvrtko.ursulin@linux.intel.com> (raw)
In-Reply-To: <1452521321-4032-1-git-send-email-tvrtko.ursulin@linux.intel.com>
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
We can avoid open-coding the schedule wake-up since
commit 9cff8adeaa34b5d2802f03f89803da57856b3b72
Author: NeilBrown <neilb@suse.de>
Date: Fri Feb 13 15:49:17 2015 +1100
sched: Prevent recursion in io_schedule()
exported the io_schedule_timeout function which we can now use
to simplify the code in __i915_wait_request.
v2: New commit message. (Daniel Vetter)
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
drivers/gpu/drm/i915/i915_gem.c | 28 ++++++++--------------------
1 file changed, 8 insertions(+), 20 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 6c60e04fc09c..de98dc41fb9f 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1135,11 +1135,6 @@ i915_gem_check_wedge(struct i915_gpu_error *error,
return 0;
}
-static void fake_irq(unsigned long data)
-{
- wake_up_process((struct task_struct *)data);
-}
-
static bool missed_irq(struct drm_i915_private *dev_priv,
struct intel_engine_cs *ring)
{
@@ -1291,7 +1286,7 @@ int __i915_wait_request(struct drm_i915_gem_request *req,
}
for (;;) {
- struct timer_list timer;
+ long sched_timeout;
prepare_to_wait(&ring->irq_queue, &wait, state);
@@ -1321,21 +1316,14 @@ int __i915_wait_request(struct drm_i915_gem_request *req,
break;
}
- timer.function = NULL;
- if (timeout || missed_irq(dev_priv, ring)) {
- unsigned long expire;
-
- setup_timer_on_stack(&timer, fake_irq, (unsigned long)current);
- expire = missed_irq(dev_priv, ring) ? jiffies + 1 : timeout_expire;
- mod_timer(&timer, expire);
- }
-
- io_schedule();
+ if (timeout)
+ sched_timeout = timeout_expire - jiffies;
+ else if (missed_irq(dev_priv, ring))
+ sched_timeout = 1;
+ else
+ sched_timeout = MAX_SCHEDULE_TIMEOUT;
- if (timer.function) {
- del_singleshot_timer_sync(&timer);
- destroy_timer_on_stack(&timer);
- }
+ io_schedule_timeout(sched_timeout);
}
if (!irq_test_in_progress)
ring->irq_put(ring);
--
1.9.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2016-01-11 14:08 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-11 14:08 [PATCH v3 0/7] Misc cleanups and locking fixes Tvrtko Ursulin
2016-01-11 14:08 ` [PATCH 1/7] drm/i915/bdw+: Replace list_del+list_add_tail with list_move_tail Tvrtko Ursulin
2016-01-11 14:08 ` [PATCH 2/7] drm/i915: Do not call API requiring struct_mutex where it is not available Tvrtko Ursulin
2016-01-11 14:35 ` Chris Wilson
2016-01-12 11:41 ` [PATCH v2 " Tvrtko Ursulin
2016-01-12 15:47 ` Dave Gordon
2016-01-13 16:16 ` [PATCH v3] " Tvrtko Ursulin
2016-01-13 19:34 ` Chris Wilson
2016-01-11 14:08 ` [PATCH 3/7] drm/i915: Cache ringbuffer GTT address Tvrtko Ursulin
2016-01-11 14:30 ` Chris Wilson
2016-01-11 14:31 ` Chris Wilson
2016-01-11 15:06 ` Tvrtko Ursulin
2016-01-11 14:08 ` [PATCH 4/7] drm/i915: Cache LRC state page in the context Tvrtko Ursulin
2016-01-11 14:29 ` Chris Wilson
2016-01-11 15:07 ` Tvrtko Ursulin
2016-01-12 11:43 ` [PATCH v2 " Tvrtko Ursulin
2016-01-12 11:56 ` [PATCH v3 " Tvrtko Ursulin
2016-01-12 12:12 ` Chris Wilson
2016-01-12 12:54 ` Tvrtko Ursulin
2016-01-12 13:11 ` Chris Wilson
2016-01-12 16:45 ` Dave Gordon
2016-01-13 1:37 ` Chris Wilson
2016-01-13 13:49 ` Tvrtko Ursulin
2016-01-11 14:08 ` Tvrtko Ursulin [this message]
2016-01-11 14:33 ` [PATCH 5/7] drm/i915: Don't need a timer to wake us up Chris Wilson
2016-01-12 10:20 ` Tvrtko Ursulin
2016-01-11 14:08 ` [PATCH 6/7] drm/i915: Only grab timestamps when needed Tvrtko Ursulin
2016-01-11 14:36 ` Chris Wilson
2016-01-11 15:04 ` Tvrtko Ursulin
2016-01-12 15:52 ` Dave Gordon
2016-01-12 17:14 ` Daniel Vetter
2016-01-13 13:54 ` [PATCH v2] " Tvrtko Ursulin
2016-01-11 14:08 ` [PATCH 7/7] drm/i915: GEM operations need to be done under the big lock Tvrtko Ursulin
2016-01-11 14:38 ` Chris Wilson
2016-01-11 14:47 ` Tvrtko Ursulin
2016-01-11 15:00 ` Chris Wilson
2016-01-11 15:04 ` Chris Wilson
2016-01-11 15:16 ` Tvrtko Ursulin
2016-01-11 15:36 ` Ville Syrjälä
2016-01-11 16:56 ` Chris Wilson
2016-01-13 12:46 ` Tvrtko Ursulin
2016-01-13 13:36 ` Imre Deak
2016-01-13 14:11 ` Tvrtko Ursulin
2016-01-13 14:32 ` Chris Wilson
2016-01-13 14:41 ` Imre Deak
2016-01-13 14:53 ` Tvrtko Ursulin
2016-01-13 15:25 ` Imre Deak
2016-01-13 15:55 ` Daniel Vetter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1452521321-4032-6-git-send-email-tvrtko.ursulin@linux.intel.com \
--to=tvrtko.ursulin@linux.intel.com \
--cc=Intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).