linux/Documentation/devicetree/bindings/arm
Geert Uytterhoeven eeedcea69e ARM: 8395/1: l2c: Add support for the "arm,shared-override" property
"CoreLink Level 2 Cache Controller L2C-310", p. 2-15, section 2.3.2
Shareable attribute" states:

    "The default behavior of the cache controller with respect to the
     shareable attribute is to transform Normal Memory Non-cacheable
     transactions into:
        - cacheable no allocate for reads
        - write through no write allocate for writes."

Depending on the system architecture, this may cause memory corruption
in the presence of bus mastering devices (e.g. OHCI). To avoid such
corruption, the default behavior can be disabled by setting the Shared
Override bit in the Auxiliary Control register.

Currently the Shared Override bit can be set only using C code:
  - by calling l2x0_init() directly, which is deprecated,
  - by setting/clearing the bit in the machine_desc.l2c_aux_val/mask
    fields, but using values differing from 0/~0 is also deprecated.

Hence add support for an "arm,shared-override" device tree property for
the l2c device node. By specifying this property, affected systems can
indicate that non-cacheable transactions must not be transformed.
Then, it's up to the OS to decide. The current behavior is to set the
"shared attribute override enable" bit, as there may exist kernel linear
mappings and cacheable aliases for the DMA buffers, even if CMA is
enabled.

See also commit 1a8e41cd67 ("ARM: 6395/1: VExpress: Set bit 22 in
the PL310 (cache controller) AuxCtlr register"):

    "Clearing bit 22 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: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2015-07-10 11:07:31 +01:00
..
altera ARM: SoC: DT updates for v4.2 2015-06-26 11:43:59 -07:00
bcm RaspberryPi Device Tree changes due for v4.2 2015-05-15 17:23:29 +02:00
calxeda
cpu-enable-method ARM: dts: Alpine platform binding documentation 2015-03-16 15:25:17 +01:00
davinci mtd: nand: davinci: move bindings under mtd 2014-01-03 11:22:25 -08:00
exynos ARM: EXYNOS: Get current parent clock for power domain on/off 2015-06-06 02:17:56 +09:00
firmware
freescale irqchip: vf610-mscm: Add Vybrid MSCM bindings 2015-03-08 05:08:51 +00:00
hisilicon arm64: hi6220: Document devicetree bindings for Hisilicon hi6220 SoC 2015-06-05 15:29:56 +01:00
keystone ARM: dts: keystone: use common "ti,keystone" compatible instead of -evm 2014-03-20 17:00:27 -04:00
mediatek dt-bindings: ARM: Mediatek: use more generic node name in examples 2015-05-07 15:28:03 -07:00
mrvl ARM: MM: Add DT binding for Feroceon L2 cache 2014-02-22 20:43:49 +00:00
msm Merge git://www.linux-watchdog.org/linux-watchdog 2015-04-22 11:22:55 -07:00
omap bus: omap_l3_noc: Fix master id address decoding for OMAP5 2015-05-04 10:21:01 -07:00
rockchip ARM: rockchip: Add pmu-sram binding 2014-12-31 16:16:54 +01:00
samsung DT: exynos: update PMU binding 2015-03-18 17:37:13 +00:00
spear
tegra ARM: DT updates for v4.1 2015-04-22 09:09:46 -07:00
ux500 ARM: ux500: add board documentation 2015-05-18 16:00:05 +02:00
vt8500
adapteva.txt Documentation: devicetree: Adapteva boards 2014-07-25 09:45:44 +02:00
al,alpine.txt ARM: dts: Alpine platform binding documentation 2015-03-16 15:25:17 +01:00
altera.txt Documentation: DT bindings: add doc for Altera's SoCFPGA platform 2015-04-22 22:37:22 -05:00
amlogic.txt of: Define board compatible for MINIX NEO-X8 2015-03-02 11:00:02 +01:00
arch_timer.txt Doc: dt: arch_timer: discourage clock-frequency use 2015-04-16 09:08:45 -05:00
arm-boards Documentation: bindings: Add DT bindings for ARM Juno boards. 2015-05-22 16:25:40 +01:00
armada-38x.txt ARM: mvebu: Document the Device Tree binding for the Armada 388 SoC 2015-01-09 09:16:05 -06:00
armada-39x.txt devicetree: bindings: add DT binding for the Marvell Armada 39x SoC family 2015-03-04 15:35:30 +01:00
armada-370-xp-pmsu.txt ARM: mvebu: add Armada 38x compatible string to pmsu 2014-05-08 16:08:38 +00:00
armada-370-xp.txt
armada-375.txt ARM: mvebu: add initial support for the Armada 375 SOCs 2014-02-22 00:41:10 +00:00
armada-380-mpcore-soc-ctrl.txt ARM: mvebu: add CA9 MPcore SoC Controller node 2014-07-16 12:34:22 +00:00
armada-cpu-reset.txt ARM: mvebu: introduce CPU reset code 2014-04-24 05:24:02 +00:00
armadeus.txt
armv7m_systick.txt dt-bindings: Document the ARM System timer bindings 2015-06-02 12:10:13 +02:00
atmel-at91.txt ARM: at91: declare the at91rm9200 memory controller as a syscon 2015-05-20 16:37:33 +02:00
atmel-pmc.txt Documentation: dt: document all the atmel pmc compatibles 2014-07-09 19:05:10 +02:00
axxia.txt ARM: Add platform support for LSI AXM55xx SoC 2014-05-23 18:18:39 +02:00
calxeda.txt
cavium-thunder.txt arm64, thunder: Document devicetree bindings for Cavium Thunder SoC 2014-10-02 17:38:43 +02:00
cci.txt arm-cci: Add CCI-500 PMU support 2015-05-29 16:43:51 +02:00
ccn.txt bus: ARM CCN PMU driver 2014-07-23 22:14:43 +02:00
coherency-fabric.txt ARM: mvebu: add Armada 38x support to the coherency code 2014-04-24 05:00:38 +00:00
coresight.txt coresight: replicator: Add Qualcomm CoreSight Replicator driver 2015-05-24 11:12:08 -07:00
cpus.txt ARM: sun8i: Add SMP support for the Allwinner A23 2015-04-27 08:16:33 +02:00
davinci.txt
digicolor.txt ARM: devicetree: document supported Conexant Digicolor SoC 2015-01-27 15:02:38 -08:00
fsl.txt ARM: vf610: enable Cortex-M4 configuration on Vybrid SoC 2015-05-20 23:10:14 +02:00
fw-cfg.txt devicetree: document ARM bindings for QEMU's Firmware Config interface 2015-01-13 13:55:40 -06:00
gic-v3.txt irqchip: GICv3: Binding updates for ITS 2014-11-26 15:55:16 +00:00
gic.txt ARM: DT updates for v4.1 2015-04-22 09:09:46 -07:00
global_timer.txt documentaion: DT: allow a A5 compatible string in global timer 2014-04-22 11:44:25 +02:00
idle-states.txt drivers: cpuidle: Add idle-state-name description to ARM idle states 2014-11-19 10:16:23 +01:00
insignal-boards.txt
kirkwood.txt
l2cc.txt ARM: 8395/1: l2c: Add support for the "arm,shared-override" property 2015-07-10 11:07:31 +01:00
lpc32xx-mic.txt
lpc32xx.txt
marvell,berlin.txt Documentation: bindings: update the berlin chip and system ctrl doc 2015-05-16 00:07:51 +02:00
marvell,dove.txt devicetree: bindings: add missing Marvell Dove SoC documentation 2014-02-25 18:54:02 +01:00
marvell,kirkwood.txt ARM: Kirkwood: add DT description for nas2big 2015-03-11 18:16:03 +01:00
mediatek.txt Document: DT: Add bindings for mediatek MT8173 SoC Platform 2015-01-26 12:33:57 +01:00
moxart.txt
mvebu-system-controller.txt ARM: mvebu: add Armada 375 support to the system-controller driver 2014-02-22 00:41:09 +00:00
nspire.txt
olimex.txt
picoxcell.txt
pmu.txt arm64 updates for 4.1: 2015-04-16 13:58:29 -05:00
primecell.txt
psci.txt Documentation: arm: define DT idle states bindings 2014-09-12 10:48:55 +01:00
rockchip.txt dt-bindings: add root compatible property for PopMetal board 2015-03-04 20:54:36 +01:00
rtsm-dcscb.txt
samsung-boards.txt ARM: dts: add board dts file for Exynos3250-based Monk board 2014-11-27 02:43:39 +09:00
scu.txt ARM: scu: document Snoop Control Unit DT bindings 2015-05-18 15:59:44 +02:00
shmobile.txt Renesas ARM Based SoC sh73a0 Multiplatform Updates for v4.1 2015-04-01 16:37:30 -07:00
sirf.txt ARM: dts: add init dts file for CSR atlas7 SoC 2015-01-13 22:19:23 +08:00
spear-misc.txt ARM: SPEAr13xx: Add bindings and dt node for misc block 2014-07-14 11:04:42 +05:30
spear-timer.txt
spear.txt
sprd.txt Documentation: DT: Add bindings for Spreadtrum SoC Platform 2015-02-02 10:11:28 -08:00
ste-nomadik.txt ARM: nomadik: device tree for NHK15 board 2014-10-31 21:44:32 +01:00
ste-u300.txt
sti.txt ARM: STi: Add STiH410 SoC support 2015-03-11 15:34:45 +01:00
sunxi.txt devicetree: bindings: Document supported Allwinner sunxi SoCs 2014-10-20 14:51:29 +02:00
tegra.txt ARM: tegra: initial support for apalis t30 2014-07-17 15:02:09 +02:00
topology.txt ARM: topology: Make it clear that all CPUs need to be described 2014-04-02 12:14:16 +01:00
twd.txt
versatile-fpga-irq.txt irqchip: versatile FPGA: support cascaded interrupts from DT 2014-01-03 22:26:13 +01:00
versatile-sysreg.txt dt/bindings: Add binding for Versatile system registers 2015-01-29 14:02:15 +01:00
vexpress-scc.txt
vexpress-sysreg.txt mfd: vexpress: Define the device as MFD cells 2014-05-15 17:02:19 +01:00
vexpress.txt mfd: vexpress: Convert custom func API to regmap 2014-05-15 17:02:18 +01:00
vic.txt
vt8500.txt
xen.txt
xilinx.txt ARM: zynq: DT: Clarify Xilinx Zynq platform 2014-07-30 13:26:54 +02:00
zte.txt ARM: dts: zx: add an initial zx296702 dts and doc 2015-06-11 16:18:30 -07:00