diff options
| -rw-r--r-- | kernel/Makefile | 1 | ||||
| -rw-r--r-- | kernel/cpu.c | 8 | ||||
| -rw-r--r-- | kernel/smpboot.c | 14 | ||||
| -rw-r--r-- | kernel/smpboot.h | 6 | 
4 files changed, 29 insertions, 0 deletions
diff --git a/kernel/Makefile b/kernel/Makefile index cb41b9547c9..6c07f30fa9b 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -43,6 +43,7 @@ obj-$(CONFIG_DEBUG_RT_MUTEXES) += rtmutex-debug.o  obj-$(CONFIG_RT_MUTEX_TESTER) += rtmutex-tester.o  obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o  obj-$(CONFIG_SMP) += smp.o +obj-$(CONFIG_SMP) += smpboot.o  ifneq ($(CONFIG_SMP),y)  obj-y += up.o  endif diff --git a/kernel/cpu.c b/kernel/cpu.c index e711aef0fb3..e58b99ada3d 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -17,6 +17,8 @@  #include <linux/gfp.h>  #include <linux/suspend.h> +#include "smpboot.h" +  #ifdef CONFIG_SMP  /* Serializes the updates to cpu_online_mask, cpu_present_mask */  static DEFINE_MUTEX(cpu_add_remove_lock); @@ -300,6 +302,11 @@ static int __cpuinit _cpu_up(unsigned int cpu, int tasks_frozen)  		return -EINVAL;  	cpu_hotplug_begin(); + +	ret = smpboot_prepare(cpu); +	if (ret) +		goto out; +  	ret = __cpu_notify(CPU_UP_PREPARE | mod, hcpu, -1, &nr_calls);  	if (ret) {  		nr_calls--; @@ -320,6 +327,7 @@ static int __cpuinit _cpu_up(unsigned int cpu, int tasks_frozen)  out_notify:  	if (ret != 0)  		__cpu_notify(CPU_UP_CANCELED | mod, hcpu, nr_calls, NULL); +out:  	cpu_hotplug_done();  	return ret; diff --git a/kernel/smpboot.c b/kernel/smpboot.c new file mode 100644 index 00000000000..6dae6a3d2d5 --- /dev/null +++ b/kernel/smpboot.c @@ -0,0 +1,14 @@ +/* + * Common SMP CPU bringup/teardown functions + */ +#include <linux/init.h> + +#include "smpboot.h" + +/** + * smpboot_prepare - generic smpboot preparation + */ +int __cpuinit smpboot_prepare(unsigned int cpu) +{ +	return 0; +} diff --git a/kernel/smpboot.h b/kernel/smpboot.h new file mode 100644 index 00000000000..d88e7716508 --- /dev/null +++ b/kernel/smpboot.h @@ -0,0 +1,6 @@ +#ifndef SMPBOOT_H +#define SMPBOOT_H + +int smpboot_prepare(unsigned int cpu); + +#endif  |