hmp: Use idle pull to perform forced up-migrations
authorChris Redpath <chris.redpath@arm.com>
Mon, 24 Mar 2014 13:47:29 +0000 (13:47 +0000)
committerJon Medhurst <tixy@linaro.org>
Mon, 24 Mar 2014 15:14:34 +0000 (15:14 +0000)
commitaae7721f20f2520d24a149408a74f18e58f56472
tree746e71a9f2f4deeefe4233921f1a647f306640e2
parent0baa5811bacf15b0e76ee85ce29fedffb5136313
hmp: Use idle pull to perform forced up-migrations

When a normal forced up-migration takes place we stop the task to
be migrated while the target CPU becomes available. This delay can
range from 80us to 1500us on TC2 if the target CPU is in a deep idle
state.

Instead, interrupt the target CPU and ask it to pull a task.
This lets the current eligible task continue executing on the
original CPU while the target CPU wakes. Use a pinned timer to
prevent the pulling CPU going back into power-down with pending
up-migrations.

If we trigger for a nohz kick, it doesn't matter about triggering
for an idle pull since the idle_pull flag will be set when we
execute the softirq and we'll still do the idle pull.

If the target CPU is busy, we will not pull any tasks.

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