On Thu, Jan 12, 2012 at 21:17, Jesse Barnes <span dir="ltr"><<a href="mailto:jbarnes@virtuousgeek.org">jbarnes@virtuousgeek.org</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

On Thu, 12 Jan 2012 21:13:40 +0100<br>
<div><div class="h5">Vincent Vanackere <<a href="mailto:vincent.vanackere@gmail.com">vincent.vanackere@gmail.com</a>> wrote:<br>
<br>
> On Thu, Jan 12, 2012 at 20:57, Jesse Barnes <<a href="mailto:jbarnes@virtuousgeek.org">jbarnes@virtuousgeek.org</a>>wrote:<br>
><br>
> > On Thu, 12 Jan 2012 17:29:38 -0200<br>
> > Eugeni Dodonov <<a href="mailto:eugeni@dodonov.net">eugeni@dodonov.net</a>> wrote:<br>
> ><br>
> > > On Thu, Jan 12, 2012 at 17:25, Jesse Barnes <<a href="mailto:jbarnes@virtuousgeek.org">jbarnes@virtuousgeek.org</a><br>
> > >wrote:<br>
> > ><br>
> > > > On Thu, 12 Jan 2012 20:08:59 +0100<br>
> > > > Vincent Vanackere <<a href="mailto:vincent.vanackere@gmail.com">vincent.vanackere@gmail.com</a>> wrote:<br>
> > > > > > Thanks for the report... do you also have:<br>
> > > > > ><br>
> > > > > > commit 7a4198664d46b87025a64530f1530ab2bea54c19<br>
> > > > > > Author: Jesse Barnes <<a href="mailto:jbarnes@virtuousgeek.org">jbarnes@virtuousgeek.org</a>><br>
> > > > > > Date:   Tue Nov 15 10:28:53 2011 -0800<br>
> > > > > ><br>
> > > > > >    drm/i915: don't disable a PCH DPLL that's in use<br>
> > > > > ><br>
> > > > > ><br>
> > > > > > commit d8e70a254d8f2da141006e496a51502b79115e80<br>
> > > > > > Author: Jesse Barnes <<a href="mailto:jbarnes@virtuousgeek.org">jbarnes@virtuousgeek.org</a>><br>
> > > > > > Date:   Tue Nov 15 10:28:54 2011 -0800<br>
> > > > > ><br>
> > > > > >    drm/i915: only set the intel_crtc DPMS mode to on if the mode<br>
> > set<br>
> > > > > > succeeded<br>
> > > > > ><br>
> > > > > > in your tree?  Those are needed to fix some 3 pipe related bugs.<br>
> > > > > ><br>
> > > > > > --<br>
> > > > > > Jesse Barnes, Intel Open Source Technology Center<br>
> > > > > ><br>
> > > > ><br>
> > > > > Yes, these commits were present. To double-check I just tested the<br>
> > latest<br>
> > > > > tip at a429638cac1e5c656818a45aaff78df7b743004e and the problem is<br>
> > still<br>
> > > > > there.<br>
> > > ><br>
> > > > Stefan, you have the same machine?  I wonder if it's an eDP config; my<br>
> > > > t420 here works ok with current bits, but it uses LVDS.<br>
> > > ><br>
> > ><br>
> > > If you are using eDP, you might be facing<br>
> > > <a href="https://bugs.freedesktop.org/show_bug.cgi?id=42263" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=42263</a> or<br>
> > > <a href="https://bugs.freedesktop.org/show_bug.cgi?id=42278" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=42278</a>.<br>
> > ><br>
> > > Could you try with patch mentioned at<br>
> > > <a href="https://bugs.freedesktop.org/show_bug.cgi?id=42263" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=42263</a> reverted?<br>
> ><br>
> > Also can you try this patch as a sanity check?  You may need to set up<br>
> > netconsole to capture the BUG_ON if you hit it.<br>
> ><br>
> > --<br>
> > Jesse Barnes, Intel Open Source Technology Center<br>
> ><br>
> > diff --git a/drivers/gpu/drm/i915/intel_display.c<br>
> > b/drivers/gpu/drm/i915/intel_display.c<br>
> > index 29743de..d01f403 100644<br>
> > --- a/drivers/gpu/drm/i915/intel_display.c<br>
> > +++ b/drivers/gpu/drm/i915/intel_display.c<br>
> > @@ -2921,6 +2921,7 @@ static void ironlake_pch_enable(struct drm_crtc<br>
> > *crtc)<br>
> >                        temp &= ~(TRANSB_DPLLB_SEL);<br>
> >                        temp |= (TRANSB_DPLL_ENABLE | TRANSB_DPLLB_SEL);<br>
> >                } else if (pipe == 2) {<br>
> > +                       BUG_ON(!IS_IVYBRIDGE(dev));<br>
> >                        temp &= ~(TRANSC_DPLLB_SEL);<br>
> >                        temp |= (TRANSC_DPLL_ENABLE | transc_sel);<br>
> >                }<br>
> > @@ -3114,6 +3115,7 @@ static void ironlake_crtc_disable(struct drm_crtc<br>
> > *crtc)<br>
> >                        temp &= ~(TRANSB_DPLL_ENABLE | TRANSB_DPLLB_SEL);<br>
> >                        break;<br>
> >                case 2:<br>
> > +                       BUG_ON(!IS_IVYBRIDGE(dev));<br>
> >                        /* C shares PLL A or B */<br>
> >                        temp &= ~(TRANSC_DPLL_ENABLE | TRANSC_DPLLB_SEL);<br>
> >                        break;<br>
> > @@ -3126,6 +3128,8 @@ static void ironlake_crtc_disable(struct drm_crtc<br>
> > *crtc)<br>
> >        /* disable PCH DPLL */<br>
> >        if (!intel_crtc->no_pll)<br>
> >                intel_disable_pch_pll(dev_priv, pipe);<br>
> > +       else<br>
> > +               BUG_ON(!IS_IVYBRIDGE(dev));<br>
> ><br>
> >        /* Switch from PCDclk to Rawclk */<br>
> >        reg = FDI_RX_CTL(pipe);<br>
> > @@ -5787,6 +5791,8 @@ static int ironlake_crtc_mode_set(struct drm_crtc<br>
> > *crtc,<br>
> >                        udelay(150);<br>
> >                }<br>
> >        } else {<br>
> > +               BUG_ON(!IS_IVYBRIDGE(dev));<br>
> > +<br>
> >                if (dpll == (I915_READ(PCH_DPLL(0)) & 0x7fffffff) &&<br>
> >                    fp == I915_READ(PCH_FP0(0))) {<br>
> >                        intel_crtc->use_pll_a = true;<br>
> ><br>
> ><br>
><br>
> Will try. In the meantime I'm attaching the dmesg of a faulty kernel using<br>
> drm.debug=4 in case it helps.<br>
<br>
</div></div>Another one to try... need to check if we're masking out the port<br>
selection bits correctly...<br>
<div class="im"><br>
--<br>
Jesse Barnes, Intel Open Source Technology Center<br>
<br>
</div>@@ -5808,12 +5814,15 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,<br>
        if (is_lvds) {<br>
                temp = I915_READ(PCH_LVDS);<br>
                temp |= LVDS_PORT_EN | LVDS_A0A2_CLKA_POWER_UP;<br>
-               if (HAS_PCH_CPT(dev))<br>
+               if (HAS_PCH_CPT(dev)) {<br>
+                       temp &= ~PORT_TRANS_SEL_MASK;<br>
                        temp |= PORT_TRANS_SEL_CPT(pipe);<br>
-               else if (pipe == 1)<br>
-                       temp |= LVDS_PIPEB_SELECT;<br>
-               else<br>
-                       temp &= ~LVDS_PIPEB_SELECT;<br>
+               } else {<br>
+                       if (pipe == 1)<br>
+                               temp |= LVDS_PIPEB_SELECT;<br>
+                       else<br>
+                               temp &= ~LVDS_PIPEB_SELECT;<br>
+               }<br>
<br>
                /* set the corresponsding LVDS_BORDER bit */<br>
                temp |= dev_priv->lvds_border_bits;<br>
<br>
</blockquote></div><br>Against which tree do these patches apply ?<br>