Userspace can leave SET_PREDICATE_RESULT active at the end of their batch, causing all the kernel operations from the ring to be noop'ed. This includes workarounds for memory corruption on dg2, as well as the usual synchronisation, arbitration, coherency and signaling. The latter can be used to cause system-wide hangs, prevent TLB invalidates, as well as runtime-pm leakage due to a never signaled fence which escapes hangcheck as the context does run. To avoid the issues caused by allowing userspace to disable kernel execution, we explicitly clear SET_PREDICATE_RESULT but not before recording whether predication was active. By tracking if predication was active at the end of the batch, we can restore it immediately prior to executing the users next batch, preserving the status of the user's predication. And also LRI relative addressing is fixed as part of this series. Akeem G Abodunrin (1): drm/i915/xehpsdv/dg1/tgl: Fix issue with LRI relative addressing Chris Wilson (2): drm/i915/selftests: Skip poisoning SET_PREDICATE_RESULT on dg2 drm/i915/gt: Clear SET_PREDICATE_RESULT prior to executing the ring drivers/gpu/drm/i915/gt/gen8_engine_cs.c | 54 +++++++++++++ drivers/gpu/drm/i915/gt/gen8_engine_cs.h | 7 ++ drivers/gpu/drm/i915/gt/intel_engine_regs.h | 2 + .../drm/i915/gt/intel_execlists_submission.c | 15 +++- drivers/gpu/drm/i915/gt/intel_gpu_commands.h | 2 + drivers/gpu/drm/i915/gt/intel_lrc.c | 75 ++++++++++++++----- drivers/gpu/drm/i915/gt/intel_lrc.h | 5 ++ drivers/gpu/drm/i915/gt/selftest_lrc.c | 53 ++++++++++++- .../gpu/drm/i915/gt/uc/intel_guc_submission.c | 2 + 9 files changed, 189 insertions(+), 26 deletions(-) -- 2.20.1