]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: PPC: Book3S HV P9: Factor out yield_count increment
authorNicholas Piggin <npiggin@gmail.com>
Tue, 23 Nov 2021 09:51:54 +0000 (19:51 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 24 Nov 2021 10:08:58 +0000 (21:08 +1100)
Factor duplicated code into a helper function.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Fabiano Rosas <farosas@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20211123095231.1036501-17-npiggin@gmail.com
arch/powerpc/kvm/book3s_hv.c

index e66ce7a19ac600bd2cd52843590e60989e959c31..bbaf018dcb67f0e37d61ccf6de7707858ed896a9 100644 (file)
@@ -4131,6 +4131,16 @@ static inline bool hcall_is_xics(unsigned long req)
                req == H_IPOLL || req == H_XIRR || req == H_XIRR_X;
 }
 
+static void vcpu_vpa_increment_dispatch(struct kvm_vcpu *vcpu)
+{
+       struct lppaca *lp = vcpu->arch.vpa.pinned_addr;
+       if (lp) {
+               u32 yield_count = be32_to_cpu(lp->yield_count) + 1;
+               lp->yield_count = cpu_to_be32(yield_count);
+               vcpu->arch.vpa.dirty = 1;
+       }
+}
+
 /*
  * Guest entry for POWER9 and later CPUs.
  */
@@ -4159,12 +4169,7 @@ static int kvmhv_p9_guest_entry(struct kvm_vcpu *vcpu, u64 time_limit,
        vc->entry_exit_map = 1;
        vc->in_guest = 1;
 
-       if (vcpu->arch.vpa.pinned_addr) {
-               struct lppaca *lp = vcpu->arch.vpa.pinned_addr;
-               u32 yield_count = be32_to_cpu(lp->yield_count) + 1;
-               lp->yield_count = cpu_to_be32(yield_count);
-               vcpu->arch.vpa.dirty = 1;
-       }
+       vcpu_vpa_increment_dispatch(vcpu);
 
        if (cpu_has_feature(CPU_FTR_TM) ||
            cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST))
@@ -4292,12 +4297,7 @@ static int kvmhv_p9_guest_entry(struct kvm_vcpu *vcpu, u64 time_limit,
            cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST))
                kvmppc_save_tm_hv(vcpu, vcpu->arch.shregs.msr, true);
 
-       if (vcpu->arch.vpa.pinned_addr) {
-               struct lppaca *lp = vcpu->arch.vpa.pinned_addr;
-               u32 yield_count = be32_to_cpu(lp->yield_count) + 1;
-               lp->yield_count = cpu_to_be32(yield_count);
-               vcpu->arch.vpa.dirty = 1;
-       }
+       vcpu_vpa_increment_dispatch(vcpu);
 
        switch_pmu_to_host(vcpu, &host_os_sprs);