Changeset View
Changeset View
Standalone View
Standalone View
sys/riscv/riscv/mp_machdep.c
Show First 20 Lines • Show All 526 Lines • ▼ Show 20 Lines | if (OF_getproplen(node, "mmu-type") < 0) | ||||
return (0); | return (0); | ||||
return (1); | return (1); | ||||
} | } | ||||
void | void | ||||
cpu_mp_setmaxid(void) | cpu_mp_setmaxid(void) | ||||
{ | { | ||||
#ifdef FDT | |||||
int cores; | int cores; | ||||
#ifdef FDT | |||||
cores = ofw_cpu_early_foreach(cpu_check_mmu, true); | cores = ofw_cpu_early_foreach(cpu_check_mmu, true); | ||||
if (cores > 0) { | if (cores > 0) { | ||||
cores = MIN(cores, MAXCPU); | cores = MIN(cores, MAXCPU); | ||||
if (bootverbose) | if (bootverbose) | ||||
printf("Found %d CPUs in the device tree\n", cores); | printf("Found %d CPUs in the device tree\n", cores); | ||||
mp_ncpus = cores; | mp_ncpus = cores; | ||||
mp_maxid = cores - 1; | mp_maxid = cores - 1; | ||||
cpu_enum_method = CPUS_FDT; | cpu_enum_method = CPUS_FDT; | ||||
return; | } else | ||||
} | |||||
#endif | #endif | ||||
{ | |||||
mhorne: No nicer way to do this I suppose :| | |||||
if (bootverbose) | if (bootverbose) | ||||
printf("No CPU data, limiting to 1 core\n"); | printf("No CPU data, limiting to 1 core\n"); | ||||
mp_ncpus = 1; | mp_ncpus = 1; | ||||
mp_maxid = 0; | mp_maxid = 0; | ||||
} | |||||
if (TUNABLE_INT_FETCH("hw.ncpu", &cores)) { | |||||
if (cores > 0 && cores < mp_ncpus) { | |||||
mp_ncpus = cores; | |||||
mp_maxid = cores - 1; | |||||
} | |||||
} | |||||
} | } |
No nicer way to do this I suppose :|