linux-hardened/Documentation/arm64
Catalin Marinas 6a036afb55 Merge branch 'for-next/neoverse-n1-stale-instr' into for-next/core
Neoverse-N1 cores with the 'COHERENT_ICACHE' feature may fetch stale
instructions when software depends on prefetch-speculation-protection
instead of explicit synchronization. [0]

The workaround is to trap I-Cache maintenance and issue an
inner-shareable TLBI. The affected cores have a Coherent I-Cache, so the
I-Cache maintenance isn't necessary. The core tells user-space it can
skip it with CTR_EL0.DIC. We also have to trap this register to hide the
bit forcing DIC-aware user-space to perform the maintenance.

To avoid trapping all cache-maintenance, this workaround depends on
a firmware component that only traps I-cache maintenance from EL0 and
performs the workaround.

For user-space, the kernel's work is to trap CTR_EL0 to hide DIC, and
produce a fake IminLine. EL3 traps the now-necessary I-Cache maintenance
and performs the inner-shareable-TLBI that makes everything better.

[0] https://developer.arm.com/docs/sden885747/latest/arm-neoverse-n1-mp050-software-developer-errata-notice

* for-next/neoverse-n1-stale-instr:
  arm64: Silence clang warning on mismatched value/register sizes
  arm64: compat: Workaround Neoverse-N1 #1542419 for compat user-space
  arm64: Fake the IminLine size on systems affected by Neoverse-N1 #1542419
  arm64: errata: Hide CTR_EL0.DIC on systems affected by Neoverse-N1 #1542419
2019-10-28 16:12:40 +00:00
..
acpi_object_usage.rst docs: arm64: convert docs to ReST and rename to .rst 2019-06-14 14:20:27 -06:00
arm-acpi.rst docs: arm64: convert docs to ReST and rename to .rst 2019-06-14 14:20:27 -06:00
booting.rst Devicetree updates for v5.3: 2019-07-11 18:35:30 -07:00
cpu-feature-registers.rst docs: arm64: convert docs to ReST and rename to .rst 2019-06-14 14:20:27 -06:00
elf_hwcaps.rst It's been a relatively busy cycle for docs: 2019-07-09 12:34:26 -07:00
hugetlbpage.rst docs: arm64: convert docs to ReST and rename to .rst 2019-06-14 14:20:27 -06:00
index.rst arm64: Add tagged-address-abi.rst to index.rst 2019-08-22 18:22:57 +01:00
kasan-offsets.sh arm64: kasan: Switch to using KASAN_SHADOW_OFFSET 2019-08-09 11:17:11 +01:00
legacy_instructions.rst docs: arm64: convert docs to ReST and rename to .rst 2019-06-14 14:20:27 -06:00
memory.rst docs: arm64: Fix indentation and doc formatting 2019-10-01 13:32:35 +01:00
perf.txt arm64: docs: Document perf event attributes 2019-04-24 15:46:26 +01:00
pointer-authentication.rst docs: arm64: convert docs to ReST and rename to .rst 2019-06-14 14:20:27 -06:00
silicon-errata.rst Merge branch 'for-next/neoverse-n1-stale-instr' into for-next/core 2019-10-28 16:12:40 +00:00
sve.rst It's been a relatively busy cycle for docs: 2019-07-09 12:34:26 -07:00
tagged-address-abi.rst arm64: Define Documentation/arm64/tagged-address-abi.rst 2019-08-22 12:32:26 +01:00
tagged-pointers.rst arm64: Relax Documentation/arm64/tagged-pointers.rst 2019-08-27 18:16:20 +01:00