[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CACSVV026d+FWS09VOqRfFESJjk0g1Gp4TJhcdrBcWaZ3H4f3mQ@mail.gmail.com>
Date: Tue, 2 Sep 2025 08:55:18 -0700
From: Rob Clark <rob.clark@....qualcomm.com>
To: Akhil P Oommen <akhilpo@....qualcomm.com>
Cc: Dmitry Baryshkov <lumag@...nel.org>,
Abhinav Kumar <abhinav.kumar@...ux.dev>,
Jessica Zhang <jessica.zhang@....qualcomm.com>,
Sean Paul <sean@...rly.run>,
Marijn Suijten <marijn.suijten@...ainline.org>,
David Airlie <airlied@...il.com>, Simona Vetter <simona@...ll.ch>,
Konrad Dybcio <konradybcio@...nel.org>,
Jordan Crouse <jordan@...micpenguin.net>,
Jonathan Marek <jonathan@...ek.ca>,
Dmitry Baryshkov <dmitry.baryshkov@....qualcomm.com>,
linux-arm-msm@...r.kernel.org, dri-devel@...ts.freedesktop.org,
freedreno@...ts.freedesktop.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 1/4] drm/msm: Fix bootup splat with separate_gpu_drm modparam
On Tue, Sep 2, 2025 at 4:50 AM Akhil P Oommen <akhilpo@....qualcomm.com> wrote:
>
> The drm_gem_for_each_gpuvm_bo() call from lookup_vma() accesses
> drm_gem_obj.gpuva.list, which is not initialized when the drm driver
> does not support DRIVER_GEM_GPUVA feature. Enable it for msm_kms
> drm driver to fix the splat seen when msm.separate_gpu_drm=1 modparam
> is set:
>
> [ 9.506020] Unable to handle kernel paging request at virtual address fffffffffffffff0
> [ 9.523160] Mem abort info:
> [ 9.523161] ESR = 0x0000000096000006
> [ 9.523163] EC = 0x25: DABT (current EL), IL = 32 bits
> [ 9.523165] SET = 0, FnV = 0
> [ 9.523166] EA = 0, S1PTW = 0
> [ 9.523167] FSC = 0x06: level 2 translation fault
> [ 9.523169] Data abort info:
> [ 9.523170] ISV = 0, ISS = 0x00000006, ISS2 = 0x00000000
> [ 9.523171] CM = 0, WnR = 0, TnD = 0, TagAccess = 0
> [ 9.523172] GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
> [ 9.523174] swapper pgtable: 4k pages, 48-bit VAs, pgdp=0000000ad370f000
> [ 9.523176] [fffffffffffffff0] pgd=0000000000000000, p4d=0000000ad4787403, pud=0000000ad4788403, pmd=0000000000000000
> [ 9.523184] Internal error: Oops: 0000000096000006 [#1] SMP
> [ 9.592968] CPU: 9 UID: 0 PID: 448 Comm: (udev-worker) Not tainted 6.17.0-rc4-assorted-fix-00005-g0e9bb53a2282-dirty #3 PREEMPT
> [ 9.592970] Hardware name: Qualcomm CRD, BIOS 6.0.240718.BOOT.MXF.2.4-00515-HAMOA-1 07/18/2024
> [ 9.592971] pstate: a1400005 (NzCv daif +PAN -UAO -TCO +DIT -SSBS BTYPE=--)
> [ 9.592973] pc : lookup_vma+0x28/0xe0 [msm]
> [ 9.592996] lr : get_vma_locked+0x2c/0x128 [msm]
> [ 9.763632] sp : ffff800082dab460
> [ 9.763666] Call trace:
> [ 9.763668] lookup_vma+0x28/0xe0 [msm] (P)
> [ 9.763688] get_vma_locked+0x2c/0x128 [msm]
> [ 9.763706] msm_gem_get_and_pin_iova_range+0x68/0x11c [msm]
> [ 9.763723] msm_gem_get_and_pin_iova+0x18/0x24 [msm]
> [ 9.763740] msm_fbdev_driver_fbdev_probe+0xd0/0x258 [msm]
> [ 9.763760] __drm_fb_helper_initial_config_and_unlock+0x288/0x528 [drm_kms_helper]
> [ 9.763771] drm_fb_helper_initial_config+0x44/0x54 [drm_kms_helper]
> [ 9.763779] drm_fbdev_client_hotplug+0x84/0xd4 [drm_client_lib]
> [ 9.763782] drm_client_register+0x58/0x9c [drm]
> [ 9.763806] drm_fbdev_client_setup+0xe8/0xcf0 [drm_client_lib]
> [ 9.763809] drm_client_setup+0xb4/0xd8 [drm_client_lib]
> [ 9.763811] msm_drm_kms_post_init+0x2c/0x3c [msm]
> [ 9.763830] msm_drm_init+0x1a8/0x22c [msm]
> [ 9.763848] msm_drm_bind+0x30/0x3c [msm]
> [ 9.919273] try_to_bring_up_aggregate_device+0x168/0x1d4
> [ 9.919283] __component_add+0xa4/0x170
> [ 9.919286] component_add+0x14/0x20
> [ 9.919288] msm_dp_display_probe_tail+0x4c/0xac [msm]
> [ 9.919315] msm_dp_auxbus_done_probe+0x14/0x20 [msm]
> [ 9.919335] dp_aux_ep_probe+0x4c/0xf0 [drm_dp_aux_bus]
> [ 9.919341] really_probe+0xbc/0x298
> [ 9.919345] __driver_probe_device+0x78/0x12c
> [ 9.919348] driver_probe_device+0x40/0x160
> [ 9.919350] __driver_attach+0x94/0x19c
> [ 9.919353] bus_for_each_dev+0x74/0xd4
> [ 9.919355] driver_attach+0x24/0x30
> [ 9.919358] bus_add_driver+0xe4/0x208
> [ 9.919360] driver_register+0x60/0x128
> [ 9.919363] __dp_aux_dp_driver_register+0x24/0x30 [drm_dp_aux_bus]
> [ 9.919365] atana33xc20_init+0x20/0x1000 [panel_samsung_atna33xc20]
> [ 9.919370] do_one_initcall+0x6c/0x1b0
> [ 9.919374] do_init_module+0x58/0x234
> [ 9.919377] load_module+0x19cc/0x1bd4
> [ 9.919380] init_module_from_file+0x84/0xc4
> [ 9.919382] __arm64_sys_finit_module+0x1b8/0x2cc
> [ 9.919384] invoke_syscall+0x48/0x110
> [ 9.919389] el0_svc_common.constprop.0+0xc8/0xe8
> [ 9.919393] do_el0_svc+0x20/0x2c
> [ 9.919396] el0_svc+0x34/0xf0
> [ 9.919401] el0t_64_sync_handler+0xa0/0xe4
> [ 9.919403] el0t_64_sync+0x198/0x19c
> [ 9.919407] Code: eb0000bf 54000480 d100a003 aa0303e2 (f8418c44)
> [ 9.919410] ---[ end trace 0000000000000000 ]---
>
> Fixes: 217ed15bd399 ("drm/msm: enable separate binding of GPU and display devices")
> Signed-off-by: Akhil P Oommen <akhilpo@....qualcomm.com>
> ---
> drivers/gpu/drm/msm/msm_drv.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> index 9dcc7a596a11d9342a515dab694bac93dc2805cb..7e977fec4100792394dccf59097a01c2b2556608 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -826,6 +826,7 @@ static const struct file_operations fops = {
>
> #define DRIVER_FEATURES_KMS ( \
> DRIVER_GEM | \
> + DRIVER_GEM_GPUVA | \
Hmm, the description of DRIVER_GEM_GPUVA is that "Driver supports user
defined GPU VA bindings for GEM objects", which isn't really true.
Fortunately the only thing that it actually seems to control currently
is the list head initialization.
Idk if it would be better to make the list head init unconditional, or
just add a comment here?
BR,
-R
> DRIVER_ATOMIC | \
> DRIVER_MODESET | \
> 0 )
>
> --
> 2.50.1
>
Powered by blists - more mailing lists