shared memory problem on ARM v5TE using threads

Nicolas Pitre nico at fluxnic.net
Mon Dec 7 10:57:00 EST 2009


On Mon, 7 Dec 2009, Russell King - ARM Linux wrote:

> On Mon, Dec 07, 2009 at 02:52:35PM +0000, Russell King - ARM Linux wrote:
> > On Mon, Dec 07, 2009 at 02:55:52PM +0200, Ronen Shitrit wrote:
> > > That also match the theory:
> > > When using different processes, the shared area will stay C=1 B=1, 
> > > On each context switch L1 will be flushed,
> > > Since L2 is PIPT next process will get the correct data...
> > 
> > Hang on - if L2 is PIPT, then there shouldn't be a problem provided it's
> > searched with C=0 B=1 mappings.  Is that the case?
> 
> Officially, ARMv5 does not support the 'extended small page' format for
> the 2nd level descriptors (ARMv6 and Xscale CPUs added this support.)
> 
> That means ARMv5 officially only has support for two bits to control
> the caching attributes - the C and B bits.  This means we can't specify
> the policy for the L2 cache... unless Feroceon also supports the
> 'extended small page' format.  This might be a third solution to the
> problem, and probably the best - provided Feroceon will allow us to
> specify 'inner non-cacheable outer write-back' (TEX=111 CB=00).

Last time I checked the Feroceon doc, there was no way to have inner 
non-cacheable outer write-back behavior.  And as I mentioned in my 
previous email, while debugging the issue on an XSC3, the TEX=111 CB=00 
combination didn't appear to behave as expected (no one bothered to 
verify my findings at the time either).  So I concluded that there is no 
such thing as inner non-cacheable outer write-back on ARMv5.  This was 
consigned in commit 08e445bd6a.


Nicolas



More information about the linux-arm-kernel mailing list