Respect the kern.smp.disabled tunable. When we're scanning the MADT in

ia64_probe_sapics(), we also create PCPU structures for any Local SAPICs
we encounter. When SMP is disabled, this leaves us with partially setup
PCPU structures, which typically results in panics when we're iterating
over CPUs. When SMP is disabled, we now prevent the creation of the
PCPU structures.
This commit is contained in:
marcel 2013-10-31 22:46:03 +00:00
parent d165336abf
commit 77d777a312

View File

@ -65,6 +65,8 @@ __FBSDID("$FreeBSD$");
extern uint64_t bdata[];
extern int smp_disabled;
MALLOC_DEFINE(M_SMP, "SMP", "SMP related allocations");
void ia64_ap_startup(void);
@ -294,6 +296,9 @@ cpu_mp_add(u_int acpi_id, u_int id, u_int eid)
void *dpcpu;
u_int cpuid, sapic_id;
if (smp_disabled)
return;
sapic_id = SAPIC_ID_SET(id, eid);
cpuid = (IA64_LID_GET_SAPIC_ID(ia64_get_lid()) == sapic_id)
? 0 : smp_cpus++;