]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: Don't disable interrupts and pretend a lock as been acquired in __timeline_...
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>
Fri, 10 Dec 2021 20:44:17 +0000 (21:44 +0100)
committerTvrtko Ursulin <tvrtko.ursulin@intel.com>
Mon, 13 Dec 2021 09:25:58 +0000 (09:25 +0000)
commite6780e9685523e755a84873e4060f8ca216ecaa7
treeedb0eb0115b781f3b018de03c1e965fa9a2c33a4
parentcacb521882ccceccfb09d5b77838f05d202e5f03
drm/i915: Don't disable interrupts and pretend a lock as been acquired in __timeline_mark_lock().

This is a revert of commits
   cbb4eb9893527 ("drm/i915/gt: Mark up the nested engine-pm timeline lock as irqsafe")
   1e28740e8569e ("drm/i915/gt: Mark context->active_count as protected by timeline->mutex")
   69aa5d2298d34 ("drm/i915: Hold irq-off for the entire fake lock period")

The existing code leads to a different behaviour depending on whether
lockdep is enabled or not. Any following lock that is acquired without
disabling interrupts (but needs to) will not be noticed by lockdep.

This it not just a lockdep annotation but is used but an actual mutex_t
that is properly used as a lock but in case of __timeline_mark_lock()
lockdep is only told that it is acquired but no lock has been acquired.

It appears that its purpose is just satisfy the lockdep_assert_held()
check in intel_context_mark_active(). The other problem with disabling
interrupts is that on PREEMPT_RT interrupts are also disabled which
leads to problems for instance later during memory allocation.

Add a CONTEXT_IS_PARKING bit to intel_engine_cs and set_bit/clear_bit it
instead of mutex_acquire/mutex_release. Use test_bit in the two
identified spots which relied on the lockdep annotation.

Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/YbO8Ie1Nj7XcQPNQ@linutronix.de
drivers/gpu/drm/i915/gt/intel_context.h
drivers/gpu/drm/i915/gt/intel_context_types.h
drivers/gpu/drm/i915/gt/intel_engine_pm.c
drivers/gpu/drm/i915/i915_request.h