--- /dev/null
+--- a/arch/arm/mach-cns3xxx/Makefile
++++ b/arch/arm/mach-cns3xxx/Makefile
+@@ -1,3 +1,5 @@
+ obj-$(CONFIG_ARCH_CNS3XXX) += core.o pm.o devices.o
+ obj-$(CONFIG_PCI) += pcie.o
+ obj-$(CONFIG_MACH_CNS3420VB) += cns3420vb.o
++obj-$(CONFIG_SMP) += platsmp.o headsmp.o
++obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -367,6 +367,7 @@ config ARCH_CNS3XXX
+ select PCI_DOMAINS if PCI
+ select CLKDEV_LOOKUP
+ select CPU_CACHE_FORCE_MULTI
++ select HAVE_SMP
+ help
+ Support for Cavium Networks CNS3XXX platform.
+
+--- a/arch/arm/mach-cns3xxx/core.h
++++ b/arch/arm/mach-cns3xxx/core.h
+@@ -11,6 +11,7 @@
+ #ifndef __CNS3XXX_CORE_H
+ #define __CNS3XXX_CORE_H
+
++extern struct smp_operations cns3xxx_smp_ops;
+ extern struct sys_timer cns3xxx_timer;
+
+ #ifdef CONFIG_CACHE_L2X0
+--- a/arch/arm/mach-cns3xxx/laguna.c
++++ b/arch/arm/mach-cns3xxx/laguna.c
+@@ -946,6 +946,7 @@ static int __init laguna_model_setup(voi
+ late_initcall(laguna_model_setup);
+
+ MACHINE_START(GW2388, "Gateworks Corporation Laguna Platform")
++ .smp = smp_ops(cns3xxx_smp_ops),
+ .atag_offset = 0x100,
+ .map_io = laguna_map_io,
+ .init_irq = cns3xxx_init_irq,