[Intel-gfx] [PATCH] RFC drm/i915: Slaughter the thundering i915_wait_request herd

John Harrison John.C.Harrison at Intel.com
Fri Nov 27 07:23:02 PST 2015


On 27/11/2015 14:10, Chris Wilson wrote:
> On Fri, Nov 27, 2015 at 01:53:34PM +0000, Tvrtko Ursulin wrote:
>> P.S. And just realised this work is competing with the scheduler
>> which changes all this again.
> On the other hand, there are regressions to be solved before more
> features.
> -Chris
>

Had a quick discussion with Tvrtko about this. It sounds like this 
change will cause lots of problems for the scheduler work. Specifically, 
seqnos only get allocated when requests are actually sent to the 
hardware and if a request is pre-empted and kicked off the hardware then 
it's seqno will be reset to zero before being re-allocated when the 
request is resubmitted. This bouncing of seqnos will cause major 
problems for the tree structure?

However, the struct fence conversion patches could potentially solve the 
whole problem in a simpler manner. The fence conversion would allow the 
wait_request function to simply register a callback on the fence and 
then only be woken up when that specific fence is signaled. The 
signalling code already tracks exactly which requests are running on the 
hardware, currently as a list but it should be easy enough to convert to 
the tree structure as per this patch. There is only one place that wakes 
up and processes the to-be-signaled list which would then run the 
callback only for those requests that have actually completed. Hence no 
thundering herd of wakeups.

John.



More information about the Intel-gfx mailing list