Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754124Ab1BQI3L (ORCPT ); Thu, 17 Feb 2011 03:29:11 -0500 Received: from smtp02.citrix.com ([66.165.176.63]:16416 "EHLO SMTP02.CITRIX.COM" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751993Ab1BQI3I (ORCPT ); Thu, 17 Feb 2011 03:29:08 -0500 X-IronPort-AV: E=Sophos;i="4.60,485,1291611600"; d="scan'208";a="136293623" Subject: Re: [Xen-devel] [PATCH] Xen PCI fronted fixes for 2.6.39 From: Ian Campbell To: Konrad Rzeszutek Wilk CC: "linux-kernel@vger.kernel.org" , "Konrad Rzeszutek Wilk" , Jeremy Fitzhardinge , "xen-devel@lists.xensource.com" , "Stefano Stabellini" In-Reply-To: <1297894638-28007-1-git-send-email-konrad.wilk@oracle.com> References: <1297894638-28007-1-git-send-email-konrad.wilk@oracle.com> Content-Type: text/plain; charset="UTF-8" Organization: Citrix Systems, Inc. Date: Thu, 17 Feb 2011 08:29:04 +0000 Message-ID: <1297931344.16356.1268.camel@zakaz.uk.xensource.com> MIME-Version: 1.0 X-Mailer: Evolution 2.30.3 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4763 Lines: 129 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@lists.xensource.com > http://lists.xensource.com/xen-devel -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/