Bug 204161
Summary: | sdhci: Lenovo GL9750 SD Host Controller - low speed, a lot of messages in dmesg | ||
---|---|---|---|
Product: | Drivers | Reporter: | Oleksii Shevchuk (alxchk) |
Component: | MMC/SD | Assignee: | drivers_mmc-sd |
Status: | NEW --- | ||
Severity: | normal | CC: | ae, choopm, gruberm, guidomureddu, kernel, peter.zhigalov, sda, warren, ynvich |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 5.2.0 | Subsystem: | |
Regression: | No | Bisected commit-id: | |
Attachments: | dmesg output for kernel Linux noop 5.3.6 |
Description
Oleksii Shevchuk
2019-07-13 12:06:43 UTC
Still broken with Kernel v5.3.2 Experiencing this on a ThinkPad T490, latest BIOS/UEFI firmware as of today. uname -r: 5.3.5-arch1-1-ARCH lspci -vvnnk: 01:00.0 SD Host controller [0805]: Genesys Logic, Inc GL9750 SD Host Controller [17a0:9750] (rev 01) (prog-if 01) Subsystem: Lenovo GL9750 SD Host Controller [17aa:2279] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin A routed to IRQ 16 Region 0: Memory at dd600000 (32-bit, non-prefetchable) [size=4K] Capabilities: <access denied> Kernel driver in use: sdhci-pci Kernel modules: sdhci_pci dmesg: [ 7428.145263] mmc0: 1.8V regulator output did not became stable [ 7428.367871] mmc0: 1.8V regulator output did not became stable [ 7428.610686] mmc0: 1.8V regulator output did not became stable [ 7428.842653] mmc0: 1.8V regulator output did not became stable [ 7429.066749] mmc0: 1.8V regulator output did not became stable [ 7429.282374] mmc0: 1.8V regulator output did not became stable [ 7429.524700] mmc0: 1.8V regulator output did not became stable [ 7429.741971] mmc0: 1.8V regulator output did not became stable [ 7429.963059] mmc0: 1.8V regulator output did not became stable [ 7430.177432] mmc0: 1.8V regulator output did not became stable [ 7430.252845] mmc0: Skipping voltage switch [ 7430.428569] mmc0: new high speed SDHC card at address aaaa [ 7430.446664] mmcblk0: mmc0:aaaa SC32G 29.7 GiB [ 7430.451540] mmcblk0: p1 [ 7430.550182] mmc0: Got data interrupt 0x00600000 even though no data operation was in progress. [ 7430.550188] mmc0: sdhci: ============ SDHCI REGISTER DUMP =========== [ 7430.550464] mmc0: sdhci: Sys addr: 0x00000008 | Version: 0x00000005 [ 7430.550469] mmc0: sdhci: Blk size: 0x00007200 | Blk cnt: 0x00000000 [ 7430.550474] mmc0: sdhci: Argument: 0x00000800 | Trn mode: 0x0000003f [ 7430.550480] mmc0: sdhci: Present: 0x010f0000 | Host ctl: 0x00000017 [ 7430.550485] mmc0: sdhci: Power: 0x0000000f | Blk gap: 0x00000000 [ 7430.550490] mmc0: sdhci: Wake-up: 0x00000000 | Clock: 0x00000327 [ 7430.550495] mmc0: sdhci: Timeout: 0x00000004 | Int stat: 0x00000000 [ 7430.550500] mmc0: sdhci: Int enab: 0x03ff008b | Sig enab: 0x03ff008b [ 7430.550505] mmc0: sdhci: ACmd stat: 0x00000000 | Slot int: 0x00000000 [ 7430.550511] mmc0: sdhci: Caps: 0x25693281 | Caps_1: 0x000305f7 [ 7430.550516] mmc0: sdhci: Cmd: 0x0000123a | Max curr: 0x00000000 [ 7430.550521] mmc0: sdhci: Resp[0]: 0x00000900 | Resp[1]: 0x00edc87f [ 7430.550526] mmc0: sdhci: Resp[2]: 0x325b5900 | Resp[3]: 0x00400e00 [ 7430.550530] mmc0: sdhci: Host ctl2: 0x00000801 [ 7430.550535] mmc0: sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0xfffff208 [ 7430.550537] mmc0: sdhci: ============================================ [ 7430.640628] mmc0: Got data interrupt 0x00600000 even though no data operation was in progress. [ 7431.883368] mmc0: card aaaa remove Created attachment 285533 [details]
dmesg output for kernel Linux noop 5.3.6
DMESG OUTPUT FOR KERNEL 5.3.6 / ARCH ------------------------------------ [ 42.128749] mmc0: Tuning failed, falling back to fixed sampling clock [ 42.580471] mmc0: 1.8V regulator output did not became stable [ 42.796533] mmc0: 1.8V regulator output did not became stable [ 43.013212] mmc0: 1.8V regulator output did not became stable [ 43.231854] mmc0: 1.8V regulator output did not became stable [ 43.453921] mmc0: 1.8V regulator output did not became stable [ 43.672812] mmc0: 1.8V regulator output did not became stable [ 43.892453] mmc0: 1.8V regulator output did not became stable [ 44.102860] mmc0: 1.8V regulator output did not became stable [ 44.337086] mmc0: 1.8V regulator output did not became stable [ 44.554600] mmc0: 1.8V regulator output did not became stable [ 44.603683] mmc0: Skipping voltage switch [ 44.789418] blk_update_request: I/O error, dev mmcblk0, sector 32800 op 0x0:(READ) flags 0x80700 phys_seg 7 prio class 0 [ 55.042431] mmc0: Card stuck in wrong state! mmcblk0 card_busy_detect status: 0xd00 [ 55.070231] fuse: init (API version 7.31) Still broken in 5.3.11-arch1-1 Old slow cards work normally. New fast cards don't. Something is wrong with timers. ===8<=== $ uname -a Linux host2 5.3.0-24-generic #26-Ubuntu SMP Thu Nov 14 01:33:18 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux ===8<=== ===8<=== [ 4730.780238] mmc0: new high speed SDHC card at address 59b4 [ 4730.781256] mmcblk0: mmc0:59b4 USD 3.75 GiB [ 4730.795216] mmcblk0: p1 p2 [ 4840.804268] mmc0: card 59b4 removed ===8<=== ===8<=== [ 4.423644] mmc0: new ultra high speed SDR104 SDXC card at address 0007 [ 4.428823] mmcblk0: mmc0:0007 SD128 117 GiB [ 4.878286] mmc0: 1.8V regulator output did not became stable [ 5.073727] mmc0: tried to HW reset card, got error -2 [ 5.099167] mmcblk0: error -110 requesting status [ 5.099169] mmcblk0: recovery failed! [ 5.099177] blk_update_request: I/O error, dev mmcblk0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0 [ 5.099179] Buffer I/O error on dev mmcblk0, logical block 0, async page read [ 5.130379] mmcblk0: error -110 requesting status [ 5.130382] mmcblk0: recovery failed! [ 5.130388] blk_update_request: I/O error, dev mmcblk0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0 [ 5.130390] Buffer I/O error on dev mmcblk0, logical block 0, async page read [ 5.159459] mmcblk0: error -110 requesting status [ 5.159462] mmcblk0: recovery failed! [ 5.159468] blk_update_request: I/O error, dev mmcblk0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0 [ 5.159471] Buffer I/O error on dev mmcblk0, logical block 0, async page read [ 5.159478] ldm_validate_partition_table(): Disk read failed. [ 5.190298] mmcblk0: error -110 requesting status [ 5.190301] mmcblk0: recovery failed! [ 5.190309] blk_update_request: I/O error, dev mmcblk0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0 [ 5.190312] Buffer I/O error on dev mmcblk0, logical block 0, async page read [ 5.223563] mmcblk0: error -110 requesting status [ 5.223566] mmcblk0: recovery failed! [ 5.223575] blk_update_request: I/O error, dev mmcblk0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0 [ 5.223577] Buffer I/O error on dev mmcblk0, logical block 0, async page read [ 5.261177] mmcblk0: error -110 requesting status [ 5.261180] mmcblk0: recovery failed! [ 5.261188] blk_update_request: I/O error, dev mmcblk0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0 [ 5.261191] Buffer I/O error on dev mmcblk0, logical block 0, async page read [ 5.296713] mmcblk0: error -110 requesting status [ 5.296715] mmcblk0: recovery failed! [ 5.296722] blk_update_request: I/O error, dev mmcblk0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0 [ 5.296723] Buffer I/O error on dev mmcblk0, logical block 0, async page read [ 5.296777] Dev mmcblk0: unable to read RDB block 0 [ 5.326798] mmcblk0: error -110 requesting status [ 5.326801] mmcblk0: recovery failed! [ 5.326807] blk_update_request: I/O error, dev mmcblk0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0 [ 5.326809] Buffer I/O error on dev mmcblk0, logical block 0, async page read [ 5.358035] mmcblk0: error -110 requesting status [ 5.358037] mmcblk0: recovery failed! [ 5.358044] blk_update_request: I/O error, dev mmcblk0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0 [ 5.358046] Buffer I/O error on dev mmcblk0, logical block 0, async page read [ 5.395859] mmcblk0: error -110 requesting status [ 5.395862] mmcblk0: recovery failed! [ 5.395871] blk_update_request: I/O error, dev mmcblk0, sector 24 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0 [ 5.395873] Buffer I/O error on dev mmcblk0, logical block 3, async page read [ 5.430621] mmcblk0: error -110 requesting status [ 5.430625] mmcblk0: recovery failed! [ 5.466291] mmcblk0: error -110 requesting status [ 5.466294] mmcblk0: recovery failed! [ 5.466342] mmcblk0: unable to read partition table [ 5.500077] mmcblk0: error -110 requesting status [ 5.500080] mmcblk0: recovery failed! [ 5.533872] mmcblk0: error -110 requesting status [ 5.533875] mmcblk0: recovery failed! ===8<=== Slightly OT: could someone with a GL9750 based card reader test their device for data writing integrity on a recent kernel? I'm on kernel 6.1.62 using the integrated GL9750 of a Lenovo Ideapad 5 Pro. I tested 4 different SD cards: 1. cp some_ubuntu.iso /path/to/sdcard/1.iso cp some_ubuntu.iso /path/to/sdcard/2.iso cp some_ubuntu.iso /path/to/sdcard/3.iso 2. sha256sum some_ubuntu.iso && sha256sum /path/to/sdcard/*.iso 3. No matching checksum, the copies on the SD cards all differ. When I run Windows 11 on the laptop, the GL9750 writes files with correct checksums to the cards, so I assume it's a bug and not a hardware issue. I verified the SD cards also with an external SD card reader on a second computer, they're OK. I have a slightly different problem here with the same reader in a Lenovo Yoga 6. There is random data corruption, but no errors at all in dmesg! Same card (Samsumg Evo Plus 512 GB Blue) works fine in external USB reader. root@yoga:/media/intrr/db# f3read /media/intrr/db/ F3 read 8.0 Copyright (C) 2010 Digirati Internet LTDA. This is free software; see the source for copying conditions. SECTORS ok/corrupted/changed/overwritten Validating file 1.h2w ... 2097148/ 4/ 0/ 0 Validating file 2.h2w ... 2097142/ 10/ 0/ 0 Validating file 3.h2w ... 2097144/ 8/ 0/ 0 Validating file 4.h2w ... 2097148/ 4/ 0/ 0 02:00.0 SD Host controller: Genesys Logic, Inc GL9750 SD Host Controller (rev 01) Linux yoga 6.1.0-18-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-01) x86_64 GNU/Linux I've just verified that the same card reader and card work without any corruption in Windows 11. So this MUST be a kernel bug! Eek! Please escalate! |