|
|
|
|
|
|
|
|
|
|
xen-devel
[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
|
|
|
|
|