linux/Documentation/arm64
Anshuman Khandual 5db568e748 arm64: errata: Workaround possible Cortex-A715 [ESR|FAR]_ELx corruption
If a Cortex-A715 cpu sees a page mapping permissions change from executable
to non-executable, it may corrupt the ESR_ELx and FAR_ELx registers, on the
next instruction abort caused by permission fault.

Only user-space does executable to non-executable permission transition via
mprotect() system call which calls ptep_modify_prot_start() and ptep_modify
_prot_commit() helpers, while changing the page mapping. The platform code
can override these helpers via __HAVE_ARCH_PTEP_MODIFY_PROT_TRANSACTION.

Work around the problem via doing a break-before-make TLB invalidation, for
all executable user space mappings, that go through mprotect() system call.
This overrides ptep_modify_prot_start() and ptep_modify_prot_commit(), via
defining HAVE_ARCH_PTEP_MODIFY_PROT_TRANSACTION on the platform thus giving
an opportunity to intercept user space exec mappings, and do the necessary
TLB invalidation. Similar interceptions are also implemented for HugeTLB.

Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-doc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
Link: https://lore.kernel.org/r/20230102061651.34745-1-anshuman.khandual@arm.com
Signed-off-by: Will Deacon <will@kernel.org>
2023-01-06 17:14:55 +00:00
..
acpi_object_usage.rst ACPI: Enable FPDT on arm64 2022-11-14 18:02:59 +00:00
amu.rst Documentation: Chinese translation of Documentation/arm64/amu.rst 2020-09-28 15:24:24 -06:00
arm-acpi.rst arm64: Replace HTTP links with HTTPS ones 2020-07-23 14:04:37 -06:00
asymmetric-32bit.rst Documentation: arm64: describe asymmetric 32-bit support 2021-08-20 12:33:07 +02:00
booting.rst Merge branch 'for-next/trivial' into for-next/core 2022-12-06 11:33:29 +00:00
cpu-feature-registers.rst arm64: cpufeature: Fix the visibility of compat hwcaps 2022-11-03 18:04:56 +00:00
elf_hwcaps.rst arm64/hwcap: Add support for SVE 2.1 2022-11-09 17:54:53 +00:00
features.rst docs: archis: add a per-architecture features list 2020-12-03 15:10:15 -07:00
hugetlbpage.rst Documentation: Chinese translation of Documentation/arm64/hugetlbpage.rst 2020-10-21 15:15:17 -06:00
index.rst arm64/sme: Provide ABI documentation for SME 2022-04-22 18:50:39 +01:00
kasan-offsets.sh arm64: mm: extend linear region for 52-bit VA configurations 2020-11-09 17:15:37 +00:00
legacy_instructions.rst docs: arm64: convert docs to ReST and rename to .rst 2019-06-14 14:20:27 -06:00
memory-tagging-extension.rst elf: Fix the arm64 MTE ELF segment name and value 2022-04-28 11:37:06 +01:00
memory.rst Documentation/arm64: update memory layout table. 2022-06-23 18:35:40 +01:00
perf.rst Documentation: arm64: Document PMU counters access from userspace 2021-12-14 11:41:19 +00:00
pointer-authentication.rst arm64: update PAC description for kernel 2021-12-02 10:13:35 +00:00
silicon-errata.rst arm64: errata: Workaround possible Cortex-A715 [ESR|FAR]_ELx corruption 2023-01-06 17:14:55 +00:00
sme.rst arm64/ptrace: Document extension of NT_ARM_TLS to cover TPIDR2_EL0 2022-09-21 17:26:58 +01:00
sve.rst arm64/hwcap: Add support for SVE 2.1 2022-11-09 17:54:53 +00:00
tagged-address-abi.rst docs/arm64: delete a space from tagged-address-abi 2021-12-14 19:01:37 +00:00
tagged-pointers.rst arm64: expose FAR_EL1 tag bits in siginfo 2020-11-23 18:17:39 +00:00