struct smp_ops smp_ops = {
        .smp_prepare_boot_cpu = native_smp_prepare_boot_cpu,
        .smp_prepare_cpus = native_smp_prepare_cpus,
+       .smp_cpus_done = native_smp_cpus_done,
+
        .smp_send_reschedule = native_smp_send_reschedule,
        .smp_call_function_mask = native_smp_call_function_mask,
        .cpu_up = native_cpu_up,
 
 /*
  * Finish the SMP boot.
  */
-void __init smp_cpus_done(unsigned int max_cpus)
+void __init native_smp_cpus_done(unsigned int max_cpus)
 {
        smp_cleanup_boot();
        setup_ioapic_dest();
 
        smp_ops.smp_prepare_cpus(max_cpus);
 }
 
+static inline void smp_cpus_done(unsigned int max_cpus)
+{
+       smp_ops.smp_cpus_done(max_cpus);
+}
+
 static inline int __cpu_up(unsigned int cpu)
 {
        return smp_ops.cpu_up(cpu);
 
 void native_smp_prepare_boot_cpu(void);
 void native_smp_prepare_cpus(unsigned int max_cpus);
+void native_smp_cpus_done(unsigned int max_cpus);
 int native_cpu_up(unsigned int cpunum);
 #endif
 
 
 extern void set_cpu_sibling_map(int cpu);
 
 #ifdef CONFIG_SMP
-static inline void smp_cpus_done(unsigned int max_cpus)
-{
-       smp_ops.smp_cpus_done(max_cpus);
-}
-
 static inline void smp_send_stop(void)
 {
        smp_ops.smp_send_stop();
 }
 
-void native_smp_cpus_done(unsigned int max_cpus);
-
 #ifndef CONFIG_PARAVIRT
 #define startup_ipi_hook(phys_apicid, start_eip, start_esp) do { } while (0)
 #endif