[Intel-gfx] [PATCH 13/14] drm/i915/guc: Workaround the missing user interrupt after preemption

Daniele Ceraolo Spurio daniele.ceraolospurio at intel.com
Fri Oct 20 17:42:55 UTC 2017



On 20/10/17 10:22, Chris Wilson wrote:
> Quoting Chris Wilson (2017-10-19 20:44:41)
>> Quoting MichaƂ Winiarski (2017-10-19 19:36:18)
>>> With GuC, we're scheduling tasklet on USER_INTERRUPT - since some work
>>> has completed, perhaps we're able to submit some more work. We're doing
>>> similar thing for preemption - after preemption has completed, it's time
>>> to schedule the tasklet and submit more work (since the engine is now
>>> idle). Unfortunately, we can hit the scenarios where the preemption is
>>> done, but the interrupt is nowhere to be seen. To work around the
>>> problem, let's use a delayed work that's kicking the tasklet if
>>> preemption is done, and queueing itself otherwise.
>>
>> I'm not buying it yet.
> 
> I think I know what it is. I think it is as simple as us turning off the
> irq when there's no more requests being signaled on the engine.
> -Chris

I can confirm this, I was just about to reply with the same findings ;)
By hackily adding USER_INTERRUPT to irq_keep_mask we've been able to run 
exec_whisper at fds-priority several time in a row with no problems.

Daniele


More information about the Intel-gfx mailing list