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 <[email protected]> --- 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/[email protected] 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/[email protected] --- 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 <[email protected]>
