#2687 NORM Untriag: CAFE SD controller gives bad count on failure
Zarro Boogs per Child
bugtracker at laptop.org
Mon Aug 6 20:21:09 EDT 2007
#2687: CAFE SD controller gives bad count on failure
--------------------------+-------------------------------------------------
Reporter: PierreOssman | Owner: dilinger
Type: defect | Status: new
Priority: normal | Milestone: Untriaged
Component: kernel | Version:
Keywords: | Verified: 0
--------------------------+-------------------------------------------------
The CAFE SD controller doesn't update the block count field as we'd like.
During write, it updates the block count field whenever it has sent out a
block, but before the card has acknowledged that it was received
correctly.
This is not how other sdhci controllers do it, and it makes the register
useless for determining how many bytes got through. The result is that
lower layers (the filesystem most likely) will get bogus reports for
successful writes that actually failed.
The quick fix is to remove the MULTIWRITE capability from sdhci.c. The
downside is that writes will be much slower as it can only write a single
block at a time (since it cannot ask the controller how many bytes got
through).
Unfortunately, the sdhci spec does not require controllers to follow the
update pattern we want. So it is valid to do what the CAFE does, just
incredibly useless.
--
Ticket URL: <https://dev.laptop.org/ticket/2687>
One Laptop Per Child <http://laptop.org/>
More information about the Bugs
mailing list