drm: Define BITS_PER_LONG

At the same time, rename a macro of the same name in drm_atomic.h. They
both have the same meaning but the one in drm_atomic.h uses sizeof(),
which prevents from using it inside an #if preprocessor condition.
drm: Add a local implementation of linux/hash.h

* Implement hash_long() as a wrapper on top of the existing
  hash32_buf() function
drm: Add a local implementation of linux/export.h

* The Linux drm files often contain EXPORT_SYMBOL() macros

* We don't /need/ them but keeping them unchanged in the drm
  files helps reducing differences with Linux
drm: Replace drm_linux_list.h by linux/list.h ...

... from FreeBSD's OFED stack

* Keep a few missing functions and macros
drm: Add linux/compiler.h from the FreeBSD OFED stack
drm - Fix kernel compile

* Linux's LIST_HEAD interferes with ours.  Rename as it was previously
  renamed from LIST_HEAD to DRM_LIST_HEAD.  Also, other source files
  already assumed DRM_LIST_HEAD.

* Fixes kernel compile
kernel - Concurrent fork/exec (2)

* Fix bug in vm_fault() path that can cause a token live lock.
  When taking a write fault first_shared must be set to 0
  because the fault might involve calling swap_pager_unswapped(),
  which currently requires an exclusive VM object lock.
drm: Rename DRM_LIST_HEAD to LINUX_LIST_HEAD

It is supposed to be the well-known Linux LIST_HEAD() macro after all
drm: Replace BSD and legacy DRM macros by Linux mechanisms

Reducing differences with Linux
drm: Add hlist RCU macros
drm: Sync drm_hashtab files with Linux 3.8

Replacing BSD LIST_xxx macros by Linux hlist functions and data types