lkml.org 
[lkml]   [2006]   [Jan]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 1/2] I2O: don't disable PCI device if it is enabled before probing
    Changes:
    --------
    - If PCI device is enabled before probing, it will not be disabled at
    exit.

    Signed-off-by: Markus Lidel <Markus.Lidel@shadowconnect.com>
    --- a/drivers/message/i2o/pci.c 2006-01-23 23:41:42.031509195 +0100
    +++ b/drivers/message/i2o/pci.c 2006-01-23 01:03:51.236440918 +0100
    @@ -88,6 +88,11 @@
    struct device *dev = &pdev->dev;
    int i;

    + if (pci_request_regions(pdev, OSM_DESCRIPTION)) {
    + printk(KERN_ERR "%s: device already claimed\n", c->name);
    + return -ENODEV;
    + }
    +
    for (i = 0; i < 6; i++) {
    /* Skip I/O spaces */
    if (!(pci_resource_flags(pdev, i) & IORESOURCE_IO)) {
    @@ -298,7 +321,7 @@
    struct i2o_controller *c;
    int rc;
    struct pci_dev *i960 = NULL;
    - int pci_dev_busy = 0;
    + int enabled = pdev->is_enabled;

    printk(KERN_INFO "i2o: Checking for PCI I2O controllers...\n");

    @@ -308,16 +331,12 @@
    return -ENODEV;
    }

    - if ((rc = pci_enable_device(pdev))) {
    - printk(KERN_WARNING "i2o: couldn't enable device %s\n",
    - pci_name(pdev));
    - return rc;
    - }
    -
    - if (pci_request_regions(pdev, OSM_DESCRIPTION)) {
    - printk(KERN_ERR "i2o: device already claimed\n");
    - return -ENODEV;
    - }
    + if (!enabled)
    + if ((rc = pci_enable_device(pdev))) {
    + printk(KERN_WARNING "i2o: couldn't enable device %s\n",
    + pci_name(pdev));
    + return rc;
    + }

    if (pci_set_dma_mask(pdev, DMA_32BIT_MASK)) {
    printk(KERN_WARNING "i2o: no suitable DMA found for %s\n",
    @@ -395,9 +414,7 @@

    if ((rc = i2o_pci_alloc(c))) {
    printk(KERN_ERR "%s: DMA / IO allocation for I2O controller "
    - " failed\n", c->name);
    - if (rc == -ENODEV)
    - pci_dev_busy = 1;
    + "failed\n", c->name);
    goto free_controller;
    }

    @@ -425,7 +442,7 @@
    i2o_iop_free(c);

    disable:
    - if (!pci_dev_busy)
    + if (!enabled)
    pci_disable_device(pdev);

    return rc;
    \
     
     \ /
      Last update: 2006-01-24 00:32    [W:3.352 / U:0.148 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site