drm/i915/execlists: Lift process_csb() out of the irq-off spinlock
If we only call process_csb() from the tasklet, though we lose the ability to bypass ksoftirqd interrupt processing on direct submission paths, we can push it out of the irq-off spinlock. The penalty is that we then allow schedule_out to be called concurrently with schedule_in requiring us to handle the usage count (baked into the pointer itself) atomically. As we do kick the tasklets (via local_bh_enable()) after our submission, there is a possibility there to see if we can pull the local softirq processing back from the ksoftirqd. v2: Store the 'switch_priority_hint' on submission, so that we can safely check during process_csb(). Signed-off-by:Chris Wilson <chris@chris-wilson.co.uk> Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com> Reviewed-by:
Mika Kuoppala <mika.kuoppala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190816171608.11760-1-chris@chris-wilson.co.uk
Showing
- drivers/gpu/drm/i915/gt/intel_context_types.h 1 addition, 3 deletionsdrivers/gpu/drm/i915/gt/intel_context_types.h
- drivers/gpu/drm/i915/gt/intel_engine_cs.c 1 addition, 1 deletiondrivers/gpu/drm/i915/gt/intel_engine_cs.c
- drivers/gpu/drm/i915/gt/intel_engine_types.h 10 additions, 0 deletionsdrivers/gpu/drm/i915/gt/intel_engine_types.h
- drivers/gpu/drm/i915/gt/intel_lrc.c 87 additions, 49 deletionsdrivers/gpu/drm/i915/gt/intel_lrc.c
- drivers/gpu/drm/i915/i915_utils.h 9 additions, 11 deletionsdrivers/gpu/drm/i915/i915_utils.h
Loading
Please register or sign in to comment