From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v2] drm: drm_probe_helper: Fix output_poll_work scheduling Date: Mon, 19 Dec 2016 11:54:05 +0200 Message-ID: <871sx4nt1e.fsf@intel.com> References: <20160831110905.31289-1-peter.ujfalusi@ti.com> <20160831112317.GC20761@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id E2CAF6E568 for ; Mon, 19 Dec 2016 09:54:08 +0000 (UTC) In-Reply-To: <20160831112317.GC20761@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter , Peter Ujfalusi Cc: daniel.vetter@ffwll.ch, tomi.valkeinen@ti.com, "Tahvanainen, Jari" , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCAzMSBBdWcgMjAxNiwgRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPiB3cm90 ZToKPiBPbiBXZWQsIEF1ZyAzMSwgMjAxNiBhdCAwMjowOTowNVBNICswMzAwLCBQZXRlciBVamZh bHVzaSB3cm90ZToKPj4gZHJtX2ttc19oZWxwZXJfcG9sbF9lbmFibGVfbG9ja2VkKCkgc2hvdWxk IGNoZWNrIGlmIHdlIGhhdmUgZGVsYXllZCBldmVudAo+PiBwZW5kaW5nIGFuZCBpZiB3ZSBoYXZl LCBzY2hlZHVsZSB0aGUgd29yayB0byBydW4gd2l0aG91dCBkZWxheS4KPj4gCj4+IEN1cnJlbnRs eSB0aGUgb3V0cHV0X3BvbGxfd29yayBpcyBvbmx5IHNjaGVkdWxlZCBpZiBhbnkgb2YgdGhlIGNv bm5lY3RvcnMKPj4gaGF2ZSBEUk1fQ09OTkVDVE9SX1BPTExfQ09OTkVDVCBvciBEUk1fQ09OTkVD VE9SX1BPTExfRElTQ09OTkVDVCB3aXRoCj4+IERSTV9PVVRQVVRfUE9MTF9QRVJJT0QgZGVsYXku IEl0IGRvZXMgbm90IG1hdHRlciBpZiB3ZSBoYXZlIGRlbGF5ZWQgZXZlbnQKPj4gYWxyZWFkeSBy ZWdpc3RlcmVkIHRvIGJlIGhhbmRsZWQuIFRoZSBkZXRlY3Rpb24gd2lsbCBiZSBkZWxheWQgYnkK Pj4gRFJNX09VVFBVVF9QT0xMX1BFUklPRCBpbiBhbnkgY2FzZS4KPj4gRnVydGhlcm1vcmUgaWYg bm9uZSBvZiB0aGUgY29ubmVjdG9ycyBhcmUgbWFya2VkIGFzIFBPTExfQ09OTkVDVCBvcgo+PiBQ T0xMX0RJU0NPTk5FQ1QgYmVjYXVzZSBhbGwgY29ubmVjdG9ycyBhcmUgZWl0aGVyIFBPTExfSFBE IG9yIHRoZXkgYXJlCj4+IGFsd2F5cyBjb25uZWN0ZWQ6IHRoZSBvdXRwdXRfcG9sbF93b3JrIHdp bGwgbm90IHJ1biBhdCBhbGwgZXZlbiBpZiB3ZQo+PiBoYXZlIGRlbGF5ZWQgZXZlbnQgbWFya2Vk Lgo+PiAKPj4gV2hlbiBub25lIG9mIHRoZSBjb25uZWN0b3JzIHJlcXVpcmUgcG9sbGluZywgdGhl aXIgaW5pdGlhbCBzdGF0dXMgY2hhbmdlCj4+IGZyb20gdW5rbm93biB0byBjb25uZWN0ZWQvZGlz Y29ubmVjdGVkIGlzIG5vdCBnb2luZyB0byBiZSBoYW5kbGVkIHVudGlsCj4+IHRoZSBmaXJzdCBr bXMgYXBwbGljYXRpb24gc3RhcnRzIG9yIGlmIHdlIGhhdmUgZmIgY29uc29sZSBlbmFibGVkLgo+ PiAKPj4gU2lnbmVkLW9mZi1ieTogUGV0ZXIgVWpmYWx1c2kgPHBldGVyLnVqZmFsdXNpQHRpLmNv bT4KPj4gLS0tCj4+IEhpLAo+PiAKPj4gQ2hhbmdlcyBzaW5jZSB2MToKPj4gLSBkcm9wcGVkIHRo ZSBsYXN0IHBhcmFncmFwaCBmcm9tIHRoZSBjb21taXQgbWVzc2FnZS4KPgo+IEkgYWRkZWQgYSBm ZXcgbW9yZSB3b3JkcyB0byB0aGUgY29tbWl0IG1lc3NhZ2UgdG8gZXhwbGFpbiB3aGVuIGV4YWN0 bHkKPiB0aGlzIGlzIGEgcHJvYmxlbSBhbmQgYXBwbGllZCB5b3VyIHBhdGNoIHRvIGRybS1taXNj LgoKSGkgUGV0ZXIsIHNhZGx5IGxvb2tzIGxpa2UgdGhpcyByZWdyZXNzZXMgdXNlcnMgb3V0IHRo ZXJlIFsxXS4gU2VlbXMgdG8KYmUgYSByZWxpYWJsZSBiaXNlY3QuIFdlIG5lZWQgdG8gaGF2ZSB0 aGlzIGZpeGVkIG9yIHJldmVydGVkLgoKQlIsCkphbmkuCgoKWzFdIGh0dHBzOi8vYnVncy5mcmVl ZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NjkwCgoKCj4KPiBUaGFua3MsIERhbmllbAo+ PiAKPj4gUmVnYXJkcywKPj4gUGV0ZXIKPj4gCj4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX3Byb2Jl X2hlbHBlci5jIHwgOCArKysrKysrLQo+PiAgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQo+PiAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f cHJvYmVfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Byb2JlX2hlbHBlci5jCj4+IGlu ZGV4IGEwZGYzNzdkN2QxYy4uZjZiNjRkN2QzNTI4IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vZHJtX3Byb2JlX2hlbHBlci5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJv YmVfaGVscGVyLmMKPj4gQEAgLTEyOSw2ICsxMjksNyBAQCB2b2lkIGRybV9rbXNfaGVscGVyX3Bv bGxfZW5hYmxlX2xvY2tlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgewo+PiAgCWJvb2wg cG9sbCA9IGZhbHNlOwo+PiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4+ICsJ dW5zaWduZWQgbG9uZyBkZWxheSA9IERSTV9PVVRQVVRfUE9MTF9QRVJJT0Q7Cj4+IAo+PiAgCVdB Uk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCkpOwo+PiAKPj4g QEAgLTE0MSw4ICsxNDIsMTMgQEAgdm9pZCBkcm1fa21zX2hlbHBlcl9wb2xsX2VuYWJsZV9sb2Nr ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gIAkJCXBvbGwgPSB0cnVlOwo+PiAgCX0KPj4g Cj4+ICsJaWYgKGRldi0+bW9kZV9jb25maWcuZGVsYXllZF9ldmVudCkgewo+PiArCQlwb2xsID0g dHJ1ZTsKPj4gKwkJZGVsYXkgPSAwOwo+PiArCX0KPj4gKwo+PiAgCWlmIChwb2xsKQo+PiAtCQlz Y2hlZHVsZV9kZWxheWVkX3dvcmsoJmRldi0+bW9kZV9jb25maWcub3V0cHV0X3BvbGxfd29yaywg RFJNX09VVFBVVF9QT0xMX1BFUklPRCk7Cj4+ICsJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmZGV2 LT5tb2RlX2NvbmZpZy5vdXRwdXRfcG9sbF93b3JrLCBkZWxheSk7Cj4+ICB9Cj4+ICBFWFBPUlRf U1lNQk9MKGRybV9rbXNfaGVscGVyX3BvbGxfZW5hYmxlX2xvY2tlZCk7Cj4+IAo+PiAtLQo+PiAy LjkuMwo+PiAKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBD ZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758705AbcLSJyT (ORCPT ); Mon, 19 Dec 2016 04:54:19 -0500 Received: from mga07.intel.com ([134.134.136.100]:19000 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758589AbcLSJyJ (ORCPT ); Mon, 19 Dec 2016 04:54:09 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,372,1477983600"; d="scan'208";a="799929844" From: Jani Nikula To: Daniel Vetter , Peter Ujfalusi Cc: daniel.vetter@ffwll.ch, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, tomi.valkeinen@ti.com, "Tahvanainen\, Jari" Subject: Re: [PATCH v2] drm: drm_probe_helper: Fix output_poll_work scheduling In-Reply-To: <20160831112317.GC20761@phenom.ffwll.local> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <20160831110905.31289-1-peter.ujfalusi@ti.com> <20160831112317.GC20761@phenom.ffwll.local> Date: Mon, 19 Dec 2016 11:54:05 +0200 Message-ID: <871sx4nt1e.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 31 Aug 2016, Daniel Vetter wrote: > On Wed, Aug 31, 2016 at 02:09:05PM +0300, Peter Ujfalusi wrote: >> drm_kms_helper_poll_enable_locked() should check if we have delayed event >> pending and if we have, schedule the work to run without delay. >> >> Currently the output_poll_work is only scheduled if any of the connectors >> have DRM_CONNECTOR_POLL_CONNECT or DRM_CONNECTOR_POLL_DISCONNECT with >> DRM_OUTPUT_POLL_PERIOD delay. It does not matter if we have delayed event >> already registered to be handled. The detection will be delayd by >> DRM_OUTPUT_POLL_PERIOD in any case. >> Furthermore if none of the connectors are marked as POLL_CONNECT or >> POLL_DISCONNECT because all connectors are either POLL_HPD or they are >> always connected: the output_poll_work will not run at all even if we >> have delayed event marked. >> >> When none of the connectors require polling, their initial status change >> from unknown to connected/disconnected is not going to be handled until >> the first kms application starts or if we have fb console enabled. >> >> Signed-off-by: Peter Ujfalusi >> --- >> Hi, >> >> Changes since v1: >> - dropped the last paragraph from the commit message. > > I added a few more words to the commit message to explain when exactly > this is a problem and applied your patch to drm-misc. Hi Peter, sadly looks like this regresses users out there [1]. Seems to be a reliable bisect. We need to have this fixed or reverted. BR, Jani. [1] https://bugs.freedesktop.org/show_bug.cgi?id=98690 > > Thanks, Daniel >> >> Regards, >> Peter >> >> drivers/gpu/drm/drm_probe_helper.c | 8 +++++++- >> 1 file changed, 7 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c >> index a0df377d7d1c..f6b64d7d3528 100644 >> --- a/drivers/gpu/drm/drm_probe_helper.c >> +++ b/drivers/gpu/drm/drm_probe_helper.c >> @@ -129,6 +129,7 @@ void drm_kms_helper_poll_enable_locked(struct drm_device *dev) >> { >> bool poll = false; >> struct drm_connector *connector; >> + unsigned long delay = DRM_OUTPUT_POLL_PERIOD; >> >> WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); >> >> @@ -141,8 +142,13 @@ void drm_kms_helper_poll_enable_locked(struct drm_device *dev) >> poll = true; >> } >> >> + if (dev->mode_config.delayed_event) { >> + poll = true; >> + delay = 0; >> + } >> + >> if (poll) >> - schedule_delayed_work(&dev->mode_config.output_poll_work, DRM_OUTPUT_POLL_PERIOD); >> + schedule_delayed_work(&dev->mode_config.output_poll_work, delay); >> } >> EXPORT_SYMBOL(drm_kms_helper_poll_enable_locked); >> >> -- >> 2.9.3 >> -- Jani Nikula, Intel Open Source Technology Center