1. Once a second rebalance() is called on cpu0 to adjust priorities,
so cpu-bound processes won't lock others out. However it was only
adjusting processes which were running on cpu0. This was observed
to lead to livelock, eg when a higher-priority process spin-waits
for a lock held by a lower priority one.
Reference: /n/sources/patch/proc-smp-fixes
Date: Tue Apr 19 13:42:06 CES 2016
Signed-off-by: miller@hamnavoe.com
--- /sys/src/9/port/proc.c Tue Apr 19 13:28:33 2016
+++ /sys/src/9/port/proc.c Tue Apr 19 13:42:26 2016
@@ -471,8 +471,6 @@
p = rq->head;
if(p == nil)
continue;
- if(p->mp != MACHP(m->machno))
- continue;
if(pri == p->basepri)
continue;
updatecpu(p);
|