MFC: 252206,258156
port dev/qlxge from head
MFC r253406:
  Avoid magic constant.
  No functional change.
MFC r253408:
  Implement workaround for BCM5719/BCM5720 TX hang.
  The read DMA request logic operation is based on having sufficient
  available space in the transmit data buffer (TXMBUF) before a read
  DMA can be requested.  There are four read DMA channels that use
  the TXMBUF, and the logic checks if the available free space in the
  TXMBUF is large enough for all the data in the four Send Buffers
  for which buffer descriptors have been fetched.  The Enable_Request
  signal is asserted only if the free TXMBUF space is larger than the
  sum of the four DMA length registers.  The power-up default value
  of BGE_RDMA_LSO_CRPTEN_CTRL register bit 25 (bit 21 on BCM5720) is
  zero, which selects the DMA length registers to connect to the
  input of the adder block.  The DMA length registers are
  asynchronously reset following BCM5719/BCM5720 power-up, and due to
  the lack of synchronous deassertion of the length registers reset
  signal these resisters may contain uninitialized values following
  the reset deassertion.
  In the case of the failure the uninitialized DMA length register
  values added up to more than the TXMBUF size, which prevented the
  assertion of the Enable_Request signal and any subsequent read DMA
  to start.  This lockup condition is the root cause of failing to
  generate any transmit traffic.

  To workaround the issue, select alternate output of multiplexers
  and transmit the first four Ethernet frames. This overwrites the
  DMA length registers with valid values.
MFC r253480:
  Setup the PCIE Fast Training Sequence (FTS) value to prevent
  transmit hangs for 57766 and non Ax versions of 57765.
  While here, correct definition of BGE_CHIPREV_57765_AX.
MFC r253481:
  Recognize BCM5725C PHY.
MFC r253483:
  Add support for upcoming BCM5725 (ASIC 5762) controller.  This is a
  new 1Gb server controller chip that will be going into production
  soon.
  BCM5725 combines MAC with triple-speed PHY, a Network Controller
  Sideband Interface (NC-SI) and on-chip memory buffer in a single
  device.  BCM5725 has an Application Processing Engine (APE) that is
  capable of on-chip management and offloading features.  BCM5725
  supports high-precision clock, time stamp registers for
  receive/transmit packets and programmable trigger inputs and
  watchdog timeouts. These new features are not yet supported by
  bge(4).
  Many thanks to Broadcom for continuing to support FreeBSD!
MFC r253540:
  5725 family of devices corrupts TSO packets when TSO DMA buffers
  cross into regions which are within MSS bytes of a 4GB boundary.
  If we encounter the condition, drop the packet.
MFC r258830:
  Add support for BCM57764, BCM57767, BCM57782, BCM57786 and BCM57787.
  PR:	184304
MFC r244280 (by pjd):
sbuf_trim() cannot be used on sbuf with drain function set.
This fixes panic when listing sysctls on INVARIANTS-enabled kernel while
having wbwd loaded.

This panic was not fatal, at worst one additional space was printed.

Also sbuf_trim() makes some sense even if drain function is set. The drain
function is called only when buffer is to be expanded. So we could still trim
existing buffer before drain is called. In this case it worked just fine - the
trailing space was correctly trimmed.
MFC r256082 (by decke)

Rename internal function test() to avoid name clashes with common
macros. This fixes ports like mysql 5.6 which has an internal macro
called test.

Discussed with:	theraven
MFC r253802:

Pull in r186696 from upstream clang trunk:

  This patch implements __get_cpuid_max() as an inline and __cpuid()
  and __cpuid_count() as macros to be compatible with GCC's cpuid.h.
  It also adds bit_<foo> constants for the various feature bits as
  described in version 039 (May 2011) of Intel's SDM Volume 2 in the
  description of the CPUID instruction.  The list of bit_<foo>
  constants is a bit exhaustive (GCC doesn't do near this many).  More
  bits could be added from a newer version of SDM if desired.

  Patch by John Baldwin!

This should fix several ports which depend on this functionality being
available.
MFC r255076:

Pull in r189672 from upstream llvm trunk:

  InstCombine: Check for zero shift amounts before subtracting one
  causing integer overflow.

  PR17026. Also avoid undefined shifts and shift amounts larger than 64
  bits (those are always undef because we can't represent integer types
  that large).

This should fix assertion failures when building the emulators/xmame
port.

Reported by:	bapt
MFC r257109:

Add clang-CC and CC to list of hints allowing clang to identify its operating
mode as c++ instead of defaulting to c for the binary names CC and clang-CC.

This fixes builds that use cmake, which automatically sets CXX to
/usr/bin/CC by default.

PR:		bin/182442
Reviewed by:	dwhite, wca
Bump the maximum VM space from 3 * memory size to a fixed
256MB. That's all we have room for since we map the hardware registers
starting at 0xd0000000. This allows my 64MB AT91SAM9G20 to boot again
after the unmmaped I/O changes were MFC'd at r251897. Other
subplatforms may need similar treatment.
4096 is 4MB, and macb doesn't even come close to working, so don't say
it is an altenative. It hasn't worked in quite some time. The die
hards can still try to use macb in the tree if they want...
MFC:

r246881 | ian | 2013-02-16 13:43:16 -0700 (Sat, 16 Feb 2013) | 4 lines

In _bus_dmamap_addseg(), the return value must be zero for error, or the size
actually added to the segment (possibly smaller than the requested size if
boundary crossings had to be avoided).

This fixes NFS root on Atmel platforms, and likely others.
MFC r259053:

Pull in r196590 from upstream clang trunk (by rdivacky):

  Move the body of GCCInstallationDetector ctor into an init() function
  and call it from its only user. The linux toolchain. This saves quite
  a lot of directory searching on other platforms.

See http://docs.freebsd.org/cgi/mid.cgi?51E6FAF5.3080802 for the
original discussion.  With this fix, the search for gcc installations is
completely eliminated on FreeBSD.

Reported by:	Kurt Lidl <lidl@pix.net>
MFC r259083:

For WARNS <= 3, change the clang warning flag -Wno-conversion to
-Wno-enum-conversion.  In earlier clang versions (before 3.2), the
latter did not exist, and suppressing enum conversion warnings was
really the goal of this warning suppression flag.

This should enable the same kind of warning again as was fixed by
r259072 ("incompatible integer to pointer conversion passing 'Elf_Addr'
(aka 'unsigned int') to parameter of type 'void *'"), and which was only
emitted by gcc.

Noticed by:	kib
Hand merge from current r235717:
Implement pmap_mincore for arm.  Now programs using it don't cause a
flood of console messages.

Reviewed by:	alc@
MFC: r257598
During code inspection, I spotted that there was a code path where
CLNT_CONTROL() would be called on "client" after it was
released via CLNT_RELEASE(). It was unlikely that this
code path gets executed and I have not heard of any problem
report caused by this bug. This patch fixes the code so that
this cannot happen.