Thread (22 messages) 22 messages, 3 authors, 2024-11-21

Re: [PATCH RFT 00/16] perf tools: Use generic syscall scripts for all archs

From: Ian Rogers <irogers@google.com>
Date: 2024-11-04 22:03:40
Also in: bpf, linux-arm-kernel, linux-doc, linux-perf-users, linux-riscv, lkml

On Mon, Nov 4, 2024 at 1:32 PM Charlie Jenkins [off-list ref] wrote:
On Mon, Nov 04, 2024 at 10:13:18PM +0100, Arnd Bergmann wrote:
quoted
On Mon, Nov 4, 2024, at 22:06, Charlie Jenkins wrote:
quoted
Standardize the generation of syscall headers around syscall tables.
Previously each architecture independently selected how syscall headers
would be generated, or would not define a way and fallback onto
libaudit. Convert all architectures to use a standard syscall header
generation script and allow each architecture to override the syscall
table to use if they do not use the generic table.

As a result of these changes, no architecture will require libaudit, and
so the fallback case of using libaudit is removed by this series.

Testing:

I have tested that the syscall mappings of id to name generation works
as expected for every architecture, but I have only validated that perf
trace compiles and runs as expected on riscv, arm64, and x86_64.

Signed-off-by: Charlie Jenkins <redacted>
Thanks for doing this, I had plans to do this myself, but hadn't
completed that bit so far. I'm travelling at the moment, so I'm
not sure I have time to look at it in enough detail this week.

One problem I ran into doing this previously was the incompatible
format of the tables for x86 and s390, which have conflicting
interpretations of what the '-' character means. It's possible
that this is only really relevant for the in-kernel table,
not the version in tools.
I don't think that is an issue for this usecase because the only
information that is taken from the syscall table is the number and the
name of the syscall. '-' doesn't appear in either of these columns!
This is cool stuff. An area that may not be immediately apparent for
improvement is that the x86-64 build only has access to the 64-bit
syscall table. Perhaps all the syscall tables should always be built
and then at runtime the architecture of the perf.data file, etc. used
to choose the appropriate one. The cleanup to add an ELF host #define
could help with this:
https://lore.kernel.org/linux-perf-users/20241017002520.59124-1-irogers@google.com/ (local)

Ultimately I'd like to see less arch code as it inherently makes cross
platform worker harder. That doesn't impact this work which I'm happy
to review.

Thanks,
Ian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help