Fix -
For SRIOV based adapters, driver should not set the STOP_ADP bit as part
of kill adapter.

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

diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c 
b/drivers/scsi/megaraid/megaraid_sas_base.c
index 93d7ce8b3657..8de845f675b4 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -2076,9 +2076,11 @@ void megaraid_sas_kill_hba(struct megasas_instance 
*instance)
        if ((instance->pdev->device == PCI_DEVICE_ID_LSI_SAS0073SKINNY) ||
                (instance->pdev->device == PCI_DEVICE_ID_LSI_SAS0071SKINNY) ||
                (instance->adapter_type != MFI_SERIES)) {
-               writel(MFI_STOP_ADP, &instance->reg_set->doorbell);
-               /* Flush */
-               readl(&instance->reg_set->doorbell);
+               if (!instance->requestorId) {
+                       writel(MFI_STOP_ADP, &instance->reg_set->doorbell);
+                       /* Flush */
+                       readl(&instance->reg_set->doorbell);
+               }
                if (instance->requestorId && instance->peerIsPresent)
                        memset(instance->ld_ids, 0xff, MEGASAS_MAX_LD_IDS);
        } else {
-- 
2.16.1

Reply via email to