[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <f950fe96-34d3-4631-b04d-4a1584f4c2f1@linaro.org>
Date: Mon, 14 Apr 2025 17:28:36 +0100
From: James Clark <james.clark@...aro.org>
To: Namhyung Kim <namhyung@...nel.org>, Arnd Bergmann <arnd@...aro.org>
Cc: Jiri Olsa <jolsa@...nel.org>, Adrian Hunter <adrian.hunter@...el.com>,
Peter Zijlstra <peterz@...radead.org>, Ingo Molnar <mingo@...nel.org>,
LKML <linux-kernel@...r.kernel.org>, linux-perf-users@...r.kernel.org,
linux-arch@...r.kernel.org, Arnaldo Carvalho de Melo <acme@...nel.org>,
Ian Rogers <irogers@...gle.com>, Kan Liang <kan.liang@...ux.intel.com>
Subject: Re: [PATCH 05/10] tools headers: Update the syscall table with the
kernel sources
On 10/04/2025 1:11 am, Namhyung Kim wrote:
> To pick up the changes in:
>
> c4a16820d9019940 fs: add open_tree_attr()
> 2df1ad0d25803399 x86/arch_prctl: Simplify sys_arch_prctl()
> e632bca07c8eef1d arm64: generate 64-bit syscall.tbl
>
> This is basically to support the new open_tree_attr syscall. But it
> also needs to update asm-generic unistd.h header to get the new syscall
> number. And arm64 unistd.h header was converted to use the generic
> 64-bit header.
>
> Addressing this perf tools build warning:
>
> Warning: Kernel ABI header differences:
> diff -u tools/scripts/syscall.tbl scripts/syscall.tbl
> diff -u tools/perf/arch/x86/entry/syscalls/syscall_32.tbl arch/x86/entry/syscalls/syscall_32.tbl
> diff -u tools/perf/arch/x86/entry/syscalls/syscall_64.tbl arch/x86/entry/syscalls/syscall_64.tbl
> diff -u tools/perf/arch/powerpc/entry/syscalls/syscall.tbl arch/powerpc/kernel/syscalls/syscall.tbl
> diff -u tools/perf/arch/s390/entry/syscalls/syscall.tbl arch/s390/kernel/syscalls/syscall.tbl
> diff -u tools/perf/arch/mips/entry/syscalls/syscall_n64.tbl arch/mips/kernel/syscalls/syscall_n64.tbl
> diff -u tools/perf/arch/arm/entry/syscalls/syscall.tbl arch/arm/tools/syscall.tbl
> diff -u tools/perf/arch/sh/entry/syscalls/syscall.tbl arch/sh/kernel/syscalls/syscall.tbl
> diff -u tools/perf/arch/sparc/entry/syscalls/syscall.tbl arch/sparc/kernel/syscalls/syscall.tbl
> diff -u tools/perf/arch/xtensa/entry/syscalls/syscall.tbl arch/xtensa/kernel/syscalls/syscall.tbl
> diff -u tools/arch/arm64/include/uapi/asm/unistd.h arch/arm64/include/uapi/asm/unistd.h
> diff -u tools/include/uapi/asm-generic/unistd.h include/uapi/asm-generic/unistd.h
>
> Please see tools/include/uapi/README for further details.
>
> Cc: linux-arch@...r.kernel.org
> Signed-off-by: Namhyung Kim <namhyung@...nel.org>
> ---
> tools/arch/arm64/include/uapi/asm/unistd.h | 24 +------------------
> tools/include/uapi/asm-generic/unistd.h | 4 +++-
> .../perf/arch/arm/entry/syscalls/syscall.tbl | 1 +
> .../arch/mips/entry/syscalls/syscall_n64.tbl | 1 +
> .../arch/powerpc/entry/syscalls/syscall.tbl | 1 +
> .../perf/arch/s390/entry/syscalls/syscall.tbl | 1 +
> tools/perf/arch/sh/entry/syscalls/syscall.tbl | 1 +
> .../arch/sparc/entry/syscalls/syscall.tbl | 1 +
> .../arch/x86/entry/syscalls/syscall_32.tbl | 3 ++-
> .../arch/x86/entry/syscalls/syscall_64.tbl | 1 +
> .../arch/xtensa/entry/syscalls/syscall.tbl | 1 +
> tools/scripts/syscall.tbl | 1 +
> 12 files changed, 15 insertions(+), 25 deletions(-)
>
> diff --git a/tools/arch/arm64/include/uapi/asm/unistd.h b/tools/arch/arm64/include/uapi/asm/unistd.h
> index 9306726337fe005e..df36f23876e863ff 100644
> --- a/tools/arch/arm64/include/uapi/asm/unistd.h
> +++ b/tools/arch/arm64/include/uapi/asm/unistd.h
> @@ -1,24 +1,2 @@
> /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
> -/*
> - * Copyright (C) 2012 ARM Ltd.
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 as
> - * published by the Free Software Foundation.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> - * GNU General Public License for more details.
> - *
> - * You should have received a copy of the GNU General Public License
> - * along with this program. If not, see <http://www.gnu.org/licenses/>.
> - */
> -
> -#define __ARCH_WANT_RENAMEAT
> -#define __ARCH_WANT_NEW_STAT
> -#define __ARCH_WANT_SET_GET_RLIMIT
> -#define __ARCH_WANT_TIME32_SYSCALLS
> -#define __ARCH_WANT_MEMFD_SECRET
> -
> -#include <asm-generic/unistd.h>
> +#include <asm/unistd_64.h>
Hi Namhyung,
Since we're not including the generic syscalls here anymore we now need
to generate the syscall header file for the Perf build to work (build
error pasted at the end for reference).
I had a go at adding the rule for it, but I saw that we'd need to pull
in quite a bit from the kernel so it was blurring the lines about the
separation of the tools/ folder. For example this file has the arm64 defs:
arch/arm64/kernel/Makefile.syscalls
To make this common part of the makefile work:
scripts/Makefile.asm-headers
Maybe we can just copy or reimplement Makefile.syscalls, but I'm not
even sure if Makefile.asm-headers will work with the tools/ build
structure so maybe that has to be re-implemented too. Adding Arnd to see
what he thinks.
As far as I can tell this is a separate issue to the work that Charlie
and Ian did recently to build all arch's syscall numbers into Perf to
use for reporting, as this is requires a single header for the build.
Thanks
James
---
In file included from /usr/include/aarch64-linux-gnu/sys/syscall.h:24,
from evsel.c:4:
/home/jamcla02/workspace/linux/linux/tools/arch/arm64/include/uapi/asm/unistd.h:2:10:
fatal error: asm/unistd_64.h: No such file or directory
2 | #include <asm/unistd_64.h>
| ^~~~~~~~~~~~~~~~~
Powered by blists - more mailing lists