From: Charlie Jenkins <charlie@rivosinc.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: "Namhyung Kim" <namhyung@kernel.org>,
"Peter Zijlstra" <peterz@infradead.org>,
"Ingo Molnar" <mingo@redhat.com>,
"Mark Rutland" <mark.rutland@arm.com>,
"Alexander Shishkin" <alexander.shishkin@linux.intel.com>,
"Jiri Olsa" <jolsa@kernel.org>, "Ian Rogers" <irogers@google.com>,
"Adrian Hunter" <adrian.hunter@intel.com>,
"Paul Walmsley" <paul.walmsley@sifive.com>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Mickaël Salaün" <mic@digikod.net>,
"Günther Noack" <gnoack@google.com>,
"Christian Brauner" <brauner@kernel.org>,
"Guo Ren" <guoren@kernel.org>,
"John Garry" <john.g.garry@oracle.com>,
"Will Deacon" <will@kernel.org>,
"James Clark" <james.clark@linaro.org>,
"Mike Leach" <mike.leach@linaro.org>,
"Leo Yan" <leo.yan@linux.dev>, "Jonathan Corbet" <corbet@lwn.net>,
"Arnd Bergmann" <arnd@arndb.de>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
linux-riscv@lists.infradead.org,
linux-security-module@vger.kernel.org, bpf@vger.kernel.org,
linux-csky@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-doc@vger.kernel.org
Subject: Re: [PATCH v5 00/16] perf tools: Use generic syscall scripts for all archs
Date: Wed, 8 Jan 2025 18:29:20 -0800 [thread overview]
Message-ID: <Z380gLRYAKVPVEet@ghost> (raw)
In-Reply-To: <Z37-t9fhnmSghIPe@x1>
On Wed, Jan 08, 2025 at 07:39:51PM -0300, Arnaldo Carvalho de Melo wrote:
> On Wed, Jan 08, 2025 at 09:57:44AM -0800, Namhyung Kim wrote:
> > Hello,
> >
> > On Tue, Jan 07, 2025 at 06:07:48PM -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>
>
> So, somehow the first patch of this series didn't reach my inbox, b4
> found it, and in it perf now does;
>
> tools/perf/scripts/Makefile.syscalls
>
> include $(srctree)/scripts/Kbuild.include
>
> I.e. it uses a file that is outside tools/ so normal devel in the kernel
> community may end up breaking tools/ living code, something we decided
> not to have.
>
> I noticed this while doing a: "make -C tools/perf build-test", the first
> test creates a perf tarball and then tries to build it after
> uncompressing it somewhere out of the checked out kernel source tree:
>
> ⬢ [acme@toolbox perf-tools-next]$ make help | grep perf
> perf-tar-src-pkg - Build the perf source tarball with no compression
> perf-targz-src-pkg - Build the perf source tarball with gzip compression
> perf-tarbz2-src-pkg - Build the perf source tarball with bz2 compression
> perf-tarxz-src-pkg - Build the perf source tarball with xz compression
> perf-tarzst-src-pkg - Build the perf source tarball with zst compression
> ⬢ [acme@toolbox perf-tools-next]$ make perf-tarxz-src-pkg
> UPD .tmp_HEAD
> COPY .tmp_perf/HEAD
> GEN .tmp_perf/PERF-VERSION-FILE
> PERF_VERSION = 6.13.rc2.g48d3eefaa683
> ARCHIVE perf-6.13.0-rc2.tar.xz
> ⬢ [acme@toolbox perf-tools-next]$ mv perf-6.13.0-rc2.tar.xz ~
> ⬢ [acme@toolbox perf-tools-next]$ cd ~
> ⬢ [acme@toolbox ~]$ tar xvf perf-6.13.0-rc2.tar.xz | tail -5
> perf-6.13.0-rc2/tools/scripts/Makefile.include
> perf-6.13.0-rc2/tools/scripts/syscall.tbl
> perf-6.13.0-rc2/tools/scripts/utilities.mak
> perf-6.13.0-rc2/HEAD
> perf-6.13.0-rc2/PERF-VERSION-FILE
> ⬢ [acme@toolbox ~]$ cd perf-6.13.0-rc2/
> ⬢ [acme@toolbox perf-6.13.0-rc2]$ make -C tools/perf
> make: Entering directory '/home/acme/perf-6.13.0-rc2/tools/perf'
> BUILD: Doing 'make -j28' parallel build
> Warning: Skipped check-headers due to missing ../../include
>
> 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/perf-6.13.0-rc2/tools/perf/scripts/Makefile.syscalls:18: /home/acme/perf-6.13.0-rc2/scripts/Kbuild.include: No such file or directory
> make[2]: *** No rule to make target '/home/acme/perf-6.13.0-rc2/scripts/Kbuild.include'. Stop.
> make[1]: *** [Makefile.perf:286: sub-make] Error 2
> make: *** [Makefile:76: all] Error 2
> make: Leaving directory '/home/acme/perf-6.13.0-rc2/tools/perf'
> ⬢ [acme@toolbox perf-6.13.0-rc2]$
>
> This would probably (it does, just tested, but read on) make it work:
>
> ⬢ [acme@toolbox perf-tools-next]$ git diff
> diff --git a/tools/perf/MANIFEST b/tools/perf/MANIFEST
> index dc42de1785cee715..83ef5d1365880929 100644
> --- a/tools/perf/MANIFEST
> +++ b/tools/perf/MANIFEST
> @@ -22,6 +22,7 @@ tools/lib/str_error_r.c
> tools/lib/vsprintf.c
> tools/lib/zalloc.c
> scripts/bpf_doc.py
> +scripts/Kbuild.include
> tools/bpf/bpftool
> kernel/bpf/disasm.c
> kernel/bpf/disasm.h
> ⬢ [acme@toolbox perf-tools-next]$
>
> As now we would find it, but then it references some other part of the
> kernel's Kbuild system:
>
> ⬢ [acme@toolbox perf-tools-next]$ grep -w srctree scripts/Kbuild.include
> build := -f $(srctree)/scripts/Makefile.build obj
> clean := -f $(srctree)/scripts/Makefile.clean obj
> ⬢ [acme@toolbox perf-tools-next]$
>
> And perf has:
>
> ⬢ [acme@toolbox perf-tools-next]$ find tools/ -name Makefile.build
> tools/build/Makefile.build
> ⬢ [acme@toolbox perf-tools-next]$
>
> And we also have:
>
> ⬢ [acme@toolbox perf-tools-next]$ ls -la tools/scripts/
> total 40
> drwxr-xr-x. 1 acme acme 106 Jan 8 19:13 .
> drwxr-xr-x. 1 acme acme 514 Jan 8 11:39 ..
> -rw-r--r--. 1 acme acme 1224 Jan 8 11:41 Makefile.arch
> -rw-r--r--. 1 acme acme 6205 Dec 20 21:48 Makefile.include
> -rw-r--r--. 1 acme acme 17401 Jan 8 19:13 syscall.tbl
> -rw-r--r--. 1 acme acme 6186 Dec 20 21:48 utilities.mak
> ⬢ [acme@toolbox perf-tools-next]$
>
> And:
>
> ⬢ [acme@toolbox perf-tools-next]$ grep -w build tools/build/Makefile.include
> build := -f $(srctree)/tools/build/Makefile.build dir=. obj
> $(SILENT_MAKE) -C $(srctree)/tools/build CFLAGS= LDFLAGS= $(OUTPUT)fixdep
> $(Q)$(MAKE) -C $(srctree)/tools/build clean
> ⬢ [acme@toolbox perf-tools-next]$
>
> That is also in:
>
> ⬢ [acme@toolbox perf-tools-next]$ grep -w build scripts/Kbuild.include
> # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj=
> # $(Q)$(MAKE) $(build)=dir
> build := -f $(srctree)/scripts/Makefile.build obj
> # the interrupted recipe. So, you can safely stop the build by Ctrl-C (Make
> # (1) PHONY targets are always build
> # (2) No target, so we better build it
> ⬢ [acme@toolbox perf-tools-next]$
>
> So it seems we need to look at what we're using from the kernel's
> scripts/Makefile.build to have it in a tools/build/ file.
>
> Its late here and I'll have to stop at this point, please take a look to
> see if this can be easily resolved so that we can merge your series, I
> very much like to say goodbye to one more tools/perf library dependency
> :-)
Thank you for pointing this out. We can use tools/build/Build.include
which seems to have everything that is required. A "space" convenience
variable needs to be added, but that is all. I'll send an updated
version with that change.
- Charlie
>
> Best regards,
>
> - Arnaldo
WARNING: multiple messages have this Message-ID (diff)
From: Charlie Jenkins <charlie@rivosinc.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: "Namhyung Kim" <namhyung@kernel.org>,
"Peter Zijlstra" <peterz@infradead.org>,
"Ingo Molnar" <mingo@redhat.com>,
"Mark Rutland" <mark.rutland@arm.com>,
"Alexander Shishkin" <alexander.shishkin@linux.intel.com>,
"Jiri Olsa" <jolsa@kernel.org>, "Ian Rogers" <irogers@google.com>,
"Adrian Hunter" <adrian.hunter@intel.com>,
"Paul Walmsley" <paul.walmsley@sifive.com>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Mickaël Salaün" <mic@digikod.net>,
"Günther Noack" <gnoack@google.com>,
"Christian Brauner" <brauner@kernel.org>,
"Guo Ren" <guoren@kernel.org>,
"John Garry" <john.g.garry@oracle.com>,
"Will Deacon" <will@kernel.org>,
"James Clark" <james.clark@linaro.org>,
"Mike Leach" <mike.leach@linaro.org>,
"Leo Yan" <leo.yan@linux.dev>, "Jonathan Corbet" <corbet@lwn.net>,
"Arnd Bergmann" <arnd@arndb.de>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
linux-riscv@lists.infradead.org,
linux-security-module@vger.kernel.org, bpf@vger.kernel.org,
linux-csky@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-doc@vger.kernel.org
Subject: Re: [PATCH v5 00/16] perf tools: Use generic syscall scripts for all archs
Date: Wed, 8 Jan 2025 18:29:20 -0800 [thread overview]
Message-ID: <Z380gLRYAKVPVEet@ghost> (raw)
In-Reply-To: <Z37-t9fhnmSghIPe@x1>
On Wed, Jan 08, 2025 at 07:39:51PM -0300, Arnaldo Carvalho de Melo wrote:
> On Wed, Jan 08, 2025 at 09:57:44AM -0800, Namhyung Kim wrote:
> > Hello,
> >
> > On Tue, Jan 07, 2025 at 06:07:48PM -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>
>
> So, somehow the first patch of this series didn't reach my inbox, b4
> found it, and in it perf now does;
>
> tools/perf/scripts/Makefile.syscalls
>
> include $(srctree)/scripts/Kbuild.include
>
> I.e. it uses a file that is outside tools/ so normal devel in the kernel
> community may end up breaking tools/ living code, something we decided
> not to have.
>
> I noticed this while doing a: "make -C tools/perf build-test", the first
> test creates a perf tarball and then tries to build it after
> uncompressing it somewhere out of the checked out kernel source tree:
>
> ⬢ [acme@toolbox perf-tools-next]$ make help | grep perf
> perf-tar-src-pkg - Build the perf source tarball with no compression
> perf-targz-src-pkg - Build the perf source tarball with gzip compression
> perf-tarbz2-src-pkg - Build the perf source tarball with bz2 compression
> perf-tarxz-src-pkg - Build the perf source tarball with xz compression
> perf-tarzst-src-pkg - Build the perf source tarball with zst compression
> ⬢ [acme@toolbox perf-tools-next]$ make perf-tarxz-src-pkg
> UPD .tmp_HEAD
> COPY .tmp_perf/HEAD
> GEN .tmp_perf/PERF-VERSION-FILE
> PERF_VERSION = 6.13.rc2.g48d3eefaa683
> ARCHIVE perf-6.13.0-rc2.tar.xz
> ⬢ [acme@toolbox perf-tools-next]$ mv perf-6.13.0-rc2.tar.xz ~
> ⬢ [acme@toolbox perf-tools-next]$ cd ~
> ⬢ [acme@toolbox ~]$ tar xvf perf-6.13.0-rc2.tar.xz | tail -5
> perf-6.13.0-rc2/tools/scripts/Makefile.include
> perf-6.13.0-rc2/tools/scripts/syscall.tbl
> perf-6.13.0-rc2/tools/scripts/utilities.mak
> perf-6.13.0-rc2/HEAD
> perf-6.13.0-rc2/PERF-VERSION-FILE
> ⬢ [acme@toolbox ~]$ cd perf-6.13.0-rc2/
> ⬢ [acme@toolbox perf-6.13.0-rc2]$ make -C tools/perf
> make: Entering directory '/home/acme/perf-6.13.0-rc2/tools/perf'
> BUILD: Doing 'make -j28' parallel build
> Warning: Skipped check-headers due to missing ../../include
>
> 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/perf-6.13.0-rc2/tools/perf/scripts/Makefile.syscalls:18: /home/acme/perf-6.13.0-rc2/scripts/Kbuild.include: No such file or directory
> make[2]: *** No rule to make target '/home/acme/perf-6.13.0-rc2/scripts/Kbuild.include'. Stop.
> make[1]: *** [Makefile.perf:286: sub-make] Error 2
> make: *** [Makefile:76: all] Error 2
> make: Leaving directory '/home/acme/perf-6.13.0-rc2/tools/perf'
> ⬢ [acme@toolbox perf-6.13.0-rc2]$
>
> This would probably (it does, just tested, but read on) make it work:
>
> ⬢ [acme@toolbox perf-tools-next]$ git diff
> diff --git a/tools/perf/MANIFEST b/tools/perf/MANIFEST
> index dc42de1785cee715..83ef5d1365880929 100644
> --- a/tools/perf/MANIFEST
> +++ b/tools/perf/MANIFEST
> @@ -22,6 +22,7 @@ tools/lib/str_error_r.c
> tools/lib/vsprintf.c
> tools/lib/zalloc.c
> scripts/bpf_doc.py
> +scripts/Kbuild.include
> tools/bpf/bpftool
> kernel/bpf/disasm.c
> kernel/bpf/disasm.h
> ⬢ [acme@toolbox perf-tools-next]$
>
> As now we would find it, but then it references some other part of the
> kernel's Kbuild system:
>
> ⬢ [acme@toolbox perf-tools-next]$ grep -w srctree scripts/Kbuild.include
> build := -f $(srctree)/scripts/Makefile.build obj
> clean := -f $(srctree)/scripts/Makefile.clean obj
> ⬢ [acme@toolbox perf-tools-next]$
>
> And perf has:
>
> ⬢ [acme@toolbox perf-tools-next]$ find tools/ -name Makefile.build
> tools/build/Makefile.build
> ⬢ [acme@toolbox perf-tools-next]$
>
> And we also have:
>
> ⬢ [acme@toolbox perf-tools-next]$ ls -la tools/scripts/
> total 40
> drwxr-xr-x. 1 acme acme 106 Jan 8 19:13 .
> drwxr-xr-x. 1 acme acme 514 Jan 8 11:39 ..
> -rw-r--r--. 1 acme acme 1224 Jan 8 11:41 Makefile.arch
> -rw-r--r--. 1 acme acme 6205 Dec 20 21:48 Makefile.include
> -rw-r--r--. 1 acme acme 17401 Jan 8 19:13 syscall.tbl
> -rw-r--r--. 1 acme acme 6186 Dec 20 21:48 utilities.mak
> ⬢ [acme@toolbox perf-tools-next]$
>
> And:
>
> ⬢ [acme@toolbox perf-tools-next]$ grep -w build tools/build/Makefile.include
> build := -f $(srctree)/tools/build/Makefile.build dir=. obj
> $(SILENT_MAKE) -C $(srctree)/tools/build CFLAGS= LDFLAGS= $(OUTPUT)fixdep
> $(Q)$(MAKE) -C $(srctree)/tools/build clean
> ⬢ [acme@toolbox perf-tools-next]$
>
> That is also in:
>
> ⬢ [acme@toolbox perf-tools-next]$ grep -w build scripts/Kbuild.include
> # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj=
> # $(Q)$(MAKE) $(build)=dir
> build := -f $(srctree)/scripts/Makefile.build obj
> # the interrupted recipe. So, you can safely stop the build by Ctrl-C (Make
> # (1) PHONY targets are always build
> # (2) No target, so we better build it
> ⬢ [acme@toolbox perf-tools-next]$
>
> So it seems we need to look at what we're using from the kernel's
> scripts/Makefile.build to have it in a tools/build/ file.
>
> Its late here and I'll have to stop at this point, please take a look to
> see if this can be easily resolved so that we can merge your series, I
> very much like to say goodbye to one more tools/perf library dependency
> :-)
Thank you for pointing this out. We can use tools/build/Build.include
which seems to have everything that is required. A "space" convenience
variable needs to be added, but that is all. I'll send an updated
version with that change.
- Charlie
>
> Best regards,
>
> - Arnaldo
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2025-01-09 2:29 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-08 2:07 [PATCH v5 00/16] perf tools: Use generic syscall scripts for all archs Charlie Jenkins
2025-01-08 2:07 ` Charlie Jenkins
2025-01-08 2:07 ` [PATCH v5 01/16] perf tools: Create generic syscall table support Charlie Jenkins
2025-01-08 2:07 ` Charlie Jenkins
2025-01-08 2:07 ` [PATCH v5 02/16] perf tools: arc: Support generic syscall headers Charlie Jenkins
2025-01-08 2:07 ` Charlie Jenkins
2025-01-08 2:07 ` [PATCH v5 03/16] perf tools: csky: " Charlie Jenkins
2025-01-08 2:07 ` Charlie Jenkins
2025-01-08 2:07 ` [PATCH v5 04/16] perf tools: arm: Support " Charlie Jenkins
2025-01-08 2:07 ` Charlie Jenkins
2025-01-08 2:07 ` [PATCH v5 05/16] perf tools: sh: " Charlie Jenkins
2025-01-08 2:07 ` Charlie Jenkins
2025-01-08 2:07 ` [PATCH v5 06/16] perf tools: sparc: " Charlie Jenkins
2025-01-08 2:07 ` Charlie Jenkins
2025-01-08 2:07 ` [PATCH v5 07/16] perf tools: xtensa: Support syscall header Charlie Jenkins
2025-01-08 2:07 ` Charlie Jenkins
2025-01-08 2:07 ` [PATCH v5 08/16] perf tools: x86: Use generic syscall scripts Charlie Jenkins
2025-01-08 2:07 ` Charlie Jenkins
2025-01-08 2:07 ` [PATCH v5 09/16] perf tools: alpha: Support syscall header Charlie Jenkins
2025-01-08 2:07 ` Charlie Jenkins
2025-01-08 2:07 ` [PATCH v5 10/16] perf tools: parisc: " Charlie Jenkins
2025-01-08 2:07 ` Charlie Jenkins
2025-01-08 2:07 ` [PATCH v5 11/16] perf tools: arm64: Use syscall table Charlie Jenkins
2025-01-08 2:07 ` Charlie Jenkins
2025-01-08 2:08 ` [PATCH v5 12/16] perf tools: loongarch: " Charlie Jenkins
2025-01-08 2:08 ` Charlie Jenkins
2025-01-08 2:08 ` [PATCH v5 13/16] perf tools: mips: Use generic syscall scripts Charlie Jenkins
2025-01-08 2:08 ` Charlie Jenkins
2025-01-08 2:08 ` [PATCH v5 14/16] perf tools: powerpc: Use generic syscall table scripts Charlie Jenkins
2025-01-08 2:08 ` Charlie Jenkins
2025-01-08 2:08 ` [PATCH v5 15/16] perf tools: s390: " Charlie Jenkins
2025-01-08 2:08 ` Charlie Jenkins
2025-01-08 2:08 ` [PATCH v5 16/16] perf tools: Remove dependency on libaudit Charlie Jenkins
2025-01-08 2:08 ` Charlie Jenkins
2025-01-08 17:57 ` [PATCH v5 00/16] perf tools: Use generic syscall scripts for all archs Namhyung Kim
2025-01-08 17:57 ` Namhyung Kim
2025-01-08 22:39 ` Arnaldo Carvalho de Melo
2025-01-08 22:39 ` Arnaldo Carvalho de Melo
2025-01-09 2:29 ` Charlie Jenkins [this message]
2025-01-09 2:29 ` Charlie Jenkins
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=Z380gLRYAKVPVEet@ghost \
--to=charlie@rivosinc.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=arnd@arndb.de \
--cc=bpf@vger.kernel.org \
--cc=brauner@kernel.org \
--cc=corbet@lwn.net \
--cc=gnoack@google.com \
--cc=guoren@kernel.org \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=john.g.garry@oracle.com \
--cc=jolsa@kernel.org \
--cc=leo.yan@linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-csky@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linux-security-module@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mic@digikod.net \
--cc=mike.leach@linaro.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=palmer@dabbelt.com \
--cc=paul.walmsley@sifive.com \
--cc=peterz@infradead.org \
--cc=will@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.