linux/drivers/gpu/drm/imagination
Alessio Belle 74ef7844dd
drm/imagination: Disable interrupts before suspending the GPU
This is an additional safety layer to ensure no accesses to the GPU
registers can be made while it is powered off.

While we can disable IRQ generation from GPU, META firmware, MIPS
firmware and for safety events, we cannot do the same for the RISC-V
firmware.
To keep a unified approach, once the firmware has completed its power
off sequence, disable IRQs for the while GPU at the kernel level
instead.

Signed-off-by: Alessio Belle <alessio.belle@imgtec.com>
Reviewed-by: Matt Coster <matt.coster@imgtec.com>
Link: https://patch.msgid.link/20260310-drain-irqs-before-suspend-v1-2-bf4f9ed68e75@imgtec.com
Signed-off-by: Matt Coster <matt.coster@imgtec.com>
History 2026-03-17 14:27:42 +00:00
..
Kconfig drm/imagination: KUnit test for pvr_gpuid_decode_string() 2026-01-19 11:20:22 +00:00
Makefile drm/imagination: KUnit test for pvr_gpuid_decode_string() 2026-01-19 11:20:22 +00:00
pvr_ccb.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
pvr_ccb.h drm/imagination: Implement firmware infrastructure and META FW support 2023-11-23 09:01:46 +01:00
pvr_cccb.c drm/imagination: Implement context creation/destruction ioctls 2023-11-23 09:01:46 +01:00
pvr_cccb.h drm/imagination: Numerous documentation fixes. 2023-11-28 18:56:03 +01:00
pvr_context.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
pvr_context.h drm/imagination: Break an object reference loop 2024-11-04 09:41:38 +00:00
pvr_debugfs.c drm/imagination: Simplify module parameters 2026-01-19 11:20:21 +00:00
pvr_debugfs.h drm/imagination: Add firmware trace to debugfs 2023-11-23 09:01:47 +01:00
pvr_device.c drm/imagination: Synchronize interrupts before suspending the GPU 2026-03-17 14:27:42 +00:00
pvr_device.h drm/imagination: KUnit test for pvr_gpuid_decode_string() 2026-01-19 11:20:22 +00:00
pvr_device_info.c drm/imagination: Fixed warning due to implicit cast to bool 2023-12-04 09:41:34 +01:00
pvr_device_info.h drm/imagination: Add GPU ID parsing and firmware loading 2023-11-23 09:01:46 +01:00
pvr_drv.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
pvr_drv.h drm: remove driver date from struct drm_driver and all drivers 2024-12-05 12:35:42 +02:00
pvr_free_list.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
pvr_free_list.h drm/imagination: Implement free list and HWRT create and destroy ioctls 2023-11-23 09:01:46 +01:00
pvr_fw.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
pvr_fw.h drm/imagination: Add RISC-V firmware processor support 2025-04-15 12:21:52 +01:00
pvr_fw_info.h drm/imagination: Numerous documentation fixes. 2023-11-28 18:56:03 +01:00
pvr_fw_meta.c drm: include drm_print.h where needed 2025-10-31 10:34:52 +02:00
pvr_fw_meta.h drm/imagination: Implement firmware infrastructure and META FW support 2023-11-23 09:01:46 +01:00
pvr_fw_mips.c drm/imagination: Move ELF fw utils to common file 2025-04-15 12:21:52 +01:00
pvr_fw_mips.h drm/imagination: Ensure PVR_MIPS_PT_PAGE_COUNT is never zero 2024-04-29 12:31:28 +01:00
pvr_fw_riscv.c drm/imagination: Add RISC-V firmware processor support 2025-04-15 12:21:52 +01:00
pvr_fw_startstop.c drm/imagination: Add RISC-V firmware processor support 2025-04-15 12:21:52 +01:00
pvr_fw_startstop.h drm/imagination: Implement firmware infrastructure and META FW support 2023-11-23 09:01:46 +01:00
pvr_fw_trace.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
pvr_fw_trace.h drm/imagination: Simplify module parameters 2026-01-19 11:20:21 +00:00
pvr_fw_util.c drm/imagination: Move ELF fw utils to common file 2025-04-15 12:21:52 +01:00
pvr_gem.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
pvr_gem.h drm/imagination: Use cached memory with dma_coherent 2025-04-15 12:21:52 +01:00
pvr_hwrt.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
pvr_hwrt.h drm/imagination: Numerous documentation fixes. 2023-11-28 18:56:03 +01:00
pvr_job.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
pvr_job.h drm/imagination: Implement job submission and scheduling 2023-11-23 09:01:47 +01:00
pvr_mmu.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
pvr_mmu.h drm/imagination: Add GEM and VM related code 2023-11-23 09:01:46 +01:00
pvr_power.c drm/imagination: Disable interrupts before suspending the GPU 2026-03-17 14:27:42 +00:00
pvr_power.h drm/imagination: Discard pm_runtime_put() return value 2026-01-08 15:19:15 +01:00
pvr_queue.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
pvr_queue.h drm/sched: Store the drm client_id in drm_sched_fence 2025-05-28 16:15:58 +02:00
pvr_rogue_cr_defs.h drm/imagination: Update register defs for newer GPUs 2025-04-15 12:21:50 +01:00
pvr_rogue_cr_defs_client.h drm/imagination: Add GPU register headers 2023-11-23 09:01:45 +01:00
pvr_rogue_defs.h drm/imagination: Add GPU register headers 2023-11-23 09:01:45 +01:00
pvr_rogue_fwif.h drm/imagination: Add FWIF headers 2023-11-23 09:01:46 +01:00
pvr_rogue_fwif_check.h drm/imagination: Add FWIF headers 2023-11-23 09:01:46 +01:00
pvr_rogue_fwif_client.h drm/imagination: Add FWIF headers 2023-11-23 09:01:46 +01:00
pvr_rogue_fwif_client_check.h drm/imagination: Add FWIF headers 2023-11-23 09:01:46 +01:00
pvr_rogue_fwif_common.h drm/imagination: Add FWIF headers 2023-11-23 09:01:46 +01:00
pvr_rogue_fwif_dev_info.h drm/imagination: Add FWIF headers 2023-11-23 09:01:46 +01:00
pvr_rogue_fwif_resetframework.h drm/imagination: Add FWIF headers 2023-11-23 09:01:46 +01:00
pvr_rogue_fwif_sf.h drm/imagination: Fix a couple of spelling mistakes in literal strings 2023-11-28 13:55:37 +01:00
pvr_rogue_fwif_shared.h drm/imagination: Add FWIF headers 2023-11-23 09:01:46 +01:00
pvr_rogue_fwif_shared_check.h drm/imagination: Add FWIF headers 2023-11-23 09:01:46 +01:00
pvr_rogue_fwif_stream.h drm/imagination: Add FWIF headers 2023-11-23 09:01:46 +01:00
pvr_rogue_heap_config.h drm/imagination: Add firmware and MMU related headers 2023-11-23 09:01:45 +01:00
pvr_rogue_meta.h drm/imagination: Add firmware and MMU related headers 2023-11-23 09:01:45 +01:00
pvr_rogue_mips.h drm/imagination: Add firmware and MMU related headers 2023-11-23 09:01:45 +01:00
pvr_rogue_mips_check.h drm/imagination: Add firmware and MMU related headers 2023-11-23 09:01:45 +01:00
pvr_rogue_mmu_defs.h drm/imagination: Add firmware and MMU related headers 2023-11-23 09:01:45 +01:00
pvr_rogue_riscv.h drm/imagination: Add RISC-V firmware processor support 2025-04-15 12:21:52 +01:00
pvr_stream.c drm/imagination: loop counters moved to loop scope 2025-04-07 10:09:40 +01:00
pvr_stream.h drm/imagination: Implement context creation/destruction ioctls 2023-11-23 09:01:46 +01:00
pvr_stream_defs.c drm/imagination: Implement job submission and scheduling 2023-11-23 09:01:47 +01:00
pvr_stream_defs.h drm/imagination: Implement context creation/destruction ioctls 2023-11-23 09:01:46 +01:00
pvr_sync.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
pvr_sync.h drm/imagination: Implement job submission and scheduling 2023-11-23 09:01:47 +01:00
pvr_test.c drm/imagination: KUnit test for pvr_gpuid_decode_string() 2026-01-19 11:20:22 +00:00
pvr_vm.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
pvr_vm.h drm/imagination: Hold drm_gem_gpuva lock for unmap 2025-03-03 12:09:00 +00:00
pvr_vm_mips.c drm/imagination: loop counters moved to loop scope 2025-04-07 10:09:40 +01:00
pvr_vm_mips.h drm/imagination: Implement MIPS firmware processor and MMU support 2023-11-23 09:01:46 +01:00