Issue -
In megasas_transition_to_ready() driver waits 180seconds for controller
to change FW state. Here we are calling msleep(1) in a loop for this.
As explained in timers-howto.txt, msleep(1) will actually sleep longer
than 1ms. If a faulty controller is connected, we will end up waiting for
much more than 180 seconds causing unnecessary delays during load.

Fix -
Change the granularity of msleep() call from 1ms to 1000ms.

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

diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c 
b/drivers/scsi/megaraid/megaraid_sas_base.c
index 1a9abeed4d97..aefc4c936b60 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -3891,12 +3891,12 @@ megasas_transition_to_ready(struct megasas_instance 
*instance, int ocr)
                /*
                 * The cur_state should not last for more than max_wait secs
                 */
-               for (i = 0; i < (max_wait * 1000); i++) {
+               for (i = 0; i < max_wait; i++) {
                        curr_abs_state = instance->instancet->
                                read_fw_status_reg(instance->reg_set);
 
                        if (abs_state == curr_abs_state) {
-                               msleep(1);
+                               msleep(1000);
                        } else
                                break;
                }
-- 
2.16.1

Reply via email to