On 5/8/2024 5:43 PM, Mi, Dapeng wrote: > > On 5/9/2024 5:48 AM, Chen, Zide wrote: >> >> On 5/5/2024 10:29 PM, Mingwei Zhang wrote: >>> Avoid calling into legacy/emulated vPMU logic such as reprogram_counters() >>> when passthrough vPMU is enabled. Note that even when passthrough vPMU is >>> enabled, global_ctrl may still be intercepted if guest VM only sees a >>> subset of the counters. >>> >>> Suggested-by: Xiong Zhang <xiong.y.zhang@xxxxxxxxxxxxxxx> >>> Signed-off-by: Mingwei Zhang <mizhang@xxxxxxxxxx> >>> --- >>> arch/x86/kvm/pmu.c | 3 ++- >>> 1 file changed, 2 insertions(+), 1 deletion(-) >>> >>> diff --git a/arch/x86/kvm/pmu.c b/arch/x86/kvm/pmu.c >>> index bd94f2d67f5c..e9047051489e 100644 >>> --- a/arch/x86/kvm/pmu.c >>> +++ b/arch/x86/kvm/pmu.c >>> @@ -713,7 +713,8 @@ int kvm_pmu_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) >>> if (pmu->global_ctrl != data) { >>> diff = pmu->global_ctrl ^ data; >>> pmu->global_ctrl = data; >>> - reprogram_counters(pmu, diff); >>> + if (!is_passthrough_pmu_enabled(vcpu)) >>> + reprogram_counters(pmu, diff); >> Since in [PATCH 44/54], reprogram_counters() is effectively skipped in >> the passthrough case, is this patch still needed? > Zide, reprogram_counters() and reprogram_counter() are two different > helpers. Both they need to be skipped in passthrough mode. Yes, but this is talking about reprogram_counters() only. passthrough mode is being checked inside and outside the function call, which is redundant.