Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1763527AbXLQXCA (ORCPT ); Mon, 17 Dec 2007 18:02:00 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1761841AbXLQXB3 (ORCPT ); Mon, 17 Dec 2007 18:01:29 -0500 Received: from ozlabs.org ([203.10.76.45]:55650 "EHLO ozlabs.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756059AbXLQXB1 (ORCPT ); Mon, 17 Dec 2007 18:01:27 -0500 To: linux-pci@atrey.karlin.mff.cuni.cz CC: Alan Cox , Greg Kroah-Hartman , , Ivan Kokshaysky , , Bartlomiej Zolnierkiewicz , , , From: Benjamin Herrenschmidt Date: Tue, 18 Dec 2007 10:01:14 +1100 Subject: [RFC/PATCH 2/4] pci: Remove users of pci_enable_device_bars() In-Reply-To: <1197932473.576079.142524077033.qpush@grosgo> Message-Id: <20071217230126.26291DDE34@ozlabs.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 5819 Lines: 142 This patch converts users of pci_enable_device_bars() to the new pci_enable_device_{io,mem} interface. The new API fits nicely, except maybe for the QLA case where a bit of code re-organization might be a good idea but I prefer sticking to the simple patch as I don't have hardware to test on. I'll also need some feedback on the cs5520 change. Signed-off-by: Benjamin Herrenschmidt --- drivers/ata/pata_cs5520.c | 2 +- drivers/i2c/busses/scx200_acb.c | 2 +- drivers/ide/pci/cs5520.c | 10 ++++++++-- drivers/ide/setup-pci.c | 6 ++++-- drivers/scsi/lpfc/lpfc_init.c | 3 +-- drivers/scsi/qla2xxx/qla_os.c | 12 +++++++++--- 6 files changed, 24 insertions(+), 11 deletions(-) --- linux-work.orig/drivers/ata/pata_cs5520.c 2007-12-18 09:37:55.000000000 +1100 +++ linux-work/drivers/ata/pata_cs5520.c 2007-12-18 09:39:03.000000000 +1100 @@ -229,7 +229,7 @@ static int __devinit cs5520_init_one(str return -ENOMEM; /* Perform set up for DMA */ - if (pci_enable_device_bars(pdev, 1<<2)) { + if (pci_enable_device_io(pdev)) { printk(KERN_ERR DRV_NAME ": unable to configure BAR2.\n"); return -ENODEV; } Index: linux-work/drivers/i2c/busses/scx200_acb.c =================================================================== --- linux-work.orig/drivers/i2c/busses/scx200_acb.c 2007-12-18 09:37:55.000000000 +1100 +++ linux-work/drivers/i2c/busses/scx200_acb.c 2007-12-18 09:39:03.000000000 +1100 @@ -492,7 +492,7 @@ static __init int scx200_create_pci(cons iface->pdev = pdev; iface->bar = bar; - rc = pci_enable_device_bars(iface->pdev, 1 << iface->bar); + rc = pci_enable_device_io(iface->pdev); if (rc) goto errout_free; Index: linux-work/drivers/ide/pci/cs5520.c =================================================================== --- linux-work.orig/drivers/ide/pci/cs5520.c 2007-12-18 09:37:55.000000000 +1100 +++ linux-work/drivers/ide/pci/cs5520.c 2007-12-18 09:39:03.000000000 +1100 @@ -160,8 +160,14 @@ static int __devinit cs5520_init_one(str ide_setup_pci_noise(dev, d); /* We must not grab the entire device, it has 'ISA' space in its - BARS too and we will freak out other bits of the kernel */ - if (pci_enable_device_bars(dev, 1<<2)) { + * BARS too and we will freak out other bits of the kernel + * + * pci_enable_device_bars() is going away. I replaced it with + * IO only enable for now but I'll need confirmation this is + * allright for that device. If not, it will need some kind of + * quirk. --BenH. + */ + if (pci_enable_device_io(dev)) { printk(KERN_WARNING "%s: Unable to enable 55x0.\n", d->name); return -ENODEV; } Index: linux-work/drivers/ide/setup-pci.c =================================================================== --- linux-work.orig/drivers/ide/setup-pci.c 2007-12-18 09:37:55.000000000 +1100 +++ linux-work/drivers/ide/setup-pci.c 2007-12-18 09:40:07.000000000 +1100 @@ -236,7 +236,9 @@ EXPORT_SYMBOL_GPL(ide_setup_pci_noise); * @d: IDE port info * * Enable the IDE PCI device. We attempt to enable the device in full - * but if that fails then we only need BAR4 so we will enable that. + * but if that fails then we only need IO space. The PCI code should + * have setup the proper resources for us already for controllers in + * legacy mode. * * Returns zero on success or an error code */ @@ -246,7 +248,7 @@ static int ide_pci_enable(struct pci_dev int ret; if (pci_enable_device(dev)) { - ret = pci_enable_device_bars(dev, 1 << 4); + ret = pci_enable_device_io(dev); if (ret < 0) { printk(KERN_WARNING "%s: (ide_setup_pci_device:) " "Could not enable device.\n", d->name); Index: linux-work/drivers/scsi/lpfc/lpfc_init.c =================================================================== --- linux-work.orig/drivers/scsi/lpfc/lpfc_init.c 2007-12-18 09:37:55.000000000 +1100 +++ linux-work/drivers/scsi/lpfc/lpfc_init.c 2007-12-18 09:39:03.000000000 +1100 @@ -2100,10 +2100,9 @@ static pci_ers_result_t lpfc_io_slot_res struct Scsi_Host *shost = pci_get_drvdata(pdev); struct lpfc_hba *phba = ((struct lpfc_vport *)shost->hostdata)->phba; struct lpfc_sli *psli = &phba->sli; - int bars = pci_select_bars(pdev, IORESOURCE_MEM); dev_printk(KERN_INFO, &pdev->dev, "recovering from a slot reset.\n"); - if (pci_enable_device_bars(pdev, bars)) { + if (pci_enable_device_mem(pdev)) { printk(KERN_ERR "lpfc: Cannot re-enable " "PCI device after reset.\n"); return PCI_ERS_RESULT_DISCONNECT; Index: linux-work/drivers/scsi/qla2xxx/qla_os.c =================================================================== --- linux-work.orig/drivers/scsi/qla2xxx/qla_os.c 2007-12-18 09:37:55.000000000 +1100 +++ linux-work/drivers/scsi/qla2xxx/qla_os.c 2007-12-18 09:39:03.000000000 +1100 @@ -1583,7 +1583,7 @@ qla2x00_probe_one(struct pci_dev *pdev, char pci_info[30]; char fw_str[30]; struct scsi_host_template *sht; - int bars; + int bars, mem_only = 0; bars = pci_select_bars(pdev, IORESOURCE_MEM | IORESOURCE_IO); sht = &qla2x00_driver_template; @@ -1594,10 +1594,16 @@ qla2x00_probe_one(struct pci_dev *pdev, pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2532) { bars = pci_select_bars(pdev, IORESOURCE_MEM); sht = &qla24xx_driver_template; + mem_only = 1; } - if (pci_enable_device_bars(pdev, bars)) - goto probe_out; + if (mem_only) { + if (pci_enable_device_mem(pdev)) + goto probe_out; + } else { + if (pci_enable_device(pdev)) + goto probe_out; + } if (pci_find_aer_capability(pdev)) if (pci_enable_pcie_error_reporting(pdev)) -- 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/