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.0-testing] Clear IRQ_GUEST in irq_desc->status wh

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-4.0-testing] Clear IRQ_GUEST in irq_desc->status when setting action to NULL.
From: Xen patchbot-4.0-testing <patchbot@xxxxxxx>
Date: Mon, 03 Oct 2011 22:22:09 +0100
Delivery-date: Mon, 03 Oct 2011 14:24:20 -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 1317656103 -3600
# Node ID bd27836e5a111f2f6adab21b8cfc62ac18338fcf
# Parent  3f89d09030e166168f8f472a569c1f3904f3ac00
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 3f89d09030e1 -r bd27836e5a11 xen/arch/x86/irq.c
--- a/xen/arch/x86/irq.c        Mon Oct 03 16:26:09 2011 +0100
+++ b/xen/arch/x86/irq.c        Mon Oct 03 16:35:03 2011 +0100
@@ -154,6 +154,7 @@
     spin_lock_irqsave(&desc->lock, flags);
     desc->status  |= IRQ_DISABLED;
+    desc->status  &= ~IRQ_GUEST;
     action = desc->action;
     desc->action  = NULL;
@@ -1277,8 +1278,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;
@@ -1289,6 +1288,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.0-testing] Clear IRQ_GUEST in irq_desc->status when setting action to NULL., Xen patchbot-4 . 0-testing <=