mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-04-15 21:47:40 +07:00
[PATCH] sched: change prio bias only if queued
prio_bias should only be adjusted in set_user_nice if p is actually currently queued. Signed-off-by: Con Kolivas <kernel@kolivas.org> Cc: Ingo Molnar <mingo@elte.hu> Cc: Nick Piggin <nickpiggin@yahoo.com.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
b910472dd3
commit
738a2ccbcf
@ -3508,25 +3508,24 @@ void set_user_nice(task_t *p, long nice)
|
|||||||
* not SCHED_NORMAL:
|
* not SCHED_NORMAL:
|
||||||
*/
|
*/
|
||||||
if (rt_task(p)) {
|
if (rt_task(p)) {
|
||||||
dec_prio_bias(rq, p->static_prio);
|
|
||||||
p->static_prio = NICE_TO_PRIO(nice);
|
p->static_prio = NICE_TO_PRIO(nice);
|
||||||
inc_prio_bias(rq, p->static_prio);
|
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
}
|
}
|
||||||
array = p->array;
|
array = p->array;
|
||||||
if (array)
|
if (array) {
|
||||||
dequeue_task(p, array);
|
dequeue_task(p, array);
|
||||||
|
dec_prio_bias(rq, p->static_prio);
|
||||||
|
}
|
||||||
|
|
||||||
old_prio = p->prio;
|
old_prio = p->prio;
|
||||||
new_prio = NICE_TO_PRIO(nice);
|
new_prio = NICE_TO_PRIO(nice);
|
||||||
delta = new_prio - old_prio;
|
delta = new_prio - old_prio;
|
||||||
dec_prio_bias(rq, p->static_prio);
|
|
||||||
p->static_prio = NICE_TO_PRIO(nice);
|
p->static_prio = NICE_TO_PRIO(nice);
|
||||||
inc_prio_bias(rq, p->static_prio);
|
|
||||||
p->prio += delta;
|
p->prio += delta;
|
||||||
|
|
||||||
if (array) {
|
if (array) {
|
||||||
enqueue_task(p, array);
|
enqueue_task(p, array);
|
||||||
|
inc_prio_bias(rq, p->static_prio);
|
||||||
/*
|
/*
|
||||||
* If the task increased its priority or is running and
|
* If the task increased its priority or is running and
|
||||||
* lowered its priority, then reschedule its CPU:
|
* lowered its priority, then reschedule its CPU:
|
||||||
|
Loading…
Reference in New Issue
Block a user