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] pvops-2.6.32 - Interrupt routing problem

To: "Bastian Blank" <waldi@xxxxxxxxxx>
Subject: Re: [Xen-devel] pvops-2.6.32 - Interrupt routing problem
From: "Jan Beulich" <JBeulich@xxxxxxxxxx>
Date: Tue, 23 Mar 2010 14:04:24 +0000
Cc: Jeremy Fitzhardinge <jeremy@xxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>, Keir Fraser <keir.fraser@xxxxxxxxxxxxx>, Xiantao Zhang <xiantao.zhang@xxxxxxxxx>, Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Delivery-date: Tue, 23 Mar 2010 07:05:07 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <20100323123756.GA6656@xxxxxxxxxxxxxxxxxxxxxxx>
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>
References: <EB8593BCECAB3D40A8248BE0B6400A38464AE52E@xxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <20100315211459.GA9314@xxxxxxxxxxxxxxxxxxxxxxx> <20100316013114.GD7622@xxxxxxxxxxxxxxxxxxx> <20100316081832.GA20502@xxxxxxxxxxxxxxxxxxxxxxx> <20100316153216.GB28821@xxxxxxxxxxxxxxxxxxx> <20100316182053.GA2258@xxxxxxxxxxxxxxxxxxxxxxx> <20100319113904.GA29200@xxxxxxxxxxxxxxxxxxxxxxx> <20100319121341.GA30270@xxxxxxxxxxxxxxxxxxxxxxx> <20100321214723.GA29738@xxxxxxxxxxxxxxxxxxxxxxx> <4BA8B62402000078000366E8@xxxxxxxxxxxxxxxxxx> <20100323123756.GA6656@xxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
>>> Bastian Blank <waldi@xxxxxxxxxx> 23.03.10 13:37 >>>
>On Tue, Mar 23, 2010 at 11:37:56AM +0000, Jan Beulich wrote:
>> >>> Bastian Blank <waldi@xxxxxxxxxx> 21.03.10 22:47 >>>
>> >Okay, I think I found another problem. Currently the setup looks like
>> >this:
>> >- PHYSDEVOP_setup_gsi: set trigger and polarity, unmask pin
>> Where are you seeing this? Other than Linux' (unmasking edge
>> triggered IRQs), Xen's io_apic_set_pci_routing() always masks the
>> entry afaics.
>In the Linux kernel, xen_register_gsi (arch/x86/xen/pci.c). The io-apic

Ah, okay. The way you wrote it I read that PHYSDEVOP_setup_gsi
would do the unmasking. And looking at xen_register_gsi(), I can't
really see where it would unmask the interrupt either. The only place
I see it getting unmasked is in startup_pirq() (through

>support in Xen is a copy of the Linux code and behaves similar.

Mostly, but not in all details.

>> >- PHYSDEVOP_map_pirq: map to pirq, set irq handler to guest
>> >If an interrupt fires between this two calles, what happens?
>> Since this is only for edge triggered IRQs, I believe the purpose is
>> to not lose an edge when first enabling the interrupt.
>No. The interrupt setup is always done before the device setup. This is
>core kernel functionality.

Yes. But that is unrelated to the choice of keeping masked/unmasking
certain interrupts.

>Please explain why you think this is restricted to edge triggered. This
>is called from the PCI interrupt setup, and usualy used with level
>triggered interrupts.

This is simply what Linux does (at the end of setup_ioapic_entry()).


Xen-devel mailing list