On 5/12/21 2:46 PM, Lev Serebryakov wrote:
On 12.05.2021 13:01, Henri Hennebert via freebsd-current wrote:
It would be fine if you can test the driver with dev.rtsx.0.inversion=1 in
loader.conf and see it it solve the problem.
the output of
sysctl dev.rtsx and
kenv | grep smbios.system
would be useful
BTW is a dummy card inserted in the SD slot?
Thank for your time
My T540p:
(1) rtsx in the kernel, enabled in BIOS, no settings in loader.conf, EMPTY
SLOT — panic on boot, typically WITHOUT rtsx in stack trace.
(2) rtsx in the kernel, enabled in BIOS, no settings in loader.conf, SD CARD
IN THE SLOT — no panic on boot, but WiFi card detected
too late for startup scripts to run wpa_supplicant properly.
(3) rtsx in the kernel, enabled in BIOS, "dev.rtsx.0.inversion=1", SD CARD IN
THE SLOT — no panic on boot, but WiFi card detected
too late for startup scripts to run wpa_supplicant properly. And card
reporting is inverted related to real deal: rtsx0
reports "Card present" when I remove card and vice versa.
(4) rtsx in the kernel, disabled in BIOS — device not found, everything (but
SD reader) boots & works (as expected!)
(5) rtsx in the kernel, enabled in BIOS, "dev.rtsx.0.inversion=1", EMPTY SLOT
— boots, but prints out "timeout for CMD8/55/1" for very long time and
*console*is*not*accessible* till "no compatible cards found on bus".
ALSO (!) wifi card is found only AFTER all these timeouts, when startup
scripts are FAILED to attach to wireless network (!!!).
ALSO (!) it says "Card Absent" when I *INSERT* card after boot, and "Card
present" (+ a lot of timeouts again) when I *REMOVE* card, looks like this
"inversion" is wrong for my hardware.
So, it boots, but practically unusable.
(6) rtsx in the kernel, enabled in BIOS, "dev.rtsx.0.inversion=1", SD CARD IN
THE SLOT
(7) rtsx is loaded as module after boot (manually, from console), enabled in
BIOS, no setting in loader.conf — looks to work properly.
Card could be mounted, read/write, it works.
(9) rtsx is loaded as module after boot (manually, from console), enabled in
BIOS, "dev.rtsx.0.inversion=1" — don't panic, but thinks wrong about card state
(Card Present/Absent is inverted, as instructed).
My theory: rtsx detect/attach code has some race conditions /
incompatibilities for multi-core boot when card is not present, and it thrash
kernel memory and/or block something on boot. "inversion" removes this bad
behavior due to waiting for card commands (as with "inversion" it thinks card is
here and try to access it).
Firts, thank you for your exhaustive testing! Your analysis seems pertinent
for me.
What seems strange: case (1) and (3) follow the same path in the driver but (1)
produce a panic.
See (2), (3) and (4) — when rtsx doesn't cause panic on boot, it still mangle
other devices detection & initialization.
booting in case (2) can you show the output of
pciconf -lvbc
and
vmstat -i
I could provide any additional information. Unfortunately, memory dump of
panic-on-boot is impossible :-(
_______________________________________________
freebsd-current@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"