[SCSI] megaraid_sas: Enable MSI-X before calling megasas_init_fw
authoradam radford <aradford@gmail.com>
Fri, 25 Feb 2011 04:56:12 +0000 (20:56 -0800)
committerJames Bottomley <James.Bottomley@suse.de>
Mon, 28 Feb 2011 17:45:54 +0000 (11:45 -0600)
Signed-off-by: Adam Radford <aradford@gmail.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/megaraid/megaraid_sas_base.c

index c4ac4a5..78c2633 100644 (file)
@@ -4039,12 +4039,6 @@ megasas_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
        else
                INIT_WORK(&instance->work_init, process_fw_state_change_wq);
 
-       /*
-        * Initialize MFI Firmware
-        */
-       if (megasas_init_fw(instance))
-               goto fail_init_mfi;
-
        /* Try to enable MSI-X */
        if ((instance->pdev->device != PCI_DEVICE_ID_LSI_SAS1078R) &&
            (instance->pdev->device != PCI_DEVICE_ID_LSI_SAS1078DE) &&
@@ -4054,6 +4048,12 @@ megasas_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
                instance->msi_flag = 1;
 
        /*
+        * Initialize MFI Firmware
+        */
+       if (megasas_init_fw(instance))
+               goto fail_init_mfi;
+
+       /*
         * Register IRQ
         */
        if (request_irq(instance->msi_flag ? instance->msixentry.vector :
@@ -4106,13 +4106,13 @@ megasas_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
        free_irq(instance->msi_flag ? instance->msixentry.vector :
                 instance->pdev->irq, instance);
 fail_irq:
-       if (instance->msi_flag)
-               pci_disable_msix(instance->pdev);
        if (instance->pdev->device == PCI_DEVICE_ID_LSI_FUSION)
                megasas_release_fusion(instance);
        else
                megasas_release_mfi(instance);
       fail_init_mfi:
+       if (instance->msi_flag)
+               pci_disable_msix(instance->pdev);
       fail_alloc_dma_buf:
        if (instance->evt_detail)
                pci_free_consistent(pdev, sizeof(struct megasas_evt_detail),
@@ -4295,6 +4295,10 @@ megasas_resume(struct pci_dev *pdev)
        if (megasas_set_dma_mask(pdev))
                goto fail_set_dma_mask;
 
+       /* Now re-enable MSI-X */
+       if (instance->msi_flag)
+               pci_enable_msix(instance->pdev, &instance->msixentry, 1);
+
        /*
         * Initialize MFI Firmware
         */
@@ -4331,10 +4335,6 @@ megasas_resume(struct pci_dev *pdev)
        tasklet_init(&instance->isr_tasklet, instance->instancet->tasklet,
                     (unsigned long)instance);
 
-       /* Now re-enable MSI-X */
-       if (instance->msi_flag)
-               pci_enable_msix(instance->pdev, &instance->msixentry, 1);
-
        /*
         * Register IRQ
         */