[BUG] v7_coherent_kern_range broken on big.LITTLE

Lorenzo Pieralisi lorenzo.pieralisi at arm.com
Fri Feb 15 05:33:40 EST 2013


On Fri, Feb 15, 2013 at 10:04:37AM +0000, Jon Medhurst (Tixy) wrote:
> On Thu, 2013-02-14 at 17:16 +0000, Will Deacon wrote:
> > Hi Tixy,
> > 
> > On Thu, Feb 14, 2013 at 05:07:43PM +0000, Jon Medhurst (Tixy) wrote:
> > > The function v7_coherent_kern_range uses the macro icache_line_size to
> > > read the current CPUs icache line size for the purpose of invalidating
> > > all cache lines in the given range.
> > > 
> > > Unfortunately, on the TC2 big.LITTLE test chip, the A15 icache line size
> > > is 64 bytes, but the A7 size is only 32 bytes. So when the function
> > > executes on the A15 it will miss out every alternate cache line for the
> > > A7.
> > 
> > There is a signal (IMINLN) to the core which allows A15 to behave as though
> > it has a 32-byte line size and this should be driven correctly for big/little.
> 
> How do we set that signal? Is that something we have to set up in Linux
> or is it something that we expect the Firmware to set up?

If I am not mistaken, SCC register at offset 0x400 (bit 7) allows IMINLN to
be forced to 0 (ie Instruction Cache minimum line size == 32 bytes).

This can be done through board.txt so that it is set up as we want.

HTH,
Lorenzo




More information about the linux-arm-kernel mailing list