[U-Boot] Disabling/Enabling the Data Cache

Gary Bisson gary.bisson at boundarydevices.com
Tue Nov 24 12:35:39 CET 2015


Albert, Fabio, All,

On Tue, Sep 22, 2015 at 09:21:37PM +0200, Albert ARIBAUD wrote:
> Hi Fabio,
> 
> Le Tue, 22 Sep 2015 16:01:05 -0300, Fabio Estevam <festevam at gmail.com>
> a ?crit :
> 
> > Hi,
> > 
> > On a mx6q (armv7) board when I disable and enable the Data Cache the
> > following issue is observed:
> > 
> > => dcache
> > Data (writethrough) Cache is ON
> > => dcache off
> > => dcache on
> > data abort
> > pc : [<4ff3d340>]          lr : [<4ff3b598>]
> > reloc pc : [<17802340>]    lr : [<17800598>]
> > sp : 4f538d50  ip : 00000000     fp : 4f841188
> > r10: 4ffa4fd4  r9 : 4f538eb0     r8 : 00000002
> > r7 : 4f539de8  r6 : 00000000     r5 : 00000000  r4 : 00000000
> > r3 : 00a02000  r2 : 32450000     r1 : 4ff94732  r0 : 00000001
> > Flags: nZCv  IRQs off  FIQs off  Mode SVC_32
> > Resetting CPU ...
> > 
> > resetting ...
> > 
> > 
> > U-Boot 2015.10-rc3-24232-g324714b-dirty (Sep 22 2015 - 15:08:16 -0300)
> > 
> > CPU:   Freescale i.MX6DL rev1.1 996 MHz (running at 792 MHz)
> > 
> > Does anyone have any ideas about this?
> 
> No idea with so little context, but the (reloc) pc should indicate where
> in the code the abort happened. Maybe that will give us a clue.

Does anyone have an update on this issue? I just experienced the same
problem with an i.MX6SX:
Hit any key to stop autoboot:  0 
=> dcache off
=> dcache on 
data abort
pc : [<bff4a564>]          lr : [<bff4a5f4>]
reloc pc : [<87800564>]    lr : [<878005f4>]
sp : bf347d70  ip : 00000000     fp : bf34bb48
r10: bffa3c58  r9 : bf347ed8     r8 : 00000002
r7 : bf349c28  r6 : 00000000     r5 : 00000000  r4 : 00000000
r3 : 00a02000  r2 : 32430000     r1 : bff99a70  r0 : 00000001
Flags: nZCv  IRQs off  FIQs off  Mode SVC_32
Resetting CPU ...

Looking at the reloc pc:
87800550 <v7_outer_cache_enable>:
87800550:	e59f304c 	ldr	r3, [pc, #76]	; 878005a4
<v7_outer_cache_enable+0x54>
87800554:	e5932104 	ldr	r2, [r3, #260]	; 0x104
87800558:	e3822501 	orr	r2, r2, #4194304	;
0x400000
8780055c:	e5832104 	str	r2, [r3, #260]	; 0x104
87800560:	e5932100 	ldr	r2, [r3, #256]	; 0x100
87800564:	e3c22001 	bic	r2, r2, #1

Then looking at arch/arm/cpu/armv7/mx6/soc.c, it looks like the cause
is:
http://git.denx.de/?p=u-boot.git;a=commit;h=b4ed9f8

When commenting out "setbits_le32(&pl310->pl310_aux_ctrl,
L310_SHARED_ATT_OVERRIDE_ENABLE)", the problem disappears.

Should we unset the bit22 when disabling cache?

Regards,
Gary


More information about the U-Boot mailing list