]> git.baikalelectronics.ru Git - kernel.git/commit
arm64: mte: avoid clearing PSTATE.TCO on entry unless necessary
authorPeter Collingbourne <pcc@google.com>
Sat, 19 Feb 2022 01:29:45 +0000 (17:29 -0800)
committerWill Deacon <will@kernel.org>
Tue, 22 Feb 2022 21:48:44 +0000 (21:48 +0000)
commit5fa72a1725fcfe7c4f9089f94c7da0891c1d6b2f
treec147e82d6955532fdb6e42e7d23757374f3cce25
parent5c3fbfb99b9e78ab41972e2413beef8cd6785382
arm64: mte: avoid clearing PSTATE.TCO on entry unless necessary

On some microarchitectures, clearing PSTATE.TCO is expensive. Clearing
TCO is only necessary if in-kernel MTE is enabled, or if MTE is
enabled in the userspace process in synchronous (or, soon, asymmetric)
mode, because we do not report uaccess faults to userspace in none
or asynchronous modes. Therefore, adjust the kernel entry code to
clear TCO only if necessary.

Because it is now possible to switch to a task in which TCO needs to
be clear from a task in which TCO is set, we also need to do the same
thing on task switch.

Signed-off-by: Peter Collingbourne <pcc@google.com>
Link: https://linux-review.googlesource.com/id/I52d82a580bd0500d420be501af2c35fa8c90729e
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Link: https://lore.kernel.org/r/20220219012945.894950-2-pcc@google.com
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/include/asm/mte.h
arch/arm64/kernel/entry-common.c
arch/arm64/kernel/entry.S
arch/arm64/kernel/mte.c