Subject: Re: PPC440EP/Yosemite PCI misbehavior

From: David Hawkins <[email-masked]>
Date: Fri, 13 Jan 2006 20:37:39 -0800

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