diff options
author | Jamie Wellnitz <Jamie.Wellnitz@emulex.com> | 2006-02-28 19:25:19 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2006-02-28 19:55:24 -0500 |
commit | 901a920f0759c6ea94255f3c2cd6ec324f7e4752 (patch) | |
tree | 073f8d1071b0c2193fcbcda0b33a3279dd3e2cb4 /drivers/scsi/lpfc/lpfc_init.c | |
parent | 7062c5281c68dfdb685ec9ba25cfc7b6a15bc0fe (diff) |
[SCSI] lpfc 8.1.2: Fixed system panic in lpfc_sli_brdreset during dynamic add of LP11K
Fixed system panic in lpfc_sli_brdreset during dynamic add of LP11K
Signed-off-by: Jamie Wellnitz <Jamie.Wellnitz@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_init.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_init.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c index b7a603a45328..369487e8f450 100644 --- a/drivers/scsi/lpfc/lpfc_init.c +++ b/drivers/scsi/lpfc/lpfc_init.c | |||
@@ -1462,9 +1462,23 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid) | |||
1462 | phba->pci_bar2_map = pci_resource_start(phba->pcidev, 2); | 1462 | phba->pci_bar2_map = pci_resource_start(phba->pcidev, 2); |
1463 | bar2map_len = pci_resource_len(phba->pcidev, 2); | 1463 | bar2map_len = pci_resource_len(phba->pcidev, 2); |
1464 | 1464 | ||
1465 | /* Map HBA SLIM and Control Registers to a kernel virtual address. */ | 1465 | /* Map HBA SLIM to a kernel virtual address. */ |
1466 | phba->slim_memmap_p = ioremap(phba->pci_bar0_map, bar0map_len); | 1466 | phba->slim_memmap_p = ioremap(phba->pci_bar0_map, bar0map_len); |
1467 | if (!phba->slim_memmap_p) { | ||
1468 | error = -ENODEV; | ||
1469 | dev_printk(KERN_ERR, &pdev->dev, | ||
1470 | "ioremap failed for SLIM memory.\n"); | ||
1471 | goto out_idr_remove; | ||
1472 | } | ||
1473 | |||
1474 | /* Map HBA Control Registers to a kernel virtual address. */ | ||
1467 | phba->ctrl_regs_memmap_p = ioremap(phba->pci_bar2_map, bar2map_len); | 1475 | phba->ctrl_regs_memmap_p = ioremap(phba->pci_bar2_map, bar2map_len); |
1476 | if (!phba->ctrl_regs_memmap_p) { | ||
1477 | error = -ENODEV; | ||
1478 | dev_printk(KERN_ERR, &pdev->dev, | ||
1479 | "ioremap failed for HBA control registers.\n"); | ||
1480 | goto out_iounmap_slim; | ||
1481 | } | ||
1468 | 1482 | ||
1469 | /* Allocate memory for SLI-2 structures */ | 1483 | /* Allocate memory for SLI-2 structures */ |
1470 | phba->slim2p = dma_alloc_coherent(&phba->pcidev->dev, SLI2_SLIM_SIZE, | 1484 | phba->slim2p = dma_alloc_coherent(&phba->pcidev->dev, SLI2_SLIM_SIZE, |
@@ -1643,6 +1657,7 @@ out_free_slim: | |||
1643 | phba->slim2p_mapping); | 1657 | phba->slim2p_mapping); |
1644 | out_iounmap: | 1658 | out_iounmap: |
1645 | iounmap(phba->ctrl_regs_memmap_p); | 1659 | iounmap(phba->ctrl_regs_memmap_p); |
1660 | out_iounmap_slim: | ||
1646 | iounmap(phba->slim_memmap_p); | 1661 | iounmap(phba->slim_memmap_p); |
1647 | out_idr_remove: | 1662 | out_idr_remove: |
1648 | idr_remove(&lpfc_hba_index, phba->brd_no); | 1663 | idr_remove(&lpfc_hba_index, phba->brd_no); |