drm: Fix ww mutex crtc locking
* The original code had many problems:
- the ctx wasn't available to drm_modeset_unlock().
- 'struct list_head' was used for both the list head AND the list entry
It's like it was coded to create maximum confusion on top of maximum pain
* drm_modeset_acquire_ctx structure needs a second list which we add
kmalloc()'d entries to to track the extra locks in the EALREADY case
* Replace the reference from the modeset_lock structure with a pointer
to an intermediate (kmalloc'd) structure that references both and turn
the list entry in the lock into a list head
Submitted-by: Matthew Dillon <dillon@apollo.backplane.com>