Quoting Chris Wilson (2020-08-07 09:32:52) > Move the register slow register write and readback from out of the > critical path for execlists submission and delay it until the following > worker, shaving off around 200us. Note that the same signal_irq_work() is > allowed to run concurrently on each CPU (but it will only be queued once, > once running though it can be requeued and reexecuted) so we have to > remember to lock the global interactions as we cannot rely on the > signal_irq_work() itself providing the serialisation (in constrast to a > tasklet). > > By pushing the arm/disarm into the central signaling worker we can close > the race for disarming the interrupt (and dropping its associated > GT wakeref) on parking the engine. If we loose the race, that GT wakeref > may be held indefinitely, preventing the machine from sleeping while > the GPU is ostensibly idle. > > v2: Move the self-arming parking of the signal_irq_work to a flush of > the irq-work from intel_breadcrumbs_park(). Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/2271 > Fixes: dfeba1ae34c8 ("drm/i915/gt: Hold context/request reference while breadcrumbs are active") > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx