MFC:	r253455

Decode PCIe ASPM capability and status.

Approved by:	re (delphij)
MFC r253393:

  Do not throw an error if the user requests to activate the image from
  an empty firmware slot, as long as the user has specified a firmware
  image to download into the empty firmware slot.

Approved by:	re (kib)
Sponsored by:	Intel
MFC r253436, r253458:

  Simplify open_dev() by returning errno values rather than just 0 or 1.

  Also remove stat() call and just rely on errno from open() call to discern
  whether dev node exists or not.

Approved by:	re (kib)
Sponsored by:	Intel
MFC r253437:

  Define constants for the lengths of the serial number, model number
  and firmware revision in the controller's identify structure.

  Also modify consumers of these fields to ensure they only use the
  specified number of bytes for their respective fields.

Approved by:	re (kib)
Sponsored by:	Intel
MFC r253438:

  Use pause() instead of DELAY() when polling for completion of admin
  commands during controller initialization.

  DELAY() does not work here during config_intrhook context - we need to
  explicitly relinquish the CPU for the admin command completion to
  get processed.

Approved by:	re (kib)
Sponsored by:	Intel
MFC r253459:

  Use _PATH_DEV (from paths.h) for the "/dev/" string, rather than
  hard-coding it.

Approved by:	re (kib)
Sponsored by:	Intel
MFC r253473:

  Do not call disk_create() until we have completed all initialization of our
  internal disk structure.

Approved by:	re (kib)
Sponsored by:	Intel
MFC r253474:

  Fix nvme(4) and nvd(4) to support non 512-byte sector sizes.

  Recent testing with QEMU that has variable sector size support for
  NVMe uncovered some of these issues.  Chatham prototype boards supported
  only 512 byte sectors.

Approved by:	re (kib)
Sponsored by:	Intel
MFC r253476:

  Add message when nvd disks are attached and detached.

  As part of this commit, add an nvme_strvis() function which borrows
  heavily from cam_strvis().  This will allow stripping of
  leading/trailing whitespace and also handle unprintable characters
  in model/serial numbers.  This function goes into a new nvme_util.c
  file which is used by both the driver and nvmecontrol.

Approved by:	re (kib)
Sponsored by:	Intel