RPi 4 deferred probe timeout of V3D PM domain
Marek Szyprowski
m.szyprowski at samsung.com
Thu Oct 30 13:12:57 PDT 2025
On 30.10.2025 20:13, Stefan Wahren wrote:
>
> Am 30.10.25 um 13:59 schrieb Mark Brown:
>> On Wed, Oct 29, 2025 at 08:51:38PM +0100, Stefan Wahren wrote:
>>> Am 28.10.25 um 19:47 schrieb Mark Brown:
>>> Okay, here is my theory. The difference is about (boot) time. In my
>>> setup
>>> the whole device boot from SD card and in your case the kernel
>>> modules are
>>> stored via NFS.
>>> V3D requires two resources, a clock and a PM domain. Additionally
>>> the PM
>>> domain itself depends on the very same clock. In arm64/defconfig the
>>> relevant clock driver is build as module, but the PM domain driver is
>>> builtin.
>>> During boot "driver_deferred_probe_timeout" (10 s) expires before
>>> the clock
>>> driver could be loaded via NFS. So the PM domain core gave up:
>>> [ 16.936547] v3d fec00000.gpu: deferred probe timeout, ignoring
>>> dependency
>>> So this breaks probing of V3D driver in this case.
>> That seems buggy on the part of the core, particularly since userspace
>> isn't there yet so we might be missing some filesystems - I would have
>> expected the device to probe once the supply becomes available. But I
>> do agree with your analysis, it doesn't look like an issue with this
>> driver.
> recent changes to the Raspberry Pi 4 device tree revealed the issue
> for the following corner case:
> V3D requires two resources, a clock and a PM domain. Additionally the
> PM domain itself depends on the very same clock. In arm64/defconfig
> the relevant clock driver clk-raspberrypi is build as module, but the
> PM domain driver bcm2835-pmdomain is builtin.
>
> During boot "driver_deferred_probe_timeout" (10 s) expires before the
> clock driver could be loaded via NFS. So the PM domain core gave up:
> [ 16.936547] v3d fec00000.gpu: deferred probe timeout, ignoring
> dependency
>
> Expected behavior would be that the pmdomain defers probing until the
> clk-driver is loaded from NFS.
>
> I simulated Marks setup and replaced the dev_warn above with a
> dev_WARN and got the following result:
>
> [ 22.516225] v3d fec00000.gpu: __genpd_dev_pm_attach() failed to
> find PM domain: -2
> [ 22.516260] ------------[ cut here ]------------
> [ 22.516268] v3d fec00000.gpu: deferred probe timeout, ignoring
> dependency
> [ 22.516355] WARNING: CPU: 0 PID: 75 at drivers/base/dd.c:297
> driver_deferred_probe_check_state+0x64/0x80
> [ 22.516401] Modules linked in: aes_neon_blk af_alg brcmfmac_wcc
> qrtr vc4 brcmfmac snd_soc_hdmi_codec snd_soc_core brcmutil
> snd_compress snd_pcm_dmaengine sha256 snd_bcm2835(C) cfg80211 drm_exec
> hci_uart snd_pcm btqca snd_timer btbcm snd bluetooth soundcore
> drm_display_helper ecdh_generic broadcom v3d ecc bcm_phy_lib cec
> drm_shmem_helper drm_client_lib pcie_brcmstb gpu_sched drm_dma_helper
> genet raspberrypi_hwmon rfkill bcm2711_thermal drm_kms_helper
> irq_bcm2712_mip pwrseq_core i2c_bcm2835 nvmem_rmem vchiq(C)
> pwm_bcm2835 i2c_mux_pinctrl reset_gpio drm fuse backlight dm_mod ipv6
> [ 22.516721] CPU: 0 UID: 0 PID: 75 Comm: kworker/u16:3 Tainted: G
> C 6.18.0-rc3-dirty #7 PREEMPT
> [ 22.516743] Tainted: [C]=CRAP
> [ 22.516751] Hardware name: Raspberry Pi 4 Model B Rev 1.4 (DT)
> [ 22.516763] Workqueue: events_unbound deferred_probe_work_func
> [ 22.516792] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS
> BTYPE=--)
> [ 22.516806] pc : driver_deferred_probe_check_state+0x64/0x80
> [ 22.516828] lr : driver_deferred_probe_check_state+0x64/0x80
> [ 22.516847] sp : ffff800080c7ba90
> [ 22.516856] x29: ffff800080c7ba90 x28: 0000000000000000 x27:
> 0000000000000000
> [ 22.516884] x26: ffff00010001c028 x25: 0000000000000001 x24:
> ffff000100136c10
> [ 22.516910] x23: 0000000000000001 x22: fffffffffffffffe x21:
> 0000000000000000
> [ 22.516935] x20: ffff000100136c10 x19: ffff000100136c10 x18:
> fffffffffffe71c8
> [ 22.516958] x17: 616d6f64204d5020 x16: 646e6966206f7420 x15:
> ffffb4b9255d6c70
> [ 22.516982] x14: 0000000000000000 x13: ffffb4b9255d6cf8 x12:
> 00000000000004c5
> [ 22.517005] x11: 0000000000000197 x10: ffffb4b92562ecf8 x9 :
> ffffb4b9255d6cf8
> [ 22.517029] x8 : 00000000ffffefff x7 : ffffb4b92562ecf8 x6 :
> 80000000fffff000
> [ 22.517053] x5 : ffff0001fef97408 x4 : 0000000000000000 x3 :
> 0000000000000027
> [ 22.517076] x2 : 0000000000000000 x1 : 0000000000000000 x0 :
> ffff000100806900
> [ 22.517100] Call trace:
> [ 22.517111] driver_deferred_probe_check_state+0x64/0x80 (P)
> [ 22.517135] __genpd_dev_pm_attach+0x270/0x2c4
> [ 22.517159] genpd_dev_pm_attach+0x64/0x74
> [ 22.517178] dev_pm_domain_attach+0x78/0x7c
> [ 22.517200] platform_probe+0x48/0x98
> [ 22.517215] really_probe+0xbc/0x29c
> [ 22.517228] __driver_probe_device+0x78/0x12c
> [ 22.517241] driver_probe_device+0xd8/0x15c
> [ 22.517254] __device_attach_driver+0xb8/0x134
> [ 22.517267] bus_for_each_drv+0x88/0xe8
> [ 22.517286] __device_attach+0xa0/0x190
> [ 22.517299] device_initial_probe+0x14/0x20
> [ 22.517312] bus_probe_device+0xac/0xb0
> [ 22.517331] deferred_probe_work_func+0x88/0xc0
> [ 22.517351] process_one_work+0x148/0x28c
> [ 22.517375] worker_thread+0x2d0/0x3d8
> [ 22.517394] kthread+0x12c/0x204
> [ 22.517413] ret_from_fork+0x10/0x20
> [ 22.517433] ---[ end trace 0000000000000000 ]---
> [ 22.517450] v3d fec00000.gpu: probe with driver v3d failed with
> error -110
> [ 22.523164] platform fef05700.hdmi: deferred probe pending: (reason
> unknown)
> [ 22.523197] platform bcm2835-power: deferred probe pending:
> bcm2835-power: Failed to get clock v3d
>
> Do you think issue is in bcm2835-pmdomain or in the pmdomain core?
> Any ideas how to solve this?
As I mentioned in the other thread, this is imho a configuration issue.
If core modules are distributed on NFS rootfs, then one should increase
deferred probe timeout by adding deferred_probe_timeout=60 to cmdline.
On the other hand drivers built into the kernel should not depend on the
resources provided by the drivers built as modules, so maybe it would
make sense to change CONFIG_CLK_RASPBERRYPI from 'm' to 'y' in
arch/arm64/configs/defconfig.
Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland
More information about the linux-arm-kernel
mailing list