From: Shawn Lin <shawn.lin@xxxxxxxxxxxxxx> Sent: Tuesday, June 8, 2021 8:58 AM >>You're assuming a card not signalling busy indicates TRAN state, and >>set the state manually, but a card might not be pulling DAT lines in PROG state >> >Refer to JESD84-B51 for emmc spec, section 6.5.13 clearly says that. And >SD spec V4 also has a similar statement in section 4.3.4. > >So I guess if that was the case you point out, most of all operations in >mmc_ops.c would suffer from this. Im not sure what youre referring to as 6.5.13 is inside of 6.5 (no further subsections) in JESD84-B51 and 4.3.4 in the SD spec is "4.3.4. Data Write" The patch itself is fine, i just think that card_busy_detect should not actually be a busy detect but rather a TRAN detect. I will send a patch now, but if anyone wants to check this out, a full SDSC card that receives CMD16->CMD42 Lock -> CMD42 Force Erase -> CMD16 (Reset to 512) -> Read like CMD17 will hit this race condition pretty consistently as the CMD42 Force Erase will be in PROG for a while on most cards. If the commands are sent through ioctl in a batch that is. If card_busy_detect is changed to card_tran_detect then using .card_busy no longer makes sense. Regards, Christian Hyperstone GmbH | Line-Eid-Strasse 3 | 78467 Konstanz Managing Directors: Dr. Jan Peter Berns. Commercial register of local courts: Freiburg HRB381782