From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeremy Fitzhardinge Subject: Re: Crash in __pirq_guest_eoi() Date: Tue, 07 Sep 2010 09:57:10 +1000 Message-ID: <4C857FD6.1060801@goop.org> References: <4C813F82.1090502@goop.org> <4C84F4F70200007800014842@vpn.id2.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <4C84F4F70200007800014842@vpn.id2.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Jan Beulich Cc: "Xen-devel@lists.xensource.com" , Keir Fraser List-Id: xen-devel@lists.xenproject.org On 09/06/2010 10:04 PM, Jan Beulich wrote: > >>> On 03.09.10 at 20:33, Jeremy Fitzhardinge 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