diff options
author | Scott Wood <scottwood@freescale.com> | 2013-06-06 20:16:32 -0400 |
---|---|---|
committer | Gleb Natapov <gleb@redhat.com> | 2013-06-11 04:11:00 -0400 |
commit | 7c11c0ccc7ba186433b2102cf3775ce6b2445453 (patch) | |
tree | 50cc6f01328d8e523d5fc6a3dc427c9c0e1953ab /arch/powerpc/kvm/booke.c | |
parent | f1e89028f020ca982bf51be6eaba0d462ba0f7fa (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.c | 11 |
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 | ||