Indeed. Your report has revealed the problem to me.
The issue is that there are three conditions embedded in that if(!lower_rq)
code, but two are buried in the !retry case. This was the mistake I was making.
We basically need to
a) dequeue if the task hasnt moved
b) retry if the task *has* moved AND there are more tasks left
c) stop of the task *has* moved AND there are no more tasks
I was missing logic to handle (c). "v2" should fix this so it is handled.
Please give it a try. Thanks again, Gilles!
(Again, only build-tested)
Regards,
-Greg
---
Gregory Haskins (2):
RT: remove "paranoid" limit in push_rt_task
RT: Remove comment that is no longer true
kernel/sched_rt.c | 44 ++++++++++++++++++++++----------------------
1 files changed, 22 insertions(+), 22 deletions(-)
--
Signature
--