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=-7.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,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 EF087C43381 for ; Wed, 13 Mar 2019 10:04:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id BDB972087C for ; Wed, 13 Mar 2019 10:04:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726097AbfCMKET (ORCPT ); Wed, 13 Mar 2019 06:04:19 -0400 Received: from mail.netline.ch ([148.251.143.178]:41416 "EHLO netline-mail3.netline.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725836AbfCMKES (ORCPT ); Wed, 13 Mar 2019 06:04:18 -0400 X-Greylist: delayed 348 seconds by postgrey-1.27 at vger.kernel.org; Wed, 13 Mar 2019 06:04:16 EDT Received: from localhost (localhost [127.0.0.1]) by netline-mail3.netline.ch (Postfix) with ESMTP id DC22F2A6054; Wed, 13 Mar 2019 10:58:26 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at netline-mail3.netline.ch Received: from netline-mail3.netline.ch ([127.0.0.1]) by localhost (netline-mail3.netline.ch [127.0.0.1]) (amavisd-new, port 10024) with LMTP id CTL4TqMlkKav; Wed, 13 Mar 2019 10:58:26 +0100 (CET) Received: from thor (116.245.63.188.dynamic.wline.res.cust.swisscom.ch [188.63.245.116]) by netline-mail3.netline.ch (Postfix) with ESMTPSA id D64F42A6053; Wed, 13 Mar 2019 10:58:25 +0100 (CET) Received: from [::1] by thor with esmtp (Exim 4.92) (envelope-from ) id 1h40eX-0008OC-Fa; Wed, 13 Mar 2019 10:58:25 +0100 Subject: Re: [PATCH v2 1/5] drm/rockchip: fix fb references in async update To: Tomasz Figa , Boris Brezillon Cc: =?UTF-8?Q?St=c3=a9phane_Marchesin?= , Sean Paul , David Airlie , Daniel Vetter , Linux Kernel Mailing List , dri-devel , "open list:ARM/Rockchip SoC..." , Helen Koike , kernel@collabora.com, nicholas.kazlauskas@amd.com, "list@263.net:IOMMU DRIVERS" , Joerg Roedel , linux-arm-kernel@lists.infradead.org References: <20190312022204.2775-1-helen.koike@collabora.com> <20190312022204.2775-2-helen.koike@collabora.com> <20190312073438.05ad8173@collabora.com> <20190312165243.5b771e4a@collabora.com> From: =?UTF-8?Q?Michel_D=c3=a4nzer?= Openpgp: preference=signencrypt Autocrypt: addr=michel@daenzer.net; prefer-encrypt=mutual; keydata= mQGiBDsehS8RBACbsIQEX31aYSIuEKxEnEX82ezMR8z3LG8ktv1KjyNErUX9Pt7AUC7W3W0b LUhu8Le8S2va6hi7GfSAifl0ih3k6Bv1Itzgnd+7ZmSrvCN8yGJaHNQfAevAuEboIb+MaVHo 9EMJj4ikOcRZCmQWw7evu/D9uQdtkCnRY9iJiAGxbwCguBHtpoGMxDOINCr5UU6qt+m4O+UD /355ohBBzzyh49lTj0kTFKr0Ozd20G2FbcqHgfFL1dc1MPyigej2gLga2osu2QY0ObvAGkOu WBi3LTY8Zs8uqFGDC4ZAwMPoFy3yzu3ne6T7d/68rJil0QcdQjzzHi6ekqHuhst4a+/+D23h Za8MJBEcdOhRhsaDVGAJSFEQB1qLBACOs0xN+XblejO35gsDSVVk8s+FUUw3TSWJBfZa3Imp V2U2tBO4qck+wqbHNfdnU/crrsHahjzBjvk8Up7VoY8oT+z03sal2vXEonS279xN2B92Tttr AgwosujguFO/7tvzymWC76rDEwue8TsADE11ErjwaBTs8ZXfnN/uAANgPLQjTWljaGVsIERh ZW56ZXIgPG1pY2hlbEBkYWVuemVyLm5ldD6IXgQTEQIAHgUCQFXxJgIbAwYLCQgHAwIDFQID AxYCAQIeAQIXgAAKCRBaga+OatuyAIrPAJ9ykonXI3oQcX83N2qzCEStLNW47gCeLWm/QiPY jqtGUnnSbyuTQfIySkK5AQ0EOx6FRRAEAJZkcvklPwJCgNiw37p0GShKmFGGqf/a3xZZEpjI qNxzshFRFneZze4f5LhzbX1/vIm5+ZXsEWympJfZzyCmYPw86QcFxyZflkAxHx9LeD+89Elx bw6wT0CcLvSv8ROfU1m8YhGbV6g2zWyLD0/naQGVb8e4FhVKGNY2EEbHgFBrAAMGA/0VktFO CxFBdzLQ17RCTwCJ3xpyP4qsLJH0yCoA26rH2zE2RzByhrTFTYZzbFEid3ddGiHOBEL+bO+2 GNtfiYKmbTkj1tMZJ8L6huKONaVrASFzLvZa2dlc2zja9ZSksKmge5BOTKWgbyepEc5qxSju YsYrX5xfLgTZC5abhhztpYhGBBgRAgAGBQI7HoVFAAoJEFqBr45q27IAlscAn2Ufk2d6/3p4 Cuyz/NX7KpL2dQ8WAJ9UD5JEakhfofed8PSqOM7jOO3LCA== Message-ID: <05750143-708b-b84e-af67-82ec6815bd89@daenzer.net> Date: Wed, 13 Mar 2019 10:58:25 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-CA Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2019-03-13 4:42 a.m., Tomasz Figa wrote: > On Wed, Mar 13, 2019 at 12:52 AM Boris Brezillon > wrote: >> >> On Tue, 12 Mar 2019 12:34:45 -0300 >> Helen Koike wrote: >> >>> On 3/12/19 3:34 AM, Boris Brezillon wrote: >>>> On Mon, 11 Mar 2019 23:21:59 -0300 >>>> Helen Koike wrote: >>>> >>>>> In the case of async update, modifications are done in place, i.e. in the >>>>> current plane state, so the new_state is prepared and the new_state is >>>>> cleanup up (instead of the old_state, diferrently on what happen in a >>>> >>>> ^ cleaned up ^ differently (but maybe >>>> "unlike what happens" is more appropriate here). >>>> >>>>> normal sync update). >>>>> To cleanup the old_fb properly, it needs to be placed in the new_state >>>>> in the end of async_update, so cleanup call will unreference the old_fb >>>>> correctly. >>>>> >>>>> Also, the previous code had a: >>>>> >>>>> plane_state = plane->funcs->atomic_duplicate_state(plane); >>>>> ... >>>>> swap(plane_state, plane->state); >>>>> >>>>> if (plane->state->fb && plane->state->fb != new_state->fb) { >>>>> ... >>>>> } >>>>> >>>>> Which was wrong, as the fb were just assigned to be equal, so this if >>>>> statement nevers evaluates to true. >>>>> >>>>> Another details is that the function drm_crtc_vblank_get() can only be >>>>> called when vop->is_enabled is true, otherwise it has no effect and >>>>> trows a WARN_ON(). >>>>> >>>>> Calling drm_atomic_set_fb_for_plane() (which get a referent of the new >>>>> fb and pus the old fb) is not required, as it is taken care by >>>>> drm_mode_cursor_universal() when calling >>>>> drm_atomic_helper_update_plane(). >>>>> >>>>> Signed-off-by: Helen Koike >>>>> >>>>> --- >>>>> Hello, >>>>> >>>>> I tested on the rockchip ficus v1.1 using igt plane_cursor_legacy and >>>>> kms_cursor_legacy and I didn't see any regressions. >>>>> >>>>> Changes in v2: None >>>>> >>>>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 42 ++++++++++++--------- >>>>> 1 file changed, 24 insertions(+), 18 deletions(-) >>>>> >>>>> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >>>>> index c7d4c6073ea5..a1ee8c156a7b 100644 >>>>> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >>>>> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >>>>> @@ -912,30 +912,31 @@ static void vop_plane_atomic_async_update(struct drm_plane *plane, >>>>> struct drm_plane_state *new_state) >>>>> { >>>>> struct vop *vop = to_vop(plane->state->crtc); >>>>> - struct drm_plane_state *plane_state; >>>>> + struct drm_framebuffer *old_fb = plane->state->fb; >>>>> >>>>> - plane_state = plane->funcs->atomic_duplicate_state(plane); >>>>> - plane_state->crtc_x = new_state->crtc_x; >>>>> - plane_state->crtc_y = new_state->crtc_y; >>>>> - plane_state->crtc_h = new_state->crtc_h; >>>>> - plane_state->crtc_w = new_state->crtc_w; >>>>> - plane_state->src_x = new_state->src_x; >>>>> - plane_state->src_y = new_state->src_y; >>>>> - plane_state->src_h = new_state->src_h; >>>>> - plane_state->src_w = new_state->src_w; >>>>> - >>>>> - if (plane_state->fb != new_state->fb) >>>>> - drm_atomic_set_fb_for_plane(plane_state, new_state->fb); >>>>> - >>>>> - swap(plane_state, plane->state); >>>>> - >>>>> - if (plane->state->fb && plane->state->fb != new_state->fb) { >>>>> + /* >>>>> + * A scanout can still be occurring, so we can't drop the reference to >>>>> + * the old framebuffer. To solve this we get a reference to old_fb and >>>>> + * set a worker to release it later. >>>> >>>> Hm, doesn't look like an async update to me if we have to wait for the >>>> next VBLANK to happen to get the new content on the screen. Maybe we >>>> should reject async updates when old_fb != new_fb in the rk >>>> ->async_check() hook. >>> >>> Unless I am misunderstanding this, we don't wait here, we just grab a >>> reference to the fb in case it is being still used by the hw, so it >>> doesn't get released prematurely. >> >> I was just reacting to the comment that says the new FB should stay >> around until the next VBLANK event happens. If the FB must stay around >> that probably means the HW is still using, which made me wonder if this >> HW actually supports async update (where async means "update now and >> don't care about about tearing"). Or maybe it takes some time to switch >> to the new FB and waiting for the next VBLANK to release the old FB was >> an easy solution to not wait for the flip to actually happen in >> ->async_update() (which is kind of a combination of async+non-blocking). > > The hardware switches framebuffers on vblank, so whatever framebuffer > is currently being scanned out from needs to stay there until the > hardware switches to the new one in shadow registers. If that doesn't > happen, you get IOMMU faults and the display controller stops working > since we don't have any fault handling currently, just printing a > message. Sounds like your hardware doesn't actually support async flips. It's probably better for the driver not to pretend otherwise. -- Earthling Michel Dänzer | https://www.amd.com Libre software enthusiast | Mesa and X developer From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Michel_D=c3=a4nzer?= Subject: Re: [PATCH v2 1/5] drm/rockchip: fix fb references in async update Date: Wed, 13 Mar 2019 10:58:25 +0100 Message-ID: <05750143-708b-b84e-af67-82ec6815bd89@daenzer.net> References: <20190312022204.2775-1-helen.koike@collabora.com> <20190312022204.2775-2-helen.koike@collabora.com> <20190312073438.05ad8173@collabora.com> <20190312165243.5b771e4a@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-CA List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Tomasz Figa , Boris Brezillon Cc: =?UTF-8?Q?St=c3=a9phane_Marchesin?= , Sean Paul , David Airlie , Daniel Vetter , Linux Kernel Mailing List , dri-devel , "open list:ARM/Rockchip SoC..." , Helen Koike , "list@263.net:IOMMU DRIVERS" , kernel@collabora.com, nicholas.kazlauskas@amd.com, linux-arm-kernel@lists.infradead.org List-Id: linux-rockchip.vger.kernel.org T24gMjAxOS0wMy0xMyA0OjQyIGEubS4sIFRvbWFzeiBGaWdhIHdyb3RlOgo+IE9uIFdlZCwgTWFy IDEzLCAyMDE5IGF0IDEyOjUyIEFNIEJvcmlzIEJyZXppbGxvbgo+IDxib3Jpcy5icmV6aWxsb25A Y29sbGFib3JhLmNvbT4gd3JvdGU6Cj4+Cj4+IE9uIFR1ZSwgMTIgTWFyIDIwMTkgMTI6MzQ6NDUg LTAzMDAKPj4gSGVsZW4gS29pa2UgPGhlbGVuLmtvaWtlQGNvbGxhYm9yYS5jb20+IHdyb3RlOgo+ Pgo+Pj4gT24gMy8xMi8xOSAzOjM0IEFNLCBCb3JpcyBCcmV6aWxsb24gd3JvdGU6Cj4+Pj4gT24g TW9uLCAxMSBNYXIgMjAxOSAyMzoyMTo1OSAtMDMwMAo+Pj4+IEhlbGVuIEtvaWtlIDxoZWxlbi5r b2lrZUBjb2xsYWJvcmEuY29tPiB3cm90ZToKPj4+Pgo+Pj4+PiBJbiB0aGUgY2FzZSBvZiBhc3lu YyB1cGRhdGUsIG1vZGlmaWNhdGlvbnMgYXJlIGRvbmUgaW4gcGxhY2UsIGkuZS4gaW4gdGhlCj4+ Pj4+IGN1cnJlbnQgcGxhbmUgc3RhdGUsIHNvIHRoZSBuZXdfc3RhdGUgaXMgcHJlcGFyZWQgYW5k IHRoZSBuZXdfc3RhdGUgaXMKPj4+Pj4gY2xlYW51cCB1cCAoaW5zdGVhZCBvZiB0aGUgb2xkX3N0 YXRlLCBkaWZlcnJlbnRseSBvbiB3aGF0IGhhcHBlbiBpbiBhCj4+Pj4KPj4+PiAgIF4gY2xlYW5l ZCB1cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gZGlmZmVyZW50bHkgKGJ1dCBtYXli ZQo+Pj4+ICJ1bmxpa2Ugd2hhdCBoYXBwZW5zIiBpcyBtb3JlIGFwcHJvcHJpYXRlIGhlcmUpLgo+ Pj4+Cj4+Pj4+IG5vcm1hbCBzeW5jIHVwZGF0ZSkuCj4+Pj4+IFRvIGNsZWFudXAgdGhlIG9sZF9m YiBwcm9wZXJseSwgaXQgbmVlZHMgdG8gYmUgcGxhY2VkIGluIHRoZSBuZXdfc3RhdGUKPj4+Pj4g aW4gdGhlIGVuZCBvZiBhc3luY191cGRhdGUsIHNvIGNsZWFudXAgY2FsbCB3aWxsIHVucmVmZXJl bmNlIHRoZSBvbGRfZmIKPj4+Pj4gY29ycmVjdGx5Lgo+Pj4+Pgo+Pj4+PiBBbHNvLCB0aGUgcHJl dmlvdXMgY29kZSBoYWQgYToKPj4+Pj4KPj4+Pj4gICAgcGxhbmVfc3RhdGUgPSBwbGFuZS0+ZnVu Y3MtPmF0b21pY19kdXBsaWNhdGVfc3RhdGUocGxhbmUpOwo+Pj4+PiAgICAuLi4KPj4+Pj4gICAg c3dhcChwbGFuZV9zdGF0ZSwgcGxhbmUtPnN0YXRlKTsKPj4+Pj4KPj4+Pj4gICAgaWYgKHBsYW5l LT5zdGF0ZS0+ZmIgJiYgcGxhbmUtPnN0YXRlLT5mYiAhPSBuZXdfc3RhdGUtPmZiKSB7Cj4+Pj4+ ICAgIC4uLgo+Pj4+PiAgICB9Cj4+Pj4+Cj4+Pj4+IFdoaWNoIHdhcyB3cm9uZywgYXMgdGhlIGZi IHdlcmUganVzdCBhc3NpZ25lZCB0byBiZSBlcXVhbCwgc28gdGhpcyBpZgo+Pj4+PiBzdGF0ZW1l bnQgbmV2ZXJzIGV2YWx1YXRlcyB0byB0cnVlLgo+Pj4+Pgo+Pj4+PiBBbm90aGVyIGRldGFpbHMg aXMgdGhhdCB0aGUgZnVuY3Rpb24gZHJtX2NydGNfdmJsYW5rX2dldCgpIGNhbiBvbmx5IGJlCj4+ Pj4+IGNhbGxlZCB3aGVuIHZvcC0+aXNfZW5hYmxlZCBpcyB0cnVlLCBvdGhlcndpc2UgaXQgaGFz IG5vIGVmZmVjdCBhbmQKPj4+Pj4gdHJvd3MgYSBXQVJOX09OKCkuCj4+Pj4+Cj4+Pj4+IENhbGxp bmcgZHJtX2F0b21pY19zZXRfZmJfZm9yX3BsYW5lKCkgKHdoaWNoIGdldCBhIHJlZmVyZW50IG9m IHRoZSBuZXcKPj4+Pj4gZmIgYW5kIHB1cyB0aGUgb2xkIGZiKSBpcyBub3QgcmVxdWlyZWQsIGFz IGl0IGlzIHRha2VuIGNhcmUgYnkKPj4+Pj4gZHJtX21vZGVfY3Vyc29yX3VuaXZlcnNhbCgpIHdo ZW4gY2FsbGluZwo+Pj4+PiBkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfcGxhbmUoKS4KPj4+Pj4K Pj4+Pj4gU2lnbmVkLW9mZi1ieTogSGVsZW4gS29pa2UgPGhlbGVuLmtvaWtlQGNvbGxhYm9yYS5j b20+Cj4+Pj4+Cj4+Pj4+IC0tLQo+Pj4+PiBIZWxsbywKPj4+Pj4KPj4+Pj4gSSB0ZXN0ZWQgb24g dGhlIHJvY2tjaGlwIGZpY3VzIHYxLjEgdXNpbmcgaWd0IHBsYW5lX2N1cnNvcl9sZWdhY3kgYW5k Cj4+Pj4+IGttc19jdXJzb3JfbGVnYWN5IGFuZCBJIGRpZG4ndCBzZWUgYW55IHJlZ3Jlc3Npb25z Lgo+Pj4+Pgo+Pj4+PiBDaGFuZ2VzIGluIHYyOiBOb25lCj4+Pj4+Cj4+Pj4+ICBkcml2ZXJzL2dw dS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jIHwgNDIgKysrKysrKysrKysrLS0tLS0t LS0tCj4+Pj4+ICAxIGZpbGUgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25z KC0pCj4+Pj4+Cj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9j a2NoaXBfZHJtX3ZvcC5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92 b3AuYwo+Pj4+PiBpbmRleCBjN2Q0YzYwNzNlYTUuLmExZWU4YzE1NmE3YiAxMDA2NDQKPj4+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYwo+Pj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jCj4+Pj4+IEBA IC05MTIsMzAgKzkxMiwzMSBAQCBzdGF0aWMgdm9pZCB2b3BfcGxhbmVfYXRvbWljX2FzeW5jX3Vw ZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPj4+Pj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19zdGF0ZSkKPj4+Pj4g IHsKPj4+Pj4gICAgc3RydWN0IHZvcCAqdm9wID0gdG9fdm9wKHBsYW5lLT5zdGF0ZS0+Y3J0Yyk7 Cj4+Pj4+IC0gIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwo+Pj4+PiArICBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpvbGRfZmIgPSBwbGFuZS0+c3RhdGUtPmZiOwo+Pj4+Pgo+ Pj4+PiAtICBwbGFuZV9zdGF0ZSA9IHBsYW5lLT5mdW5jcy0+YXRvbWljX2R1cGxpY2F0ZV9zdGF0 ZShwbGFuZSk7Cj4+Pj4+IC0gIHBsYW5lX3N0YXRlLT5jcnRjX3ggPSBuZXdfc3RhdGUtPmNydGNf eDsKPj4+Pj4gLSAgcGxhbmVfc3RhdGUtPmNydGNfeSA9IG5ld19zdGF0ZS0+Y3J0Y195Owo+Pj4+ PiAtICBwbGFuZV9zdGF0ZS0+Y3J0Y19oID0gbmV3X3N0YXRlLT5jcnRjX2g7Cj4+Pj4+IC0gIHBs YW5lX3N0YXRlLT5jcnRjX3cgPSBuZXdfc3RhdGUtPmNydGNfdzsKPj4+Pj4gLSAgcGxhbmVfc3Rh dGUtPnNyY194ID0gbmV3X3N0YXRlLT5zcmNfeDsKPj4+Pj4gLSAgcGxhbmVfc3RhdGUtPnNyY195 ID0gbmV3X3N0YXRlLT5zcmNfeTsKPj4+Pj4gLSAgcGxhbmVfc3RhdGUtPnNyY19oID0gbmV3X3N0 YXRlLT5zcmNfaDsKPj4+Pj4gLSAgcGxhbmVfc3RhdGUtPnNyY193ID0gbmV3X3N0YXRlLT5zcmNf dzsKPj4+Pj4gLQo+Pj4+PiAtICBpZiAocGxhbmVfc3RhdGUtPmZiICE9IG5ld19zdGF0ZS0+ZmIp Cj4+Pj4+IC0gICAgICAgICAgZHJtX2F0b21pY19zZXRfZmJfZm9yX3BsYW5lKHBsYW5lX3N0YXRl LCBuZXdfc3RhdGUtPmZiKTsKPj4+Pj4gLQo+Pj4+PiAtICBzd2FwKHBsYW5lX3N0YXRlLCBwbGFu ZS0+c3RhdGUpOwo+Pj4+PiAtCj4+Pj4+IC0gIGlmIChwbGFuZS0+c3RhdGUtPmZiICYmIHBsYW5l LT5zdGF0ZS0+ZmIgIT0gbmV3X3N0YXRlLT5mYikgewo+Pj4+PiArICAvKgo+Pj4+PiArICAgKiBB IHNjYW5vdXQgY2FuIHN0aWxsIGJlIG9jY3VycmluZywgc28gd2UgY2FuJ3QgZHJvcCB0aGUgcmVm ZXJlbmNlIHRvCj4+Pj4+ICsgICAqIHRoZSBvbGQgZnJhbWVidWZmZXIuIFRvIHNvbHZlIHRoaXMg d2UgZ2V0IGEgcmVmZXJlbmNlIHRvIG9sZF9mYiBhbmQKPj4+Pj4gKyAgICogc2V0IGEgd29ya2Vy IHRvIHJlbGVhc2UgaXQgbGF0ZXIuCj4+Pj4KPj4+PiBIbSwgZG9lc24ndCBsb29rIGxpa2UgYW4g YXN5bmMgdXBkYXRlIHRvIG1lIGlmIHdlIGhhdmUgdG8gd2FpdCBmb3IgdGhlCj4+Pj4gbmV4dCBW QkxBTksgdG8gaGFwcGVuIHRvIGdldCB0aGUgbmV3IGNvbnRlbnQgb24gdGhlIHNjcmVlbi4gTWF5 YmUgd2UKPj4+PiBzaG91bGQgcmVqZWN0IGFzeW5jIHVwZGF0ZXMgd2hlbiBvbGRfZmIgIT0gbmV3 X2ZiIGluIHRoZSByawo+Pj4+IC0+YXN5bmNfY2hlY2soKSBob29rLgo+Pj4KPj4+IFVubGVzcyBJ IGFtIG1pc3VuZGVyc3RhbmRpbmcgdGhpcywgd2UgZG9uJ3Qgd2FpdCBoZXJlLCB3ZSBqdXN0IGdy YWIgYQo+Pj4gcmVmZXJlbmNlIHRvIHRoZSBmYiBpbiBjYXNlIGl0IGlzIGJlaW5nIHN0aWxsIHVz ZWQgYnkgdGhlIGh3LCBzbyBpdAo+Pj4gZG9lc24ndCBnZXQgcmVsZWFzZWQgcHJlbWF0dXJlbHku Cj4+Cj4+IEkgd2FzIGp1c3QgcmVhY3RpbmcgdG8gdGhlIGNvbW1lbnQgdGhhdCBzYXlzIHRoZSBu ZXcgRkIgc2hvdWxkIHN0YXkKPj4gYXJvdW5kIHVudGlsIHRoZSBuZXh0IFZCTEFOSyBldmVudCBo YXBwZW5zLiBJZiB0aGUgRkIgbXVzdCBzdGF5IGFyb3VuZAo+PiB0aGF0IHByb2JhYmx5IG1lYW5z IHRoZSBIVyBpcyBzdGlsbCB1c2luZywgd2hpY2ggbWFkZSBtZSB3b25kZXIgaWYgdGhpcwo+PiBI VyBhY3R1YWxseSBzdXBwb3J0cyBhc3luYyB1cGRhdGUgKHdoZXJlIGFzeW5jIG1lYW5zICJ1cGRh dGUgbm93IGFuZAo+PiBkb24ndCBjYXJlIGFib3V0IGFib3V0IHRlYXJpbmciKS4gT3IgbWF5YmUg aXQgdGFrZXMgc29tZSB0aW1lIHRvIHN3aXRjaAo+PiB0byB0aGUgbmV3IEZCIGFuZCB3YWl0aW5n IGZvciB0aGUgbmV4dCBWQkxBTksgdG8gcmVsZWFzZSB0aGUgb2xkIEZCIHdhcwo+PiBhbiBlYXN5 IHNvbHV0aW9uIHRvIG5vdCB3YWl0IGZvciB0aGUgZmxpcCB0byBhY3R1YWxseSBoYXBwZW4gaW4K Pj4gLT5hc3luY191cGRhdGUoKSAod2hpY2ggaXMga2luZCBvZiBhIGNvbWJpbmF0aW9uIG9mIGFz eW5jK25vbi1ibG9ja2luZykuCj4gCj4gVGhlIGhhcmR3YXJlIHN3aXRjaGVzIGZyYW1lYnVmZmVy cyBvbiB2YmxhbmssIHNvIHdoYXRldmVyIGZyYW1lYnVmZmVyCj4gaXMgY3VycmVudGx5IGJlaW5n IHNjYW5uZWQgb3V0IGZyb20gbmVlZHMgdG8gc3RheSB0aGVyZSB1bnRpbCB0aGUKPiBoYXJkd2Fy ZSBzd2l0Y2hlcyB0byB0aGUgbmV3IG9uZSBpbiBzaGFkb3cgcmVnaXN0ZXJzLiBJZiB0aGF0IGRv ZXNuJ3QKPiBoYXBwZW4sIHlvdSBnZXQgSU9NTVUgZmF1bHRzIGFuZCB0aGUgZGlzcGxheSBjb250 cm9sbGVyIHN0b3BzIHdvcmtpbmcKPiBzaW5jZSB3ZSBkb24ndCBoYXZlIGFueSBmYXVsdCBoYW5k bGluZyBjdXJyZW50bHksIGp1c3QgcHJpbnRpbmcgYQo+IG1lc3NhZ2UuCgpTb3VuZHMgbGlrZSB5 b3VyIGhhcmR3YXJlIGRvZXNuJ3QgYWN0dWFsbHkgc3VwcG9ydCBhc3luYyBmbGlwcy4gSXQncwpw cm9iYWJseSBiZXR0ZXIgZm9yIHRoZSBkcml2ZXIgbm90IHRvIHByZXRlbmQgb3RoZXJ3aXNlLgoK Ci0tIApFYXJ0aGxpbmcgTWljaGVsIETDpG56ZXIgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICBodHRwczovL3d3dy5hbWQuY29tCkxpYnJlIHNvZnR3YXJlIGVudGh1c2lhc3QgICAgICAgICAg ICAgfCAgICAgICAgICAgICBNZXNhIGFuZCBYIGRldmVsb3BlcgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw= 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=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,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 C0881C43381 for ; Wed, 13 Mar 2019 10:05:34 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 909942171F for ; Wed, 13 Mar 2019 10:05:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="cbL4v6av" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 909942171F Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=daenzer.net Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:From:References:To:Subject:Reply-To:Content-ID:Content-Description :Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=M2KdWM09AX0IHZhs41N8y0hZldOM3A9eq5lj5lIUjOo=; b=cbL4v6avo9vBwJ eYq33P/I9IGHv49dMVkh1olSNlPAmfSUqkRSz+KKhxcYn8CHfrNmAHxyD06TQmAVT+BtAXu0ocSq9 H+lqfOnJqHdLADMWqmr1heq8QppZI6UfvVyR5ZINnLrnsm29GJjxBQAbTLUYsX33oO1gYgjd41Wea hskdvHD3s2dnOYUrFeIoQ/E52o9QwvOe6bDAsubm5txZ8rqNHxZrrimejYQrBhtIeLowL1ctI3o5l g2dte7EYL+AC0Hj91Sex+g8w6EavX/yuyNQFOf8/phvSNYz6vCR8FMcmmK8Y8G+QCKVIGBv3T/RlN c9B9+dQKb6BCeAdBQg/Q==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1h40lM-0006I2-60; Wed, 13 Mar 2019 10:05:28 +0000 Received: from mail.netline.ch ([148.251.143.178] helo=netline-mail3.netline.ch) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1h40kD-0004de-Td; Wed, 13 Mar 2019 10:04:21 +0000 Received: from localhost (localhost [127.0.0.1]) by netline-mail3.netline.ch (Postfix) with ESMTP id DC22F2A6054; Wed, 13 Mar 2019 10:58:26 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at netline-mail3.netline.ch Received: from netline-mail3.netline.ch ([127.0.0.1]) by localhost (netline-mail3.netline.ch [127.0.0.1]) (amavisd-new, port 10024) with LMTP id CTL4TqMlkKav; Wed, 13 Mar 2019 10:58:26 +0100 (CET) Received: from thor (116.245.63.188.dynamic.wline.res.cust.swisscom.ch [188.63.245.116]) by netline-mail3.netline.ch (Postfix) with ESMTPSA id D64F42A6053; Wed, 13 Mar 2019 10:58:25 +0100 (CET) Received: from [::1] by thor with esmtp (Exim 4.92) (envelope-from ) id 1h40eX-0008OC-Fa; Wed, 13 Mar 2019 10:58:25 +0100 Subject: Re: [PATCH v2 1/5] drm/rockchip: fix fb references in async update To: Tomasz Figa , Boris Brezillon References: <20190312022204.2775-1-helen.koike@collabora.com> <20190312022204.2775-2-helen.koike@collabora.com> <20190312073438.05ad8173@collabora.com> <20190312165243.5b771e4a@collabora.com> From: =?UTF-8?Q?Michel_D=c3=a4nzer?= Openpgp: preference=signencrypt Autocrypt: addr=michel@daenzer.net; prefer-encrypt=mutual; keydata= mQGiBDsehS8RBACbsIQEX31aYSIuEKxEnEX82ezMR8z3LG8ktv1KjyNErUX9Pt7AUC7W3W0b LUhu8Le8S2va6hi7GfSAifl0ih3k6Bv1Itzgnd+7ZmSrvCN8yGJaHNQfAevAuEboIb+MaVHo 9EMJj4ikOcRZCmQWw7evu/D9uQdtkCnRY9iJiAGxbwCguBHtpoGMxDOINCr5UU6qt+m4O+UD /355ohBBzzyh49lTj0kTFKr0Ozd20G2FbcqHgfFL1dc1MPyigej2gLga2osu2QY0ObvAGkOu WBi3LTY8Zs8uqFGDC4ZAwMPoFy3yzu3ne6T7d/68rJil0QcdQjzzHi6ekqHuhst4a+/+D23h Za8MJBEcdOhRhsaDVGAJSFEQB1qLBACOs0xN+XblejO35gsDSVVk8s+FUUw3TSWJBfZa3Imp V2U2tBO4qck+wqbHNfdnU/crrsHahjzBjvk8Up7VoY8oT+z03sal2vXEonS279xN2B92Tttr AgwosujguFO/7tvzymWC76rDEwue8TsADE11ErjwaBTs8ZXfnN/uAANgPLQjTWljaGVsIERh ZW56ZXIgPG1pY2hlbEBkYWVuemVyLm5ldD6IXgQTEQIAHgUCQFXxJgIbAwYLCQgHAwIDFQID AxYCAQIeAQIXgAAKCRBaga+OatuyAIrPAJ9ykonXI3oQcX83N2qzCEStLNW47gCeLWm/QiPY jqtGUnnSbyuTQfIySkK5AQ0EOx6FRRAEAJZkcvklPwJCgNiw37p0GShKmFGGqf/a3xZZEpjI qNxzshFRFneZze4f5LhzbX1/vIm5+ZXsEWympJfZzyCmYPw86QcFxyZflkAxHx9LeD+89Elx bw6wT0CcLvSv8ROfU1m8YhGbV6g2zWyLD0/naQGVb8e4FhVKGNY2EEbHgFBrAAMGA/0VktFO CxFBdzLQ17RCTwCJ3xpyP4qsLJH0yCoA26rH2zE2RzByhrTFTYZzbFEid3ddGiHOBEL+bO+2 GNtfiYKmbTkj1tMZJ8L6huKONaVrASFzLvZa2dlc2zja9ZSksKmge5BOTKWgbyepEc5qxSju YsYrX5xfLgTZC5abhhztpYhGBBgRAgAGBQI7HoVFAAoJEFqBr45q27IAlscAn2Ufk2d6/3p4 Cuyz/NX7KpL2dQ8WAJ9UD5JEakhfofed8PSqOM7jOO3LCA== Message-ID: <05750143-708b-b84e-af67-82ec6815bd89@daenzer.net> Date: Wed, 13 Mar 2019 10:58:25 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1 MIME-Version: 1.0 In-Reply-To: Content-Language: en-CA X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190313_030418_512372_B00C9BE4 X-CRM114-Status: GOOD ( 21.71 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?Q?St=c3=a9phane_Marchesin?= , Sean Paul , David Airlie , Daniel Vetter , Joerg Roedel , Linux Kernel Mailing List , dri-devel , "open list:ARM/Rockchip SoC..." , Helen Koike , "list@263.net:IOMMU DRIVERS" , kernel@collabora.com, nicholas.kazlauskas@amd.com, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMjAxOS0wMy0xMyA0OjQyIGEubS4sIFRvbWFzeiBGaWdhIHdyb3RlOgo+IE9uIFdlZCwgTWFy IDEzLCAyMDE5IGF0IDEyOjUyIEFNIEJvcmlzIEJyZXppbGxvbgo+IDxib3Jpcy5icmV6aWxsb25A Y29sbGFib3JhLmNvbT4gd3JvdGU6Cj4+Cj4+IE9uIFR1ZSwgMTIgTWFyIDIwMTkgMTI6MzQ6NDUg LTAzMDAKPj4gSGVsZW4gS29pa2UgPGhlbGVuLmtvaWtlQGNvbGxhYm9yYS5jb20+IHdyb3RlOgo+ Pgo+Pj4gT24gMy8xMi8xOSAzOjM0IEFNLCBCb3JpcyBCcmV6aWxsb24gd3JvdGU6Cj4+Pj4gT24g TW9uLCAxMSBNYXIgMjAxOSAyMzoyMTo1OSAtMDMwMAo+Pj4+IEhlbGVuIEtvaWtlIDxoZWxlbi5r b2lrZUBjb2xsYWJvcmEuY29tPiB3cm90ZToKPj4+Pgo+Pj4+PiBJbiB0aGUgY2FzZSBvZiBhc3lu YyB1cGRhdGUsIG1vZGlmaWNhdGlvbnMgYXJlIGRvbmUgaW4gcGxhY2UsIGkuZS4gaW4gdGhlCj4+ Pj4+IGN1cnJlbnQgcGxhbmUgc3RhdGUsIHNvIHRoZSBuZXdfc3RhdGUgaXMgcHJlcGFyZWQgYW5k IHRoZSBuZXdfc3RhdGUgaXMKPj4+Pj4gY2xlYW51cCB1cCAoaW5zdGVhZCBvZiB0aGUgb2xkX3N0 YXRlLCBkaWZlcnJlbnRseSBvbiB3aGF0IGhhcHBlbiBpbiBhCj4+Pj4KPj4+PiAgIF4gY2xlYW5l ZCB1cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gZGlmZmVyZW50bHkgKGJ1dCBtYXli ZQo+Pj4+ICJ1bmxpa2Ugd2hhdCBoYXBwZW5zIiBpcyBtb3JlIGFwcHJvcHJpYXRlIGhlcmUpLgo+ Pj4+Cj4+Pj4+IG5vcm1hbCBzeW5jIHVwZGF0ZSkuCj4+Pj4+IFRvIGNsZWFudXAgdGhlIG9sZF9m YiBwcm9wZXJseSwgaXQgbmVlZHMgdG8gYmUgcGxhY2VkIGluIHRoZSBuZXdfc3RhdGUKPj4+Pj4g aW4gdGhlIGVuZCBvZiBhc3luY191cGRhdGUsIHNvIGNsZWFudXAgY2FsbCB3aWxsIHVucmVmZXJl bmNlIHRoZSBvbGRfZmIKPj4+Pj4gY29ycmVjdGx5Lgo+Pj4+Pgo+Pj4+PiBBbHNvLCB0aGUgcHJl dmlvdXMgY29kZSBoYWQgYToKPj4+Pj4KPj4+Pj4gICAgcGxhbmVfc3RhdGUgPSBwbGFuZS0+ZnVu Y3MtPmF0b21pY19kdXBsaWNhdGVfc3RhdGUocGxhbmUpOwo+Pj4+PiAgICAuLi4KPj4+Pj4gICAg c3dhcChwbGFuZV9zdGF0ZSwgcGxhbmUtPnN0YXRlKTsKPj4+Pj4KPj4+Pj4gICAgaWYgKHBsYW5l LT5zdGF0ZS0+ZmIgJiYgcGxhbmUtPnN0YXRlLT5mYiAhPSBuZXdfc3RhdGUtPmZiKSB7Cj4+Pj4+ ICAgIC4uLgo+Pj4+PiAgICB9Cj4+Pj4+Cj4+Pj4+IFdoaWNoIHdhcyB3cm9uZywgYXMgdGhlIGZi IHdlcmUganVzdCBhc3NpZ25lZCB0byBiZSBlcXVhbCwgc28gdGhpcyBpZgo+Pj4+PiBzdGF0ZW1l bnQgbmV2ZXJzIGV2YWx1YXRlcyB0byB0cnVlLgo+Pj4+Pgo+Pj4+PiBBbm90aGVyIGRldGFpbHMg aXMgdGhhdCB0aGUgZnVuY3Rpb24gZHJtX2NydGNfdmJsYW5rX2dldCgpIGNhbiBvbmx5IGJlCj4+ Pj4+IGNhbGxlZCB3aGVuIHZvcC0+aXNfZW5hYmxlZCBpcyB0cnVlLCBvdGhlcndpc2UgaXQgaGFz IG5vIGVmZmVjdCBhbmQKPj4+Pj4gdHJvd3MgYSBXQVJOX09OKCkuCj4+Pj4+Cj4+Pj4+IENhbGxp bmcgZHJtX2F0b21pY19zZXRfZmJfZm9yX3BsYW5lKCkgKHdoaWNoIGdldCBhIHJlZmVyZW50IG9m IHRoZSBuZXcKPj4+Pj4gZmIgYW5kIHB1cyB0aGUgb2xkIGZiKSBpcyBub3QgcmVxdWlyZWQsIGFz IGl0IGlzIHRha2VuIGNhcmUgYnkKPj4+Pj4gZHJtX21vZGVfY3Vyc29yX3VuaXZlcnNhbCgpIHdo ZW4gY2FsbGluZwo+Pj4+PiBkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfcGxhbmUoKS4KPj4+Pj4K Pj4+Pj4gU2lnbmVkLW9mZi1ieTogSGVsZW4gS29pa2UgPGhlbGVuLmtvaWtlQGNvbGxhYm9yYS5j b20+Cj4+Pj4+Cj4+Pj4+IC0tLQo+Pj4+PiBIZWxsbywKPj4+Pj4KPj4+Pj4gSSB0ZXN0ZWQgb24g dGhlIHJvY2tjaGlwIGZpY3VzIHYxLjEgdXNpbmcgaWd0IHBsYW5lX2N1cnNvcl9sZWdhY3kgYW5k Cj4+Pj4+IGttc19jdXJzb3JfbGVnYWN5IGFuZCBJIGRpZG4ndCBzZWUgYW55IHJlZ3Jlc3Npb25z Lgo+Pj4+Pgo+Pj4+PiBDaGFuZ2VzIGluIHYyOiBOb25lCj4+Pj4+Cj4+Pj4+ICBkcml2ZXJzL2dw dS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jIHwgNDIgKysrKysrKysrKysrLS0tLS0t LS0tCj4+Pj4+ICAxIGZpbGUgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25z KC0pCj4+Pj4+Cj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9j a2NoaXBfZHJtX3ZvcC5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92 b3AuYwo+Pj4+PiBpbmRleCBjN2Q0YzYwNzNlYTUuLmExZWU4YzE1NmE3YiAxMDA2NDQKPj4+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYwo+Pj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jCj4+Pj4+IEBA IC05MTIsMzAgKzkxMiwzMSBAQCBzdGF0aWMgdm9pZCB2b3BfcGxhbmVfYXRvbWljX2FzeW5jX3Vw ZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPj4+Pj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19zdGF0ZSkKPj4+Pj4g IHsKPj4+Pj4gICAgc3RydWN0IHZvcCAqdm9wID0gdG9fdm9wKHBsYW5lLT5zdGF0ZS0+Y3J0Yyk7 Cj4+Pj4+IC0gIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwo+Pj4+PiArICBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpvbGRfZmIgPSBwbGFuZS0+c3RhdGUtPmZiOwo+Pj4+Pgo+ Pj4+PiAtICBwbGFuZV9zdGF0ZSA9IHBsYW5lLT5mdW5jcy0+YXRvbWljX2R1cGxpY2F0ZV9zdGF0 ZShwbGFuZSk7Cj4+Pj4+IC0gIHBsYW5lX3N0YXRlLT5jcnRjX3ggPSBuZXdfc3RhdGUtPmNydGNf eDsKPj4+Pj4gLSAgcGxhbmVfc3RhdGUtPmNydGNfeSA9IG5ld19zdGF0ZS0+Y3J0Y195Owo+Pj4+ PiAtICBwbGFuZV9zdGF0ZS0+Y3J0Y19oID0gbmV3X3N0YXRlLT5jcnRjX2g7Cj4+Pj4+IC0gIHBs YW5lX3N0YXRlLT5jcnRjX3cgPSBuZXdfc3RhdGUtPmNydGNfdzsKPj4+Pj4gLSAgcGxhbmVfc3Rh dGUtPnNyY194ID0gbmV3X3N0YXRlLT5zcmNfeDsKPj4+Pj4gLSAgcGxhbmVfc3RhdGUtPnNyY195 ID0gbmV3X3N0YXRlLT5zcmNfeTsKPj4+Pj4gLSAgcGxhbmVfc3RhdGUtPnNyY19oID0gbmV3X3N0 YXRlLT5zcmNfaDsKPj4+Pj4gLSAgcGxhbmVfc3RhdGUtPnNyY193ID0gbmV3X3N0YXRlLT5zcmNf dzsKPj4+Pj4gLQo+Pj4+PiAtICBpZiAocGxhbmVfc3RhdGUtPmZiICE9IG5ld19zdGF0ZS0+ZmIp Cj4+Pj4+IC0gICAgICAgICAgZHJtX2F0b21pY19zZXRfZmJfZm9yX3BsYW5lKHBsYW5lX3N0YXRl LCBuZXdfc3RhdGUtPmZiKTsKPj4+Pj4gLQo+Pj4+PiAtICBzd2FwKHBsYW5lX3N0YXRlLCBwbGFu ZS0+c3RhdGUpOwo+Pj4+PiAtCj4+Pj4+IC0gIGlmIChwbGFuZS0+c3RhdGUtPmZiICYmIHBsYW5l LT5zdGF0ZS0+ZmIgIT0gbmV3X3N0YXRlLT5mYikgewo+Pj4+PiArICAvKgo+Pj4+PiArICAgKiBB IHNjYW5vdXQgY2FuIHN0aWxsIGJlIG9jY3VycmluZywgc28gd2UgY2FuJ3QgZHJvcCB0aGUgcmVm ZXJlbmNlIHRvCj4+Pj4+ICsgICAqIHRoZSBvbGQgZnJhbWVidWZmZXIuIFRvIHNvbHZlIHRoaXMg d2UgZ2V0IGEgcmVmZXJlbmNlIHRvIG9sZF9mYiBhbmQKPj4+Pj4gKyAgICogc2V0IGEgd29ya2Vy IHRvIHJlbGVhc2UgaXQgbGF0ZXIuCj4+Pj4KPj4+PiBIbSwgZG9lc24ndCBsb29rIGxpa2UgYW4g YXN5bmMgdXBkYXRlIHRvIG1lIGlmIHdlIGhhdmUgdG8gd2FpdCBmb3IgdGhlCj4+Pj4gbmV4dCBW QkxBTksgdG8gaGFwcGVuIHRvIGdldCB0aGUgbmV3IGNvbnRlbnQgb24gdGhlIHNjcmVlbi4gTWF5 YmUgd2UKPj4+PiBzaG91bGQgcmVqZWN0IGFzeW5jIHVwZGF0ZXMgd2hlbiBvbGRfZmIgIT0gbmV3 X2ZiIGluIHRoZSByawo+Pj4+IC0+YXN5bmNfY2hlY2soKSBob29rLgo+Pj4KPj4+IFVubGVzcyBJ IGFtIG1pc3VuZGVyc3RhbmRpbmcgdGhpcywgd2UgZG9uJ3Qgd2FpdCBoZXJlLCB3ZSBqdXN0IGdy YWIgYQo+Pj4gcmVmZXJlbmNlIHRvIHRoZSBmYiBpbiBjYXNlIGl0IGlzIGJlaW5nIHN0aWxsIHVz ZWQgYnkgdGhlIGh3LCBzbyBpdAo+Pj4gZG9lc24ndCBnZXQgcmVsZWFzZWQgcHJlbWF0dXJlbHku Cj4+Cj4+IEkgd2FzIGp1c3QgcmVhY3RpbmcgdG8gdGhlIGNvbW1lbnQgdGhhdCBzYXlzIHRoZSBu ZXcgRkIgc2hvdWxkIHN0YXkKPj4gYXJvdW5kIHVudGlsIHRoZSBuZXh0IFZCTEFOSyBldmVudCBo YXBwZW5zLiBJZiB0aGUgRkIgbXVzdCBzdGF5IGFyb3VuZAo+PiB0aGF0IHByb2JhYmx5IG1lYW5z IHRoZSBIVyBpcyBzdGlsbCB1c2luZywgd2hpY2ggbWFkZSBtZSB3b25kZXIgaWYgdGhpcwo+PiBI VyBhY3R1YWxseSBzdXBwb3J0cyBhc3luYyB1cGRhdGUgKHdoZXJlIGFzeW5jIG1lYW5zICJ1cGRh dGUgbm93IGFuZAo+PiBkb24ndCBjYXJlIGFib3V0IGFib3V0IHRlYXJpbmciKS4gT3IgbWF5YmUg aXQgdGFrZXMgc29tZSB0aW1lIHRvIHN3aXRjaAo+PiB0byB0aGUgbmV3IEZCIGFuZCB3YWl0aW5n IGZvciB0aGUgbmV4dCBWQkxBTksgdG8gcmVsZWFzZSB0aGUgb2xkIEZCIHdhcwo+PiBhbiBlYXN5 IHNvbHV0aW9uIHRvIG5vdCB3YWl0IGZvciB0aGUgZmxpcCB0byBhY3R1YWxseSBoYXBwZW4gaW4K Pj4gLT5hc3luY191cGRhdGUoKSAod2hpY2ggaXMga2luZCBvZiBhIGNvbWJpbmF0aW9uIG9mIGFz eW5jK25vbi1ibG9ja2luZykuCj4gCj4gVGhlIGhhcmR3YXJlIHN3aXRjaGVzIGZyYW1lYnVmZmVy cyBvbiB2YmxhbmssIHNvIHdoYXRldmVyIGZyYW1lYnVmZmVyCj4gaXMgY3VycmVudGx5IGJlaW5n IHNjYW5uZWQgb3V0IGZyb20gbmVlZHMgdG8gc3RheSB0aGVyZSB1bnRpbCB0aGUKPiBoYXJkd2Fy ZSBzd2l0Y2hlcyB0byB0aGUgbmV3IG9uZSBpbiBzaGFkb3cgcmVnaXN0ZXJzLiBJZiB0aGF0IGRv ZXNuJ3QKPiBoYXBwZW4sIHlvdSBnZXQgSU9NTVUgZmF1bHRzIGFuZCB0aGUgZGlzcGxheSBjb250 cm9sbGVyIHN0b3BzIHdvcmtpbmcKPiBzaW5jZSB3ZSBkb24ndCBoYXZlIGFueSBmYXVsdCBoYW5k bGluZyBjdXJyZW50bHksIGp1c3QgcHJpbnRpbmcgYQo+IG1lc3NhZ2UuCgpTb3VuZHMgbGlrZSB5 b3VyIGhhcmR3YXJlIGRvZXNuJ3QgYWN0dWFsbHkgc3VwcG9ydCBhc3luYyBmbGlwcy4gSXQncwpw cm9iYWJseSBiZXR0ZXIgZm9yIHRoZSBkcml2ZXIgbm90IHRvIHByZXRlbmQgb3RoZXJ3aXNlLgoK Ci0tIApFYXJ0aGxpbmcgTWljaGVsIETDpG56ZXIgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICBodHRwczovL3d3dy5hbWQuY29tCkxpYnJlIHNvZnR3YXJlIGVudGh1c2lhc3QgICAgICAgICAg ICAgfCAgICAgICAgICAgICBNZXNhIGFuZCBYIGRldmVsb3BlcgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxp c3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=