On Mon, 15 Dec 2025 19:09:17 +0000 Karunika Choo <[email protected]> wrote:
> On 15/12/2025 16:25, Boris Brezillon wrote: > > On Mon, 15 Dec 2025 16:05:20 +0000 > > Aishwarya <[email protected]> wrote: > > > >> Hi Karunika, > >> > >> Booting v6.19-rc1 on rk3588-rock-5b succeeds, but the kernel log shows a > >> panthor firmware load failure followed by a NULL pointer dereference in > >> panthor_fw_halt_mcu() during probe. The driver fails to load > >> arm/mali/arch10.8/mali_csffw.bin with -ENOENT. > >> > >> A git bisect identified the first bad commit as: > >> > >> 51407254986501b19681d55531963f1ea58e89cd > >> drm/panthor: Support GLB_REQ.STATE field for Mali-G1 GPUs > >> > >> > >> Failure log (v6.19-rc1): > >> > >> <4>[ 16.915783] panthor fb000000.gpu: Direct firmware load for > >> arm/mali/arch10.8/mali_csffw.bin failed with error -2 > >> <3>[ 16.916754] panthor fb000000.gpu: [drm] *ERROR* Failed to load > >> firmware image 'mali_csffw.bin' > >> <1>[ 16.917542] Unable to handle kernel NULL pointer dereference at > >> virtual address 0000000000000000 > >> <1>[ 16.918329] Mem abort info: > >> <1>[ 16.918598] ESR = 0x0000000096000004 > >> <1>[ 16.918949] EC = 0x25: DABT (current EL), IL = 32 bits > >> <1>[ 16.919436] SET = 0, FnV = 0 > >> <1>[ 16.919742] EA = 0, S1PTW = 0 > >> <1>[ 16.920041] FSC = 0x04: level 0 translation fault > >> <1>[ 16.920489] Data abort info: > >> <1>[ 16.920766] ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000 > >> <1>[ 16.921269] CM = 0, WnR = 0, TnD = 0, TagAccess = 0 > >> <1>[ 16.921272] GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0 > >> <1>[ 16.921275] user pgtable: 4k pages, 48-bit VAs, pgdp=0000000117ca8000 > >> <1>[ 16.922802] [0000000000000000] pgd=0000000000000000, > >> p4d=0000000000000000 > >> <0>[ 16.923423] Internal error: Oops: 0000000096000004 [#1] SMP > >> [[0;32m OK [0m] Started [0;1;[email protected][0m - Ge<4>[ > >> 16.923941] > >> Modules linked in: pci_endpoint_test snd_soc_audio_graph_card > >> snd_soc_simple_card_utils rockchipdrm snd_soc_core snd_compress panthor(+) > >> snd_pcm_dmaengine drm_gpuvm drm_exec dw_hdmi_qp analogix_dp dw_dp > >> dw_mipi_dsi drm_dp_aux_bus dw_hdmi drm_shmem_helper drm_display_helper > >> snd_pcm > >> cec gpu_sched drm_client_lib drm_dma_helper snd_timer drm_kms_helper snd > >> soundcore drm backlight dm_mod ipv6 > >> <4>[ 16.927513] CPU: 2 UID: 0 PID: 187 Comm: (udev-worker) Not tainted > >> 6.19.0-rc1 #1 PREEMPT > >> <4>[ 16.928357] Hardware name: Radxa ROCK 5B (DT) > >> <4>[ 16.928761] pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS > >> BTYPE=--) > >> <4>[ 16.929392] pc : panthor_fw_halt_mcu+0x24/0x98 [panthor] > >> <4>[ 16.929901] lr : panthor_fw_unplug+0x54/0x134 [panthor] > >> <4>[ 16.930394] sp : ffff800084cf3750 > >> <4>[ 16.930707] x29: ffff800084cf3750 x28: ffff000101d1b000 x27: > >> 0000000000000000 > >> <4>[ 16.931358] x26: ffff80007b36b618 x25: 0000000000000000 x24: > >> ffff000101d1b800 > >> <4>[ 16.932008] x23: ffff80007b373de0 x22: ffff00010126b010 x21: > >> ffff000101d1b000 > >> <4>[ 16.932657] x20: ffff000101d1b000 x19: ffff00011b4200a0 x18: > >> 0000000000000006 > >> <4>[ 16.933310] x17: 67616d6920657261 x16: 776d726966206461 x15: > >> 6f6c206f74206465 > >> <4>[ 16.933963] x14: 6c696146202a524f x13: ffff800082aa6c40 x12: > >> 0000000000000630 > >> <4>[ 16.933970] x11: 0000000000000210 x10: ffff800082afec40 x9 : > >> 1fffe0002039be41 > >> <4>[ 16.935258] x8 : 0000000000000001 x7 : ffff000101cdf200 x6 : > >> ffff0001165f1830 > >> <4>[ 16.935908] x5 : 000000000000007c x4 : 000000000000007c x3 : > >> 0000000000000000 > >> <4>[ 16.936557] x2 : 0000000000000000 x1 : 000000000400ffff x0 : > >> 0000000000000000 > >> [[0;32m OK [0m] Started [0;1;39mserial-getty@ttyS2…rvice<4>[ > >> 16.937207] Call trace: > >> [0m - Serial Getty on ttyS2. > >> <4>[ 16.937924] panthor_fw_halt_mcu+0x24/0x98 [panthor] (P) > >> <4>[ 16.938640] panthor_fw_unplug+0x54/0x134 [panthor] > >> <4>[ 16.939104] panthor_fw_init+0x1a8/0x81c [panthor] > >> <4>[ 16.939561] panthor_device_init+0x350/0x4fc [panthor] > >> <4>[ 16.940046] panthor_probe+0x3c/0x60 [panthor] > >> <4>[ 16.940473] platform_probe+0x5c/0x98 > >> <4>[ 16.940823] really_probe+0xbc/0x298 > >> <4>[ 16.941164] __driver_probe_device+0x78/0x12c > >> <4>[ 16.941572] driver_probe_device+0x3c/0x15c > >> <4>[ 16.941965] __driver_attach+0x94/0x19c > >> <4>[ 16.942328] bus_for_each_dev+0x78/0xd4 > >> <4>[ 16.942691] driver_attach+0x24/0x30 > >> <4>[ 16.943031] bus_add_driver+0xe4/0x208 > >> <4>[ 16.943385] driver_register+0x60/0x128 > >> <4>[ 16.943747] __platform_driver_register+0x24/0x30 > >> <4>[ 16.944184] panthor_init+0x64/0x1000 [panthor] > >> <4>[ 16.944618] do_one_initcall+0x80/0x1c4 > >> <4>[ 16.944981] do_init_module+0x58/0x234 > >> <4>[ 16.945336] load_module+0x1c54/0x1c98 > >> <4>[ 16.945691] init_module_from_file+0xd4/0xec > >> <4>[ 16.946091] __arm64_sys_finit_module+0x144/0x324 > >> <4>[ 16.946528] invoke_syscall+0x48/0x110 > >> <4>[ 16.946883] el0_svc_common.constprop.0+0xc0/0xe0 > >> <4>[ 16.947321] do_el0_svc+0x1c/0x28 > >> <4>[ 16.947638] el0_svc+0x34/0x10c > >> <4>[ 16.947940] el0t_64_sync_handler+0xa0/0xe4 > >> <4>[ 16.948335] el0t_64_sync+0x198/0x19c > >> <0>[ 16.948344] Code: aa0003f4 f9438413 91008273 f9400660 (b9400000) > >> <4>[ 16.949233] ---[ end trace 0000000000000000 ]--- > >> [[0;32m OK [0m] Reached target [0;1;39mgetty.target[0m - Login Prompts. > >> [[0;32m OK [0m] Reached target [0;1;39mmulti-user.target[0m - Multi-User > >> System. > >> <6>[ 16.956742] mc: Linux media interface: v0.10 > >> <6>[ 16.958944] videodev: Linux video capture interface: v2.00 > >> [[0;32m OK [0m] Reached target [0;1;39mgraphical.target[0m - Graphical > >> Interface. > >> Starting [0;1;39msystemd-update-ut… Record Runlevel Change in > >> UTMP... > >> [[0;32m OK [0m] Finished [0;1;39msystemd-update-ut… - Record Runlevel > >> Change in UTMP. > >> <6>[ 17.034547] rockchip-rga fdb80000.rga: HW Version: 0x03.02 > >> <6>[ 17.035459] snps_hdmirx fdee0000.hdmi_receiver: assigned reserved > >> memory node hdmi-receiver-cma > >> <6>[ 17.038646] rockchip-rga fdb80000.rga: Registered rockchip-rga as > >> /dev/video0 > >> <6>[ 17.040732] hantro-vpu fdb50000.video-codec: registered > >> rockchip,rk3568-vpu-dec as /dev/video2 > >> Debian GNU/Linux 12 debian-bookworm-arm64 ttyS2 > >> > >> > >> Bisect log summary: > >> > >> git bisect start > >> # good: [7d0a66e4bb9081d75c82ec4957c50034cb0ea449] Linux 6.18 > >> git bisect good 7d0a66e4bb9081d75c82ec4957c50034cb0ea449 > >> # bad: [d9771d0dbe18dd643760431870a6abf9b0866bb0] Add linux-next specific > >> files for 20251212 > >> git bisect bad d9771d0dbe18dd643760431870a6abf9b0866bb0 > >> # bad: [2aa680df68062e4e0c356ec2aa7100c13654907b] Merge tag > >> 'sound-6.19-rc1' of > >> git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound > >> git bisect bad 2aa680df68062e4e0c356ec2aa7100c13654907b > >> # good: [8f7aa3d3c7323f4ca2768a9e74ebbe359c4f8f88] Merge tag > >> 'net-next-6.19' of > >> git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next > >> git bisect good 8f7aa3d3c7323f4ca2768a9e74ebbe359c4f8f88 > >> # bad: [b3239df349c2c2c94686674489c9629c89ca49a1] Merge tag > >> 'drm-misc-next-2025-12-01-1' of > >> https://gitlab.freedesktop.org/drm/misc/kernel into drm-next > >> git bisect bad b3239df349c2c2c94686674489c9629c89ca49a1 > >> # good: [2e640e8e7b9e9fc0f42c1e15ea0e02d00916ad57] drm/amd/pm: Update > >> default power1_cap > >> git bisect good 2e640e8e7b9e9fc0f42c1e15ea0e02d00916ad57 > >> # good: [89b34ebed02ee39ae02069dcf2e5728aceec9deb] drm/panel: > >> ilitek-ili9881d: Add support for Wanchanglong W552946AAA panel > >> git bisect good 89b34ebed02ee39ae02069dcf2e5728aceec9deb > >> # good: [31d3354f42c0da34415164a1f621a195caa1f1bc] drm/nouveau: verify > >> that hardware supports the flush page address > >> git bisect good 31d3354f42c0da34415164a1f621a195caa1f1bc > >> # good: [ee31621316cc20108eb2075de5d57f2cbd295677] Merge tag > >> 'drm-msm-next-2025-11-18' of https://gitlab.freedesktop.org/drm/msm into > >> drm-next > >> git bisect good ee31621316cc20108eb2075de5d57f2cbd295677 > >> # bad: [e5719e7f19009d4fbedf685fc22eec9cd8de154f] drm/colorop: Add 3x4 CTM > >> type > >> git bisect bad e5719e7f19009d4fbedf685fc22eec9cd8de154f > >> # good: [b1075ae1a3b56fd0b1275caf51bcc633f665bb19] drm/panthor: Add > >> arch-specific panthor_hw binding > >> git bisect good b1075ae1a3b56fd0b1275caf51bcc633f665bb19 > >> # bad: [303e9bf147b3a1b48a6d7079f2924b7d43662805] drm/vkms: Add kunit > >> tests for VKMS LUT handling > >> git bisect bad 303e9bf147b3a1b48a6d7079f2924b7d43662805 > >> # bad: [ab3490493c73374862e47ccc00d3dbb89228f86e] drm/panthor: Add support > >> for Mali-G1 GPUs > >> git bisect bad ab3490493c73374862e47ccc00d3dbb89228f86e > >> # good: [ee4f9af07933648f2f9337d7b24da5562a594399] drm/panthor: Implement > >> L2 power on/off via PWR_CONTROL > >> git bisect good ee4f9af07933648f2f9337d7b24da5562a594399 > >> # bad: [51407254986501b19681d55531963f1ea58e89cd] drm/panthor: Support > >> GLB_REQ.STATE field for Mali-G1 GPUs > >> git bisect bad 51407254986501b19681d55531963f1ea58e89cd > >> # good: [9ee52f5cdc45e397fddad2a9ed879c72a8fcfa65] drm/panthor: Implement > >> soft reset via PWR_CONTROL > >> git bisect good 9ee52f5cdc45e397fddad2a9ed879c72a8fcfa65 > >> # first bad commit: [51407254986501b19681d55531963f1ea58e89cd] > >> drm/panthor: Support GLB_REQ.STATE field for Mali-G1 GPUs > >> > >> Please let me know if further testing on rk3588-rock-5b would be helpful. > > > > Could you try with the following diff applied. > > > > Karunika, do you remember why we have to gracefully halt the MCU > > in case of an unplug? Feels to me that we can just pull the plug > > by writing DISABLE to MCU_CONTROL, since we don't care about > > warm boots after an unplug happened. > > > > --->8--- > > diff --git a/drivers/gpu/drm/panthor/panthor_fw.c > > b/drivers/gpu/drm/panthor/panthor_fw.c > > index 3641829aeb52..2c4e7aa5ba1e 100644 > > --- a/drivers/gpu/drm/panthor/panthor_fw.c > > +++ b/drivers/gpu/drm/panthor/panthor_fw.c > > @@ -1266,10 +1266,6 @@ void panthor_fw_unplug(struct panthor_device *ptdev) > > if (ptdev->fw->irq.irq) > > panthor_job_irq_suspend(&ptdev->fw->irq); > > > > - panthor_fw_halt_mcu(ptdev); > > - if (!panthor_fw_wait_mcu_halted(ptdev)) > > - drm_warn(&ptdev->base, "Failed to halt MCU on > > unplug"); > > - > > panthor_fw_stop(ptdev); > > } > > > > Hi Boris, > > You are right. We can just pull the plug on unplug. Do you want me to > push a fix for it? If you have time, yes, that'd be great. Thanks, Boris
