KVM: PPC: Book3S HV nestedv2: Do not cancel pending decrementer exception
authorJordan Niethe <jniethe5@gmail.com>
Fri, 1 Dec 2023 13:26:17 +0000 (18:56 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 7 Dec 2023 12:33:08 +0000 (23:33 +1100)
In the nestedv2 case, if there is a pending decrementer exception, the
L1 must get the L2's timebase from the L0 to see if the exception should
be cancelled. This adds the overhead of a H_GUEST_GET_STATE call to the
likely case in which the decrementer should not be cancelled.

Avoid this logic for the nestedv2 case.

Signed-off-by: Jordan Niethe <jniethe5@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20231201132618.555031-13-vaibhav@linux.ibm.com
arch/powerpc/kvm/book3s_hv.c

index 2ee3f24785708ebe7d8d925b12e27b31e028f450..e48126a59ba7805d4696c03bf1ddbd46180245f9 100644 (file)
@@ -4834,7 +4834,7 @@ int kvmhv_run_single_vcpu(struct kvm_vcpu *vcpu, u64 time_limit,
         * entering a nested guest in which case the decrementer is now owned
         * by L2 and the L1 decrementer is provided in hdec_expires
         */
-       if (kvmppc_core_pending_dec(vcpu) &&
+       if (!kvmhv_is_nestedv2() && kvmppc_core_pending_dec(vcpu) &&
                        ((tb < kvmppc_dec_expires_host_tb(vcpu)) ||
                         (trap == BOOK3S_INTERRUPT_SYSCALL &&
                          kvmppc_get_gpr(vcpu, 3) == H_ENTER_NESTED)))