kvm/ppc/booke64: Fix lazy ee handling in kvmppc_handle_exit()
authorScott Wood <scottwood@freescale.com>
Fri, 7 Jun 2013 00:16:32 +0000 (19:16 -0500)
committerGleb Natapov <gleb@redhat.com>
Tue, 11 Jun 2013 08:11:00 +0000 (11:11 +0300)
EE is hard-disabled on entry to kvmppc_handle_exit(), so call
hard_irq_disable() so that PACA_IRQ_HARD_DIS is set, and soft_enabled
is unset.

Without this, we get warnings such as arch/powerpc/kernel/time.c:300,
and sometimes host kernel hangs.

Signed-off-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Gleb Natapov <gleb@redhat.com>
arch/powerpc/kvm/booke.c

index ecbe9081c9c2fd9abbb1b1668be841659f6123fd..5cd7ad0c11764ec59432d945b5d824ea05f6603d 100644 (file)
@@ -834,6 +834,17 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
        int s;
        int idx;
 
+#ifdef CONFIG_PPC64
+       WARN_ON(local_paca->irq_happened != 0);
+#endif
+
+       /*
+        * We enter with interrupts disabled in hardware, but
+        * we need to call hard_irq_disable anyway to ensure that
+        * the software state is kept in sync.
+        */
+       hard_irq_disable();
+
        /* update before a new last_exit_type is rewritten */
        kvmppc_update_timing_stats(vcpu);