aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCan Peng <pengcan@kylinos.cn>2025-09-19 18:00:42 +0800
committerWill Deacon <will@kernel.org>2025-09-22 13:26:16 +0100
commitda9e5c04be589524101aac31746902b6803581e4 (patch)
tree50872b7e839e3f43fe1dff01f608f100e9b03e5a
parentarm64: entry: Switch to generic IRQ entry (diff)
downloadlinux-da9e5c04be589524101aac31746902b6803581e4.tar.gz
linux-da9e5c04be589524101aac31746902b6803581e4.zip
arm/syscalls: mark syscall invocation as likely in invoke_syscall
The invoke_syscall() function is overwhelmingly called for valid system call entries. Annotate the main path with likely() to help the compiler generate better branch prediction hints, reducing CPU pipeline stalls due to mispredictions. This is a micro-optimization targeting syscall-heavy workloads [1]. Link: https://lore.kernel.org/r/20250922121730.986761-1-pengcan@kylinos.cn [1] Signed-off-by: Can Peng <pengcan@kylinos.cn> Signed-off-by: Will Deacon <will@kernel.org>
-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 c442fcec6b9e..aba7ca6bca2d 100644
--- a/arch/arm64/kernel/syscall.c
+++ b/arch/arm64/kernel/syscall.c
@@ -43,7 +43,7 @@ static void invoke_syscall(struct pt_regs *regs, unsigned int scno,
add_random_kstack_offset();
- if (scno < sc_nr) {
+ if (likely(scno < sc_nr)) {
syscall_fn_t syscall_fn;
syscall_fn = syscall_table[array_index_nospec(scno, sc_nr)];
ret = __invoke_syscall(regs, syscall_fn);