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