Skip to contentSkip to conversation

don't suspend/resume 8xx chips

PATCH In review Jesse Barnes 3 participants 5 messages Mar 26, 2008 – May 5, 2008 Char and misc drivers

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 don't suspend/resume 8xx chips

Recent testing has turned up some bugs in the new Intel suspend/resume code for old, 8xx chipsets. So for 2.6.25 it probably makes sense to apply this patch, which should prevent the new code from getting called on those chipsets. We should have this fixed soon, but not in time for 2.6.25 unfortunately. Note that this patch (along with the suspend/resume code in general) could use more testing.

drivers/char/drm/i915_dma.c +0 -0
index e9d6663..6964a28 100644
@@ -762,6 +762,11 @@ int i915_driver_load(struct drm_device *dev, unsigned 

long

        unsigned long base, size;
        int ret = 0, mmio_bar = IS_I9XX(dev) ? 0 : 1;

+ if (!IS_I9XX(dev)) {
+ dev->driver->suspend = NULL;
+ dev->driver->resume = NULL;
+ }
+

        /* i915 has 4 more counters */
        dev->counters += 4;
        dev->types[6] = _DRM_STAT_IRQ;
#1 lore raw
Quoted 6 lines · Jesse Barnes

Recent testing has turned up some bugs in the new Intel suspend/resume code for old, 8xx chipsets. So for 2.6.25 it probably makes sense to apply this patch, which should prevent the new code from getting called on those chipsets. We should have this fixed soon, but not in time for 2.6.25 unfortunately. Note that this patch (along with the suspend/resume code in general) could use more testing.

I've tested this patch on two different laptops: A Uniwill 223 and an IBM Thinkpad X40. Both have Intel 855 graphics. The former now suspends and hibernates just fine (it fails without the patch). The latter works both with and without the patch.

Signature · 3 lines
Soren Hansen               | 
Virtualisation specialist  | Ubuntu Server Team
Canonical Ltd.             | http://www.ubuntu.com/
#2 lore raw
Quoted 8 lines · Soren Hansen
Quoted 6 lines · Jesse Barnes

Recent testing has turned up some bugs in the new Intel suspend/resume code for old, 8xx chipsets. So for 2.6.25 it probably makes sense to apply this patch, which should prevent the new code from getting called on those chipsets. We should have this fixed soon, but not in time for 2.6.25 unfortunately. Note that this patch (along with the suspend/resume code in general) could use more testing.

Quoted 4 lines

I've tested this patch on two different laptops: A Uniwill 223 and an IBM Thinkpad X40. Both have Intel 855 graphics. The former now suspends and hibernates just fine (it fails without the patch). The latter works both with and without the patch.

Soren, can you give the current DRM tree a try or apply the patch in
http://cgit.freedesktop.org/mesa/drm/commit/?id=cb33133ef354b77a8cf06b16ce95a0babbe8bc6f?
I'm hoping it'll fix the one machine that had a problem and not break the other. :) I tested it on my new 855 machine and it fixes things here...

Thanks,
Jesse

#3 lore raw
In reply to Jesse Barnes
Quoted 18 lines · Jesse Barnes

Recent testing has turned up some bugs in the new Intel suspend/resume code for old, 8xx chipsets. So for 2.6.25 it probably makes sense to apply this patch, which should prevent the new code from getting called on those chipsets. We should have this fixed soon, but not in time for 2.6.25 unfortunately. Note that this patch (along with the suspend/resume code in general) could use more testing.

drivers/char/drm/i915_dma.c +0 -0
index e9d6663..6964a28 100644
@@ -762,6 +762,11 @@ int i915_driver_load(struct drm_device *dev, unsigned 

long

        unsigned long base, size;
        int ret = 0, mmio_bar = IS_I9XX(dev) ? 0 : 1;

drivers/char/drm/i915_dma.c

Quoted 5 lines
drivers/char/drm/i915_dma.c +5 -0
+       if (!IS_I9XX(dev)) {
+               dev->driver->suspend = NULL;
+               dev->driver->resume = NULL;
+       }
+

Are you sure your driver needs no state saving?

Maybe register suspend that printks, returns error?
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#4 lore raw
Quoted 27 lines · Pavel Machek
Quoted 18 lines · Jesse Barnes

Recent testing has turned up some bugs in the new Intel suspend/resume code for old, 8xx chipsets. So for 2.6.25 it probably makes sense to apply this patch, which should prevent the new code from getting called on those chipsets. We should have this fixed soon, but not in time for 2.6.25 unfortunately. Note that this patch (along with the suspend/resume code in general) could use more testing.

drivers/char/drm/i915_dma.c +0 -0
index e9d6663..6964a28 100644
@@ -762,6 +762,11 @@ int i915_driver_load(struct drm_device *dev,

unsigned long

        unsigned long base, size;
        int ret = 0, mmio_bar = IS_I9XX(dev) ? 0 : 1;

drivers/char/drm/i915_dma.c

Quoted 5 lines
drivers/char/drm/i915_dma.c +5 -0
+       if (!IS_I9XX(dev)) {
+               dev->driver->suspend = NULL;
+               dev->driver->resume = NULL;
+       }
+

Are you sure your driver needs no state saving?

Quoted 1 line

Maybe register suspend that printks, returns error?

No, there's definitely state we'd like to save/restore, but 8xx chips are tricky and we won't have them working before 2.6.25-final. This patch preserves old behavior for 8xx chips and allows 9xx chips to properly survive suspend/resume events, so I don't think a printk is necessary.

Jesse