All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sean Christopherson <seanjc@google.com>
To: Yan Zhao <yan.y.zhao@intel.com>
Cc: kvm@vger.kernel.org, intel-gfx@lists.freedesktop.org,
	linux-kernel@vger.kernel.org, Ben Gardon <bgardon@google.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	intel-gvt-dev@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH v2 20/27] KVM: x86/mmu: Use page-track notifiers iff there are external users
Date: Thu, 4 May 2023 12:54:40 -0700	[thread overview]
Message-ID: <ZFQNgKGcexo0nQ4S@google.com> (raw)
In-Reply-To: <ZBH4RizqdigXeYte@google.com>

On Wed, Mar 15, 2023, Sean Christopherson wrote:
> On Wed, Mar 15, 2023, Yan Zhao wrote:
> > On Fri, Mar 10, 2023 at 04:22:51PM -0800, Sean Christopherson wrote:
> > > Disable the page-track notifier code at compile time if there are no
> > > external users, i.e. if CONFIG_KVM_EXTERNAL_WRITE_TRACKING=n.  KVM itself
> > > now hooks emulated writes directly instead of relying on the page-track
> > > mechanism.
> > > 
> > > Signed-off-by: Sean Christopherson <seanjc@google.com>
> > > ---
> > >  arch/x86/include/asm/kvm_host.h       |  2 ++
> > >  arch/x86/include/asm/kvm_page_track.h |  2 ++
> > >  arch/x86/kvm/mmu/page_track.c         |  9 ++++-----
> > >  arch/x86/kvm/mmu/page_track.h         | 29 +++++++++++++++++++++++----
> > >  4 files changed, 33 insertions(+), 9 deletions(-)
> > > 
> > > diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
> > > index 1a4225237564..a3423711e403 100644
> > > --- a/arch/x86/include/asm/kvm_host.h
> > > +++ b/arch/x86/include/asm/kvm_host.h
> > > @@ -1265,7 +1265,9 @@ struct kvm_arch {
> > >  	 * create an NX huge page (without hanging the guest).
> > >  	 */
> > >  	struct list_head possible_nx_huge_pages;
> > > +#ifdef CONFIG_KVM_EXTERNAL_WRITE_TRACKING
> > >  	struct kvm_page_track_notifier_head track_notifier_head;
> > > +#endif
> > >  	/*
> > >  	 * Protects marking pages unsync during page faults, as TDP MMU page
> > >  	 * faults only take mmu_lock for read.  For simplicity, the unsync
> > > diff --git a/arch/x86/include/asm/kvm_page_track.h b/arch/x86/include/asm/kvm_page_track.h
> > > index deece45936a5..53c2adb25a07 100644
> > > --- a/arch/x86/include/asm/kvm_page_track.h
> > > +++ b/arch/x86/include/asm/kvm_page_track.h
> > The "#ifdef CONFIG_KVM_EXTERNAL_WRITE_TRACKING" can be moved to the
> > front of this file?
> > All the structures are only exposed for external users now.
> 
> Huh.  I've no idea why I didn't do that.  IIRC, the entire reason past me wrapped
> track_notifier_head in an #ifdef was to allow this change in kvm_page_track.h.
> 
> I'll do this in the next version unless I discover an edge case I'm overlooking.

Ah, deja vu.  I tried this first time around, and got yelled at by the kernel test
robot.  Unsuprisingly, my second attempt yielded the same result :-)

  HDRTEST drivers/gpu/drm/i915/gvt/gvt.h
In file included from <command-line>:
gpu/drivers/gpu/drm/i915/gvt/gvt.h:236:45: error: field ‘track_node’ has incomplete type
  236 |         struct kvm_page_track_notifier_node track_node;
      |                                             ^~~~~~~~~~

The problem is direct header inclusion.  Nothing in the kernel includes gvt.h
when CONFIG_DRM_I915_GVT=n, but the header include guard tests include headers
directly on the command line.  I think I'll define a "stub" specifically to play
nice with this sort of testing.  Guarding the guts of gvt.h with CONFIG_DRM_I915_GVT
would just propagate the problem, and guarding the node definition in "struct
intel_vgpu" would be confusing since the guard would be dead code for all intents
and purposes.

The obvious alternative would be to leave kvm_page_track_notifier_node outside of
the #ifdef, but I really want to bury kvm_page_track_notifier_head for KVM's sake,
and having "head" buried but not "node" would also be weird and confusing.

diff --git a/arch/x86/include/asm/kvm_page_track.h b/arch/x86/include/asm/kvm_page_track.h
index 33f087437209..3d040741044b 100644
--- a/arch/x86/include/asm/kvm_page_track.h
+++ b/arch/x86/include/asm/kvm_page_track.h
@@ -51,6 +51,12 @@ void kvm_page_track_unregister_notifier(struct kvm *kvm,
 
 int kvm_write_track_add_gfn(struct kvm *kvm, gfn_t gfn);
 int kvm_write_track_remove_gfn(struct kvm *kvm, gfn_t gfn);
+#else
+/*
+ * Allow defining a node in a structure even if page tracking is disabled, e.g.
+ * to play nice with testing headers via direct inclusion from the command line.
+ */
+struct kvm_page_track_notifier_node {};
 #endif /* CONFIG_KVM_EXTERNAL_WRITE_TRACKING */
 
 #endif


WARNING: multiple messages have this Message-ID (diff)
From: Sean Christopherson <seanjc@google.com>
To: Yan Zhao <yan.y.zhao@intel.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Zhenyu Wang <zhenyuw@linux.intel.com>,
	Zhi Wang <zhi.a.wang@intel.com>,
	kvm@vger.kernel.org, intel-gvt-dev@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	Ben Gardon <bgardon@google.com>
Subject: Re: [PATCH v2 20/27] KVM: x86/mmu: Use page-track notifiers iff there are external users
Date: Thu, 4 May 2023 12:54:40 -0700	[thread overview]
Message-ID: <ZFQNgKGcexo0nQ4S@google.com> (raw)
In-Reply-To: <ZBH4RizqdigXeYte@google.com>

On Wed, Mar 15, 2023, Sean Christopherson wrote:
> On Wed, Mar 15, 2023, Yan Zhao wrote:
> > On Fri, Mar 10, 2023 at 04:22:51PM -0800, Sean Christopherson wrote:
> > > Disable the page-track notifier code at compile time if there are no
> > > external users, i.e. if CONFIG_KVM_EXTERNAL_WRITE_TRACKING=n.  KVM itself
> > > now hooks emulated writes directly instead of relying on the page-track
> > > mechanism.
> > > 
> > > Signed-off-by: Sean Christopherson <seanjc@google.com>
> > > ---
> > >  arch/x86/include/asm/kvm_host.h       |  2 ++
> > >  arch/x86/include/asm/kvm_page_track.h |  2 ++
> > >  arch/x86/kvm/mmu/page_track.c         |  9 ++++-----
> > >  arch/x86/kvm/mmu/page_track.h         | 29 +++++++++++++++++++++++----
> > >  4 files changed, 33 insertions(+), 9 deletions(-)
> > > 
> > > diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
> > > index 1a4225237564..a3423711e403 100644
> > > --- a/arch/x86/include/asm/kvm_host.h
> > > +++ b/arch/x86/include/asm/kvm_host.h
> > > @@ -1265,7 +1265,9 @@ struct kvm_arch {
> > >  	 * create an NX huge page (without hanging the guest).
> > >  	 */
> > >  	struct list_head possible_nx_huge_pages;
> > > +#ifdef CONFIG_KVM_EXTERNAL_WRITE_TRACKING
> > >  	struct kvm_page_track_notifier_head track_notifier_head;
> > > +#endif
> > >  	/*
> > >  	 * Protects marking pages unsync during page faults, as TDP MMU page
> > >  	 * faults only take mmu_lock for read.  For simplicity, the unsync
> > > diff --git a/arch/x86/include/asm/kvm_page_track.h b/arch/x86/include/asm/kvm_page_track.h
> > > index deece45936a5..53c2adb25a07 100644
> > > --- a/arch/x86/include/asm/kvm_page_track.h
> > > +++ b/arch/x86/include/asm/kvm_page_track.h
> > The "#ifdef CONFIG_KVM_EXTERNAL_WRITE_TRACKING" can be moved to the
> > front of this file?
> > All the structures are only exposed for external users now.
> 
> Huh.  I've no idea why I didn't do that.  IIRC, the entire reason past me wrapped
> track_notifier_head in an #ifdef was to allow this change in kvm_page_track.h.
> 
> I'll do this in the next version unless I discover an edge case I'm overlooking.

Ah, deja vu.  I tried this first time around, and got yelled at by the kernel test
robot.  Unsuprisingly, my second attempt yielded the same result :-)

  HDRTEST drivers/gpu/drm/i915/gvt/gvt.h
In file included from <command-line>:
gpu/drivers/gpu/drm/i915/gvt/gvt.h:236:45: error: field ‘track_node’ has incomplete type
  236 |         struct kvm_page_track_notifier_node track_node;
      |                                             ^~~~~~~~~~

The problem is direct header inclusion.  Nothing in the kernel includes gvt.h
when CONFIG_DRM_I915_GVT=n, but the header include guard tests include headers
directly on the command line.  I think I'll define a "stub" specifically to play
nice with this sort of testing.  Guarding the guts of gvt.h with CONFIG_DRM_I915_GVT
would just propagate the problem, and guarding the node definition in "struct
intel_vgpu" would be confusing since the guard would be dead code for all intents
and purposes.

The obvious alternative would be to leave kvm_page_track_notifier_node outside of
the #ifdef, but I really want to bury kvm_page_track_notifier_head for KVM's sake,
and having "head" buried but not "node" would also be weird and confusing.

diff --git a/arch/x86/include/asm/kvm_page_track.h b/arch/x86/include/asm/kvm_page_track.h
index 33f087437209..3d040741044b 100644
--- a/arch/x86/include/asm/kvm_page_track.h
+++ b/arch/x86/include/asm/kvm_page_track.h
@@ -51,6 +51,12 @@ void kvm_page_track_unregister_notifier(struct kvm *kvm,
 
 int kvm_write_track_add_gfn(struct kvm *kvm, gfn_t gfn);
 int kvm_write_track_remove_gfn(struct kvm *kvm, gfn_t gfn);
+#else
+/*
+ * Allow defining a node in a structure even if page tracking is disabled, e.g.
+ * to play nice with testing headers via direct inclusion from the command line.
+ */
+struct kvm_page_track_notifier_node {};
 #endif /* CONFIG_KVM_EXTERNAL_WRITE_TRACKING */
 
 #endif


  reply	other threads:[~2023-05-04 19:54 UTC|newest]

Thread overview: 160+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-11  0:22 [Intel-gfx] [PATCH v2 00/27] drm/i915/gvt: KVM: KVMGT fixes and page-track cleanups Sean Christopherson
2023-03-11  0:22 ` Sean Christopherson
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 01/27] drm/i915/gvt: Verify pfn is "valid" before dereferencing "struct page" Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-13 15:37   ` [Intel-gfx] " Wang, Wei W
2023-03-13 15:37     ` Wang, Wei W
2023-03-15 18:13     ` [Intel-gfx] " Andrzej Hajda
2023-03-15 19:23       ` Sean Christopherson
2023-03-15 19:23         ` Sean Christopherson
2023-03-17  4:20   ` Yan Zhao
2023-03-17  4:20     ` Yan Zhao
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 02/27] KVM: x86/mmu: Factor out helper to get max mapping size of a memslot Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-13 15:37   ` [Intel-gfx] " Wang, Wei W
2023-03-13 15:37     ` Wang, Wei W
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 03/27] drm/i915/gvt: remove interface intel_gvt_is_valid_gfn Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-17  4:26   ` [Intel-gfx] " Yan Zhao
2023-03-17  4:26     ` Yan Zhao
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 04/27] drm/i915/gvt: Incorporate KVM memslot info into check for 2MiB GTT entry Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-14  3:09   ` [Intel-gfx] " Yan Zhao
2023-03-14  3:09     ` Yan Zhao
2023-03-14 17:13     ` [Intel-gfx] " Sean Christopherson
2023-03-14 17:13       ` Sean Christopherson
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 05/27] drm/i915/gvt: Verify VFIO-pinned page is THP when shadowing 2M gtt entry Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-17  5:33   ` [Intel-gfx] " Yan Zhao
2023-03-17  5:33     ` Yan Zhao
2023-05-04 20:41     ` [Intel-gfx] " Sean Christopherson
2023-05-04 20:41       ` Sean Christopherson
2023-05-06  6:35       ` [Intel-gfx] " Yan Zhao
2023-05-06  6:35         ` Yan Zhao
2023-05-06 10:57         ` [Intel-gfx] " Yan Zhao
2023-05-06 10:57           ` Yan Zhao
2023-05-08 14:05           ` [Intel-gfx] " Sean Christopherson
2023-05-08 14:05             ` Sean Christopherson
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 06/27] drm/i915/gvt: Put the page reference obtained by KVM's gfn_to_pfn() Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-17  6:18   ` [Intel-gfx] " Yan Zhao
2023-03-17  6:18     ` Yan Zhao
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 07/27] drm/i915/gvt: Don't rely on KVM's gfn_to_pfn() to query possible 2M GTT Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-17  5:37   ` [Intel-gfx] " Yan Zhao
2023-03-17  5:37     ` Yan Zhao
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 08/27] drm/i915/gvt: Use an "unsigned long" to iterate over memslot gfns Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-17  6:19   ` [Intel-gfx] " Yan Zhao
2023-03-17  6:19     ` Yan Zhao
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 09/27] drm/i915/gvt: Drop unused helper intel_vgpu_reset_gtt() Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-17  6:20   ` [Intel-gfx] " Yan Zhao
2023-03-17  6:20     ` Yan Zhao
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 10/27] drm/i915/gvt: Protect gfn hash table with vgpu_lock Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-17  6:21   ` [Intel-gfx] " Yan Zhao
2023-03-17  6:21     ` Yan Zhao
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 11/27] KVM: x86/mmu: Don't rely on page-track mechanism to flush on memslot change Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-15  1:08   ` [Intel-gfx] " Yan Zhao
2023-03-15  1:08     ` Yan Zhao
2023-03-15 15:32     ` [Intel-gfx] " Sean Christopherson
2023-03-15 15:32       ` Sean Christopherson
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 12/27] KVM: x86/mmu: Don't bounce through page-track mechanism for guest PTEs Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-17  6:37   ` [Intel-gfx] " Yan Zhao
2023-03-17  6:37     ` Yan Zhao
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 13/27] KVM: drm/i915/gvt: Drop @vcpu from KVM's ->track_write() hook Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-17  7:28   ` [Intel-gfx] " Yan Zhao
2023-03-17  7:28     ` Yan Zhao
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 14/27] KVM: x86: Reject memslot MOVE operations if KVMGT is attached Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-15  8:03   ` [Intel-gfx] " Yan Zhao
2023-03-15  8:03     ` Yan Zhao
2023-03-15 15:43     ` [Intel-gfx] " Sean Christopherson
2023-03-15 15:43       ` Sean Christopherson
2023-03-16  9:27       ` [Intel-gfx] " Yan Zhao
2023-03-16  9:27         ` Yan Zhao
2023-03-17  7:29   ` [Intel-gfx] " Yan Zhao
2023-03-17  7:29     ` Yan Zhao
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 15/27] drm/i915/gvt: Don't bother removing write-protection on to-be-deleted slot Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-17  7:30   ` [Intel-gfx] " Yan Zhao
2023-03-17  7:30     ` Yan Zhao
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 16/27] KVM: x86: Add a new page-track hook to handle memslot deletion Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-17  7:43   ` [Intel-gfx] " Yan Zhao
2023-03-17  7:43     ` Yan Zhao
2023-03-17 16:20     ` [Intel-gfx] " Sean Christopherson
2023-03-17 16:20       ` Sean Christopherson
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 17/27] drm/i915/gvt: switch from ->track_flush_slot() to ->track_remove_region() Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-17  7:45   ` [Intel-gfx] " Yan Zhao
2023-03-17  7:45     ` Yan Zhao
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 18/27] KVM: x86: Remove the unused page-track hook track_flush_slot() Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 19/27] KVM: x86/mmu: Move KVM-only page-track declarations to internal header Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-15  8:44   ` [Intel-gfx] " Yan Zhao
2023-03-15  8:44     ` Yan Zhao
2023-03-15 15:13     ` [Intel-gfx] " Sean Christopherson
2023-03-15 15:13       ` Sean Christopherson
2023-03-16  9:19       ` [Intel-gfx] " Yan Zhao
2023-03-16  9:19         ` Yan Zhao
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 20/27] KVM: x86/mmu: Use page-track notifiers iff there are external users Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-15  9:34   ` [Intel-gfx] " Yan Zhao
2023-03-15  9:34     ` Yan Zhao
2023-03-15 16:21     ` [Intel-gfx] " Sean Christopherson
2023-03-15 16:21       ` Sean Christopherson
2023-03-16  9:29       ` [Intel-gfx] " Yan Zhao
2023-03-16  9:29         ` Yan Zhao
2023-03-15 10:36   ` [Intel-gfx] " Yan Zhao
2023-03-15 10:36     ` Yan Zhao
2023-03-15 16:54     ` [Intel-gfx] " Sean Christopherson
2023-03-15 16:54       ` Sean Christopherson
2023-05-04 19:54       ` Sean Christopherson [this message]
2023-05-04 19:54         ` Sean Christopherson
2023-05-06  1:08         ` [Intel-gfx] " Yan Zhao
2023-05-06  1:08           ` Yan Zhao
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 21/27] KVM: x86/mmu: Drop infrastructure for multiple page-track modes Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 22/27] KVM: x86/mmu: Rename page-track APIs to reflect the new reality Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 23/27] KVM: x86/mmu: Assert that correct locks are held for page write-tracking Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-17  7:55   ` [Intel-gfx] " Yan Zhao
2023-03-17  7:55     ` Yan Zhao
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 24/27] KVM: x86/mmu: Bug the VM if write-tracking is used but not enabled Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 25/27] KVM: x86/mmu: Drop @slot param from exported/external page-track APIs Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-17  8:28   ` [Intel-gfx] " Yan Zhao
2023-03-17  8:28     ` Yan Zhao
2023-03-23  8:50     ` [Intel-gfx] " Yan Zhao
2023-03-23  8:50       ` Yan Zhao
2023-05-03 23:16       ` [Intel-gfx] " Sean Christopherson
2023-05-03 23:16         ` Sean Christopherson
2023-05-04  2:17         ` [Intel-gfx] " Yan Zhao
2023-05-04  2:17           ` Yan Zhao
2023-05-08  1:15           ` [Intel-gfx] " Yan Zhao
2023-05-08  1:15             ` Yan Zhao
2023-05-11 22:39             ` [Intel-gfx] " Sean Christopherson
2023-05-11 22:39               ` Sean Christopherson
2023-05-12  2:58               ` [Intel-gfx] " Yan Zhao
2023-05-12  2:58                 ` Yan Zhao
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 26/27] KVM: x86/mmu: Handle KVM bookkeeping in page-track APIs, not callers Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-17  8:52   ` [Intel-gfx] " Yan Zhao
2023-03-17  8:52     ` Yan Zhao
2023-03-11  0:22 ` [Intel-gfx] [PATCH v2 27/27] drm/i915/gvt: Drop final dependencies on KVM internal details Sean Christopherson
2023-03-11  0:22   ` Sean Christopherson
2023-03-17  8:58   ` [Intel-gfx] " Yan Zhao
2023-03-17  8:58     ` Yan Zhao
2023-03-13  9:58 ` [Intel-gfx] [PATCH v2 00/27] drm/i915/gvt: KVM: KVMGT fixes and page-track cleanups Yan Zhao
2023-03-13  9:58   ` Yan Zhao
2023-03-16 12:27 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/gvt: KVM: KVMGT fixes and page-track cleanups (rev5) Patchwork
2023-05-04 22:36 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915/gvt: KVM: KVMGT fixes and page-track cleanups (rev6) Patchwork
2023-05-06  2:32 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915/gvt: KVM: KVMGT fixes and page-track cleanups (rev7) Patchwork

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=ZFQNgKGcexo0nQ4S@google.com \
    --to=seanjc@google.com \
    --cc=bgardon@google.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-gvt-dev@lists.freedesktop.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=yan.y.zhao@intel.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.