usb4bsd: set D_MPSAFE for usb devices
usb4bsd: set D_MPSAFE for usb devices (static)
kernel: Make sysvipc syscalls non-optional.

Before this commit, we had three related kernel options, SYSVMSG,
SYSVSEM and SYSVSHM, to enable the syscalls. They were in all our
configs, but in theory the user could disable the functionality.
Having to deal with scenarios where they are not available is
unnecessarily complicated and there seems to be no real reason to
want to disable them.

For convenience, leave the three options as no-ops for now, so
adjusting the kernel config is not necessarily needed. We'll
change them to being unknown at some later point.

This commit also removes some parts which assumed that we had
sysvmsg.ko, sysvsem.ko and sysvshm.ko modules, like FreeBSD, but
this assumption was never true on DragonFly.
kernel: Remove unused and unbuilt code from the userland sysvipc GSoC.

In-discussion-with: profmakx
kernel: Completely remove the obsolete DEVICE_POLLING and SMP options.

DEVICE_POLLING is IFPOLL_ENABLE and SMP is the default for some time
now.
"Normalize" some types, s/long unsigned/unsigned long/ etc.

Just like the rest of our tree is doing it.
hammer2 - major simplification of algorithms part 1/many

* Huge simplification of in-memory data structures and algorithms.
  Remove delete-duplicate, ownerq (shadow copies), dbq, dbtree, and most of
  the xid lo/hi sequencing.  Remove all the complexities related to
  managing the above elements.  Net removal of ~1500 lines of code or so.

* Blockmap deletions are now handled by the frontend, so the backend doesn't
  need to deal with shadowed deletions.  This is still fairly optimal since
  insertions are still handled by the backend during flushes.  So for quick
  create/delete operations the blockmap is never even initialized which means
  that deletions don't have to remove anything.

* Cleanup buffer cache on file removal / last-close, but allow file delete
  to simply wipe out the inode.  Don't bother iterating its indirect blocks
  or data blocks on-media but use the flush code to get rid of any chains
  still cached.

* Buffer invalidation on permanent chain deletions for modified chains.

* Major items still TODO: flush interlocks and meta-data updates.
share/examples - Fix cdev warnings
hammer - Fix max volumes check on mount time
hammer2 - major simplification 1/many (stabilization)

* Fix a dirty chain leak due to detached inodes and the delayed vnode
  deactivation that DragonFly does.  A cache_unlink() call was missing
  to properly cycle the vnode in the nrename path and a
  hammer2_cluster_delete() needed the DELETE_PERMANENT flag to handle the
  case where the vnode was already detached.

* Fix an inode reference count leak, callers of hammer2_inode_common_parent()
  were not properly dropping the returned inode.

* Fix a deadlock due to front-end vs write-thread interactions.  nvtruncbuf()
  calls must not be made with an inode lock held.

* Cleanup some debugging, add some debugging.
hammer2 - major simplification 1/many (stabilization)

* Remove the extra drop from hammer2_hardlink_consolidate().  It was dropping
  cdip in one path but not another.  The previous fix for the
  hammer2_inode_common_parent() use-cast flipped the problem around, but
  was otherwise correct (and more sane).
kernel/usb4bsd: Sync urtwn(4) with current FreeBSD.

This adds support for several (RTL8188EU based) adapters, among other
changes.

It should also fix the hangs we were seeing (using usb_pause_ls() now).

Thanks to Max Herrgaard <herrgaard@gmail.com> for testing it on a
RTL8188EU based adapter and to Christian Koch <cfkoch@sdf.lonestar.org>
for testing it with a RTL8188CU based one (Adafruit USB WiFi).
hammer2 - major simplification 1/many (stabilization B)

* Change hammer2_cluster_bytes() to hammer2_cluster_need_resize()
  to check for cluster size mismatches against desired.  Used for
  data block resizing.

* Fix panic - allow data blocks to have a chain->dio.  This will be
  the case when compression or other data filters are used.

* Fix null pointer panic - chain->dio can be NULL for data blocks.

* Fix null pointer panic - hlinkp is allowed to be NULL in
  hammer2_unlink_file().

* Do not assert if a hardlink target cannot be found.  There is a known
  bug case when a directory is moved to another part of the topology
  where underlying hardlinks can get lost.  kprintf() instead.

* Fix inode deadlock, add missing inode unlock in hammer2_hardlink_find().

* Remove OBJTYPE_HARDLINK tests from hammer2_inode_lock_*().  It is no
  longer possible for an inode's chain to point to a hardlink pointer,
  it will always point to the hardlink target.

* Add some lock count tracking to the VOPs to catch left over locks on
  return.  (Note that read-ahead operations mess up the lock count because
  the shared lock is inherited by the async op, so lock count tracking
  is not done in code which handles logical file data).

* Hammer2 survives cpdup, blogbench fsx, fsstress
drm/i915 - Fix double lock deadlock

* Fix an incorrect use wq_lock which was accidently double-locking instead
  of unlocking around a sleep.

* Fixes X lockups overnight in the presence of xscreensaver.  'gears'
  seems to trigger it.
Remove duplicates in usbdevs, urtwn(4) and devd(8)'s usb.conf.
kernel - Rule out vkernels from config hook delays.
remove DRIVER_LOCKLESS_IRQ add DRIVER_RENDER
Simultaneous DRIVER_LOCKLESS_IRQ and DRIVER_RENDER with 0x8000?
Reinstate no DRIVER_LOCKLESS_IRQ, add DRIVER_RENDER
Allow both DRIVER_LOCKLESS_IRQ and DRIVER_RENDER different values