[Bug report] memset is stranger when i use SD_CARD_BENCH program with DMA.
Norman Feske
norman.feske at ...1...
Tue Oct 30 10:41:12 CET 2012
Hello Eun Seok, Kim,
btw, what is the polite way to greet you? Is Kim you first name?
Thank you for elaborating in more detail your modifications of the
'sd_card_bench' program. Given those information, I was able to
reproduce the problem. It turns out that it is actually unrelated to the
SD-card driver code or DMA for that matter. I reduced the test case to a
much smaller program that does not even touches any devices:
1d7eeb00f6a89fb25159280133cf0f439a3a9390
This program produces the same artifacts as you observed. Here are the
things that I noted:
* The artifacts always appear at page boundaries, which suggests that
the weird behavior may somehow be related to page-fault handling.
This hypothesis is further supported by the little experiment of
performing the memset + hexdump twice. The first time, the artifacts
are visible but the second time, everything looks ok.
I also did another experiment. To prevent page faults to occur during
the 'memset' operation, I added a bit of code that touches each
page of the buffer and thereby pages-in the corresponding page.
With this eager page-fault handling in place, the artifacts
disappear. You may try this out by removing 'if (0)'.
* The artifacts occur only when setting the 'cached' attribute of the
'Attached_ram_dataspace' to false (as it should be for DMA buffers).
When allocating a RAM dataspace with the cached attribute set, the
artifacts disappear.
* The problem does occur on the Pandaboard but not on Qemu (pbxa9),
which is typical for cache-related problems.
I am quite puzzled about the possible reason for the observed artifacts.
It seems to be a weird interplay between cache attributes and page-fault
handling on the ARMv7 platform.
I opened an new topic at our issue tracker:
https://github.com/genodelabs/genode/issues/452
Would to mind taking the further discussion of this issue to there?
Best regards
Norman
--
Dr.-Ing. Norman Feske
Genode Labs
http://www.genode-labs.com · http://genode.org
Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth
More information about the users
mailing list