From: "Wang, Wei W" <wei.w.wang@intel.com> To: "Christopherson,, Sean" <seanjc@google.com>, Paolo Bonzini <pbonzini@redhat.com>, Zhenyu Wang <zhenyuw@linux.intel.com>, "Wang, Zhi A" <zhi.a.wang@intel.com> Cc: "kvm@vger.kernel.org" <kvm@vger.kernel.org>, "intel-gvt-dev@lists.freedesktop.org" <intel-gvt-dev@lists.freedesktop.org>, "intel-gfx@lists.freedesktop.org" <intel-gfx@lists.freedesktop.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "Zhao, Yan Y" <yan.y.zhao@intel.com>, Ben Gardon <bgardon@google.com> Subject: RE: [PATCH v2 02/27] KVM: x86/mmu: Factor out helper to get max mapping size of a memslot Date: Mon, 13 Mar 2023 15:37:05 +0000 [thread overview] Message-ID: <DS0PR11MB6373DA9C535E2EAA54E38AADDCB99@DS0PR11MB6373.namprd11.prod.outlook.com> (raw) In-Reply-To: <20230311002258.852397-3-seanjc@google.com> On Saturday, March 11, 2023 8:23 AM, Sean Christopherson wrote: > Extract the memslot-related logic of kvm_mmu_max_mapping_level() into a > new helper so that KVMGT can determine whether or not mapping a 2MiB > page into the guest is (dis)allowed per KVM's memslots. > > No functional change intended. > > Signed-off-by: Sean Christopherson <seanjc@google.com> > --- > arch/x86/kvm/mmu/mmu.c | 21 +++++++++++++++------ > arch/x86/kvm/mmu/mmu_internal.h | 2 ++ > 2 files changed, 17 insertions(+), 6 deletions(-) > > diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index > c8ebe542c565..4685c80e441b 100644 > --- a/arch/x86/kvm/mmu/mmu.c > +++ b/arch/x86/kvm/mmu/mmu.c > @@ -3083,20 +3083,29 @@ static int host_pfn_mapping_level(struct kvm > *kvm, gfn_t gfn, > return level; > } > > +int kvm_mmu_max_slot_mapping_level(const struct kvm_memory_slot *slot, > + gfn_t gfn, int max_level) It seems more common to be named "kvm_mmu_slot_max_mapping_level" (we have other kvm_mmu_slot_* functions defined already) > +{ > + struct kvm_lpage_info *linfo; > + > + for ( ; max_level > PG_LEVEL_4K; max_level--) { > + linfo = lpage_info_slot(gfn, slot, max_level); > + if (!linfo->disallow_lpage) > + break; > + } > + return max_level; > +} > + > int kvm_mmu_max_mapping_level(struct kvm *kvm, > const struct kvm_memory_slot *slot, gfn_t gfn, > int max_level) > { > - struct kvm_lpage_info *linfo; > int host_level; > > max_level = min(max_level, max_huge_page_level); Better to also have this min(,) moved to the helper? E.g. if max_huge_page_level has been 4KB, no need to check into lpage_info in the helper.
WARNING: multiple messages have this Message-ID (diff)
From: "Wang, Wei W" <wei.w.wang@intel.com> To: "Christopherson,, Sean" <seanjc@google.com>, Paolo Bonzini <pbonzini@redhat.com>, Zhenyu Wang <zhenyuw@linux.intel.com>, "Wang, Zhi A" <zhi.a.wang@intel.com> Cc: "Zhao, Yan Y" <yan.y.zhao@intel.com>, "kvm@vger.kernel.org" <kvm@vger.kernel.org>, "intel-gfx@lists.freedesktop.org" <intel-gfx@lists.freedesktop.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, Ben Gardon <bgardon@google.com>, "intel-gvt-dev@lists.freedesktop.org" <intel-gvt-dev@lists.freedesktop.org> Subject: Re: [Intel-gfx] [PATCH v2 02/27] KVM: x86/mmu: Factor out helper to get max mapping size of a memslot Date: Mon, 13 Mar 2023 15:37:05 +0000 [thread overview] Message-ID: <DS0PR11MB6373DA9C535E2EAA54E38AADDCB99@DS0PR11MB6373.namprd11.prod.outlook.com> (raw) In-Reply-To: <20230311002258.852397-3-seanjc@google.com> On Saturday, March 11, 2023 8:23 AM, Sean Christopherson wrote: > Extract the memslot-related logic of kvm_mmu_max_mapping_level() into a > new helper so that KVMGT can determine whether or not mapping a 2MiB > page into the guest is (dis)allowed per KVM's memslots. > > No functional change intended. > > Signed-off-by: Sean Christopherson <seanjc@google.com> > --- > arch/x86/kvm/mmu/mmu.c | 21 +++++++++++++++------ > arch/x86/kvm/mmu/mmu_internal.h | 2 ++ > 2 files changed, 17 insertions(+), 6 deletions(-) > > diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index > c8ebe542c565..4685c80e441b 100644 > --- a/arch/x86/kvm/mmu/mmu.c > +++ b/arch/x86/kvm/mmu/mmu.c > @@ -3083,20 +3083,29 @@ static int host_pfn_mapping_level(struct kvm > *kvm, gfn_t gfn, > return level; > } > > +int kvm_mmu_max_slot_mapping_level(const struct kvm_memory_slot *slot, > + gfn_t gfn, int max_level) It seems more common to be named "kvm_mmu_slot_max_mapping_level" (we have other kvm_mmu_slot_* functions defined already) > +{ > + struct kvm_lpage_info *linfo; > + > + for ( ; max_level > PG_LEVEL_4K; max_level--) { > + linfo = lpage_info_slot(gfn, slot, max_level); > + if (!linfo->disallow_lpage) > + break; > + } > + return max_level; > +} > + > int kvm_mmu_max_mapping_level(struct kvm *kvm, > const struct kvm_memory_slot *slot, gfn_t gfn, > int max_level) > { > - struct kvm_lpage_info *linfo; > int host_level; > > max_level = min(max_level, max_huge_page_level); Better to also have this min(,) moved to the helper? E.g. if max_huge_page_level has been 4KB, no need to check into lpage_info in the helper.
next prev parent reply other threads:[~2023-03-13 15:37 UTC|newest] Thread overview: 160+ 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 ` [Intel-gfx] " 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-11 0:22 ` [Intel-gfx] " Sean Christopherson 2023-03-13 15:37 ` Wang, Wei W 2023-03-13 15:37 ` [Intel-gfx] " Wang, Wei W 2023-03-15 18:13 ` 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 ` [Intel-gfx] " 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-11 0:22 ` [Intel-gfx] " Sean Christopherson 2023-03-13 15:37 ` Wang, Wei W [this message] 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-11 0:22 ` [Intel-gfx] " Sean Christopherson 2023-03-17 4:26 ` Yan Zhao 2023-03-17 4:26 ` [Intel-gfx] " 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-11 0:22 ` [Intel-gfx] " Sean Christopherson 2023-03-14 3:09 ` Yan Zhao 2023-03-14 3:09 ` [Intel-gfx] " Yan Zhao 2023-03-14 17:13 ` Sean Christopherson 2023-03-14 17:13 ` [Intel-gfx] " 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-11 0:22 ` [Intel-gfx] " Sean Christopherson 2023-03-17 5:33 ` Yan Zhao 2023-03-17 5:33 ` [Intel-gfx] " Yan Zhao 2023-05-04 20:41 ` 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 ` Yan Zhao 2023-05-06 10:57 ` [Intel-gfx] " Yan Zhao 2023-05-08 14:05 ` Sean Christopherson 2023-05-08 14:05 ` [Intel-gfx] " 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-11 0:22 ` [Intel-gfx] " Sean Christopherson 2023-03-17 6:18 ` Yan Zhao 2023-03-17 6:18 ` [Intel-gfx] " 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 ` Yan Zhao 2023-03-17 5:37 ` [Intel-gfx] " 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 ` Yan Zhao 2023-03-17 6:19 ` [Intel-gfx] " 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 ` Yan Zhao 2023-03-17 6:20 ` [Intel-gfx] " 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 ` Yan Zhao 2023-03-17 6:21 ` [Intel-gfx] " 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 ` Sean Christopherson 2023-03-15 15:32 ` [Intel-gfx] " 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 ` Yan Zhao 2023-03-17 6:37 ` [Intel-gfx] " 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 ` Yan Zhao 2023-03-15 8:03 ` [Intel-gfx] " Yan Zhao 2023-03-15 15:43 ` Sean Christopherson 2023-03-15 15:43 ` [Intel-gfx] " Sean Christopherson 2023-03-16 9:27 ` Yan Zhao 2023-03-16 9:27 ` [Intel-gfx] " Yan Zhao 2023-03-17 7:29 ` 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 ` Sean Christopherson 2023-03-17 16:20 ` [Intel-gfx] " 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 ` Sean Christopherson 2023-03-15 15:13 ` [Intel-gfx] " Sean Christopherson 2023-03-16 9:19 ` Yan Zhao 2023-03-16 9:19 ` [Intel-gfx] " 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 ` Sean Christopherson 2023-03-15 16:21 ` [Intel-gfx] " Sean Christopherson 2023-03-16 9:29 ` Yan Zhao 2023-03-16 9:29 ` Yan Zhao 2023-03-15 10:36 ` Yan Zhao 2023-03-15 10:36 ` [Intel-gfx] " Yan Zhao 2023-03-15 16:54 ` Sean Christopherson 2023-03-15 16:54 ` [Intel-gfx] " Sean Christopherson 2023-05-04 19:54 ` Sean Christopherson 2023-05-04 19:54 ` Sean Christopherson 2023-05-06 1:08 ` Yan Zhao 2023-05-06 1:08 ` [Intel-gfx] " 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 ` Yan Zhao 2023-03-17 7:55 ` [Intel-gfx] " 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 ` Yan Zhao 2023-03-17 8:28 ` [Intel-gfx] " Yan Zhao 2023-03-23 8:50 ` Yan Zhao 2023-03-23 8:50 ` [Intel-gfx] " Yan Zhao 2023-05-03 23:16 ` Sean Christopherson 2023-05-03 23:16 ` [Intel-gfx] " Sean Christopherson 2023-05-04 2:17 ` Yan Zhao 2023-05-04 2:17 ` [Intel-gfx] " Yan Zhao 2023-05-08 1:15 ` Yan Zhao 2023-05-08 1:15 ` [Intel-gfx] " Yan Zhao 2023-05-11 22:39 ` Sean Christopherson 2023-05-11 22:39 ` [Intel-gfx] " Sean Christopherson 2023-05-12 2:58 ` Yan Zhao 2023-05-12 2:58 ` [Intel-gfx] " 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 ` Yan Zhao 2023-03-17 8:52 ` [Intel-gfx] " 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 ` Yan Zhao 2023-03-17 8:58 ` [Intel-gfx] " 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=DS0PR11MB6373DA9C535E2EAA54E38AADDCB99@DS0PR11MB6373.namprd11.prod.outlook.com \ --to=wei.w.wang@intel.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=seanjc@google.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: linkBe 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.