All of lore.kernel.org
 help / color / mirror / Atom feed
* Crash in __pirq_guest_eoi()
@ 2010-09-03 18:33 Jeremy Fitzhardinge
  2010-09-06 12:04 ` Jan Beulich
  0 siblings, 1 reply; 3+ messages in thread
From: Jeremy Fitzhardinge @ 2010-09-03 18:33 UTC (permalink / raw)
  To: Keir Fraser; +Cc: Xen-devel@lists.xensource.com, Jan Beulich

 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.

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?

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2010-09-06 23:57 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-09-03 18:33 Crash in __pirq_guest_eoi() Jeremy Fitzhardinge
2010-09-06 12:04 ` Jan Beulich
2010-09-06 23:57   ` Jeremy Fitzhardinge

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.