Add support for advanced btcoex. This commit is not really needed
but it reduces the diff against the FreeBSD version.

Tested on:
 My Wifi Link 130.
 jca@ Wifi Link 5300.
 Jan Stary Wifi Link 4965 (thanks).

Adapted from FreeBSD r220894.

ok mpi@.
replace srandomdev()+random() with the arc4random*() family
tweaks and ok millert@, ok deraadt@
Fix handling of getdents() against UDF filesystems: d_off must be the
position after the entry, and seeking to just after the '.' or '..'
entries requires special handling because they're fabricated.

ok krw@
use version two of the PCIe capability when displaying link speeds
ok mpi@
If the CGI script died due to receipt of signal, pass that back
to the HTTP frontend as the "application return status".

While here, add a pair of informative debugging statements.

ok florian@
Turn on msi for mfii(4).

There is a family of Supermicro boards where the apic pin is
incorrectly mapped on acpi, it tells us the pin for "Intel boot
interrupts". Since this is a fairly new chip, lets use MSI as no one
else is probably using it via apic, this fixes the routing issues.

Machines/Motherboards seen so far with incorrect routing:
Supermicro X9DR3-F
Supermicro X9DRH + Symbios Logic MegaRAID SAS2208
Fujitsu primergy RX300 S7 + Symbios Logic MegaRAID SAS2208

ok dlg@
Due to our current version of binutils not knowing newer ARMv7 instructions
we define DSB/ISB (Data/Instruction Synchronization Barrier) manually.
There are multiple options for those instructions, i. e. "full system
operation", which is the default of those.

The defines we used were not the defaults we assumed they were, but some
other option which might not actually exist.

In the future we could try using DSB/ISB as a Mask and add the correct
option value.  For now, just fix those values.

ok rapha@
Lock the audio mutex before invoking the audio(4) call-back, fixes
panics found by David Krause, thanks!
Missing splx on return path.

ok bluhm@
make ^w match ksh behaviour (delete previous word instead of entire line)
update currency exchange rates;
drm/radeon: update line buffer allocation for dce4.1/5

We need to allocate line buffer to each display when
setting up the watermarks.  Failure to do so can lead
to a blank screen.  This fixes blank screen problems
on dce4.1/5 asics.

from a proposed Linux patch by Alex Deucher of AMD.
drm/radeon: update line buffer allocation for dce6

We need to allocate line buffer to each display when
setting up the watermarks.  Failure to do so can lead
to a blank screen.  This fixes blank screen problems
on dce6 asics.

Fixes:
https://bugs.freedesktop.org/show_bug.cgi?id=64850

from a proposed Linux patch by Alex Deucher of AMD.

Fixes problems with multiple displays on pitcairn
reported by Alexis de BRUYN.
Properly pass daemon_flags to amd(8).

ok dcoppa@ sthen@
Update to match VOP_READDIR() changes: no more cookies, but d_off instead.

Prodding and initial diff from espie@
add static back to functions that originally had it
reduces the diff to linux
use DRM_MEMORYBARRIER() for smp_mb__*
Correct the list of supported boards.
From Juan Francisco Cantero Hurtado.

ok patrick@
fb refcount must be initialised to 1 not 0 to match the behaviour
of the linux kref functions.

Switch to using the FreeBSD refcount api for the fb refcount while here.
There is no need to call arc4random_addrandom() and feed it some
stupid seed that bind has decided on..