aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kvm/booke.c
diff options
context:
space:
mode:
authorScott Wood <scottwood@freescale.com>2013-06-06 20:16:32 -0400
committerGleb Natapov <gleb@redhat.com>2013-06-11 04:11:00 -0400
commit7c11c0ccc7ba186433b2102cf3775ce6b2445453 (patch)
tree50cc6f01328d8e523d5fc6a3dc427c9c0e1953ab /arch/powerpc/kvm/booke.c
parentf1e89028f020ca982bf51be6eaba0d462ba0f7fa (diff)
kvm/ppc/booke64: Fix lazy ee handling in kvmppc_handle_exit()
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>
Diffstat (limited to 'arch/powerpc/kvm/booke.c')
-rw-r--r--arch/powerpc/kvm/booke.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index ecbe9081c9c2..5cd7ad0c1176 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -834,6 +834,17 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
834 int s; 834 int s;
835 int idx; 835 int idx;
836 836
837#ifdef CONFIG_PPC64
838 WARN_ON(local_paca->irq_happened != 0);
839#endif
840
841 /*
842 * We enter with interrupts disabled in hardware, but
843 * we need to call hard_irq_disable anyway to ensure that
844 * the software state is kept in sync.
845 */
846 hard_irq_disable();
847
837 /* update before a new last_exit_type is rewritten */ 848 /* update before a new last_exit_type is rewritten */
838 kvmppc_update_timing_stats(vcpu); 849 kvmppc_update_timing_stats(vcpu);
839 850