2020-12-11 11:39:28

by Yejune Deng

[permalink] [raw]
Subject: [PATCH] init: fix msleep() is not accurate

See Documentation/timers/timers-howto.rst, msleep() is not
for (1ms - 20ms),use usleep_range() instead.

Signed-off-by: Yejune Deng <[email protected]>
---
init/do_mounts.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/init/do_mounts.c b/init/do_mounts.c
index a78e44e..e007b47 100644
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -606,7 +606,7 @@ void __init prepare_namespace(void)
saved_root_name);
while (driver_probe_done() != 0 ||
(ROOT_DEV = name_to_dev_t(saved_root_name)) == 0)
- msleep(5);
+ usleep_range(5000, 6000);
async_synchronize_full();
}

--
1.9.1


2020-12-12 04:16:16

by Dominik Brodowski

[permalink] [raw]
Subject: Re: [PATCH] init: fix msleep() is not accurate

Am Fri, Dec 11, 2020 at 11:24:12AM +0800 schrieb Yejune Deng:
> See Documentation/timers/timers-howto.rst, msleep() is not
> for (1ms - 20ms),use usleep_range() instead.

While technically correct, this branch is only taken if the "rootwait"
kernel parameter is passed -- and as the kernel is looping here, it does not
really hurt if the msleep(5) takes a bit longer than advertised.

Thanks,
Dominik