aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm64/kernel/syscall.c
diff options
context:
space:
mode:
authorPeter Collingbourne <pcc@google.com>2020-11-17 19:20:51 -0800
committerCatalin Marinas <catalin.marinas@arm.com>2020-11-18 17:12:11 +0000
commit739003c6428387432d42b9b80be185cde93978aa (patch)
tree6c5392781eabb80a17a91ff17ad882d19005acf2 /arch/arm64/kernel/syscall.c
parentarm64/mm: add fallback option to allocate virtually contiguous memory (diff)
downloadlinux-dev-739003c6428387432d42b9b80be185cde93978aa.tar.xz
linux-dev-739003c6428387432d42b9b80be185cde93978aa.zip
arm64: mte: optimize asynchronous tag check fault flag check
We don't need to check for MTE support before checking the flag because it can only be set if the hardware supports MTE. As a result we can unconditionally check the flag bit which is expected to be in a register and therefore the check can be done in a single instruction instead of first needing to load the hwcaps. On a DragonBoard 845c with a kernel built with CONFIG_ARM64_MTE=y with the powersave governor this reduces the cost of a kernel entry/exit (invalid syscall) from 465.1ns to 463.8ns. Signed-off-by: Peter Collingbourne <pcc@google.com> Link: https://linux-review.googlesource.com/id/If4dc3501fd4e4f287322f17805509613cfe47d24 Link: https://lore.kernel.org/r/20201118032051.1405907-1-pcc@google.com [catalin.marinas@arm.com: remove IS_ENABLED(CONFIG_ARM64_MTE)] Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'arch/arm64/kernel/syscall.c')
-rw-r--r--arch/arm64/kernel/syscall.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arm64/kernel/syscall.c b/arch/arm64/kernel/syscall.c
index e4c0dadf0d92..fe3fa8fd13c8 100644
--- a/arch/arm64/kernel/syscall.c
+++ b/arch/arm64/kernel/syscall.c
@@ -123,7 +123,7 @@ static void el0_svc_common(struct pt_regs *regs, int scno, int sc_nr,
local_daif_restore(DAIF_PROCCTX);
user_exit();
- if (system_supports_mte() && (flags & _TIF_MTE_ASYNC_FAULT)) {
+ if (flags & _TIF_MTE_ASYNC_FAULT) {
/*
* Process the asynchronous tag check fault before the actual
* syscall. do_notify_resume() will send a signal to userspace