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


Re: [Xen-devel] Xen crash on dom0 shutdown

To: Jan Beulich <jbeulich@xxxxxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: Re: [Xen-devel] Xen crash on dom0 shutdown
From: Keir Fraser <keir.fraser@xxxxxxxxxxxxx>
Date: Tue, 23 Sep 2008 12:27:45 +0100
Cc: "Jiang, Yunhong" <yunhong.jiang@xxxxxxxxx>, "Shan, Haitao" <haitao.shan@xxxxxxxxx>
Delivery-date: Tue, 23 Sep 2008 04:28:14 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <48D8E23D.76E4.0078.0@xxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: Ackdb2YzpHdvcoliEd2yqgAX8io7RQ==
Thread-topic: [Xen-devel] Xen crash on dom0 shutdown
User-agent: Microsoft-Entourage/
On 23/9/08 11:34, "Jan Beulich" <jbeulich@xxxxxxxxxx> wrote:

> Simply removing the BUG_ON() seems inappropriate, though. But I'm
> uncertain whether it would be reasonable to call pirq_guest_unbind()
> instead of the BUG_ON(), and if so, how to properly deal with
> irq_desc[vector].lock (the immediate idea would be to factor out the
> locking into a wrapper function, but an alternative would be to use
> recursive locks, and perhaps there are other possibilities).

Well, this hypercall doesn't do pirq_guest_unbind() on IO-APIC-routed
interrupts either, so I think the problem is wider ranging than just MSI
interrupts. Consider unmap_irq() followed by pirq_guest_unbind() later.
We'll BUG_ON(vector == 0) in the latter function. Looks a bit of a mess to
me. I would say that if there are bindings remaining we should re-direct the
event-channel to a 'no-op' pirq (e.g., -1) and indeed call
pirq_guest_unbind() or similar.

 -- Keir

Xen-devel mailing list