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=-9.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,USER_AGENT_GIT 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 8623BC43381 for ; Thu, 14 Mar 2019 13:44:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 513B021855 for ; Thu, 14 Mar 2019 13:44:56 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="SgaoRlSm" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727554AbfCNNoy (ORCPT ); Thu, 14 Mar 2019 09:44:54 -0400 Received: from lelv0143.ext.ti.com ([198.47.23.248]:34392 "EHLO lelv0143.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727533AbfCNNox (ORCPT ); Thu, 14 Mar 2019 09:44:53 -0400 Received: from lelv0266.itg.ti.com ([10.180.67.225]) by lelv0143.ext.ti.com (8.15.2/8.15.2) with ESMTP id x2EDik1L009838; Thu, 14 Mar 2019 08:44:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1552571086; bh=mUnbh4cPAtTsD1O1YT5v3Y07KP02RW4u1UVzxYXvt1U=; h=From:To:CC:Subject:Date; b=SgaoRlSm7pEUkP9iJOFA8EsZW4a33UVoDcz30EenILlzYOKZNizYcmJvxoaF5mQYU 6sGeygo/e6vPAm1RQ7pK28dUlcRgVPwJA3VI02iWfW4BEaNheabz1b+hwM9XLtaZGK pQtXFJ4XgFQ1H6uQ8jDcxXU/PrkN3IXO/Wy2G9zw= Received: from DFLE100.ent.ti.com (dfle100.ent.ti.com [10.64.6.21]) by lelv0266.itg.ti.com (8.15.2/8.15.2) with ESMTPS id x2EDikKa054960 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 14 Mar 2019 08:44:46 -0500 Received: from DFLE110.ent.ti.com (10.64.6.31) by DFLE100.ent.ti.com (10.64.6.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1713.5; Thu, 14 Mar 2019 08:44:46 -0500 Received: from dflp32.itg.ti.com (10.64.6.15) by DFLE110.ent.ti.com (10.64.6.31) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1591.10 via Frontend Transport; Thu, 14 Mar 2019 08:44:46 -0500 Received: from uda0869644b.dal.design.ti.com (ileax41-snat.itg.ti.com [10.172.224.153]) by dflp32.itg.ti.com (8.14.3/8.13.8) with ESMTP id x2EDikjX014165; Thu, 14 Mar 2019 08:44:46 -0500 From: Benoit Parrot To: Daniel Vetter , Rob Clark , CC: , Boris Brezillon , Laurent Pinchart , Tomi Valkeinen , Peter Ujfalusi , Jyri Sarha , Benoit Parrot Subject: [Patch 1/1] drm/atomic: integrate private objects with suspend/resume helpers Date: Thu, 14 Mar 2019 08:44:45 -0500 Message-ID: <20190314134445.19260-1-bparrot@ti.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Content-Type: text/plain X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org During a suspend cycle the atomic state is saved to be used during the restore cycle. However the current state duplication logic does not duplicate private objects. This leads to state inconsistencies at resume time. With private objects modeset lock now integrated, we can make sure that private object state are properly saved and restored. Signed-off-by: Benoit Parrot --- drivers/gpu/drm/drm_atomic_helper.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c index 540a77a2ade9..b108021cc092 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -3189,6 +3189,7 @@ drm_atomic_helper_duplicate_state(struct drm_device *dev, struct drm_connector_list_iter conn_iter; struct drm_plane *plane; struct drm_crtc *crtc; + struct drm_private_obj *privobj; int err = 0; state = drm_atomic_state_alloc(dev); @@ -3218,6 +3219,16 @@ drm_atomic_helper_duplicate_state(struct drm_device *dev, } } + drm_for_each_privobj(privobj, dev) { + struct drm_private_state *priv_state; + + priv_state = drm_atomic_get_private_obj_state(state, privobj); + if (IS_ERR(priv_state)) { + err = PTR_ERR(priv_state); + goto free; + } + } + drm_connector_list_iter_begin(dev, &conn_iter); drm_for_each_connector_iter(conn, &conn_iter) { struct drm_connector_state *conn_state; @@ -3325,12 +3336,17 @@ int drm_atomic_helper_commit_duplicated_state(struct drm_atomic_state *state, struct drm_connector_state *new_conn_state; struct drm_crtc *crtc; struct drm_crtc_state *new_crtc_state; + struct drm_private_obj *privobj; + struct drm_private_state *new_priv_state; state->acquire_ctx = ctx; for_each_new_plane_in_state(state, plane, new_plane_state, i) state->planes[i].old_state = plane->state; + for_each_new_private_obj_in_state(state, privobj, new_priv_state, i) + state->private_objs[i].old_state = privobj->state; + for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) state->crtcs[i].old_state = crtc->state; -- 2.17.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benoit Parrot Subject: [Patch 1/1] drm/atomic: integrate private objects with suspend/resume helpers Date: Thu, 14 Mar 2019 08:44:45 -0500 Message-ID: <20190314134445.19260-1-bparrot@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from lelv0143.ext.ti.com (lelv0143.ext.ti.com [198.47.23.248]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7F9226E131 for ; Thu, 14 Mar 2019 13:44:52 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter , Rob Clark , dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org, Jyri Sarha , Peter Ujfalusi , Boris Brezillon , Tomi Valkeinen , Laurent Pinchart List-Id: dri-devel@lists.freedesktop.org RHVyaW5nIGEgc3VzcGVuZCBjeWNsZSB0aGUgYXRvbWljIHN0YXRlIGlzIHNhdmVkIHRvIGJlIHVz ZWQgZHVyaW5nIHRoZQpyZXN0b3JlIGN5Y2xlLgoKSG93ZXZlciB0aGUgY3VycmVudCBzdGF0ZSBk dXBsaWNhdGlvbiBsb2dpYyBkb2VzIG5vdCBkdXBsaWNhdGUgcHJpdmF0ZQpvYmplY3RzLiBUaGlz IGxlYWRzIHRvIHN0YXRlIGluY29uc2lzdGVuY2llcyBhdCByZXN1bWUgdGltZS4KCldpdGggcHJp dmF0ZSBvYmplY3RzIG1vZGVzZXQgbG9jayBub3cgaW50ZWdyYXRlZCwgd2UgY2FuIG1ha2Ugc3Vy ZSB0aGF0CnByaXZhdGUgb2JqZWN0IHN0YXRlIGFyZSBwcm9wZXJseSBzYXZlZCBhbmQgcmVzdG9y ZWQuCgpTaWduZWQtb2ZmLWJ5OiBCZW5vaXQgUGFycm90IDxicGFycm90QHRpLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyB8IDE2ICsrKysrKysrKysrKysrKysK IDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19o ZWxwZXIuYwppbmRleCA1NDBhNzdhMmFkZTkuLmIxMDgwMjFjYzA5MiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWNfaGVscGVyLmMKQEAgLTMxODksNiArMzE4OSw3IEBAIGRybV9hdG9taWNfaGVscGVy X2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXN0cnVjdCBkcm1fY29u bmVjdG9yX2xpc3RfaXRlciBjb25uX2l0ZXI7CiAJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7CiAJ c3RydWN0IGRybV9jcnRjICpjcnRjOworCXN0cnVjdCBkcm1fcHJpdmF0ZV9vYmogKnByaXZvYmo7 CiAJaW50IGVyciA9IDA7CiAKIAlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsK QEAgLTMyMTgsNiArMzIxOSwxNiBAQCBkcm1fYXRvbWljX2hlbHBlcl9kdXBsaWNhdGVfc3RhdGUo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJfQogCX0KIAorCWRybV9mb3JfZWFjaF9wcml2b2Jq KHByaXZvYmosIGRldikgeworCQlzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKnByaXZfc3RhdGU7 CisKKwkJcHJpdl9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X3ByaXZhdGVfb2JqX3N0YXRlKHN0YXRl LCBwcml2b2JqKTsKKwkJaWYgKElTX0VSUihwcml2X3N0YXRlKSkgeworCQkJZXJyID0gUFRSX0VS Uihwcml2X3N0YXRlKTsKKwkJCWdvdG8gZnJlZTsKKwkJfQorCX0KKwogCWRybV9jb25uZWN0b3Jf bGlzdF9pdGVyX2JlZ2luKGRldiwgJmNvbm5faXRlcik7CiAJZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rv cl9pdGVyKGNvbm4sICZjb25uX2l0ZXIpIHsKIAkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg KmNvbm5fc3RhdGU7CkBAIC0zMzI1LDEyICszMzM2LDE3IEBAIGludCBkcm1fYXRvbWljX2hlbHBl cl9jb21taXRfZHVwbGljYXRlZF9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUs CiAJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm5ld19jb25uX3N0YXRlOwogCXN0cnVjdCBk cm1fY3J0YyAqY3J0YzsKIAlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwor CXN0cnVjdCBkcm1fcHJpdmF0ZV9vYmogKnByaXZvYmo7CisJc3RydWN0IGRybV9wcml2YXRlX3N0 YXRlICpuZXdfcHJpdl9zdGF0ZTsKIAogCXN0YXRlLT5hY3F1aXJlX2N0eCA9IGN0eDsKIAogCWZv cl9lYWNoX25ld19wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIG5ld19wbGFuZV9zdGF0ZSwg aSkKIAkJc3RhdGUtPnBsYW5lc1tpXS5vbGRfc3RhdGUgPSBwbGFuZS0+c3RhdGU7CiAKKwlmb3Jf ZWFjaF9uZXdfcHJpdmF0ZV9vYmpfaW5fc3RhdGUoc3RhdGUsIHByaXZvYmosIG5ld19wcml2X3N0 YXRlLCBpKQorCQlzdGF0ZS0+cHJpdmF0ZV9vYmpzW2ldLm9sZF9zdGF0ZSA9IHByaXZvYmotPnN0 YXRlOworCiAJZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG5ld19jcnRj X3N0YXRlLCBpKQogCQlzdGF0ZS0+Y3J0Y3NbaV0ub2xkX3N0YXRlID0gY3J0Yy0+c3RhdGU7CiAK LS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs