]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
delay: Fix ndelay() spuriously treated as udelay()
authorFrederic Weisbecker <frederic@kernel.org>
Thu, 21 Nov 2024 15:29:31 +0000 (16:29 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Fri, 29 Nov 2024 10:40:22 +0000 (11:40 +0100)
A recent rework on delay functions wrongly ended up calling __udelay()
instead of __ndelay() for nanosecond delays, increasing those by 1000.

As a result hangs have been observed on boot

Restore the right function calls.

Fixes: 19e2d91d8cb1 ("delay: Rework udelay and ndelay")
Reported-by: Chen-Yu Tsai <wenst@chromium.org>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Chen-Yu Tsai <wenst@chromium.org>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: Chen-Yu Tsai <wenst@chromium.org>
Link: https://lore.kernel.org/all/20241121152931.51884-1-frederic@kernel.org
include/asm-generic/delay.h

index 76cf237b6e4cb590544e84edc9984c153741f63f..03b0ec7afca6f774a54edf232c55129b00227992 100644 (file)
@@ -75,11 +75,11 @@ static __always_inline void ndelay(unsigned long nsec)
 {
        if (__builtin_constant_p(nsec)) {
                if (nsec >= DELAY_CONST_MAX)
-                       __bad_udelay();
+                       __bad_ndelay();
                else
                        __const_udelay(nsec * NDELAY_CONST_MULT);
        } else {
-               __udelay(nsec);
+               __ndelay(nsec);
        }
 }
 #define ndelay(x) ndelay(x)