[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] pvops-2.6.32 - Interrupt routing problem



>>> 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
EVTCHNOP_bind_pirq).

>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()).

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.