I am working on a Freescale 8314e design, and the embedded device is configured as a PCI-e
endpoint running a 2.6.27-5 kernel.  For context, we have written a kernel module
which, among other things, uses the
RDMA/WDMA engine in the PCI-e IP block.  On the host side, these DMAs are coherent.  However, on the embedded side, things are quite a bit less rosy; we
must manually flush/invalidate cache lines for WDMA/RDMAs to occur
successfully.  After speaking with (several) FAEs at Freescale, we believe there is a configuration issue that is the cause, but we have yet to have anyone successfully point to it.  <br>
<br>
Disabling the data cache altogether resolves the issue entirely, but of
course, also completely tanks performance.  As a temporary workaround,
I would like to simply mark the pages (obtained currently via dma_alloc_coherent) involved as cache-inhibited.  I
have attempted to do this via some snippets remaining in fec.c
(va_to_pte, uncache_pte to set _PAGE_NO_CACHE, flush_tlb_page, then unmap_pte), but this is almost certainly braindead; va_to_pte is not a part of the 83xx source, as far as I can tell; 8xx only.<br><br>
A quick pointer in the correct direction for marking pages as cache-inhibited on a 2.6.27-5 kernel would be appreciated, or if my approach to a workaround is flawed, a pointer to the correct way would be great.<br><br>Ben Menchaca<br>