diff options
author | Scott Wood <scottwood@freescale.com> | 2013-06-06 19:16:32 -0500 |
---|---|---|
committer | Gleb Natapov <gleb@redhat.com> | 2013-06-11 11:11:00 +0300 |
commit | 7c11c0ccc7ba186433b2102cf3775ce6b2445453 (patch) | |
tree | 50cc6f01328d8e523d5fc6a3dc427c9c0e1953ab | |
parent | f1e89028f020ca982bf51be6eaba0d462ba0f7fa (diff) | |
download | op-kernel-dev-7c11c0ccc7ba186433b2102cf3775ce6b2445453.zip op-kernel-dev-7c11c0ccc7ba186433b2102cf3775ce6b2445453.tar.gz |
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>
-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 ecbe908..5cd7ad0 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, 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); |