mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-14 06:16:11 +07:00
93100fdeb4
When setting up the system to perform the atomic reset, we need to serialise with any ongoing interrupt tasklet or else: <0> [472.951428] i915_sel-4442 0d..1 466527056us : __i915_request_submit: rcs0 fence 11659:2, current 0 <0> [472.951554] i915_sel-4442 0d..1 466527059us : __execlists_submission_tasklet: rcs0: queue_priority_hint:-2147483648, submit:yes <0> [472.951681] i915_sel-4442 0d..1 466527061us : trace_ports: rcs0: submit { 11659:2, 0:0 } <0> [472.951805] i915_sel-4442 0.... 466527114us : __igt_atomic_reset_engine: i915_reset_engine(rcs0:active) under hardirq <0> [472.951932] i915_sel-4442 0d... 466527115us : intel_engine_reset: rcs0 flags=11d <0> [472.952056] i915_sel-4442 0d... 466527117us : execlists_reset_prepare: rcs0: depth<-1 <0> [472.952179] i915_sel-4442 0d... 466527119us : intel_engine_stop_cs: rcs0 <0> [472.952305] <idle>-0 1..s1 466527119us : process_csb: rcs0 cs-irq head=3, tail=4 <0> [472.952431] i915_sel-4442 0d... 466527122us : __intel_gt_reset: engine_mask=1 <0> [472.952557] <idle>-0 1..s1 466527124us : process_csb: rcs0 csb[4]: status=0x00000001:0x00000000 <0> [472.952683] <idle>-0 1..s1 466527130us : trace_ports: rcs0: promote { 11659:2*, 0:0 } <0> [472.952808] i915_sel-4442 0d... 466527131us : execlists_reset: rcs0 <0> [472.952933] i915_sel-4442 0d..1 466527133us : process_csb: rcs0 cs-irq head=3, tail=4 <0> [472.953059] i915_sel-4442 0d..1 466527134us : process_csb: rcs0 csb[4]: status=0x00000001:0x00000000 <0> [472.953185] i915_sel-4442 0d..1 466527136us : trace_ports: rcs0: preempted { 11659:2*, 0:0 } <0> [472.953310] i915_sel-4442 0d..1 466527150us : assert_pending_valid: Nothing pending for promotion! <0> [472.953436] i915_sel-4442 0d..1 466527158us : process_csb: process_csb:1930 GEM_BUG_ON(!assert_pending_valid(execlists, "promote")) We have the same CSB events being seen by process_csb() on two different processors. One being issued by the reset in the test, the other by the interrupt; this scenario is supposed to be prevented by flushing the interrupt tasklet with tasklet_disable() before we enter the atomic reset. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=112069 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/20191023232443.17450-1-chris@chris-wilson.co.uk |
||
---|---|---|
.. | ||
selftests | ||
uc | ||
gen6_renderstate.c | ||
gen7_renderstate.c | ||
gen8_renderstate.c | ||
gen9_renderstate.c | ||
intel_breadcrumbs.c | ||
intel_context_types.h | ||
intel_context.c | ||
intel_context.h | ||
intel_engine_cs.c | ||
intel_engine_heartbeat.c | ||
intel_engine_heartbeat.h | ||
intel_engine_pm.c | ||
intel_engine_pm.h | ||
intel_engine_pool_types.h | ||
intel_engine_pool.c | ||
intel_engine_pool.h | ||
intel_engine_types.h | ||
intel_engine_user.c | ||
intel_engine_user.h | ||
intel_engine.h | ||
intel_gpu_commands.h | ||
intel_gt_irq.c | ||
intel_gt_irq.h | ||
intel_gt_pm_irq.c | ||
intel_gt_pm_irq.h | ||
intel_gt_pm.c | ||
intel_gt_pm.h | ||
intel_gt_requests.c | ||
intel_gt_requests.h | ||
intel_gt_types.h | ||
intel_gt.c | ||
intel_gt.h | ||
intel_llc_types.h | ||
intel_llc.c | ||
intel_llc.h | ||
intel_lrc_reg.h | ||
intel_lrc.c | ||
intel_lrc.h | ||
intel_mocs.c | ||
intel_mocs.h | ||
intel_rc6_types.h | ||
intel_rc6.c | ||
intel_rc6.h | ||
intel_renderstate.c | ||
intel_renderstate.h | ||
intel_reset_types.h | ||
intel_reset.c | ||
intel_reset.h | ||
intel_ringbuffer.c | ||
intel_sseu.c | ||
intel_sseu.h | ||
intel_timeline_types.h | ||
intel_timeline.c | ||
intel_timeline.h | ||
intel_workarounds_types.h | ||
intel_workarounds.c | ||
intel_workarounds.h | ||
Makefile | ||
mock_engine.c | ||
mock_engine.h | ||
selftest_context.c | ||
selftest_engine_cs.c | ||
selftest_engine_heartbeat.c | ||
selftest_engine_pm.c | ||
selftest_engine.c | ||
selftest_engine.h | ||
selftest_gt_pm.c | ||
selftest_hangcheck.c | ||
selftest_llc.c | ||
selftest_llc.h | ||
selftest_lrc.c | ||
selftest_reset.c | ||
selftest_timeline.c | ||
selftest_workarounds.c |