[PATCH] KVM: PPC: Book3E 64: Fix IRQs warnings and hangs
Caraman Mihai Claudiu-B02008
B02008 at freescale.com
Sat May 4 06:01:26 EST 2013
> -----Original Message-----
> From: Wood Scott-B07421
> Sent: Friday, May 03, 2013 9:05 PM
> To: Caraman Mihai Claudiu-B02008
> Cc: kvm-ppc at vger.kernel.org; kvm at vger.kernel.org; linuxppc-
> dev at lists.ozlabs.org; Caraman Mihai Claudiu-B02008
> Subject: Re: [PATCH] KVM: PPC: Book3E 64: Fix IRQs warnings and hangs
>
> > The unresponsiveness has to do with the fact that
> > arch_local_irq_restore()
> > does not guarantees to hard enable interrupts.
>
> Could you elaborate? If the saved IRQ state was "enabled", why
> wouldn't arch_local_irq_restore() hard-enable IRQs? The last thing it
> does is __hard_irq_enable().
if (!irq_happened)
return;
>
> Where is the arch_local_irq_restore() instance you're talking about?
./arch/power/kernel/irq.c
>
> > To do so replace exception
> > function calls like timer_interrupt() with irq_happened flags. The
> > local_irq_enable() call takes care of replaying them and lets the
> > interrupts
> > hard enabled.
>
> Not sure what you mean by "lets the interrupts hard enabled"... Do you
> mean the EE bit in regs->msr, as opposed to the EE bit in the current
> MSR?
If irq_happened "the last thing it does is __hard_irq_enable()".
> > @@ -789,16 +788,16 @@ static void kvmppc_restart_interrupt(struct
> > kvm_vcpu *vcpu,
> > switch (exit_nr) {
> > case BOOKE_INTERRUPT_EXTERNAL:
> > kvmppc_fill_pt_regs(®s);
> > - do_IRQ(®s);
> > + local_paca->irq_happened |= PACA_IRQ_EE;
> > break;
>
> Aren't you breaking 32-bit here?
I had eyes only for 64-bit hangs :)
-Mike
More information about the Linuxppc-dev
mailing list