aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_os.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_os.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c24
1 files changed, 5 insertions, 19 deletions
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index d6445ae841b..68f5d24b938 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)