hmp: dont attempt to pull tasks if affinity doesn't allow it
authorChris Redpath <chris.redpath@arm.com>
Mon, 24 Mar 2014 13:47:30 +0000 (13:47 +0000)
committerJon Medhurst <tixy@linaro.org>
Mon, 24 Mar 2014 15:14:35 +0000 (15:14 +0000)
commit5a570cfc01b06906faa8ac67ad7c0c6f278761c4
tree0a7e5a6403c1ede8388f2ebd288a62e58823d09a
parentaae7721f20f2520d24a149408a74f18e58f56472
hmp: dont attempt to pull tasks if affinity doesn't allow it

When looking for a task to be idle-pulled, don't consider tasks
where the affinity does not allow that task to be placed on the
target CPU. Also ensure that tasks with restricted affinity
do not block selecting other unrestricted busy tasks.

Use the knowledge of target CPU more effectively in idle pull
by passing to hmp_get_heaviest_task when we know it, otherwise
only checking for general affinity matches with any of the CPUs
in the bigger HMP domain.

We still need to explicitly check affinity is allowed in idle pull
since if we find no match in hmp_get_heaviest_task we will return
the current one, which may not be affine to the new CPU despite
having high enough load. In this case, there is nothing to move.

Signed-off-by: Chris Redpath <chris.redpath@arm.com>
Signed-off-by: Jon Medhurst <tixy@linaro.org>
kernel/sched/fair.c