summaryrefslogtreecommitdiff
path: root/drivers/soc
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2017-11-24 13:00:30 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2017-11-24 16:09:51 +0000
commita54b1873c0e3ffec3041cf72cb10d986d6bc4fe5 (patch)
tree2d9f9d176c3d3b6eb2da1253678d66f545ad1f85 /drivers/soc
parent8c5da3bbcfd9cf763623f2d9515ace8eb3f01307 (diff)
drm/i915: Use exponential backoff for wait_for()
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. v2: Bump the minimum usleep to 10us on advice of Documentation/timers/timers-howto.txt (Tvrko) v3: Specify min, max range for usleep intervals -- some code may crucially depend upon and so want to specify the sleep pattern. 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> Reviewed-by: Michał Winiarski <michal.winiarski@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20171124130031.20761-2-chris@chris-wilson.co.uk
Diffstat (limited to 'drivers/soc')
0 files changed, 0 insertions, 0 deletions