On Thu, 25 Jun 2026 11:36:15 +0200 Boris Brezillon <[email protected]> wrote:
> 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 > slightly over the few usec (20+ usecs) we usually expect from > hardird handlers, 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. > > Sorry for the high submission rate (v4 was sent this morning), > but I'd like get the remaining blockers out of the way, and > shashiko keeps finding new legitimate issues :-). > > Signed-off-by: Boris Brezillon <[email protected]> > --- > Changes in v5: > - Add a fix for a theoretical IOMEM access in suspended state (patch 1) > - Make sure we don't delay a pending immediate tick in > sched_resume_tick() (patch 2) > - Make sure we initialize panthor_irq::state properly in the irq_request > helper > - Link to v4: > https://lore.kernel.org/r/[email protected] > > Changes in v4: > - Add a bunch of fixes for bugs reported by shashiko > - Link to v3: > https://lore.kernel.org/r/[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 (16): > drm/panthor: Fix theoretical IOMEM access in suspended state > drm/panthor: Don't overrule pending immediate ticks in > sched_resume_tick() > drm/panthor: Fix panthor_pwr_unplug() > drm/panthor: Drop a needless check in panthor_fw_unplug() > drm/panthor: Fix a leak when a group is evicted before the tiler OOM is > serviced > drm/panthor: Interrupt group start/resumption if group_bind_locked() > fails > drm/panthor: Keep interrupts masked until they are needed If you're reviewing this version, please ignore anything coming before patch 8, since those have been re-posted as a separate misc-fixes series[1]. Thanks, Boris > 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: Don't update might_have_idle_groups in > process_idle_event_locked() > drm/panthor: Get rid of panthor_group::fatal_lock > 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 [1]https://lore.kernel.org/dri-devel/[email protected]/T/#t
