From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7E57BC43142 for ; Tue, 31 Jul 2018 00:40:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3CD33208A3 for ; Tue, 31 Jul 2018 00:40:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3CD33208A3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732334AbeGaCSE (ORCPT ); Mon, 30 Jul 2018 22:18:04 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:37236 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1732039AbeGaCRj (ORCPT ); Mon, 30 Jul 2018 22:17:39 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 93D6A40241CC; Tue, 31 Jul 2018 00:40:05 +0000 (UTC) Received: from malachite.bss.redhat.com (dhcp-10-20-1-11.bss.redhat.com [10.20.1.11]) by smtp.corp.redhat.com (Postfix) with ESMTP id 445DD16875; Tue, 31 Jul 2018 00:40:05 +0000 (UTC) From: Lyude Paul To: nouveau@lists.freedesktop.org Cc: stable@vger.kernel.org, Lukas Wunner , Karol Herbst , Ben Skeggs , David Airlie , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 5/8] drm/nouveau: Use pm_runtime_get_noresume() in connector_detect() Date: Mon, 30 Jul 2018 20:39:50 -0400 Message-Id: <20180731003954.19962-6-lyude@redhat.com> In-Reply-To: <20180731003954.19962-1-lyude@redhat.com> References: <20180731003954.19962-1-lyude@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.7]); Tue, 31 Jul 2018 00:40:05 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.7]); Tue, 31 Jul 2018 00:40:05 +0000 (UTC) for IP:'10.11.54.5' DOMAIN:'int-mx05.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'lyude@redhat.com' RCPT:'' Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org It's true we can't resume the device from poll workers in nouveau_connector_detect(). We can however, prevent the autosuspend timer from elapsing immediately if it hasn't already without risking any sort of deadlock with the runtime suspend/resume operations. So do that instead of entirely avoiding grabbing a power reference. Signed-off-by: Lyude Paul Cc: stable@vger.kernel.org Cc: Lukas Wunner Cc: Karol Herbst --- drivers/gpu/drm/nouveau/nouveau_connector.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c index 2a45b4c2ceb0..010d6db14cba 100644 --- a/drivers/gpu/drm/nouveau/nouveau_connector.c +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c @@ -572,12 +572,16 @@ nouveau_connector_detect(struct drm_connector *connector, bool force) nv_connector->edid = NULL; } - /* Outputs are only polled while runtime active, so acquiring a - * runtime PM ref here is unnecessary (and would deadlock upon - * runtime suspend because it waits for polling to finish). + /* Outputs are only polled while runtime active, so resuming the + * device here is unnecessary (and would deadlock upon runtime suspend + * because it waits for polling to finish). We do however, want to + * prevent the autosuspend timer from elapsing during this operation + * if possible. */ - if (!drm_kms_helper_is_poll_worker()) { - ret = pm_runtime_get_sync(connector->dev->dev); + if (drm_kms_helper_is_poll_worker()) { + pm_runtime_get_noresume(dev->dev); + } else { + ret = pm_runtime_get_sync(dev->dev); if (ret < 0 && ret != -EACCES) return conn_status; } @@ -655,10 +659,8 @@ nouveau_connector_detect(struct drm_connector *connector, bool force) out: - if (!drm_kms_helper_is_poll_worker()) { - pm_runtime_mark_last_busy(connector->dev->dev); - pm_runtime_put_autosuspend(connector->dev->dev); - } + pm_runtime_mark_last_busy(dev->dev); + pm_runtime_put_autosuspend(dev->dev); return conn_status; } -- 2.17.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: [PATCH v3 5/8] drm/nouveau: Use pm_runtime_get_noresume() in connector_detect() Date: Mon, 30 Jul 2018 20:39:50 -0400 Message-ID: <20180731003954.19962-6-lyude@redhat.com> References: <20180731003954.19962-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180731003954.19962-1-lyude-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: David Airlie , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Ben Skeggs List-Id: nouveau.vger.kernel.org SXQncyB0cnVlIHdlIGNhbid0IHJlc3VtZSB0aGUgZGV2aWNlIGZyb20gcG9sbCB3b3JrZXJzIGlu Cm5vdXZlYXVfY29ubmVjdG9yX2RldGVjdCgpLiBXZSBjYW4gaG93ZXZlciwgcHJldmVudCB0aGUg YXV0b3N1c3BlbmQKdGltZXIgZnJvbSBlbGFwc2luZyBpbW1lZGlhdGVseSBpZiBpdCBoYXNuJ3Qg YWxyZWFkeSB3aXRob3V0IHJpc2tpbmcgYW55CnNvcnQgb2YgZGVhZGxvY2sgd2l0aCB0aGUgcnVu dGltZSBzdXNwZW5kL3Jlc3VtZSBvcGVyYXRpb25zLiBTbyBkbyB0aGF0Cmluc3RlYWQgb2YgZW50 aXJlbHkgYXZvaWRpbmcgZ3JhYmJpbmcgYSBwb3dlciByZWZlcmVuY2UuCgpTaWduZWQtb2ZmLWJ5 OiBMeXVkZSBQYXVsIDxseXVkZUByZWRoYXQuY29tPgpDYzogc3RhYmxlQHZnZXIua2VybmVsLm9y ZwpDYzogTHVrYXMgV3VubmVyIDxsdWthc0B3dW5uZXIuZGU+CkNjOiBLYXJvbCBIZXJic3QgPGth cm9saGVyYnN0QGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1 X2Nvbm5lY3Rvci5jIHwgMjAgKysrKysrKysrKystLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAx MSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9ub3V2ZWF1L25vdXZlYXVfY29ubmVjdG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVh dS9ub3V2ZWF1X2Nvbm5lY3Rvci5jCmluZGV4IDJhNDViNGMyY2ViMC4uMDEwZDZkYjE0Y2JhIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2Nvbm5lY3Rvci5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfY29ubmVjdG9yLmMKQEAgLTU3Miwx MiArNTcyLDE2IEBAIG5vdXZlYXVfY29ubmVjdG9yX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQogCQludl9jb25uZWN0b3ItPmVkaWQgPSBOVUxMOwog CX0KIAotCS8qIE91dHB1dHMgYXJlIG9ubHkgcG9sbGVkIHdoaWxlIHJ1bnRpbWUgYWN0aXZlLCBz byBhY3F1aXJpbmcgYQotCSAqIHJ1bnRpbWUgUE0gcmVmIGhlcmUgaXMgdW5uZWNlc3NhcnkgKGFu ZCB3b3VsZCBkZWFkbG9jayB1cG9uCi0JICogcnVudGltZSBzdXNwZW5kIGJlY2F1c2UgaXQgd2Fp dHMgZm9yIHBvbGxpbmcgdG8gZmluaXNoKS4KKwkvKiBPdXRwdXRzIGFyZSBvbmx5IHBvbGxlZCB3 aGlsZSBydW50aW1lIGFjdGl2ZSwgc28gcmVzdW1pbmcgdGhlCisJICogZGV2aWNlIGhlcmUgaXMg dW5uZWNlc3NhcnkgKGFuZCB3b3VsZCBkZWFkbG9jayB1cG9uIHJ1bnRpbWUgc3VzcGVuZAorCSAq IGJlY2F1c2UgaXQgd2FpdHMgZm9yIHBvbGxpbmcgdG8gZmluaXNoKS4gV2UgZG8gaG93ZXZlciwg d2FudCB0bworCSAqIHByZXZlbnQgdGhlIGF1dG9zdXNwZW5kIHRpbWVyIGZyb20gZWxhcHNpbmcg ZHVyaW5nIHRoaXMgb3BlcmF0aW9uCisJICogaWYgcG9zc2libGUuCiAJICovCi0JaWYgKCFkcm1f a21zX2hlbHBlcl9pc19wb2xsX3dvcmtlcigpKSB7Ci0JCXJldCA9IHBtX3J1bnRpbWVfZ2V0X3N5 bmMoY29ubmVjdG9yLT5kZXYtPmRldik7CisJaWYgKGRybV9rbXNfaGVscGVyX2lzX3BvbGxfd29y a2VyKCkpIHsKKwkJcG1fcnVudGltZV9nZXRfbm9yZXN1bWUoZGV2LT5kZXYpOworCX0gZWxzZSB7 CisJCXJldCA9IHBtX3J1bnRpbWVfZ2V0X3N5bmMoZGV2LT5kZXYpOwogCQlpZiAocmV0IDwgMCAm JiByZXQgIT0gLUVBQ0NFUykKIAkJCXJldHVybiBjb25uX3N0YXR1czsKIAl9CkBAIC02NTUsMTAg KzY1OSw4IEBAIG5vdXZlYXVfY29ubmVjdG9yX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLCBib29sIGZvcmNlKQogCiAgb3V0OgogCi0JaWYgKCFkcm1fa21zX2hlbHBlcl9p c19wb2xsX3dvcmtlcigpKSB7Ci0JCXBtX3J1bnRpbWVfbWFya19sYXN0X2J1c3koY29ubmVjdG9y LT5kZXYtPmRldik7Ci0JCXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKGNvbm5lY3Rvci0+ZGV2 LT5kZXYpOwotCX0KKwlwbV9ydW50aW1lX21hcmtfbGFzdF9idXN5KGRldi0+ZGV2KTsKKwlwbV9y dW50aW1lX3B1dF9hdXRvc3VzcGVuZChkZXYtPmRldik7CiAKIAlyZXR1cm4gY29ubl9zdGF0dXM7 CiB9Ci0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCk5vdXZlYXUgbWFpbGluZyBsaXN0Ck5vdXZlYXVAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vbm91dmVhdQo=