aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/cpu.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/cpu.c')
-rw-r--r--kernel/cpu.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/kernel/cpu.c b/kernel/cpu.c
index 67a60076dd7e..6ba0f1ecb212 100644
--- a/kernel/cpu.c
+++ b/kernel/cpu.c
@@ -414,6 +414,14 @@ int disable_nonboot_cpus(void)
414 return error; 414 return error;
415} 415}
416 416
417void __weak arch_enable_nonboot_cpus_begin(void)
418{
419}
420
421void __weak arch_enable_nonboot_cpus_end(void)
422{
423}
424
417void __ref enable_nonboot_cpus(void) 425void __ref enable_nonboot_cpus(void)
418{ 426{
419 int cpu, error; 427 int cpu, error;
@@ -425,6 +433,9 @@ void __ref enable_nonboot_cpus(void)
425 goto out; 433 goto out;
426 434
427 printk("Enabling non-boot CPUs ...\n"); 435 printk("Enabling non-boot CPUs ...\n");
436
437 arch_enable_nonboot_cpus_begin();
438
428 for_each_cpu(cpu, frozen_cpus) { 439 for_each_cpu(cpu, frozen_cpus) {
429 error = _cpu_up(cpu, 1); 440 error = _cpu_up(cpu, 1);
430 if (!error) { 441 if (!error) {
@@ -433,6 +444,9 @@ void __ref enable_nonboot_cpus(void)
433 } 444 }
434 printk(KERN_WARNING "Error taking CPU%d up: %d\n", cpu, error); 445 printk(KERN_WARNING "Error taking CPU%d up: %d\n", cpu, error);
435 } 446 }
447
448 arch_enable_nonboot_cpus_end();
449
436 cpumask_clear(frozen_cpus); 450 cpumask_clear(frozen_cpus);
437out: 451out:
438 cpu_maps_update_done(); 452 cpu_maps_update_done();