git: drm - Fix a second X lockup w/radeon ttm

Matthew Dillon dillon at crater.dragonflybsd.org
Thu Jan 15 13:02:38 PST 2015


commit 5fd16c59eed4b0560ae53e41715827f3a1309036
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Thu Jan 15 12:59:51 2015 -0800

    drm - Fix a second X lockup w/radeon ttm
    
    * Code which releases bo->reserved and wakes up waiters was
      not interlocked against wait_event_common() used to wait
      for the release.  This can result in a race where the
      release occurs inbetween the wait's test and its sleep,
      preventing the wait from ever waking up.
    
    * This is different from the recent dev_pager_mtx deadlock which
      was recently fixed, but in the same code path.
    
    * Roll the release of bo->reserved into a static function
      and throw the bo->event_queue.lock around the actual
      release to fix the race.

Summary of changes:
 sys/dev/drm/ttm/ttm_bo.c | 33 ++++++++++++++++++++-------------
 1 file changed, 20 insertions(+), 13 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/5fd16c59eed4b0560ae53e41715827f3a1309036


-- 
DragonFly BSD source repository



More information about the Commits mailing list