MFC change 254389:

There are some slight differences from the version in FreeBSD/head.
__FreeBSD_version has been bumped to 902503 for the availability
of the SI_UNMAPPED cdev flag, and the D_UNMAPPED_IO cdevsw flag
remains in place.  D_UNMAPPED_IO no longer does anything.  Drivers that
use that flag will just wind up having mapped I/O by default.  The
impact will only be on performance, not functionality.

  Change the way that unmapped I/O capability is advertised.

  The previous method was to set the D_UNMAPPED_IO flag in the cdevsw
  for the driver.  The problem with this is that in many cases (e.g.
  sa(4)) there may be some instances of the driver that can handle
  unmapped I/O and some that can't.  The isp(4) driver can handle
  unmapped I/O, but the esp(4) driver currently cannot.  The cdevsw
  is shared among all driver instances.

  So instead of setting a flag on the cdevsw, set a flag on the cdev.
  This allows drivers to indicate support for unmapped I/O on a
  per-instance basis.

  sys/conf.h:	Remove the D_UNMAPPED_IO cdevsw flag and replace it
  		with an SI_UNMAPPED cdev flag.

  kern_physio.c:	Look at the cdev SI_UNMAPPED flag to determine
  		whether or not a particular driver can handle
  		unmapped I/O.

  geom_dev.c:	Set the SI_UNMAPPED flag for all GEOM cdevs.
  		Since GEOM will create a temporary mapping when
  		needed, setting SI_UNMAPPED unconditionally will
  		work.

  		Remove the D_UNMAPPED_IO flag.

  nvme_ns.c:	Set the SI_UNMAPPED flag on cdevs created here
  		if NVME_UNMAPPED_BIO_SUPPORT is enabled.

  vfs_aio.c:	In aio_qphysio(), check the SI_UNMAPPED flag on a
  		cdev instead of the D_UNMAPPED_IO flag on the cdevsw.

  sys/param.h:	Bump __FreeBSD_version to 1000045 for the switch from
  		setting the D_UNMAPPED_IO flag in the cdevsw to setting
  		SI_UNMAPPED in the cdev.

  Reviewed by:	kib, jimharris
  Sponsored by:	Spectra Logic