> This mail didn't make it into the archive on lore.kernel.org. Did > someone receive it? If not, that would explain why I didn't get any > feedback on it ... First time I see it. >> diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c >> index 9531dd0fef50..fddca263ac40 100644 >> --- a/drivers/acpi/bus.c >> +++ b/drivers/acpi/bus.c >> @@ -518,13 +518,15 @@ static void acpi_bus_notify(acpi_handle handle, >> u32 type, void *data) >> if (!adev) >> goto err; >> >> - if (adev->dev.driver) { >> + device_lock(&adev->dev); >> + if (device_is_bound(&adev->dev)) { >> struct acpi_driver *driver = to_acpi_driver(adev->dev.driver); >> >> if (driver && driver->ops.notify && >> (driver->flags & ACPI_DRIVER_ALL_NOTIFY_EVENTS)) >> driver->ops.notify(adev, type); >> } >> + device_unlock(&adev->dev); >> >> if (!hotplug_event) { >> acpi_put_acpi_dev(adev); >> This patch works, in that the kernel reaches early userspace reliably. I would want to test it more extensively, i.e. install the modules and run it for real instead of just kexec-ing the bzImage. I'll test Rafael's patch first. Full disclosure: I made small changes to the starting .config, see below. 6.3-rc1 is still bad with the new .config, the patch makes it good. The changes: 1) PROVE_LOCKING=y 2) CONFIG_DEBUG_ATOMIC_SLEEP=y (why not, what could go wrong :) 3) radeon driver modular instead of built-in. I don't think it matters. Here is the diffconfig, just in case. -EXTRA_FIRMWARE_DIR "/lib/firmware" CEC_CORE y -> m DEBUG_ATOMIC_SLEEP n -> y DEBUG_LOCK_ALLOC n -> y DEBUG_MUTEXES n -> y DEBUG_RT_MUTEXES n -> y DEBUG_RWSEMS n -> y DEBUG_SPINLOCK n -> y DEBUG_WW_MUTEX_SLOWPATH n -> y DRM_DISPLAY_HELPER y -> m DRM_KMS_HELPER y -> m DRM_RADEON y -> m DRM_TTM y -> m DRM_TTM_HELPER y -> m EXTRA_FIRMWARE "radeon/R300_cp.bin" -> "" FB_CFB_COPYAREA y -> m FB_CFB_FILLRECT y -> m FB_CFB_IMAGEBLIT y -> m FB_SYS_COPYAREA y -> m FB_SYS_FILLRECT y -> m FB_SYS_FOPS y -> m FB_SYS_IMAGEBLIT y -> m I2C_ALGOBIT y -> m PROVE_LOCKING n -> y +DEBUG_LOCKDEP n +LOCKDEP y +LOCKDEP_BITS 15 +LOCKDEP_CHAINS_BITS 16 +LOCKDEP_CIRCULAR_QUEUE_BITS 12 +LOCKDEP_STACK_TRACE_BITS 19 +LOCKDEP_STACK_TRACE_HASH_BITS 14 +PREEMPTIRQ_TRACEPOINTS y +PROVE_RAW_LOCK_NESTING n +PROVE_RCU y +TRACE_IRQFLAGS y +TRACE_IRQFLAGS_NMI y