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] [PATCH] Xen PCI fronted fixes for 2.6.39

To: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH] Xen PCI fronted fixes for 2.6.39
From: Ian Campbell <Ian.Campbell@xxxxxxxxxx>
Date: Thu, 17 Feb 2011 08:29:04 +0000
Cc: Konrad Rzeszutek Wilk <konrad@xxxxxxxxxx>, Jeremy Fitzhardinge <jeremy@xxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>, "linux-kernel@xxxxxxxxxxxxxxx" <linux-kernel@xxxxxxxxxxxxxxx>, Stefano Stabellini <Stefano.Stabellini@xxxxxxxxxxxxx>
Delivery-date: Thu, 17 Feb 2011 00:29:45 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <1297894638-28007-1-git-send-email-konrad.wilk@xxxxxxxxxx>
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>
Organization: Citrix Systems, Inc.
References: <1297894638-28007-1-git-send-email-konrad.wilk@xxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
On Wed, 2011-02-16 at 22:17 +0000, Konrad Rzeszutek Wilk wrote:
> I am proposing these three patches for 2.6.39.
> 
> The first is to take advantage of the new method of requesting
> a Linux IRQ and providing the Xen PIRQ value. The second
> makes it possible for a PV guest to bootup if the backend has provided
> incorrect values. [*2]

I approve of being liberal in what is accepted but do we also have a
handle on why the backend is providing incorrect values in the first
place?

> 
> Lastly, the third is to remove deprecated code.
> 
> Konrad Rzeszutek Wilk (2):
>       pci/xen: Use xen_allocate_pirq_msi
>       xen-pcifront: Sanity check the MSI/MSI-X values
> 
> Tejun Heo (1):
>       xen-pcifront: don't use flush_scheduled_work()
> 
>  arch/x86/pci/xen.c         |    6 +++---
>  drivers/pci/xen-pcifront.c |   20 +++++++++++++++-----
>  2 files changed, 18 insertions(+), 8 deletions(-)
> 
> diff --git a/arch/x86/pci/xen.c b/arch/x86/pci/xen.c
> index 25cd4a0..6432f75 100644
> --- a/arch/x86/pci/xen.c
> +++ b/arch/x86/pci/xen.c
> @@ -157,14 +157,14 @@ static int xen_setup_msi_irqs(struct pci_dev *dev, int 
> nvec, int type)
>               goto error;
>       i = 0;
>       list_for_each_entry(msidesc, &dev->msi_list, list) {
> -             irq = xen_allocate_pirq(v[i], 0, /* not sharable */
> +             xen_allocate_pirq_msi(
>                       (type == PCI_CAP_ID_MSIX) ?
> -                     "pcifront-msi-x" : "pcifront-msi");
> +                     "pcifront-msi-x" : "pcifront-msi",
> +                     &irq, &v[i], XEN_ALLOC_IRQ);
>               if (irq < 0) {
>                       ret = -1;
>                       goto free;
>               }
> -
>               ret = set_irq_msi(irq, msidesc);
>               if (ret)
>                       goto error_while;
> diff --git a/drivers/pci/xen-pcifront.c b/drivers/pci/xen-pcifront.c
> index 3a5a6fc..dd615d9 100644
> --- a/drivers/pci/xen-pcifront.c
> +++ b/drivers/pci/xen-pcifront.c
> @@ -277,13 +277,20 @@ static int pci_frontend_enable_msix(struct pci_dev *dev,
>       if (likely(!err)) {
>               if (likely(!op.value)) {
>                       /* we get the result */
> -                     for (i = 0; i < nvec; i++)
> +                     for (i = 0; i < nvec; i++) {
> +                             if (op.msix_entries[i].vector <= 0) {
> +                                     dev_warn(&dev->dev, "MSI-X entry %d" \
> +                                             " is zero!\n", i);
> +                                     err = -EINVAL;
> +                                     continue;
> +                             }
>                               *(*vector+i) = op.msix_entries[i].vector;
> -                     return 0;
> +                     }
> +                     return err;
>               } else {
>                       printk(KERN_DEBUG "enable msix get value %x\n",
>                               op.value);
> -                     return op.value;
> +                     return err;
>               }
>       } else {
>               dev_err(&dev->dev, "enable msix get err %x\n", err);
> @@ -325,6 +332,10 @@ static int pci_frontend_enable_msi(struct pci_dev *dev, 
> int **vector)
>       err = do_pci_op(pdev, &op);
>       if (likely(!err)) {
>               *(*vector) = op.value;
> +             if (op.value <= 0) {
> +                     dev_warn(&dev->dev, "MSI entry is zero!\n");
> +                     err = -EINVAL;
> +             }
>       } else {
>               dev_err(&dev->dev, "pci frontend enable msi failed for dev "
>                                   "%x:%x\n", op.bus, op.devfn);
> @@ -733,8 +744,7 @@ static void free_pdev(struct pcifront_device *pdev)
>  
>       pcifront_free_roots(pdev);
>  
> -     /*For PCIE_AER error handling job*/
> -     flush_scheduled_work();
> +     cancel_work_sync(&pdev->op_work);
>  
>       if (pdev->irq >= 0)
>               unbind_from_irqhandler(pdev->irq, pdev);
> 
> 
> [*2]: as so:
> 
>     0.877864] e1000e: Intel(R) PRO/1000 Network Driver - 1.2.20-k2
> [    0.877874] e1000e: Copyright(c) 1999 - 2011 Intel Corporation.
> [    0.877957] e1000e 0000:00:00.0: enabling device (0000 -> 0002)
> [    0.878054] e1000e 0000:00:00.0: Xen PCI mapped GSI16 to IRQ27
> [    0.878056] e1000e 0000:00:00.0: setting latency timer to 64
> [    0.879924] e1000e 0000:00:00.0: MSI-X entry 0 is zero!
> [    0.879935] e1000e 0000:00:00.0: MSI-X entry 1 is zero!
> [    0.879940] e1000e 0000:00:00.0: MSI-X entry 2 is zero!
> [    0.880207] e1000e 0000:00:00.0: (unregistered net_device): Failed to 
> initialize MSI-X interrupts.  Falling back to MSI interrupts.
> [    0.880730] e1000e 0000:00:00.0: MSI entry is zero!
> [    0.880788] e1000e 0000:00:00.0: (unregistered net_device): Failed to 
> initialize MSI interrupts.  Falling back to legacy interrupts.
> [    0.880945] e1000e 0000:00:00.0: Disabling ASPM L0s 
> [    0.977188] e1000e 0000:00:00.0: eth0: (PCI Express:2.5GB/s:Width x1) 
> 00:1b:21:61:49:00
> [    0.977201] e1000e 0000:00:00.0: eth0: Intel(R) PRO/1000 Network Connection
> [    0.977217] e1000e 0000:00:00.0: eth0: MAC: 3, PHY: 8, PBA No: E46981-003
> ...
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel



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