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

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



On Thu, 2011-03-10 at 23:23 +0000, Konrad Rzeszutek Wilk wrote:
> > > 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...
> 
> This looks like it would fix the culprit:
> [edit: not entirely]
> 
> diff --git a/drivers/xen/pciback/conf_space_header.c 
> b/drivers/xen/pciback/conf_space_header.c
> index 22ad0f5..3eeb197 100644
> --- a/drivers/xen/pciback/conf_space_header.c
> +++ b/drivers/xen/pciback/conf_space_header.c
> @@ -6,6 +6,7 @@
>  
>  #include <linux/kernel.h>
>  #include <linux/pci.h>
> +#include <xen/events.h>
>  #include "pciback.h"
>  #include "conf_space.h"
>  
> @@ -246,7 +247,7 @@ static int pciback_read_device(struct pci_dev *dev, int 
> offset,
>  static int interrupt_read(struct pci_dev *dev, int offset, u8 * value,
>                           void *data)
>  {
> -       *value = (u8) dev->irq;
> +       *value = (u8) dev->irq ? xen_pirq_from_irq(dev->irq) : 0;
>  
>         return 0;
>  }
> 
> Thought I am not sure if this is absolutly correct. Are the PIRQs == GSI

not necessarily. PIRQs (at least as used here) are also an internal Xen
concept which shouldn't be exposed outside of the lowlevel event
handling.

>  or should
> we provide another piece of code to extract info->u.pirq.gsi?

I think we've got one already. But I'll need to have a think about what
the correct return is here.

> I also see this when using xen-pciback.hide=..
> 
> pciback 0000:00:1d.7: found PCI INT A -> IRQ 14
> pciback 0000:00:1d.7: sharing IRQ 14 with 0000:00:1d.0
> pciback 0000:00:1d.0: found PCI INT A -> IRQ 14
> pciback 0000:00:1d.0: sharing IRQ 14 with 0000:00:1d.7
> pciback 0000:00:1d.1: found PCI INT B -> IRQ 5
> pciback 0000:00:1d.1: sharing IRQ 5 with 0000:00:16.3
> pciback 0000:00:1d.1: sharing IRQ 5 with 0000:00:16.7
> pciback 0000:00:1d.1: sharing IRQ 5 with 0000:00:1a.2
> ..
> .. which are clearly the Linux IRQ's, not the PIRQ/GSI values,
> so some other patch for the xen-pciback will be needed as well.

Hmm, yes. 

Ian.


_______________________________________________
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®.