From: Nuno Das Neves <nunodasneves@linux.microsoft.com>
To: Sean Christopherson <seanjc@google.com>,
Marc Zyngier <maz@kernel.org>,
Oliver Upton <oliver.upton@linux.dev>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>,
Tianrui Zhao <zhaotianrui@loongson.cn>,
Bibo Mao <maobibo@loongson.cn>,
Huacai Chen <chenhuacai@kernel.org>,
Anup Patel <anup@brainfault.org>,
Paul Walmsley <paul.walmsley@sifive.com>,
Palmer Dabbelt <palmer@dabbelt.com>,
Albert Ou <aou@eecs.berkeley.edu>,
Paolo Bonzini <pbonzini@redhat.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
x86@kernel.org, "K. Y. Srinivasan" <kys@microsoft.com>,
Haiyang Zhang <haiyangz@microsoft.com>,
Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>,
Peter Zijlstra <peterz@infradead.org>,
Andy Lutomirski <luto@kernel.org>,
"Paul E. McKenney" <paulmck@kernel.org>,
Frederic Weisbecker <frederic@kernel.org>,
Neeraj Upadhyay <neeraj.upadhyay@kernel.org>,
Joel Fernandes <joelagnelf@nvidia.com>,
Josh Triplett <josh@joshtriplett.org>,
Boqun Feng <boqun.feng@gmail.com>,
Uladzislau Rezki <urezki@gmail.com>
Cc: linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev,
kvm@vger.kernel.org, loongarch@lists.linux.dev,
kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org,
linux-hyperv@vger.kernel.org, rcu@vger.kernel.org,
Mukesh R <mrathor@linux.microsoft.com>
Subject: Re: [PATCH v2 6/7] Drivers: hv: Use common "entry virt" APIs to do work in root before running guest
Date: Thu, 28 Aug 2025 17:03:28 -0700 [thread overview]
Message-ID: <c1a5ab1d-1601-46db-83da-b26422a2aabd@linux.microsoft.com> (raw)
In-Reply-To: <20250828000156.23389-7-seanjc@google.com>
On 8/27/2025 5:01 PM, Sean Christopherson wrote:
> Use the kernel's common "entry virt" APIs to handle pending work prior to
> (re)entering guest mode, now that the virt APIs don't have a superfluous
> dependency on KVM.
>
> No functional change intended.
>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
> ---
> drivers/hv/Kconfig | 1 +
> drivers/hv/mshv_root_main.c | 32 ++++++--------------------------
> 2 files changed, 7 insertions(+), 26 deletions(-)
>
> diff --git a/drivers/hv/Kconfig b/drivers/hv/Kconfig
> index 2e8df09db599..894037afcbf9 100644
> --- a/drivers/hv/Kconfig
> +++ b/drivers/hv/Kconfig
> @@ -66,6 +66,7 @@ config MSHV_ROOT
> # no particular order, making it impossible to reassemble larger pages
> depends on PAGE_SIZE_4KB
> select EVENTFD
> + select VIRT_XFER_TO_GUEST_WORK
> default n
> help
> Select this option to enable support for booting and running as root
> diff --git a/drivers/hv/mshv_root_main.c b/drivers/hv/mshv_root_main.c
> index 0d849f09160a..7c83f656e071 100644
> --- a/drivers/hv/mshv_root_main.c
> +++ b/drivers/hv/mshv_root_main.c
> @@ -8,6 +8,7 @@
> * Authors: Microsoft Linux virtualization team
> */
>
> +#include <linux/entry-virt.h>
> #include <linux/kernel.h>
> #include <linux/module.h>
> #include <linux/fs.h>
> @@ -481,29 +482,6 @@ mshv_vp_wait_for_hv_kick(struct mshv_vp *vp)
> return 0;
> }
>
> -static int mshv_pre_guest_mode_work(struct mshv_vp *vp)
> -{
> - const ulong work_flags = _TIF_NOTIFY_SIGNAL | _TIF_SIGPENDING |
> - _TIF_NEED_RESCHED | _TIF_NEED_RESCHED_LAZY |
> - _TIF_NOTIFY_RESUME;
> - ulong th_flags;
> -
> - th_flags = read_thread_flags();
> - while (th_flags & work_flags) {
> - int ret;
> -
> - /* nb: following will call schedule */
> - ret = mshv_do_pre_guest_mode_work(th_flags);
> -
> - if (ret)
> - return ret;
> -
> - th_flags = read_thread_flags();
> - }
> -
> - return 0;
> -}
> -
> /* Must be called with interrupts enabled */
> static long mshv_run_vp_with_root_scheduler(struct mshv_vp *vp)
> {
> @@ -524,9 +502,11 @@ static long mshv_run_vp_with_root_scheduler(struct mshv_vp *vp)
> u32 flags = 0;
> struct hv_output_dispatch_vp output;
>
> - ret = mshv_pre_guest_mode_work(vp);
> - if (ret)
> - break;
> + if (__xfer_to_guest_mode_work_pending()) {
> + ret = xfer_to_guest_mode_handle_work();
> + if (ret)
> + break;
> + }
>
> if (vp->run.flags.intercept_suspend)
> flags |= HV_DISPATCH_VP_FLAG_CLEAR_INTERCEPT_SUSPEND;
Also tested mshv_root with 1-6 applied, looks good to me. Possibly Naman,
Saurabh, or Roman can test the mshv_vtl patches, I can't do it
unfortunately.
Tested-by: Nuno Das Neves <nunodasneves@linux.microsoft.com>
Reviewed-by: Nuno Das Neves <nunodasneves@linux.microsoft.com>
--
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: Nuno Das Neves <nunodasneves@linux.microsoft.com>
To: Sean Christopherson <seanjc@google.com>,
Marc Zyngier <maz@kernel.org>,
Oliver Upton <oliver.upton@linux.dev>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>,
Tianrui Zhao <zhaotianrui@loongson.cn>,
Bibo Mao <maobibo@loongson.cn>,
Huacai Chen <chenhuacai@kernel.org>,
Anup Patel <anup@brainfault.org>,
Paul Walmsley <paul.walmsley@sifive.com>,
Palmer Dabbelt <palmer@dabbelt.com>,
Albert Ou <aou@eecs.berkeley.edu>,
Paolo Bonzini <pbonzini@redhat.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
x86@kernel.org, "K. Y. Srinivasan" <kys@microsoft.com>,
Haiyang Zhang <haiyangz@microsoft.com>,
Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>,
Peter Zijlstra <peterz@infradead.org>,
Andy Lutomirski <luto@kernel.org>,
"Paul E. McKenney" <paulmck@kernel.org>,
Frederic Weisbecker <frederic@kernel.org>,
Neeraj Upadhyay <neeraj.upadhyay@kernel.org>,
Joel Fernandes <joelagnelf@nvidia.com>,
Josh Triplett <josh@joshtriplett.org>,
Boqun Feng <boqun.feng@gmail.com>,
Uladzislau Rezki <urezki@gmail.com>
Cc: linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev,
kvm@vger.kernel.org, loongarch@lists.linux.dev,
kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org,
linux-hyperv@vger.kernel.org, rcu@vger.kernel.org,
Mukesh R <mrathor@linux.microsoft.com>
Subject: Re: [PATCH v2 6/7] Drivers: hv: Use common "entry virt" APIs to do work in root before running guest
Date: Thu, 28 Aug 2025 17:03:28 -0700 [thread overview]
Message-ID: <c1a5ab1d-1601-46db-83da-b26422a2aabd@linux.microsoft.com> (raw)
In-Reply-To: <20250828000156.23389-7-seanjc@google.com>
On 8/27/2025 5:01 PM, Sean Christopherson wrote:
> Use the kernel's common "entry virt" APIs to handle pending work prior to
> (re)entering guest mode, now that the virt APIs don't have a superfluous
> dependency on KVM.
>
> No functional change intended.
>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
> ---
> drivers/hv/Kconfig | 1 +
> drivers/hv/mshv_root_main.c | 32 ++++++--------------------------
> 2 files changed, 7 insertions(+), 26 deletions(-)
>
> diff --git a/drivers/hv/Kconfig b/drivers/hv/Kconfig
> index 2e8df09db599..894037afcbf9 100644
> --- a/drivers/hv/Kconfig
> +++ b/drivers/hv/Kconfig
> @@ -66,6 +66,7 @@ config MSHV_ROOT
> # no particular order, making it impossible to reassemble larger pages
> depends on PAGE_SIZE_4KB
> select EVENTFD
> + select VIRT_XFER_TO_GUEST_WORK
> default n
> help
> Select this option to enable support for booting and running as root
> diff --git a/drivers/hv/mshv_root_main.c b/drivers/hv/mshv_root_main.c
> index 0d849f09160a..7c83f656e071 100644
> --- a/drivers/hv/mshv_root_main.c
> +++ b/drivers/hv/mshv_root_main.c
> @@ -8,6 +8,7 @@
> * Authors: Microsoft Linux virtualization team
> */
>
> +#include <linux/entry-virt.h>
> #include <linux/kernel.h>
> #include <linux/module.h>
> #include <linux/fs.h>
> @@ -481,29 +482,6 @@ mshv_vp_wait_for_hv_kick(struct mshv_vp *vp)
> return 0;
> }
>
> -static int mshv_pre_guest_mode_work(struct mshv_vp *vp)
> -{
> - const ulong work_flags = _TIF_NOTIFY_SIGNAL | _TIF_SIGPENDING |
> - _TIF_NEED_RESCHED | _TIF_NEED_RESCHED_LAZY |
> - _TIF_NOTIFY_RESUME;
> - ulong th_flags;
> -
> - th_flags = read_thread_flags();
> - while (th_flags & work_flags) {
> - int ret;
> -
> - /* nb: following will call schedule */
> - ret = mshv_do_pre_guest_mode_work(th_flags);
> -
> - if (ret)
> - return ret;
> -
> - th_flags = read_thread_flags();
> - }
> -
> - return 0;
> -}
> -
> /* Must be called with interrupts enabled */
> static long mshv_run_vp_with_root_scheduler(struct mshv_vp *vp)
> {
> @@ -524,9 +502,11 @@ static long mshv_run_vp_with_root_scheduler(struct mshv_vp *vp)
> u32 flags = 0;
> struct hv_output_dispatch_vp output;
>
> - ret = mshv_pre_guest_mode_work(vp);
> - if (ret)
> - break;
> + if (__xfer_to_guest_mode_work_pending()) {
> + ret = xfer_to_guest_mode_handle_work();
> + if (ret)
> + break;
> + }
>
> if (vp->run.flags.intercept_suspend)
> flags |= HV_DISPATCH_VP_FLAG_CLEAR_INTERCEPT_SUSPEND;
Also tested mshv_root with 1-6 applied, looks good to me. Possibly Naman,
Saurabh, or Roman can test the mshv_vtl patches, I can't do it
unfortunately.
Tested-by: Nuno Das Neves <nunodasneves@linux.microsoft.com>
Reviewed-by: Nuno Das Neves <nunodasneves@linux.microsoft.com>
WARNING: multiple messages have this Message-ID (diff)
From: Nuno Das Neves <nunodasneves@linux.microsoft.com>
To: Sean Christopherson <seanjc@google.com>,
Marc Zyngier <maz@kernel.org>,
Oliver Upton <oliver.upton@linux.dev>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>,
Tianrui Zhao <zhaotianrui@loongson.cn>,
Bibo Mao <maobibo@loongson.cn>,
Huacai Chen <chenhuacai@kernel.org>,
Anup Patel <anup@brainfault.org>,
Paul Walmsley <paul.walmsley@sifive.com>,
Palmer Dabbelt <palmer@dabbelt.com>,
Albert Ou <aou@eecs.berkeley.edu>,
Paolo Bonzini <pbonzini@redhat.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
x86@kernel.org, "K. Y. Srinivasan" <kys@microsoft.com>,
Haiyang Zhang <haiyangz@microsoft.com>,
Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>,
Peter Zijlstra <peterz@infradead.org>,
Andy Lutomirski <luto@kernel.org>,
"Paul E. McKenney" <paulmck@kernel.org>,
Frederic Weisbecker <frederic@kernel.org>,
Neeraj Upadhyay <neeraj.upadhyay@kernel.org>,
Joel Fernandes <joelagnelf@nvidia.com>,
Josh Triplett <josh@joshtriplett.org>,
Boqun Feng <boqun.feng@gmail.com>,
Uladzislau Rezki <urezki@gmail.com>
Cc: linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev,
kvm@vger.kernel.org, loongarch@lists.linux.dev,
kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org,
linux-hyperv@vger.kernel.org, rcu@vger.kernel.org,
Mukesh R <mrathor@linux.microsoft.com>
Subject: Re: [PATCH v2 6/7] Drivers: hv: Use common "entry virt" APIs to do work in root before running guest
Date: Thu, 28 Aug 2025 17:03:28 -0700 [thread overview]
Message-ID: <c1a5ab1d-1601-46db-83da-b26422a2aabd@linux.microsoft.com> (raw)
In-Reply-To: <20250828000156.23389-7-seanjc@google.com>
On 8/27/2025 5:01 PM, Sean Christopherson wrote:
> Use the kernel's common "entry virt" APIs to handle pending work prior to
> (re)entering guest mode, now that the virt APIs don't have a superfluous
> dependency on KVM.
>
> No functional change intended.
>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
> ---
> drivers/hv/Kconfig | 1 +
> drivers/hv/mshv_root_main.c | 32 ++++++--------------------------
> 2 files changed, 7 insertions(+), 26 deletions(-)
>
> diff --git a/drivers/hv/Kconfig b/drivers/hv/Kconfig
> index 2e8df09db599..894037afcbf9 100644
> --- a/drivers/hv/Kconfig
> +++ b/drivers/hv/Kconfig
> @@ -66,6 +66,7 @@ config MSHV_ROOT
> # no particular order, making it impossible to reassemble larger pages
> depends on PAGE_SIZE_4KB
> select EVENTFD
> + select VIRT_XFER_TO_GUEST_WORK
> default n
> help
> Select this option to enable support for booting and running as root
> diff --git a/drivers/hv/mshv_root_main.c b/drivers/hv/mshv_root_main.c
> index 0d849f09160a..7c83f656e071 100644
> --- a/drivers/hv/mshv_root_main.c
> +++ b/drivers/hv/mshv_root_main.c
> @@ -8,6 +8,7 @@
> * Authors: Microsoft Linux virtualization team
> */
>
> +#include <linux/entry-virt.h>
> #include <linux/kernel.h>
> #include <linux/module.h>
> #include <linux/fs.h>
> @@ -481,29 +482,6 @@ mshv_vp_wait_for_hv_kick(struct mshv_vp *vp)
> return 0;
> }
>
> -static int mshv_pre_guest_mode_work(struct mshv_vp *vp)
> -{
> - const ulong work_flags = _TIF_NOTIFY_SIGNAL | _TIF_SIGPENDING |
> - _TIF_NEED_RESCHED | _TIF_NEED_RESCHED_LAZY |
> - _TIF_NOTIFY_RESUME;
> - ulong th_flags;
> -
> - th_flags = read_thread_flags();
> - while (th_flags & work_flags) {
> - int ret;
> -
> - /* nb: following will call schedule */
> - ret = mshv_do_pre_guest_mode_work(th_flags);
> -
> - if (ret)
> - return ret;
> -
> - th_flags = read_thread_flags();
> - }
> -
> - return 0;
> -}
> -
> /* Must be called with interrupts enabled */
> static long mshv_run_vp_with_root_scheduler(struct mshv_vp *vp)
> {
> @@ -524,9 +502,11 @@ static long mshv_run_vp_with_root_scheduler(struct mshv_vp *vp)
> u32 flags = 0;
> struct hv_output_dispatch_vp output;
>
> - ret = mshv_pre_guest_mode_work(vp);
> - if (ret)
> - break;
> + if (__xfer_to_guest_mode_work_pending()) {
> + ret = xfer_to_guest_mode_handle_work();
> + if (ret)
> + break;
> + }
>
> if (vp->run.flags.intercept_suspend)
> flags |= HV_DISPATCH_VP_FLAG_CLEAR_INTERCEPT_SUSPEND;
Also tested mshv_root with 1-6 applied, looks good to me. Possibly Naman,
Saurabh, or Roman can test the mshv_vtl patches, I can't do it
unfortunately.
Tested-by: Nuno Das Neves <nunodasneves@linux.microsoft.com>
Reviewed-by: Nuno Das Neves <nunodasneves@linux.microsoft.com>
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2025-08-29 0:11 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-28 0:01 [PATCH v2 0/7] Drivers: hv: Fix NEED_RESCHED_LAZY and use common APIs Sean Christopherson
2025-08-28 0:01 ` Sean Christopherson
2025-08-28 0:01 ` Sean Christopherson
2025-08-28 0:01 ` [PATCH v2 1/7] Drivers: hv: Handle NEED_RESCHED_LAZY before transferring to guest Sean Christopherson
2025-08-28 0:01 ` Sean Christopherson
2025-08-28 0:01 ` Sean Christopherson
2025-08-28 23:56 ` Nuno Das Neves
2025-08-28 23:56 ` Nuno Das Neves
2025-08-28 23:56 ` Nuno Das Neves
2025-08-28 0:01 ` [PATCH v2 2/7] Drivers: hv: Disentangle VTL return cancellation from SIGPENDING Sean Christopherson
2025-08-28 0:01 ` Sean Christopherson
2025-08-28 0:01 ` Sean Christopherson
2025-08-29 18:38 ` Wei Liu
2025-08-29 18:38 ` Wei Liu
2025-08-29 18:38 ` Wei Liu
2025-08-28 0:01 ` [PATCH v2 3/7] Drivers: hv: Disable IRQs only after handling pending work before VTL return Sean Christopherson
2025-08-28 0:01 ` Sean Christopherson
2025-08-28 0:01 ` Sean Christopherson
2025-08-28 0:01 ` [PATCH v2 4/7] entry/kvm: KVM: Move KVM details related to signal/-EINTR into KVM proper Sean Christopherson
2025-08-28 0:01 ` Sean Christopherson
2025-08-28 0:01 ` Sean Christopherson
2025-09-02 15:41 ` Thomas Gleixner
2025-09-02 15:41 ` Thomas Gleixner
2025-09-02 15:41 ` Thomas Gleixner
2025-08-28 0:01 ` [PATCH v2 5/7] entry: Rename "kvm" entry code assets to "virt" to genericize APIs Sean Christopherson
2025-08-28 0:01 ` Sean Christopherson
2025-08-28 0:01 ` Sean Christopherson
2025-09-02 15:41 ` Thomas Gleixner
2025-09-02 15:41 ` Thomas Gleixner
2025-09-02 15:41 ` Thomas Gleixner
2025-09-10 14:45 ` Joel Fernandes
2025-09-10 14:45 ` Joel Fernandes
2025-09-10 14:45 ` Joel Fernandes
2025-08-28 0:01 ` [PATCH v2 6/7] Drivers: hv: Use common "entry virt" APIs to do work in root before running guest Sean Christopherson
2025-08-28 0:01 ` Sean Christopherson
2025-08-28 0:01 ` Sean Christopherson
2025-08-29 0:03 ` Nuno Das Neves [this message]
2025-08-29 0:03 ` Nuno Das Neves
2025-08-29 0:03 ` Nuno Das Neves
2025-08-28 0:01 ` [PATCH v2 7/7] Drivers: hv: Use "entry virt" APIs to do work before returning to lower VTL Sean Christopherson
2025-08-28 0:01 ` Sean Christopherson
2025-08-28 0:01 ` Sean Christopherson
2025-09-04 23:41 ` [PATCH v2 0/7] Drivers: hv: Fix NEED_RESCHED_LAZY and use common APIs Wei Liu
2025-09-04 23:41 ` Wei Liu
2025-09-04 23:41 ` Wei Liu
2025-09-05 5:39 ` Sean Christopherson
2025-09-05 5:39 ` Sean Christopherson
2025-09-05 5:39 ` Sean Christopherson
2025-09-09 17:20 ` Wei Liu
2025-09-09 17:20 ` Wei Liu
2025-09-09 17:20 ` Wei Liu
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=c1a5ab1d-1601-46db-83da-b26422a2aabd@linux.microsoft.com \
--to=nunodasneves@linux.microsoft.com \
--cc=anup@brainfault.org \
--cc=aou@eecs.berkeley.edu \
--cc=boqun.feng@gmail.com \
--cc=bp@alien8.de \
--cc=catalin.marinas@arm.com \
--cc=chenhuacai@kernel.org \
--cc=dave.hansen@linux.intel.com \
--cc=decui@microsoft.com \
--cc=frederic@kernel.org \
--cc=haiyangz@microsoft.com \
--cc=joelagnelf@nvidia.com \
--cc=josh@joshtriplett.org \
--cc=kvm-riscv@lists.infradead.org \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=kys@microsoft.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=loongarch@lists.linux.dev \
--cc=luto@kernel.org \
--cc=maobibo@loongson.cn \
--cc=maz@kernel.org \
--cc=mingo@redhat.com \
--cc=mrathor@linux.microsoft.com \
--cc=neeraj.upadhyay@kernel.org \
--cc=oliver.upton@linux.dev \
--cc=palmer@dabbelt.com \
--cc=paul.walmsley@sifive.com \
--cc=paulmck@kernel.org \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=rcu@vger.kernel.org \
--cc=seanjc@google.com \
--cc=tglx@linutronix.de \
--cc=urezki@gmail.com \
--cc=wei.liu@kernel.org \
--cc=will@kernel.org \
--cc=x86@kernel.org \
--cc=zhaotianrui@loongson.cn \
/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.