mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 11:50:43 +09:00
sched: HMP fix traversing the rb-tree from the curr pointer
The hmp_get_{lightest,heaviest}_task() need to use
__pick_first_entity() to get a pointer to a sched_entity on the rq.
The current is not kept on the rq while running, so its rb-tree node
pointers are no longer valid.
Signed-off-by: Chris Redpath <chris.redpath@arm.com>
Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>
Signed-off-by: Jon Medhurst <tixy@linaro.org>
This commit is contained in:
committed by
Jon Medhurst
parent
83a3cdb6d3
commit
c05cd3079d
@@ -3602,6 +3602,8 @@ static struct sched_entity *hmp_get_heaviest_task(
|
||||
hmp = hmp_faster_domain(cpu_of(se->cfs_rq->rq));
|
||||
hmp_target_mask = &hmp->cpus;
|
||||
}
|
||||
/* The currently running task is not on the runqueue */
|
||||
se = __pick_first_entity(cfs_rq_of(se));
|
||||
|
||||
while (num_tasks && se) {
|
||||
if (entity_is_task(se) &&
|
||||
@@ -3630,10 +3632,11 @@ static struct sched_entity *hmp_get_lightest_task(
|
||||
struct hmp_domain *hmp;
|
||||
if (hmp_cpu_is_slowest(cpu_of(se->cfs_rq->rq)))
|
||||
return min_se;
|
||||
|
||||
hmp = hmp_slower_domain(cpu_of(se->cfs_rq->rq));
|
||||
hmp_target_mask = &hmp->cpus;
|
||||
}
|
||||
/* The currently running task is not on the runqueue */
|
||||
se = __pick_first_entity(cfs_rq_of(se));
|
||||
|
||||
while (num_tasks && se) {
|
||||
if (entity_is_task(se) &&
|
||||
|
||||
Reference in New Issue
Block a user