Hi all, Travis Sawyer sent me a snipped of his mmap code, and there was an important difference relative to mine:
pgprot_val(vma->vm_page_prot) |= _PAGE_NO_CACHE | _PAGE_GUARDED; With the addition of these two flags, the caching of the PCI memory space has gone! Yeah!! (The flags aren't defined for x86 pages, hence I'd never seen them). Thanks Travis! Now CPU reads and writes use PCI memory-read and PCI memory-write commands. The CPU does not appear to use burst-transactions to the pre-fetchable memory region. This is results in lower performance, but its consistent with what an x86 does. I'll go and play with the 440EP DMA controller and see if I can get that to burst to the PCI bus. > access to PCI I/O space causes a machine check exception. I still get this in 2.6.15, but Wolfgang Denx indicated that they'd tested PCI I/O pretty thoroughly, so I'm inclined to believe that its my driver that is at fault. I'll do a little more digging on that one. Cheers Dave