fw_reset_no_pci_access is only applicable for MFI controllers and is not
used for Fusion controllers.

For all Fusion controllers, driver can check reset adapter bit in
status register before performing a chip reset, without
setting "fw_reset_no_pci_access".

Signed-off-by: Shivasharan S <shivasharan.srikanteshw...@broadcom.com>
---
 drivers/scsi/megaraid/megaraid_sas_base.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c 
b/drivers/scsi/megaraid/megaraid_sas_base.c
index d2714fc833ae..77db6e773a01 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -5489,7 +5489,6 @@ static int megasas_init_fw(struct megasas_instance 
*instance)
        int i, j, loop, fw_msix_count = 0;
        struct IOV_111 *iovPtr;
        struct fusion_context *fusion;
-       bool do_adp_reset = true;
 
        fusion = instance->ctrl_context;
 
@@ -5536,13 +5535,18 @@ static int megasas_init_fw(struct megasas_instance 
*instance)
        }
 
        if (megasas_transition_to_ready(instance, 0)) {
-               if (instance->adapter_type >= INVADER_SERIES) {
+               if (instance->adapter_type != MFI_SERIES) {
                        status_reg = instance->instancet->read_fw_status_reg(
                                        instance);
-                       do_adp_reset = status_reg & MFI_RESET_ADAPTER;
-               }
-
-               if (do_adp_reset) {
+                       if (status_reg & MFI_RESET_ADAPTER) {
+                               instance->instancet->adp_reset
+                                       (instance, instance->reg_set);
+                               if (megasas_transition_to_ready(instance, 0))
+                                       goto fail_ready_state;
+                       } else {
+                               goto fail_ready_state;
+                       }
+               } else {
                        atomic_set(&instance->fw_reset_no_pci_access, 1);
                        instance->instancet->adp_reset
                                (instance, instance->reg_set);
@@ -5556,8 +5560,6 @@ static int megasas_init_fw(struct megasas_instance 
*instance)
 
                        if (megasas_transition_to_ready(instance, 0))
                                goto fail_ready_state;
-               } else {
-                       goto fail_ready_state;
                }
        }
 
-- 
2.16.1

Reply via email to