All fixes to make the core i915 module (without display) working correctly on PREEMPT_RT.
Some fixes are still needed, as the selftests still fail. But otherwise the test results were looking good on PREEMPT_RT. It looks like the patch that added a spinlock caused a regression on !PREEMPT_RT, and may even have caused similar test failures on PREEMPT_RT, so to fix it I removed RCU entirely, and converted to a locked implementation instead. This time at least, i915 live selftests pass on !PREEMPRT_RT for at least 1 machine with same config as CI. Changes since v2: - Remove the extra signaler_active lock, it broke because it didn't protect anything, instead use signalers_lock. Cc: Sebastian Andrzej Siewior <[email protected]> Maarten Lankhorst (3): drm/i915/gt: Fix selftests on PREEMPT_RT drm/i915/gt: Set stop_timeout() correctly on PREEMPT-RT drm/i915: Use sleeping selftests for igt_atomic on PREEMPT_RT Sebastian Andrzej Siewior (4): drm/i915/gt: Use spin_lock_irq() instead of local_irq_disable() + spin_lock() drm/i915: Drop the irqs_disabled() check drm/i915/guc: Consider also RCU depth in busy loop. drm/i915/gt: Use signalers_lock to prevent starvation of irq_work. drivers/gpu/drm/i915/gt/intel_breadcrumbs.c | 169 +++++++++++------- .../gpu/drm/i915/gt/intel_breadcrumbs_types.h | 1 - drivers/gpu/drm/i915/gt/intel_engine_cs.c | 2 +- .../drm/i915/gt/intel_execlists_submission.c | 17 +- drivers/gpu/drm/i915/gt/selftest_engine_pm.c | 8 +- drivers/gpu/drm/i915/gt/uc/intel_guc.h | 2 +- drivers/gpu/drm/i915/i915_request.c | 2 - drivers/gpu/drm/i915/selftests/igt_atomic.c | 7 + 8 files changed, 127 insertions(+), 81 deletions(-) -- 2.53.0
