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 19/27] KVM: x86/mmu: Move KVM-only page-track declarations to internal header
Date: Wed, 15 Mar 2023 08:13:37 -0700 [thread overview]
Message-ID: <ZBHgoS/4R35KByOp@google.com> (raw)
In-Reply-To: <ZBGFXrpSXpF5NUlV@yzhao56-desk.sh.intel.com>
On Wed, Mar 15, 2023, Yan Zhao wrote:
> On Fri, Mar 10, 2023 at 04:22:50PM -0800, Sean Christopherson wrote:
> > Bury the declaration of the page-track helpers that are intended only for
> > internal KVM use in a "private" header. In addition to guarding against
> > unwanted usage of the internal-only helpers, dropping their definitions
> > avoids exposing other structures that should be KVM-internal, e.g. for
> > memslots. This is a baby step toward making kvm_host.h a KVM-internal
> > header in the very distant future.
> >
> > Signed-off-by: Sean Christopherson <seanjc@google.com>
> > ---
> > arch/x86/include/asm/kvm_page_track.h | 26 ++++-----------------
> > arch/x86/kvm/mmu/mmu.c | 3 ++-
> > arch/x86/kvm/mmu/page_track.c | 8 +------
> > arch/x86/kvm/mmu/page_track.h | 33 +++++++++++++++++++++++++++
> > arch/x86/kvm/x86.c | 1 +
> > 5 files changed, 42 insertions(+), 29 deletions(-)
> > create mode 100644 arch/x86/kvm/mmu/page_track.h
> >
> > diff --git a/arch/x86/include/asm/kvm_page_track.h b/arch/x86/include/asm/kvm_page_track.h
> > index e5eb98ca4fce..deece45936a5 100644
> > --- a/arch/x86/include/asm/kvm_page_track.h
> > +++ b/arch/x86/include/asm/kvm_page_track.h
>
> A curious question:
> are arch/x86/include/asm/kvm_*.h all expected to be external accessible?
Depends on what you mean by "expected". Currently, yes, everything in there is
globally visible. But the vast majority of structs, defines, functions, etc. aren't
intended for external non-KVM consumption, things ended up being globally visible
largely through carelessness and/or a lack of a forcing function.
E.g. there is absolutely no reason anything outside of KVM should need
arch/x86/include/asm/kvm-x86-ops.h, but it landed in asm/ because, at the time it
was added, nothing would be harmed by making kvm-x86-ops.h "public" and we didn't
scrutinize the patches well enough.
My primary motivation for this series is to (eventually) get to a state where only
select symbols/defines/etc. are exposed by KVM to the outside world, and everything
else is internal only. The end goal of tightly restricting KVM's global API is to
allow concurrently loading multiple instances of kvm.ko so that userspace can
upgrade/rollback KVM without needed to move VMs off the host, i.e. by performing
intrahost migration between differenate instances of KVM on the same host. To do
that safely, anything that is visible outside of KVM needs to be compatible across
different instances of KVM, e.g. if kvm_vcpu is "public" then a KVM upgrade/rollback
wouldn't be able to touch "struct kvm_vcpu" in any way. We'll definitely want to be
able to modify things like the vCPU structures, thus the push to restrict the API.
But even if we never realize that end goal, IMO drastically reducing KVM's "public"
API surface is worthy goal in and of itself.
next prev parent reply other threads:[~2023-03-15 15:13 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-11 0:22 [PATCH v2 00/27] drm/i915/gvt: KVM: KVMGT fixes and page-track cleanups Sean Christopherson
2023-03-11 0:22 ` [PATCH v2 01/27] drm/i915/gvt: Verify pfn is "valid" before dereferencing "struct page" Sean Christopherson
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-17 4:20 ` Yan Zhao
2023-03-11 0:22 ` [PATCH v2 02/27] KVM: x86/mmu: Factor out helper to get max mapping size of a memslot Sean Christopherson
2023-03-13 15:37 ` Wang, Wei W
2023-03-11 0:22 ` [PATCH v2 03/27] drm/i915/gvt: remove interface intel_gvt_is_valid_gfn Sean Christopherson
2023-03-17 4:26 ` Yan Zhao
2023-03-11 0:22 ` [PATCH v2 04/27] drm/i915/gvt: Incorporate KVM memslot info into check for 2MiB GTT entry Sean Christopherson
2023-03-14 3:09 ` Yan Zhao
2023-03-14 17:13 ` Sean Christopherson
2023-03-11 0:22 ` [PATCH v2 05/27] drm/i915/gvt: Verify VFIO-pinned page is THP when shadowing 2M gtt entry Sean Christopherson
2023-03-17 5:33 ` Yan Zhao
2023-05-04 20:41 ` Sean Christopherson
2023-05-06 6:35 ` Yan Zhao
2023-05-06 10:57 ` Yan Zhao
2023-05-08 14:05 ` Sean Christopherson
2023-03-11 0:22 ` [PATCH v2 06/27] drm/i915/gvt: Put the page reference obtained by KVM's gfn_to_pfn() Sean Christopherson
2023-03-17 6:18 ` Yan Zhao
2023-03-11 0:22 ` [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-17 5:37 ` Yan Zhao
2023-03-11 0:22 ` [PATCH v2 08/27] drm/i915/gvt: Use an "unsigned long" to iterate over memslot gfns Sean Christopherson
2023-03-17 6:19 ` Yan Zhao
2023-03-11 0:22 ` [PATCH v2 09/27] drm/i915/gvt: Drop unused helper intel_vgpu_reset_gtt() Sean Christopherson
2023-03-17 6:20 ` Yan Zhao
2023-03-11 0:22 ` [PATCH v2 10/27] drm/i915/gvt: Protect gfn hash table with vgpu_lock Sean Christopherson
2023-03-17 6:21 ` Yan Zhao
2023-03-11 0:22 ` [PATCH v2 11/27] KVM: x86/mmu: Don't rely on page-track mechanism to flush on memslot change Sean Christopherson
2023-03-15 1:08 ` Yan Zhao
2023-03-15 15:32 ` Sean Christopherson
2023-03-11 0:22 ` [PATCH v2 12/27] KVM: x86/mmu: Don't bounce through page-track mechanism for guest PTEs Sean Christopherson
2023-03-17 6:37 ` Yan Zhao
2023-03-11 0:22 ` [PATCH v2 13/27] KVM: drm/i915/gvt: Drop @vcpu from KVM's ->track_write() hook Sean Christopherson
2023-03-17 7:28 ` Yan Zhao
2023-03-11 0:22 ` [PATCH v2 14/27] KVM: x86: Reject memslot MOVE operations if KVMGT is attached Sean Christopherson
2023-03-15 8:03 ` Yan Zhao
2023-03-15 15:43 ` Sean Christopherson
2023-03-16 9:27 ` Yan Zhao
2023-03-17 7:29 ` Yan Zhao
2023-03-11 0:22 ` [PATCH v2 15/27] drm/i915/gvt: Don't bother removing write-protection on to-be-deleted slot Sean Christopherson
2023-03-17 7:30 ` Yan Zhao
2023-03-11 0:22 ` [PATCH v2 16/27] KVM: x86: Add a new page-track hook to handle memslot deletion Sean Christopherson
2023-03-17 7:43 ` Yan Zhao
2023-03-17 16:20 ` Sean Christopherson
2023-03-11 0:22 ` [PATCH v2 17/27] drm/i915/gvt: switch from ->track_flush_slot() to ->track_remove_region() Sean Christopherson
2023-03-17 7:45 ` Yan Zhao
2023-03-11 0:22 ` [PATCH v2 18/27] KVM: x86: Remove the unused page-track hook track_flush_slot() Sean Christopherson
2023-03-11 0:22 ` [PATCH v2 19/27] KVM: x86/mmu: Move KVM-only page-track declarations to internal header Sean Christopherson
2023-03-15 8:44 ` Yan Zhao
2023-03-15 15:13 ` Sean Christopherson [this message]
2023-03-16 9:19 ` Yan Zhao
2023-03-11 0:22 ` [PATCH v2 20/27] KVM: x86/mmu: Use page-track notifiers iff there are external users Sean Christopherson
2023-03-15 9:34 ` Yan Zhao
2023-03-15 16:21 ` Sean Christopherson
2023-03-16 9:29 ` Yan Zhao
2023-03-15 10:36 ` Yan Zhao
2023-03-15 16:54 ` Sean Christopherson
2023-05-04 19:54 ` Sean Christopherson
2023-05-06 1:08 ` Yan Zhao
2023-03-11 0:22 ` [PATCH v2 21/27] KVM: x86/mmu: Drop infrastructure for multiple page-track modes Sean Christopherson
2023-03-11 0:22 ` [PATCH v2 22/27] KVM: x86/mmu: Rename page-track APIs to reflect the new reality Sean Christopherson
2023-03-11 0:22 ` [PATCH v2 23/27] KVM: x86/mmu: Assert that correct locks are held for page write-tracking Sean Christopherson
2023-03-17 7:55 ` Yan Zhao
2023-03-11 0:22 ` [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 ` [PATCH v2 25/27] KVM: x86/mmu: Drop @slot param from exported/external page-track APIs Sean Christopherson
2023-03-17 8:28 ` Yan Zhao
2023-03-23 8:50 ` Yan Zhao
2023-05-03 23:16 ` Sean Christopherson
2023-05-04 2:17 ` Yan Zhao
2023-05-08 1:15 ` Yan Zhao
2023-05-11 22:39 ` Sean Christopherson
2023-05-12 2:58 ` Yan Zhao
2023-03-11 0:22 ` [PATCH v2 26/27] KVM: x86/mmu: Handle KVM bookkeeping in page-track APIs, not callers Sean Christopherson
2023-03-17 8:52 ` Yan Zhao
2023-03-11 0:22 ` [PATCH v2 27/27] drm/i915/gvt: Drop final dependencies on KVM internal details Sean Christopherson
2023-03-17 8:58 ` Yan Zhao
2023-03-13 9:58 ` [PATCH v2 00/27] drm/i915/gvt: KVM: KVMGT fixes and page-track cleanups Yan Zhao
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=ZBHgoS/4R35KByOp@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 \
--cc=zhenyuw@linux.intel.com \
--cc=zhi.a.wang@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).