[tip:smp/hotplug] sched/migration: Move prepare transition to SCHED_STARTING state

From: tip-bot for Thomas Gleixner
Date: Thu May 05 2016 - 07:25:03 EST


Commit-ID: 42ee97d78a69d580d240e79b69a3bb151472270c
Gitweb: http://git.kernel.org/tip/42ee97d78a69d580d240e79b69a3bb151472270c
Author: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
AuthorDate: Thu, 10 Mar 2016 12:54:15 +0100
Committer: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
CommitDate: Thu, 5 May 2016 13:17:54 +0200

sched/migration: Move prepare transition to SCHED_STARTING state

We can piggy pack that on the SCHED_STARTING state. It's not required before
the cpu actually comes online. Name the function proper as it has nothing to
do with migration.

Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Acked-by: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Cc: rt@xxxxxxxxxxxxx
Link: http://lkml.kernel.org/r/20160310120025.248226511@xxxxxxxxxxxxx
Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>

---
kernel/sched/core.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 0a31078..bafc308 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -5424,11 +5424,6 @@ migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu)

switch (action & ~CPU_TASKS_FROZEN) {

- case CPU_UP_PREPARE:
- rq->calc_load_update = calc_load_update;
- account_reset_rq(rq);
- break;
-
case CPU_ONLINE:
/* Update our root-domain */
raw_spin_lock_irqsave(&rq->lock, flags);
@@ -7139,9 +7134,19 @@ int sched_cpu_deactivate(unsigned int cpu)
return 0;
}

+static void sched_rq_cpu_starting(unsigned int cpu)
+{
+ struct rq *rq = cpu_rq(cpu);
+
+ rq->calc_load_update = calc_load_update;
+ account_reset_rq(rq);
+ update_max_interval();
+}
+
int sched_cpu_starting(unsigned int cpu)
{
set_cpu_rq_start_time(cpu);
+ sched_rq_cpu_starting(cpu);
return 0;
}

@@ -7182,11 +7187,8 @@ void __init sched_init_smp(void)
static int __init migration_init(void)
{
void *cpu = (void *)(long)smp_processor_id();
- int err;

- /* Initialize migration for the boot CPU */
- err = migration_call(&migration_notifier, CPU_UP_PREPARE, cpu);
- BUG_ON(err == NOTIFY_BAD);
+ sched_rq_cpu_starting(smp_processor_id());
migration_call(&migration_notifier, CPU_ONLINE, cpu);
register_cpu_notifier(&migration_notifier);