Finish r274175: do control plane MTU tracking.

Update route MTU in case of ifnet MTU change.
Add new RTF_FIXEDMTU to track explicitly specified MTU.

Old behavior:
ifconfig em0 mtu 1500->9000 -> all routes traversing em0 do not change MTU.
User has to manually update all routes.
ifconfig em0 mtu 9000->1500 -> all routes traversing em0 do not change MTU.
However, if ip[6]_output finds route with rt_mtu > interface mtu, rt_mtu
gets updated.

New behavior:
ifconfig em0 mtu 1500->9000 -> all interface routes in all fibs gets updated
with new MTU unless RTF_FIXEDMTU flag set on them.
ifconfig em0 mtu 9000->1500 -> all routes in all fibs gets updated with new
MTU unless RTF_FIXEDMTU flag set on them AND rt_mtu is less than ifp mtu.

route add ... -mtu XXX automatically sets RTF_FIXEDMTU flag.
route change .. -mtu 0 automatically removes RTF_FIXEDMTU flag.

PR:		194238
MFC after:	1 month
CR:		D1125


git-svn-id: svn+ssh://svn.freebsd.org/base/head@274611 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Add reachover Makefiles for contrib/netbsd-tests/lib/librt

A variant of this code has been tested on amd64/i386 for some time by
EMC/Isilon on 10-STABLE/11-CURRENT. It builds on other architectures, but the
code will remain off until it's proven it works on virtual hardware or real
hardware on other architectures

Sponsored by: EMC / Isilon Storage Division


git-svn-id: svn+ssh://svn.freebsd.org/base/head@274618 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Disable TRIM on file backed ZFS vdevs and fix TRIM on init

After r265152 TRIM requests are ZIO_TYPE_FREE instead of ZIO_TYPE_IOCTL
this meant file backed vdevs to attempted to process the ZIO as a write
causing a panic.

We now disable TRIM on file backed vdevs and ASSERT the ZIO types supported
by each vdev type to ensure we explicity support the ZIO type being
processed.

Also ensure that TRIM on init is not procesed for devices which declare they
didn't support TRIM via vdev_notrim.

PR:		195061, 194976, 191573
Sponsored by:	Multiplay


git-svn-id: svn+ssh://svn.freebsd.org/base/head@274619 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Revert r273630 as the panic was fixed by r274619

The panic was caused by TRIM requests run against file based vdevs as write
requests.

PR:		191573
Sponsored by:	Multiplay


git-svn-id: svn+ssh://svn.freebsd.org/base/head@274620 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
The "intr" option is NFS-specific; fix examples in auto_master(5).

MFC after:	1 month
Sponsored by:	The FreeBSD Foundation


git-svn-id: svn+ssh://svn.freebsd.org/base/head@274621 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Mechanically replace #if defined(__FreeBSD__) and #if defined(__NetBSD__) with
their #ifdef equivalents for everything changed in contrib/netbsd-tests. There
are some items from the vendor tree that use #if defined(__FreeBSD__) or
#if defined(__NetBSD__) which are being left alone

Requested by: bde, rpaulo
Sponsored by: EMC / Isilon Storage Division


git-svn-id: svn+ssh://svn.freebsd.org/base/head@274626 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Revert r269093 which introduced physical zio alignment transform

Size of physical ZIOs must never be implicitly adjusted, it's
a responsibility of a caller to make sure that such a ZIO has proper offset
and size.

Discussed with:	delphij, gibbs
MFC after:	2 weeks


git-svn-id: svn+ssh://svn.freebsd.org/base/head@274627 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
l2arc: restore correct rounding up of asize of compressed data

This rounding up was lost in a mismerge of illumos code.
See r268075 MFV r267565.
After that commit zio_compress_data() no longer performs any compressed
size adjustment, so it needs to be done externally.  On FreeBSD we round
up the size using vdev_ashift rather than SPA_MINBLOCKSIZE so that 4KB
devices are properly supported.

Additionally, zero out the buffer tail only if compression succeeds.
The compression is considered successful if the size of compressed
data after rounding up to account for the vdev ashift is less than the
original data size.  It does not make sense to have the data compressed
if all the savings are lost to rounding up.
With the new zio_compress_data() it could have been possible that the
rounded compressed size would be greater than the original size and thus
we could zero beyond the allocated buffer if the zeroing code was kept
at the original place.

Discussed with:	delphij, gibbs
MFC after:	2 weeks
X-MFC with:	r274627


git-svn-id: svn+ssh://svn.freebsd.org/base/head@274628 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Re-introduce padding fields removed with r264321 to keep
struct tcptw ABI unchanged.

Suggested by:	jhb
Approved by:	jhb (mentor)
MFC after:	1 day
X-MFC-With:	r264321


git-svn-id: svn+ssh://svn.freebsd.org/base/head@274629 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Add logic for detecting non-persistent filesystems being utilized by
workdir which would break the upgrade process upon reboot.

Currently we check for tmpfs and mdmfs.

PR:		195006
Differential Revision:	https://reviews.freebsd.org/D1163
Approved by:	cperciva


git-svn-id: svn+ssh://svn.freebsd.org/base/head@274630 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Fix geom's "usage" generation to not fabricate usage/help output for any
imaginary class we give it.

Differential Revision:	https://reviews.freebsd.org/D1150
Submitted by:	homerj
Approved by:	pjd


git-svn-id: svn+ssh://svn.freebsd.org/base/head@274631 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Clean up some language

Reviewed by:	will


git-svn-id: svn+ssh://svn.freebsd.org/base/head@274632 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Remove stray empty comment. The code is adequately explained in the
block comment above, so there's nothing to add here.


git-svn-id: svn+ssh://svn.freebsd.org/base/head@274633 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Use the correct device as the power_for_sleep() method
always pass request up to parent bridge.

Reviewed by:	jhb
MFC after:	1 week
xMFC:		r274386,r274397


git-svn-id: svn+ssh://svn.freebsd.org/base/head@274635 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Sync with userland variant.

MFC after:	2 weeks


git-svn-id: svn+ssh://svn.freebsd.org/base/head@274636 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
DTrace imposes a 128-byte limit on the length of the function component of
a probe name. When dtrace -G builds up a DOF section for the specified
provider(s), the probe function names are truncated to fit in this limit.
The DOF is later used to build the symbol table for the generated object
file, so the table can end up with truncated references, causing link
errors.

Instead of potentially truncating symbol table entries, write the full
function name to the DOF string table and allow the kernel to enforce the
128-byte function name limit when a process attempts to load its DOF.

PR:		194757
Differential Revision:	https://reviews.freebsd.org/D1175
Reviewed by:	rpaulo
MFC after:	2 weeks


git-svn-id: svn+ssh://svn.freebsd.org/base/head@274637 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Add basic interrupt management code to gpiobus and ofw_gpiobus.

This is the general support to allow the use of GPIO pins as interrupt
sources for direct gpiobus children.

The use of GPIO pins as generic interrupt sources (for an ethernet driver
for example) will only be possible when arm/intrng is complete.  Then, most
of this code will need to be rewritten, but it works for now, is better
than what we have and will allow further developments.

Tested on:	ar71xx (RSPRO), am335x (BBB), bcm2835 (Raspberry pi)
Differential Revision:	https://reviews.freebsd.org/D999
Reviewed by:	rpaulo


git-svn-id: svn+ssh://svn.freebsd.org/base/head@274638 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Modernize comments about BIOSes being lame since in this detail they
aren't lame, the rules changed along the way. Catch up to 1999 or so
with the new rules.


git-svn-id: svn+ssh://svn.freebsd.org/base/head@274639 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Use automated MK_INET*_SUPPORT code here as well.


git-svn-id: svn+ssh://svn.freebsd.org/base/head@274640 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Allow i2c bus speed to be configured via hints, FDT data, and sysctl.

The current support for controlling i2c bus speed is an inconsistant mess.
There are 4 symbolic speed values defined, UNKNOWN, SLOW, FAST, FASTEST.
It seems to be universally assumed that SLOW means the standard 100KHz
rate from the original spec.  Nothing ever calls iicbus_reset() with a
speed of FAST, although some drivers would treat it as the 400KHz standard
speed.  Mostly iicbus_reset() is called with the speed set to UNKNOWN or
FASTEST, and there's really no telling what any individual driver will do
with those.

The speed of an i2c bus is limited by the speed of the slowest device on
the bus.  This means that generally the bus speed needs to be configured
based on the board/system and the components within it.  Historically for
i2c we've configured with device hints.  Newer systems use FDT data and it
documents a clock-frequency property for i2c busses.  Hobbyists and
developers are likely to want on the fly changes.  These changes provide
all 3 methods, but do not require any existing drivers to change to use
the new facilities.

This adds an iicbus method, iicbus_get_frequency(dev, speed) that gets the
frequency for the requested symbolic speed.  If the symbolic speed is SLOW
or if there is no speed configured for the bus, the returned value is
100KHz, always.  Otherwise, if bus speed is configured by hints, fdt,
tunable, or sysctl, that speed is returned.  It also adds a helper
function, iicbus_init_frequency() that any bus driver subclassed from
iicbus can initialize the frequency from some other source of info.

Initial driver implementations are provided for Freescale and TI.

Differential Revision:        https://reviews.freebsd.org/D1174
PR:		195009


git-svn-id: svn+ssh://svn.freebsd.org/base/head@274641 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f