arm: socfpga: enable data/inst prefetch and shared override in the L2
authorDinh Nguyen <dinguyen@opensource.altera.com>
Thu, 15 Oct 2015 15:13:36 +0000 (10:13 -0500)
committerMarek Vasut <marex@denx.de>
Fri, 16 Oct 2015 23:47:31 +0000 (01:47 +0200)
commit8d8e13e129f20ef82a271094eb713d513e83adf4
tree04f4419564cb23a30063421916038f6accde3dd7
parent1275456d31cc130738775dca19b0a2ab1374cfbd
arm: socfpga: enable data/inst prefetch and shared override in the L2

Update the L2 AUX CTRL settings for the SoCFPGA.

Enabling D and I prefetch bits helps improve SDRAM performance on the
platform.

Also, we need to enable bit 22 of the L2. By not having bit 22 set in the
PL310 Auxiliary Control register (shared attribute override enable) has the
side effect of transforming Normal Shared Non-cacheable reads into Cacheable
no-allocate reads.

Coherent DMA buffers in Linux always have a Cacheable alias via the
kernel linear mapping and the processor can speculatively load cache
lines into the PL310 controller. With bit 22 cleared, Non-cacheable
reads would unexpectedly hit such cache lines leading to buffer
corruption.

Signed-off-by: Dinh Nguyen <dinguyen@opensource.altera.com>
arch/arm/include/asm/pl310.h
arch/arm/mach-socfpga/misc.c