From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm/i915: Unbreak check_digital_port_conflicts() Date: Thu, 10 Dec 2015 13:39:47 +0200 Message-ID: <877fkmlegs.fsf@intel.com> References: <1449522800-25281-1-git-send-email-ville.syrjala@linux.intel.com> <20151210095247.GN20822@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 4DFE36E987 for ; Thu, 10 Dec 2015 03:40:16 -0800 (PST) In-Reply-To: <20151210095247.GN20822@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter , ville.syrjala@linux.intel.com Cc: Ander Conselvan de Oliveira , intel-gfx@lists.freedesktop.org, stable@vger.kernel.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAxMCBEZWMgMjAxNSwgRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPiB3cm90 ZToKPiBPbiBNb24sIERlYyAwNywgMjAxNSBhdCAxMToxMzoyMFBNICswMjAwLCB2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbSB3cm90ZToKPj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxs ZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPj4gCj4+IEF0b21pYyBjaGFuZ2VzIGJyb2tlIGNo ZWNrX2RpZ2l0YWxfcG9ydF9jb25mbGljdHMoKS4gSXQgbmVlZHMgdG8gbG9vawo+PiBhdCB0aGUg Z2xvYmFsIHNpdHVhdGlvbiBpbnN0ZWFkIG9mIGp1c3QgdHJ5aW5nIHRvIGZpbmQgYSBjb25mbGlj dAo+PiB3aXRoaW4gdGhlIGN1cnJlbnQgYXRvbWljIHN0YXRlLgo+PiAKPj4gVGhpcyBidWcgbWFk ZSBteSBIU1cgZXhwbG9kZSBzcGVjdGFjdWxhcmx5IGFmdGVyIEkgaGFkIHNwbGl0IHRoZSBEREkK Pj4gZW5jb2RlcnMgaW50byBzZXBhcmF0ZSBEUCBhbmQgSERNSSBlbmNvZGVycy4gV2l0aCB0aGUg Zml4LCB0aGluZ3MKPj4gc2VlbSBtdWNoIG1vcmUgc29saWQuCj4+IAo+PiBJIGhvcGUgaG9sZGlu ZyB0aGUgY29ubmVjdGlvbl9tdXRleCBpcyBlbm91Z2ggcHJvdGVjdGlvbiB0aGF0IHdlIGNhbgo+ PiBhY3R1YWxseSB3YWxrIHRoZSBjb25uZWN0b3JzIGV2ZW4gaWYgdGhleSdyZSBub3QgcGFydCBv ZiB0aGUgY3VycmVudAo+PiBhdG9taWMgc3RhdGUuLi4KPgo+IFRoYXQgaXMgc3VmZmljaWVudCBs b2NraW5nLgo+PiAKPj4gQ2M6IHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmcKPgo+IFVnaC4gTG9uZy10 ZXJtIEkgdGhpbmsgd2hhdCB3ZSBuZWVkIGlzIGZvciBhbGwgZHJpdmVycyAod2VsbCBhdCBsZWFz dAo+IGF0b21pYyBvbmVzKSB0byBmaWxsIG91dCB0aGUgcG9zc2libGVfY2xvbmVzIHN0dWZmIGNv cnJlY3RseSBpbiB0aGUKPiBlbmNvZGVyLiBBbmQgdGhlbiBjaGVjayB0aGlzIGluIHRoZSBhdG9t aWMgaGVscGVycy4gQnV0IHRoYXQncyB3YXkgdG9vCj4gbXVjaCBmb3IgLWZpeGVzLgo+Cj4gT24g dGhlIHBhdGNoIGl0c2VsZiwgZm9yIC1maXhlczogUmV2aWV3ZWQtYnk6IERhbmllbCBWZXR0ZXIg PGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+CgpGYWlscyB0byBhcHBseSBpbiBlaXRoZXIgZml4ZXMg b3IgZGlucS4gVmlsbGUsIHBsZWFzZSB1cGRhdGUuCgpCUiwKSmFuaS4KCgo+Cj4+IENjOiBBbmRl ciBDb25zZWx2YW4gZGUgT2xpdmVpcmEgPGFuZGVyLmNvbnNlbHZhbi5kZS5vbGl2ZWlyYUBpbnRl bC5jb20+Cj4+IEZpeGVzOiA1NDQ4YTAwZDNmMDYgKCJkcm0vaTkxNTogRG9uJ3QgdXNlIHN0YWdl ZCBjb25maWcgaW4gY2hlY2tfZGlnaXRhbF9wb3J0X2NvbmZsaWN0cygpIikKPj4gU2lnbmVkLW9m Zi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPj4g LS0tCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAxMyArKysrKysr KystLS0tCj4+ICAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt KQo+PiAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+PiBpbmRleCAxYzZkNTZj ODRiOWQuLmM5MDI5NjRjZWNhMCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwo+PiBAQCAtMTIyNTMsMTggKzEyMjUzLDIzIEBAIHN0YXRpYyB2b2lkIGludGVsX2R1bXBf cGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4+ICAKPj4gIHN0YXRpYyBib29s IGNoZWNrX2RpZ2l0YWxfcG9ydF9jb25mbGljdHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlKQo+PiAgewo+PiAtCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwo+PiArCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ZGV2Owo+PiAgCXN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3I7Cj4+IC0Jc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5lY3Rvcl9z dGF0ZTsKPj4gIAl1bnNpZ25lZCBpbnQgdXNlZF9wb3J0cyA9IDA7Cj4+IC0JaW50IGk7Cj4+ICAK Pj4gIAkvKgo+PiAgCSAqIFdhbGsgdGhlIGNvbm5lY3RvciBsaXN0IGluc3RlYWQgb2YgdGhlIGVu Y29kZXIKPj4gIAkgKiBsaXN0IHRvIGRldGVjdCB0aGUgcHJvYmxlbSBvbiBkZGkgcGxhdGZvcm1z Cj4+ICAJICogd2hlcmUgdGhlcmUncyBqdXN0IG9uZSBlbmNvZGVyIHBlciBkaWdpdGFsIHBvcnQu Cj4+ICAJICovCj4+IC0JZm9yX2VhY2hfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0 b3IsIGNvbm5lY3Rvcl9zdGF0ZSwgaSkgewo+PiArCWRybV9mb3JfZWFjaF9jb25uZWN0b3IoY29u bmVjdG9yLCBkZXYpIHsKPj4gKwkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5lY3Rv cl9zdGF0ZTsKPj4gKwkJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7Cj4+ICsKPj4gKwkJ Y29ubmVjdG9yX3N0YXRlID0gZHJtX2F0b21pY19nZXRfZXhpc3RpbmdfY29ubmVjdG9yX3N0YXRl KHN0YXRlLCBjb25uZWN0b3IpOwo+PiArCQlpZiAoIWNvbm5lY3Rvcl9zdGF0ZSkKPj4gKwkJCWNv bm5lY3Rvcl9zdGF0ZSA9IGNvbm5lY3Rvci0+c3RhdGU7Cj4+ICsKPj4gIAkJaWYgKCFjb25uZWN0 b3Jfc3RhdGUtPmJlc3RfZW5jb2RlcikKPj4gIAkJCWNvbnRpbnVlOwo+PiAgCj4+IC0tIAo+PiAy LjQuMTAKPj4gCj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4CgotLSAKSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kg Q2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com ([192.55.52.93]:44838 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751220AbbLJLkY convert rfc822-to-8bit (ORCPT ); Thu, 10 Dec 2015 06:40:24 -0500 From: Jani Nikula To: Daniel Vetter , ville.syrjala@linux.intel.com Cc: Ander Conselvan de Oliveira , intel-gfx@lists.freedesktop.org, stable@vger.kernel.org Subject: Re: [Intel-gfx] [PATCH] drm/i915: Unbreak check_digital_port_conflicts() In-Reply-To: <20151210095247.GN20822@phenom.ffwll.local> References: <1449522800-25281-1-git-send-email-ville.syrjala@linux.intel.com> <20151210095247.GN20822@phenom.ffwll.local> Date: Thu, 10 Dec 2015 13:39:47 +0200 Message-ID: <877fkmlegs.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT Sender: stable-owner@vger.kernel.org List-ID: On Thu, 10 Dec 2015, Daniel Vetter wrote: > On Mon, Dec 07, 2015 at 11:13:20PM +0200, ville.syrjala@linux.intel.com wrote: >> From: Ville Syrjälä >> >> Atomic changes broke check_digital_port_conflicts(). It needs to look >> at the global situation instead of just trying to find a conflict >> within the current atomic state. >> >> This bug made my HSW explode spectacularly after I had split the DDI >> encoders into separate DP and HDMI encoders. With the fix, things >> seem much more solid. >> >> I hope holding the connection_mutex is enough protection that we can >> actually walk the connectors even if they're not part of the current >> atomic state... > > That is sufficient locking. >> >> Cc: stable@vger.kernel.org > > Ugh. Long-term I think what we need is for all drivers (well at least > atomic ones) to fill out the possible_clones stuff correctly in the > encoder. And then check this in the atomic helpers. But that's way too > much for -fixes. > > On the patch itself, for -fixes: Reviewed-by: Daniel Vetter Fails to apply in either fixes or dinq. Ville, please update. BR, Jani. > >> Cc: Ander Conselvan de Oliveira >> Fixes: 5448a00d3f06 ("drm/i915: Don't use staged config in check_digital_port_conflicts()") >> Signed-off-by: Ville Syrjälä >> --- >> drivers/gpu/drm/i915/intel_display.c | 13 +++++++++---- >> 1 file changed, 9 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c >> index 1c6d56c84b9d..c902964ceca0 100644 >> --- a/drivers/gpu/drm/i915/intel_display.c >> +++ b/drivers/gpu/drm/i915/intel_display.c >> @@ -12253,18 +12253,23 @@ static void intel_dump_pipe_config(struct intel_crtc *crtc, >> >> static bool check_digital_port_conflicts(struct drm_atomic_state *state) >> { >> - struct intel_encoder *encoder; >> + struct drm_device *dev = state->dev; >> struct drm_connector *connector; >> - struct drm_connector_state *connector_state; >> unsigned int used_ports = 0; >> - int i; >> >> /* >> * Walk the connector list instead of the encoder >> * list to detect the problem on ddi platforms >> * where there's just one encoder per digital port. >> */ >> - for_each_connector_in_state(state, connector, connector_state, i) { >> + drm_for_each_connector(connector, dev) { >> + struct drm_connector_state *connector_state; >> + struct intel_encoder *encoder; >> + >> + connector_state = drm_atomic_get_existing_connector_state(state, connector); >> + if (!connector_state) >> + connector_state = connector->state; >> + >> if (!connector_state->best_encoder) >> continue; >> >> -- >> 2.4.10 >> >> _______________________________________________ >> Intel-gfx mailing list >> Intel-gfx@lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Jani Nikula, Intel Open Source Technology Center