Marcel Moolenaar dbb95048da Add cpu_flush_dcache() for use after non-DMA based I/O so that a
possible future I-cache coherency operation can succeed. On ARM
for example the L1 cache can be (is) virtually mapped, which
means that any I/O that uses temporary mappings will not see the
I-cache made coherent. On ia64 a similar behaviour has been
observed. By flushing the D-cache, execution of binaries backed
by md(4) and/or NFS work reliably.
For Book-E (powerpc), execution over NFS exhibits SIGILL once in
a while as well, though cpu_flush_dcache() hasn't been implemented
yet.

Doing an explicit D-cache flush as part of the non-DMA based I/O
read operation eliminates the need to do it as part of the
I-cache coherency operation itself and as such avoids pessimizing
the DMA-based I/O read operations for which D-cache are already
flushed/invalidated. It also allows future optimizations whereby
the bcopy() followed by the D-cache flush can be integrated in a
single operation, which could be implemented using on-chips DMA
engines, by-passing the D-cache altogether.
2009-05-18 18:37:18 +00:00
..
2009-05-12 23:22:58 +00:00
2009-05-13 22:31:25 +00:00
2009-02-04 20:39:45 +00:00
2009-05-18 01:51:52 +00:00
2009-05-12 03:30:25 +00:00
2008-07-11 18:26:12 +00:00
2009-02-05 19:37:49 +00:00
2009-03-25 06:27:56 +00:00
2008-09-07 04:35:04 +00:00
2008-08-08 13:43:56 +00:00
2009-04-14 11:23:09 +00:00
2009-04-09 19:11:08 +00:00
2009-04-08 20:52:30 +00:00
2009-05-12 19:33:36 +00:00
2009-03-25 07:05:23 +00:00
2008-12-20 00:04:04 +00:00
2008-11-19 21:07:33 +00:00
2009-04-23 19:29:45 +00:00
2008-11-26 13:44:11 +00:00
2009-04-10 04:08:34 +00:00
2009-02-05 19:36:14 +00:00
2009-02-05 19:37:49 +00:00
2008-01-21 09:51:28 +00:00
2008-06-17 05:48:42 +00:00
2008-04-26 14:13:48 +00:00
2009-02-10 23:17:20 +00:00
2009-02-17 16:02:45 +00:00
2009-02-10 23:17:20 +00:00
2009-05-17 19:51:08 +00:00
2009-05-12 19:30:46 +00:00
2008-08-25 05:20:17 +00:00