[PATCH v5 1/6] drm/msm: Hold runpm ref in set_sysprof()

From: Rob Clark

Date: Wed Nov 04 2026 - 13:22:22 EST


We should be holding a runpm ref when we try to set/clear GMU OOB
requests. Apparently we'd been getting autosuspend lucky before.

Signed-off-by: Rob Clark <robin.clark@xxxxxxxxxxxxxxxx>
---
drivers/gpu/drm/msm/msm_drv.c | 2 +-
drivers/gpu/drm/msm/msm_submitqueue.c | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index 4b2798efd9da..7fe273bf74d2 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -362,7 +362,7 @@ static void msm_postclose(struct drm_device *dev, struct drm_file *file)
* It is not possible to set sysprof param to non-zero if gpu
* is not initialized:
*/
- if (priv->gpu)
+ if (priv->gpu && ctx->sysprof)
msm_context_set_sysprof(ctx, priv->gpu, 0);

context_close(ctx);
diff --git a/drivers/gpu/drm/msm/msm_submitqueue.c b/drivers/gpu/drm/msm/msm_submitqueue.c
index d307cdd17d90..e3e7c401fa5c 100644
--- a/drivers/gpu/drm/msm/msm_submitqueue.c
+++ b/drivers/gpu/drm/msm/msm_submitqueue.c
@@ -9,6 +9,7 @@

int msm_context_set_sysprof(struct msm_context *ctx, struct msm_gpu *gpu, int sysprof)
{
+ guard(pm_runtime_active)(&gpu->pdev->dev);
guard(rwsem_write)(&ctx->ctxlock);

/*
@@ -21,7 +22,7 @@ int msm_context_set_sysprof(struct msm_context *ctx, struct msm_gpu *gpu, int sy
default:
return UERR(EINVAL, gpu->dev, "Invalid sysprof: %d", sysprof);
case 2:
- pm_runtime_get_sync(&gpu->pdev->dev);
+ pm_runtime_get(&gpu->pdev->dev);
fallthrough;
case 1:
refcount_inc(&gpu->sysprof_active);
--
2.56.0