Bug 43370

Summary: [Lenovo Thinkpad T420] SD Card-reader non functional
Product: Drivers Reporter: Daniel Manrique (daniel)
Component: MMC/SDAssignee: drivers_mmc-sd
Status: NEW ---    
Severity: normal CC: alan, chris, depasquale.giulio, Martin, tv
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 3.8.13 Subsystem:
Regression: No Bisected commit-id:
Attachments: lspci output
lsusb output
dmesg from booting the system without SD card, then inserting SD card.
dmesg from booting the system wit SD card inserted

Description Daniel Manrique 2012-06-13 13:52:03 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

Expected result:
- Some message in dmesg indicating card insertion was detected

Actual result:
- 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):

https://bugzilla.kernel.org/show_bug.cgi?id=38922

https://bugzilla.kernel.org/show_bug.cgi?id=42568


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.
Comment 1 Daniel Manrique 2012-06-13 13:52:23 UTC
Created attachment 73579 [details]
lspci output
Comment 2 Daniel Manrique 2012-06-13 13:53:16 UTC
Created attachment 73580 [details]
lsusb output
Comment 3 Chris Ball 2012-06-13 14:24:53 UTC
Hi Daniel,

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.
Comment 4 Daniel Manrique 2012-06-13 19:29:28 UTC
Hi Chris,

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.

Thanks again!
Comment 5 Daniel Manrique 2012-06-13 19:30:39 UTC
Created attachment 73585 [details]
dmesg from booting the system without SD card, then inserting SD card.
Comment 6 Daniel Manrique 2012-06-13 19:31:04 UTC
Created attachment 73586 [details]
dmesg from booting the system wit SD card inserted
Comment 7 Chris Ball 2012-06-13 19:42:47 UTC
Thanks, Daniel.

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?
Comment 8 Daniel Manrique 2012-06-13 20:14:34 UTC
Hi Chris,

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.
Comment 9 Chris Ball 2012-06-13 23:38:23 UTC
Hi Daniel,

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.
Comment 10 Alan 2012-06-18 10:37:34 UTC
*** Bug 42568 has been marked as a duplicate of this bug. ***
Comment 11 Alan 2012-06-18 10:39:34 UTC
See also 38922 which appears to be the same and reports

First-Bad-Commit: a3c7778f8153b9e4eceea6738973280b9e63c618
Comment 12 Martin Steigerwald 2013-01-12 17:27:34 UTC
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?
Comment 13 Todd Vierling 2014-06-02 17:42:49 UTC
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 [0880]: 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: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
                Address: 0000000000000000  Data: 0000
        Capabilities: [78] 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: [80] 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-
                Ctrl:   ArbSelect=Fixed
                Status: InProgress-
                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
Comment 14 Todd Vierling 2015-02-19 18:00:26 UTC
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
Comment 15 GiulioDP 2015-08-19 08:42:33 UTC
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
Comment 16 GiulioDP 2015-08-19 08:43:22 UTC
I forgot to say that I'm using the 4.1.3 sources.