From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qt1-f195.google.com ([209.85.160.195]:42677 "EHLO mail-qt1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725873AbeK3GNG (ORCPT ); Fri, 30 Nov 2018 01:13:06 -0500 Received: by mail-qt1-f195.google.com with SMTP id d19so3213967qtq.9 for ; Thu, 29 Nov 2018 11:06:40 -0800 (PST) Message-ID: Subject: Re: [PATCH v3] Return only active connectors for get_resources ioctl From: Lyude Paul To: Stanislav Lisovskiy , dri-devel@lists.freedesktop.org Cc: martin.peres@intel.com, ville.syrjala@intel.com, chris@chris-wilson.co.uk, stable@vger.kernel.org, intel-gfx@lists.freedesktop.org, daniel@ffwll.ch Date: Thu, 29 Nov 2018 14:06:38 -0500 In-Reply-To: <20181129110921.5832-1-stanislav.lisovskiy@intel.com> References: <20181129110921.5832-1-stanislav.lisovskiy@intel.com> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: stable-owner@vger.kernel.org List-ID: On Thu, 2018-11-29 at 13:09 +0200, Stanislav Lisovskiy wrote: > Currently kernel might allocate different connector ids > for the same outputs in case of DP MST, which seems to > confuse userspace. There are can be different connector > ids in the list, which could be assigned to the same > output, while being in different states. > This results in issues, like external displays staying > blank after quick unplugging and plugging back(bug #106250). > Returning only active DP connectors fixes the issue. > > v2: Removed caps from the title > > v3: Refactored initial condition to look more compact. > Thanks to Chris Wilson for giving a hint. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106250 > Signed-off-by: Stanislav Lisovskiy > --- > drivers/gpu/drm/drm_mode_config.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/gpu/drm/drm_mode_config.c > b/drivers/gpu/drm/drm_mode_config.c > index ee80788f2c40..3e2cd959a66a 100644 > --- a/drivers/gpu/drm/drm_mode_config.c > +++ b/drivers/gpu/drm/drm_mode_config.c > @@ -143,22 +143,28 @@ int drm_mode_getresources(struct drm_device *dev, void > *data, > drm_connector_list_iter_begin(dev, &conn_iter); > count = 0; > connector_id = u64_to_user_ptr(card_res->connector_id_ptr); > + DRM_DEBUG_KMS("GetResources: writing connectors start"); > drm_for_each_connector_iter(connector, &conn_iter) { > /* only expose writeback connectors if userspace understands > them */ > if (!file_priv->writeback_connectors && > (connector->connector_type == > DRM_MODE_CONNECTOR_WRITEBACK)) > continue; > > + if (READ_ONCE(connector->registration_state) != > DRM_CONNECTOR_REGISTERED) > + continue; > + This conditional should just use drm_connector_is_unregistered() instead I'm fairly sure. > if (drm_lease_held(file_priv, connector->base.id)) { > if (count < card_res->count_connectors && > put_user(connector->base.id, connector_id + > count)) { > drm_connector_list_iter_end(&conn_iter); > return -EFAULT; > } > + DRM_DEBUG_KMS("GetResources: connector %s", connector- > >name); > count++; > } > } > card_res->count_connectors = count; > + DRM_DEBUG_KMS("GetResources: writing connectors end - count %d", > count); > drm_connector_list_iter_end(&conn_iter); > > return ret; -- Cheers, Lyude Paul From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: Re: [PATCH v3] Return only active connectors for get_resources ioctl Date: Thu, 29 Nov 2018 14:06:38 -0500 Message-ID: References: <20181129110921.5832-1-stanislav.lisovskiy@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181129110921.5832-1-stanislav.lisovskiy@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Stanislav Lisovskiy , dri-devel@lists.freedesktop.org Cc: ville.syrjala@intel.com, intel-gfx@lists.freedesktop.org, martin.peres@intel.com, stable@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCAyMDE4LTExLTI5IGF0IDEzOjA5ICswMjAwLCBTdGFuaXNsYXYgTGlzb3Zza2l5IHdy b3RlOgo+IEN1cnJlbnRseSBrZXJuZWwgbWlnaHQgYWxsb2NhdGUgZGlmZmVyZW50IGNvbm5lY3Rv ciBpZHMKPiBmb3IgdGhlIHNhbWUgb3V0cHV0cyBpbiBjYXNlIG9mIERQIE1TVCwgd2hpY2ggc2Vl bXMgdG8KPiBjb25mdXNlIHVzZXJzcGFjZS4gVGhlcmUgYXJlIGNhbiBiZSBkaWZmZXJlbnQgY29u bmVjdG9yCj4gaWRzIGluIHRoZSBsaXN0LCB3aGljaCBjb3VsZCBiZSBhc3NpZ25lZCB0byB0aGUg c2FtZQo+IG91dHB1dCwgd2hpbGUgYmVpbmcgaW4gZGlmZmVyZW50IHN0YXRlcy4KPiBUaGlzIHJl c3VsdHMgaW4gaXNzdWVzLCBsaWtlIGV4dGVybmFsIGRpc3BsYXlzIHN0YXlpbmcKPiBibGFuayBh ZnRlciBxdWljayB1bnBsdWdnaW5nIGFuZCBwbHVnZ2luZyBiYWNrKGJ1ZyAjMTA2MjUwKS4KPiBS ZXR1cm5pbmcgb25seSBhY3RpdmUgRFAgY29ubmVjdG9ycyBmaXhlcyB0aGUgaXNzdWUuCj4gCj4g djI6IFJlbW92ZWQgY2FwcyBmcm9tIHRoZSB0aXRsZQo+IAo+IHYzOiBSZWZhY3RvcmVkIGluaXRp YWwgY29uZGl0aW9uIHRvIGxvb2sgbW9yZSBjb21wYWN0Lgo+ICAgICBUaGFua3MgdG8gQ2hyaXMg V2lsc29uIGZvciBnaXZpbmcgYSBoaW50Lgo+IAo+IEJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJl ZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyNTAKPiBTaWduZWQtb2ZmLWJ5OiBTdGFu aXNsYXYgTGlzb3Zza2l5IDxzdGFuaXNsYXYubGlzb3Zza2l5QGludGVsLmNvbT4KPiAtLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2RybV9tb2RlX2NvbmZpZy5jIHwgNiArKysrKysKPiAgMSBmaWxlIGNo YW5nZWQsIDYgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX21vZGVfY29uZmlnLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZV9jb25maWcuYwo+ IGluZGV4IGVlODA3ODhmMmM0MC4uM2UyY2Q5NTlhNjZhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fbW9kZV9jb25maWcuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW9k ZV9jb25maWcuYwo+IEBAIC0xNDMsMjIgKzE0MywyOCBAQCBpbnQgZHJtX21vZGVfZ2V0cmVzb3Vy Y2VzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQKPiAqZGF0YSwKPiAgCWRybV9jb25uZWN0 b3JfbGlzdF9pdGVyX2JlZ2luKGRldiwgJmNvbm5faXRlcik7Cj4gIAljb3VudCA9IDA7Cj4gIAlj b25uZWN0b3JfaWQgPSB1NjRfdG9fdXNlcl9wdHIoY2FyZF9yZXMtPmNvbm5lY3Rvcl9pZF9wdHIp Owo+ICsJRFJNX0RFQlVHX0tNUygiR2V0UmVzb3VyY2VzOiB3cml0aW5nIGNvbm5lY3RvcnMgc3Rh cnQiKTsKPiAgCWRybV9mb3JfZWFjaF9jb25uZWN0b3JfaXRlcihjb25uZWN0b3IsICZjb25uX2l0 ZXIpIHsKPiAgCQkvKiBvbmx5IGV4cG9zZSB3cml0ZWJhY2sgY29ubmVjdG9ycyBpZiB1c2Vyc3Bh Y2UgdW5kZXJzdGFuZHMKPiB0aGVtICovCj4gIAkJaWYgKCFmaWxlX3ByaXYtPndyaXRlYmFja19j b25uZWN0b3JzICYmCj4gIAkJICAgIChjb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlID09Cj4gRFJN X01PREVfQ09OTkVDVE9SX1dSSVRFQkFDSykpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiArCQlpZiAo UkVBRF9PTkNFKGNvbm5lY3Rvci0+cmVnaXN0cmF0aW9uX3N0YXRlKSAhPQo+IERSTV9DT05ORUNU T1JfUkVHSVNURVJFRCkKPiArCQkJY29udGludWU7Cj4gKwpUaGlzIGNvbmRpdGlvbmFsIHNob3Vs ZCBqdXN0IHVzZSBkcm1fY29ubmVjdG9yX2lzX3VucmVnaXN0ZXJlZCgpIGluc3RlYWQgSSdtCmZh aXJseSBzdXJlLgoKPiAgCQlpZiAoZHJtX2xlYXNlX2hlbGQoZmlsZV9wcml2LCBjb25uZWN0b3It PmJhc2UuaWQpKSB7Cj4gIAkJCWlmIChjb3VudCA8IGNhcmRfcmVzLT5jb3VudF9jb25uZWN0b3Jz ICYmCj4gIAkJCSAgICBwdXRfdXNlcihjb25uZWN0b3ItPmJhc2UuaWQsIGNvbm5lY3Rvcl9pZCAr Cj4gY291bnQpKSB7Cj4gIAkJCQlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9lbmQoJmNvbm5faXRl cik7Cj4gIAkJCQlyZXR1cm4gLUVGQVVMVDsKPiAgCQkJfQo+ICsJCQlEUk1fREVCVUdfS01TKCJH ZXRSZXNvdXJjZXM6IGNvbm5lY3RvciAlcyIsIGNvbm5lY3Rvci0KPiA+bmFtZSk7Cj4gIAkJCWNv dW50Kys7Cj4gIAkJfQo+ICAJfQo+ICAJY2FyZF9yZXMtPmNvdW50X2Nvbm5lY3RvcnMgPSBjb3Vu dDsKPiArCURSTV9ERUJVR19LTVMoIkdldFJlc291cmNlczogd3JpdGluZyBjb25uZWN0b3JzIGVu ZCAtIGNvdW50ICVkIiwKPiBjb3VudCk7Cj4gIAlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9lbmQo JmNvbm5faXRlcik7Cj4gIAo+ICAJcmV0dXJuIHJldDsKLS0gCkNoZWVycywKCUx5dWRlIFBhdWwK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=