lkml.org 
[lkml]   [2007]   [Dec]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[RFC/PATCH 2/4] pci: Remove users of pci_enable_device_bars()
    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 <benh@kernel.crashing.org>
    ---

    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))

    \
     
     \ /
      Last update: 2007-12-18 00:05    [W:0.024 / U:90.680 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site