aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/perf_event.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/kernel/perf_event.c b/kernel/perf_event.c
index c502b18594cc..fb3031cf9f17 100644
--- a/kernel/perf_event.c
+++ b/kernel/perf_event.c
@@ -5368,12 +5368,22 @@ int perf_event_init_task(struct task_struct *child)
5368 return ret; 5368 return ret;
5369} 5369}
5370 5370
5371static void __init perf_event_init_all_cpus(void)
5372{
5373 int cpu;
5374 struct perf_cpu_context *cpuctx;
5375
5376 for_each_possible_cpu(cpu) {
5377 cpuctx = &per_cpu(perf_cpu_context, cpu);
5378 __perf_event_init_context(&cpuctx->ctx, NULL);
5379 }
5380}
5381
5371static void __cpuinit perf_event_init_cpu(int cpu) 5382static void __cpuinit perf_event_init_cpu(int cpu)
5372{ 5383{
5373 struct perf_cpu_context *cpuctx; 5384 struct perf_cpu_context *cpuctx;
5374 5385
5375 cpuctx = &per_cpu(perf_cpu_context, cpu); 5386 cpuctx = &per_cpu(perf_cpu_context, cpu);
5376 __perf_event_init_context(&cpuctx->ctx, NULL);
5377 5387
5378 spin_lock(&perf_resource_lock); 5388 spin_lock(&perf_resource_lock);
5379 cpuctx->max_pertask = perf_max_events - perf_reserved_percpu; 5389 cpuctx->max_pertask = perf_max_events - perf_reserved_percpu;
@@ -5439,6 +5449,7 @@ static struct notifier_block __cpuinitdata perf_cpu_nb = {
5439 5449
5440void __init perf_event_init(void) 5450void __init perf_event_init(void)
5441{ 5451{
5452 perf_event_init_all_cpus();
5442 perf_cpu_notify(&perf_cpu_nb, (unsigned long)CPU_UP_PREPARE, 5453 perf_cpu_notify(&perf_cpu_nb, (unsigned long)CPU_UP_PREPARE,
5443 (void *)(long)smp_processor_id()); 5454 (void *)(long)smp_processor_id());
5444 perf_cpu_notify(&perf_cpu_nb, (unsigned long)CPU_ONLINE, 5455 perf_cpu_notify(&perf_cpu_nb, (unsigned long)CPU_ONLINE,