From: Sagar Arun Kamble <sagar.a.kamble@intel.com>
To: Chris Wilson <chris@chris-wilson.co.uk>, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH] drm/i915: Use exponential backoff for wait_for()
Date: Tue, 21 Nov 2017 22:19:37 +0530 [thread overview]
Message-ID: <33219648-1cbb-eb80-1bdf-c5808e96104e@intel.com> (raw)
In-Reply-To: <151128201212.436.13133468445447562136@mail.alporthouse.com>
On 11/21/2017 10:03 PM, Chris Wilson wrote:
> Quoting Sagar Arun Kamble (2017-11-21 16:29:57)
>>
>> On 11/21/2017 8:54 PM, Chris Wilson wrote:
>>> Instead of sleeping for a fixed 1ms (roughly, depending on timer slack),
>>> start with a small sleep and exponentially increase the sleep on each
>>> cycle.
>>>
>>> A good example of a beneficiary is the guc mmio communication channel.
>>> Typically we expect (and so spin) for 10us for a quick response, but this
>>> doesn't cover everything and so sometimes we fallback to the millisecond+
>>> sleep. This incurs a significant delay in time-critical operations like
>>> preemption (igt/gem_exec_latency), which can be improved significantly by
>>> using a small sleep after the spin fails.
>>>
>>> We've made this suggestion many times, but had little experimental data
>>> to support adding the complexity.
>>>
>>> References: 1758b90e38f5 ("drm/i915: Use a hybrid scheme for fast register waits")
>>> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
>>> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>> Cc: John Harrison <John.C.Harrison@intel.com>
>>> Cc: Michał Winiarski <michal.winiarski@intel.com>
>>> Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
>>> ---
>>> drivers/gpu/drm/i915/intel_drv.h | 5 ++++-
>>> 1 file changed, 4 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
>>> index 69aab324aaa1..c1ea9a009eb4 100644
>>> --- a/drivers/gpu/drm/i915/intel_drv.h
>>> +++ b/drivers/gpu/drm/i915/intel_drv.h
>>> @@ -50,6 +50,7 @@
>>> */
>>> #define _wait_for(COND, US, W) ({ \
>>> unsigned long timeout__ = jiffies + usecs_to_jiffies(US) + 1; \
>>> + long wait__ = 1; \
>>> int ret__; \
>>> might_sleep(); \
>>> for (;;) { \
>>> @@ -62,7 +63,9 @@
>>> ret__ = -ETIMEDOUT; \
>>> break; \
>>> } \
>>> - usleep_range((W), (W) * 2); \
>>> + usleep_range(wait__, wait__ * 2); \
>>> + if (wait__ < (W)) \
>> This should be "wait__ < (US)" ?
> US is the total timeout, W is the sleep, now used to provide a cap
> (minimum frequency of polling).
Oh. right. I thought we want to exponentially run down the total
timeout. This might not be correct approach.
Hybrid polling might be useful here but we need to precisely know for
each use of wait_for the expected wait time.
Then we could sleep half the total time and then poll :)
Users needing faster completion should use wait_for_atomic with higher
timeout in uS?
> -Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2017-11-21 16:49 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-21 15:24 [PATCH] drm/i915: Use exponential backoff for wait_for() Chris Wilson
2017-11-21 16:29 ` Sagar Arun Kamble
2017-11-21 16:33 ` Chris Wilson
2017-11-21 16:49 ` Sagar Arun Kamble [this message]
2017-11-21 20:58 ` Chris Wilson
2017-11-21 16:50 ` ✓ Fi.CI.BAT: success for " Patchwork
2017-11-21 17:00 ` [PATCH] " Tvrtko Ursulin
2017-11-21 17:11 ` Chris Wilson
2017-11-21 17:29 ` Ville Syrjälä
2017-11-21 20:40 ` Chris Wilson
2017-11-21 17:36 ` [PATCH v2] " Chris Wilson
2017-11-21 17:41 ` ✓ Fi.CI.IGT: success for " Patchwork
2017-11-21 18:03 ` ✓ Fi.CI.BAT: success for drm/i915: Use exponential backoff for wait_for() (rev2) Patchwork
2017-11-21 19:07 ` ✓ Fi.CI.IGT: " Patchwork
2017-11-21 20:59 ` [PATCH v3] drm/i915: Use exponential backoff for wait_for() Chris Wilson
2017-11-22 7:41 ` Sagar Arun Kamble
2017-11-22 9:36 ` Chris Wilson
2017-11-22 9:47 ` Michal Wajdeczko
2017-11-22 10:03 ` Sagar Arun Kamble
2017-11-24 12:37 ` Michał Winiarski
2017-11-24 14:12 ` Chris Wilson
2017-11-30 3:04 ` John Harrison
2017-11-30 6:19 ` Sagar Arun Kamble
2017-11-30 7:15 ` John Harrison
2017-11-30 7:55 ` Sagar Arun Kamble
2017-12-04 21:51 ` John Harrison
2017-11-21 21:32 ` ✓ Fi.CI.BAT: success for drm/i915: Use exponential backoff for wait_for() (rev3) Patchwork
2017-11-21 22:41 ` ✗ Fi.CI.IGT: warning " Patchwork
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=33219648-1cbb-eb80-1bdf-c5808e96104e@intel.com \
--to=sagar.a.kamble@intel.com \
--cc=chris@chris-wilson.co.uk \
--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