summaryrefslogtreecommitdiff
path: root/include/uapi/linux
diff options
context:
space:
mode:
authorAlastair D'Silva <alastair@d-silva.org>2026-09-16 14:29:10 +1000
committerChen-Yu Tsai <wens@kernel.org>2026-09-20 17:32:54 +0800
commit9ef62592b80c7ffb8cd987d889f659c1dc4f9f16 (patch)
tree290e95d2f743cdf173817111ba23355bbc842b18 /include/uapi/linux
parent1002cc9d60942f8f294d8de7f2805f82f4ebdda0 (diff)
downloadlinux-next-9ef62592b80c7ffb8cd987d889f659c1dc4f9f16.tar.gz
linux-next-9ef62592b80c7ffb8cd987d889f659c1dc4f9f16.zip
clk: sunxi-ng: ccu_common: Use readl_relaxed_poll_timeout_atomic for PLL lock
The Allwinner sunxi-ng CCU driver currently uses readl_relaxed_poll_timeout() in ccu_helper_wait_for_lock() to wait for PLLs to lock. This non-atomic poll macro relies on ktime_get() and the kernel timekeeping infrastructure. During early boot or sensitive clock transitions (such as CPUfreq DVFS scaling) where timer interrupts or timekeeping may be suspended or unstable, ktime_get() fails to advance. This turns the timeout calculation into an infinite busy-wait loop, causing RCU stalls and system freezes if the PLL lock bit does not assert immediately. Switch to readl_relaxed_poll_timeout_atomic(). This atomic variant relies on udelay() rather than timekeeping, making it safe to execute even when timekeeping is suspended or uninitialized. Assisted-by: LLM Signed-off-by: Alastair D'Silva <alastair@d-silva.org> Link: https://patch.msgid.link/20260916042910.382744-1-alastair@d-silva.org Signed-off-by: Chen-Yu Tsai <wens@kernel.org>
Diffstat (limited to 'include/uapi/linux')
0 files changed, 0 insertions, 0 deletions