From: Andrew Jones <andrew.jones@linux.dev>
To: Alexandru Elisei <alexandru.elisei@arm.com>
Cc: eric.auger@redhat.com, lvivier@redhat.com, thuth@redhat.com,
frankja@linux.ibm.com, imbrenda@linux.ibm.com,
nrb@linux.ibm.com, david@redhat.com, pbonzini@redhat.com,
kvm@vger.kernel.org, kvmarm@lists.linux.dev,
linuxppc-dev@lists.ozlabs.org, kvm-riscv@lists.infradead.org,
linux-s390@vger.kernel.org, will@kernel.org,
julien.thierry.kdev@gmail.com, maz@kernel.org,
oliver.upton@linux.dev, suzuki.poulose@arm.com,
yuzenghui@huawei.com, joey.gouly@arm.com,
andre.przywara@arm.com
Subject: Re: [kvm-unit-tests PATCH v2 10/18] scripts/arch-run: Add support for kvmtool
Date: Tue, 21 Jan 2025 17:46:33 +0100 [thread overview]
Message-ID: <20250121-90381c319e835109e0515bbd@orel> (raw)
In-Reply-To: <20250120164316.31473-11-alexandru.elisei@arm.com>
On Mon, Jan 20, 2025 at 04:43:08PM +0000, Alexandru Elisei wrote:
> Add two new functions, search_kvmtool_binary(), which, like the name
> suggests, searches for the location of the kvmtool binary, and
> run_kvmtool(), which runs a test with kvmtool as the VMM.
>
> initrd_create() has also been modified to use the kvmtool syntax for
> supplying an initrd, which is --initrd (two dashes instead of the single
> dash that qemu uses).
>
> arm/run does not know how to use these functions yet, but this will be
> added in a subsequent patch.
>
> Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com>
> ---
> scripts/arch-run.bash | 94 +++++++++++++++++++++++++++++++++++++------
> 1 file changed, 81 insertions(+), 13 deletions(-)
>
> diff --git a/scripts/arch-run.bash b/scripts/arch-run.bash
> index d6eaf0ee5f09..34f633cade01 100644
> --- a/scripts/arch-run.bash
> +++ b/scripts/arch-run.bash
> @@ -75,16 +75,47 @@ run_qemu ()
> return $ret
> }
>
> +run_kvmtool ()
> +{
> + local stdout errors ret sig
> +
> + initrd_create || return $?
> +
> + echo -n "$@"
> + [ "$ENVIRON_DEFAULT" = "yes" ] && echo -n " #"
> + echo " $INITRD"
> +
> + # stdout to {stdout}, stderr to $errors and stderr
> + exec {stdout}>&1
> + "${@}" $INITRD </dev/null 2> >(tee /dev/stderr) > /dev/fd/$stdout
> + ret=$?
> + exec {stdout}>&-
> +
> + return $ret
> +}
It seems like run_qemu should mostly apply to kvmtool since kvmtool could
also terminate on a signal, like the timeout SIGALRM. Maybe we should try
to get them to use the same thing and name it run_test()? Or at least we
can factor out the common parts to avoid duplication.
> +
> run_test_status ()
> {
> - local stdout ret
> + local stdout ret ret_success
>
> exec {stdout}>&1
> - lines=$(run_qemu "$@" > >(tee /dev/fd/$stdout))
> +
> + # For qemu, an exit status of 1 means that the test completed. For kvmtool,
> + # 0 means the same thing.
> + case "$TARGET" in
> + qemu)
> + ret_success=1
> + lines=$(run_qemu "$@" > >(tee /dev/fd/$stdout))
> + ;;
> + kvmtool)
> + ret_success=0
> + lines=$(run_kvmtool "$@" > >(tee /dev/fd/$stdout))
> + ;;
> + esac
> ret=$?
> exec {stdout}>&-
>
> - if [ $ret -eq 1 ]; then
> + if [ $ret -eq $ret_success ]; then
> testret=$(grep '^EXIT: ' <<<"$lines" | head -n1 | sed 's/.*STATUS=\([0-9][0-9]*\).*/\1/')
> if [ "$testret" ]; then
> if [ $testret -eq 1 ]; then
> @@ -422,6 +453,25 @@ search_qemu_binary ()
> export PATH=$save_path
> }
>
> +search_kvmtool_binary ()
> +{
> + local kvmtoolcmd kvmtool
> +
> + for kvmtoolcmd in lkvm vm lkvm-static; do
> + if $kvmtoolcmd --help 2>/dev/null| grep -q 'The most commonly used'; then
> + kvmtool="$kvmtoolcmd"
> + break
> + fi
> + done
> +
> + if [ -z "$kvmtool" ]; then
> + echo "A kvmtool binary was not found." >&2
Do we want to support a KVMTOOL environment variable analogous to $QEMU?
If so we can also add the help text that search_qemu_binary() has here.
> + return 2
> + fi
> +
> + command -v $kvmtool
> +}
> +
> initrd_cleanup ()
> {
> rm -f $KVM_UNIT_TESTS_ENV
> @@ -447,7 +497,18 @@ initrd_create ()
> fi
>
> unset INITRD
> - [ -f "$KVM_UNIT_TESTS_ENV" ] && INITRD="-initrd $KVM_UNIT_TESTS_ENV"
> + if [ ! -f "$KVM_UNIT_TESTS_ENV" ]; then
> + return 0
> + fi
> +
> + case "$TARGET" in
> + qemu)
> + INITRD="-initrd $KVM_UNIT_TESTS_ENV"
> + ;;
> + kvmtool)
> + INITRD="--initrd $KVM_UNIT_TESTS_ENV"
> + ;;
> + esac
vmm_opts[qemu,initrd]='-initrd'
vmm_opts[kvmtool,initrd]='--initrd'
>
> return 0
> }
> @@ -471,18 +532,25 @@ env_params ()
> local qemu have_qemu
> local _ rest
>
> - qemu=$(search_qemu_binary) && have_qemu=1
> + env_add_params TARGET
> +
> + # kvmtool's versioning has been broken since it was split from the kernel
> + # source.
> + if [ "$TARGET" = "qemu" ]; then
> + qemu=$(search_qemu_binary) && have_qemu=1
>
> - if [ "$have_qemu" ]; then
> - if [ -n "$ACCEL" ] || [ -n "$QEMU_ACCEL" ]; then
> - [ -n "$ACCEL" ] && QEMU_ACCEL=$ACCEL
> + if [ "$have_qemu" ]; then
> + if [ -n "$ACCEL" ] || [ -n "$QEMU_ACCEL" ]; then
> + [ -n "$ACCEL" ] && QEMU_ACCEL=$ACCEL
> + fi
> + QEMU_VERSION_STRING="$($qemu -h | head -1)"
> + # Shellcheck does not see QEMU_MAJOR|MINOR|MICRO are used
> + # shellcheck disable=SC2034
> + IFS='[ .]' read -r _ _ _ QEMU_MAJOR QEMU_MINOR QEMU_MICRO rest <<<"$QEMU_VERSION_STRING"
> fi
> - QEMU_VERSION_STRING="$($qemu -h | head -1)"
> - # Shellcheck does not see QEMU_MAJOR|MINOR|MICRO are used
> - # shellcheck disable=SC2034
> - IFS='[ .]' read -r _ _ _ QEMU_MAJOR QEMU_MINOR QEMU_MICRO rest <<<"$QEMU_VERSION_STRING"
> +
> + env_add_params QEMU_ACCEL QEMU_VERSION_STRING QEMU_MAJOR QEMU_MINOR QEMU_MICRO
> fi
> - env_add_params QEMU_ACCEL QEMU_VERSION_STRING QEMU_MAJOR QEMU_MINOR QEMU_MICRO
>
> KERNEL_VERSION_STRING=$(uname -r)
> IFS=. read -r KERNEL_VERSION KERNEL_PATCHLEVEL rest <<<"$KERNEL_VERSION_STRING"
> --
> 2.47.1
>
Thanks,
drew
--
kvm-riscv mailing list
kvm-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kvm-riscv
WARNING: multiple messages have this Message-ID (diff)
From: Andrew Jones <andrew.jones@linux.dev>
To: Alexandru Elisei <alexandru.elisei@arm.com>
Cc: eric.auger@redhat.com, lvivier@redhat.com, thuth@redhat.com,
frankja@linux.ibm.com, imbrenda@linux.ibm.com,
nrb@linux.ibm.com, david@redhat.com, pbonzini@redhat.com,
kvm@vger.kernel.org, kvmarm@lists.linux.dev,
linuxppc-dev@lists.ozlabs.org, kvm-riscv@lists.infradead.org,
linux-s390@vger.kernel.org, will@kernel.org,
julien.thierry.kdev@gmail.com, maz@kernel.org,
oliver.upton@linux.dev, suzuki.poulose@arm.com,
yuzenghui@huawei.com, joey.gouly@arm.com,
andre.przywara@arm.com
Subject: Re: [kvm-unit-tests PATCH v2 10/18] scripts/arch-run: Add support for kvmtool
Date: Tue, 21 Jan 2025 17:46:33 +0100 [thread overview]
Message-ID: <20250121-90381c319e835109e0515bbd@orel> (raw)
In-Reply-To: <20250120164316.31473-11-alexandru.elisei@arm.com>
On Mon, Jan 20, 2025 at 04:43:08PM +0000, Alexandru Elisei wrote:
> Add two new functions, search_kvmtool_binary(), which, like the name
> suggests, searches for the location of the kvmtool binary, and
> run_kvmtool(), which runs a test with kvmtool as the VMM.
>
> initrd_create() has also been modified to use the kvmtool syntax for
> supplying an initrd, which is --initrd (two dashes instead of the single
> dash that qemu uses).
>
> arm/run does not know how to use these functions yet, but this will be
> added in a subsequent patch.
>
> Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com>
> ---
> scripts/arch-run.bash | 94 +++++++++++++++++++++++++++++++++++++------
> 1 file changed, 81 insertions(+), 13 deletions(-)
>
> diff --git a/scripts/arch-run.bash b/scripts/arch-run.bash
> index d6eaf0ee5f09..34f633cade01 100644
> --- a/scripts/arch-run.bash
> +++ b/scripts/arch-run.bash
> @@ -75,16 +75,47 @@ run_qemu ()
> return $ret
> }
>
> +run_kvmtool ()
> +{
> + local stdout errors ret sig
> +
> + initrd_create || return $?
> +
> + echo -n "$@"
> + [ "$ENVIRON_DEFAULT" = "yes" ] && echo -n " #"
> + echo " $INITRD"
> +
> + # stdout to {stdout}, stderr to $errors and stderr
> + exec {stdout}>&1
> + "${@}" $INITRD </dev/null 2> >(tee /dev/stderr) > /dev/fd/$stdout
> + ret=$?
> + exec {stdout}>&-
> +
> + return $ret
> +}
It seems like run_qemu should mostly apply to kvmtool since kvmtool could
also terminate on a signal, like the timeout SIGALRM. Maybe we should try
to get them to use the same thing and name it run_test()? Or at least we
can factor out the common parts to avoid duplication.
> +
> run_test_status ()
> {
> - local stdout ret
> + local stdout ret ret_success
>
> exec {stdout}>&1
> - lines=$(run_qemu "$@" > >(tee /dev/fd/$stdout))
> +
> + # For qemu, an exit status of 1 means that the test completed. For kvmtool,
> + # 0 means the same thing.
> + case "$TARGET" in
> + qemu)
> + ret_success=1
> + lines=$(run_qemu "$@" > >(tee /dev/fd/$stdout))
> + ;;
> + kvmtool)
> + ret_success=0
> + lines=$(run_kvmtool "$@" > >(tee /dev/fd/$stdout))
> + ;;
> + esac
> ret=$?
> exec {stdout}>&-
>
> - if [ $ret -eq 1 ]; then
> + if [ $ret -eq $ret_success ]; then
> testret=$(grep '^EXIT: ' <<<"$lines" | head -n1 | sed 's/.*STATUS=\([0-9][0-9]*\).*/\1/')
> if [ "$testret" ]; then
> if [ $testret -eq 1 ]; then
> @@ -422,6 +453,25 @@ search_qemu_binary ()
> export PATH=$save_path
> }
>
> +search_kvmtool_binary ()
> +{
> + local kvmtoolcmd kvmtool
> +
> + for kvmtoolcmd in lkvm vm lkvm-static; do
> + if $kvmtoolcmd --help 2>/dev/null| grep -q 'The most commonly used'; then
> + kvmtool="$kvmtoolcmd"
> + break
> + fi
> + done
> +
> + if [ -z "$kvmtool" ]; then
> + echo "A kvmtool binary was not found." >&2
Do we want to support a KVMTOOL environment variable analogous to $QEMU?
If so we can also add the help text that search_qemu_binary() has here.
> + return 2
> + fi
> +
> + command -v $kvmtool
> +}
> +
> initrd_cleanup ()
> {
> rm -f $KVM_UNIT_TESTS_ENV
> @@ -447,7 +497,18 @@ initrd_create ()
> fi
>
> unset INITRD
> - [ -f "$KVM_UNIT_TESTS_ENV" ] && INITRD="-initrd $KVM_UNIT_TESTS_ENV"
> + if [ ! -f "$KVM_UNIT_TESTS_ENV" ]; then
> + return 0
> + fi
> +
> + case "$TARGET" in
> + qemu)
> + INITRD="-initrd $KVM_UNIT_TESTS_ENV"
> + ;;
> + kvmtool)
> + INITRD="--initrd $KVM_UNIT_TESTS_ENV"
> + ;;
> + esac
vmm_opts[qemu,initrd]='-initrd'
vmm_opts[kvmtool,initrd]='--initrd'
>
> return 0
> }
> @@ -471,18 +532,25 @@ env_params ()
> local qemu have_qemu
> local _ rest
>
> - qemu=$(search_qemu_binary) && have_qemu=1
> + env_add_params TARGET
> +
> + # kvmtool's versioning has been broken since it was split from the kernel
> + # source.
> + if [ "$TARGET" = "qemu" ]; then
> + qemu=$(search_qemu_binary) && have_qemu=1
>
> - if [ "$have_qemu" ]; then
> - if [ -n "$ACCEL" ] || [ -n "$QEMU_ACCEL" ]; then
> - [ -n "$ACCEL" ] && QEMU_ACCEL=$ACCEL
> + if [ "$have_qemu" ]; then
> + if [ -n "$ACCEL" ] || [ -n "$QEMU_ACCEL" ]; then
> + [ -n "$ACCEL" ] && QEMU_ACCEL=$ACCEL
> + fi
> + QEMU_VERSION_STRING="$($qemu -h | head -1)"
> + # Shellcheck does not see QEMU_MAJOR|MINOR|MICRO are used
> + # shellcheck disable=SC2034
> + IFS='[ .]' read -r _ _ _ QEMU_MAJOR QEMU_MINOR QEMU_MICRO rest <<<"$QEMU_VERSION_STRING"
> fi
> - QEMU_VERSION_STRING="$($qemu -h | head -1)"
> - # Shellcheck does not see QEMU_MAJOR|MINOR|MICRO are used
> - # shellcheck disable=SC2034
> - IFS='[ .]' read -r _ _ _ QEMU_MAJOR QEMU_MINOR QEMU_MICRO rest <<<"$QEMU_VERSION_STRING"
> +
> + env_add_params QEMU_ACCEL QEMU_VERSION_STRING QEMU_MAJOR QEMU_MINOR QEMU_MICRO
> fi
> - env_add_params QEMU_ACCEL QEMU_VERSION_STRING QEMU_MAJOR QEMU_MINOR QEMU_MICRO
>
> KERNEL_VERSION_STRING=$(uname -r)
> IFS=. read -r KERNEL_VERSION KERNEL_PATCHLEVEL rest <<<"$KERNEL_VERSION_STRING"
> --
> 2.47.1
>
Thanks,
drew
next prev parent reply other threads:[~2025-01-21 16:46 UTC|newest]
Thread overview: 102+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-20 16:42 [kvm-unit-tests PATCH v2 00/18] arm/arm64: Add kvmtool to the runner script Alexandru Elisei
2025-01-20 16:42 ` Alexandru Elisei
2025-01-20 16:42 ` [kvm-unit-tests PATCH v2 01/18] run_tests: Document --probe-maxsmp argument Alexandru Elisei
2025-01-20 16:42 ` Alexandru Elisei
2025-01-21 14:41 ` Andrew Jones
2025-01-21 14:41 ` Andrew Jones
2025-01-20 16:43 ` [kvm-unit-tests PATCH v2 02/18] Document environment variables Alexandru Elisei
2025-01-20 16:43 ` Alexandru Elisei
2025-01-21 14:41 ` Andrew Jones
2025-01-21 14:41 ` Andrew Jones
2025-01-20 16:43 ` [kvm-unit-tests PATCH v2 03/18] scripts: Refuse to run the tests if not configured for qemu Alexandru Elisei
2025-01-20 16:43 ` Alexandru Elisei
2025-01-21 14:48 ` Andrew Jones
2025-01-21 14:48 ` Andrew Jones
2025-01-21 15:54 ` Alexandru Elisei
2025-01-21 15:54 ` Alexandru Elisei
2025-01-21 16:17 ` Andrew Jones
2025-01-21 16:17 ` Andrew Jones
2025-01-21 16:20 ` Alexandru Elisei
2025-01-21 16:20 ` Alexandru Elisei
2025-02-10 10:41 ` Alexandru Elisei
2025-02-10 10:41 ` Alexandru Elisei
2025-02-10 13:56 ` Andrew Jones
2025-02-10 13:56 ` Andrew Jones
2025-02-10 18:04 ` Alexandru Elisei
2025-02-10 18:04 ` Alexandru Elisei
2025-02-17 16:02 ` Al Dunsmuir
2025-02-17 16:02 ` Al Dunsmuir
2025-01-20 16:43 ` [kvm-unit-tests PATCH v2 04/18] run_tests: Introduce unittest parameter 'qemu_params' Alexandru Elisei
2025-01-20 16:43 ` Alexandru Elisei
2025-01-21 15:46 ` Andrew Jones
2025-01-21 15:46 ` Andrew Jones
2025-02-12 13:40 ` Alexandru Elisei
2025-02-12 13:40 ` Alexandru Elisei
2025-02-12 15:48 ` Andrew Jones
2025-02-12 15:48 ` Andrew Jones
2025-01-20 16:43 ` [kvm-unit-tests PATCH v2 05/18] scripts: Rename run_qemu_status -> run_test_status Alexandru Elisei
2025-01-20 16:43 ` Alexandru Elisei
2025-01-21 15:55 ` Andrew Jones
2025-01-21 15:55 ` Andrew Jones
2025-01-20 16:43 ` [kvm-unit-tests PATCH v2 06/18] scripts: Merge the qemu parameter -smp into $qemu_opts Alexandru Elisei
2025-01-20 16:43 ` Alexandru Elisei
2025-01-21 16:12 ` Andrew Jones
2025-01-21 16:12 ` Andrew Jones
2025-01-20 16:43 ` [kvm-unit-tests PATCH v2 07/18] scripts: Introduce kvmtool_opts Alexandru Elisei
2025-01-20 16:43 ` Alexandru Elisei
2025-01-21 16:24 ` Andrew Jones
2025-01-21 16:24 ` Andrew Jones
2025-01-20 16:43 ` [kvm-unit-tests PATCH v2 08/18] scripts/runtime: Detect kvmtool failure in premature_failure() Alexandru Elisei
2025-01-20 16:43 ` Alexandru Elisei
2025-01-21 16:29 ` Andrew Jones
2025-01-21 16:29 ` Andrew Jones
2025-01-20 16:43 ` [kvm-unit-tests PATCH v2 09/18] scripts/runtime: Skip test when kvmtool and $accel is not KVM Alexandru Elisei
2025-01-20 16:43 ` Alexandru Elisei
2025-01-21 16:30 ` Andrew Jones
2025-01-21 16:30 ` Andrew Jones
2025-01-20 16:43 ` [kvm-unit-tests PATCH v2 10/18] scripts/arch-run: Add support for kvmtool Alexandru Elisei
2025-01-20 16:43 ` Alexandru Elisei
2025-01-21 16:46 ` Andrew Jones [this message]
2025-01-21 16:46 ` Andrew Jones
2025-01-20 16:43 ` [kvm-unit-tests PATCH v2 11/18] arm/run: " Alexandru Elisei
2025-01-20 16:43 ` Alexandru Elisei
2025-01-21 16:50 ` Andrew Jones
2025-01-21 16:50 ` Andrew Jones
2025-01-20 16:43 ` [kvm-unit-tests PATCH v2 12/18] scripts/runtime: Add default arguments " Alexandru Elisei
2025-01-20 16:43 ` Alexandru Elisei
2025-01-23 14:07 ` Andrew Jones
2025-01-23 14:07 ` Andrew Jones
2025-01-23 14:20 ` Alexandru Elisei
2025-01-23 14:20 ` Alexandru Elisei
2025-01-20 16:43 ` [kvm-unit-tests PATCH v2 13/18] run_tests: Do not probe for maximum number of VCPUs when using kvmtool Alexandru Elisei
2025-01-20 16:43 ` Alexandru Elisei
2025-01-23 15:36 ` Andrew Jones
2025-01-23 15:36 ` Andrew Jones
2025-01-20 16:43 ` [kvm-unit-tests PATCH v2 14/18] run_tests: Add KVMTOOL environment variable for kvmtool binary path Alexandru Elisei
2025-01-20 16:43 ` Alexandru Elisei
2025-01-23 15:43 ` Andrew Jones
2025-01-23 15:43 ` Andrew Jones
2025-01-20 16:43 ` [kvm-unit-tests PATCH v2 15/18] Add kvmtool_params to test specification Alexandru Elisei
2025-01-20 16:43 ` Alexandru Elisei
2025-01-23 15:53 ` Andrew Jones
2025-01-23 15:53 ` Andrew Jones
2025-02-11 15:03 ` Alexandru Elisei
2025-02-11 15:03 ` Alexandru Elisei
2025-02-12 15:56 ` Andrew Jones
2025-02-12 15:56 ` Andrew Jones
2025-02-12 16:34 ` Alexandru Elisei
2025-02-12 16:34 ` Alexandru Elisei
2025-02-13 13:59 ` Andrew Jones
2025-02-13 13:59 ` Andrew Jones
2025-01-20 16:43 ` [kvm-unit-tests PATCH v2 16/18] scripts/mkstandalone: Export $TARGET Alexandru Elisei
2025-01-20 16:43 ` Alexandru Elisei
2025-01-23 15:53 ` Andrew Jones
2025-01-23 15:53 ` Andrew Jones
2025-01-20 16:43 ` [kvm-unit-tests PATCH v2 17/18] unittest: Add disabled_if parameter and use it for kvmtool Alexandru Elisei
2025-01-20 16:43 ` Alexandru Elisei
2025-01-23 16:08 ` Andrew Jones
2025-01-23 16:08 ` Andrew Jones
2025-01-20 16:43 ` [kvm-unit-tests PATCH v2 18/18] run_tests: Enable kvmtool Alexandru Elisei
2025-01-20 16:43 ` Alexandru Elisei
2025-01-23 16:12 ` Andrew Jones
2025-01-23 16:12 ` Andrew Jones
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=20250121-90381c319e835109e0515bbd@orel \
--to=andrew.jones@linux.dev \
--cc=alexandru.elisei@arm.com \
--cc=andre.przywara@arm.com \
--cc=david@redhat.com \
--cc=eric.auger@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=joey.gouly@arm.com \
--cc=julien.thierry.kdev@gmail.com \
--cc=kvm-riscv@lists.infradead.org \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=linux-s390@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=lvivier@redhat.com \
--cc=maz@kernel.org \
--cc=nrb@linux.ibm.com \
--cc=oliver.upton@linux.dev \
--cc=pbonzini@redhat.com \
--cc=suzuki.poulose@arm.com \
--cc=thuth@redhat.com \
--cc=will@kernel.org \
--cc=yuzenghui@huawei.com \
/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.