Re: [PATCH 2/4] megaraid_sas: call ISR function to clean up pending replies in OCR path

2016-04-15 Thread Hannes Reinecke
On 04/15/2016 09:23 AM, Sumit Saxena wrote:
> In OCR path, before calling chip reset calls function 
> megasas_wait_for_outstanding_fusion to check reason
> of OCR. In case of firmware FAULT initiated OCR and DCMD timeout initiated 
> timeout, driver will clear any
> outstanding reply(yet to be processed by driver) in reply queues before going 
> for chip reset.
> This code is added to handle a scenario when IO timeout initiated adapter 
> reset and management application
> initiated adapter reset(by sending command to FAULT firmware) happens 
> simultaneously since adapter reset
> function is safe-guarded by reset_mutex so only thread will be doing 
> controller reset. Consider IO timeout
> thread gets mutex and proceeds with adapter reset process after disabling 
> interrupts and by the time
> managementapplication has fired command to firmware to do adapter reset and 
> the same command is completed by
> firmware but since interrupts are disabled, driver will not get completion 
> and the same command will be in
> outstanding/pendingcommands list of driver and refires same command from IO 
> timeout thread after chip reset
> which will again FAULT firmware and evntually causes kill adapter.
> 
> Signed-off-by: Sumit Saxena 
> ---
>  drivers/scsi/megaraid/megaraid_sas_fusion.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
Reviewed-by: Hannes Reinecke 

Cheers,

Hannes
-- 
Dr. Hannes ReineckeTeamlead Storage & Networking
h...@suse.de   +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 2/4] megaraid_sas: call ISR function to clean up pending replies in OCR path

2016-04-15 Thread Sumit Saxena
In OCR path, before calling chip reset calls function 
megasas_wait_for_outstanding_fusion to check reason
of OCR. In case of firmware FAULT initiated OCR and DCMD timeout initiated 
timeout, driver will clear any
outstanding reply(yet to be processed by driver) in reply queues before going 
for chip reset.
This code is added to handle a scenario when IO timeout initiated adapter reset 
and management application
initiated adapter reset(by sending command to FAULT firmware) happens 
simultaneously since adapter reset
function is safe-guarded by reset_mutex so only thread will be doing controller 
reset. Consider IO timeout
thread gets mutex and proceeds with adapter reset process after disabling 
interrupts and by the time
managementapplication has fired command to firmware to do adapter reset and the 
same command is completed by
firmware but since interrupts are disabled, driver will not get completion and 
the same command will be in
outstanding/pendingcommands list of driver and refires same command from IO 
timeout thread after chip reset
which will again FAULT firmware and evntually causes kill adapter.

Signed-off-by: Sumit Saxena 
---
 drivers/scsi/megaraid/megaraid_sas_fusion.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c 
b/drivers/scsi/megaraid/megaraid_sas_fusion.c
index 320c1a0..e2dc205 100644
--- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
+++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
@@ -2762,6 +2762,7 @@ int megasas_wait_for_outstanding_fusion(struct 
megasas_instance *instance,
dev_warn(>pdev->dev, "Found FW in FAULT 
state,"
   " will reset adapter scsi%d.\n",
instance->host->host_no);
+   megasas_complete_cmd_dpc_fusion((unsigned 
long)instance);
retval = 1;
goto out;
}
@@ -2769,6 +2770,7 @@ int megasas_wait_for_outstanding_fusion(struct 
megasas_instance *instance,
if (reason == MFI_IO_TIMEOUT_OCR) {
dev_info(>pdev->dev,
"MFI IO is timed out, initiating OCR\n");
+   megasas_complete_cmd_dpc_fusion((unsigned 
long)instance);
retval = 1;
goto out;
}
-- 
2.4.11

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html