CURRENT crashes at early boot on Lenovo T540p: rtsx to blame - 13.0-RELEASE crashes same way!

Henri Hennebert hlh at
Thu May 13 12:48:22 UTC 2021

On 5/13/21 2:40 PM, Lev Serebryakov wrote:
> On 13.05.2021 15:13, Henri Hennebert via freebsd-current wrote:
>>>>>> I’m not sure if this is an interesting data point or not,
>>>>>> but a warm boot without the card inserted succeeds after
>>>>>> a cold boot with the card inserted.
>>>>>   It could explain, why my tests with "same code path" gave different results!
>>>> With a "cold" boot and without a card inserted did you see something like:
>>>> rtsx0: <2.0c Realtek ...
>>>> rtsx0: Card present
>>>> mmc0: <MMC/SD bus> on rtsx0
>>>> rtsx0: Interrupt card inserted/removed
>>>> rtsx0: Card absent
>>>   When it panics, it panics before rtsx0 prints something in my case.
>> Does iwm0 / mmc0 is shown during boot?
>> can you try a verbose boot (boot -s)
>   do you mean "boot -v"? :) It runs very fast, and there are not so much lines 
> on the screen (is it possible to change screen reoslution before loading i915kms?)

OUPS yes boot -v
>   Ok, now I've recorded cold boot without SD, without verbose, with my phone 
> (yes, screenshots by photocamera, I fell so low!) and I was wrong, there is rtsx0:
> rtsx0: <2.0c .....>
> rtsx0: Card present
> mmc0: <MMC/SD bus> on rtsx0
> rtsx0: Interrupt card inserted/removed
> rtsx0: Card absent
> ...

This must be the culprit this change from present/absent

> PANIC! (without rtsx0 in stacktrace, again it is 
> run_interrupt_driven_config_hooks()).
>> if you can't see the verbose output which is too fast on the display:
>> try a boot -p
>   Oooops, keyboard is unresponsive after first pause and I can not unpause 
> output :-(
>   Looks like another bug of early boot — EFI boot can not access keywboard 
> before it is detected as `atkbd` (keyboard in loader works!)

try to rebuild your kernel with the attached patch.

-------------- next part --------------
diff --git a/sys/dev/rtsx/rtsx.c b/sys/dev/rtsx/rtsx.c
index 4400fbef541..a2410d76fe8 100644
--- a/sys/dev/rtsx/rtsx.c
+++ b/sys/dev/rtsx/rtsx.c
@@ -3715,7 +3715,7 @@ rtsx_attach(device_t dev)
 	 * Schedule a card detection as we won't get an interrupt
 	 * if the card is inserted when we attach
-	DELAY(500);
+	DELAY(1000);
 	if (rtsx_is_card_present(sc))
 		device_printf(sc->rtsx_dev, "Card present\n");

More information about the freebsd-current mailing list