1
0
Fork 0
remarkable-uboot/arch/powerpc/include/asm
Scott Wood 33eee330cc powerpc/fsl-corenet: work around erratum A004510
Erratum A004510 says that under certain load conditions, modified
cache lines can be discarded, causing data corruption.

To work around this, several CCSR and DCSR register updates need to be
made in a careful manner, so that there is no other transaction in
corenet when the update is made.

The update is made from a locked cacheline, with a delay before to flush
any previous activity, and a delay after to flush the CCSR/DCSR update.
We can't use a readback because that would be another corenet
transaction, which is not allowed.

We lock the subsequent cacheline to prevent it from being fetched while
we're executing the previous cacheline.  It is filled with nops so that a
branch doesn't cause us to fetch another cacheline.

Ordinarily we are running in a cache-inhibited mapping at this point, so
we temporarily change that.  We make it guarded so that we should never
see a speculative load, and we never do an explicit load.  Thus, only the
I-cache should ever fill from this mapping, and we flush/unlock it
afterward.  Thus we should avoid problems from any potential cache
aliasing between inhibited and non-inhibited mappings.

NOTE that if PAMU is used with this patch, it will need to use a
dedicated LAW as described in the erratum.  This is the responsibility
of the OS that sets up PAMU.

Signed-off-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Andy Fleming <afleming@freescale.com>
2012-08-23 12:16:54 -05:00
..
arch-mpc83xx mpc83xx: Add a GPIO driver for the MPC83XX family 2012-01-09 20:10:33 -06:00
4xx_pci.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
4xx_pcie.h consolidate mdelay by providing a common function for all users 2011-10-22 01:16:08 +02:00
5xx_immap.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
8xx_immap.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
apm821xx.h APM821xx: Add CPU support 2010-10-04 11:15:02 +02:00
atomic.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
bitops.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
byteorder.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
cache.h powerpc: cache: define ARCH_DMA_MINALIGN for DMA buffer alignment 2011-10-23 20:50:42 +02:00
config.h powerpc/mpc83xx: Migrate from spd_sdram to unified DDR driver 2011-09-29 19:01:06 -05:00
config_mpc85xx.h powerpc/fsl-corenet: work around erratum A004510 2012-08-23 12:16:54 -05:00
config_mpc86xx.h Minor Coding Style Cleanup. 2011-02-02 22:36:10 +01:00
cpm_85xx.h cleanup: Fix typos and misspellings in various files. 2011-07-28 21:27:36 +02:00
cpm_8260.h cleanup: Fix typos and misspellings in various files. 2011-07-28 21:27:36 +02:00
e300.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
errno.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
fsl_ddr_dimm_params.h powerpc/mpc8xxx: fix recognition of DIMMs with ECC and Address Parity 2011-03-24 09:20:49 -05:00
fsl_ddr_sdram.h p1014rdb: set ddr bus width properly depending on SVR 2012-08-23 10:24:16 -05:00
fsl_dma.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
fsl_dtsec.h powerpc/85xx: Add support for FMan ethernet in Independent mode 2011-09-29 19:01:05 -05:00
fsl_enet.h fsl: Change fsl_phy_enet_if to phy_interface_t 2011-04-20 15:09:35 -05:00
fsl_fman.h powerpc/85xx: fix null pointer dereference when init the SGMII TBI PHY 2011-10-09 17:57:53 -05:00
fsl_i2c.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
fsl_ifc.h fsl_ifc: Add the workaround for erratum IFC-A002769 (enable on P1010) 2011-09-29 19:01:04 -05:00
fsl_law.h powerpc/85xx: Add support for Freescale P1023/P1017 Processors 2011-04-04 09:24:41 -05:00
fsl_lbc.h powerpc/85xx: improve definition of BR_PHYS_ADDR macro 2012-08-08 18:32:15 -05:00
fsl_liodn.h powerpc/85xx: Add support for RMan LIODN initialization 2011-10-18 00:36:48 -05:00
fsl_mpc83xx_serdes.h ppc: Split MPC83xx SERDES code from MPC85xx/MPC86xx/QorIQ 2010-04-26 22:37:57 -05:00
fsl_pci.h powerpc/fsl_pci: Fix device tree fixups for newer platforms 2011-05-20 00:48:41 -05:00
fsl_portals.h powerpc/85xx: Add support for RMan LIODN initialization 2011-10-18 00:36:48 -05:00
fsl_secure_boot.h powerpc/p4080: Add support for secure boot flow 2011-10-03 08:52:14 -05:00
fsl_serdes.h powerpc/85xx: add support for FM2 DTSEC5 2012-08-23 10:24:18 -05:00
fsl_srio.h powerpc/corenet_ds: Get rid of the SRIOBOOT_MASTER build target 2012-08-23 10:24:14 -05:00
fsl_tgec.h powerpc/85xx: Add support for FMan ethernet in Independent mode 2011-09-29 19:01:05 -05:00
global_data.h global_data: unify global flag defines 2012-08-09 21:46:32 +02:00
gpio.h mpc83xx: Add a GPIO driver for the MPC83XX family 2012-01-09 20:10:33 -06:00
immap_83xx.h mpc83xx: Fix ipic structure definition 2011-11-03 18:27:52 -05:00
immap_85xx.h powerpc/fsl-corenet: remove dead variant symbols 2012-08-23 12:16:54 -05:00
immap_86xx.h powerpc/86xx: Enable common SRIO init code 2011-01-14 01:32:21 -06:00
immap_512x.h MPC5121: Add USB EHCI support 2010-10-18 22:33:32 +02:00
immap_8220.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
immap_8260.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
immap_qe.h powerpc/85xx: Cleanup some QE related defines 2011-04-04 09:24:41 -05:00
interrupt.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
io.h powerpc: Fix declaration type for I/O functions 2012-08-09 22:24:31 +02:00
iopin_8xx.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
iopin_85xx.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
iopin_8260.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
m8260_pci.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
mc146818rtc.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
mmu.h powerpc/85xx: fix definition of MAS register macros 2011-11-08 08:30:57 -06:00
mp.h powerpc/8xxx: Add is_core_disabled to remove disabled cores from dtb 2010-07-16 10:55:08 -05:00
mpc8xxx_spi.h mpc8308: support for Freescale MPC8308 cpu 2010-07-09 15:00:54 -05:00
mpc85xx_gpio.h mpc85xx: Add inline GPIO acessor functions 2011-10-21 00:04:28 -05:00
mpc512x.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
mpc8349_pci.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
pci_io.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
pnp.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
posix_types.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
ppc4xx-ebc.h APM821xx: Add CPU support 2010-10-04 11:15:02 +02:00
ppc4xx-emac.h net: drop !NET_MULTI code 2011-10-05 22:22:16 +02:00
ppc4xx-gpio.h ppc4xx: Move gpio.h to ppc4xx-gpio.h since its ppc4xx specific 2010-09-23 09:02:05 +02:00
ppc4xx-i2c.h ppc4xx: Move ppc4xx headers to powerpc include directory 2010-09-23 09:02:05 +02:00
ppc4xx-isram.h APM821xx: Add CPU support 2010-10-04 11:15:02 +02:00
ppc4xx-mal.h ppc4xx: Big header cleanup, mostly PPC440 related 2010-09-23 09:02:05 +02:00
ppc4xx-sdram.h APM821xx: Add CPU support 2010-10-04 11:15:02 +02:00
ppc4xx-uic.h APM821xx: Add CPU support 2010-10-04 11:15:02 +02:00
ppc4xx.h ppc4xx: Remove some testing hacks from ppc4xx.h 2010-10-04 11:20:11 +02:00
ppc4xx_config.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
ppc405.h ppc4xx: Big header cleanup part 2, mostly PPC405 related 2010-09-23 09:02:05 +02:00
ppc405cr.h ppc4xx: Use common NS16550 driver for PPC4xx UART 2010-09-23 09:02:05 +02:00
ppc405ep.h ppc4xx: Use common NS16550 driver for PPC4xx UART 2010-09-23 09:02:05 +02:00
ppc405ex.h PPC405EX CHIP_21 erratum 2011-05-12 16:10:51 +02:00
ppc405ez.h ppc4xx: Use common NS16550 driver for PPC4xx UART 2010-09-23 09:02:05 +02:00
ppc405gp.h ppc4xx: Use common NS16550 driver for PPC4xx UART 2010-09-23 09:02:05 +02:00
ppc440.h ppc4xx: Big header cleanup part 2, mostly PPC405 related 2010-09-23 09:02:05 +02:00
ppc440ep_gr.h cleanup: Fix typos and misspellings in various files. 2011-07-28 21:27:36 +02:00
ppc440epx_grx.h cleanup: Fix typos and misspellings in various files. 2011-07-28 21:27:36 +02:00
ppc440gp.h ppc4xx: Use common NS16550 driver for PPC4xx UART 2010-09-23 09:02:05 +02:00
ppc440gx.h cleanup: Fix typos and misspellings in various files. 2011-07-28 21:27:36 +02:00
ppc440sp.h cleanup: Fix typos and misspellings in various files. 2011-07-28 21:27:36 +02:00
ppc440spe.h cleanup: Fix typos and misspellings in various files. 2011-07-28 21:27:36 +02:00
ppc460ex_gt.h ppc4xx: Use common NS16550 driver for PPC4xx UART 2010-09-23 09:02:05 +02:00
ppc460sx.h ppc4xx: Use common NS16550 driver for PPC4xx UART 2010-09-23 09:02:05 +02:00
processor.h powerpc/fsl-corenet: work around erratum A004510 2012-08-23 12:16:54 -05:00
ptrace.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
residual.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
sigcontext.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
signal.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
status_led.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
string.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
types.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
u-boot.h net: punt bd->bi_ip_addr 2012-05-15 17:32:05 -05:00
unaligned.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
xilinx_irq.h Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00