mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Arnd Bergmann" <arnd@arndb.de>
To: "André Almeida" <andrealmeid@igalia.com>,
	"Masami Hiramatsu" <mhiramat@kernel.org>
Cc: "Christian Brauner" <brauner@kernel.org>,
	linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org,
	kernel-dev@igalia.com,
	"Thomas Bogendoerfer" <tsbogend@alpha.franken.de>,
	linux-alpha@vger.kernel.org, linux-s390@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, soc@lists.linux.dev,
	linux-mips@vger.kernel.org, sparclinux@vger.kernel.org
Subject: Re: [PATCH v7 04/13] arm: Use the common syscall table
Date: Fri, 18 Sep 2026 08:22:24 +0200	[thread overview]
Message-ID: <4fa47186-08b3-4b2a-bbcc-16b14a50ee21@app.fastmail.com> (raw)
In-Reply-To: <20260917-tonyk-syscall_table-v7-4-f4cd8f8e3265@igalia.com>

On Fri, Sep 18, 2026, at 01:46, André Almeida wrote:
> Remove some of the duplicated code by using the common syscall number
> table.
>
> Signed-off-by: André Almeida <andrealmeid@igalia.com>
> ---
> Changes from v6:
> - Added back syscalls from 403 to 423 to local table. arm32 can't use the
> common table for those syscalls, because arm doesn't implements compat_
> entry points for syscalls like pselect6, ppoll, etc., and OABI uses compat_
> entry points when it's available, so this would cause a build error.

That's too bad, especially if this is only needed for OABI, which
nobody should be using any more. I had hoped we could kill off OABI
soonish, but that is currently blocked on the discussion about keeping
RiscPC alive.

One possible idea would be to rework the table to differentiate
the cases using separate ABI tags for the three cases (EABI native,
OABI native, OABI on EABI), instead of using the compat column:

--- a/arch/arm/tools/syscall.tbl
+++ b/arch/arm/tools/syscall.tbl
@@ -115,7 +115,8 @@
 99     common  statfs                  sys_statfs
 100    common  fstatfs                 sys_fstatfs
 # 101 was sys_ioperm
-102    oabi    socketcall              sys_socketcall          sys_oabi_socketcall
+102    oabi    socketcall              sys_socketcall
+102    oabic   socketcall              sys_oabi_socketcall
 103    common  syslog                  sys_syslog
 104    common  setitimer               sys_setitimer
 105    common  getitimer               sys_getitimer
@@ -131,7 +132,8 @@
 114    common  wait4                   sys_wait4
 115    common  swapoff                 sys_swapoff
 116    common  sysinfo                 sys_sysinfo
-117    oabi    ipc                     sys_ipc                 sys_oabi_ipc
+117    oabi    ipc                     sys_ipc
+117    oabic   ipc                     sys_oabi_ipc
 118    common  fsync                   sys_fsync
 119    common  sigreturn               sys_sigreturn_wrapper
 120    common  clone                   sys_clone
@@ -194,8 +196,12 @@
 177    common  rt_sigtimedwait         sys_rt_sigtimedwait_time32
 178    common  rt_sigqueueinfo         sys_rt_sigqueueinfo
 179    common  rt_sigsuspend           sys_rt_sigsuspend
-180    common  pread64                 sys_pread64             sys_oabi_pread64
-181    common  pwrite64                sys_pwrite64            sys_oabi_pwrite64
+180    eabi    pread64                 sys_pread64
+180    oabi    pread64                 sys_pread64
+180    oabic   pread64                 sys_oabi_pread64
+181    eabi    pwrite64                sys_pwrite64
+181    oabi    pwrite64                sys_pwrite64
+181    oabic   pwrite64                sys_oabi_pwrite64
 182    common  chown                   sys_chown16
 183    common  getcwd                  sys_getcwd
 184    common  capget                  sys_capget
...


Not great, but it has the additional advantage of finally being able
to share the table file with the arm64 copy.

Another idea would be to actually add the six compat_sys_
entry points for OABI from the common table, or redirect
them like

diff --git a/arch/arm/include/asm/unistd.h b/arch/arm/include/asm/unistd.h
index 9fb00973c608..1ff4b6579ba1 100644
--- a/arch/arm/include/asm/unistd.h
+++ b/arch/arm/include/asm/unistd.h
@@ -33,6 +33,15 @@
 #define __ARCH_WANT_SYS_OLD_GETRLIMIT
 #define __ARCH_WANT_OLD_READDIR
 #define __ARCH_WANT_SYS_SOCKETCALL
+
+/* allow using compat column from shared syscall table */
+#define compat_sys_pselect6_time64 sys_pselect6_time64
+#define compat_sys_ppoll_time64 sys_ppoll_time64
+#define compat_sys_io_pgetevents_time64 sys_io_pgetevents_time64
+#define compat_sys_recvmmsg_time64 sys_recvmmsg_time64
+#define compat_sys_rt_sigtimedwait_time64 sys_rt_sigtimedwait_time64
+#define compat_sys_epoll_pwait2 sys_epoll_pwait2
+
 #endif
 #define __ARCH_WANT_SYS_FORK
 #define __ARCH_WANT_SYS_VFORK

This would be the least invasive here, but also the least intuitive.

        Arnd

  reply	other threads:[~2026-09-18  6:22 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-17 23:46 [PATCH v7 00/13] syscalls: Add a shared table for all archs André Almeida
2026-09-17 23:46 ` [PATCH v7 01/13] syscalls: Make --abis parsing more robust André Almeida
2026-09-17 23:46 ` [PATCH v7 02/13] syscalls: Create unified partial table for all archs André Almeida
2026-09-17 23:46 ` [PATCH v7 03/13] scripts/syscall.tbl: Use the common table André Almeida
2026-09-18  6:34   ` Arnd Bergmann
2026-09-18 19:58     ` André Almeida
2026-09-17 23:46 ` [PATCH v7 04/13] arm: Use the common syscall table André Almeida
2026-09-18  6:22   ` Arnd Bergmann [this message]
2026-09-18 20:10     ` André Almeida
2026-09-17 23:46 ` [PATCH v7 05/13] s390: " André Almeida
2026-09-17 23:46 ` [PATCH v7 06/13] sparc: " André Almeida
2026-09-17 23:46 ` [PATCH v7 07/13] mips: Remove duplicated syscallnr.sh André Almeida
2026-09-17 23:46 ` [PATCH v7 08/13] mips: Get rid of custom mips ABIs for syscall tables André Almeida
2026-09-17 23:46 ` [PATCH v7 09/13] mips: Use the common syscall table André Almeida
2026-09-18  6:56   ` Arnd Bergmann
2026-09-17 23:46 ` [PATCH v7 10/13] syscalls: Add an option for offsetting the common table André Almeida
2026-09-17 23:46 ` [PATCH v7 11/13] alpha: Define entry point for set_mempolicy_home_node syscall André Almeida
2026-09-18 11:36   ` Magnus Lindholm
2026-09-17 23:46 ` [PATCH v7 12/13] alpha: Remove alpha_ prefix from custom syscall entries André Almeida
2026-09-18 10:54   ` Magnus Lindholm
2026-09-18 20:11     ` André Almeida
2026-09-17 23:46 ` [PATCH v7 13/13] alpha: Use the common syscall table André Almeida
2026-09-18 10:57   ` Magnus Lindholm

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4fa47186-08b3-4b2a-bbcc-16b14a50ee21@app.fastmail.com \
    --to=arnd@arndb.de \
    --cc=andrealmeid@igalia.com \
    --cc=brauner@kernel.org \
    --cc=kernel-dev@igalia.com \
    --cc=linux-alpha@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=soc@lists.linux.dev \
    --cc=sparclinux@vger.kernel.org \
    --cc=tsbogend@alpha.franken.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®