facing undefined inconsistent cache issues on cortex-a9
Shilimkar, Santosh
santosh.shilimkar at ti.com
Tue May 25 07:51:19 EDT 2010
> -----Original Message-----
> From: linux-arm-kernel-bounces at lists.infradead.org [mailto:linux-arm-kernel-
> bounces at lists.infradead.org] On Behalf Of Shiraz HASHIM
> Sent: Monday, May 24, 2010 9:14 AM
> To: linux-arm-kernel at lists.infradead.org
> Cc: 'Armando VISCONTI'; Vipin KUMAR; Viresh KUMAR
> Subject: facing undefined inconsistent cache issues on cortex-a9
>
> Hi,
> I am using linux-2.6.32 port on spear1300 platform, the port is largely based
> on realview code.
>
> SPEAr1300 has a Cortex A9 dual core, both cores configured as participating in
> SMP, but we are currently configuring Linux in non SMP mode, running Linux on
> the first core only, while second core is spinning forever in a tight loop.
>
> Linux is running with default configuration w.r.t. cache and other things on
> core1. Since SMP is not enabled this means that SCU and local timers are off, L2
> cache is also disabled. While on core2 only instruction cache is on and both
> MMU and Data cache is off.
>
> We observed a crash while booting. Investigating on the crash we found that this
> was caused by a wrong value read by the core. Strangely enough, the new value
> was written few instruction before, but the core was still reading the old one.
>
> What happens is someting like this:
>
> r0 = X ; /* X is the address of a Linux variable */
>
> str r5, [r0]; /* write new value */
> ...
> ldr r5, [r0]; /* read back value - we get the old one (???) */
>
> The value read here, just few lines later the new value was written, is the old
> one. Obviously we are expecting to find the new one.
>
> Moreover, using the jtag debugger it looks clear that the new value is indeed in
> the memory, but surprisingly NOT in the data-cache.
> If we put a read of X, before the store in order to avoid the write miss when
> doing 'str r5, [r0]', we see that the problem doesn't appear.
>
Does this work if disable L1D as well on the processor you are running Linux ??
Regards,
Santosh
More information about the linux-arm-kernel
mailing list