git: drm/i915: Fix i915_gem_fault()
Francois Tigeot
ftigeot at crater.dragonflybsd.org
Sun Aug 2 00:16:56 PDT 2015
commit 25b959703ab6950f477c7a44eeaffbdad76f4f37
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Sat Jul 25 08:23:05 2015 +0200
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
Summary of changes:
sys/dev/drm/i915/i915_gem.c | 162 +++++++++++++++++++++++++++++++++-----------
1 file changed, 124 insertions(+), 38 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/25b959703ab6950f477c7a44eeaffbdad76f4f37
--
DragonFly BSD source repository
More information about the Commits
mailing list