Message ID | 20250108-perf_syscalltbl-v6-0-7543b5293098@rivosinc.com (mailing list archive) |
---|---|
Headers | show |
Series | perf tools: Use generic syscall scripts for all archs | expand |
On Wed, Jan 08, 2025 at 06:36:15PM -0800, Charlie Jenkins wrote: > 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 <charlie@rivosinc.com> > Reviewed-by: Ian Rogers <irogers@google.com> > Tested-by: Ian Rogers <irogers@google.com> > Acked-by: Namhyung Kim <namhyung@kernel.org> > > --- > Changes in v6: > - Use tools/build/Build.include instead of scripts/Kbuild.include > - Link to v5: https://lore.kernel.org/r/20250107-perf_syscalltbl-v5-0-935de46d3175@rivosinc.com Passed these, so far, more tests underway: ⬢ [acme@toolbox perf-tools-next]$ git log --oneline -1 ; time make -C tools/perf build-test d06826160a982494 (HEAD -> perf-tools-next) perf tools: Remove dependency on libaudit make: Entering directory '/home/acme/git/perf-tools-next/tools/perf' - tarpkg: ./tests/perf-targz-src-pkg . make_static: cd . && make LDFLAGS=-static NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 NO_JVMTI=1 NO_LIBTRACEEVENT=1 NO_LIBELF=1 -j28 DESTDIR=/tmp/tmp.JJT3tvN7bV make_with_gtk2: cd . && make GTK2=1 -j28 DESTDIR=/tmp/tmp.BF53V2qpl3 - /home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP: cd . && make FEATURE_DUMP_COPY=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP feature-dump cd . && make FEATURE_DUMP_COPY=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP feature-dump make_no_libbionic_O: cd . && make NO_LIBBIONIC=1 FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.KZuQ0q2Vs6 DESTDIR=/tmp/tmp.0sxMyH91gS make_util_map_o_O: cd . && make util/map.o FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.Y0Mx3KLREI DESTDIR=/tmp/tmp.wg9HCVVLHE make_install_O: cd . && make install FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.P0LEBAkW1X DESTDIR=/tmp/tmp.agTavZndFN failed to find: etc/bash_completion.d/perf make_no_libpython_O: cd . && make NO_LIBPYTHON=1 FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.AQ4uSxhHzq DESTDIR=/tmp/tmp.SyRIMEwTpJ make_refcnt_check_O: cd . && make EXTRA_CFLAGS=-DREFCNT_CHECKING=1 FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.boLQpo3gGR DESTDIR=/tmp/tmp.pvNzMWlMJP > Changes in v5: > - Remove references to HAVE_SYSCALL_TABLE_SUPPORT that were > missed/recently introduced > - Rebase on perf-tools-next > - Install headers to $(OUTPUT)arch instead of $(OUTPUT)tools/perf/arch > - Link to v4: https://lore.kernel.org/r/20241218-perf_syscalltbl-v4-0-bc8caef2ca8e@rivosinc.com > > Changes in v4: > - Remove audit_machine member of syscalltbl struct (Ian) > - Rebase on perf-tools-next > - Link to v3: https://lore.kernel.org/r/20241216-perf_syscalltbl-v3-0-239f032481d5@rivosinc.com > > Changes in v3: > - Fix compiliation when OUTPUT is empty > - Correct unused headers to be .h instead of .c (Namhyung) > - Make variable definition of supported archs (Namhyung) > - Convert += into := for syscalls headers (Namhyung) > - Link to v2: https://lore.kernel.org/r/20241212-perf_syscalltbl-v2-0-f8ca984ffe40@rivosinc.com > > Changes in v2: > - Rebase onto 6.13-rc2 > - Fix output path so it generates to /tools/perf/arch properly > - Link to v1: https://lore.kernel.org/r/20241104-perf_syscalltbl-v1-0-9adae5c761ef@rivosinc.com > > --- > Charlie Jenkins (16): > perf tools: Create generic syscall table support > perf tools: arc: Support generic syscall headers > perf tools: csky: Support generic syscall headers > perf tools: arm: Support syscall headers > perf tools: sh: Support syscall headers > perf tools: sparc: Support syscall headers > perf tools: xtensa: Support syscall header > perf tools: x86: Use generic syscall scripts > perf tools: alpha: Support syscall header > perf tools: parisc: Support syscall header > perf tools: arm64: Use syscall table > perf tools: loongarch: Use syscall table > perf tools: mips: Use generic syscall scripts > perf tools: powerpc: Use generic syscall table scripts > perf tools: s390: Use generic syscall table scripts > perf tools: Remove dependency on libaudit > > Documentation/admin-guide/workload-tracing.rst | 2 +- > tools/build/Build.include | 2 + > tools/build/feature/Makefile | 4 - > tools/build/feature/test-libaudit.c | 11 - > tools/perf/Documentation/perf-check.txt | 2 - > tools/perf/Makefile.config | 39 +- > tools/perf/Makefile.perf | 12 +- > tools/perf/arch/alpha/entry/syscalls/Kbuild | 2 + > .../arch/alpha/entry/syscalls/Makefile.syscalls | 5 + > tools/perf/arch/alpha/entry/syscalls/syscall.tbl | 504 ++++++++++++++++++++ > tools/perf/arch/alpha/include/syscall_table.h | 2 + > tools/perf/arch/arc/entry/syscalls/Kbuild | 2 + > .../perf/arch/arc/entry/syscalls/Makefile.syscalls | 3 + > tools/perf/arch/arc/include/syscall_table.h | 2 + > tools/perf/arch/arm/entry/syscalls/Kbuild | 4 + > .../perf/arch/arm/entry/syscalls/Makefile.syscalls | 2 + > tools/perf/arch/arm/entry/syscalls/syscall.tbl | 483 +++++++++++++++++++ > tools/perf/arch/arm/include/syscall_table.h | 2 + > tools/perf/arch/arm64/Makefile | 22 - > tools/perf/arch/arm64/entry/syscalls/Kbuild | 3 + > .../arch/arm64/entry/syscalls/Makefile.syscalls | 6 + > tools/perf/arch/arm64/entry/syscalls/mksyscalltbl | 46 -- > .../perf/arch/arm64/entry/syscalls/syscall_32.tbl | 476 +++++++++++++++++++ > .../perf/arch/arm64/entry/syscalls/syscall_64.tbl | 1 + > tools/perf/arch/arm64/include/syscall_table.h | 8 + > tools/perf/arch/csky/entry/syscalls/Kbuild | 2 + > .../arch/csky/entry/syscalls/Makefile.syscalls | 3 + > tools/perf/arch/csky/include/syscall_table.h | 2 + > tools/perf/arch/loongarch/Makefile | 22 - > tools/perf/arch/loongarch/entry/syscalls/Kbuild | 2 + > .../loongarch/entry/syscalls/Makefile.syscalls | 3 + > .../arch/loongarch/entry/syscalls/mksyscalltbl | 45 -- > tools/perf/arch/loongarch/include/syscall_table.h | 2 + > tools/perf/arch/mips/entry/syscalls/Kbuild | 2 + > .../arch/mips/entry/syscalls/Makefile.syscalls | 5 + > tools/perf/arch/mips/entry/syscalls/mksyscalltbl | 32 -- > tools/perf/arch/mips/include/syscall_table.h | 2 + > tools/perf/arch/parisc/entry/syscalls/Kbuild | 3 + > .../arch/parisc/entry/syscalls/Makefile.syscalls | 6 + > tools/perf/arch/parisc/entry/syscalls/syscall.tbl | 463 +++++++++++++++++++ > tools/perf/arch/parisc/include/syscall_table.h | 8 + > tools/perf/arch/powerpc/Makefile | 25 - > tools/perf/arch/powerpc/entry/syscalls/Kbuild | 3 + > .../arch/powerpc/entry/syscalls/Makefile.syscalls | 6 + > .../perf/arch/powerpc/entry/syscalls/mksyscalltbl | 39 -- > tools/perf/arch/powerpc/include/syscall_table.h | 8 + > tools/perf/arch/riscv/Makefile | 22 - > tools/perf/arch/riscv/entry/syscalls/Kbuild | 2 + > .../arch/riscv/entry/syscalls/Makefile.syscalls | 4 + > tools/perf/arch/riscv/entry/syscalls/mksyscalltbl | 47 -- > tools/perf/arch/riscv/include/syscall_table.h | 8 + > tools/perf/arch/s390/Makefile | 21 - > tools/perf/arch/s390/entry/syscalls/Kbuild | 2 + > .../arch/s390/entry/syscalls/Makefile.syscalls | 5 + > tools/perf/arch/s390/entry/syscalls/mksyscalltbl | 32 -- > tools/perf/arch/s390/include/syscall_table.h | 2 + > tools/perf/arch/sh/entry/syscalls/Kbuild | 2 + > .../perf/arch/sh/entry/syscalls/Makefile.syscalls | 4 + > tools/perf/arch/sh/entry/syscalls/syscall.tbl | 472 +++++++++++++++++++ > tools/perf/arch/sh/include/syscall_table.h | 2 + > tools/perf/arch/sparc/entry/syscalls/Kbuild | 3 + > .../arch/sparc/entry/syscalls/Makefile.syscalls | 5 + > tools/perf/arch/sparc/entry/syscalls/syscall.tbl | 514 +++++++++++++++++++++ > tools/perf/arch/sparc/include/syscall_table.h | 8 + > tools/perf/arch/x86/Build | 1 - > tools/perf/arch/x86/Makefile | 25 - > tools/perf/arch/x86/entry/syscalls/Kbuild | 3 + > .../perf/arch/x86/entry/syscalls/Makefile.syscalls | 6 + > tools/perf/arch/x86/entry/syscalls/syscalltbl.sh | 42 -- > tools/perf/arch/x86/include/syscall_table.h | 8 + > tools/perf/arch/xtensa/entry/syscalls/Kbuild | 2 + > .../arch/xtensa/entry/syscalls/Makefile.syscalls | 4 + > tools/perf/arch/xtensa/entry/syscalls/syscall.tbl | 439 ++++++++++++++++++ > tools/perf/arch/xtensa/include/syscall_table.h | 2 + > tools/perf/builtin-check.c | 2 - > tools/perf/builtin-help.c | 2 - > tools/perf/builtin-trace.c | 30 -- > tools/perf/check-headers.sh | 9 + > tools/perf/perf.c | 6 +- > tools/perf/scripts/Makefile.syscalls | 61 +++ > tools/perf/scripts/syscalltbl.sh | 86 ++++ > tools/perf/tests/make | 7 +- > tools/perf/util/env.c | 6 +- > tools/perf/util/generate-cmdlist.sh | 4 +- > tools/perf/util/syscalltbl.c | 90 +--- > tools/perf/util/syscalltbl.h | 1 - > tools/scripts/syscall.tbl | 409 ++++++++++++++++ > 87 files changed, 4105 insertions(+), 623 deletions(-) > --- > base-commit: 034b5b147bf7f44a45e39334725f8633b7ca8c3b > change-id: 20240913-perf_syscalltbl-6f98defcc6f5 > -- > - Charlie
On Thu, Jan 09, 2025 at 12:59:43PM -0300, Arnaldo Carvalho de Melo wrote: > On Wed, Jan 08, 2025 at 06:36:15PM -0800, Charlie Jenkins wrote: > > 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 <charlie@rivosinc.com> > > Reviewed-by: Ian Rogers <irogers@google.com> > > Tested-by: Ian Rogers <irogers@google.com> > > Acked-by: Namhyung Kim <namhyung@kernel.org> > > > > --- > > Changes in v6: > > - Use tools/build/Build.include instead of scripts/Kbuild.include > > - Link to v5: https://lore.kernel.org/r/20250107-perf_syscalltbl-v5-0-935de46d3175@rivosinc.com > > Passed these, so far, more tests underway: > > ⬢ [acme@toolbox perf-tools-next]$ git log --oneline -1 ; time make -C tools/perf build-test > d06826160a982494 (HEAD -> perf-tools-next) perf tools: Remove dependency on libaudit > make: Entering directory '/home/acme/git/perf-tools-next/tools/perf' > - tarpkg: ./tests/perf-targz-src-pkg . > make_static: cd . && make LDFLAGS=-static NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 NO_JVMTI=1 NO_LIBTRACEEVENT=1 NO_LIBELF=1 -j28 DESTDIR=/tmp/tmp.JJT3tvN7bV > make_with_gtk2: cd . && make GTK2=1 -j28 DESTDIR=/tmp/tmp.BF53V2qpl3 > - /home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP: cd . && make FEATURE_DUMP_COPY=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP feature-dump > cd . && make FEATURE_DUMP_COPY=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP feature-dump > make_no_libbionic_O: cd . && make NO_LIBBIONIC=1 FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.KZuQ0q2Vs6 DESTDIR=/tmp/tmp.0sxMyH91gS > make_util_map_o_O: cd . && make util/map.o FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.Y0Mx3KLREI DESTDIR=/tmp/tmp.wg9HCVVLHE > make_install_O: cd . && make install FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.P0LEBAkW1X DESTDIR=/tmp/tmp.agTavZndFN > failed to find: etc/bash_completion.d/perf Is this something introduced by this patch? - Charlie > make_no_libpython_O: cd . && make NO_LIBPYTHON=1 FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.AQ4uSxhHzq DESTDIR=/tmp/tmp.SyRIMEwTpJ > make_refcnt_check_O: cd . && make EXTRA_CFLAGS=-DREFCNT_CHECKING=1 FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.boLQpo3gGR DESTDIR=/tmp/tmp.pvNzMWlMJP > > > Changes in v5: > > - Remove references to HAVE_SYSCALL_TABLE_SUPPORT that were > > missed/recently introduced > > - Rebase on perf-tools-next > > - Install headers to $(OUTPUT)arch instead of $(OUTPUT)tools/perf/arch > > - Link to v4: https://lore.kernel.org/r/20241218-perf_syscalltbl-v4-0-bc8caef2ca8e@rivosinc.com > > > > Changes in v4: > > - Remove audit_machine member of syscalltbl struct (Ian) > > - Rebase on perf-tools-next > > - Link to v3: https://lore.kernel.org/r/20241216-perf_syscalltbl-v3-0-239f032481d5@rivosinc.com > > > > Changes in v3: > > - Fix compiliation when OUTPUT is empty > > - Correct unused headers to be .h instead of .c (Namhyung) > > - Make variable definition of supported archs (Namhyung) > > - Convert += into := for syscalls headers (Namhyung) > > - Link to v2: https://lore.kernel.org/r/20241212-perf_syscalltbl-v2-0-f8ca984ffe40@rivosinc.com > > > > Changes in v2: > > - Rebase onto 6.13-rc2 > > - Fix output path so it generates to /tools/perf/arch properly > > - Link to v1: https://lore.kernel.org/r/20241104-perf_syscalltbl-v1-0-9adae5c761ef@rivosinc.com > > > > --- > > Charlie Jenkins (16): > > perf tools: Create generic syscall table support > > perf tools: arc: Support generic syscall headers > > perf tools: csky: Support generic syscall headers > > perf tools: arm: Support syscall headers > > perf tools: sh: Support syscall headers > > perf tools: sparc: Support syscall headers > > perf tools: xtensa: Support syscall header > > perf tools: x86: Use generic syscall scripts > > perf tools: alpha: Support syscall header > > perf tools: parisc: Support syscall header > > perf tools: arm64: Use syscall table > > perf tools: loongarch: Use syscall table > > perf tools: mips: Use generic syscall scripts > > perf tools: powerpc: Use generic syscall table scripts > > perf tools: s390: Use generic syscall table scripts > > perf tools: Remove dependency on libaudit > > > > Documentation/admin-guide/workload-tracing.rst | 2 +- > > tools/build/Build.include | 2 + > > tools/build/feature/Makefile | 4 - > > tools/build/feature/test-libaudit.c | 11 - > > tools/perf/Documentation/perf-check.txt | 2 - > > tools/perf/Makefile.config | 39 +- > > tools/perf/Makefile.perf | 12 +- > > tools/perf/arch/alpha/entry/syscalls/Kbuild | 2 + > > .../arch/alpha/entry/syscalls/Makefile.syscalls | 5 + > > tools/perf/arch/alpha/entry/syscalls/syscall.tbl | 504 ++++++++++++++++++++ > > tools/perf/arch/alpha/include/syscall_table.h | 2 + > > tools/perf/arch/arc/entry/syscalls/Kbuild | 2 + > > .../perf/arch/arc/entry/syscalls/Makefile.syscalls | 3 + > > tools/perf/arch/arc/include/syscall_table.h | 2 + > > tools/perf/arch/arm/entry/syscalls/Kbuild | 4 + > > .../perf/arch/arm/entry/syscalls/Makefile.syscalls | 2 + > > tools/perf/arch/arm/entry/syscalls/syscall.tbl | 483 +++++++++++++++++++ > > tools/perf/arch/arm/include/syscall_table.h | 2 + > > tools/perf/arch/arm64/Makefile | 22 - > > tools/perf/arch/arm64/entry/syscalls/Kbuild | 3 + > > .../arch/arm64/entry/syscalls/Makefile.syscalls | 6 + > > tools/perf/arch/arm64/entry/syscalls/mksyscalltbl | 46 -- > > .../perf/arch/arm64/entry/syscalls/syscall_32.tbl | 476 +++++++++++++++++++ > > .../perf/arch/arm64/entry/syscalls/syscall_64.tbl | 1 + > > tools/perf/arch/arm64/include/syscall_table.h | 8 + > > tools/perf/arch/csky/entry/syscalls/Kbuild | 2 + > > .../arch/csky/entry/syscalls/Makefile.syscalls | 3 + > > tools/perf/arch/csky/include/syscall_table.h | 2 + > > tools/perf/arch/loongarch/Makefile | 22 - /scratch/ewlu/ppa/new-glibc-dumps$ file core._home_ubuntu_glibc_glibc-2_39_build-tree_riscv64-libc_elf_ld_so.1000.a95f9a60-edce-47cf-a6fb-14d3a1705685.58093.1340004> > tools/perf/arch/loongarch/entry/syscalls/Kbuild | 2 + > > .../loongarch/entry/syscalls/Makefile.syscalls | 3 + > > .../arch/loongarch/entry/syscalls/mksyscalltbl | 45 -- > > tools/perf/arch/loongarch/include/syscall_table.h | 2 + > > tools/perf/arch/mips/entry/syscalls/Kbuild | 2 + > > .../arch/mips/entry/syscalls/Makefile.syscalls | 5 + > > tools/perf/arch/mips/entry/syscalls/mksyscalltbl | 32 -- > > tools/perf/arch/mips/include/syscall_table.h | 2 + > > tools/perf/arch/parisc/entry/syscalls/Kbuild | 3 + > > .../arch/parisc/entry/syscalls/Makefile.syscalls | 6 + > > tools/perf/arch/parisc/entry/syscalls/syscall.tbl | 463 +++++++++++++++++++ > > tools/perf/arch/parisc/include/syscall_table.h | 8 + > > tools/perf/arch/powerpc/Makefile | 25 - > > tools/perf/arch/powerpc/entry/syscalls/Kbuild | 3 + > > .../arch/powerpc/entry/syscalls/Makefile.syscalls | 6 + > > .../perf/arch/powerpc/entry/syscalls/mksyscalltbl | 39 -- > > tools/perf/arch/powerpc/include/syscall_table.h | 8 + > > tools/perf/arch/riscv/Makefile | 22 - > > tools/perf/arch/riscv/entry/syscalls/Kbuild | 2 + > > .../arch/riscv/entry/syscalls/Makefile.syscalls | 4 + > > tools/perf/arch/riscv/entry/syscalls/mksyscalltbl | 47 -- > > tools/perf/arch/riscv/include/syscall_table.h | 8 + > > tools/perf/arch/s390/Makefile | 21 - > > tools/perf/arch/s390/entry/syscalls/Kbuild | 2 + > > .../arch/s390/entry/syscalls/Makefile.syscalls | 5 + > > tools/perf/arch/s390/entry/syscalls/mksyscalltbl | 32 -- > > tools/perf/arch/s390/include/syscall_table.h | 2 + > > tools/perf/arch/sh/entry/syscalls/Kbuild | 2 + > > .../perf/arch/sh/entry/syscalls/Makefile.syscalls | 4 + > > tools/perf/arch/sh/entry/syscalls/syscall.tbl | 472 +++++++++++++++++++ > > tools/perf/arch/sh/include/syscall_table.h | 2 + > > tools/perf/arch/sparc/entry/syscalls/Kbuild | 3 + > > .../arch/sparc/entry/syscalls/Makefile.syscalls | 5 + > > tools/perf/arch/sparc/entry/syscalls/syscall.tbl | 514 +++++++++++++++++++++ > > tools/perf/arch/sparc/include/syscall_table.h | 8 + > > tools/perf/arch/x86/Build | 1 - > > tools/perf/arch/x86/Makefile | 25 - > > tools/perf/arch/x86/entry/syscalls/Kbuild | 3 + > > .../perf/arch/x86/entry/syscalls/Makefile.syscalls | 6 + > > tools/perf/arch/x86/entry/syscalls/syscalltbl.sh | 42 -- > > tools/perf/arch/x86/include/syscall_table.h | 8 + > > tools/perf/arch/xtensa/entry/syscalls/Kbuild | 2 + > > .../arch/xtensa/entry/syscalls/Makefile.syscalls | 4 + > > tools/perf/arch/xtensa/entry/syscalls/syscall.tbl | 439 ++++++++++++++++++ > > tools/perf/arch/xtensa/include/syscall_table.h | 2 + > > tools/perf/builtin-check.c | 2 - > > tools/perf/builtin-help.c | 2 - > > tools/perf/builtin-trace.c | 30 -- > > tools/perf/check-headers.sh | 9 + > > tools/perf/perf.c | 6 +- > > tools/perf/scripts/Makefile.syscalls | 61 +++ > > tools/perf/scripts/syscalltbl.sh | 86 ++++ > > tools/perf/tests/make | 7 +- > > tools/perf/util/env.c | 6 +- > > tools/perf/util/generate-cmdlist.sh | 4 +- > > tools/perf/util/syscalltbl.c | 90 +--- > > tools/perf/util/syscalltbl.h | 1 - > > tools/scripts/syscall.tbl | 409 ++++++++++++++++ > > 87 files changed, 4105 insertions(+), 623 deletions(-) > > --- > > base-commit: 034b5b147bf7f44a45e39334725f8633b7ca8c3b > > change-id: 20240913-perf_syscalltbl-6f98defcc6f5 > > -- > > - Charlie
On Thu, Jan 09, 2025 at 11:48:36AM -0800, Charlie Jenkins wrote: > On Thu, Jan 09, 2025 at 12:59:43PM -0300, Arnaldo Carvalho de Melo wrote: > > ⬢ [acme@toolbox perf-tools-next]$ git log --oneline -1 ; time make -C tools/perf build-test > > d06826160a982494 (HEAD -> perf-tools-next) perf tools: Remove dependency on libaudit > > make: Entering directory '/home/acme/git/perf-tools-next/tools/perf' > > - tarpkg: ./tests/perf-targz-src-pkg . > > make_static: cd . && make LDFLAGS=-static NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 NO_JVMTI=1 NO_LIBTRACEEVENT=1 NO_LIBELF=1 -j28 DESTDIR=/tmp/tmp.JJT3tvN7bV > > make_with_gtk2: cd . && make GTK2=1 -j28 DESTDIR=/tmp/tmp.BF53V2qpl3 > > - /home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP: cd . && make FEATURE_DUMP_COPY=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP feature-dump > > cd . && make FEATURE_DUMP_COPY=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP feature-dump > > make_no_libbionic_O: cd . && make NO_LIBBIONIC=1 FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.KZuQ0q2Vs6 DESTDIR=/tmp/tmp.0sxMyH91gS > > make_util_map_o_O: cd . && make util/map.o FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.Y0Mx3KLREI DESTDIR=/tmp/tmp.wg9HCVVLHE > > make_install_O: cd . && make install FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.P0LEBAkW1X DESTDIR=/tmp/tmp.agTavZndFN > > failed to find: etc/bash_completion.d/perf > > Is this something introduced by this patch? I don't think so. BTW this series is already pushed out to perf-tools-next: https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/log/?h=perf-tools-next Thanks! - Arnaldo
On Thu, Jan 09, 2025 at 05:49:39PM -0300, Arnaldo Carvalho de Melo wrote: > On Thu, Jan 09, 2025 at 11:48:36AM -0800, Charlie Jenkins wrote: > > On Thu, Jan 09, 2025 at 12:59:43PM -0300, Arnaldo Carvalho de Melo wrote: > > > ⬢ [acme@toolbox perf-tools-next]$ git log --oneline -1 ; time make -C tools/perf build-test > > > d06826160a982494 (HEAD -> perf-tools-next) perf tools: Remove dependency on libaudit > > > make: Entering directory '/home/acme/git/perf-tools-next/tools/perf' > > > - tarpkg: ./tests/perf-targz-src-pkg . > > > make_static: cd . && make LDFLAGS=-static NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 NO_JVMTI=1 NO_LIBTRACEEVENT=1 NO_LIBELF=1 -j28 DESTDIR=/tmp/tmp.JJT3tvN7bV > > > make_with_gtk2: cd . && make GTK2=1 -j28 DESTDIR=/tmp/tmp.BF53V2qpl3 > > > - /home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP: cd . && make FEATURE_DUMP_COPY=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP feature-dump > > > cd . && make FEATURE_DUMP_COPY=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP feature-dump > > > make_no_libbionic_O: cd . && make NO_LIBBIONIC=1 FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.KZuQ0q2Vs6 DESTDIR=/tmp/tmp.0sxMyH91gS > > > make_util_map_o_O: cd . && make util/map.o FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.Y0Mx3KLREI DESTDIR=/tmp/tmp.wg9HCVVLHE > > > make_install_O: cd . && make install FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.P0LEBAkW1X DESTDIR=/tmp/tmp.agTavZndFN > > > failed to find: etc/bash_completion.d/perf > > > > Is this something introduced by this patch? > > I don't think so. > > BTW this series is already pushed out to perf-tools-next: > > https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/log/?h=perf-tools-next > > Thanks! > > - Arnaldo Thank you! - Charlie
On Thu, Jan 09, 2025 at 05:49:42PM -0300, Arnaldo Carvalho de Melo wrote: > BTW this series is already pushed out to perf-tools-next: > > https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/log/?h=perf-tools-next Hey, now I noticed that with this latest version we see: ⬢ [acme@toolbox perf-tools-next]$ m make: Entering directory '/home/acme/git/perf-tools-next/tools/perf' BUILD: Doing 'make -j28' parallel build Warning: Kernel ABI header differences: diff -u tools/arch/arm64/include/uapi/asm/unistd.h arch/arm64/include/uapi/asm/unistd.h Auto-detecting system features: ... libdw: [ on ] ... glibc: [ on ] ... libbfd: [ on ] ... libbfd-buildid: [ on ] ... libelf: [ on ] ... libnuma: [ on ] ... numa_num_possible_cpus: [ on ] ... libperl: [ on ] ... libpython: [ on ] ... libcrypto: [ on ] ... libunwind: [ on ] ... libcapstone: [ on ] ... llvm-perf: [ on ] ... zlib: [ on ] ... lzma: [ on ] ... get_cpuid: [ on ] ... bpf: [ on ] ... libaio: [ on ] ... libzstd: [ on ] /home/acme/git/perf-tools-next/tools/perf/scripts/syscalltbl.sh --abis common,32,i386 /home/acme/git/perf-tools-next/tools/perf/arch/x86/entry/syscalls/syscall_32.tbl /tmp/build/perf-tools-next/arch/x86/include/generated/asm/syscalls_32.h /home/acme/git/perf-tools-next/tools/perf/scripts/syscalltbl.sh --abis common,64 /home/acme/git/perf-tools-next/tools/perf/arch/x86/entry/syscalls/syscall_64.tbl /tmp/build/perf-tools-next/arch/x86/include/generated/asm/syscalls_64.h GEN /tmp/build/perf-tools-next/common-cmds.h GEN /tmp/build/perf-tools-next/arch/arm64/include/generated/asm/sysreg-defs.h PERF_VERSION = 6.13.rc2.gd73982c39183 GEN perf-archive GEN perf-iostat MKDIR /tmp/build/perf-tools-next/jvmti/ MKDIR /tmp/build/perf-tools-next/jvmti/ MKDIR /tmp/build/perf-tools-next/jvmti/ MKDIR /tmp/build/perf-tools-next/jvmti/ While with the previous one we would see something like SYSCALLTBL as the step name, like we have GEN, MKDIR, etc, can you take a look? All is out there in perf-tools-next. - Arnaldo
On Thu, Jan 09, 2025 at 06:51:06PM -0300, Arnaldo Carvalho de Melo wrote: > On Thu, Jan 09, 2025 at 05:49:42PM -0300, Arnaldo Carvalho de Melo wrote: > > BTW this series is already pushed out to perf-tools-next: > > > > https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/log/?h=perf-tools-next > > Hey, now I noticed that with this latest version we see: > > ⬢ [acme@toolbox perf-tools-next]$ m > make: Entering directory '/home/acme/git/perf-tools-next/tools/perf' > BUILD: Doing 'make -j28' parallel build > Warning: Kernel ABI header differences: > diff -u tools/arch/arm64/include/uapi/asm/unistd.h arch/arm64/include/uapi/asm/unistd.h > > Auto-detecting system features: > ... libdw: [ on ] > ... glibc: [ on ] > ... libbfd: [ on ] > ... libbfd-buildid: [ on ] > ... libelf: [ on ] > ... libnuma: [ on ] > ... numa_num_possible_cpus: [ on ] > ... libperl: [ on ] > ... libpython: [ on ] > ... libcrypto: [ on ] > ... libunwind: [ on ] > ... libcapstone: [ on ] > ... llvm-perf: [ on ] > ... zlib: [ on ] > ... lzma: [ on ] > ... get_cpuid: [ on ] > ... bpf: [ on ] > ... libaio: [ on ] > ... libzstd: [ on ] > > /home/acme/git/perf-tools-next/tools/perf/scripts/syscalltbl.sh --abis common,32,i386 /home/acme/git/perf-tools-next/tools/perf/arch/x86/entry/syscalls/syscall_32.tbl /tmp/build/perf-tools-next/arch/x86/include/generated/asm/syscalls_32.h > /home/acme/git/perf-tools-next/tools/perf/scripts/syscalltbl.sh --abis common,64 /home/acme/git/perf-tools-next/tools/perf/arch/x86/entry/syscalls/syscall_64.tbl /tmp/build/perf-tools-next/arch/x86/include/generated/asm/syscalls_64.h > GEN /tmp/build/perf-tools-next/common-cmds.h > GEN /tmp/build/perf-tools-next/arch/arm64/include/generated/asm/sysreg-defs.h > PERF_VERSION = 6.13.rc2.gd73982c39183 > GEN perf-archive > GEN perf-iostat > MKDIR /tmp/build/perf-tools-next/jvmti/ > MKDIR /tmp/build/perf-tools-next/jvmti/ > MKDIR /tmp/build/perf-tools-next/jvmti/ > MKDIR /tmp/build/perf-tools-next/jvmti/ > > > While with the previous one we would see something like SYSCALLTBL as > the step name, like we have GEN, MKDIR, etc, can you take a look? Ooh okay I see, the quiet commands were being ignored as-is. We could add the lines to handle this to Makefile.syscalls, but I think the better solution is to move the lines from Makefile.build to Makefile.perf to be more generically available. Here is a patch for that. I also added the comment from the kernel Makefile describing what this does. From 8dcec7f5d937ede3d33c687573dc2f1654ddc59e Mon Sep 17 00:00:00 2001 From: Charlie Jenkins <charlie@rivosinc.com> Date: Thu, 9 Jan 2025 14:36:40 -0800 Subject: [PATCH] perf tools: Expose quiet/verbose variables in Makefile.perf The variables to make builds silent/verbose live inside tools/build/Makefile.build. Move those variables to the top-level Makefile.perf to be generally available. Signed-off-by: Charlie Jenkins <charlie@rivosinc.com> --- tools/build/Makefile.build | 20 -------------------- tools/perf/Makefile.perf | 37 ++++++++++++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 21 deletions(-) diff --git a/tools/build/Makefile.build b/tools/build/Makefile.build index 5fb3fb3d97e0..e710ed67a1b4 100644 --- a/tools/build/Makefile.build +++ b/tools/build/Makefile.build @@ -12,26 +12,6 @@ PHONY := __build __build: -ifeq ($(V),1) - quiet = - Q = -else - quiet=quiet_ - Q=@ -endif - -# If the user is running make -s (silent mode), suppress echoing of commands -# make-4.0 (and later) keep single letter options in the 1st word of MAKEFLAGS. -ifeq ($(filter 3.%,$(MAKE_VERSION)),) -short-opts := $(firstword -$(MAKEFLAGS)) -else -short-opts := $(filter-out --%,$(MAKEFLAGS)) -endif - -ifneq ($(findstring s,$(short-opts)),) - quiet=silent_ -endif - build-dir := $(srctree)/tools/build # Define $(fixdep) for dep-cmd function diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf index a449d0015536..55d6ce9ea52f 100644 --- a/tools/perf/Makefile.perf +++ b/tools/perf/Makefile.perf @@ -161,12 +161,47 @@ export VPATH SOURCE := $(shell ln -sf $(srctree)/tools/perf $(OUTPUT)/source) endif +# Beautify output +# --------------------------------------------------------------------------- +# +# Most of build commands in Kbuild start with "cmd_". You can optionally define +# "quiet_cmd_*". If defined, the short log is printed. Otherwise, no log from +# that command is printed by default. +# +# e.g.) +# quiet_cmd_depmod = DEPMOD $(MODLIB) +# cmd_depmod = $(srctree)/scripts/depmod.sh $(DEPMOD) $(KERNELRELEASE) +# +# A simple variant is to prefix commands with $(Q) - that's useful +# for commands that shall be hidden in non-verbose mode. +# +# $(Q)$(MAKE) $(build)=scripts/basic +# +# To put more focus on warnings, be less verbose as default +# Use 'make V=1' to see the full commands + ifeq ($(V),1) + quiet = Q = else - Q = @ + quiet=quiet_ + Q=@ endif +# If the user is running make -s (silent mode), suppress echoing of commands +# make-4.0 (and later) keep single letter options in the 1st word of MAKEFLAGS. +ifeq ($(filter 3.%,$(MAKE_VERSION)),) +short-opts := $(firstword -$(MAKEFLAGS)) +else +short-opts := $(filter-out --%,$(MAKEFLAGS)) +endif + +ifneq ($(findstring s,$(short-opts)),) + quiet=silent_ +endif + +export quiet Q + # Do not use make's built-in rules # (this improves performance and avoids hard-to-debug behaviour); MAKEFLAGS += -r
> On 10 Jan 2025, at 2:44 AM, Charlie Jenkins <charlie@rivosinc.com> wrote: > > On Thu, Jan 09, 2025 at 05:49:39PM -0300, Arnaldo Carvalho de Melo wrote: >> On Thu, Jan 09, 2025 at 11:48:36AM -0800, Charlie Jenkins wrote: >>> On Thu, Jan 09, 2025 at 12:59:43PM -0300, Arnaldo Carvalho de Melo wrote: >>>> ⬢ [acme@toolbox perf-tools-next]$ git log --oneline -1 ; time make -C tools/perf build-test >>>> d06826160a982494 (HEAD -> perf-tools-next) perf tools: Remove dependency on libaudit >>>> make: Entering directory '/home/acme/git/perf-tools-next/tools/perf' >>>> - tarpkg: ./tests/perf-targz-src-pkg . >>>> make_static: cd . && make LDFLAGS=-static NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 NO_JVMTI=1 NO_LIBTRACEEVENT=1 NO_LIBELF=1 -j28 DESTDIR=/tmp/tmp.JJT3tvN7bV >>>> make_with_gtk2: cd . && make GTK2=1 -j28 DESTDIR=/tmp/tmp.BF53V2qpl3 >>>> - /home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP: cd . && make FEATURE_DUMP_COPY=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP feature-dump >>>> cd . && make FEATURE_DUMP_COPY=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP feature-dump >>>> make_no_libbionic_O: cd . && make NO_LIBBIONIC=1 FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.KZuQ0q2Vs6 DESTDIR=/tmp/tmp.0sxMyH91gS >>>> make_util_map_o_O: cd . && make util/map.o FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.Y0Mx3KLREI DESTDIR=/tmp/tmp.wg9HCVVLHE >>>> make_install_O: cd . && make install FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.P0LEBAkW1X DESTDIR=/tmp/tmp.agTavZndFN >>>> failed to find: etc/bash_completion.d/perf >>> >>> Is this something introduced by this patch? >> >> I don't think so. >> >> BTW this series is already pushed out to perf-tools-next: >> >> https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/log/?h=perf-tools-next >> >> Thanks! >> >> - Arnaldo > > Thank you! > > - Charlie Hi Charlie, Arnaldo While testing the series, I hit compilation issue in powerpc Snippet of logs: CC util/syscalltbl.o In file included from /home/athira/perf-tools-next/tools/perf/arch/powerpc/include/syscall_table.h:5, from util/syscalltbl.c:16: arch/powerpc/include/generated/asm/syscalls_64.h:16:16: error: initialized field overwritten [-Werror=override-init] 16 | [13] = "time", | ^~~~~~ arch/powerpc/include/generated/asm/syscalls_64.h:16:16: note: (near initialization for ‘syscalltbl[13]’) arch/powerpc/include/generated/asm/syscalls_64.h:22:16: error: initialized field overwritten [-Werror=override-init] 22 | [18] = "oldstat", | ^~~~~~~~~ arch/powerpc/include/generated/asm/syscalls_64.h:22:16: note: (near initialization for ‘syscalltbl[18]’) arch/powerpc/include/generated/asm/syscalls_64.h:27:16: error: initialized field overwritten [-Werror=override-init] 27 | [22] = "umount", | ^~~~~~~~ And similar errors is there for few more entries. The reason is that, the generated syscalls file has two entries for each of these failing cases. From arch/powerpc/include/generated/asm/syscalls_64.h created by scrips/syscalltbl.sh 1 static const char *const syscalltbl[] = { 2 [0] = "restart_syscall", 3 [1] = "exit", 4 [2] = "fork", 5 [3] = "read", 6 [4] = "write", 7 [5] = "open", 8 [6] = "close", 9 [7] = "waitpid", 10 [8] = "creat", 11 [9] = "link", 12 [10] = "unlink", 13 [11] = "execve", 14 [12] = "chdir", 15 [13] = "time”, 16 [13] = "time”, 17 [14] = "mknod", 18 [15] = "chmod", 19 [16] = "lchown", 20 [17] = "break", 21 [18] = "oldstat", 22 [18] = "oldstat”, Line number 15 an 16 shows two entries for time. Similarly last two lines for oldstat. This is picked form https://github.com/torvalds/linux/blob/master/tools/perf/arch/powerpc/entry/syscalls/syscall.tbl 13 32 time sys_time32 13 64 time sys_time 18 32 oldstat sys_stat sys_ni_syscall 18 64 oldstat sys_ni_syscall For same nr, two entries are there. In the arch specific version of the script that makes the syscall table, this was handled : https://github.com/torvalds/linux/blob/master/tools/perf/arch/powerpc/entry/syscalls/mksyscalltbl#L28 So we will need change in generic script also. Proposing below change : diff --git a/tools/perf/scripts/syscalltbl.sh b/tools/perf/scripts/syscalltbl.sh index 1ce0d5aa8b50..d66cec10cc2d 100755 --- a/tools/perf/scripts/syscalltbl.sh +++ b/tools/perf/scripts/syscalltbl.sh @@ -75,8 +75,10 @@ max_nr=0 # the params are: nr abi name entry compat # use _ for intentionally unused variables according to SC2034 while read nr _ name _ _; do - emit "$nr" "$name" >> $outfile - max_nr=$nr + if [ "$max_nr" -lt "$nr" ]; then + emit "$nr" "$name" >> $outfile + max_nr=$nr + fi done < $sorted_table rm -f $sorted_table Arnaldo, I see we have this patch series in perf-tools-next. If we need above change as a separate patch, please let me know. Thanks Athira > >
On Fri, Jan 10, 2025 at 12:34:46PM +0530, Athira Rajeev wrote: > > > > On 10 Jan 2025, at 2:44 AM, Charlie Jenkins <charlie@rivosinc.com> wrote: > > > > On Thu, Jan 09, 2025 at 05:49:39PM -0300, Arnaldo Carvalho de Melo wrote: > >> On Thu, Jan 09, 2025 at 11:48:36AM -0800, Charlie Jenkins wrote: > >>> On Thu, Jan 09, 2025 at 12:59:43PM -0300, Arnaldo Carvalho de Melo wrote: > >>>> ⬢ [acme@toolbox perf-tools-next]$ git log --oneline -1 ; time make -C tools/perf build-test > >>>> d06826160a982494 (HEAD -> perf-tools-next) perf tools: Remove dependency on libaudit > >>>> make: Entering directory '/home/acme/git/perf-tools-next/tools/perf' > >>>> - tarpkg: ./tests/perf-targz-src-pkg . > >>>> make_static: cd . && make LDFLAGS=-static NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 NO_JVMTI=1 NO_LIBTRACEEVENT=1 NO_LIBELF=1 -j28 DESTDIR=/tmp/tmp.JJT3tvN7bV > >>>> make_with_gtk2: cd . && make GTK2=1 -j28 DESTDIR=/tmp/tmp.BF53V2qpl3 > >>>> - /home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP: cd . && make FEATURE_DUMP_COPY=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP feature-dump > >>>> cd . && make FEATURE_DUMP_COPY=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP feature-dump > >>>> make_no_libbionic_O: cd . && make NO_LIBBIONIC=1 FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.KZuQ0q2Vs6 DESTDIR=/tmp/tmp.0sxMyH91gS > >>>> make_util_map_o_O: cd . && make util/map.o FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.Y0Mx3KLREI DESTDIR=/tmp/tmp.wg9HCVVLHE > >>>> make_install_O: cd . && make install FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.P0LEBAkW1X DESTDIR=/tmp/tmp.agTavZndFN > >>>> failed to find: etc/bash_completion.d/perf > >>> > >>> Is this something introduced by this patch? > >> > >> I don't think so. > >> > >> BTW this series is already pushed out to perf-tools-next: > >> > >> https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/log/?h=perf-tools-next > >> > >> Thanks! > >> > >> - Arnaldo > > > > Thank you! > > > > - Charlie > > Hi Charlie, Arnaldo > > While testing the series, I hit compilation issue in powerpc > > Snippet of logs: Yeah, Stephen Rothwell noticed it in linux next and Charlie provided a fix, so I squashed it all together and will push it soon: Link: https://lore.kernel.org/r/20250108-perf_syscalltbl-v6-14-7543b5293098@rivosinc.com Link: https://lore.kernel.org/lkml/20250110100505.78d81450@canb.auug.org.au [ Stephen Rothwell noticed on linux-next that the powerpc build for perf was broken and ...] Link: https://lore.kernel.org/lkml/20250109-perf_powerpc_spu-v1-1-c097fc43737e@rivosinc.com [ ... Charlie fixed it up and asked for it to be squashed to avoid breaking bisection. o Thanks for the report! - Arnaldo
On Thu, Jan 09, 2025 at 03:00:59PM -0800, Charlie Jenkins wrote: > On Thu, Jan 09, 2025 at 06:51:06PM -0300, Arnaldo Carvalho de Melo wrote: > > On Thu, Jan 09, 2025 at 05:49:42PM -0300, Arnaldo Carvalho de Melo wrote: > > > BTW this series is already pushed out to perf-tools-next: > > > > > > https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/log/?h=perf-tools-next > > > > Hey, now I noticed that with this latest version we see: > > > > ⬢ [acme@toolbox perf-tools-next]$ m > > make: Entering directory '/home/acme/git/perf-tools-next/tools/perf' > > BUILD: Doing 'make -j28' parallel build > > Warning: Kernel ABI header differences: > > diff -u tools/arch/arm64/include/uapi/asm/unistd.h arch/arm64/include/uapi/asm/unistd.h > > > > Auto-detecting system features: > > ... libdw: [ on ] > > ... glibc: [ on ] > > ... libbfd: [ on ] > > ... libbfd-buildid: [ on ] > > ... libelf: [ on ] > > ... libnuma: [ on ] > > ... numa_num_possible_cpus: [ on ] > > ... libperl: [ on ] > > ... libpython: [ on ] > > ... libcrypto: [ on ] > > ... libunwind: [ on ] > > ... libcapstone: [ on ] > > ... llvm-perf: [ on ] > > ... zlib: [ on ] > > ... lzma: [ on ] > > ... get_cpuid: [ on ] > > ... bpf: [ on ] > > ... libaio: [ on ] > > ... libzstd: [ on ] > > > > /home/acme/git/perf-tools-next/tools/perf/scripts/syscalltbl.sh --abis common,32,i386 /home/acme/git/perf-tools-next/tools/perf/arch/x86/entry/syscalls/syscall_32.tbl /tmp/build/perf-tools-next/arch/x86/include/generated/asm/syscalls_32.h > > /home/acme/git/perf-tools-next/tools/perf/scripts/syscalltbl.sh --abis common,64 /home/acme/git/perf-tools-next/tools/perf/arch/x86/entry/syscalls/syscall_64.tbl /tmp/build/perf-tools-next/arch/x86/include/generated/asm/syscalls_64.h > > GEN /tmp/build/perf-tools-next/common-cmds.h > > GEN /tmp/build/perf-tools-next/arch/arm64/include/generated/asm/sysreg-defs.h > > PERF_VERSION = 6.13.rc2.gd73982c39183 > > GEN perf-archive > > GEN perf-iostat > > MKDIR /tmp/build/perf-tools-next/jvmti/ > > MKDIR /tmp/build/perf-tools-next/jvmti/ > > MKDIR /tmp/build/perf-tools-next/jvmti/ > > MKDIR /tmp/build/perf-tools-next/jvmti/ > > > > > > While with the previous one we would see something like SYSCALLTBL as > > the step name, like we have GEN, MKDIR, etc, can you take a look? > > Ooh okay I see, the quiet commands were being ignored as-is. We could > add the lines to handle this to Makefile.syscalls, but I think the > better solution is to move the lines from Makefile.build to > Makefile.perf to be more generically available. Here is a patch for > that. I also added the comment from the kernel Makefile describing what > this does. > > From 8dcec7f5d937ede3d33c687573dc2f1654ddc59e Mon Sep 17 00:00:00 2001 > From: Charlie Jenkins <charlie@rivosinc.com> > Date: Thu, 9 Jan 2025 14:36:40 -0800 > Subject: [PATCH] perf tools: Expose quiet/verbose variables in Makefile.perf > > The variables to make builds silent/verbose live inside > tools/build/Makefile.build. Move those variables to the top-level > Makefile.perf to be generally available. > > Signed-off-by: Charlie Jenkins <charlie@rivosinc.com> > --- > tools/build/Makefile.build | 20 -------------------- > tools/perf/Makefile.perf | 37 ++++++++++++++++++++++++++++++++++++- > 2 files changed, 36 insertions(+), 21 deletions(-) > > diff --git a/tools/build/Makefile.build b/tools/build/Makefile.build > index 5fb3fb3d97e0..e710ed67a1b4 100644 > --- a/tools/build/Makefile.build > +++ b/tools/build/Makefile.build > @@ -12,26 +12,6 @@ > PHONY := __build > __build: > > -ifeq ($(V),1) > - quiet = > - Q = > -else > - quiet=quiet_ > - Q=@ > -endif > - > -# If the user is running make -s (silent mode), suppress echoing of commands > -# make-4.0 (and later) keep single letter options in the 1st word of MAKEFLAGS. > -ifeq ($(filter 3.%,$(MAKE_VERSION)),) > -short-opts := $(firstword -$(MAKEFLAGS)) > -else > -short-opts := $(filter-out --%,$(MAKEFLAGS)) > -endif > - > -ifneq ($(findstring s,$(short-opts)),) > - quiet=silent_ > -endif > - > build-dir := $(srctree)/tools/build > > # Define $(fixdep) for dep-cmd function > diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf > index a449d0015536..55d6ce9ea52f 100644 > --- a/tools/perf/Makefile.perf > +++ b/tools/perf/Makefile.perf > @@ -161,12 +161,47 @@ export VPATH > SOURCE := $(shell ln -sf $(srctree)/tools/perf $(OUTPUT)/source) > endif > > +# Beautify output > +# --------------------------------------------------------------------------- > +# > +# Most of build commands in Kbuild start with "cmd_". You can optionally define > +# "quiet_cmd_*". If defined, the short log is printed. Otherwise, no log from > +# that command is printed by default. > +# > +# e.g.) > +# quiet_cmd_depmod = DEPMOD $(MODLIB) > +# cmd_depmod = $(srctree)/scripts/depmod.sh $(DEPMOD) $(KERNELRELEASE) > +# > +# A simple variant is to prefix commands with $(Q) - that's useful > +# for commands that shall be hidden in non-verbose mode. > +# > +# $(Q)$(MAKE) $(build)=scripts/basic > +# > +# To put more focus on warnings, be less verbose as default > +# Use 'make V=1' to see the full commands > + > ifeq ($(V),1) > + quiet = > Q = > else > - Q = @ > + quiet=quiet_ > + Q=@ > endif > > +# If the user is running make -s (silent mode), suppress echoing of commands > +# make-4.0 (and later) keep single letter options in the 1st word of MAKEFLAGS. > +ifeq ($(filter 3.%,$(MAKE_VERSION)),) > +short-opts := $(firstword -$(MAKEFLAGS)) > +else > +short-opts := $(filter-out --%,$(MAKEFLAGS)) > +endif > + > +ifneq ($(findstring s,$(short-opts)),) > + quiet=silent_ > +endif > + > +export quiet Q > + > # Do not use make's built-in rules > # (this improves performance and avoids hard-to-debug behaviour); > MAKEFLAGS += -r > -- > 2.34.1 > > > - Charlie Let me know how you want to handle this, I can send this out as a separate patch if that's better. - Charlie > > > > > All is out there in perf-tools-next. > > > > - Arnaldo
> On 10 Jan 2025, at 8:13 PM, Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > > On Fri, Jan 10, 2025 at 12:34:46PM +0530, Athira Rajeev wrote: >> >> >>> On 10 Jan 2025, at 2:44 AM, Charlie Jenkins <charlie@rivosinc.com> wrote: >>> >>> On Thu, Jan 09, 2025 at 05:49:39PM -0300, Arnaldo Carvalho de Melo wrote: >>>> On Thu, Jan 09, 2025 at 11:48:36AM -0800, Charlie Jenkins wrote: >>>>> On Thu, Jan 09, 2025 at 12:59:43PM -0300, Arnaldo Carvalho de Melo wrote: >>>>>> ⬢ [acme@toolbox perf-tools-next]$ git log --oneline -1 ; time make -C tools/perf build-test >>>>>> d06826160a982494 (HEAD -> perf-tools-next) perf tools: Remove dependency on libaudit >>>>>> make: Entering directory '/home/acme/git/perf-tools-next/tools/perf' >>>>>> - tarpkg: ./tests/perf-targz-src-pkg . >>>>>> make_static: cd . && make LDFLAGS=-static NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 NO_JVMTI=1 NO_LIBTRACEEVENT=1 NO_LIBELF=1 -j28 DESTDIR=/tmp/tmp.JJT3tvN7bV >>>>>> make_with_gtk2: cd . && make GTK2=1 -j28 DESTDIR=/tmp/tmp.BF53V2qpl3 >>>>>> - /home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP: cd . && make FEATURE_DUMP_COPY=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP feature-dump >>>>>> cd . && make FEATURE_DUMP_COPY=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP feature-dump >>>>>> make_no_libbionic_O: cd . && make NO_LIBBIONIC=1 FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.KZuQ0q2Vs6 DESTDIR=/tmp/tmp.0sxMyH91gS >>>>>> make_util_map_o_O: cd . && make util/map.o FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.Y0Mx3KLREI DESTDIR=/tmp/tmp.wg9HCVVLHE >>>>>> make_install_O: cd . && make install FEATURES_DUMP=/home/acme/git/perf-tools-next/tools/perf/BUILD_TEST_FEATURE_DUMP -j28 O=/tmp/tmp.P0LEBAkW1X DESTDIR=/tmp/tmp.agTavZndFN >>>>>> failed to find: etc/bash_completion.d/perf >>>>> >>>>> Is this something introduced by this patch? >>>> >>>> I don't think so. >>>> >>>> BTW this series is already pushed out to perf-tools-next: >>>> >>>> https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/log/?h=perf-tools-next >>>> >>>> Thanks! >>>> >>>> - Arnaldo >>> >>> Thank you! >>> >>> - Charlie >> >> Hi Charlie, Arnaldo >> >> While testing the series, I hit compilation issue in powerpc >> >> Snippet of logs: > > Yeah, Stephen Rothwell noticed it in linux next and Charlie provided a > fix, so I squashed it all together and will push it soon: > > Link: https://lore.kernel.org/r/20250108-perf_syscalltbl-v6-14-7543b5293098@rivosinc.com > Link: https://lore.kernel.org/lkml/20250110100505.78d81450@canb.auug.org.au > [ Stephen Rothwell noticed on linux-next that the powerpc build for perf was broken and ...] > Link: https://lore.kernel.org/lkml/20250109-perf_powerpc_spu-v1-1-c097fc43737e@rivosinc.com > [ ... Charlie fixed it up and asked for it to be squashed to avoid breaking bisection. o > > Thanks for the report! > Sure, Thanks Charlie for the fix I tested on latest tmp.perf-tools-next and compiles fine Tested-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com> Thanks Athira > - Arnaldo
On Fri, Jan 10, 2025 at 11:31:01AM -0800, Charlie Jenkins wrote: > On Thu, Jan 09, 2025 at 03:00:59PM -0800, Charlie Jenkins wrote: > > Ooh okay I see, the quiet commands were being ignored as-is. We could > > add the lines to handle this to Makefile.syscalls, but I think the > > better solution is to move the lines from Makefile.build to > > Makefile.perf to be more generically available. Here is a patch for > > that. I also added the comment from the kernel Makefile describing what > > this does. > > From 8dcec7f5d937ede3d33c687573dc2f1654ddc59e Mon Sep 17 00:00:00 2001 > > From: Charlie Jenkins <charlie@rivosinc.com> > > Date: Thu, 9 Jan 2025 14:36:40 -0800 > > Subject: [PATCH] perf tools: Expose quiet/verbose variables in Makefile.perf > > > > The variables to make builds silent/verbose live inside > > tools/build/Makefile.build. Move those variables to the top-level > > Makefile.perf to be generally available. <SNIP applied patch> > Let me know how you want to handle this, I can send this out as a > separate patch if that's better. I used the patch you provided above after hand editing the message before feeding it to 'git am', added these comments: Committer testing: See the SYSCALL lines, now they are consistent with the other operations in other lines: SYSTBL /tmp/build/perf-tools-next/arch/x86/include/generated/asm/syscalls_32.h SYSTBL /tmp/build/perf-tools-next/arch/x86/include/generated/asm/syscalls_64.h GEN /tmp/build/perf-tools-next/common-cmds.h GEN /tmp/build/perf-tools-next/arch/arm64/include/generated/asm/sysreg-defs.h PERF_VERSION = 6.13.rc2.g3d94bb6ed1d0 GEN perf-archive MKDIR /tmp/build/perf-tools-next/jvmti/ MKDIR /tmp/build/perf-tools-next/jvmti/ MKDIR /tmp/build/perf-tools-next/jvmti/ MKDIR /tmp/build/perf-tools-next/jvmti/ GEN perf-iostat CC /tmp/build/perf-tools-next/jvmti/libjvmti.o CC /tmp/build/perf-tools-next/jvmti/jvmti_agent.o Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Charlie Jenkins <charlie@rivosinc.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Thanks, - Arnaldo
On Mon, Jan 13, 2025 at 11:55:05AM -0300, Arnaldo Carvalho de Melo wrote: > On Fri, Jan 10, 2025 at 11:31:01AM -0800, Charlie Jenkins wrote: > > On Thu, Jan 09, 2025 at 03:00:59PM -0800, Charlie Jenkins wrote: > > > Ooh okay I see, the quiet commands were being ignored as-is. We could > > > add the lines to handle this to Makefile.syscalls, but I think the > > > better solution is to move the lines from Makefile.build to > > > Makefile.perf to be more generically available. Here is a patch for > > > that. I also added the comment from the kernel Makefile describing what > > > this does. > > > > From 8dcec7f5d937ede3d33c687573dc2f1654ddc59e Mon Sep 17 00:00:00 2001 > > > From: Charlie Jenkins <charlie@rivosinc.com> > > > Date: Thu, 9 Jan 2025 14:36:40 -0800 > > > Subject: [PATCH] perf tools: Expose quiet/verbose variables in Makefile.perf > > > > > > The variables to make builds silent/verbose live inside > > > tools/build/Makefile.build. Move those variables to the top-level > > > Makefile.perf to be generally available. > > <SNIP applied patch> > > > Let me know how you want to handle this, I can send this out as a > > separate patch if that's better. > > I used the patch you provided above after hand editing the message > before feeding it to 'git am', added these comments: Somehow this is causing some trouble: ⬢ [acme@toolbox perf-tools-next]$ make -C tools/perf build-test make: Entering directory '/home/acme/git/perf-tools-next/tools/perf' - tarpkg: ./tests/perf-targz-src-pkg . /bin/sh: line 1: @make: command not found make[4]: *** [Makefile:27: clean-asm_pure_loop] Error 127 make[3]: *** [Makefile.perf:764: tests-coresight-targets-clean] Error 2 make[2]: *** [Makefile:96: clean] Error 2 make[1]: *** [tests/make:330: make_static] Error 2 make: *** [Makefile:109: build-test] Error 2 make: Leaving directory '/home/acme/git/perf-tools-next/tools/perf' ⬢ [acme@toolbox perf-tools-next]$ Can you please try fixing it as I'm busy now (I'll be on vacation from tomorrow till early February)? This is what I extracted: commit c199fd785d18121ffd0ba5758e23a42ba2984e11 Author: Charlie Jenkins <charlie@rivosinc.com> Date: Mon Jan 13 11:50:55 2025 -0300 perf tools: Expose quiet/verbose variables in Makefile.perf The variables to make builds silent/verbose live inside tools/build/Makefile.build. Move those variables to the top-level Makefile.perf to be generally available. Committer testing: See the SYSCALL lines, now they are consistent with the other operations in other lines: SYSTBL /tmp/build/perf-tools-next/arch/x86/include/generated/asm/syscalls_32.h SYSTBL /tmp/build/perf-tools-next/arch/x86/include/generated/asm/syscalls_64.h GEN /tmp/build/perf-tools-next/common-cmds.h GEN /tmp/build/perf-tools-next/arch/arm64/include/generated/asm/sysreg-defs.h PERF_VERSION = 6.13.rc2.g3d94bb6ed1d0 GEN perf-archive MKDIR /tmp/build/perf-tools-next/jvmti/ MKDIR /tmp/build/perf-tools-next/jvmti/ MKDIR /tmp/build/perf-tools-next/jvmti/ MKDIR /tmp/build/perf-tools-next/jvmti/ GEN perf-iostat CC /tmp/build/perf-tools-next/jvmti/libjvmti.o CC /tmp/build/perf-tools-next/jvmti/jvmti_agent.o Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Charlie Jenkins <charlie@rivosinc.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Christian Brauner <brauner@kernel.org> Cc: Guo Ren <guoren@kernel.org> Cc: Günther Noack <gnoack@google.com> Cc: Ian Rogers <irogers@google.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: James Clark <james.clark@linaro.org> Cc: Jiri Olsa <jolsa@kernel.org> Cc: John Garry <john.g.garry@oracle.com> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Leo Yan <leo.yan@linux.dev> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Mickaël Salaün <mic@digikod.net> Cc: Mike Leach <mike.leach@linaro.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: Paul Walmsley <paul.walmsley@sifive.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Will Deacon <will@kernel.org> Link: http://lore.kernel.org/lkml/None Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> diff --git a/tools/build/Makefile.build b/tools/build/Makefile.build index 5fb3fb3d97e0fd11..e710ed67a1b49d9f 100644 --- a/tools/build/Makefile.build +++ b/tools/build/Makefile.build @@ -12,26 +12,6 @@ PHONY := __build __build: -ifeq ($(V),1) - quiet = - Q = -else - quiet=quiet_ - Q=@ -endif - -# If the user is running make -s (silent mode), suppress echoing of commands -# make-4.0 (and later) keep single letter options in the 1st word of MAKEFLAGS. -ifeq ($(filter 3.%,$(MAKE_VERSION)),) -short-opts := $(firstword -$(MAKEFLAGS)) -else -short-opts := $(filter-out --%,$(MAKEFLAGS)) -endif - -ifneq ($(findstring s,$(short-opts)),) - quiet=silent_ -endif - build-dir := $(srctree)/tools/build # Define $(fixdep) for dep-cmd function diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf index a449d00155364422..55d6ce9ea52fb2a5 100644 --- a/tools/perf/Makefile.perf +++ b/tools/perf/Makefile.perf @@ -161,12 +161,47 @@ export VPATH SOURCE := $(shell ln -sf $(srctree)/tools/perf $(OUTPUT)/source) endif +# Beautify output +# --------------------------------------------------------------------------- +# +# Most of build commands in Kbuild start with "cmd_". You can optionally define +# "quiet_cmd_*". If defined, the short log is printed. Otherwise, no log from +# that command is printed by default. +# +# e.g.) +# quiet_cmd_depmod = DEPMOD $(MODLIB) +# cmd_depmod = $(srctree)/scripts/depmod.sh $(DEPMOD) $(KERNELRELEASE) +# +# A simple variant is to prefix commands with $(Q) - that's useful +# for commands that shall be hidden in non-verbose mode. +# +# $(Q)$(MAKE) $(build)=scripts/basic +# +# To put more focus on warnings, be less verbose as default +# Use 'make V=1' to see the full commands + ifeq ($(V),1) + quiet = Q = else - Q = @ + quiet=quiet_ + Q=@ endif +# If the user is running make -s (silent mode), suppress echoing of commands +# make-4.0 (and later) keep single letter options in the 1st word of MAKEFLAGS. +ifeq ($(filter 3.%,$(MAKE_VERSION)),) +short-opts := $(firstword -$(MAKEFLAGS)) +else +short-opts := $(filter-out --%,$(MAKEFLAGS)) +endif + +ifneq ($(findstring s,$(short-opts)),) + quiet=silent_ +endif + +export quiet Q + # Do not use make's built-in rules # (this improves performance and avoids hard-to-debug behaviour); MAKEFLAGS += -r
On Tue, Jan 14, 2025 at 02:58:26PM -0300, Arnaldo Carvalho de Melo wrote: > On Mon, Jan 13, 2025 at 11:55:05AM -0300, Arnaldo Carvalho de Melo wrote: > > On Fri, Jan 10, 2025 at 11:31:01AM -0800, Charlie Jenkins wrote: > > > On Thu, Jan 09, 2025 at 03:00:59PM -0800, Charlie Jenkins wrote: > > > > Ooh okay I see, the quiet commands were being ignored as-is. We could > > > > add the lines to handle this to Makefile.syscalls, but I think the > > > > better solution is to move the lines from Makefile.build to > > > > Makefile.perf to be more generically available. Here is a patch for > > > > that. I also added the comment from the kernel Makefile describing what > > > > this does. > > > > > > From 8dcec7f5d937ede3d33c687573dc2f1654ddc59e Mon Sep 17 00:00:00 2001 > > > > From: Charlie Jenkins <charlie@rivosinc.com> > > > > Date: Thu, 9 Jan 2025 14:36:40 -0800 > > > > Subject: [PATCH] perf tools: Expose quiet/verbose variables in Makefile.perf > > > > > > > > The variables to make builds silent/verbose live inside > > > > tools/build/Makefile.build. Move those variables to the top-level > > > > Makefile.perf to be generally available. > > > > <SNIP applied patch> > > > > > Let me know how you want to handle this, I can send this out as a > > > separate patch if that's better. > > > > I used the patch you provided above after hand editing the message > > before feeding it to 'git am', added these comments: > > Somehow this is causing some trouble: > > ⬢ [acme@toolbox perf-tools-next]$ make -C tools/perf build-test > make: Entering directory '/home/acme/git/perf-tools-next/tools/perf' > - tarpkg: ./tests/perf-targz-src-pkg . > /bin/sh: line 1: @make: command not found > make[4]: *** [Makefile:27: clean-asm_pure_loop] Error 127 > make[3]: *** [Makefile.perf:764: tests-coresight-targets-clean] Error 2 > make[2]: *** [Makefile:96: clean] Error 2 > make[1]: *** [tests/make:330: make_static] Error 2 > make: *** [Makefile:109: build-test] Error 2 > make: Leaving directory '/home/acme/git/perf-tools-next/tools/perf' > ⬢ [acme@toolbox perf-tools-next]$ > > Can you please try fixing it as I'm busy now (I'll be on vacation from > tomorrow till early February)? This is what I extracted: There was an erroneous $(Q) in tools/perf/tests/shell/coresight/Makefile. Previously it would expand to the empty string so wouldn't cause any problems, but now it's in the middle of an expression so hence the error. I'll send an updated patch. > > commit c199fd785d18121ffd0ba5758e23a42ba2984e11 > Author: Charlie Jenkins <charlie@rivosinc.com> > Date: Mon Jan 13 11:50:55 2025 -0300 > > perf tools: Expose quiet/verbose variables in Makefile.perf > > The variables to make builds silent/verbose live inside > tools/build/Makefile.build. Move those variables to the top-level > Makefile.perf to be generally available. > > Committer testing: > > See the SYSCALL lines, now they are consistent with the other > operations in other lines: > > SYSTBL /tmp/build/perf-tools-next/arch/x86/include/generated/asm/syscalls_32.h > SYSTBL /tmp/build/perf-tools-next/arch/x86/include/generated/asm/syscalls_64.h > GEN /tmp/build/perf-tools-next/common-cmds.h > GEN /tmp/build/perf-tools-next/arch/arm64/include/generated/asm/sysreg-defs.h > PERF_VERSION = 6.13.rc2.g3d94bb6ed1d0 > GEN perf-archive > MKDIR /tmp/build/perf-tools-next/jvmti/ > MKDIR /tmp/build/perf-tools-next/jvmti/ > MKDIR /tmp/build/perf-tools-next/jvmti/ > MKDIR /tmp/build/perf-tools-next/jvmti/ > GEN perf-iostat > CC /tmp/build/perf-tools-next/jvmti/libjvmti.o > CC /tmp/build/perf-tools-next/jvmti/jvmti_agent.o > > Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com> > Signed-off-by: Charlie Jenkins <charlie@rivosinc.com> > Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> > Cc: Adrian Hunter <adrian.hunter@intel.com> > Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> > Cc: Arnd Bergmann <arnd@arndb.de> > Cc: Christian Brauner <brauner@kernel.org> > Cc: Guo Ren <guoren@kernel.org> > Cc: Günther Noack <gnoack@google.com> > Cc: Ian Rogers <irogers@google.com> > Cc: Ingo Molnar <mingo@redhat.com> > Cc: James Clark <james.clark@linaro.org> > Cc: Jiri Olsa <jolsa@kernel.org> > Cc: John Garry <john.g.garry@oracle.com> > Cc: Jonathan Corbet <corbet@lwn.net> > Cc: Leo Yan <leo.yan@linux.dev> > Cc: Mark Rutland <mark.rutland@arm.com> > Cc: Mickaël Salaün <mic@digikod.net> > Cc: Mike Leach <mike.leach@linaro.org> > Cc: Namhyung Kim <namhyung@kernel.org> > Cc: Palmer Dabbelt <palmer@dabbelt.com> > Cc: Paul Walmsley <paul.walmsley@sifive.com> > Cc: Peter Zijlstra <peterz@infradead.org> > Cc: Will Deacon <will@kernel.org> > Link: http://lore.kernel.org/lkml/None > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > diff --git a/tools/build/Makefile.build b/tools/build/Makefile.build > index 5fb3fb3d97e0fd11..e710ed67a1b49d9f 100644 > --- a/tools/build/Makefile.build > +++ b/tools/build/Makefile.build > @@ -12,26 +12,6 @@ > PHONY := __build > __build: > > -ifeq ($(V),1) > - quiet = > - Q = > -else > - quiet=quiet_ > - Q=@ > -endif > - > -# If the user is running make -s (silent mode), suppress echoing of commands > -# make-4.0 (and later) keep single letter options in the 1st word of MAKEFLAGS. > -ifeq ($(filter 3.%,$(MAKE_VERSION)),) > -short-opts := $(firstword -$(MAKEFLAGS)) > -else > -short-opts := $(filter-out --%,$(MAKEFLAGS)) > -endif > - > -ifneq ($(findstring s,$(short-opts)),) > - quiet=silent_ > -endif > - > build-dir := $(srctree)/tools/build > > # Define $(fixdep) for dep-cmd function > diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf > index a449d00155364422..55d6ce9ea52fb2a5 100644 > --- a/tools/perf/Makefile.perf > +++ b/tools/perf/Makefile.perf > @@ -161,12 +161,47 @@ export VPATH > SOURCE := $(shell ln -sf $(srctree)/tools/perf $(OUTPUT)/source) > endif > > +# Beautify output > +# --------------------------------------------------------------------------- > +# > +# Most of build commands in Kbuild start with "cmd_". You can optionally define > +# "quiet_cmd_*". If defined, the short log is printed. Otherwise, no log from > +# that command is printed by default. > +# > +# e.g.) > +# quiet_cmd_depmod = DEPMOD $(MODLIB) > +# cmd_depmod = $(srctree)/scripts/depmod.sh $(DEPMOD) $(KERNELRELEASE) > +# > +# A simple variant is to prefix commands with $(Q) - that's useful > +# for commands that shall be hidden in non-verbose mode. > +# > +# $(Q)$(MAKE) $(build)=scripts/basic > +# > +# To put more focus on warnings, be less verbose as default > +# Use 'make V=1' to see the full commands > + > ifeq ($(V),1) > + quiet = > Q = > else > - Q = @ > + quiet=quiet_ > + Q=@ > endif > > +# If the user is running make -s (silent mode), suppress echoing of commands > +# make-4.0 (and later) keep single letter options in the 1st word of MAKEFLAGS. > +ifeq ($(filter 3.%,$(MAKE_VERSION)),) > +short-opts := $(firstword -$(MAKEFLAGS)) > +else > +short-opts := $(filter-out --%,$(MAKEFLAGS)) > +endif > + > +ifneq ($(findstring s,$(short-opts)),) > + quiet=silent_ > +endif > + > +export quiet Q > + > # Do not use make's built-in rules > # (this improves performance and avoids hard-to-debug behaviour); > MAKEFLAGS += -r
On Tue, Jan 14, 2025 at 11:27:30AM -0800, Charlie Jenkins wrote: > On Tue, Jan 14, 2025 at 02:58:26PM -0300, Arnaldo Carvalho de Melo wrote: > > On Mon, Jan 13, 2025 at 11:55:05AM -0300, Arnaldo Carvalho de Melo wrote: > > > On Fri, Jan 10, 2025 at 11:31:01AM -0800, Charlie Jenkins wrote: > > > > On Thu, Jan 09, 2025 at 03:00:59PM -0800, Charlie Jenkins wrote: > > > > > Ooh okay I see, the quiet commands were being ignored as-is. We could > > > > > add the lines to handle this to Makefile.syscalls, but I think the > > > > > better solution is to move the lines from Makefile.build to > > > > > Makefile.perf to be more generically available. Here is a patch for > > > > > that. I also added the comment from the kernel Makefile describing what > > > > > this does. > > > > > > > > From 8dcec7f5d937ede3d33c687573dc2f1654ddc59e Mon Sep 17 00:00:00 2001 > > > > > From: Charlie Jenkins <charlie@rivosinc.com> > > > > > Date: Thu, 9 Jan 2025 14:36:40 -0800 > > > > > Subject: [PATCH] perf tools: Expose quiet/verbose variables in Makefile.perf > > > > > > > > > > The variables to make builds silent/verbose live inside > > > > > tools/build/Makefile.build. Move those variables to the top-level > > > > > Makefile.perf to be generally available. > > > > > > <SNIP applied patch> > > > > > > > Let me know how you want to handle this, I can send this out as a > > > > separate patch if that's better. > > > > > > I used the patch you provided above after hand editing the message > > > before feeding it to 'git am', added these comments: > > > > Somehow this is causing some trouble: > > > > ⬢ [acme@toolbox perf-tools-next]$ make -C tools/perf build-test > > make: Entering directory '/home/acme/git/perf-tools-next/tools/perf' > > - tarpkg: ./tests/perf-targz-src-pkg . > > /bin/sh: line 1: @make: command not found > > make[4]: *** [Makefile:27: clean-asm_pure_loop] Error 127 > > make[3]: *** [Makefile.perf:764: tests-coresight-targets-clean] Error 2 > > make[2]: *** [Makefile:96: clean] Error 2 > > make[1]: *** [tests/make:330: make_static] Error 2 > > make: *** [Makefile:109: build-test] Error 2 > > make: Leaving directory '/home/acme/git/perf-tools-next/tools/perf' > > ⬢ [acme@toolbox perf-tools-next]$ > > > > Can you please try fixing it as I'm busy now (I'll be on vacation from > > tomorrow till early February)? This is what I extracted: > > There was an erroneous $(Q) in > tools/perf/tests/shell/coresight/Makefile. Previously it would expand to > the empty string so wouldn't cause any problems, but now it's in the > middle of an expression so hence the error. I'll send an updated patch. Let me know if this works as expected! I sent it as [1]. [1] https://lore.kernel.org/all/20250114-perf_make_test-v1-1-decc1c517b11@rivosinc.com/ > > > > > commit c199fd785d18121ffd0ba5758e23a42ba2984e11 > > Author: Charlie Jenkins <charlie@rivosinc.com> > > Date: Mon Jan 13 11:50:55 2025 -0300 > > > > perf tools: Expose quiet/verbose variables in Makefile.perf > > > > The variables to make builds silent/verbose live inside > > tools/build/Makefile.build. Move those variables to the top-level > > Makefile.perf to be generally available. > > > > Committer testing: > > > > See the SYSCALL lines, now they are consistent with the other > > operations in other lines: > > > > SYSTBL /tmp/build/perf-tools-next/arch/x86/include/generated/asm/syscalls_32.h > > SYSTBL /tmp/build/perf-tools-next/arch/x86/include/generated/asm/syscalls_64.h > > GEN /tmp/build/perf-tools-next/common-cmds.h > > GEN /tmp/build/perf-tools-next/arch/arm64/include/generated/asm/sysreg-defs.h > > PERF_VERSION = 6.13.rc2.g3d94bb6ed1d0 > > GEN perf-archive > > MKDIR /tmp/build/perf-tools-next/jvmti/ > > MKDIR /tmp/build/perf-tools-next/jvmti/ > > MKDIR /tmp/build/perf-tools-next/jvmti/ > > MKDIR /tmp/build/perf-tools-next/jvmti/ > > GEN perf-iostat > > CC /tmp/build/perf-tools-next/jvmti/libjvmti.o > > CC /tmp/build/perf-tools-next/jvmti/jvmti_agent.o > > > > Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > Signed-off-by: Charlie Jenkins <charlie@rivosinc.com> > > Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > Cc: Adrian Hunter <adrian.hunter@intel.com> > > Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> > > Cc: Arnd Bergmann <arnd@arndb.de> > > Cc: Christian Brauner <brauner@kernel.org> > > Cc: Guo Ren <guoren@kernel.org> > > Cc: Günther Noack <gnoack@google.com> > > Cc: Ian Rogers <irogers@google.com> > > Cc: Ingo Molnar <mingo@redhat.com> > > Cc: James Clark <james.clark@linaro.org> > > Cc: Jiri Olsa <jolsa@kernel.org> > > Cc: John Garry <john.g.garry@oracle.com> > > Cc: Jonathan Corbet <corbet@lwn.net> > > Cc: Leo Yan <leo.yan@linux.dev> > > Cc: Mark Rutland <mark.rutland@arm.com> > > Cc: Mickaël Salaün <mic@digikod.net> > > Cc: Mike Leach <mike.leach@linaro.org> > > Cc: Namhyung Kim <namhyung@kernel.org> > > Cc: Palmer Dabbelt <palmer@dabbelt.com> > > Cc: Paul Walmsley <paul.walmsley@sifive.com> > > Cc: Peter Zijlstra <peterz@infradead.org> > > Cc: Will Deacon <will@kernel.org> > > Link: http://lore.kernel.org/lkml/None > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > > > diff --git a/tools/build/Makefile.build b/tools/build/Makefile.build > > index 5fb3fb3d97e0fd11..e710ed67a1b49d9f 100644 > > --- a/tools/build/Makefile.build > > +++ b/tools/build/Makefile.build > > @@ -12,26 +12,6 @@ > > PHONY := __build > > __build: > > > > -ifeq ($(V),1) > > - quiet = > > - Q = > > -else > > - quiet=quiet_ > > - Q=@ > > -endif > > - > > -# If the user is running make -s (silent mode), suppress echoing of commands > > -# make-4.0 (and later) keep single letter options in the 1st word of MAKEFLAGS. > > -ifeq ($(filter 3.%,$(MAKE_VERSION)),) > > -short-opts := $(firstword -$(MAKEFLAGS)) > > -else > > -short-opts := $(filter-out --%,$(MAKEFLAGS)) > > -endif > > - > > -ifneq ($(findstring s,$(short-opts)),) > > - quiet=silent_ > > -endif > > - > > build-dir := $(srctree)/tools/build > > > > # Define $(fixdep) for dep-cmd function > > diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf > > index a449d00155364422..55d6ce9ea52fb2a5 100644 > > --- a/tools/perf/Makefile.perf > > +++ b/tools/perf/Makefile.perf > > @@ -161,12 +161,47 @@ export VPATH > > SOURCE := $(shell ln -sf $(srctree)/tools/perf $(OUTPUT)/source) > > endif > > > > +# Beautify output > > +# --------------------------------------------------------------------------- > > +# > > +# Most of build commands in Kbuild start with "cmd_". You can optionally define > > +# "quiet_cmd_*". If defined, the short log is printed. Otherwise, no log from > > +# that command is printed by default. > > +# > > +# e.g.) > > +# quiet_cmd_depmod = DEPMOD $(MODLIB) > > +# cmd_depmod = $(srctree)/scripts/depmod.sh $(DEPMOD) $(KERNELRELEASE) > > +# > > +# A simple variant is to prefix commands with $(Q) - that's useful > > +# for commands that shall be hidden in non-verbose mode. > > +# > > +# $(Q)$(MAKE) $(build)=scripts/basic > > +# > > +# To put more focus on warnings, be less verbose as default > > +# Use 'make V=1' to see the full commands > > + > > ifeq ($(V),1) > > + quiet = > > Q = > > else > > - Q = @ > > + quiet=quiet_ > > + Q=@ > > endif > > > > +# If the user is running make -s (silent mode), suppress echoing of commands > > +# make-4.0 (and later) keep single letter options in the 1st word of MAKEFLAGS. > > +ifeq ($(filter 3.%,$(MAKE_VERSION)),) > > +short-opts := $(firstword -$(MAKEFLAGS)) > > +else > > +short-opts := $(filter-out --%,$(MAKEFLAGS)) > > +endif > > + > > +ifneq ($(findstring s,$(short-opts)),) > > + quiet=silent_ > > +endif > > + > > +export quiet Q > > + > > # Do not use make's built-in rules > > # (this improves performance and avoids hard-to-debug behaviour); > > MAKEFLAGS += -r