From 9638d89a75776abc614c29cdeece0cc874ea2a4c Mon Sep 17 00:00:00 2001 From: "Salyzyn, Mark" Date: Thu, 12 Jan 2006 08:31:57 -0500 Subject: [SCSI] I2O: move pci_request_regions() just behind pci_enable_device() The problem in dpt_i2o could be the pci config space accesses it triggers as it loads, dangerous to do if there is any I/O activity going on in the other driver (probable if a boot driver I guess). I approve this patch to dpt_i2o.c, and am applying it to the Adaptec branch of the driver. Thanks for the investigation Ryoji. --- In linux 2.6.15, data transfer does hang when both dpt_i2o and i2o_block drivers are loaded. It seems that location of pci_request_regions() are wrong. I moved it just behind pci_enable_device() like other drivers, and it becomes fine. Signed-off-by: Ryoji Kamei Signed-off-by: James Bottomley --- drivers/scsi/dpt_i2o.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'drivers/scsi/dpt_i2o.c') diff --git a/drivers/scsi/dpt_i2o.c b/drivers/scsi/dpt_i2o.c index cdeb30b0462e..6e6b293dcb28 100644 --- a/drivers/scsi/dpt_i2o.c +++ b/drivers/scsi/dpt_i2o.c @@ -899,6 +899,12 @@ static int adpt_install_hba(struct scsi_host_template* sht, struct pci_dev* pDev if(pci_enable_device(pDev)) { return -EINVAL; } + + if (pci_request_regions(pDev, "dpt_i2o")) { + PERROR("dpti: adpt_config_hba: pci request region failed\n"); + return -EINVAL; + } + pci_set_master(pDev); if (pci_set_dma_mask(pDev, 0xffffffffffffffffULL) && pci_set_dma_mask(pDev, 0xffffffffULL)) @@ -924,10 +930,6 @@ static int adpt_install_hba(struct scsi_host_template* sht, struct pci_dev* pDev raptorFlag = TRUE; } - if (pci_request_regions(pDev, "dpt_i2o")) { - PERROR("dpti: adpt_config_hba: pci request region failed\n"); - return -EINVAL; - } base_addr_virt = ioremap(base_addr0_phys,hba_map0_area_size); if (!base_addr_virt) { pci_release_regions(pDev); -- cgit v1.2.3