diff options
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_os.c')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_os.c | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index d6445ae841ba..68f5d24b938b 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
@@ -1485,6 +1485,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
1485 | ha->isp_ops.fw_dump = qla2100_fw_dump; | 1485 | ha->isp_ops.fw_dump = qla2100_fw_dump; |
1486 | ha->isp_ops.read_optrom = qla2x00_read_optrom_data; | 1486 | ha->isp_ops.read_optrom = qla2x00_read_optrom_data; |
1487 | ha->isp_ops.write_optrom = qla2x00_write_optrom_data; | 1487 | ha->isp_ops.write_optrom = qla2x00_write_optrom_data; |
1488 | ha->isp_ops.get_flash_version = qla2x00_get_flash_version; | ||
1488 | if (IS_QLA2100(ha)) { | 1489 | if (IS_QLA2100(ha)) { |
1489 | host->max_id = MAX_TARGETS_2100; | 1490 | host->max_id = MAX_TARGETS_2100; |
1490 | ha->mbx_count = MAILBOX_REGISTER_COUNT_2100; | 1491 | ha->mbx_count = MAILBOX_REGISTER_COUNT_2100; |
@@ -1550,6 +1551,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
1550 | ha->isp_ops.beacon_on = qla24xx_beacon_on; | 1551 | ha->isp_ops.beacon_on = qla24xx_beacon_on; |
1551 | ha->isp_ops.beacon_off = qla24xx_beacon_off; | 1552 | ha->isp_ops.beacon_off = qla24xx_beacon_off; |
1552 | ha->isp_ops.beacon_blink = qla24xx_beacon_blink; | 1553 | ha->isp_ops.beacon_blink = qla24xx_beacon_blink; |
1554 | ha->isp_ops.get_flash_version = qla24xx_get_flash_version; | ||
1553 | ha->gid_list_info_size = 8; | 1555 | ha->gid_list_info_size = 8; |
1554 | ha->optrom_size = OPTROM_SIZE_24XX; | 1556 | ha->optrom_size = OPTROM_SIZE_24XX; |
1555 | } | 1557 | } |
@@ -1564,14 +1566,6 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
1564 | INIT_LIST_HEAD(&ha->list); | 1566 | INIT_LIST_HEAD(&ha->list); |
1565 | INIT_LIST_HEAD(&ha->fcports); | 1567 | INIT_LIST_HEAD(&ha->fcports); |
1566 | 1568 | ||
1567 | /* | ||
1568 | * These locks are used to prevent more than one CPU | ||
1569 | * from modifying the queue at the same time. The | ||
1570 | * higher level "host_lock" will reduce most | ||
1571 | * contention for these locks. | ||
1572 | */ | ||
1573 | spin_lock_init(&ha->mbx_reg_lock); | ||
1574 | |||
1575 | qla2x00_config_dma_addressing(ha); | 1569 | qla2x00_config_dma_addressing(ha); |
1576 | if (qla2x00_mem_alloc(ha)) { | 1570 | if (qla2x00_mem_alloc(ha)) { |
1577 | qla_printk(KERN_WARNING, ha, | 1571 | qla_printk(KERN_WARNING, ha, |
@@ -1615,15 +1609,9 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
1615 | host->max_lun = MAX_LUNS; | 1609 | host->max_lun = MAX_LUNS; |
1616 | host->transportt = qla2xxx_transport_template; | 1610 | host->transportt = qla2xxx_transport_template; |
1617 | 1611 | ||
1618 | ret = request_irq(pdev->irq, ha->isp_ops.intr_handler, | 1612 | ret = qla2x00_request_irqs(ha); |
1619 | IRQF_DISABLED|IRQF_SHARED, QLA2XXX_DRIVER_NAME, ha); | 1613 | if (ret) |
1620 | if (ret) { | ||
1621 | qla_printk(KERN_WARNING, ha, | ||
1622 | "Failed to reserve interrupt %d already in use.\n", | ||
1623 | pdev->irq); | ||
1624 | goto probe_failed; | 1614 | goto probe_failed; |
1625 | } | ||
1626 | host->irq = pdev->irq; | ||
1627 | 1615 | ||
1628 | /* Initialized the timer */ | 1616 | /* Initialized the timer */ |
1629 | qla2x00_start_timer(ha, qla2x00_timer, WATCH_INTERVAL); | 1617 | qla2x00_start_timer(ha, qla2x00_timer, WATCH_INTERVAL); |
@@ -1753,9 +1741,7 @@ qla2x00_free_device(scsi_qla_host_t *ha) | |||
1753 | 1741 | ||
1754 | qla2x00_mem_free(ha); | 1742 | qla2x00_mem_free(ha); |
1755 | 1743 | ||
1756 | /* Detach interrupts */ | 1744 | qla2x00_free_irqs(ha); |
1757 | if (ha->host->irq) | ||
1758 | free_irq(ha->host->irq, ha); | ||
1759 | 1745 | ||
1760 | /* release io space registers */ | 1746 | /* release io space registers */ |
1761 | if (ha->iobase) | 1747 | if (ha->iobase) |