From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915/vlv: Enable/disable VGA hotplugging properly Date: Thu, 14 Apr 2016 20:59:22 +0300 Message-ID: <20160414175922.GT4329@intel.com> References: <1459284390-14485-1-git-send-email-cpaul@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1459284390-14485-1-git-send-email-cpaul@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lyude 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 T24gVHVlLCBNYXIgMjksIDIwMTYgYXQgMDQ6NDY6MzBQTSAtMDQwMCwgTHl1ZGUgd3JvdGU6Cj4g T24gVmFsbGV5dmlldywgVkdBIGhvdHBsdWdnaW5nIGlzIGNvbnRyb2xsZWQgdGhyb3VnaCBhIHNl cGVyYXRlIHJlZ2lzdGVyCj4gdGhhbiBldmVyeXRoaW5nIGVsc2UsIFZMVl9BRFBBLCB3aGljaCBt dXN0IGJlIGV4cGxpY2l0bHkgc2V0Lgo+IAo+IFdoaWxlIFZHQSBob3RwbHVnZ2luZyB3b3JrZWQo aXNoKSBiZWZvcmUsIGl0IGxvb2tzIGxpa2UgdGhhdCB3YXMgbWFpbmx5Cj4gYmVjYXVzZSB3ZSdk IHVuaW50ZW50aW9uYWxseSBlbmFibGUgaXQgaW4KPiB2YWxsZXl2aWV3X2NydF9kZXRlY3RfaG90 cGx1ZygpIHdoZW4gd2UgZGlkIGEgZm9yY2UgdHJpZ2dlci4gVGhpcwo+IGRvZXNuJ3Qgd29yayBy ZWxpYWJseSBlbm91Z2ggYmVjYXVzZSB3aGVuZXZlciB0aGUgZGlzcGxheSBwb3dlcndlbGwgb24K PiB2bHYgZ2V0cyBkaXNhYmxlZCwgdGhlIHZhbHVlcyBzZXQgaW4gVkxWX0FEUEEgZ2V0IGNsZWFy ZWQgYW5kCj4gY29uc2VxdWVudGx5IFZHQSBob3RwbHVnZ2luZyBnZXRzIGRpc2FibGVkLiBUaGlz IGNhdXNlcyBidWdzIHN1Y2ggYXMgb25lCj4gd2UgZm91bmQgb24gYW4gSW50ZWwgTlVDLCB3aGVy ZSBkb2luZyB0aGUgZm9sbG93aW5nIHNlcXVlbmNlIG9mCj4gaG90cGx1Z3M6Cj4gCj4gCS0gRGlz Y29ubmVjdCBhbGwgbW9uaXRvcnMKPiAJLSBDb25uZWN0IFZHQQo+IAktIERpc2Nvbm5lY3QgVkdB Cj4gCS0gQ29ubmVjdCBIRE1JCj4gCj4gV291bGQgcmVzdWx0IGluIGhvdHBsdWdnaW5nIGdldHRp bmcgZGlzYWJsZWQsIGR1ZSB0byB0aGUgZGlzcGxheQo+IHBvd2Vyd2VsbHMgZ2V0dGluZyB0b2dn bGVkIGluIHRoZSBwcm9jZXNzIG9mIGNvbm5lY3RpbmcgSERNSS4KPiAKPiBDQzogc3RhYmxlQHZn ZXIua2VybmVsLm9yZwo+IFNpZ25lZC1vZmYtYnk6IEx5dWRlIDxjcGF1bEByZWRoYXQuY29tPgo+ IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIHwgMTQgKysrKysrKysrKysr KysKPiAgMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfaXJxLmMKPiBpbmRleCA1YWE0MjM5Li42MDU5MmE0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2lycS5jCj4gQEAgLTM2MTEsNiArMzYxMSw3IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfZGlz cGxheV9pcnFzX2luc3RhbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7 Cj4gIAl1MzIgcGlwZXN0YXRfbWFzazsKPiAgCXUzMiBpaXJfbWFzazsKPiArCXUzMiBhZHBhX3Jl ZzsKPiAgCWVudW0gcGlwZSBwaXBlOwo+ICAKPiAgCXBpcGVzdGF0X21hc2sgPSBQSVBFU1RBVF9J TlRfU1RBVFVTX01BU0sgfAo+IEBAIC0zNjI3LDYgKzM2MjgsMTIgQEAgc3RhdGljIHZvaWQgdmFs bGV5dmlld19kaXNwbGF5X2lycXNfaW5zdGFsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gIAlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKQo+ICAJCSAgICAgIGk5MTVf ZW5hYmxlX3BpcGVzdGF0KGRldl9wcml2LCBwaXBlLCBwaXBlc3RhdF9tYXNrKTsKPiAgCj4gKwlp ZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpIHsKPiArCQlhZHBhX3JlZyA9IEk5MTVfUkVBRChW TFZfQURQQSk7Cj4gKwkJYWRwYV9yZWcgfD0gQURQQV9DUlRfSE9UUExVR19FTkFCTEU7Cj4gKwkJ STkxNV9XUklURShWTFZfQURQQSwgYWRwYV9yZWcpOwo+ICsJfQoKV2UgbWlnaHQgbm90IHdhbnQg dG8gZW5hYmxlIHRoYXQgd2hlbiB0aGVyZSdzIG5vIFZHQSBjb25uZWN0b3IuCgpTZWVtcyBsaWtl IHdlIHNob3VsZCBqdXN0IGJlIGNhbGxpbmcgaW50ZWxfY3J0X3Jlc2V0KCkgaGVyZS4gV2UKZGVm aW5pdGVseSBkb24ndCB3YW50IHRvIGNhbGwgdGhlIHJlc2V0IGZvciBob29rcyBmb3IgYWxsIHRo ZSBvdGhlcgpjb25uZWN0b3JzIHNvIGRybV9tb2RlX2NvbmZpZ19yZXNldCgpIGlzIG91dC4gQWxz byB0aGUgY29ubmVjdG9yCmxvY2tpbmcgbWlnaHQgYmUgcHJvYmxlbWF0aWMgaGVyZSwgc28gSSBt aWdodCBzdWdnZXN0IGFkanVzdGluZwppbnRlbF9jcnRfcmVzZXQoKSB0byB0YWtlIGFuIGVuY29k ZXIgaW5zdGVhZCBvZiBjb25uZWN0b3IsIGFuZCB0aGVuCndlIHNob3VsZCBiZSBhYmxlIHRvIHdh bGsgdGhlIGVuY29kZXIgbGlzdCB3aXRob3V0IGFueSB0cm91Ymxlcy4KCj4gKwo+ICAJaWlyX21h c2sgPSBJOTE1X0RJU1BMQVlfUE9SVF9JTlRFUlJVUFQgfAo+ICAJCSAgIEk5MTVfRElTUExBWV9Q SVBFX0FfRVZFTlRfSU5URVJSVVBUIHwKPiAgCQkgICBJOTE1X0RJU1BMQVlfUElQRV9CX0VWRU5U X0lOVEVSUlVQVDsKPiBAQCAtMzY0NSw4ICszNjUyLDE1IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZp ZXdfZGlzcGxheV9pcnFzX3VuaW5zdGFsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIHsKPiAgCXUzMiBwaXBlc3RhdF9tYXNrOwo+ICAJdTMyIGlpcl9tYXNrOwo+ICsJdTMy IGFkcGFfcmVnOwo+ICAJZW51bSBwaXBlIHBpcGU7Cj4gIAo+ICsJaWYgKElTX1ZBTExFWVZJRVco ZGV2X3ByaXYpKSB7Cj4gKwkJYWRwYV9yZWcgPSBJOTE1X1JFQUQoVkxWX0FEUEEpOwo+ICsJCWFk cGFfcmVnICY9IH5BRFBBX0NSVF9IT1RQTFVHX0VOQUJMRTsKPiArCQlJOTE1X1dSSVRFKFZMVl9B RFBBLCBhZHBhX3JlZyk7Cj4gKwl9Cj4gKwo+ICAJaWlyX21hc2sgPSBJOTE1X0RJU1BMQVlfUE9S VF9JTlRFUlJVUFQgfAo+ICAJCSAgIEk5MTVfRElTUExBWV9QSVBFX0FfRVZFTlRfSU5URVJSVVBU IHwKPiAgCQkgICBJOTE1X0RJU1BMQVlfUElQRV9CX0VWRU5UX0lOVEVSUlVQVDsKPiAtLSAKPiAy LjUuNQo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com ([134.134.136.20]:4471 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753428AbcDNR71 (ORCPT ); Thu, 14 Apr 2016 13:59:27 -0400 Date: Thu, 14 Apr 2016 20:59:22 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Lyude 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 Subject: Re: [PATCH] drm/i915/vlv: Enable/disable VGA hotplugging properly Message-ID: <20160414175922.GT4329@intel.com> References: <1459284390-14485-1-git-send-email-cpaul@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1459284390-14485-1-git-send-email-cpaul@redhat.com> Sender: stable-owner@vger.kernel.org List-ID: 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 -- Ville Syrj�l� Intel OTC