Subject: Re: PCI Memory mapping

From: Adrian Cox <[email-masked]>
Date: Mon, 05 Apr 2004 09:46:09 +0100

On Thu, 2004-04-01 at 13:33, Marc Leeman wrote:

> By adding __asm__ __volatile__("eieio"); in user and kernel space,
> which lets the CCU buffers to be flushed, no change is observed (sect.
> 5.4.3.1; CCU Responses to the Processor Transactions).
>
> It looks to me as if I should disable the bus snooping, but as mentioned
> before, initialising this in ppc boot inhibits the NFS boot process.

Here's one possible scenario:

Your user space buffer is cleared with dcbz operations. This may be done
by standard library functions, rather than explicitly in your code. (If
that's not true, what follows could still bite someone else.)

The 603e core will only broadcast the dcbz when the page is marked
coherent. The page is only marked coherent when the kernel is compiled
for SMP.

If the above hypothesis is correct, the 824x CPUs will need to have
CPU_FTR_NEED_COHERENT set in this patch:

 http://lists.linuxppc.org/linuxppc-embedded/200403/msg00218.html

- Adrian Cox
http://www.humboldt.co.uk/

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/