]> nv-tegra.nvidia Code Review - linux-2.6.git/commitdiff
[PATCH 2/2] cciss: remove calls to pci_disable_device
authormike.miller@hp.com <mike.miller@hp.com>
Wed, 13 Dec 2006 12:10:04 +0000 (13:10 +0100)
committerJens Axboe <jens.axboe@oracle.com>
Wed, 13 Dec 2006 12:10:04 +0000 (13:10 +0100)
This patch removes calls to pci_disable_device except in fail_all_cmds. The
pci_disable_device function does something nasty to Smart Array controllers
that pci_enable_device does not undo. So if the driver is unloaded it cannot be
reloaded.

Also, customers can disable any pci device via the ROM Based Setup Utility
(RBSU). If the customer has disabled the controller we should not try to
blindly enable the card from the driver.  Please consider this for inclusion.

Signed-off-by: Mike Miller <mike.miller@hp.com>
Acked-by: Alan Cox <alan@redhat.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
drivers/block/cciss.c

index 8879e95b121e83e314d37e7ccf961ff03a9a58a6..335e218b6dccc2b00190ab275bc81e1d5a0ef084 100644 (file)
@@ -3006,10 +3006,8 @@ static int cciss_pci_init(ctlr_info_t *c, struct pci_dev *pdev)
 
       err_out_free_res:
        pci_release_regions(pdev);
-
-      err_out_disable_pdev:
-       pci_disable_device(pdev);
        return err;
+
 }
 
 /*
@@ -3383,7 +3381,6 @@ static int __devinit cciss_init_one(struct pci_dev *pdev,
                        blk_cleanup_queue(drv->queue);
        }
        pci_release_regions(pdev);
-       pci_disable_device(pdev);
        pci_set_drvdata(pdev, NULL);
        free_hba(i);
        return -1;
@@ -3453,7 +3450,6 @@ static void __devexit cciss_remove_one(struct pci_dev *pdev)
        kfree(hba[i]->scsi_rejects.complete);
 #endif
        pci_release_regions(pdev);
-       pci_disable_device(pdev);
        pci_set_drvdata(pdev, NULL);
        free_hba(i);
 }