]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
spi: hisi-kunpeng: prevent infinite while() loop in hisi_spi_flush_fifo
authorPei Xiao <xiaopei01@kylinos.cn>
Thu, 19 Mar 2026 03:06:41 +0000 (11:06 +0800)
committerMark Brown <broonie@kernel.org>
Mon, 23 Mar 2026 22:02:39 +0000 (22:02 +0000)
commit9f61daf2c2debe9f5cf4e1a4471e56a89a6fe45a
treea3b655112af84624b4c72dab3abf56af194bc33e
parentc369299895a591d96745d6492d4888259b004a9e
spi: hisi-kunpeng: prevent infinite while() loop in hisi_spi_flush_fifo

The hisi_spi_flush_fifo()'s inner while loop that lacks any timeout
mechanism. Maybe the hardware never becomes empty, the loop will spin
forever, causing the CPU to hang.

Fix this by adding a inner_limit based on loops_per_jiffy. The inner loop
now exits after approximately one jiffy if the FIFO remains non-empty, logs
a ratelimited warning, and breaks out of the outer loop. Additionally, add
a cpu_relax() inside the busy loop to improve power efficiency.

Fixes: c770d8631e18 ("spi: Add HiSilicon SPI Controller Driver for Kunpeng SoCs")
Signed-off-by: Pei Xiao <xiaopei01@kylinos.cn>
Link: https://patch.msgid.link/d834ce28172886bfaeb9c8ca00cfd9bf1c65d5a1.1773889292.git.xiaopei01@kylinos.cn
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-hisi-kunpeng.c