Commit 83bdfe04 authored by Sean Christopherson's avatar Sean Christopherson
Browse files

KVM: x86/pmu: Avoid CPL lookup if PMC enabline for USER and KERNEL is the same

Don't bother querying the CPL if a PMC is (not) counting for both USER and
KERNEL, i.e. if the end result is guaranteed to be the same regardless of
the CPL.  Querying the CPL on Intel requires a VMREAD, i.e. isn't free,
and a single CMP+Jcc is cheap.

Link: https://lore.kernel.org/r/20231110022857.1273836-11-seanjc@google.com


Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
parent e35529fb
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -838,6 +838,13 @@ static inline bool cpl_is_matched(struct kvm_pmc *pmc)
		select_user = config & 0x2;
	}

	/*
	 * Skip the CPL lookup, which isn't free on Intel, if the result will
	 * be the same regardless of the CPL.
	 */
	if (select_os == select_user)
		return select_os;

	return (static_call(kvm_x86_get_cpl)(pmc->vcpu) == 0) ? select_os : select_user;
}