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@oss.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 | \
DRIVER_ATOMIC | \
DRIVER_MODESET | \
0 )
--
2.50.1
On Tue, Sep 2, 2025 at 4:50 AM Akhil P Oommen <akhilpo@oss.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@oss.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 >
On 9/2/2025 9:25 PM, Rob Clark wrote: > On Tue, Sep 2, 2025 at 4:50 AM Akhil P Oommen <akhilpo@oss.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@oss.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? But the KMS-only drm driver do use symbols related to gpuva. "struct gpuva" for eg:. From that perspective, shouldn't we select this feature here? -Akhil > > BR, > -R > >> DRIVER_ATOMIC | \ >> DRIVER_MODESET | \ >> 0 ) >> >> -- >> 2.50.1 >>
On Mon, Sep 8, 2025 at 8:42 AM Akhil P Oommen <akhilpo@oss.qualcomm.com> wrote: > > On 9/2/2025 9:25 PM, Rob Clark wrote: > > On Tue, Sep 2, 2025 at 4:50 AM Akhil P Oommen <akhilpo@oss.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@oss.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? > > But the KMS-only drm driver do use symbols related to gpuva. "struct > gpuva" for eg:. From that perspective, shouldn't we select this feature > here? Based on how DRIVER_GEM_GPUVA is currently used (ie. not exposed to userspace, etc) this is fine. Maybe the comment describing DRIVER_GEM_GPUVA should be updated to something along the lines of "Driver uses the drm_gpuvm infrastructure" instead of "Driver supports user defined GPU VA bindings for GEM object" BR, -R > -Akhil > > > > > BR, > > -R > > > >> DRIVER_ATOMIC | \ > >> DRIVER_MODESET | \ > >> 0 ) > >> > >> -- > >> 2.50.1 > >> >
On Tue, Sep 02, 2025 at 05:20:00PM +0530, Akhil P Oommen 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 ]--- Nit: usually you can drop timestamps from the kernel log. > > Fixes: 217ed15bd399 ("drm/msm: enable separate binding of GPU and display devices") > Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com> > --- > drivers/gpu/drm/msm/msm_drv.c | 1 + > 1 file changed, 1 insertion(+) > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> -- With best wishes Dmitry
On 9/2/2025 5:57 PM, Dmitry Baryshkov wrote: > On Tue, Sep 02, 2025 at 05:20:00PM +0530, Akhil P Oommen 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 ]--- > > Nit: usually you can drop timestamps from the kernel log. Missed my eyes. Will update in v2. -Akhil. > >> >> Fixes: 217ed15bd399 ("drm/msm: enable separate binding of GPU and display devices") >> Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com> >> --- >> drivers/gpu/drm/msm/msm_drv.c | 1 + >> 1 file changed, 1 insertion(+) >> > > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> > >
© 2016 - 2025 Red Hat, Inc.