Index: sys/arm/arm/platform.c =================================================================== --- sys/arm/arm/platform.c +++ sys/arm/arm/platform.c @@ -58,6 +58,9 @@ #include #include +#include +#include + #include "platform_if.h" static platform_def_t *plat_def_impl; @@ -219,6 +222,27 @@ #endif #if defined(SMP) && defined(PLATFORM_SMP) +static boolean_t +platform_maxid(u_int id, phandle_t node, u_int addr_cells, pcell_t *reg) +{ + + if (mp_maxid < id) + mp_maxid = id; + + return (true); +} + +void +platform_default_mp_setmaxid(platform_t plat) +{ + + mp_maxid = PCPU_GET(cpuid); + mp_ncpus = ofw_cpu_early_foreach(platform_maxid, true); + if (mp_ncpus < 1) + mp_ncpus = 1; + mp_ncpus = MIN(mp_ncpus, MAXCPU); +} + void platform_mp_setmaxid(void) { Index: sys/arm/arm/platform_if.m =================================================================== --- sys/arm/arm/platform_if.m +++ sys/arm/arm/platform_if.m @@ -50,6 +50,10 @@ INTERFACE platform; +HEADER { + void platform_default_mp_setmaxid(platform_t); +}; + # # Default implementations # @@ -63,12 +67,6 @@ { return (devmap_lastaddr()); } - - static void platform_default_mp_setmaxid(platform_t plat) - { - mp_ncpus = 1; - mp_maxid = 0; - } }; /** Index: sys/arm/qemu/virt_machdep.c =================================================================== --- sys/arm/qemu/virt_machdep.c +++ sys/arm/qemu/virt_machdep.c @@ -60,7 +60,6 @@ #ifdef SMP PLATFORMMETHOD(platform_mp_start_ap, virt_mp_start_ap), - PLATFORMMETHOD(platform_mp_setmaxid, virt_mp_setmaxid), #endif PLATFORMMETHOD_END, Index: sys/arm/qemu/virt_mp.c =================================================================== --- sys/arm/qemu/virt_mp.c +++ sys/arm/qemu/virt_mp.c @@ -50,27 +50,6 @@ static int running_cpus; static boolean_t -virt_maxid(u_int id, phandle_t node, u_int addr_cells, pcell_t *reg) -{ - - if (mp_maxid < id) - mp_maxid = id; - - return (true); -} - -void -virt_mp_setmaxid(platform_t plat) -{ - - mp_maxid = PCPU_GET(cpuid); - mp_ncpus = ofw_cpu_early_foreach(virt_maxid, true); - if (mp_ncpus < 1) - mp_ncpus = 1; - mp_ncpus = MIN(mp_ncpus, MAXCPU); -} - -static boolean_t virt_start_ap(u_int id, phandle_t node, u_int addr_cells, pcell_t *reg) { int err;