drm/i915: Fix i915_gem_fault()
The retry loop in i915_gem_fault() was very seriously broken for EINTR
or ERETRYSYS (which is also basically EINTR)
It loops with gem mostly left locked, doesn't sleep, so it live locks a
cpu if it ever gets hit
The best solution is to disallow EINTR / ERESTARTSYS entirely.
The implementation is crazy... normal drm locks are allowed to PCATCH
and fail with EINTR. That's just insane
Stability is better with some hacks added. I'm unwinding all the locks,
sleeping for one tick, and then retrying.
Horrible hack but so far it works