mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-29 18:19:02 +00:00
kernel: 5.10: fix busy wait loop in mediatek PPE code
Reapply changes added to 5.4 but not copied to 5.10:
3da4acaa7b
("kernel: fix busy wait loop in mediatek PPE code")
The intention is for the loop to timeout if the body does not succeed.
The current logic calls time_is_before_jiffies(timeout) which is false
until after the timeout, so the loop body never executes.
time_is_after_jiffies(timeout) will return true until timeout is less
than jiffies, which is the intended behavior here.
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
This commit is contained in:
parent
0e407dfe8b
commit
99f2b464b4
@ -185,7 +185,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
+{
|
+{
|
||||||
+ unsigned long timeout = jiffies + HZ;
|
+ unsigned long timeout = jiffies + HZ;
|
||||||
+
|
+
|
||||||
+ while (time_is_before_jiffies(timeout)) {
|
+ while (time_is_after_jiffies(timeout)) {
|
||||||
+ if (!(ppe_r32(ppe, MTK_PPE_GLO_CFG) & MTK_PPE_GLO_CFG_BUSY))
|
+ if (!(ppe_r32(ppe, MTK_PPE_GLO_CFG) & MTK_PPE_GLO_CFG_BUSY))
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+
|
+
|
||||||
|
Loading…
Reference in New Issue
Block a user