Kernel Bug Tracker – Bug 43370
[Lenovo Thinkpad T420] SD Card-reader non functional
Last modified: 2015-08-19 08:43:22 UTC
This bug was originally reported against the Ubuntu kernel (see here: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/978929), but since it also happens with the mainline kernel, I'm also reporting it here.
The SD card reader on this system doesn't work at all: no errors, no messages, nothing on SD card insertion. It's like it's not even there.
Steps to reproduce:
1- Insert SD card in card slot
- Some message in dmesg indicating card insertion was detected
- Nothing, not even an error message.
The following two reports look like they may apply to this problem, although the symptom seems different (mine doesn't see the reader at all):
I'm attaching output from lspci and lsusb. I can run any diagnostics needed on this system if needed, so please don't hesitate to ask.
Thanks in advance.
Created attachment 73579 [details]
Created attachment 73580 [details]
Please attach the output of "dmesg" with a card inserted -- if you could, compiling your kernel with CONFIG_MMC_DEBUG=y would also be very helpful.
Does the card work if you boot with it inserted, rather than inserting it after the system is booted?
Do you know if your controller worked with previous kernels?
Thanks for looking at this report!
I compiled a 3.5 kernel with CONFIG_MMC_DEBUG=y and then tried twice: one with the SD card "preinserted" at boot time, and the second time with the card out, and then I insert it once the system is booted.
In both cases the card doesn't get recognized, I don't see any messages in dmesg when I insert it (or in the case of the "preinserted" test, there's no device for me to mount).
I'll attach both dmesg, I'll also try with some older kernels and update again with more information.
Created attachment 73585 [details]
dmesg from booting the system without SD card, then inserting SD card.
Created attachment 73586 [details]
dmesg from booting the system wit SD card inserted
Your debug log shows that the controller saw no response from the card. This normally happens when your card is broken/dead. Have you tried the same card on another machine? How about other cards on your laptop? What model of SD card is it?
I routinely test with two or three cards: a Kingston 1-GB SD card, and 4-GB SDHC cards from both Kingston and Mushkin (?). I tried all three and they all have the same response (nothing!). All three work fine on other systems.
Could the actual, physical card reader be damaged, would that explain what's happening here?
I also just tried a 2.6.38 kernel which was originally reported as kinda-working (it threw some errors on card insertion, so at least it was sensing the card), and now it doesn't do anything, just like the 3.5 and Ubuntu 3.2 kernels.
I'm not quick to presume that the card reader is damaged, although it is possible and made more likely by your report that an older kernel is behaving differently now. I guess the next test would be booting a copy of Windows and seeing whether it works there -- is that possible? (Or if you're handy with hardware, trying to get a scope on the SD command pin somehow.)
You might want to go back even farther than 2.6.38, e.g. to 2.6.35, to convince yourself that there's no working kernel here.
*** Bug 42568 has been marked as a duplicate of this bug. ***
See also 38922 which appears to be the same and reports
I do not see any problems with SD card reader anymore on my ThinkPad T520. I just download a ton of photos from a SD card and it just works. Did so before. I think since 3.7 its gone for good. Now I was using 3.8-rc3 + some git.
Dunno about stress testing with write operations tough.
But might be gone?
Not gone as of 3.8.13 (branched by Oracle), I can verify as of this writing. dmesg contains:
mmc0: error -110 whilst initialising SD card
See also bug 50011 as possibly related.
Will try a more recent mainline kernel with MMC debug enabled when I can.
lspci -vvvnn output on this system:
02:00.0 System peripheral : Ricoh Co Ltd PCIe SDXC/MMC Host Controller [1180:e823] (rev 04) (prog-if 01)
Subsystem: Lenovo Device [17aa:21f3]
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, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 16
Region 0: Memory at f1d00000 (32-bit, non-prefetchable) [size=256]
Capabilities:  MSI: Enable- Count=1/1 Maskable- 64bit+
Address: 0000000000000000 Data: 0000
Capabilities:  Power Management version 3
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=2 PME+
Capabilities:  Express (v1) Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
ExtTag- AttnBtn+ AttnInd+ PwrInd+ RBE+ FLReset-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
MaxPayload 128 bytes, MaxReadReq 512 bytes
DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr- TransPend-
LnkCap: Port #1, Speed 2.5GT/s, Width x1, ASPM L0s L1, Latency L0 <4us, L1 unlimited
ClockPM+ Surprise- LLActRep- BwNot-
LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- Retrain- CommClk+
ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
Capabilities: [100 v1] Virtual Channel
Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
Arb: Fixed- WRR32- WRR64- WRR128-
VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
Status: NegoPending- InProgress-
Capabilities: [800 v1] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr+ BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
Kernel driver in use: sdhci-pci
Kernel modules: sdhci-pci
I can verify that this is fixed as of at least 3.10.60 and 3.11 mainline on a Lenovo T430. This should be the same chipset as the other related machines in the comments here. Cards show up at /dev/mmcblkN and access appears to work correctly:
[15679.285196] mmc0: new high speed SD card at address e624
[15679.639294] mmcblk0: mmc0:e624 SD02G 1.89 GiB
[15679.640919] mmcblk0: p1
I'm on a Lenovo T530 and my card reader does not work.
This is the dmesg output:
[54080.227995] mmc0: card never left busy state
[54080.228002] mmc0: error -110 whilst initialising SD card
[54081.494810] mmc0: card never left busy state
[54081.494817] mmc0: error -110 whilst initialising SD card
I forgot to say that I'm using the 4.1.3 sources.