* 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.

Before the ipfilter removal, netif required ipfilter, which required
ipmon, which required cleanvar. In other words, cleanvar was run before
netif.

With the ipfilter requirement removed from netif, cleanvar was now
ordered at some place after netif, which caused the PID file and
control socket of wpa_supplicant(8) (which is started by netif if an
ifconfig_xxx="WPA" line is found in /etc/rc.conf) to be removed from
/var/run by cleanvar after they were created.

Broadcom's new generation of chips will support RSS (multiple RX rings),
multiple TX rings (BCM5718 family only) and multi-vector MSI-X. The old
chips supported by bge(4) is becoming burden, so new driver, bnx(4), is
created to support new chip families features.

1. Avoid a cd back into ${.CURDIR} to run mkbuiltins when we know make
will first cd into ${.OBJDIR}. Keep the cwd to what make sets it to.
2. Don't tell mkbuiltins where to write to (= ${.OBJDIR}), but where to
get sources from (= ${.CURDIR}). This to compensate for point 1.

This fixes a problem with bmake's mk files that optimize ${.OBJDIR} to
expand to "." after changing cwd, not taking into account that the
target is pretty much undoing that and not getting the full path to the
object tree anymore.

On AMD64, GCC and the ABI expects the x87 unit to be running in 80/64
mode rather than 64/53 mode seen on i386. This corrects errors seen
in long double tests involving runtime calculations. Previously, the
results of these runtime calculations would get rounded due to use
of 53-bit mantissas.

* Fix a serious MP race in the sysv semaphore code due to a lack of
protection of the semu* global structures.

* The race occurs during semaphore allocation and deallocation vs ANY
exiting process (even if it does not use semaphores), potentially
leading to a live-lock in the semu_list scan code.

The live-lock will prevent the cpu it occurs on from being able to
switch to another kernel or user thread. In the sample case it
stopped pagedaemon from running, creating a backlog in the I/O
subsystem which locked the computer up.