Re: [PATCH v5] driver core: enforce device_lock for driver_match_device()
From: Jon Hunter
Date: Wed Jan 21 2026 - 15:28:44 EST
On 20/01/2026 15:23, Marek Szyprowski wrote:
On 20.01.2026 14:22, Mark Brown wrote:
On Wed, Jan 14, 2026 at 12:28:43AM +0800, Gui-Dong Han wrote:
Currently, driver_match_device() is called from three sites. One siteI'm seeing boot hangs on Arm Juno in next/pending-fixes which bisect to
(__device_attach_driver) holds device_lock(dev), but the other two
(bind_store and __driver_attach) do not. This inconsistency means that
bus match() callbacks are not guaranteed to be called with the lock
held.
this commit. The boot grinds to a halt near the end of boot:
[ 2.570549] ledtrig-cpu: registered to indicate activity on CPUs
[ 2.618301] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[ 2.623547] msm_serial: driver initialized
[ 2.624058] SuperH (H)SCI(F) driver initialized
[ 2.624312] STM32 USART driver initialized
with no further output, full log:
https://lava.sirena.org.uk/scheduler/job/2387335#L862
We are also seeing similar looking boot hangs on some Qualcomm platforms
in Arm's test lab which aren't verified to be the same thing but are
hanging at a similar point in boot.
I've observed the same issue on Qualcomm RB5 board and bisecting lead me
also to this patch. My kernel log also doesn't reveal much information:
...
[ 3.671227] vreg_bob: Setting 3008000-4000000uV
[ 3.676929] vreg_l1c_1p8: Setting 1800000-1800000uV
[ 3.682826] vreg_l2c_1p2: Setting 1200000-1200000uV
[ 3.688547] vreg_l3c_0p8: Setting 800000-800000uV
[ 3.694080] vreg_l4c_1p7: Setting 1704000-2928000uV
[ 3.699908] vreg_l5c_1p8: Setting 1800000-2928000uV
[ 3.705763] vreg_l6c_2p96: Setting 1800000-2960000uV
[ 3.711684] vreg_l7c_cam_vcm0_2p85: Setting 2856000-3104000uV
[ 3.718408] vreg_l8c_1p8: Setting 1800000-1800000uV
[ 3.724287] vreg_l9c_2p96: Setting 2704000-2960000uV
[ 3.730218] vreg_l10c_3p0: Setting 3000000-3000000uV
[ 3.736226] vreg_l11c_3p3: Setting 3296000-3296000uV
[ 3.743413] vreg_s8c_1p3: Setting 1352000-1352000uV
[ 3.771370] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[ 3.792020] msm_serial: driver initialized
[ 3.797633] SuperH (H)SCI(F) driver initialized
[ 3.802881] STM32 USART driver initialized
[hang/freeze]
I am seeing a similar issue on one of our Tegra boards and bisect also points to this commit.
It is odd because it only appears to impact the Tegra194 Jetson Xavier NX board (tegra194-p3509-0000+p3668-0000.dts).
It appears to boot enough so the test can SSH into the device, but the kernel log does not show the us getting to the console prompt. It also appears that a lot of drivers are not bound as expected. I would need to check if those are all modules or not.
Jon
--
nvpublic