CPM2 early console

Alex Zeffertt ajz at cambridgebroadband.com
Fri Sep 30 23:22:18 EST 2005


On Thu, 29 Sep 2005 14:24:07 +0200
Kalle Pokki <kalle.pokki at iki.fi> wrote:

> Kalle Pokki wrote:
> 
> > I guess Linux remaps the RAM as copy-back. But snooping should
> > work with copy-back caches, shouldn't it?
> 
> Oh, well. The kernel boots just fine if I add
> 
> flags |= _PAGE_WRITETHRU | _PAGE_COHERENT;
> 
> in setbat() in arch/ppc/mm/ppc_mmu.c. But this should not depend on
> this kind of a hack, should it?
> 

I was experiencing a similar problem with the mpc8260sar ATM driver,
and Kalle's hack seems to fix the problem.

On the 8260 ATM SAR you can specify that the CPM asserts the GBL
signal whenever it accesses buffers, BDs, or interrupt queues. This
allows the cache to snoop accesses to these areas and invalidate cache
lines to keep the cache coherent.

However, there seems to be no way of telling the CPM to assert the GBL
signal when it is accessing External Connection Tables, or Second
Level lookup Tables - both of which are also accessed by the core.

Because of this the cache does not know when the CPM is accessing
these areas.

It seems to me that whilst the CPM was designed to be cache coherent
Freescale have overlooked some areas!

Till now I have worked around this problem by calling
dcache_invalidate_range() and dcache_flush_range() before and after
accesses to these areas.  I'm now considering changing to Kalle's way
of doing it.

Are there any drawbacks to this approach?

TIA,

Alex Zeffertt




More information about the Linuxppc-embedded mailing list