[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Re: Crash in __pirq_guest_eoi()
>>> On 03.09.10 at 20:33, Jeremy Fitzhardinge <jeremy@xxxxxxxx> wrote: > I'm seeing a crash in: > > static void __pirq_guest_eoi(struct domain *d, int pirq) > { > struct irq_desc *desc; > irq_guest_action_t *action; > cpumask_t cpu_eoi_map; > int irq; > > ASSERT(local_irq_is_enabled()); > desc = domain_spin_lock_irq_desc(d, pirq, NULL); > if ( desc == NULL ) > return; > > action = (irq_guest_action_t *)desc->action; > irq = desc - irq_desc; > > if ( action->ack_type == ACKTYPE_NONE ) > { > > where action is NULL. Any more precise information on the conditions under which this happens? Like trying to EOI a bad pirq? > I'm playing around with the pvops kernel's handling of pirq interrupts, > so the kernel is probably misbehaving, but it would be nice if Xen > didn't keep crashing on me. > > I guess this is the right fix/workaround? No. You can't return without releasing the lock acquired a couple of lines earlier. And it seems bogus in the first place that you could get there and find action being NULL, so it'd seem to be a workaround at best. Jan > diff -r d37dc6401a1f xen/arch/x86/irq.c > --- a/xen/arch/x86/irq.c Thu Sep 02 17:44:46 2010 +0100 > +++ b/xen/arch/x86/irq.c Fri Sep 03 11:33:15 2010 -0700 > @@ -1028,6 +1028,9 @@ > action = (irq_guest_action_t *)desc->action; > irq = desc - irq_desc; > > + if ( action == NULL ) > + return; > + > if ( action->ack_type == ACKTYPE_NONE ) > { > ASSERT(!test_bit(pirq, d->pirq_mask)); > > J _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |