[PATCH v3 0/7] drm/panthor: Reduce dma_fence signalling latency

From: Boris Brezillon

Date: Tue Jun 23 2026 - 08:51:20 EST


Right now, panthor is one of the rare drivers to signal fences
from work items (not even from the threaded IRQ handler). We
tried moving the job_completion check to hardirq handlers like
other drivers do, but the duration of this handler gets too
slightly over the few usec (20+ usecs) and we're not sure we
want to hold off the processing of other interrupts for that
long. So this series just gets rid of the threaded-handler ->
work_item indirection and checks for job completion (and thus,
fence signalling) directly in the threaded handler.

Signed-off-by: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx>
---
Changes in v3:
- Save/restore the irq state in the raw handler.
- Rename panthor_irq::mask_lock into panthor_irq::lock
- Use the __always_inline specifier on
panthor_irq_default_threaded_handler()
- Use devm_request_threaded_irq() even when the threaded handler is
NULL
- Drop the patch that dynamically enables request-related interrupts
(FW-side race) after the polling period has expired
- Don't process FW events from the hardirq handler (too heavy for an
hardirq handler according to our testing)
- Link to v2: https://lore.kernel.org/r/20260512-panthor-signal-from-irq-v2-0-95c614a739cb@xxxxxxxxxxxxx

Changes in v2:
- Fix commit message in patch 4
- Move devm_kasprintf() before panthor_irq_resume() in patch 3
- Fix erroneous lockdep_assert_held() in patch 6
- Make sure events_lock is held when calling
csg_slot_sync_update_locked() in patch 6
- Restore a csg_slot_sync_update_locked() call in patch 7
- Fix a potential deadlock in patch 9
- Drop the IRQ coalescing patch (formerly patch 10)
- Change panthor_irq_request() so we don't have to define a dummy
threaded handler, and we can let RT kernels move the hard handler
to a thread
- Add patches to transition GPU event processing to the hard IRQ handler
- Link to v1: https://lore.kernel.org/r/20260429-panthor-signal-from-irq-v1-0-4b92ae4142d2@xxxxxxxxxxxxx

---
Boris Brezillon (7):
drm/panthor: Make panthor_irq::state a non-atomic field
drm/panthor: Move the register accessors before the IRQ helpers
drm/panthor: Replace the panthor_irq macro machinery by inline helpers
drm/panthor: Protect events processing with a separate spinlock
drm/panthor: Don't defer job completion checks
drm/panthor: Don't defer FW event processing
drm/panthor: Automate CSG IRQ processing at group unbind time

drivers/gpu/drm/panthor/panthor_device.h | 280 +++++++++----------
drivers/gpu/drm/panthor/panthor_fw.c | 22 +-
drivers/gpu/drm/panthor/panthor_gpu.c | 26 +-
drivers/gpu/drm/panthor/panthor_mmu.c | 37 +--
drivers/gpu/drm/panthor/panthor_pwr.c | 20 +-
drivers/gpu/drm/panthor/panthor_sched.c | 460 ++++++++++++++-----------------
6 files changed, 414 insertions(+), 431 deletions(-)
---
base-commit: ac5ac0acf11df04295eb1811066097b7022d6c7f
change-id: 20260429-panthor-signal-from-irq-d33684f4d292

Best regards,
--
Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx>