FROMGIT: arm64: mte: Enable async tag check fault
MTE provides a mode that asynchronously updates the TFSR_EL1 register when a tag check exception is detected. To take advantage of this mode the kernel has to verify the status of the register at: 1. Context switching 2. Return to user/EL0 (Not required in entry from EL0 since the kernel did not run) 3. Kernel entry from EL1 4. Kernel exit to EL1 If the register is non-zero a trace is reported. Add the required features for EL1 detection and reporting. Note: ITFSB bit is set in the SCTLR_EL1 register hence it guaranties that the indirect writes to TFSR_EL1 are synchronized at exception entry to EL1. On the context switch path the synchronization is guarantied by the dsb() in __switch_to(). The dsb(nsh) in mte_check_tfsr_exit() is provisional pending confirmation by the architects. Cc: Will Deacon <will@kernel.org> Reviewed-by:Catalin Marinas <catalin.marinas@arm.com> Acked-by:
Andrey Konovalov <andreyknvl@google.com> Tested-by:
Andrey Konovalov <andreyknvl@google.com> Signed-off-by:
Vincenzo Frascino <vincenzo.frascino@arm.com> Link: https://lore.kernel.org/r/20210315132019.33202-8-vincenzo.frascino@arm.com Signed-off-by:
Catalin Marinas <catalin.marinas@arm.com> Bug: 170327579 Bug: 172318110 (cherry picked from commit 65812c69 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git/ for-next/mte-async-kernel-mode) Signed-off-by:
Alexander Potapenko <glider@google.com> Change-Id: Ia3e8df665b1fd88a50c649a6eda6ee790e28a7d4
Loading
Please sign in to comment