MFC changes to atomic.h usage in DRM code

This commit follows the merge of atomic.h changes in r262807 and r262823.
The original work is from Jung-uk Kim (jkim@).

The following revisions were merged in this single commit:

r255009:
  Fix a compiler warning.  With this fix, a negative time can be converted to
  a struct timeval and back to the original nanoseconds correctly.

r255012:
  Fix a compiler warning and add couple of VM map types.

r255013:
  Correct atomic operations in i915.

r255037:
  Fix atomic operations on context_flag without altering semantics.

r255039:
  - Remove test_and_set_bit() macro.  It is unused since r255037.
  - Relax atomic_read() and atomic_set() macros.  Linux does not require any
  memory barrier.  Also, these macros may be even reordered or optimized away
  according to the API documentation:

  https://www.kernel.org/doc/Documentation/atomic_ops.txt

r255041:
  Clarify confusions between atomic_t and bitmap.  Fix bitmap operations
  accordingly.

r255042:
  Fix the incomplete conversion from atomic_t to long for test_bit().

r255044:
  Partially revert r254880.  The bitmap operations actually use long type now.

r255045:
  'u_long' is consistently spelled 'unsigned long' in this file.  Fix it.
MFC r262572:

Get rid of the 'chan' from softc structure and use the latter
directly as sleep channel.

PR:		kern/174684
Submitted by:	jmg
MFC r262577: MFV r262570:

4626 libzfs memleak in zpool_in_use()
[automated] Merge in upstream-github/stable/9