]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915/gt: Defer breadcrumb processing to after the irq handler
authorChris Wilson <chris@chris-wilson.co.uk>
Wed, 27 Nov 2019 11:58:13 +0000 (11:58 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Wed, 27 Nov 2019 17:02:14 +0000 (17:02 +0000)
commit7c1eae0f1a7e32a9176d415a8ea0981d4858def6
tree5ea8577e99a1301ae9afcf6b98ea68d024e8b7cd
parent6880d109bc8d225d7cc70bb5c75c7ebab741aac4
drm/i915/gt: Defer breadcrumb processing to after the irq handler

The design of our interrupt handlers is that we ack the receipt of the
interrupt first, inside the critical section where the master interrupt
control is off and other cpus cannot start processing the next
interrupt; and then process the interrupt events afterwards. However,
Icelake introduced a whole new set of banked GT_IIR that are inherently
serialised and slow to retrieve the IIR and must be processed within the
critical section. We can still push our breadcrumbs out of this critical
section by using our irq_worker. On bdw+, this should not make too much
of a difference as we only slightly defer the breadcrumbs, but on icl+
this should make a big difference to our throughput of interrupts from
concurrently executing engines.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191127115813.3345823-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gt/intel_gt_irq.c