[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Re: Crash in __pirq_guest_eoi()



 On 09/06/2010 10:04 PM, Jan Beulich wrote:
>  >>> 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 not sure.  Part of the problem is that things are not working as I
expect, so I think my model of what's going on is wrong.

>> 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.

Right.  I saw the previous "return NULL" without thinking about the
locking aspects.

>  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.

Yep.

    J

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.