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] Re: IRQs, move_in_progress, -EBUSY &c

To: George Dunlap <George.Dunlap@xxxxxxxxxxxxx>
Subject: Re: [Xen-devel] Re: IRQs, move_in_progress, -EBUSY &c
From: Keir Fraser <keir.fraser@xxxxxxxxxxxxx>
Date: Wed, 11 Aug 2010 20:12:57 +0100
Cc: Fitzhardinge <jeremy@xxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>, "Zhang, Xiantao" <xiantao.zhang@xxxxxxxxx>, Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Delivery-date: Wed, 11 Aug 2010 12:13:49 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <AANLkTim2vEfCkf4+mWu96qcyT-OB-jx7cgCJcPGp+e55@xxxxxxxxxxxxxx>
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: Acs5iD9gVd7N+Ej2SGmWU3F7pXtHBwAAPV3K
Thread-topic: [Xen-devel] Re: IRQs, move_in_progress, -EBUSY &c
User-agent: Microsoft-Entourage/
On 11/08/2010 20:06, "George Dunlap" <George.Dunlap@xxxxxxxxxxxxx> wrote:

> Looks like there are other callers of __assign_irq_vector() which also
> don't handle the -EBUSY return value, namely
> xen/arch/x86/io_apic.c:set_desc_affinity().

Looks like its callers do the same as on native Linux though -- namely
silently bail on error. I think the set_affinity type callers are pretty
benign if they fail-as-noop. In all of this, where possible I think we just
have to stay close to what Linux does.

 -- Keir

> Unfortunately, set_desc_affinity() cannot simply loop until it stops
> getting -EBUSY, as it is almost always called with irqs disabled -- so
> the very IPI which will call the function to make it not busy anymore
> is blocked.  And it only returns one value (a cpu mask), and the
> function which calls it returns no value at all; so we can's pass the
> "loop and retry" up one more level; we'd have to do a ton more code
> rewriting to be able to handle retries.
> Can we just call the cleanup function directly if we get -EBUSY?

Xen-devel mailing list