Skip to content

Commit 8e3ed9e

Browse files
cp890582martinkpetersen
authored andcommitted
scsi: megaraid_sas: Increase register read retry rount from 3 to 30 for selected registers
In BMC environments with concurrent access to multiple registers, certain registers occasionally yield a value of 0 even after 3 retries due to hardware errata. As a fix, we have extended the retry count from 3 to 30. The same errata applies to the mpt3sas driver, and a similar patch has been accepted. Please find more details in the mpt3sas patch reference link. Link: https://lore.kernel.org/r/[email protected] Fixes: 272652f ("scsi: megaraid_sas: add retry logic in megasas_readl") Cc: [email protected] Signed-off-by: Chandrakanth patil <[email protected]> Signed-off-by: Sumit Saxena <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Martin K. Petersen <[email protected]>
1 parent 0bb80ec commit 8e3ed9e

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

drivers/scsi/megaraid/megaraid_sas_base.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -263,13 +263,13 @@ u32 megasas_readl(struct megasas_instance *instance,
263263
* Fusion registers could intermittently return all zeroes.
264264
* This behavior is transient in nature and subsequent reads will
265265
* return valid value. As a workaround in driver, retry readl for
266-
* upto three times until a non-zero value is read.
266+
* up to thirty times until a non-zero value is read.
267267
*/
268268
if (instance->adapter_type == AERO_SERIES) {
269269
do {
270270
ret_val = readl(addr);
271271
i++;
272-
} while (ret_val == 0 && i < 3);
272+
} while (ret_val == 0 && i < 30);
273273
return ret_val;
274274
} else {
275275
return readl(addr);

0 commit comments

Comments
 (0)