]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/radeon/kms/evergreen: reset the grbm blocks at resume and init
authorAlex Deucher <alexdeucher@gmail.com>
Mon, 20 Dec 2010 17:35:04 +0000 (12:35 -0500)
committerAK <andi@firstfloor.org>
Sun, 6 Feb 2011 19:03:49 +0000 (11:03 -0800)
commit 86f5c9edbb3bac37cc8cee6528a929005ba72aad upstream.

This fixes module reloading and resume as the gfx block seems to
be left in a bad state in some cases.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
drivers/gpu/drm/radeon/evergreen.c

index 82cc369a85ec56b0afda6e4532e7038dbfe01a2e..b7e60e562c41b4dad64c8e50ad4bb195611b2eaa 100644 (file)
@@ -2080,6 +2080,11 @@ int evergreen_resume(struct radeon_device *rdev)
 {
        int r;
 
+       /* reset the asic, the gfx blocks are often in a bad state
+        * after the driver is unloaded or after a resume
+        */
+       if (radeon_asic_reset(rdev))
+               dev_warn(rdev->dev, "GPU reset failed !\n");
        /* Do not reset GPU before posting, on rv770 hw unlike on r500 hw,
         * posting will perform necessary task to bring back GPU into good
         * shape.
@@ -2181,6 +2186,11 @@ int evergreen_init(struct radeon_device *rdev)
        r = radeon_atombios_init(rdev);
        if (r)
                return r;
+       /* reset the asic, the gfx blocks are often in a bad state
+        * after the driver is unloaded or after a resume
+        */
+       if (radeon_asic_reset(rdev))
+               dev_warn(rdev->dev, "GPU reset failed !\n");
        /* Post card if necessary */
        if (!evergreen_card_posted(rdev)) {
                if (!rdev->bios) {