arm64: mte: optimize asynchronous tag check fault flag check
authorPeter Collingbourne <pcc@google.com>
Wed, 18 Nov 2020 03:20:51 +0000 (19:20 -0800)
committerCatalin Marinas <catalin.marinas@arm.com>
Wed, 18 Nov 2020 17:12:11 +0000 (17:12 +0000)
commit739003c6428387432d42b9b80be185cde93978aa
tree6c5392781eabb80a17a91ff17ad882d19005acf2
parent9f84f39f5515fd412398a1019e3f50ac3ab51a80
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>
arch/arm64/kernel/syscall.c