diff options
Diffstat (limited to 'kernel/sched/core.c')
-rw-r--r-- | kernel/sched/core.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index f5605b6deea4..da302ca98f60 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c | |||
@@ -5089,10 +5089,20 @@ static struct notifier_block migration_notifier = { | |||
5089 | .priority = CPU_PRI_MIGRATION, | 5089 | .priority = CPU_PRI_MIGRATION, |
5090 | }; | 5090 | }; |
5091 | 5091 | ||
5092 | static void __cpuinit set_cpu_rq_start_time(void) | ||
5093 | { | ||
5094 | int cpu = smp_processor_id(); | ||
5095 | struct rq *rq = cpu_rq(cpu); | ||
5096 | rq->age_stamp = sched_clock_cpu(cpu); | ||
5097 | } | ||
5098 | |||
5092 | static int sched_cpu_active(struct notifier_block *nfb, | 5099 | static int sched_cpu_active(struct notifier_block *nfb, |
5093 | unsigned long action, void *hcpu) | 5100 | unsigned long action, void *hcpu) |
5094 | { | 5101 | { |
5095 | switch (action & ~CPU_TASKS_FROZEN) { | 5102 | switch (action & ~CPU_TASKS_FROZEN) { |
5103 | case CPU_STARTING: | ||
5104 | set_cpu_rq_start_time(); | ||
5105 | return NOTIFY_OK; | ||
5096 | case CPU_DOWN_FAILED: | 5106 | case CPU_DOWN_FAILED: |
5097 | set_cpu_active((long)hcpu, true); | 5107 | set_cpu_active((long)hcpu, true); |
5098 | return NOTIFY_OK; | 5108 | return NOTIFY_OK; |
@@ -6970,6 +6980,7 @@ void __init sched_init(void) | |||
6970 | if (cpu_isolated_map == NULL) | 6980 | if (cpu_isolated_map == NULL) |
6971 | zalloc_cpumask_var(&cpu_isolated_map, GFP_NOWAIT); | 6981 | zalloc_cpumask_var(&cpu_isolated_map, GFP_NOWAIT); |
6972 | idle_thread_set_boot_cpu(); | 6982 | idle_thread_set_boot_cpu(); |
6983 | set_cpu_rq_start_time(); | ||
6973 | #endif | 6984 | #endif |
6974 | init_sched_fair_class(); | 6985 | init_sched_fair_class(); |
6975 | 6986 | ||