]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
scsi: megaraid_sas: Fix msleep granularity
authorShivasharan S <shivasharan.srikanteshwara@broadcom.com>
Wed, 17 Oct 2018 06:37:41 +0000 (23:37 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 1 Dec 2019 08:17:25 +0000 (09:17 +0100)
[ Upstream commit 9155cf30a3c4ef97e225d6daddf9bd4b173267e8 ]

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.

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

Signed-off-by: Shivasharan S <shivasharan.srikanteshwara@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/scsi/megaraid/megaraid_sas_base.c

index bc37666f998e64e970ab8077baebb6c18c245c1b..2f94ab9c2354042b8864ae9a13e4c09a4240cc8e 100644 (file)
@@ -3894,12 +3894,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;
                }