
On Sun, Jul 15, 2012 at 08:56:35AM +0200, Dirk Behme wrote:
On 15.07.2012 00:08, Benoît Thébaudeau wrote:
On Sat, Jul 14, 2012 at 11:28:03PM +0200, Benoît Thébaudeau wrote:
Shouldn't the MMC/eSDHC drivers flush/invalidate the dcache ranges that they use for DMA operations? Not doing so would explain why stack-allocated buffers are more affected than buffers in unused RAM areas.
That will help: http://git.denx.de/?p=u-boot/u-boot-mmc.git;a=commitdiff;h=e576bd90f940806b9...
Are you sure that this patch does really help?
I meant: It's necessary, but perhaps not sufficient. I have not tested it yet.
If I remember correctly (will re-check) we have this patch locally applied. But even with this patch, we have issues so that we enabled CONFIG_SYS_DCACHE_OFF, i.e. disabled the dcache.
The issues we observed *without* CONFIG_SYS_DCACHE_OFF: The SD card was detected as 1-bit only (mmcinfo), while with dcache off it was used as 4-bit. Debugging this showed that wrong configuration data was read [1]. Having a fat partition on the card, mmc part/fatls etc failed, too, with cache enabled.
It's exactly the kind of issues I currently get. Was CONFIG_MMC_BOUNCE_BUFFER defined for your tests to make sure no unaligned buffer was used? I'll tell you if it works better for me with this patch.
Best regards, Benoît