u-boot/arch/arm
Andrew F. Davis 864e285739 arm: mach-k3: Clean non-coherent lines out of L3 cache
When switching on or off the ARM caches some care must be taken to ensure
existing cache line allocations are not left in an inconsistent state.
An example of this is when cache lines are considered non-shared by
and L3 controller even though the lines are shared. To prevent these
and other issues all cache lines should be cleared before enabling
or disabling a coherent master's cache. ARM cores and many L3 controllers
provide a way to efficiently clean out all cache lines to allow for
this, unfortunately there is no such easy way to do this on current K3
MSMC based systems.

We could explicitly clean out every valid external address tracked by
MSMC (all of DRAM), or we could attempt to identify only the set of
addresses accessed by a given boot stage and flush only those
specifically. This patch attempts the latter. We start with cleaning the
SPL load address. More addresses can be added here later as they are
identified.

Note that we perform a flush operation for both the flush and invalidate
operations, this is not a typo. We do this to avoid the situation that
some ARM cores will promote an invalidate to a clean+invalidate, but only
emit the invalidation operation externally, leading to a loss of data.

Signed-off-by: Andrew F. Davis <afd@ti.com>
Tested-by: Faiz Abbas <faiz_abbas@ti.com>
2020-08-11 10:18:27 +05:30
..
cpu ARM: add Kconfig option for PSCI 0.1 2020-08-05 08:18:34 -04:00
dts arm: dts: k3: Add RTI watchdogs 2020-08-11 10:18:27 +05:30
include mediatek: Drop dm.h header file 2020-08-03 22:19:54 -04:00
lib arm: Add SPL build check to SPL early bss clear 2020-08-04 23:30:02 -04:00
mach-aspeed common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
mach-at91 Makefile: Rename ALL-y to INPUTS-y 2020-07-28 19:30:39 -06:00
mach-bcm283x - add support for PCI and XHCI for RPi4 (64 bit only) 2020-07-10 14:31:22 -04:00
mach-bcmstb
mach-cortina board: presidio-asic: Add basic G3 engr. development board support 2020-02-07 16:16:01 -05:00
mach-davinci Makefile: Rename ALL-y to INPUTS-y 2020-07-28 19:30:39 -06:00
mach-exynos common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
mach-highbank common: Drop init.h from common header 2020-05-18 17:33:33 -04:00
mach-imx For 2020.10 2020-08-04 11:11:02 -04:00
mach-integrator
mach-ipq40xx arm: Add support for Qualcomm IPQ40xx family 2020-07-29 08:43:40 -04:00
mach-k3 arm: mach-k3: Clean non-coherent lines out of L3 cache 2020-08-11 10:18:27 +05:30
mach-keystone Makefile: Rename ALL-y to INPUTS-y 2020-07-28 19:30:39 -06:00
mach-kirkwood Convert CONFIG_ENV_OVERWRITE to Kconfig 2020-07-28 16:18:06 -04:00
mach-lpc32xx treewide: convert bd_t to struct bd_info by coccinelle 2020-07-17 09:30:13 -04:00
mach-mediatek common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
mach-meson treewide: convert bd_t to struct bd_info by coccinelle 2020-07-17 09:30:13 -04:00
mach-mvebu Convert CONFIG_ENV_OVERWRITE to Kconfig 2020-07-28 16:18:06 -04:00
mach-nexell pwm: add driver for nexell 2020-07-29 08:43:40 -04:00
mach-omap2 Makefile: Rename ALL-y to INPUTS-y 2020-07-28 19:30:39 -06:00
mach-orion5x treewide: convert bd_t to struct bd_info by coccinelle 2020-07-17 09:30:13 -04:00
mach-owl Actions: OWL: Calculate SDRAM size 2020-07-07 16:09:22 -04:00
mach-qemu qemu: don't allow to select 32- and 64-bit 2020-04-24 10:51:32 -04:00
mach-rmobile Makefile: Rename ALL-y to INPUTS-y 2020-07-28 19:30:39 -06:00
mach-rockchip rockchip: Drop the fit_spl_optee.sh script 2020-07-28 19:30:39 -06:00
mach-s5pc1xx common: Drop net.h from common header 2020-05-18 17:33:31 -04:00
mach-snapdragon treewide: convert devfdt_get_addr() to dev_read_addr() 2020-07-25 14:46:57 -06:00
mach-socfpga socfpga: Mark socfpga_fpga_add() as static inline in the non-FPGA case 2020-07-01 10:11:03 -04:00
mach-sti
mach-stm32 common: Drop init.h from common header 2020-05-18 17:33:33 -04:00
mach-stm32mp sf: Drop dm.h header file from spi_flash.h 2020-08-03 22:19:54 -04:00
mach-sunxi sunxi: Silence warning about non-static inline function 2020-06-01 22:38:08 +05:30
mach-tegra tegra: Don't enable binman on ARMv8 SoCs 2020-07-28 19:30:39 -06:00
mach-u8500 common: Drop init.h from common header 2020-05-18 17:33:33 -04:00
mach-uniphier treewide: convert bd_t to struct bd_info by coccinelle 2020-07-17 09:30:13 -04:00
mach-versal common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
mach-versatile
mach-zynq common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
mach-zynqmp common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
mach-zynqmp-r5 common: Drop init.h from common header 2020-05-18 17:33:33 -04:00
thumb1/include/asm/proc-armv
config.mk Makefile: Rename ALL-y to INPUTS-y 2020-07-28 19:30:39 -06:00
Kconfig For 2020.10 2020-08-04 11:11:02 -04:00
Kconfig.debug
Makefile arm: add mach-nexell (all files except header files) 2020-07-29 08:43:40 -04:00