[REGRESSION] Re: i915 driver crashes on T540p if docking station attached
diff mbox

Message ID 20150804160511.GK24689@phenom.ffwll.local
State New
Headers show

Commit Message

Daniel Vetter Aug. 4, 2015, 4:05 p.m. UTC
On Mon, Aug 03, 2015 at 12:25:11PM -0400, Theodore Ts'o wrote:
> On Mon, Aug 03, 2015 at 05:27:29PM +0200, Daniel Vetter wrote:
> > 
> > Ok I updated fixes-stuff with just 2 patches which seem to be enough to
> > fix it. Plus a patch to convert Linus' hack into something we can keep
> > plus a drive-by WARNING fix in mst that got in the way for me.
> > 
> > Seems to work here in getting rid of the Oops. If this tests out for you
> > too I'll send a pull to Linus.
> 
> I've just tried pulling in your updated fixes-stuff, and it avoids the
> oops and allows external the monitor to work correctly.  However, I'm
> still seeing a large number of drm/i915 related warning messages and
> other kernel kvetching.

Involved a bit of head-scratching since I'm not too familiar with the
watermark code and it gained a lot of complexity for atomic. But the below
patch should be able to fix this WARNING (and it looks like it was a
genuine one). If it works for you I'll bake it into a proper patch.

Thanks, Daniel

Patch
diff mbox

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 30e0f54ba19d..ae07fd0c395c 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -15121,6 +15121,11 @@  void intel_modeset_setup_hw_state(struct drm_device *dev,
 
 	intel_modeset_readout_hw_state(dev);
 
+	if (IS_GEN9(dev))
+		skl_wm_get_hw_state(dev);
+	else if (HAS_PCH_SPLIT(dev))
+		ilk_wm_get_hw_state(dev);
+
 	/*
 	 * Now that we have the config, copy it to each CRTC struct
 	 * Note that this could go away if we move to using crtc_config
@@ -15162,11 +15167,6 @@  void intel_modeset_setup_hw_state(struct drm_device *dev,
 		pll->on = false;
 	}
 
-	if (IS_GEN9(dev))
-		skl_wm_get_hw_state(dev);
-	else if (HAS_PCH_SPLIT(dev))
-		ilk_wm_get_hw_state(dev);
-
 	if (force_restore) {
 		i915_redisable_vga(dev);