kernel - Refactor cpumask_t to extend cpus past 64, part 1/2 * 64-bit systems only. 32-bit builds use the macros but cannot be expanded past 32 cpus. * Change cpumask_t from __uint64_t to a structure. This commit implements one 64-bit sub-element (the next one will implement four for 256 cpus). * Create a CPUMASK_*() macro API for non-atomic and atomic cpumask manipulation. These macros generally take lvalues as arguments, allowing for a fairly optimal implementation. * Change all C code operating on cpumask's to use the newly created CPUMASK_*() macro API. * Compile-test 32 and 64-bit. Run-test 64-bit. * Adjust sbin/usched, usr.sbin/powerd. usched currently needs more work.
mptable - use the table's cpu_flags * Sometimes the CPUs are marked as disabled in the APIC table, and for good reason (e.g. a machine having only 24 cores, but 32 appearing in the APIC table, 8 of them disabled). * Just in case, provide an override that falls back to the old behaviour. This is the tunable hw.lapic_force_enable. It will force all lapic entries to be marked as enabled. It is however not the default. * When parsing, don't error out when a lapic id is invalid (255) but it is disabled. Reported-by: Mihai Carabas, Francois Tigeot