From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751648AbdILRRg (ORCPT ); Tue, 12 Sep 2017 13:17:36 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:48390 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751807AbdILQ5O (ORCPT ); Tue, 12 Sep 2017 12:57:14 -0400 From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, David Airlie , Archit Taneja , Wolfram Sang , Lars-Peter Clausen , Laurent Pinchart , dri-devel@lists.freedesktop.org, John Stultz , Thong Ho , Nhan Nguyen Subject: [PATCH 4.4 23/31] drm/bridge: adv7511: Use work_struct to defer hotplug handing to out of irq context Date: Tue, 12 Sep 2017 09:56:18 -0700 Message-Id: <20170912165248.541459149@linuxfoundation.org> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20170912165247.436880944@linuxfoundation.org> References: <20170912165247.436880944@linuxfoundation.org> User-Agent: quilt/0.65 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: John Stultz commit 518cb7057a59b9441336d2e88a396d52b6ab0cce upstream. I was recently seeing issues with EDID probing, where the logic to wait for the EDID read bit to be set by the IRQ wasn't happening and the code would time out and fail. Digging deeper, I found this was due to the fact that IRQs were disabled as we were running in IRQ context from the HPD signal. Thus this patch changes the logic to handle the HPD signal via a work_struct so we can be out of irq context. With this patch, the EDID probing on hotplug does not time out. Cc: David Airlie Cc: Archit Taneja Cc: Wolfram Sang Cc: Lars-Peter Clausen Cc: Laurent Pinchart Cc: dri-devel@lists.freedesktop.org Reviewed-by: Laurent Pinchart Tested-by: Laurent Pinchart Signed-off-by: John Stultz Signed-off-by: Archit Taneja Link: http://patchwork.freedesktop.org/patch/msgid/1484614372-15342-2-git-send-email-john.stultz@linaro.org Signed-off-by: Thong Ho Signed-off-by: Nhan Nguyen Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/i2c/adv7511.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) --- a/drivers/gpu/drm/i2c/adv7511.c +++ b/drivers/gpu/drm/i2c/adv7511.c @@ -36,7 +36,10 @@ struct adv7511 { bool edid_read; wait_queue_head_t wq; + struct work_struct hpd_work; + struct drm_encoder *encoder; + struct drm_connector connector; bool embedded_sync; enum adv7511_sync_polarity vsync_polarity; @@ -429,6 +432,13 @@ static bool adv7511_hpd(struct adv7511 * return false; } +static void adv7511_hpd_work(struct work_struct *work) +{ + struct adv7511 *adv7511 = container_of(work, struct adv7511, hpd_work); + + drm_helper_hpd_irq_event(adv7511->connector.dev); +} + static int adv7511_irq_process(struct adv7511 *adv7511, bool process_hpd) { unsigned int irq0, irq1; @@ -446,7 +456,7 @@ static int adv7511_irq_process(struct ad regmap_write(adv7511->regmap, ADV7511_REG_INT(1), irq1); if (process_hpd && irq0 & ADV7511_INT0_HDP && adv7511->encoder) - drm_helper_hpd_irq_event(adv7511->encoder->dev); + schedule_work(&adv7511->hpd_work); if (irq0 & ADV7511_INT0_EDID_READY || irq1 & ADV7511_INT1_DDC_ERROR) { adv7511->edid_read = true; @@ -922,6 +932,8 @@ static int adv7511_probe(struct i2c_clie if (!adv7511->i2c_edid) return -ENOMEM; + INIT_WORK(&adv7511->hpd_work, adv7511_hpd_work); + if (i2c->irq) { init_waitqueue_head(&adv7511->wq); From mboxrd@z Thu Jan 1 00:00:00 1970 From: Greg Kroah-Hartman Subject: [PATCH 4.4 23/31] drm/bridge: adv7511: Use work_struct to defer hotplug handing to out of irq context Date: Tue, 12 Sep 2017 09:56:18 -0700 Message-ID: <20170912165248.541459149@linuxfoundation.org> References: <20170912165247.436880944@linuxfoundation.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) by gabe.freedesktop.org (Postfix) with ESMTPS id 521F48995F for ; Tue, 12 Sep 2017 16:57:14 +0000 (UTC) In-Reply-To: <20170912165247.436880944@linuxfoundation.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-kernel@vger.kernel.org Cc: Nhan Nguyen , Greg Kroah-Hartman , dri-devel@lists.freedesktop.org, stable@vger.kernel.org, Wolfram Sang , Laurent Pinchart , Thong Ho List-Id: dri-devel@lists.freedesktop.org NC40LXN0YWJsZSByZXZpZXcgcGF0Y2guICBJZiBhbnlvbmUgaGFzIGFueSBvYmplY3Rpb25zLCBw bGVhc2UgbGV0IG1lIGtub3cuCgotLS0tLS0tLS0tLS0tLS0tLS0KCkZyb206IEpvaG4gU3R1bHR6 IDxqb2huLnN0dWx0ekBsaW5hcm8ub3JnPgoKY29tbWl0IDUxOGNiNzA1N2E1OWI5NDQxMzM2ZDJl ODhhMzk2ZDUyYjZhYjBjY2UgdXBzdHJlYW0uCgpJIHdhcyByZWNlbnRseSBzZWVpbmcgaXNzdWVz IHdpdGggRURJRCBwcm9iaW5nLCB3aGVyZQp0aGUgbG9naWMgdG8gd2FpdCBmb3IgdGhlIEVESUQg cmVhZCBiaXQgdG8gYmUgc2V0IGJ5IHRoZQpJUlEgd2Fzbid0IGhhcHBlbmluZyBhbmQgdGhlIGNv ZGUgd291bGQgdGltZSBvdXQgYW5kIGZhaWwuCgpEaWdnaW5nIGRlZXBlciwgSSBmb3VuZCB0aGlz IHdhcyBkdWUgdG8gdGhlIGZhY3QgdGhhdApJUlFzIHdlcmUgZGlzYWJsZWQgYXMgd2Ugd2VyZSBy dW5uaW5nIGluIElSUSBjb250ZXh0IGZyb20KdGhlIEhQRCBzaWduYWwuCgpUaHVzIHRoaXMgcGF0 Y2ggY2hhbmdlcyB0aGUgbG9naWMgdG8gaGFuZGxlIHRoZSBIUEQgc2lnbmFsCnZpYSBhIHdvcmtf c3RydWN0IHNvIHdlIGNhbiBiZSBvdXQgb2YgaXJxIGNvbnRleHQuCgpXaXRoIHRoaXMgcGF0Y2gs IHRoZSBFRElEIHByb2Jpbmcgb24gaG90cGx1ZyBkb2VzIG5vdCB0aW1lCm91dC4KCkNjOiBEYXZp ZCBBaXJsaWUgPGFpcmxpZWRAbGludXguaWU+CkNjOiBBcmNoaXQgVGFuZWphIDxhcmNoaXR0QGNv ZGVhdXJvcmEub3JnPgpDYzogV29sZnJhbSBTYW5nIDx3c2ErcmVuZXNhc0BzYW5nLWVuZ2luZWVy aW5nLmNvbT4KQ2M6IExhcnMtUGV0ZXIgQ2xhdXNlbiA8bGFyc0BtZXRhZm9vLmRlPgpDYzogTGF1 cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgpDYzogZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpSZXZpZXdlZC1ieTogTGF1cmVudCBQaW5jaGFy dCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgpUZXN0ZWQtYnk6IExhdXJlbnQg UGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KU2lnbmVkLW9mZi1i eTogSm9obiBTdHVsdHogPGpvaG4uc3R1bHR6QGxpbmFyby5vcmc+ClNpZ25lZC1vZmYtYnk6IEFy Y2hpdCBUYW5lamEgPGFyY2hpdHRAY29kZWF1cm9yYS5vcmc+Ckxpbms6IGh0dHA6Ly9wYXRjaHdv cmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoL21zZ2lkLzE0ODQ2MTQzNzItMTUzNDItMi1naXQtc2Vu ZC1lbWFpbC1qb2huLnN0dWx0ekBsaW5hcm8ub3JnClNpZ25lZC1vZmYtYnk6IFRob25nIEhvIDx0 aG9uZy5oby5weEBydmMucmVuZXNhcy5jb20+ClNpZ25lZC1vZmYtYnk6IE5oYW4gTmd1eWVuIDxu aGFuLm5ndXllbi55YkByZW5lc2FzLmNvbT4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0 bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KCi0tLQogZHJpdmVycy9ncHUvZHJtL2ky Yy9hZHY3NTExLmMgfCAgIDE0ICsrKysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgMTMgaW5z ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2kyYy9hZHY3 NTExLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2kyYy9hZHY3NTExLmMKQEAgLTM2LDcgKzM2LDEw IEBAIHN0cnVjdCBhZHY3NTExIHsKIAlib29sIGVkaWRfcmVhZDsKIAogCXdhaXRfcXVldWVfaGVh ZF90IHdxOworCXN0cnVjdCB3b3JrX3N0cnVjdCBocGRfd29yazsKKwogCXN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlcjsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7CiAKIAlib29s IGVtYmVkZGVkX3N5bmM7CiAJZW51bSBhZHY3NTExX3N5bmNfcG9sYXJpdHkgdnN5bmNfcG9sYXJp dHk7CkBAIC00MjksNiArNDMyLDEzIEBAIHN0YXRpYyBib29sIGFkdjc1MTFfaHBkKHN0cnVjdCBh ZHY3NTExICoKIAlyZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyB2b2lkIGFkdjc1MTFfaHBkX3dv cmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQoreworCXN0cnVjdCBhZHY3NTExICphZHY3NTEx ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBhZHY3NTExLCBocGRfd29yayk7CisKKwlkcm1f aGVscGVyX2hwZF9pcnFfZXZlbnQoYWR2NzUxMS0+Y29ubmVjdG9yLmRldik7Cit9CisKIHN0YXRp YyBpbnQgYWR2NzUxMV9pcnFfcHJvY2VzcyhzdHJ1Y3QgYWR2NzUxMSAqYWR2NzUxMSwgYm9vbCBw cm9jZXNzX2hwZCkKIHsKIAl1bnNpZ25lZCBpbnQgaXJxMCwgaXJxMTsKQEAgLTQ0Niw3ICs0NTYs NyBAQCBzdGF0aWMgaW50IGFkdjc1MTFfaXJxX3Byb2Nlc3Moc3RydWN0IGFkCiAJcmVnbWFwX3dy aXRlKGFkdjc1MTEtPnJlZ21hcCwgQURWNzUxMV9SRUdfSU5UKDEpLCBpcnExKTsKIAogCWlmIChw cm9jZXNzX2hwZCAmJiBpcnEwICYgQURWNzUxMV9JTlQwX0hEUCAmJiBhZHY3NTExLT5lbmNvZGVy KQotCQlkcm1faGVscGVyX2hwZF9pcnFfZXZlbnQoYWR2NzUxMS0+ZW5jb2Rlci0+ZGV2KTsKKwkJ c2NoZWR1bGVfd29yaygmYWR2NzUxMS0+aHBkX3dvcmspOwogCiAJaWYgKGlycTAgJiBBRFY3NTEx X0lOVDBfRURJRF9SRUFEWSB8fCBpcnExICYgQURWNzUxMV9JTlQxX0REQ19FUlJPUikgewogCQlh ZHY3NTExLT5lZGlkX3JlYWQgPSB0cnVlOwpAQCAtOTIyLDYgKzkzMiw4IEBAIHN0YXRpYyBpbnQg YWR2NzUxMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWUKIAlpZiAoIWFkdjc1MTEtPmkyY19lZGlkKQog CQlyZXR1cm4gLUVOT01FTTsKIAorCUlOSVRfV09SSygmYWR2NzUxMS0+aHBkX3dvcmssIGFkdjc1 MTFfaHBkX3dvcmspOworCiAJaWYgKGkyYy0+aXJxKSB7CiAJCWluaXRfd2FpdHF1ZXVlX2hlYWQo JmFkdjc1MTEtPndxKTsKIAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAo=