From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: Re: [PATCH] drm/i915/vlv: Enable/disable VGA hotplugging properly Date: Fri, 15 Apr 2016 13:06:21 -0400 Message-ID: <1460739981.26502.3.camel@redhat.com> References: <1459284390-14485-1-git-send-email-cpaul@redhat.com> <20160414175922.GT4329@intel.com> <1460728071.26502.1.camel@redhat.com> <20160415154937.GX4329@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160415154937.GX4329@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?ISO-8859-1?Q?Syrj=E4l=E4?= Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, "open list:INTEL DRM DRIVERS excluding Poulsbo, Moorestow..., linux-kernel@vger.kernel.org open list" , stable@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org SHVoLCBuZWl0aGVyIGFtIEkgbm93LiBJIHNlZW0gdG8gYmUgYWJsZSB0byByZXByb2R1Y2UgdGhl IHByb2JsZW0ganVzdCBmaW5lCmFnYWluLiBBbnl3YXkgSSdsbCBzZW5kIHRoZSBuZXcgdmVyc2lv bnMgb2YgdGhlIHBhdGNoZXMgaW4gYSBsaXR0bGUgYml0CgpPbiBGcmksIDIwMTYtMDQtMTUgYXQg MTg6NDkgKzAzMDAsIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiBPbiBGcmksIEFwciAxNSwgMjAx NiBhdCAwOTo0Nzo1MUFNIC0wNDAwLCBMeXVkZSBQYXVsIHdyb3RlOgo+ID4gCj4gPiBMb29rcyBs aWtlIHdlIG1pZ2h0IG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoaXMgcGF0Y2ggYW55bW9yZSBh Y3R1YWxseSwKPiA+IGxvb2tzCj4gPiBsaWtlIHRoaXMgcHJvYmxlbSBnb3QgZml4ZWQgYnkgYWNj aWRlbnQgYnkgb25lIG9mIHRoZSBvdGhlciB2bHYgZml4ZXMgeW91Cj4gPiBwdXNoZWQuCj4gTm90 IHN1cmUgd2hhdCBleGFjdGx5IGNoYW5nZWQgZm9yIHlvdSwgYnV0IHdlIGRlZmluaXRlbHkgbmVl ZCB0bwo+IHJlaW5pdGlhbGl6ZSBBRFBBIHdoZW4gcmUtZW5hYmxpbmcgdGhlIHBvd2VyIHdlbGwu Cj4gCj4gPiAKPiA+IE5vdyBpdCdzIG5vdCBhbHdheXMgbW9kZXNldHRpbmcgb24gaG90cGx1ZyB3 aGVuIGl0IHdhcyBiZWZvcmUgdGhvdWdoIDooLAo+ID4gc28gSSdsbCBnZXQgdG8gd29yayBvbiBi aXNlY3RpbmcgdGhhdC4KPiA+IAo+ID4gT24gVGh1LCAyMDE2LTA0LTE0IGF0IDIwOjU5ICswMzAw LCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPiA+IAo+ID4gPiBPbiBUdWUsIE1hciAyOSwgMjAx NiBhdCAwNDo0NjozMFBNIC0wNDAwLCBMeXVkZSB3cm90ZToKPiA+ID4gPiAKPiA+ID4gPiAKPiA+ ID4gPiBPbiBWYWxsZXl2aWV3LCBWR0EgaG90cGx1Z2dpbmcgaXMgY29udHJvbGxlZCB0aHJvdWdo IGEgc2VwZXJhdGUgcmVnaXN0ZXIKPiA+ID4gPiB0aGFuIGV2ZXJ5dGhpbmcgZWxzZSwgVkxWX0FE UEEsIHdoaWNoIG11c3QgYmUgZXhwbGljaXRseSBzZXQuCj4gPiA+ID4gCj4gPiA+ID4gV2hpbGUg VkdBIGhvdHBsdWdnaW5nIHdvcmtlZChpc2gpIGJlZm9yZSwgaXQgbG9va3MgbGlrZSB0aGF0IHdh cyBtYWlubHkKPiA+ID4gPiBiZWNhdXNlIHdlJ2QgdW5pbnRlbnRpb25hbGx5IGVuYWJsZSBpdCBp bgo+ID4gPiA+IHZhbGxleXZpZXdfY3J0X2RldGVjdF9ob3RwbHVnKCkgd2hlbiB3ZSBkaWQgYSBm b3JjZSB0cmlnZ2VyLiBUaGlzCj4gPiA+ID4gZG9lc24ndCB3b3JrIHJlbGlhYmx5IGVub3VnaCBi ZWNhdXNlIHdoZW5ldmVyIHRoZSBkaXNwbGF5IHBvd2Vyd2VsbCBvbgo+ID4gPiA+IHZsdiBnZXRz IGRpc2FibGVkLCB0aGUgdmFsdWVzIHNldCBpbiBWTFZfQURQQSBnZXQgY2xlYXJlZCBhbmQKPiA+ ID4gPiBjb25zZXF1ZW50bHkgVkdBIGhvdHBsdWdnaW5nIGdldHMgZGlzYWJsZWQuIFRoaXMgY2F1 c2VzIGJ1Z3Mgc3VjaCBhcyBvbmUKPiA+ID4gPiB3ZSBmb3VuZCBvbiBhbiBJbnRlbCBOVUMsIHdo ZXJlIGRvaW5nIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2Ugb2YKPiA+ID4gPiBob3RwbHVnczoKPiA+ ID4gPiAKPiA+ID4gPiAJLSBEaXNjb25uZWN0IGFsbCBtb25pdG9ycwo+ID4gPiA+IAktIENvbm5l Y3QgVkdBCj4gPiA+ID4gCS0gRGlzY29ubmVjdCBWR0EKPiA+ID4gPiAJLSBDb25uZWN0IEhETUkK PiA+ID4gPiAKPiA+ID4gPiBXb3VsZCByZXN1bHQgaW4gaG90cGx1Z2dpbmcgZ2V0dGluZyBkaXNh YmxlZCwgZHVlIHRvIHRoZSBkaXNwbGF5Cj4gPiA+ID4gcG93ZXJ3ZWxscyBnZXR0aW5nIHRvZ2ds ZWQgaW4gdGhlIHByb2Nlc3Mgb2YgY29ubmVjdGluZyBIRE1JLgo+ID4gPiA+IAo+ID4gPiA+IEND OiBzdGFibGVAdmdlci5rZXJuZWwub3JnCj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogTHl1ZGUgPGNw YXVsQHJlZGhhdC5jb20+Cj4gPiA+ID4gLS0tCj4gPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2lycS5jIHwgMTQgKysrKysrKysrKysrKysKPiA+ID4gPiDCoDEgZmlsZSBjaGFuZ2Vk LCAxNCBpbnNlcnRpb25zKCspCj4gPiA+ID4gCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfaXJxLmMKPiA+ID4gPiBpbmRleCA1YWE0MjM5Li42MDU5MmE0IDEwMDY0NAo+ID4gPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiA+ID4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gPiA+ID4gQEAgLTM2MTEsNiArMzYxMSw3IEBAIHN0 YXRpYyB2b2lkIHZhbGxleXZpZXdfZGlzcGxheV9pcnFzX2luc3RhbGwoc3RydWN0Cj4gPiA+ID4g ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+ID4gwqB7Cj4gPiA+ID4gwqAJdTMyIHBp cGVzdGF0X21hc2s7Cj4gPiA+ID4gwqAJdTMyIGlpcl9tYXNrOwo+ID4gPiA+ICsJdTMyIGFkcGFf cmVnOwo+ID4gPiA+IMKgCWVudW0gcGlwZSBwaXBlOwo+ID4gPiA+IMKgCj4gPiA+ID4gwqAJcGlw ZXN0YXRfbWFzayA9IFBJUEVTVEFUX0lOVF9TVEFUVVNfTUFTSyB8Cj4gPiA+ID4gQEAgLTM2Mjcs NiArMzYyOCwxMiBAQCBzdGF0aWMgdm9pZAo+ID4gPiA+IHZhbGxleXZpZXdfZGlzcGxheV9pcnFz X2luc3RhbGwoc3RydWN0Cj4gPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+ ID4gwqAJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkKPiA+ID4gPiDCoAkJwqDCoMKgwqDC oMKgaTkxNV9lbmFibGVfcGlwZXN0YXQoZGV2X3ByaXYsIHBpcGUsCj4gPiA+ID4gcGlwZXN0YXRf bWFzayk7Cj4gPiA+ID4gwqAKPiA+ID4gPiArCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkg ewo+ID4gPiA+ICsJCWFkcGFfcmVnID0gSTkxNV9SRUFEKFZMVl9BRFBBKTsKPiA+ID4gPiArCQlh ZHBhX3JlZyB8PSBBRFBBX0NSVF9IT1RQTFVHX0VOQUJMRTsKPiA+ID4gPiArCQlJOTE1X1dSSVRF KFZMVl9BRFBBLCBhZHBhX3JlZyk7Cj4gPiA+ID4gKwl9Cj4gPiA+IFdlIG1pZ2h0IG5vdCB3YW50 IHRvIGVuYWJsZSB0aGF0IHdoZW4gdGhlcmUncyBubyBWR0EgY29ubmVjdG9yLgo+ID4gPiAKPiA+ ID4gU2VlbXMgbGlrZSB3ZSBzaG91bGQganVzdCBiZSBjYWxsaW5nIGludGVsX2NydF9yZXNldCgp IGhlcmUuIFdlCj4gPiA+IGRlZmluaXRlbHkgZG9uJ3Qgd2FudCB0byBjYWxsIHRoZSByZXNldCBm b3IgaG9va3MgZm9yIGFsbCB0aGUgb3RoZXIKPiA+ID4gY29ubmVjdG9ycyBzbyBkcm1fbW9kZV9j b25maWdfcmVzZXQoKSBpcyBvdXQuIEFsc28gdGhlIGNvbm5lY3Rvcgo+ID4gPiBsb2NraW5nIG1p Z2h0IGJlIHByb2JsZW1hdGljIGhlcmUsIHNvIEkgbWlnaHQgc3VnZ2VzdCBhZGp1c3RpbmcKPiA+ ID4gaW50ZWxfY3J0X3Jlc2V0KCkgdG8gdGFrZSBhbiBlbmNvZGVyIGluc3RlYWQgb2YgY29ubmVj dG9yLCBhbmQgdGhlbgo+ID4gPiB3ZSBzaG91bGQgYmUgYWJsZSB0byB3YWxrIHRoZSBlbmNvZGVy IGxpc3Qgd2l0aG91dCBhbnkgdHJvdWJsZXMuCj4gPiA+IAo+ID4gPiA+IAo+ID4gPiA+IAo+ID4g PiA+ICsKPiA+ID4gPiDCoAlpaXJfbWFzayA9IEk5MTVfRElTUExBWV9QT1JUX0lOVEVSUlVQVCB8 Cj4gPiA+ID4gwqAJCcKgwqDCoEk5MTVfRElTUExBWV9QSVBFX0FfRVZFTlRfSU5URVJSVVBUIHwK PiA+ID4gPiDCoAkJwqDCoMKgSTkxNV9ESVNQTEFZX1BJUEVfQl9FVkVOVF9JTlRFUlJVUFQ7Cj4g PiA+ID4gQEAgLTM2NDUsOCArMzY1MiwxNSBAQCBzdGF0aWMgdm9pZAo+ID4gPiA+IHZhbGxleXZp ZXdfZGlzcGxheV9pcnFzX3VuaW5zdGFsbChzdHJ1Y3QKPiA+ID4gPiBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiA+ID4gPiDCoHsKPiA+ID4gPiDCoAl1MzIgcGlwZXN0YXRfbWFzazsKPiA+ ID4gPiDCoAl1MzIgaWlyX21hc2s7Cj4gPiA+ID4gKwl1MzIgYWRwYV9yZWc7Cj4gPiA+ID4gwqAJ ZW51bSBwaXBlIHBpcGU7Cj4gPiA+ID4gwqAKPiA+ID4gPiArCWlmIChJU19WQUxMRVlWSUVXKGRl dl9wcml2KSkgewo+ID4gPiA+ICsJCWFkcGFfcmVnID0gSTkxNV9SRUFEKFZMVl9BRFBBKTsKPiA+ ID4gPiArCQlhZHBhX3JlZyAmPSB+QURQQV9DUlRfSE9UUExVR19FTkFCTEU7Cj4gPiA+ID4gKwkJ STkxNV9XUklURShWTFZfQURQQSwgYWRwYV9yZWcpOwo+ID4gPiA+ICsJfQo+ID4gPiA+ICsKPiA+ ID4gPiDCoAlpaXJfbWFzayA9IEk5MTVfRElTUExBWV9QT1JUX0lOVEVSUlVQVCB8Cj4gPiA+ID4g wqAJCcKgwqDCoEk5MTVfRElTUExBWV9QSVBFX0FfRVZFTlRfSU5URVJSVVBUIHwKPiA+ID4gPiDC oAkJwqDCoMKgSTkxNV9ESVNQTEFZX1BJUEVfQl9FVkVOVF9JTlRFUlJVUFQ7Cj4gPiA+ID4gLS3C oAo+ID4gPiA+IDIuNS41Cj4gPiA+ID4gCj4gPiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPiA+ID4gPiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4g PiA+ID4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gPiA+IGh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com ([209.132.183.28]:51902 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752273AbcDORG2 (ORCPT ); Fri, 15 Apr 2016 13:06:28 -0400 Message-ID: <1460739981.26502.3.camel@redhat.com> Subject: Re: [PATCH] drm/i915/vlv: Enable/disable VGA hotplugging properly From: Lyude Paul To: Ville =?ISO-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org, stable@vger.kernel.org, "open list:INTEL DRM DRIVERS excluding Poulsbo, Moorestow..., " "linux-kernel@vger.kernel.org open list" , Daniel Vetter Date: Fri, 15 Apr 2016 13:06:21 -0400 In-Reply-To: <20160415154937.GX4329@intel.com> References: <1459284390-14485-1-git-send-email-cpaul@redhat.com> <20160414175922.GT4329@intel.com> <1460728071.26502.1.camel@redhat.com> <20160415154937.GX4329@intel.com> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org List-ID: Huh, neither am I now. I seem to be able to reproduce the problem just fine again. Anyway I'll send the new versions of the patches in a little bit On Fri, 2016-04-15 at 18:49 +0300, Ville Syrjälä wrote: > On Fri, Apr 15, 2016 at 09:47:51AM -0400, Lyude Paul wrote: > > > > Looks like we might not need to worry about this patch anymore actually, > > looks > > like this problem got fixed by accident by one of the other vlv fixes you > > pushed. > Not sure what exactly changed for you, but we definitely need to > reinitialize ADPA when re-enabling the power well. > > > > > Now it's not always modesetting on hotplug when it was before though :(, > > so I'll get to work on bisecting that. > > > > On Thu, 2016-04-14 at 20:59 +0300, Ville Syrjälä wrote: > > > > > > On Tue, Mar 29, 2016 at 04:46:30PM -0400, Lyude wrote: > > > > > > > > > > > > On Valleyview, VGA hotplugging is controlled through a seperate register > > > > than everything else, VLV_ADPA, which must be explicitly set. > > > > > > > > While VGA hotplugging worked(ish) before, it looks like that was mainly > > > > because we'd unintentionally enable it in > > > > valleyview_crt_detect_hotplug() when we did a force trigger. This > > > > doesn't work reliably enough because whenever the display powerwell on > > > > vlv gets disabled, the values set in VLV_ADPA get cleared and > > > > consequently VGA hotplugging gets disabled. This causes bugs such as one > > > > we found on an Intel NUC, where doing the following sequence of > > > > hotplugs: > > > > > > > > - Disconnect all monitors > > > > - Connect VGA > > > > - Disconnect VGA > > > > - Connect HDMI > > > > > > > > Would result in hotplugging getting disabled, due to the display > > > > powerwells getting toggled in the process of connecting HDMI. > > > > > > > > CC: stable@vger.kernel.org > > > > Signed-off-by: Lyude > > > > --- > > > >  drivers/gpu/drm/i915/i915_irq.c | 14 ++++++++++++++ > > > >  1 file changed, 14 insertions(+) > > > > > > > > diff --git a/drivers/gpu/drm/i915/i915_irq.c > > > > b/drivers/gpu/drm/i915/i915_irq.c > > > > index 5aa4239..60592a4 100644 > > > > --- a/drivers/gpu/drm/i915/i915_irq.c > > > > +++ b/drivers/gpu/drm/i915/i915_irq.c > > > > @@ -3611,6 +3611,7 @@ static void valleyview_display_irqs_install(struct > > > > drm_i915_private *dev_priv) > > > >  { > > > >   u32 pipestat_mask; > > > >   u32 iir_mask; > > > > + u32 adpa_reg; > > > >   enum pipe pipe; > > > >   > > > >   pipestat_mask = PIPESTAT_INT_STATUS_MASK | > > > > @@ -3627,6 +3628,12 @@ static void > > > > valleyview_display_irqs_install(struct > > > > drm_i915_private *dev_priv) > > > >   for_each_pipe(dev_priv, pipe) > > > >         i915_enable_pipestat(dev_priv, pipe, > > > > pipestat_mask); > > > >   > > > > + if (IS_VALLEYVIEW(dev_priv)) { > > > > + adpa_reg = I915_READ(VLV_ADPA); > > > > + adpa_reg |= ADPA_CRT_HOTPLUG_ENABLE; > > > > + I915_WRITE(VLV_ADPA, adpa_reg); > > > > + } > > > We might not want to enable that when there's no VGA connector. > > > > > > Seems like we should just be calling intel_crt_reset() here. We > > > definitely don't want to call the reset for hooks for all the other > > > connectors so drm_mode_config_reset() is out. Also the connector > > > locking might be problematic here, so I might suggest adjusting > > > intel_crt_reset() to take an encoder instead of connector, and then > > > we should be able to walk the encoder list without any troubles. > > > > > > > > > > > > > > > + > > > >   iir_mask = I915_DISPLAY_PORT_INTERRUPT | > > > >      I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | > > > >      I915_DISPLAY_PIPE_B_EVENT_INTERRUPT; > > > > @@ -3645,8 +3652,15 @@ static void > > > > valleyview_display_irqs_uninstall(struct > > > > drm_i915_private *dev_priv) > > > >  { > > > >   u32 pipestat_mask; > > > >   u32 iir_mask; > > > > + u32 adpa_reg; > > > >   enum pipe pipe; > > > >   > > > > + if (IS_VALLEYVIEW(dev_priv)) { > > > > + adpa_reg = I915_READ(VLV_ADPA); > > > > + adpa_reg &= ~ADPA_CRT_HOTPLUG_ENABLE; > > > > + I915_WRITE(VLV_ADPA, adpa_reg); > > > > + } > > > > + > > > >   iir_mask = I915_DISPLAY_PORT_INTERRUPT | > > > >      I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | > > > >      I915_DISPLAY_PIPE_B_EVENT_INTERRUPT; > > > > --  > > > > 2.5.5 > > > > > > > > _______________________________________________ > > > > dri-devel mailing list > > > > dri-devel@lists.freedesktop.org > > > > https://lists.freedesktop.org/mailman/listinfo/dri-devel