There is a problem in panthor's cache flushing/soft reset code
related to locking.

They take the reqs_lock spinlock with _irqsave, even though the
contended lock is never acquired in a raw interrupt handler. Only a
threaded handler locks it.

A new tracepoint to debug cache flushing duration without initial
locking waits is thrown in for good measure as well, to complement
what's in lock_stat and what the function tracer can already do.

Signed-off-by: Nicolas Frattaroli <[email protected]>
---
Changes in v4:
- Replace flush tracepoints with just one tracepoint that has a duration
  and exit status argument
- Link to v3: 
https://patch.msgid.link/[email protected]

Changes in v3:
- Drop new wait_event macro patch as the existing ones have a memory
  barrier that makes the current use valid
- Rewrite fix patch to use scoped guards, and just get rid of the IRQ
  disabling
- Add separate fix for the outside-of-lock pending_reqs clearing in soft
  reset path
- Move tracepoint patch to before fixes for easier before/after testing
- Link to v2: 
https://patch.msgid.link/[email protected]

Changes in v2:
- Use trace event template for the two tracepoints (ty Steven Rostedt)
- Link to v1: 
https://patch.msgid.link/[email protected]

---
Nicolas Frattaroli (3):
      drm/panthor: Add tracepoint for cache flushing
      drm/panthor: Revisit reqs_lock handling in flush/reset paths
      drm/panthor: Take reqs_lock in soft_reset for clearing pending_reqs

 drivers/gpu/drm/panthor/panthor_gpu.c   | 89 ++++++++++++++++++++-------------
 drivers/gpu/drm/panthor/panthor_trace.h | 38 ++++++++++++++
 2 files changed, 93 insertions(+), 34 deletions(-)
---
base-commit: 96ddbb14986632af742523e68f90d51c138c57f0
change-id: 20260728-panthor-cache-flush-fix-b36cb15f92c3

Best regards,
--  
Nicolas Frattaroli <[email protected]>

Reply via email to