kernel: Move semicolon from the definition of SYSINIT() to its invocations. This affected around 70 of our (more or less) 270 SYSINIT() calls. style(9) advocates the terminating semicolon to be supplied by the invocation too, because it can make life easier for editors and other source code parsing programs.
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.
i386: Always set LINTEN for AMD CPUs if their family >= 0xF Since LINTEN will take effect when LAPIC is hardware enabled, so we defer the LINTEN turning on when we know LAPIC will be software enabled. This fixes the recent MI per-cpu interrupt information array support on AMD CPUs when IOAPIC is disabled on SMP system.
kernel/lapic: Remove the special handling for VMware w/ 1 CPU again. I've done some further testing here and it looks like I was on the wrong path when I reported it to sephe. The problem seems to be a local one. It fails occasionally (SMP kernel or not) when the ISO is on my file server, but always succeeds when the ISO is on the disk of the box running VMware.
i386/lapic: Allow vmware with single CPU to boot SMP kernel It looks like that if only one CPU is configured in vmware, then LAPIC will not work at all, so LAPIC will not be enabled if this kind of configuration is detected. Currently we detect vmware using cpu_feature2's CPUID2_VMM bit. Thank swildner@ for providing necessary information on this.