Card stuck in wrong state! card_busy_detect status: 0x700
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux-raspi (Ubuntu) |
New
|
Undecided
|
Unassigned | ||
Groovy |
Invalid
|
Undecided
|
Unassigned |
Bug Description
Running sdtool from https:/
$ sudo ./sdtool /dev/mmcblk0 status
[+] Found RCA for /dev/mmcblk0: AAAA.
Error 110
[-] Failed to send command: Connection timed out
[ 43.004983] sdhost-bcm2835 3f202000.mmc: Card stuck in wrong state! card_busy_detect status: 0x700
[ 43.102348] sdhost-bcm2835 3f202000.mmc: sdhost_busy_irq: intmask 00000440
[ 53.224992] sdhost-bcm2835 3f202000.mmc: timeout waiting for hardware interrupt.
[ 53.285006] sdhost-bcm2835 3f202000.mmc: __mmc_blk_
[ 63.465196] sdhost-bcm2835 3f202000.mmc: timeout waiting for hardware interrupt.
Tested both arm64 and armhf on 2B (armhf only), 3B, 3B+ and 4B.
Focal 5.4 seems to be OK.
Groovy 5.8 fails on:
- 2B armhf
- 3B+ armhf
- 4B arm64
Changed in linux-raspi (Ubuntu Groovy): | |
status: | New → Confirmed |
The problematic commit seems to be:
commit a0d4c7eb71dd08a 89ad631177bb0cb babd598f84
Author: Chaotian Jing <email address hidden>
Date: Thu Sep 5 15:53:18 2019 +0800
mmc: block: Add CMD13 polling for MMC IOCTLS with R1B response
MMC IOCTLS with R1B responses may cause the card to enter the busy state,
which means it's not ready to receive a new request. To prevent new
requests from being sent to the card, use a CMD13 polling loop to verify
that the card returns to the transfer state, before completing the request.
Signed-off-by: Chaotian Jing <email address hidden>
Reviewed-by: Avri Altman <email address hidden>
Cc: <email address hidden>
Signed-off-by: Ulf Hansson <email address hidden>
Which was introduced in 5.5.