]> git.baikalelectronics.ru Git - kernel.git/commitdiff
KVM: arm64: Only open the interrupt window on exit due to an interrupt
authorMarc Zyngier <maz@kernel.org>
Fri, 4 Mar 2022 12:04:49 +0000 (12:04 +0000)
committerMarc Zyngier <maz@kernel.org>
Fri, 4 Mar 2022 15:07:04 +0000 (15:07 +0000)
Now that we properly account for interrupts taken whilst the guest
was running, it becomes obvious that there is no need to open
this accounting window if we didn't exit because of an interrupt.

This saves a number of system register accesses and other barriers
if we exited for any other reason (such as a trap, for example).

Signed-off-by: Marc Zyngier <maz@kernel.org>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Link: https://lore.kernel.org/r/20220304135914.1464721-1-maz@kernel.org
arch/arm64/kvm/arm.c

index ecc5958e27fe2b3fc69b9b1121a626495cb13c46..5254a97929f7486dbba484b28fb189bbfde1a286 100644 (file)
@@ -945,9 +945,11 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)
                 * context synchronization event) is necessary to ensure that
                 * pending interrupts are taken.
                 */
-               local_irq_enable();
-               isb();
-               local_irq_disable();
+               if (ARM_EXCEPTION_CODE(ret) == ARM_EXCEPTION_IRQ) {
+                       local_irq_enable();
+                       isb();
+                       local_irq_disable();
+               }
 
                guest_timing_exit_irqoff();