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: Sean Christopherson <seanjc@google.com>
This commit is contained in:
parent
e35529fb4a
commit
83bdfe04c9
@ -838,6 +838,13 @@ static inline bool cpl_is_matched(struct kvm_pmc *pmc)
|
|||||||
select_user = config & 0x2;
|
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;
|
return (static_call(kvm_x86_get_cpl)(pmc->vcpu) == 0) ? select_os : select_user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user