From: Akhil P Oommen <akhilpo@oss.qualcomm.com>
To: Rob Clark <robin.clark@oss.qualcomm.com>,
Sean Paul <sean@poorly.run>,
Konrad Dybcio <konradybcio@kernel.org>,
Dmitry Baryshkov <lumag@kernel.org>,
Abhinav Kumar <abhinav.kumar@linux.dev>,
Jessica Zhang <jesszhan0024@gmail.com>,
Marijn Suijten <marijn.suijten@somainline.org>,
David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
Neil Armstrong <neil.armstrong@linaro.org>
Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org,
freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org,
Akhil P Oommen <akhilpo@oss.qualcomm.com>
Subject: [PATCH RFT 1/5] drm/msm/adreno/a6xx: Mark cxpd device_link as stateless
Date: Wed, 13 May 2026 02:22:56 +0530 [thread overview]
Message-ID: <20260513-gmu-sync-state-fix-v1-1-6e33e6aa9b4f@oss.qualcomm.com> (raw)
In-Reply-To: <20260513-gmu-sync-state-fix-v1-0-6e33e6aa9b4f@oss.qualcomm.com>
Since the cxpd virtual device is a driverless device, it has no real
struct device_driver bound it the way a normal platform device does. So,
the managed lifecycle doesn't map cleanly onto it. Since the lifecycle of
this device_link is managed by the msm driver, pass DL_FLAG_STATELESS
together with the existing DL_FLAG_PM_RUNTIME flag.
This fix is required to avoid the below splat when a driver is attached to
the GMU:
[ 9.624509] WARNING: drivers/base/core.c:1383 at dvice_links_driver_bound+0x178/0x330, CPU#6: (udev-worker)/354e
[ 9.781167] pc : device_links_driver_bound+0x178/0x330
[ 9.786456] lr : device_links_driver_bound+0x158/0x330
[ 9.798622] sp : ffff8000827bb820
[ 9.802042] x29: ffff8000827bb820 x28: ffff000808915800 x27: 0000000000000044
[ 9.809573] x26: ffffb7caf3f983d0 x25: 0000000000000003 x24: ffffb7caf41645a0
[ 9.816920] x23: ffffb7caf3f982d8 x22: ffff000801239cb8 x21: ffff000801239c10
[ 9.816921] x20: ffff00080b3a8c00 x19: ffff000801239c98 x18: 00000000ffffffff
[ 9.816922] x17: 736d5b2073706f5f x16: ffffb7caf1eb5940 x15: ffff8001027bb3b7
[ 9.816922] x14: 0000000000000026 x13: ffff00080084c110 x12: 0000000000000000
[ 9.816923] x11: ffff0008004a5828 x10: ffff0008004a56d0 x9 : ffffb7caf2227870
[ 9.816924] x8 : ffff0008004a56f8 x7 : 0000000000000001 x6 : 0000000000001000ocket.
[ 9.816925] x5 : 00000000001a7fbf x4 : ffff0008004a56e8 x3 : ffff000801238cc8
[ 9.816926] x2 : ffffb7caf4164000 x1 : ffff000801239c10 x0 : 0000000000000000
[ 9.816927] Call trace:
[ 9.816927] device_links_driver_bound+0x178/0x330 (P)
[ 9.893492] driver_bound+0x7c/0xd0
[ 9.893493] really_probe+0x208/0x2a8
[ 9.893495] __driver_probe_device+0x88/0x170
[ 9.893496] driver_probe_device+0x44/0x178
[ 9.909639] __driver_attach+0x9c/0x1b8
[ 9.913592] bus_for_each_dev+0x7c/0xe8System Message Bus Socket.
[ 9.925839] driver_attach+0x2c/0x40
[ 9.929733] bus_add_driver+0xec/0x218
[ 9.933609] driver_register+0x68/0x138
[ 9.937555] __platform_driver_register+0x2c/0x40
[ 9.937556] adreno_gmu_register+0x2c/0x40 [msm]
[ 9.947141] adreno_register+0x3c/0x50 [msm]
[ 9.951544] msm_drm_register+0x50/0x78 [msm]for the API...
[ 9.962813] do_one_initcall+0x4c/0x3e0
[ 9.966975] do_init_module+0x60/0x280
[ 9.970849] load_module+0x1c70/0x1fa0
[ 9.974708] init_module_from_file+0xdc/0x100
[ 9.979188] __arm64_sys_finit_module+0x1c0/0x2e0
[ 9.984026] invoke_syscall+0x5c/0x120
[ 9.987882] el0_svc_common.constprop.0+0xd0/0xf8
[ 9.992715] do_el0_svc+0x28/0x40
[ 9.995243] qcom_q6v5_pas 6800000.remoteproc: Handover signaled, but it already happened
[ 9.996128] el0_svc+0x38/0x148
[ 10.007672] el0t_64_sync_handler+0xa0/0xe8
[ 10.011975] el0t_64_sync+0x198/0x1a0
Fixes: ead5d3e5eb37 ("drm/msm/a6xx: Vote for cx gdsc from gpu driver")
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
---
drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
index 1b44b9e21ad8..ec13b27feee7 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
@@ -2196,7 +2196,8 @@ int a6xx_gmu_wrapper_init(struct a6xx_gpu *a6xx_gpu, struct device_node *node)
goto err_mmio;
}
- if (!device_link_add(gmu->dev, gmu->cxpd, DL_FLAG_PM_RUNTIME)) {
+ if (!device_link_add(gmu->dev, gmu->cxpd,
+ DL_FLAG_PM_RUNTIME | DL_FLAG_STATELESS)) {
ret = -ENODEV;
goto detach_cxpd;
}
@@ -2377,7 +2378,8 @@ int a6xx_gmu_init(struct a6xx_gpu *a6xx_gpu, struct device_node *node)
goto err_mmio;
}
- link = device_link_add(gmu->dev, gmu->cxpd, DL_FLAG_PM_RUNTIME);
+ link = device_link_add(gmu->dev, gmu->cxpd,
+ DL_FLAG_PM_RUNTIME | DL_FLAG_STATELESS);
if (!link) {
ret = -ENODEV;
goto detach_cxpd;
--
2.51.0
next prev parent reply other threads:[~2026-05-12 20:53 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-12 20:52 [PATCH RFT 0/5] drm/msm: Attach a driver to GMU Akhil P Oommen
2026-05-12 20:52 ` Akhil P Oommen [this message]
2026-05-13 0:56 ` [PATCH RFT 1/5] drm/msm/adreno/a6xx: Mark cxpd device_link as stateless Dmitry Baryshkov
2026-05-16 2:47 ` Claude review: " Claude Code Review Bot
2026-05-12 20:52 ` [PATCH RFT 2/5] drm/msm: Centralize the standalone drm device check for GPU Akhil P Oommen
2026-05-13 5:41 ` Dmitry Baryshkov
2026-05-13 21:10 ` Akhil P Oommen
2026-05-16 2:47 ` Claude review: " Claude Code Review Bot
2026-05-12 20:52 ` [PATCH RFT 3/5] drm/msm/adreno: Fix invalid drvdata typecast in adreno_remove() Akhil P Oommen
2026-05-13 5:39 ` Dmitry Baryshkov
2026-05-16 2:47 ` Claude review: " Claude Code Review Bot
2026-05-12 20:52 ` [PATCH RFT 4/5] drm/msm: Always use component model for standalone GPU Akhil P Oommen
2026-05-13 11:43 ` Dmitry Baryshkov
2026-05-13 21:09 ` Akhil P Oommen
2026-05-16 2:47 ` Claude review: " Claude Code Review Bot
2026-05-12 20:53 ` [PATCH RFT 5/5] drm/msm: Attach a driver to the GMU Akhil P Oommen
2026-05-13 11:46 ` Dmitry Baryshkov
2026-05-16 2:47 ` Claude review: " Claude Code Review Bot
2026-05-16 2:47 ` Claude review: drm/msm: Attach a driver to GMU Claude Code Review Bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260513-gmu-sync-state-fix-v1-1-6e33e6aa9b4f@oss.qualcomm.com \
--to=akhilpo@oss.qualcomm.com \
--cc=abhinav.kumar@linux.dev \
--cc=airlied@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=jesszhan0024@gmail.com \
--cc=konradybcio@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lumag@kernel.org \
--cc=marijn.suijten@somainline.org \
--cc=neil.armstrong@linaro.org \
--cc=robin.clark@oss.qualcomm.com \
--cc=sean@poorly.run \
--cc=simona@ffwll.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox