aboutsummaryrefslogtreecommitdiffstats
path: root/rust/helpers/regulator.c
diff options
context:
space:
mode:
authorAlessio Belle <[email protected]>2025-06-24 14:22:08 +0000
committerMatt Coster <[email protected]>2025-07-04 15:32:10 +0000
commitd38376b3ee48d073c64e75e150510d7e6b4b04f7 (patch)
treee5b631ea7ffd7b949298a8ac89353d125a2dc3bb /rust/helpers/regulator.c
parentdrm/tegra: nvdec: Fix dma_alloc_coherent error check (diff)
downloadkernel-d38376b3ee48d073c64e75e150510d7e6b4b04f7.tar.gz
kernel-d38376b3ee48d073c64e75e150510d7e6b4b04f7.zip
drm/imagination: Fix kernel crash when hard resetting the GPU
The GPU hard reset sequence calls pm_runtime_force_suspend() and pm_runtime_force_resume(), which according to their documentation should only be used during system-wide PM transitions to sleep states. The main issue though is that depending on some internal runtime PM state as seen by pm_runtime_force_suspend() (whether the usage count is <= 1), pm_runtime_force_resume() might not resume the device unless needed. If that happens, the runtime PM resume callback pvr_power_device_resume() is not called, the GPU clocks are not re-enabled, and the kernel crashes on the next attempt to access GPU registers as part of the power-on sequence. Replace calls to pm_runtime_force_suspend() and pm_runtime_force_resume() with direct calls to the driver's runtime PM callbacks, pvr_power_device_suspend() and pvr_power_device_resume(), to ensure clocks are re-enabled and avoid the kernel crash. Fixes: cc1aeedb98ad ("drm/imagination: Implement firmware infrastructure and META FW support") Signed-off-by: Alessio Belle <[email protected]> Reviewed-by: Matt Coster <[email protected]> Link: https://lore.kernel.org/r/20250624-fix-kernel-crash-gpu-hard-reset-v1-1-6d24810d72a6@imgtec.com Cc: [email protected] Signed-off-by: Matt Coster <[email protected]>
Diffstat (limited to 'rust/helpers/regulator.c')
0 files changed, 0 insertions, 0 deletions