WARNING - OLD ARCHIVES

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/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] Re: [GIT PATCH v2 0/14] xen: events: cleanups + ween off

On Fri, 2011-03-11 at 11:24 +0000, Ian Campbell wrote:
> On Fri, 2011-03-11 at 09:12 +0000, Ian Campbell wrote:
> > On Thu, 2011-03-10 at 22:57 +0000, Konrad Rzeszutek Wilk wrote:
> > > On Thu, Mar 10, 2011 at 04:07:59PM +0000, Ian Campbell wrote:
> > > > Changes since last time:
> > > >       * correct return value of xen_irq_from_pirq
> > > >       * WARN if a pirq cannot be allocated for a legacy IRQ
> > > >       * Updated checking comment of "xen: events: do not workaround
> > > >         too-small nr_irqs"
> > > > 
> > > > The following series makes a few cleanups to the Xen IRQ infrastructure.
> > > > The most important thing is that it removes the need to know about
> > > > nr_irqs and in particular the reliance on nr_irqs being static.
> > > > 
> > > > Apart from being generally a good thing this is needed because in 2.6.39
> > > > nr_irqs will be able to grow dynamically, specifically e7bcecb7b1d2
> > > > "genirq: Make nr_irqs runtime expandable" from tip/core/irq is targeted
> > > > at 2.6.39.
> > > > 
> > > > Dynamically growing nr_irqs also allows us to remove the workaround
> > > > which eats into GSI space if a dynamic IRQ cannot be allocated.
> > > > 
> > > > There is no ideal sequencing of this series vs e7bcecb7b1d2 (most should
> > > > have gone in before, but the penultimate patch really needed to be
> > > > simultaneous) so I haven't bothered to try and pull anything from tip
> > > > into this branch -- it should all be resolved during the merge window
> > > > and bisection won't be too broken since the "eat into GSI space"
> > > > workaround only appears to be needed on a small number of older
> > > > platforms (qemu being the main exception).
> > > 
> > > <nods>
> > > > 
> > > > I have tested:
> > > >       * Domain 0 on real h/w and under qemu
> > > >       * PV guest, including migration and passthrough of both VF and PF.
> > > >       * PVHVM guest, including migration and passthrough of both VF and
> > > >         PF.
> > > 
> > > I am having difficulties with passthrough of an USB device. Somehow the
> > > irq count is not going up at all (both in dom0 and domU) and it looks to
> > > be doing just simple polling. I've rebased the xen-pciback to be on top
> > > of your changes and apply cleanly. The whole lot is now in #master
> > > 
> > > MSI and MSI-X devices work just fine in both Dom0 and DomU case so
> > > it is something special with the legacy IRQs. Probably forgot something
> > > simple...
> > 
> > Thanks, I'll take a look. Did you mean "legacy IRQ" as in <16 or as in
> > not-MSI(-X)?
> 
> Works for me in a PV guest, at least under the second interpretation (I
> don't have any useful devices IRQ < 16). This is with your pciback 0.5.
> 
> I see something like what you describe under HVM, although pciback is
> not used in that case. xc_physdev_map_pirq is used but not with
> the /sys/.../bdf node AFAICT.
> 
> More digging required I guess...

If I just pass through the EHCI device it doesn't work. However if I
also pass-through the associated UHCI controller then I do see the
usb-storage device, interrupts and all. The EHCI controller still
doesn't work though. Note that with a PV guest passing-through the EHCI
controller by itself does work.

The issue I'm seeing seems to have more to do with accessing the memory
mapped BAR than IRQs though:

        ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
        PHYSDEVOP_map_pirq mapped gsi 46 to pirq 18
        xen_allocate_pirq_gsi for gsi 46, pirq 18 "ioapic-level"
        xen: --> irq=46, pirq=18
        ehci_hcd 0000:00:07.0: PCI INT C -> GSI 46 (level, low) -> IRQ 46
        ehci: remapped rsrc 0xf3021000 to c8064000
        ehci_hcd 0000:00:07.0: setting latency timer to 64
        ehci_hcd 0000:00:07.0: EHCI Host Controller
        ehci_hcd 0000:00:07.0: new USB bus registered, assigned bus number 1
        ehci_reset: handshake failed with -19. regs c80640ff
        ehci_hcd 0000:00:07.0: Enabling legacy PCI PM
        __startup_pirq: irq46 bound to evtchn 19
        ehci_hcd 0000:00:07.0: irq 46, io mem 0xf3021000
        ehci_reset: handshake failed with -19. regs c80640ff
        ehci_run: ehci_reset failed with -19
        ehci_hcd 0000:00:07.0: startup error -19
        ehci_hcd 0000:00:07.0: USB bus 1 deregistered
        ehci_hcd 0000:00:07.0: PCI INT C disabled
        ehci_hcd 0000:00:07.0: init 0000:00:07.0 fail, -19

The -19 is -ENODEV from driver/usb/host/ehci-hcd.c:handshake() which is
a readl with nothing to do with IRQs.

Ian.


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

<Prev in Thread] Current Thread [Next in Thread>