Re: [PATCH v6 00/13] syscalls: Add a shared table for all archs
flat view
From: "Arnd Bergmann" <arnd@arndb.de>
Date: 2026-09-15 07:46:38
Also in:
linux-alpha, linux-kbuild, linux-mips, linux-s390, lkml, sparclinux
Subsystem:
mips, the rest · Maintainers:
Thomas Bogendoerfer, Linus Torvalds
On Sat, Aug 29, 2026, at 01:19, André Almeida wrote:
While implementing a new syscall, we need to wire up it's number to the arch
table. Since syscall number 403, all architectures are on sync regarding the
number (except alpha), which make things a lot easier but more repetitive as
well. Have a look at commit b36d4b6aa88 ("arch: hookup listns() system call"),
with 15 lines of mostly:
+470 common listns sys_listns
There's already a "common" table shared with a bunch of archs at
`scripts/syscall.tbl`, but due to historical reasons some archs will never be
able to move to this table and share all the numbers.
The generic table starts from 403 (clock_gettime64), the first common syscall.
I've compile tested for arm32, arm64, s390, mips, sparc and alpha by comparing
the syscalls_*.h and unistd_*.h files generated before and after this patchset.
For most of cases the files are identical, for the few cases that they are not,
there's a note in the commit explaining why they are equivalent.
I've tried merging these for the asm-generic tree now, and would like to
send them for 7.4.
Unfortunately, the build bot flagged problems on mips, see the patch below
for my workarounds=, but I think we have to improve that still and didn't
just fold it into your patch.
As you took out the dependencies on the syscall_*.tbl files, the
output does not get rebuilt if changes are made to the table, and I
have not come up with a good solution for mips. My hack just adds both
input files to all outputs, which works but is not technically correct.
The rt_sigtimedwait and ustat entries had a typo that caused a link
error, but I did not check if there were any additional mistakes that
caused incorrect output data without causing a link failure.
Arnd
diff --git a/arch/mips/kernel/syscalls/Makefile b/arch/mips/kernel/syscalls/Makefile
index aaa5443ea906..51b9939ecff0 100644
--- a/arch/mips/kernel/syscalls/Makefile
+++ b/arch/mips/kernel/syscalls/Makefile@@ -40,10 +40,10 @@ src_n32 := $(src)/syscall_n.tbl src_n64 := $(src)/syscall_n.tbl src_o32 := $(src)/syscall_o32.tbl -$(kapi)/unistd_nr_%.h: $(systbl_common) $(sysnr) FORCE +$(kapi)/unistd_nr_%.h: $(src_o32) $(src_n64) $(systbl_common) $(sysnr) FORCE $(call if_changed,sysnr) -$(kapi)/syscall_table_%.h: $(systbl) $(systbl_common) FORCE +$(kapi)/syscall_table_%.h: $(src_o32) $(src_n64) $(systbl) $(systbl_common) FORCE $(call if_changed,systbl) uapisyshdr-y += unistd_n32.h \
diff --git a/arch/mips/kernel/syscalls/syscall_n.tbl b/arch/mips/kernel/syscalls/syscall_n.tbl
index e3d278f715b7..84c35c1f0c3e 100644
--- a/arch/mips/kernel/syscalls/syscall_n.tbl
+++ b/arch/mips/kernel/syscalls/syscall_n.tbl@@ -133,14 +133,14 @@ 123 common capget sys_capget 124 common capset sys_capset 125 common rt_sigpending sys_rt_sigpending compat_sys_rt_sigpending -126 common rt_sigtimedwait sys_rt_sigtimedwait_time compat_sys_rt_sigtimedwait_time32 +126 common rt_sigtimedwait sys_rt_sigtimedwait compat_sys_rt_sigtimedwait_time32 127 common rt_sigqueueinfo sys_rt_sigqueueinfo compat_sys_rt_sigqueueinfo 128 common rt_sigsuspend sys_rt_sigsuspend compat_sys_rt_sigsuspend 129 common sigaltstack sys_sigaltstack compat_sys_sigaltstack 130 common utime sys_utime sys_utime32 131 common mknod sys_mknod 132 common personality sys_personality sys_32_personality -133 common ustat sys_usta compat_sys_usta +133 common ustat sys_ustat compat_sys_ustat 134 common statfs sys_statfs compat_sys_statfs 135 common fstatfs sys_fstatfs compat_sys_fstatfs 136 common sysfs sys_sysfs