]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
scsi: megaraid_sas: Do not set HBA Operational if FW is not in operational state
authorAnand Lodnoor <anand.lodnoor@broadcom.com>
Tue, 14 Jan 2020 11:21:17 +0000 (16:51 +0530)
committerStefan Bader <stefan.bader@canonical.com>
Fri, 3 Apr 2020 12:53:47 +0000 (14:53 +0200)
After issuing a adapter reset, driver blindly used to set adprecovery flag
to OPERATIONAL state.  Add a check to see if the FW is operational before
setting the flag and marking reset adapter successful.

Link: https://lore.kernel.org/r/1579000882-20246-7-git-send-email-anand.lodnoor@broadcom.com
Signed-off-by: Shivasharan S <shivasharan.srikanteshwara@broadcom.com>
Signed-off-by: Anand Lodnoor <anand.lodnoor@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit eeb63c23ffe1704990202af279400bf2b448ad89)
Signed-off-by: Michael Reed <Michael.Reed@canonical.com>
BugLink: https://bugs.launchpad.net/bugs/1863581
Update the Megaraid_sas driver to version 07.713.01.00-rc1 from 07.710.50.00-rc1

Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
drivers/scsi/megaraid/megaraid_sas_fusion.c

index 3cc818dd677c3c3604c30f34d48f48459517306b..97e9d9d0b74a35434e1447b4adffe25193ff5d60 100644 (file)
@@ -4993,6 +4993,15 @@ int megasas_reset_fusion(struct Scsi_Host *shost, int reason)
                                megasas_set_dynamic_target_properties(sdev, is_target_prop);
                        }
 
+                       status_reg = instance->instancet->read_fw_status_reg
+                                       (instance);
+                       abs_state = status_reg & MFI_STATE_MASK;
+                       if (abs_state != MFI_STATE_OPERATIONAL) {
+                               dev_info(&instance->pdev->dev,
+                                        "Adapter is not OPERATIONAL, state 0x%x for scsi:%d\n",
+                                        abs_state, instance->host->host_no);
+                               goto out;
+                       }
                        atomic_set(&instance->adprecovery, MEGASAS_HBA_OPERATIONAL);
 
                        dev_info(&instance->pdev->dev,