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

Daniel Vetter
2015-08-04T16:05:19Z

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

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);

--
Daniel Vetter
Software Engineer, Intel Corporation