drm/i915: fix gen4 gpu reset
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 2 May 2012 19:33:52 +0000 (21:33 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Sat, 5 May 2012 17:46:20 +0000 (19:46 +0200)
While trying to fix up gen4 gpu reset in

commit f49f0586191fe16140410db0a46d43bdc690d6af
Author: Kenneth Graunke <kenneth@whitecape.org>
Date:   Sat Sep 11 01:19:14 2010 -0700

    drm/i915: Actually set the reset bit in i965_reset

a little confusion about when wait_for times out has been introduced -
wait for loops _until_ the condition is true.

This fixes gpu reset on my gm45, testing with my hangman code shows
that it's now fairly reliable - it only died after well over 100 reset
cycles.

Cc: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_drv.c

index 133f101..77b7a50 100644 (file)
@@ -707,7 +707,7 @@ static int i965_reset_complete(struct drm_device *dev)
 {
        u8 gdrst;
        pci_read_config_byte(dev->pdev, I965_GDRST, &gdrst);
-       return gdrst & 0x1;
+       return (gdrst & GRDOM_RESET_ENABLE) == 0;
 }
 
 static int i965_do_reset(struct drm_device *dev)