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