All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sean Christopherson <sean.j.christopherson@intel.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Sean Christopherson <sean.j.christopherson@intel.com>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Wanpeng Li <wanpengli@tencent.com>,
	Jim Mattson <jmattson@google.com>, Joerg Roedel <joro@8bytes.org>,
	kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
	Xiaoyao Li <xiaoyao.li@intel.com>
Subject: [PATCH v2 57/66] KVM: VMX: Directly query Intel PT mode when refreshing PMUs
Date: Mon,  2 Mar 2020 15:57:00 -0800	[thread overview]
Message-ID: <20200302235709.27467-58-sean.j.christopherson@intel.com> (raw)
In-Reply-To: <20200302235709.27467-1-sean.j.christopherson@intel.com>

Use vmx_pt_mode_is_host_guest() in intel_pmu_refresh() instead of
bouncing through kvm_x86_ops->pt_supported, and remove ->pt_supported()
as the PMU code was the last remaining user.

Opportunistically clean up the wording of a comment that referenced
kvm_x86_ops->pt_supported().

No functional change intended.

Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
---
 arch/x86/include/asm/kvm_host.h | 2 --
 arch/x86/kvm/svm.c              | 7 -------
 arch/x86/kvm/vmx/pmu_intel.c    | 2 +-
 arch/x86/kvm/vmx/vmx.c          | 6 ------
 arch/x86/kvm/x86.c              | 7 +++----
 5 files changed, 4 insertions(+), 20 deletions(-)

diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index 25d9a0d45cc6..4fbff24aed8a 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -1168,8 +1168,6 @@ struct kvm_x86_ops {
 	void (*handle_exit_irqoff)(struct kvm_vcpu *vcpu,
 		enum exit_fastpath_completion *exit_fastpath);
 
-	bool (*pt_supported)(void);
-
 	int (*check_nested_events)(struct kvm_vcpu *vcpu, bool external_intr);
 	void (*request_immediate_exit)(struct kvm_vcpu *vcpu);
 
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 692b8ffdbad3..9dc614cfd129 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -6070,11 +6070,6 @@ static int svm_get_lpage_level(void)
 	return PT_PDPE_LEVEL;
 }
 
-static bool svm_pt_supported(void)
-{
-	return false;
-}
-
 static bool svm_has_wbinvd_exit(void)
 {
 	return true;
@@ -7434,8 +7429,6 @@ static struct kvm_x86_ops svm_x86_ops __ro_after_init = {
 
 	.cpuid_update = svm_cpuid_update,
 
-	.pt_supported = svm_pt_supported,
-
 	.set_supported_cpuid = svm_set_supported_cpuid,
 
 	.has_wbinvd_exit = svm_has_wbinvd_exit,
diff --git a/arch/x86/kvm/vmx/pmu_intel.c b/arch/x86/kvm/vmx/pmu_intel.c
index e933541751fb..7c857737b438 100644
--- a/arch/x86/kvm/vmx/pmu_intel.c
+++ b/arch/x86/kvm/vmx/pmu_intel.c
@@ -335,7 +335,7 @@ static void intel_pmu_refresh(struct kvm_vcpu *vcpu)
 	pmu->global_ovf_ctrl_mask = pmu->global_ctrl_mask
 			& ~(MSR_CORE_PERF_GLOBAL_OVF_CTRL_OVF_BUF |
 			    MSR_CORE_PERF_GLOBAL_OVF_CTRL_COND_CHGD);
-	if (kvm_x86_ops->pt_supported())
+	if (vmx_pt_mode_is_host_guest())
 		pmu->global_ovf_ctrl_mask &=
 				~MSR_CORE_PERF_GLOBAL_OVF_CTRL_TRACE_TOPA_PMI;
 
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
index bb54974f950f..836f8a8d83df 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -6302,11 +6302,6 @@ static bool vmx_has_emulated_msr(int index)
 	}
 }
 
-static bool vmx_pt_supported(void)
-{
-	return vmx_pt_mode_is_host_guest();
-}
-
 static void vmx_recover_nmi_blocking(struct vcpu_vmx *vmx)
 {
 	u32 exit_intr_info;
@@ -7941,7 +7936,6 @@ static struct kvm_x86_ops vmx_x86_ops __ro_after_init = {
 
 	.check_intercept = vmx_check_intercept,
 	.handle_exit_irqoff = vmx_handle_exit_irqoff,
-	.pt_supported = vmx_pt_supported,
 
 	.request_immediate_exit = vmx_request_immediate_exit,
 
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 9b8764255455..4fdf5b04f148 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -2805,10 +2805,9 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
 		    !guest_cpuid_has(vcpu, X86_FEATURE_XSAVES))
 			return 1;
 		/*
-		 * We do support PT if kvm_x86_ops->pt_supported(), but we do
-		 * not support IA32_XSS[bit 8]. Guests will have to use
-		 * RDMSR/WRMSR rather than XSAVES/XRSTORS to save/restore PT
-		 * MSRs.
+		 * KVM supports exposing PT to the guest, but does not support
+		 * IA32_XSS[bit 8]. Guests have to use RDMSR/WRMSR rather than
+		 * XSAVES/XRSTORS to save/restore PT MSRs.
 		 */
 		if (data != 0)
 			return 1;
-- 
2.24.1


  parent reply	other threads:[~2020-03-03  0:00 UTC|newest]

Thread overview: 95+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-02 23:56 [PATCH v2 00/66] KVM: x86: Introduce KVM cpu caps Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 01/66] KVM: x86: Return -E2BIG when KVM_GET_SUPPORTED_CPUID hits max entries Sean Christopherson
2020-03-03 14:16   ` Paolo Bonzini
2020-03-03 15:17     ` Sean Christopherson
2020-03-03 19:47   ` Jim Mattson
2020-03-02 23:56 ` [PATCH v2 02/66] KVM: x86: Refactor loop around do_cpuid_func() to separate helper Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 03/66] KVM: x86: Simplify handling of Centaur CPUID leafs Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 04/66] KVM: x86: Clean up error handling in kvm_dev_ioctl_get_cpuid() Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 05/66] KVM: x86: Check userapce CPUID array size after validating sub-leaf Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 06/66] KVM: x86: Move CPUID 0xD.1 handling out of the index>0 loop Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 07/66] KVM: x86: Check for CPUID 0xD.N support before validating array size Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 08/66] KVM: x86: Warn on zero-size save state for valid CPUID 0xD.N sub-leaf Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 09/66] KVM: x86: Refactor CPUID 0xD.N sub-leaf entry creation Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 10/66] KVM: x86: Clean up CPUID 0x7 sub-leaf loop Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 11/66] KVM: x86: Drop the explicit @index from do_cpuid_7_mask() Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 12/66] KVM: x86: Drop redundant boot cpu checks on SSBD feature bits Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 13/66] KVM: x86: Consolidate CPUID array max num entries checking Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 14/66] KVM: x86: Hoist loop counter and terminator to top of __do_cpuid_func() Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 15/66] KVM: x86: Refactor CPUID 0x4 and 0x8000001d handling Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 16/66] KVM: x86: Encapsulate CPUID entries and metadata in struct Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 17/66] KVM: x86: Drop redundant array size check Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 18/66] KVM: x86: Use common loop iterator when handling CPUID 0xD.N Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 19/66] KVM: VMX: Add helpers to query Intel PT mode Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 20/66] KVM: x86: Calculate the supported xcr0 mask at load time Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 21/66] KVM: x86: Use supported_xcr0 to detect MPX support Sean Christopherson
2020-03-03 14:34   ` Paolo Bonzini
2020-03-02 23:56 ` [PATCH v2 22/66] KVM: x86: Make kvm_mpx_supported() an inline function Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 23/66] KVM: x86: Clear output regs for CPUID 0x14 if PT isn't exposed to guest Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 24/66] KVM: x86: Drop explicit @func param from ->set_supported_cpuid() Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 25/66] KVM: x86: Use u32 for holding CPUID register value in helpers Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 26/66] KVM: x86: Replace bare "unsigned" with "unsigned int" in cpuid helpers Sean Christopherson
2020-03-03 15:43   ` Vitaly Kuznetsov
2020-03-02 23:56 ` [PATCH v2 27/66] KVM: x86: Introduce cpuid_entry_{get,has}() accessors Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 28/66] KVM: x86: Introduce cpuid_entry_{change,set,clear}() mutators Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 29/66] KVM: x86: Refactor cpuid_mask() to auto-retrieve the register Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 30/66] KVM: x86: Handle MPX CPUID adjustment in VMX code Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 31/66] KVM: x86: Handle INVPCID " Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 32/66] KVM: x86: Handle UMIP emulation " Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 33/66] KVM: x86: Handle PKU " Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 34/66] KVM: x86: Handle RDTSCP " Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 35/66] KVM: x86: Handle Intel PT " Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 36/66] KVM: x86: Handle GBPAGE CPUID adjustment for EPT " Sean Christopherson
2020-03-03 14:59   ` Paolo Bonzini
2020-03-03 15:35     ` Sean Christopherson
2020-03-03 15:40       ` Paolo Bonzini
2020-03-03 15:44         ` Sean Christopherson
2020-03-03 15:47           ` Paolo Bonzini
2020-03-03 15:54             ` Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 37/66] KVM: x86: Refactor handling of XSAVES CPUID adjustment Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 38/66] KVM: x86: Introduce kvm_cpu_caps to replace runtime CPUID masking Sean Christopherson
2020-03-03 15:51   ` Vitaly Kuznetsov
2020-03-02 23:56 ` [PATCH v2 39/66] KVM: SVM: Convert feature updates from CPUID to KVM cpu caps Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 40/66] KVM: VMX: " Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 41/66] KVM: x86: Move XSAVES CPUID adjust to VMX's KVM cpu cap update Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 42/66] KVM: x86: Add a helper to check kernel support when setting cpu cap Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 43/66] KVM: x86: Use KVM cpu caps to mark CR4.LA57 as not-reserved Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 44/66] KVM: x86: Use KVM cpu caps to track UMIP emulation Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 45/66] KVM: x86: Fold CPUID 0x7 masking back into __do_cpuid_func() Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 46/66] KVM: x86: Remove the unnecessary loop on CPUID 0x7 sub-leafs Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 47/66] KVM: x86: Squash CPUID 0x2.0 insanity for modern CPUs Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 48/66] KVM: x86: Remove stateful CPUID handling Sean Christopherson
2020-03-03 15:59   ` Vitaly Kuznetsov
2020-03-03 19:23   ` Jim Mattson
2020-03-02 23:56 ` [PATCH v2 49/66] KVM: x86: Do host CPUID at load time to mask KVM cpu caps Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 50/66] KVM: x86: Override host CPUID results with kvm_cpu_caps Sean Christopherson
2020-03-03 15:22   ` Paolo Bonzini
2020-03-03 15:56     ` Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 51/66] KVM: x86: Set emulated/transmuted feature bits via kvm_cpu_caps Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 52/66] KVM: x86: Use kvm_cpu_caps to detect Intel PT support Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 53/66] KVM: x86: Do kvm_cpuid_array capacity checks in terminal functions Sean Christopherson
2020-03-03 16:03   ` Vitaly Kuznetsov
2020-03-02 23:56 ` [PATCH v2 54/66] KVM: x86: Use KVM cpu caps to detect MSR_TSC_AUX virt support Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 55/66] KVM: VMX: Directly use VMX capabilities helper to detect RDTSCP support Sean Christopherson
2020-03-02 23:56 ` [PATCH v2 56/66] KVM: x86: Check for Intel PT MSR virtualization using KVM cpu caps Sean Christopherson
2020-03-02 23:57 ` Sean Christopherson [this message]
2020-03-02 23:57 ` [PATCH v2 58/66] KVM: SVM: Refactor logging of NPT enabled/disabled Sean Christopherson
2020-03-02 23:57 ` [PATCH v2 59/66] KVM: x86/mmu: Merge kvm_{enable,disable}_tdp() into a common function Sean Christopherson
2020-03-02 23:57 ` [PATCH v2 60/66] KVM: x86/mmu: Configure max page level during hardware setup Sean Christopherson
2020-03-02 23:57 ` [PATCH v2 61/66] KVM: x86: Don't propagate MMU lpage support to memslot.disallow_lpage Sean Christopherson
2020-03-03 15:31   ` Paolo Bonzini
2020-03-03 16:00     ` Sean Christopherson
2020-03-02 23:57 ` [PATCH v2 62/66] KVM: Drop largepages_enabled and its accessor/mutator Sean Christopherson
2020-03-02 23:57 ` [PATCH v2 63/66] KVM: x86: Move VMX's host_efer to common x86 code Sean Christopherson
2020-03-02 23:57 ` [PATCH v2 64/66] KVM: nSVM: Expose SVM features to L1 iff nested is enabled Sean Christopherson
2020-03-03 16:12   ` Vitaly Kuznetsov
2020-03-03 18:37   ` Jim Mattson
2020-03-02 23:57 ` [PATCH v2 65/66] KVM: nSVM: Advertise and enable NRIPS for L1 iff nrips " Sean Christopherson
2020-03-03 16:14   ` Vitaly Kuznetsov
2020-03-02 23:57 ` [PATCH v2 66/66] KVM: x86: Move nSVM CPUID 0x8000000A handing into common x86 code Sean Christopherson
2020-03-03 15:35   ` Paolo Bonzini
2020-03-03 15:37     ` Sean Christopherson
2020-03-03 16:48 ` [PATCH v2 00/66] KVM: x86: Introduce KVM cpu caps Vitaly Kuznetsov
2020-03-06  8:27 ` Paolo Bonzini
2020-03-09 20:11   ` Sean Christopherson
2020-03-11 18:37     ` Paolo Bonzini

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=20200302235709.27467-58-sean.j.christopherson@intel.com \
    --to=sean.j.christopherson@intel.com \
    --cc=jmattson@google.com \
    --cc=joro@8bytes.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=vkuznets@redhat.com \
    --cc=wanpengli@tencent.com \
    --cc=xiaoyao.li@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.