SD service of Genode master branch for Fiasco.OC / PandaBoard doesn’t start

i.ismagilov i.ismagilov at ...60...
Thu Oct 4 12:05:24 CEST 2012


­­­­­­­­­­­

*_Bug:_*

SD service of Genode master branch _for Fiasco.OC / PandaBoard_ doesn’t
start with *"SD command error"* (occurs in
/os/src/drivers/sd_card/omap4/mmchs.h/:824).

*_ _*

*_Description:_**__*

L4_FPAGE_BUFFERABLE constant (/base-foc/src/base/ipc/pager.cc/:91) is
used to configure I/O memory region.

 

In *Fiasco.OC *this constant is prepared as Page::*BUFFERED*
(/base-foc/contrib/kernel/fiasco/src/kern/arm/paging-arm.cpp/:65).

In *Fiasco.OC revision* *38* this constant is equal to *0x04* (for both
ARMv6 and ARMv7).

In revision 40 it was changed to *0x40*.

 

This modification causes SD card driver error (and possible other driver
errors) for ARMv6 and v7 architectures.

 

*0x04*value seems to correspond to *‘Device’ memory type* (for I/O).
Memory pages corresponding to I/O are non-cacheable.

*0x40*value is seems for ‘Normal’ memory type. *Pages are cached* in
this case but *this is not allowed for I/O* and causes SD card error.

 

*_Solutions:_*

1)      Page::*BUFFERED* constant seems to be _used for I/O only_, not
for RAM (currently). So, we propose to set Page::BUFFERED constant to
0x40 in rev. 40 as it was in rev. 38 (*see attached patch*).

2)      If Page::BUFFERED constant is planned to use _for RAM memory
also_, some other constant for I/O memory pages configuring and related
workaround in Genode driver to be added.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.genode.org/pipermail/users/attachments/20121004/11ee697f/attachment.html>
-------------- next part --------------
Index: genode/base-foc/contrib/kernel/fiasco/src/kern/arm/paging-arm.cpp
===================================================================
--- genode/base-foc/contrib/kernel/fiasco/src/kern/arm/paging-arm.cpp	(revision 40)
+++ genode/base-foc/contrib/kernel/fiasco/src/kern/arm/paging-arm.cpp	(working copy)
@@ -62,7 +62,7 @@
 
     // The next are ARM specific
     WRITETHROUGH = 0x08, ///< Write through cached
-    BUFFERED     = 0x40, ///< Write buffer enabled -- Normal, non-cached
+    BUFFERED     = 0x04, ///< Write buffer enabled
 
     MAX_ATTRIBS  = 0x0ffc,
     Local_page   = 0x800,



More information about the users mailing list