[Intel-gfx] [PATCH] drm/i915: fix startup hang on some non-mobile platforms
Jesse Barnes
jbarnes at virtuousgeek.org
Thu Sep 17 00:05:00 CEST 2009
On Mon, 14 Sep 2009 12:22:31 -0700
Jesse Barnes <jbarnes at virtuousgeek.org> wrote:
> Due to a bogus FBC support check and failing to check for FBC support
> in the right places, mode setting on non-mobile platforms could fail
> and hang in the FBC disable routine. Fix it up.
>
> This fix highlights the need for cleanups in this area (function
> pointers and better feature support checks). Patches for that to
> follow.
>
> Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
oops, use this one. It doesn't have the superfluous hotplug debug hunk.
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 0344afd..09e9874 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -929,7 +929,7 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
#define HAS_FW_BLC(dev) (IS_I9XX(dev) || IS_G4X(dev) || IS_IGDNG(dev))
#define HAS_PIPE_CXSR(dev) (IS_G4X(dev) || IS_IGDNG(dev))
-#define I915_HAS_FBC(dev) (IS_I9XX(dev) || IS_I965G(dev))
+#define I915_HAS_FBC(dev) (IS_MOBILE(dev) && (IS_I9XX(dev) || IS_I965G(dev)))
#define PRIMARY_RINGBUFFER_SIZE (128*1024)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index cadb9ef..36a36d7 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -1005,6 +1005,9 @@ void i8xx_disable_fbc(struct drm_device *dev)
struct drm_i915_private *dev_priv = dev->dev_private;
u32 fbc_ctl;
+ if (!I915_HAS_FBC(dev))
+ return;
+
/* Disable compression */
fbc_ctl = I915_READ(FBC_CONTROL);
fbc_ctl &= ~FBC_CTL_EN;
More information about the Intel-gfx
mailing list