This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-changelog] [xen-4.1-testing] Clear IRQ_GUEST in irq_desc->status wh

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-4.1-testing] Clear IRQ_GUEST in irq_desc->status when setting action to NULL.
From: Xen patchbot-4.1-testing <patchbot@xxxxxxx>
Date: Mon, 03 Oct 2011 23:44:07 +0100
Delivery-date: Mon, 03 Oct 2011 15:44:38 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Igor Mammedov <imammedo@xxxxxxxxxx>
# Date 1317655792 -3600
# Node ID 2a0cd93f7ed9666ac60baa19c69bd89cad63c79e
# Parent  5c395e993fe4064f0e3e13af70af9e440dc00689
Clear IRQ_GUEST in irq_desc->status when setting action to NULL.

Looking more closely at usage of action field with relation to
IRQ_GUEST flag. It appears that set IRQ_GUEST implies that action
is not NULL. As result it is not safe to set action to NULL and
leave IRQ_GUEST set.

Hence IRQ_GUEST should be cleared in dynamic_irq_cleanup where
action is set to NULL.

An addition remove BUGON at __pirq_guest_unbind that appears to be
bogus and not needed anymore.

Thanks Paolo Bonzini for NACKing previous patch, and pointing at the
correct solution.

Signed-off-by: Igor Mammedov <imammedo@xxxxxxxxxx>

Reinstate the BUG_ON, but after the action==NULL check. Since we then
go and start interpreting action as an irq_guest_action_t, the BUG_ON
is relevant here.

More generally, the brute-force nature of dynamic_irq_cleanup() looks
a bit worrying. Possibly there should be more integratioin with
pirq_guest_unbind() logic, for cleaning up un-acked EOIs and the like.

Signed-off-by: Keir Fraser <keir@xxxxxxx>
xen-unstable changeset:   23852:c944e82bb092
xen-unstable date:        Sun Sep 18 00:00:26 2011 +0100

diff -r 5c395e993fe4 -r 2a0cd93f7ed9 xen/arch/x86/irq.c
--- a/xen/arch/x86/irq.c        Tue Sep 27 17:27:17 2011 +0100
+++ b/xen/arch/x86/irq.c        Mon Oct 03 16:29:52 2011 +0100
@@ -152,6 +152,7 @@
     spin_lock_irqsave(&desc->lock, flags);
     desc->status  |= IRQ_DISABLED;
+    desc->status  &= ~IRQ_GUEST;
     action = desc->action;
     desc->action  = NULL;
@@ -1288,8 +1289,6 @@
     cpumask_t           cpu_eoi_map;
     int                 i;
-    BUG_ON(!(desc->status & IRQ_GUEST));
     action = (irq_guest_action_t *)desc->action;
     irq = desc - irq_desc;
@@ -1300,6 +1299,8 @@
         return NULL;
+    BUG_ON(!(desc->status & IRQ_GUEST));
     for ( i = 0; (i < action->nr_guests) && (action->guest[i] != d); i++ )
     BUG_ON(i == action->nr_guests);

Xen-changelog mailing list

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-4.1-testing] Clear IRQ_GUEST in irq_desc->status when setting action to NULL., Xen patchbot-4 . 1-testing <=