freebsd-dev/sys/arm/include
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
..
_align.h Revert prior commit to restore the files mangled by my "fixing" merge 2017-03-01 02:10:40 +00:00
_bus.h
_inttypes.h
_limits.h Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
_stdint.h ARM: Remove trailing whitespace from sys/arm/include 2015-11-10 12:02:41 +00:00
_types.h Define the vm_ooffset_t and vm_pindex_t types as machine-independend. 2017-02-04 12:26:38 +00:00
acle-compat.h From https://sourceware.org/ml/newlib/2014/msg00113.html 2014-08-14 04:20:13 +00:00
armreg.h Add the early hypervisor code needed on 32-bit ARMv7. This will be used 2017-03-22 14:30:02 +00:00
asm.h Add the early hypervisor code needed on 32-bit ARMv7. This will be used 2017-03-22 14:30:02 +00:00
asmacros.h Remove an old use of _ARM_ARCH_6, we are moving to using the standard 2017-02-03 11:47:57 +00:00
at91_gpio.h
atags.h ARM: Fix ATAG handling in LINUX_BOOT_API: 2016-03-26 06:57:36 +00:00
atomic-v4.h Remove register keyword from sys/ and ANSIfy prototypes 2017-05-17 00:34:34 +00:00
atomic-v6.h Correct the IT instruction in atomic_fcmpset_64(). 2017-01-29 13:31:56 +00:00
atomic.h Stop including sys/types.h from arm's machine/atomic.h, fix the places 2017-02-11 01:07:46 +00:00
blockio.h
board.h ARM: Remove trailing whitespace from sys/arm/include 2015-11-10 12:02:41 +00:00
bus_dma.h Remove bus_dma_get_range and bus_dma_get_range_nb on armv6. We only need 2016-09-23 12:38:05 +00:00
bus.h Include machine/acle-compat.h in cdefs.h on arm if the compiler doesn't 2016-05-25 19:44:26 +00:00
clock.h
counter.h - Remove 'struct vmmeter' from 'struct pcpu', leaving only global vmmeter 2017-04-17 17:34:47 +00:00
cpu-v4.h Include machine/acle-compat.h in cdefs.h on arm if the compiler doesn't 2016-05-25 19:44:26 +00:00
cpu-v6.h Remake support for SMP kernel on UP cpu: 2017-02-02 06:14:44 +00:00
cpu.h Include machine/acle-compat.h in cdefs.h on arm if the compiler doesn't 2016-05-25 19:44:26 +00:00
cpufunc.h Remake support for SMP kernel on UP cpu: 2017-02-02 06:14:44 +00:00
cpuinfo.h Implement tunable CPU quirks. 2017-06-13 12:07:18 +00:00
db_machdep.h Fix printing of negative offsets (typically from frame pointers) again. 2017-03-26 18:46:35 +00:00
debug_monitor.h Improve ARM debug_monitor for SMP machines 2016-05-29 17:35:38 +00:00
disassem.h ARM: Remove trailing whitespace from sys/arm/include 2015-11-10 12:02:41 +00:00
dump.h Factor out duplicated code from dumpsys() on each architecture into generic 2015-01-07 01:01:39 +00:00
efi.h Fix building on i386 and arm. But 'public domain' headers on the files 2016-10-13 06:56:23 +00:00
elf.h Move/add ARM ELF PHDR types to elf_common.h 2016-08-02 20:26:04 +00:00
endian.h ARM: Remove trailing whitespace from sys/arm/include 2015-11-10 12:02:41 +00:00
exec.h
fdt.h Import ARM_INTRNG, the "next generation" interrupt architecture for arm 2015-10-18 18:26:19 +00:00
fiq.h
float.h Rationalize BSD license on sys/*/include/float.h 2015-08-05 17:05:35 +00:00
floatingpoint.h
frame.h Preserve VFP state across signal delivery. 2017-03-26 08:36:56 +00:00
gdb_machdep.h
ieee.h
ieeefp.h
in_cksum.h Delete stray clause 3 and renumber. 2015-03-13 02:49:55 +00:00
intr.h Remake support for SMP kernel on UP cpu: 2017-02-02 06:14:44 +00:00
kdb.h ARM: Use new ARMv6 naming conventions for cache and TLB functions 2016-02-05 14:57:41 +00:00
limits.h Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
machdep.h Split overbloated machep.c to multiple files and do basic cleanup 2017-03-11 07:07:41 +00:00
md_var.h Implement userspace gettimeofday(2) with HPET timecounter. 2016-08-17 09:52:09 +00:00
memdev.h
metadata.h Add support to the efi boot1 and loader for 32-bit ARM. This will be used 2015-04-06 15:50:20 +00:00
minidump.h Add mmu format info into ARM vmcore. 2016-01-15 18:53:06 +00:00
ofw_machdep.h Allow us to be told about memory past the first 4GB point, but ignore it. 2016-01-25 23:04:40 +00:00
param.h Revert the recent armv6 changes to ALIGNED_POINTER(), restoring the 2016-06-21 17:53:42 +00:00
pcb.h Cleanup structures related to VFP and/or mcontext_t. 2017-03-24 11:46:49 +00:00
pcpu.h - Remove 'struct vmmeter' from 'struct pcpu', leaving only global vmmeter 2017-04-17 17:34:47 +00:00
physmem.h Allow us to be told about memory past the first 4GB point, but ignore it. 2016-01-25 23:04:40 +00:00
pl310.h Disable PL310 outer cache sync for IO coherent platforms 2017-06-20 11:11:42 +00:00
platform.h When the initarm_* routines were renamed to platform_* and moved to their 2014-08-17 02:56:58 +00:00
platformvar.h Remove the need for the delay to be zero when MULTIDELAY is undefined, 2016-10-25 17:57:31 +00:00
pmap_var.h Don't use atomic operations for page table entries and handle access 2016-04-22 06:32:27 +00:00
pmap-v4.h Remove arm's cpuconf.h, and references to it, after moving a few lines from 2017-01-16 16:44:13 +00:00
pmap-v6.h Implement tunable CPU quirks. 2017-06-13 12:07:18 +00:00
pmap.h Fix the armv6 build after r309553. 2016-12-06 06:15:28 +00:00
pmc_mdep.h Fix arm stack frame walking support: 2017-03-14 16:06:57 +00:00
proc.h Make it possible to safely use TPIDRURW from userspace. 2016-09-22 08:14:59 +00:00
profile.h Fix improper use of "its". 2016-11-08 23:59:41 +00:00
psl.h Fix arm build. 2014-01-06 17:16:27 +00:00
pte-v4.h Rename pte.h to pte-v4.h and start including directly either pte-v4.h 2016-02-19 09:23:32 +00:00
pte-v6.h Remove AP_KRW definition not needed after r295801. 2016-02-19 09:52:11 +00:00
ptrace.h
reg.h Cleanup structures related to VFP and/or mcontext_t. 2017-03-24 11:46:49 +00:00
reloc.h
resource.h ARM: Define PCI_RES_BUS resource for platforms having NEW_PCIB enabled. 2015-12-02 14:24:14 +00:00
runq.h
sc_machdep.h
setjmp.h
sf_buf.h Include machine/acle-compat.h in cdefs.h on arm if the compiler doesn't 2016-05-25 19:44:26 +00:00
sigframe.h
signal.h Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
smp.h Rename ARM_INTRNG and MIPS_INTRNG to INTRNG. This will help with machine 2016-04-15 16:05:41 +00:00
stack.h Allow the ARM unwinder to work through modules. This will be used to add 2015-02-19 12:06:57 +00:00
stdarg.h Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
swi.h
sysarch.h Include machine/acle-compat.h in cdefs.h on arm if the compiler doesn't 2016-05-25 19:44:26 +00:00
sysreg.h Add the early hypervisor code needed on 32-bit ARMv7. This will be used 2017-03-22 14:30:02 +00:00
trap.h Move the check to see if we are tracing a function with the DTrace Function 2015-12-05 09:32:36 +00:00
ucontext.h Preserve VFP state across signal delivery. 2017-03-26 08:36:56 +00:00
undefined.h
utrap.h
vdso.h Implement userspace gettimeofday(2) with HPET timecounter. 2016-08-17 09:52:09 +00:00
vfp.h Cleanup structures related to VFP and/or mcontext_t. 2017-03-24 11:46:49 +00:00
vm.h Include machine/acle-compat.h in cdefs.h on arm if the compiler doesn't 2016-05-25 19:44:26 +00:00
vmparam.h Increase maximum text segment size. 2017-05-19 11:45:14 +00:00