#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