freebsd-dev/sys/arm
Zbigniew Bodek 8cbc8d3dd1 Disable PL310 outer cache sync for IO coherent platforms
When a PL310 cache is used on a system that provides hardware
coherency, the outer cache sync operation is useless, and can be
skipped. Moreover, on some systems, it is harmful as it causes
deadlocks between the Marvell coherency mechanism, the Marvell PCIe
or Crypto controllers and the Cortex-A9.

To avoid this, this commit introduces a new Device Tree property
'arm,io-coherent' for the L2 cache controller node, valid only for the
PL310 cache. It identifies the usage of the PL310 cache in an I/O
coherent configuration. Internally, it makes the driver disable the
outer cache sync operation.

Note, that other outer-cache operations are not removed, as they may
be needed for certain situations, such as booting secondary CPUs.
Moreover, in order to enable IO coherent operation, the decision
whether to use L2 cache maintenance callbacks is done in busdma
layer, which was enabled in one of the previous commits.

Submitted by: Michal Mazur <mkm@semihalf.com>
	      Marcin Wojtas <mw@semihalf.com>
Reviewed by: mmel
Obtained from: Semihalf
Differential revision: https://reviews.freebsd.org/D11245
2017-06-20 11:11:42 +00:00
..
allwinner allwinner: Configure pins for DTS >= Linux 4.11 2017-06-19 06:30:04 +00:00
altera/socfpga Add FPGA manager driver for Intel Arria 10. 2017-03-03 14:19:37 +00:00
amlogic/aml8726 Add and use a MMC_DECLARE_BRIDGE macro for declaring mmc(4) bridges 2017-03-07 22:42:44 +00:00
annapurna/alpine Start to rename files with common or generic names to be SoC specific. The 2017-06-04 09:11:14 +00:00
arm Disable PL310 outer cache sync for IO coherent platforms 2017-06-20 11:11:42 +00:00
at91 Load the transmit dma buffer at attach time as well. We don't need to 2017-06-18 21:03:35 +00:00
broadcom/bcm2835 Fix spelling mistake, BCM2835_PASWORD -> BCM2835_PASSWORD 2017-04-03 22:36:45 +00:00
cavium/cns11xx Allow setting access-width for UART registers. 2017-02-27 20:08:42 +00:00
cloudabi32 Move struct syscall_args syscall arguments parameters container into 2017-06-12 21:03:23 +00:00
conf Put ARM_USE_V6_BUSDMA into the SAM9G20EK reference kernel to try to 2017-06-18 21:03:53 +00:00
freescale Add a driver for the imx6 EPIT timer that can be used as the system 2017-06-18 18:22:52 +00:00
include Disable PL310 outer cache sync for IO coherent platforms 2017-06-20 11:11:42 +00:00
lpc Add and use a MMC_DECLARE_BRIDGE macro for declaring mmc(4) bridges 2017-03-07 22:42:44 +00:00
mv Implement workaround for Armada 38X family HW issue between CPU and devices 2017-06-20 11:09:38 +00:00
nvidia Restore original (pre r315760) naming for Tegra SDHCI device. 2017-03-23 08:16:53 +00:00
qemu Make the default FDT implementation of platform_mp_setmaxid use the cpu 2017-03-17 12:45:53 +00:00
ralink [arm] [rt1310] add initial RT1310 SoC code. 2017-05-06 06:14:46 +00:00
rockchip Remake support for SMP kernel on UP cpu: 2017-02-02 06:14:44 +00:00
samsung/exynos Port the Samsung ARM code to use PLATFORM and PLATFORM_SMP. This will help 2017-06-03 20:02:12 +00:00
ti [am335x] Fix HDMI suport for Beaglebone Black 2017-03-30 21:54:57 +00:00
versatile Stop making cpu_initclocks weak when using event timers. A weak symbol 2017-06-03 16:24:17 +00:00
xilinx Port the Xilinx code to use PLATFORM and PLATFORM_SMP. This will help move 2017-06-03 19:11:32 +00:00
xscale Allow setting access-width for UART registers. 2017-02-27 20:08:42 +00:00