From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [Patch 1/1] drm/atomic: integrate private objects with suspend/resume helpers Date: Mon, 25 Mar 2019 10:06:41 +0100 Message-ID: <20190325090641.GF2665@phenom.ffwll.local> References: <20190314134445.19260-1-bparrot@ti.com> <20190315105057.GU2665@phenom.ffwll.local> <20190315115607.v4avbfbp3hyytsl6@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id 28D936E6B1 for ; Mon, 25 Mar 2019 09:06:45 +0000 (UTC) Received: by mail-ed1-x543.google.com with SMTP id m16so6772113edd.12 for ; Mon, 25 Mar 2019 02:06:45 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20190315115607.v4avbfbp3hyytsl6@ti.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Benoit Parrot Cc: Jyri Sarha , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Peter Ujfalusi , Boris Brezillon , Tomi Valkeinen , Laurent Pinchart List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBNYXIgMTUsIDIwMTkgYXQgMDY6NTY6MDdBTSAtMDUwMCwgQmVub2l0IFBhcnJvdCB3 cm90ZToKPiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+IHdyb3RlIG9uIEZyaSBbMjAx OS1NYXItMTUgMTE6NTA6NTcgKzAxMDBdOgo+ID4gT24gVGh1LCBNYXIgMTQsIDIwMTkgYXQgMDg6 NDQ6NDVBTSAtMDUwMCwgQmVub2l0IFBhcnJvdCB3cm90ZToKPiA+ID4gRHVyaW5nIGEgc3VzcGVu ZCBjeWNsZSB0aGUgYXRvbWljIHN0YXRlIGlzIHNhdmVkIHRvIGJlIHVzZWQgZHVyaW5nIHRoZQo+ ID4gPiByZXN0b3JlIGN5Y2xlLgo+ID4gPiAKPiA+ID4gSG93ZXZlciB0aGUgY3VycmVudCBzdGF0 ZSBkdXBsaWNhdGlvbiBsb2dpYyBkb2VzIG5vdCBkdXBsaWNhdGUgcHJpdmF0ZQo+ID4gPiBvYmpl Y3RzLiBUaGlzIGxlYWRzIHRvIHN0YXRlIGluY29uc2lzdGVuY2llcyBhdCByZXN1bWUgdGltZS4K PiA+ID4gCj4gPiA+IFdpdGggcHJpdmF0ZSBvYmplY3RzIG1vZGVzZXQgbG9jayBub3cgaW50ZWdy YXRlZCwgd2UgY2FuIG1ha2Ugc3VyZSB0aGF0Cj4gPiA+IHByaXZhdGUgb2JqZWN0IHN0YXRlIGFy ZSBwcm9wZXJseSBzYXZlZCBhbmQgcmVzdG9yZWQuCj4gPiA+IAo+ID4gPiBTaWduZWQtb2ZmLWJ5 OiBCZW5vaXQgUGFycm90IDxicGFycm90QHRpLmNvbT4KPiA+IAo+ID4gV2h5IGRvIHlvdSBuZWVk IHRoaXM/IFdlJ3JlIGRvaW5nIGEgZnVsbCBhdG9taWNfY2hlY2ssIGFuZCB5b3VyCj4gPiBhdG9t aWNfY2hlY2sgc2hvdWxkIGJlIHB1bGxpbmcgaW4gYW55IHByaXZhdGUgc3RhdGUgb2JqZWN0cyBh bmQKPiA+IHJlY29tcHV0aW5nIHRoZWlyIHN0YXRlcy4gVGhpcyBzbWVsbHMgbGlrZSBwYXBlcmlu ZyBvdmVyIGEgZHJpdmVyIGJ1Zy4KPiAKPiBJIGhhdmUgbm90IHNlZW4gYW55IGF0b21pY19jaGVj ayBjYWxsZWQgZHVyaW5nIHRoZSBzdXNwZW5kIGR1cGxpY2F0ZQo+IGhlbHBlci4gQW5kIHlvdSBh cmUgY29ycmVjdCBub3JtYWxseSB0aGUgcHJpdmF0ZV9vYmplY3Qgc3RhdGUgaW4gbXkgY2FzZQo+ IHdvdWxkIGdldCBwdWxsZWQgaW4gZHVyaW5nIGEgcGxhbmUgYXRvbWljX2NoZWNrIGJ1dCB0aGF0 IGRvZXMgbm90IGhhcHBlbgo+IGhlcmUgaW4gdGhpcyBzdGVwLgoKWWVhaCBkdXBsaWNhdGluZyBp biBzdXNwZW5kIHdvbid0IGNhbGwgYXRvbWljX2NoZWNrLiBSZXN0b3JpbmcgdGhlCmR1cGxpY2F0 ZWQgc3RhdGUgb24gcmVzdW1lIHdpbGwgKG9yIHRoZXJlJ3MgZ29pbmcgdG8gYmUgbG90cyBvZiBi cm9rZW4KZHJpdmVycykuCgo+IFdoeSB3b3VsZG4ndCB3ZSBzYXZlIGFsbCB0aGUgInN0YXRlIiBh cnRpZmFjdHMgc28gdGhhdCB0aGUgd2hvbGUgYXRvbWljCj4gc3RhdGUgaXMgY29uc2lzdGVudD8K Ckl0J3Mgbm90IG5lZWRlZCwgYW5kIG1pZ2h0IHBvc3NpYmxlIHBhcGVyIG92ZXIgZHJpdmVyIGJ1 Z3MgLi4uCgo+ID4gVGhlIGR1cGxpY2F0ZSBoZWxwZXJzIHNob3VsZCBvbmx5IG5lZWQgdG8gZHVw bGljYXRlIHRoZSB1YXBpLXJlbGV2YW50Cj4gPiBzdGF0ZXMsIGkuZS4gY29ubmVjdG9yL2NydGMv cGxhbmVzLgoKLi4uIGJlY2F1c2Ugb2YgdGhpcyByZWFzb24uIElmIHlvdXIgZHJpdmVyIGNhbid0 IHJlY29tcHV0ZSB0aGUgcHJpdmF0ZQpzdGF0ZSBmcm9tIGp1c3QgdGhlIGR1cGxpY2F0ZWQgdWFw aS1yZWxldmFudCBzdGF0ZXMgaXQncyBicm9rZW4uIEJlY2F1c2UKZXNzZW50aWFsbHkgdGhlIGV4 YWN0IHNhbWUgdGhpbmcgbWlnaHQgaGFwcGVuIHRocm91Z2ggdGhlIGF0b21pYyBpb2N0bApmcm9t IHVzZXJzcGFjZS4KCkhlbmNlIG15IHF1ZXN0aW9uOiBXaHkgZG8geW91IG5lZWQgdGhpcz8KLURh bmllbAoKPiA+IC1EYW5pZWwKPiA+IAo+ID4gPiAtLS0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljX2hlbHBlci5jIHwgMTYgKysrKysrKysrKysrKysrKwo+ID4gPiAgMSBmaWxlIGNo YW5nZWQsIDE2IGluc2VydGlvbnMoKykKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWlj X2hlbHBlci5jCj4gPiA+IGluZGV4IDU0MGE3N2EyYWRlOS4uYjEwODAyMWNjMDkyIDEwMDY0NAo+ ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ID4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ID4gPiBAQCAtMzE4OSw2ICsz MTg5LDcgQEAgZHJtX2F0b21pY19oZWxwZXJfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gPiA+ICAJc3RydWN0IGRybV9jb25uZWN0b3JfbGlzdF9pdGVyIGNvbm5faXRl cjsKPiA+ID4gIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiA+ID4gIAlzdHJ1Y3QgZHJtX2Ny dGMgKmNydGM7Cj4gPiA+ICsJc3RydWN0IGRybV9wcml2YXRlX29iaiAqcHJpdm9iajsKPiA+ID4g IAlpbnQgZXJyID0gMDsKPiA+ID4gIAo+ID4gPiAgCXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9h bGxvYyhkZXYpOwo+ID4gPiBAQCAtMzIxOCw2ICszMjE5LDE2IEBAIGRybV9hdG9taWNfaGVscGVy X2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gPiAgCQl9Cj4gPiA+ ICAJfQo+ID4gPiAgCj4gPiA+ICsJZHJtX2Zvcl9lYWNoX3ByaXZvYmoocHJpdm9iaiwgZGV2KSB7 Cj4gPiA+ICsJCXN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSAqcHJpdl9zdGF0ZTsKPiA+ID4gKwo+ ID4gPiArCQlwcml2X3N0YXRlID0gZHJtX2F0b21pY19nZXRfcHJpdmF0ZV9vYmpfc3RhdGUoc3Rh dGUsIHByaXZvYmopOwo+ID4gPiArCQlpZiAoSVNfRVJSKHByaXZfc3RhdGUpKSB7Cj4gPiA+ICsJ CQllcnIgPSBQVFJfRVJSKHByaXZfc3RhdGUpOwo+ID4gPiArCQkJZ290byBmcmVlOwo+ID4gPiAr CQl9Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICAJZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJfYmVn aW4oZGV2LCAmY29ubl9pdGVyKTsKPiA+ID4gIAlkcm1fZm9yX2VhY2hfY29ubmVjdG9yX2l0ZXIo Y29ubiwgJmNvbm5faXRlcikgewo+ID4gPiAgCQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAq Y29ubl9zdGF0ZTsKPiA+ID4gQEAgLTMzMjUsMTIgKzMzMzYsMTcgQEAgaW50IGRybV9hdG9taWNf aGVscGVyX2NvbW1pdF9kdXBsaWNhdGVkX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSwKPiA+ID4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nvbm5fc3RhdGU7 Cj4gPiA+ICAJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ID4gPiAgCXN0cnVjdCBkcm1fY3J0Y19z dGF0ZSAqbmV3X2NydGNfc3RhdGU7Cj4gPiA+ICsJc3RydWN0IGRybV9wcml2YXRlX29iaiAqcHJp dm9iajsKPiA+ID4gKwlzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKm5ld19wcml2X3N0YXRlOwo+ ID4gPiAgCj4gPiA+ICAJc3RhdGUtPmFjcXVpcmVfY3R4ID0gY3R4Owo+ID4gPiAgCj4gPiA+ICAJ Zm9yX2VhY2hfbmV3X3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgbmV3X3BsYW5lX3N0YXRl LCBpKQo+ID4gPiAgCQlzdGF0ZS0+cGxhbmVzW2ldLm9sZF9zdGF0ZSA9IHBsYW5lLT5zdGF0ZTsK PiA+ID4gIAo+ID4gPiArCWZvcl9lYWNoX25ld19wcml2YXRlX29ial9pbl9zdGF0ZShzdGF0ZSwg cHJpdm9iaiwgbmV3X3ByaXZfc3RhdGUsIGkpCj4gPiA+ICsJCXN0YXRlLT5wcml2YXRlX29ianNb aV0ub2xkX3N0YXRlID0gcHJpdm9iai0+c3RhdGU7Cj4gPiA+ICsKPiA+ID4gIAlmb3JfZWFjaF9u ZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgbmV3X2NydGNfc3RhdGUsIGkpCj4gPiA+ICAJ CXN0YXRlLT5jcnRjc1tpXS5vbGRfc3RhdGUgPSBjcnRjLT5zdGF0ZTsKPiA+ID4gIAo+ID4gPiAt LSAKPiA+ID4gMi4xNy4xCj4gPiA+IAo+ID4gCj4gPiAtLSAKPiA+IERhbmllbCBWZXR0ZXIKPiA+ IFNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4gaHR0cDovL2Jsb2cuZmZ3 bGwuY2gKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlv bgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWw= 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=-8.3 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,URIBL_BLOCKED,USER_AGENT_MUTT 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 7059BC43381 for ; Mon, 25 Mar 2019 09:06:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3681020879 for ; Mon, 25 Mar 2019 09:06:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="LSvLerKU" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730116AbfCYJGq (ORCPT ); Mon, 25 Mar 2019 05:06:46 -0400 Received: from mail-ed1-f65.google.com ([209.85.208.65]:42011 "EHLO mail-ed1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730006AbfCYJGq (ORCPT ); Mon, 25 Mar 2019 05:06:46 -0400 Received: by mail-ed1-f65.google.com with SMTP id x61so1124558edc.9 for ; Mon, 25 Mar 2019 02:06:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=sender:date:from:to:cc:subject:message-id:mail-followup-to :references:mime-version:content-disposition:in-reply-to:user-agent; bh=LimTLnNCW4JMZi5iGNYNTntLTetuC7RZIGjcu5prQlQ=; b=LSvLerKUPTEctaHazqpIWucuinU7oQN33E3c5KBgNGLsXJUqMTaO+c7hveUcIUe0HU wYl/XBlQW6NbXM4ud5zauY9s6TFn2eBFarBqWEYlIv8HJbd/gsRhXUkH0cYhyYnnGkRz afVN7IQo9cTzZ7CYUcbNucypm6AHPRpMinbMs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :mail-followup-to:references:mime-version:content-disposition :in-reply-to:user-agent; bh=LimTLnNCW4JMZi5iGNYNTntLTetuC7RZIGjcu5prQlQ=; b=ARWIIWpjUIlrOF4USWMoniMsUCwaBpYopxizk7tvq+m6R1BIg1UFyTb7C85z/wA6O3 NtV96jZbtD+YHzCjl/3y/e6XV/vV0phh/AXkFNmonGlMg4R6X05LXlFbxNANOcj2i2HM BnwFLRPkM0z8t31D8jkC/hbS/iA/3WpcyLTdp31sYV0f8IuJ83nzyWdno7Rsuya8xuoX cfUwklgDixLp8d/2jUmKjnW2Ub1mdf7d2Nw96iSwjQ93FgsgPZFKozmIt9iPjvW6Oicn RCbI8ErXKe0g6enHcTp2DEEuvTpuxpyJ6lT7VHlQBoXeHx85U4yQNncC5aL2W+Sgmy7y PFUg== X-Gm-Message-State: APjAAAXo2Q2B0P4pC7N54YVzxz4x8r8EgW9i91s6dD0bR+SGShhW2QTq 7GZt0wD9btdwPA7yEqRiceR5ZUDPl5RU2w== X-Google-Smtp-Source: APXvYqwB8VKy3DMnj62hcDL8n18TChUTKMTaV+96kmLKDYjbfyf+fe+5V/Tw8nM8dTgX89MUrDACOA== X-Received: by 2002:a17:906:960a:: with SMTP id s10mr13196157ejx.141.1553504803825; Mon, 25 Mar 2019 02:06:43 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:569e:0:3106:d637:d723:e855]) by smtp.gmail.com with ESMTPSA id x54sm1702836edd.35.2019.03.25.02.06.42 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 25 Mar 2019 02:06:43 -0700 (PDT) Date: Mon, 25 Mar 2019 10:06:41 +0100 From: Daniel Vetter To: Benoit Parrot Cc: Rob Clark , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Boris Brezillon , Laurent Pinchart , Tomi Valkeinen , Peter Ujfalusi , Jyri Sarha Subject: Re: [Patch 1/1] drm/atomic: integrate private objects with suspend/resume helpers Message-ID: <20190325090641.GF2665@phenom.ffwll.local> Mail-Followup-To: Benoit Parrot , Rob Clark , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Boris Brezillon , Laurent Pinchart , Tomi Valkeinen , Peter Ujfalusi , Jyri Sarha References: <20190314134445.19260-1-bparrot@ti.com> <20190315105057.GU2665@phenom.ffwll.local> <20190315115607.v4avbfbp3hyytsl6@ti.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190315115607.v4avbfbp3hyytsl6@ti.com> X-Operating-System: Linux phenom 4.19.0-1-amd64 User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Mar 15, 2019 at 06:56:07AM -0500, Benoit Parrot wrote: > Daniel Vetter wrote on Fri [2019-Mar-15 11:50:57 +0100]: > > On Thu, Mar 14, 2019 at 08:44:45AM -0500, Benoit Parrot wrote: > > > 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 > > > > Why do you need this? We're doing a full atomic_check, and your > > atomic_check should be pulling in any private state objects and > > recomputing their states. This smells like papering over a driver bug. > > I have not seen any atomic_check called during the suspend duplicate > helper. And you are correct normally the private_object state in my case > would get pulled in during a plane atomic_check but that does not happen > here in this step. Yeah duplicating in suspend won't call atomic_check. Restoring the duplicated state on resume will (or there's going to be lots of broken drivers). > Why wouldn't we save all the "state" artifacts so that the whole atomic > state is consistent? It's not needed, and might possible paper over driver bugs ... > > The duplicate helpers should only need to duplicate the uapi-relevant > > states, i.e. connector/crtc/planes. ... because of this reason. If your driver can't recompute the private state from just the duplicated uapi-relevant states it's broken. Because essentially the exact same thing might happen through the atomic ioctl from userspace. Hence my question: Why do you need this? -Daniel > > -Daniel > > > > > --- > > > 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 > > > > > > > -- > > Daniel Vetter > > Software Engineer, Intel Corporation > > http://blog.ffwll.ch > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch