[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240126085444.324918-31-xiong.y.zhang@linux.intel.com>
Date: Fri, 26 Jan 2024 16:54:33 +0800
From: Xiong Zhang <xiong.y.zhang@...ux.intel.com>
To: seanjc@...gle.com,
pbonzini@...hat.com,
peterz@...radead.org,
mizhang@...gle.com,
kan.liang@...el.com,
zhenyuw@...ux.intel.com,
dapeng1.mi@...ux.intel.com,
jmattson@...gle.com
Cc: kvm@...r.kernel.org,
linux-perf-users@...r.kernel.org,
linux-kernel@...r.kernel.org,
zhiyuan.lv@...el.com,
eranian@...gle.com,
irogers@...gle.com,
samantha.alt@...el.com,
like.xu.linux@...il.com,
chao.gao@...el.com,
xiong.y.zhang@...ux.intel.com,
Xiong Zhang <xiong.y.zhang@...el.com>
Subject: [RFC PATCH 30/41] KVM: x86/pmu: Switch PMI handler at KVM context switch boundary
From: Xiong Zhang <xiong.y.zhang@...el.com>
Switch PMI handler at KVM context switch boundary because KVM uses a
separate maskable interrupt vector other than the NMI handler for the host
PMU to process its own PMIs. So invoke the perf API that allows
registration of the PMI handler.
Signed-off-by: Xiong Zhang <xiong.y.zhang@...el.com>
Signed-off-by: Mingwei Zhang <mizhang@...gle.com>
---
arch/x86/kvm/pmu.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/x86/kvm/pmu.c b/arch/x86/kvm/pmu.c
index 9d737f5b96bf..cd559fd74f65 100644
--- a/arch/x86/kvm/pmu.c
+++ b/arch/x86/kvm/pmu.c
@@ -904,11 +904,15 @@ void kvm_pmu_save_pmu_context(struct kvm_vcpu *vcpu)
lockdep_assert_irqs_disabled();
static_call_cond(kvm_x86_pmu_save_pmu_context)(vcpu);
+
+ perf_guest_switch_to_host_pmi_vector();
}
void kvm_pmu_restore_pmu_context(struct kvm_vcpu *vcpu)
{
lockdep_assert_irqs_disabled();
+ perf_guest_switch_to_kvm_pmi_vector(kvm_lapic_get_lvtpc_mask(vcpu));
+
static_call_cond(kvm_x86_pmu_restore_pmu_context)(vcpu);
}
--
2.34.1
Powered by blists - more mailing lists