[PATCH v2 1/3] LoongArch: KVM: Add kvm_request_pending checking in kvm_late_check_requests()
From: Bibo Mao
Date: Tue Mar 17 2026 - 05:37:08 EST
Add kvm_request_pending() checking firstly in kvm_late_check_requests(),
at most time there is no pending request, the following pending bit
checking can be skipped then.
Also move function kvm_check_pmu() in kvm_late_check_requests(), and put
it after kvm_request_pending() checking.
Signed-off-by: Bibo Mao <maobibo@xxxxxxxxxxx>
---
arch/loongarch/kvm/vcpu.c | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/arch/loongarch/kvm/vcpu.c b/arch/loongarch/kvm/vcpu.c
index 8ffd50a470e6..028eb3d5a33b 100644
--- a/arch/loongarch/kvm/vcpu.c
+++ b/arch/loongarch/kvm/vcpu.c
@@ -149,14 +149,6 @@ static void kvm_lose_pmu(struct kvm_vcpu *vcpu)
kvm_restore_host_pmu(vcpu);
}
-static void kvm_check_pmu(struct kvm_vcpu *vcpu)
-{
- if (kvm_check_request(KVM_REQ_PMU, vcpu)) {
- kvm_own_pmu(vcpu);
- vcpu->arch.aux_inuse |= KVM_LARCH_PMU;
- }
-}
-
static void kvm_update_stolen_time(struct kvm_vcpu *vcpu)
{
u32 version;
@@ -232,6 +224,14 @@ static int kvm_check_requests(struct kvm_vcpu *vcpu)
static void kvm_late_check_requests(struct kvm_vcpu *vcpu)
{
lockdep_assert_irqs_disabled();
+ if (!kvm_request_pending(vcpu))
+ return;
+
+ if (kvm_check_request(KVM_REQ_PMU, vcpu)) {
+ kvm_own_pmu(vcpu);
+ vcpu->arch.aux_inuse |= KVM_LARCH_PMU;
+ }
+
if (kvm_check_request(KVM_REQ_TLB_FLUSH_GPA, vcpu))
if (vcpu->arch.flush_gpa != INVALID_GPA) {
kvm_flush_tlb_gpa(vcpu, vcpu->arch.flush_gpa);
@@ -312,7 +312,6 @@ static int kvm_pre_enter_guest(struct kvm_vcpu *vcpu)
/* Make sure the vcpu mode has been written */
smp_store_mb(vcpu->mode, IN_GUEST_MODE);
kvm_check_vpid(vcpu);
- kvm_check_pmu(vcpu);
/*
* Called after function kvm_check_vpid()
--
2.39.3