Fully support constructors for the purpose of code coverage analysis.
This involves:
1.  Have the loader pass the start and size of the .ctors section to the
    kernel in 2 new metadata elements.
2.  Have the linker backends look for and record the start and size of
    the .ctors section in dynamically loaded modules.
3.  Have the linker backends call the constructors as part of the final
    work of initializing preloaded or dynamically loaded modules.

Note that LLVM appends the priority of the constructors to the name of
the .ctors section. Not so when compiling with GCC. The code currently
works for GCC and not for LLVM.

Submitted by:	Dmitry Mikulin <dmitrym@juniper.net>
Obtained from:	Juniper Networks, Inc.
unionfs: hold mount interlock while manipulating mnt_flag

This is for consistency with other filesystems.
Provide vfs suspension support only for filesystems which need it, take
two.

nullfs and unionfs need to request suspension if underlying filesystem(s)
use it. Utilize mnt_kern_flag for this purpose.

This is a fixup for 273271.

No strong objections from: kib
Pointy hat to: mjg
MFC after:	2 weeks
Fix the mtx_sleep() error checking, catch all errors and not only
EWOULDBLOCK.

Do not print any message at errors.  The errors are properly sent to upper
layers which should be able to deal with it, including printing the errors
when they need to.

The error message was quite annoying while scanning the i2c bus.

MFC after:	1 week
Merge from projects/bhyve_svm all the changes outside vmm.ko or bhyve utilities:

Add support for AMD's nested page tables in pmap.c:
- Provide the correct bit mask for various bit fields in a PTE (e.g. valid bit)
  for a pmap of type PT_RVI.
- Add a function 'pmap_type_guest(pmap)' that returns TRUE if the pmap is of
  type PT_EPT or PT_RVI.

Add CPU_SET_ATOMIC_ACQ(num, cpuset):
This is used when activating a vcpu in the nested pmap. Using the 'acquire'
variant guarantees that the load of the 'pm_eptgen' will happen only after
the vcpu is activated in 'pm_active'.

Add defines for various AMD-specific MSRs.

Submitted by:	Anish Gupta (akgupt3@gmail.com)
Fix a typo from r189544, which replaced unp_global_rwlock with unp_list_lock
and unp_link_rwlock.

MFC after:	3 days
filedesc: plug 2 write-only variables

Reported by: Coverity
CID: 1245745, 1245746
Merge remote-tracking branch 'freebsd/master' into hardened/current/master
Merge remote-tracking branch 'origin/hardened/current/master' into hardened/current/hardening
Merge remote-tracking branch 'origin/hardened/current/master' into hardened/current/ptrace
Merge remote-tracking branch 'origin/hardened/current/master' into hardened/current/log
Merge remote-tracking branch 'origin/hardened/current/master' into hardened/current/userlandenhanced
Merge remote-tracking branch 'origin/hardened/current/master' into hardened/current/chacha
Merge remote-tracking branch 'origin/hardened/current/master' into hardened/current/pie
Merge remote-tracking branch 'origin/hardened/current/master' into hardened/current/unstable
Merge remote-tracking branch 'origin/hardened/current/hardening' into hardened/current/unstable
Merge remote-tracking branch 'origin/hardened/current/ptrace' into hardened/current/unstable
Merge remote-tracking branch 'origin/hardened/current/log' into hardened/current/unstable
Merge remote-tracking branch 'origin/hardened/current/userlandenhanced' into hardened/current/unstable
Merge remote-tracking branch 'origin/hardened/current/pie' into hardened/current/unstable