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=-13.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 BBA26C49EA5 for ; Wed, 23 Jun 2021 12:18:57 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 5BCD861002 for ; Wed, 23 Jun 2021 12:18:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5BCD861002 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 97BC76E8CF; Wed, 23 Jun 2021 12:18:50 +0000 (UTC) Received: from mail-oi1-x231.google.com (mail-oi1-x231.google.com [IPv6:2607:f8b0:4864:20::231]) by gabe.freedesktop.org (Postfix) with ESMTPS id C238F6E8CF for ; Wed, 23 Jun 2021 12:18:48 +0000 (UTC) Received: by mail-oi1-x231.google.com with SMTP id 84so3129347oie.2 for ; Wed, 23 Jun 2021 05:18:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=DhZ7INqfjMkrIqqscqZr1FgEv7Thc3LBimm6s6d3jWQ=; b=Tpxb+E8Xh/onR1scIQsva+bFRIrA1PacGN/9EtTOTlr4VOl+hpcdeBctINqa5cuTfL 00yGrH9/eRZsi4JGrEO4mmvcOynx/jERBJ282uGidC5H1orZtiGlGI39vBUazGTB1Zqo 7ti8gIS8xas7gRR1dL9cgcTmv22hePZUNtomA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=DhZ7INqfjMkrIqqscqZr1FgEv7Thc3LBimm6s6d3jWQ=; b=ZF2vSwImtbMqe0XqHTr1olnNR2gK3nkeCkt1V3lbETLDw6xUo0xWRyhqsakvSQV0hd phrAFWY9KMbJPbDINZ2UdseLRa6Jy4CSM2JPDM6czqBXe4KykcR6/HSx0jt/wMTya7CN Vir2TwBu8mv+dAj+gPmxdesp5QxzfwrN4N+R+W23TgxBR669GL0z41AwoVPsXB5K58za s/gjb6LX/Gaddclc6FCduaC6wWoVgYWxTsflg9rpT2AjrOFPaNxNhghJghAxSh6Zs2CS Q1wak47364/hyquQZxUmAD4feD9yht1nGwXVY0R3PFun6oeciDSrHtv1zxq5VV0p1DZn Stdw== X-Gm-Message-State: AOAM533r7SAmTSpsdWmk6/Gzq/nPhlyLitLEgpPYom2J6K5xRATusboe hyl4wd6/e21VTHWRyV3e+HWTxAZkyVqTsT5IAX4XjQ== X-Google-Smtp-Source: ABdhPJyIkt4ftwgh1jZOld/prk5IZrQQ2XEpd2Y37zmuecslQf4c0cxS3DRuv+GAr2BBxh/u/cRfm8sa6sV+li/1BOQ= X-Received: by 2002:a54:4889:: with SMTP id r9mr2930612oic.101.1624450728097; Wed, 23 Jun 2021 05:18:48 -0700 (PDT) MIME-Version: 1.0 References: <20210622165511.3169559-1-daniel.vetter@ffwll.ch> <20210622165511.3169559-16-daniel.vetter@ffwll.ch> In-Reply-To: From: Daniel Vetter Date: Wed, 23 Jun 2021 14:18:35 +0200 Message-ID: To: Bas Nieuwenhuizen Subject: Re: [Intel-gfx] [PATCH 15/15] RFC: drm/amdgpu: Implement a proper implicit fencing uapi X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Rob Clark , Daniel Stone , =?UTF-8?Q?Christian_K=C3=B6nig?= , Intel Graphics Development , Kevin Wang , DRI Development , Sumit Semwal , "moderated list:DMA BUFFER SHARING FRAMEWORK" , Luben Tuikov , "Kristian H . Kristensen" , Chen Li , Daniel Vetter , Alex Deucher , mesa-dev , Dave Airlie , =?UTF-8?Q?Michel_D=C3=A4nzer?= , Dennis Li , Deepak R Varma Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gV2VkLCBKdW4gMjMsIDIwMjEgYXQgMTE6NDUgQU0gQmFzIE5pZXV3ZW5odWl6ZW4KPGJhc0Bi YXNuaWV1d2VuaHVpemVuLm5sPiB3cm90ZToKPgo+IE9uIFR1ZSwgSnVuIDIyLCAyMDIxIGF0IDY6 NTUgUE0gRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4gd3JvdGU6Cj4gPgo+ ID4gV0FSTklORzogQWJzb2x1dGVseSB1bnRlc3RlZCBiZXlvbmQgImdjYyBpc24ndCBkeWluZyBp biBhZ29ueSIuCj4gPgo+ID4gSW1wbGljaXQgZmVuY2luZyBkb25lIHByb3Blcmx5IG5lZWRzIHRv IHRyZWF0IHRoZSBpbXBsaWNpdCBmZW5jaW5nCj4gPiBzbG90cyBsaWtlIGEgZnVubnkga2luZCBv ZiBJUEMgbWFpbGJveC4gSW4gb3RoZXIgd29yZHMgaXQgbmVlZHMgdG8gYmUKPiA+IGV4cGxpY2l0 bHkuIFRoaXMgaXMgdGhlIG9ubHkgd2F5IGl0IHdpbGwgbWVzaCB3ZWxsIHdpdGggZXhwbGljaXQK PiA+IGZlbmNpbmcgdXNlcnNwYWNlIGxpa2UgdmssIGFuZCBpdCdzIGFsc28gdGhlIGJhcmUgbWlu aW11bSByZXF1aXJlZCB0bwo+ID4gYmUgYWJsZSB0byBtYW5hZ2UgYW55dGhpbmcgZWxzZSB0aGF0 IHdhbnRzIHRvIHVzZSB0aGUgc2FtZSBidWZmZXIgb24KPiA+IG11bHRpcGxlIGVuZ2luZXMgaW4g cGFyYWxsZWwsIGFuZCBzdGlsbCBiZSBhYmxlIHRvIHNoYXJlIGl0IHRocm91Z2gKPiA+IGltcGxp Y2l0IHN5bmMuCj4gPgo+ID4gYW1kZ3B1IGNvbXBsZXRlbHkgbGFja3Mgc3VjaCBhbiB1YXBpLiBG aXggdGhpcy4KPiA+Cj4gPiBMdWNraWx5IHRoZSBjb25jZXB0IG9mIGlnbm9yaW5nIGltcGxpY2l0 IGZlbmNlcyBleGlzdHMgYWxyZWFkeSwgYW5kCj4gPiB0YWtlcyBjYXJlIG9mIGFsbCB0aGUgY29t cGxleGl0aWVzIG9mIG1ha2luZyBzdXJlIHRoYXQgbm9uLW9wdGlvbmFsCj4gPiBmZW5jZXMgKGxp a2UgYm8gbW92ZXMpIGFyZSBub3QgaWdub3JlZC4gVGhpcyBzdXBwb3J0IHdhcyBhZGRlZCBpbgo+ ID4KPiA+IGNvbW1pdCAxNzdhZTA5YjVkNjk5YTVlYmQxY2FmY2VlNzg4ODlkYjk2OGFiZjU0Cj4g PiBBdXRob3I6IEFuZHJlcyBSb2RyaWd1ZXogPGFuZHJlc3g3QGdtYWlsLmNvbT4KPiA+IERhdGU6 ICAgRnJpIFNlcCAxNSAyMDo0NDowNiAyMDE3IC0wNDAwCj4gPgo+ID4gICAgIGRybS9hbWRncHU6 IGludHJvZHVjZSBBTURHUFVfR0VNX0NSRUFURV9FWFBMSUNJVF9TWU5DIHYyCj4gPgo+ID4gVW5m b3J0dWFudGVseSBpdCdzIHRoZSB3cm9uZyBzZW1hbnRpY3MsIGJlY2F1c2UgaXQncyBhIGJvIGZs YWcgYW5kCj4gPiBkaXNhYmxlcyBpbXBsaWNpdCBzeW5jIG9uIGFuIGFsbG9jYXRlZCBidWZmZXIg Y29tcGxldGVseS4KPiA+Cj4gPiBXZSBfZG9fIHdhbnQgaW1wbGljaXQgc3luYywgYnV0IGNvbnRy b2wgaXQgZXhwbGljaXRseS4gRm9yIHRoaXMgd2UKPiA+IG5lZWQgYSBmbGFnIG9uIHRoZSBkcm1f ZmlsZSwgc28gdGhhdCBhIGdpdmVuIHVzZXJzcGFjZSAobGlrZSB2dWxrYW4pCj4gPiBjYW4gbWFu YWdlIHRoZSBpbXBsaWNpdCBzeW5jIHNsb3RzIGV4cGxpY2l0bHkuIFRoZSBvdGhlciBzaWRlIG9m IHRoZQo+ID4gcGlwZWxpbmUgKGNvbXBvc2l0b3IsIG90aGVyIHByb2Nlc3Mgb3IganVzdCBkaWZm ZXJlbnQgc3RhZ2UgaW4gYSBtZWRpYQo+ID4gcGlwZWxpbmUgaW4gdGhlIHNhbWUgcHJvY2Vzcykg Y2FuIHRoZW4gZWl0aGVyIGRvIHRoZSBzYW1lLCBvciBmdWxseQo+ID4gcGFydGljaXBhdGUgaW4g dGhlIGltcGxpY2l0IHN5bmMgYXMgaW1wbGVtZW50ZWQgYnkgdGhlIGtlcm5lbCBieQo+ID4gZGVm YXVsdC4KPiA+Cj4gPiBCeSBidWlsZGluZyBvbiB0aGUgZXhpc3RpbmcgZmxhZyBmb3IgYnVmZmVy cyB3ZSBhdm9pZCBhbnkgaXNzdWVzIHdpdGgKPiA+IG9wZW5pbmcgdXAgYWRkaXRpb25hbCBzZWN1 cml0eSBjb25jZXJucyAtIGFueXRoaW5nIHRoaXMgbmV3IGZsYWcgaGVyZQo+ID4gYWxsb3dzIGlz IGFscmVhZHkuCj4gPgo+ID4gQWxsIGRyaXZlcnMgd2hpY2ggc3VwcG9ydHMgdGhpcyBjb25jZXB0 IG9mIGEgdXNlcnNwYWNlLXNwZWNpZmljCj4gPiBvcHQtb3V0IG9mIGltcGxpY2l0IHN5bmMgaGF2 ZSBhIGZsYWcgaW4gdGhlaXIgQ1MgaW9jdGwsIGJ1dCBpbiByZWFsaXR5Cj4gPiB0aGF0IHR1cm5l ZCBvdXQgdG8gYmUgYSBiaXQgdG9vIGluZmxleGlibGUuIFNlZSB0aGUgZGlzY3Vzc2lvbiBiZWxv dywKPiA+IGxldCdzIHRyeSB0byBkbyBhIGJpdCBiZXR0ZXIgZm9yIGFtZGdwdS4KPiA+Cj4gPiBU aGlzIGFsb25lIG9ubHkgYWxsb3dzIHVzIHRvIGNvbXBsZXRlbHkgYXZvaWQgYW55IHN0YWxscyBk dWUgdG8KPiA+IGltcGxpY2l0IHN5bmMsIGl0IGRvZXMgbm90IHlldCBhbGxvdyB1cyB0byB1c2Ug aW1wbGljaXQgc3luYyBhcyBhCj4gPiBzdHJhbmdlIGZvcm0gb2YgSVBDIGZvciBzeW5jX2ZpbGUu Cj4gPgo+ID4gRm9yIHRoYXQgd2UgbmVlZCB0d28gbW9yZSBwaWVjZXM6Cj4gPgo+ID4gLSBhIHdh eSB0byBnZXQgdGhlIGN1cnJlbnQgaW1wbGljaXQgc3luYyBmZW5jZXMgb3V0IG9mIGEgYnVmZmVy LiBDb3VsZAo+ID4gICBiZSBkb25lIGluIGEgZHJpdmVyIGlvY3RsLCBidXQgZXZlcnlvbmUgbmVl ZHMgdGhpcywgYW5kIGdlbmVyYWxseSBhCj4gPiAgIGRtYS1idWYgaXMgaW52b2x2ZWQgYW55d2F5 IHRvIGVzdGFibGlzaCB0aGUgc2hhcmluZy4gU28gYW4gaW9jdGwgb24KPiA+ICAgdGhlIGRtYS1i dWYgbWFrZXMgYSB0b24gbW9yZSBzZW5zZToKPiA+Cj4gPiAgIGh0dHBzOi8vbG9yZS5rZXJuZWwu b3JnL2RyaS1kZXZlbC8yMDIxMDUyMDE5MDAwNy41MzQwNDYtNC1qYXNvbkBqbGVrc3RyYW5kLm5l dC8KPiA+Cj4gPiAgIEN1cnJlbnQgZHJpdmVycyBpbiB1cHN0cmVhbSBzb2x2ZXMgdGhpcyBieSBo YXZpbmcgdGhlIG9wdC1vdXQgZmxhZwo+ID4gICBvbiB0aGVpciBDUyBpb2N0bC4gVGhpcyBoYXMg dGhlIGRvd25zaWRlIHRoYXQgdmVyeSBvZnRlbiB0aGUgQ1MKPiA+ICAgd2hpY2ggbXVzdCBhY3R1 YWxseSBzdGFsbCBmb3IgdGhlIGltcGxpY2l0IGZlbmNlIGlzIHJ1biBhIHdoaWxlCj4gPiAgIGFm dGVyIHRoZSBpbXBsaWNpdCBmZW5jZSBwb2ludCB3YXMgbG9naWNhbGx5IHNhbXBsZWQgcGVyIHRo ZSBhcGkKPiA+ICAgc3BlYyAodmsgcGFzc2VzIGFuIGV4cGxpY2l0IHN5bmNvYmogYXJvdW5kIGZv ciB0aGF0IGFmYWl1aSksIGFuZCBzbwo+ID4gICByZXN1bHRzIGluIG92ZXJzeW5jLiBDb252ZXJ0 aW5nIHRoZSBpbXBsaWNpdCBzeW5jIGZlbmNlcyBpbnRvIGEKPiA+ICAgc25hcC1zaG90IHN5bmNf ZmlsZSBpcyBhY3R1YWxseSBhY2N1cmF0ZS4KPiA+Cj4gPiAtIFNpbWlsbGFyIHdlIG5lZWQgdG8g YmUgYWJsZSB0byBzZXQgdGhlIGV4Y2x1c2l2ZSBpbXBsaWNpdCBmZW5jZS4KPiA+ICAgQ3VycmVu dCBkcml2ZXJzIGFnYWluIGRvIHRoaXMgd2l0aCBhIENTIGlvY3RsIGZsYWcsIHdpdGggYWdhaW4g dGhlCj4gPiAgIHNhbWUgcHJvYmxlbXMgdGhhdCB0aGUgdGltZSB0aGUgQ1MgaGFwcGVucyBhZGRp dGlvbmFsIGRlcGVuZGVuY2llcwo+ID4gICBoYXZlIGJlZW4gYWRkZWQuIEFuIGV4cGxpY2l0IGlv Y3RsIHRvIG9ubHkgaW5zZXJ0IGEgc3luY19maWxlICh3aGlsZQo+ID4gICByZXNwZWN0aW5nIHRo ZSBydWxlcyBmb3IgaG93IGV4Y2x1c2l2ZSBhbmQgc2hhcmVkIGZlbmNlIHNsb3RzIG11c3QKPiA+ ICAgYmUgdXBkYXRlIGluIHN0cnVjdCBkbWFfcmVzdikgaXMgbXVjaCBiZXR0ZXIuIFRoaXMgaXMg cHJvcG9zZWQgaGVyZToKPiA+Cj4gPiAgIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2RyaS1kZXZl bC8yMDIxMDUyMDE5MDAwNy41MzQwNDYtNS1qYXNvbkBqbGVrc3RyYW5kLm5ldC8KPiA+Cj4gPiBU aGVzZSB0aHJlZSBwaWVjZXMgdG9nZXRoZXIgYWxsb3cgdXNlcnNwYWNlIHRvIGZ1bGx5IGNvbnRy b2wgaW1wbGljaXQKPiA+IGZlbmNpbmcgYW5kIHJlbW92ZSBhbGwgdW5lY2Vzc2FyeSBzdGFsbCBw b2ludHMgZHVlIHRvIHRoZW0uCj4gPgo+ID4gV2VsbCwgYXMgbXVjaCBhcyB0aGUgaW1wbGljaXQg ZmVuY2luZyBtb2RlbCBmdW5kYW1lbnRhbGx5IGFsbG93czoKPiA+IFRoZXJlIGlzIG9ubHkgb25l IHNldCBvZiBmZW5jZXMsIHlvdSBjYW4gb25seSBjaG9vc2UgdG8gc3luYyBhZ2FpbnN0Cj4gPiBv bmx5IHdyaXRlcnMgKGV4Y2x1c2l2ZSBzbG90KSwgb3IgZXZlcnlvbmUuIEhlbmNlIHN1YmFsbG9j YXRpbmcKPiA+IG11bHRpcGxlIGJ1ZmZlcnMgb3IgYW55dGhpbmcgZWxzZSBsaWtlIHRoaXMgaXMg ZnVuZGFtZW50YWxseSBub3QKPiA+IHBvc3NpYmxlLCBhbmQgY2FuIG9ubHkgYmUgZml4ZWQgYnkg YSBwcm9wZXIgZXhwbGljaXQgZmVuY2luZyBtb2RlbC4KPiA+Cj4gPiBBc2lkZSBmcm9tIHRoYXQg Y2F2ZWF0IHRoaXMgbW9kZWwgZ2V0cyBpbXBsaWNpdCBmZW5jaW5nIGFzIGNsb3NlbHkgdG8KPiA+ IGV4cGxpY2l0IGZlbmNpbmcgc2VtYW50aWNzIGFzIHBvc3NpYmxlOgo+ID4KPiA+IE9uIHRoZSBh Y3R1YWwgaW1wbGVtZW50YXRpb24gSSBvcHRlZCBmb3IgYSBzaW1wbGUgc2V0cGFyYW0gaW9jdGws IG5vCj4gPiBsb2NraW5nIChqdXN0IGF0b21pYyByZWFkcy93cml0ZXMpIGZvciBzaW1wbGljaXR5 LiBUaGVyZSBpcyBhIG5pY2UKPiA+IGZsYWcgcGFyYW1ldGVyIGluIHRoZSBWTSBpb2N0bCB3aGlj aCB3ZSBjb3VsZCB1c2UsIGV4Y2VwdDoKPiA+IC0gaXQncyBub3QgY2hlY2tlZCwgc28gdXNlcnNw YWNlIGxpa2VseSBwYXNzZXMgZ2FyYmFnZQo+ID4gLSB0aGVyZSdzIGFscmVhZHkgYSBjb21tZW50 IHRoYXQgdXNlcnNwYWNlIF9kb2VzXyBwYXNzIGdhcmJhZ2UgaW4gdGhlCj4gPiAgIHByaW9yaXR5 IGZpZWxkCj4gPiBTbyB5ZWFoIHVuZm9ydHVuYXRlbHkgdGhpcyBmbGFnIHBhcmFtZXRlciBmb3Ig c2V0dGluZyB2bSBmbGFncyBpcwo+ID4gdXNlbGVzcywgYW5kIHdlIG5lZWQgdG8gaGFjayB1cCBh IG5ldyBvbmUuCj4gPgo+ID4gdjI6IEV4cGxhaW4gd2h5IGEgbmV3IFNFVFBBUkFNIChKYXNvbikK PiA+Cj4gPiB2MzogQmFzIG5vdGljZWQgSSBmb3Jnb3QgdG8gaG9vayB1cCB0aGUgZGVwZW5kZW5j eS1zaWRlIHNob3J0Y3V0LiBXZQo+ID4gbmVlZCBib3RoLCBvciB0aGlzIGRvZXNuJ3QgZG8gbXVj aC4KPiA+Cj4gPiB2NDogUmViYXNlIG92ZXIgdGhlIGFtZGdwdSBwYXRjaCB0byBhbHdheXMgc2V0 IHRoZSBpbXBsaWNpdCBzeW5jCj4gPiBmZW5jZXMuCj4KPiBTbyBJIHRoaW5rIHRoZXJlIGlzIHN0 aWxsIGEgY2FzZSBtaXNzaW5nIGluIHRoaXMgaW1wbGVtZW50YXRpb24uCj4gQ29uc2lkZXIgdGhl c2UgMyBjYXNlcwo+Cj4gKGZvcm1hdDogYS0+YjogYiB3YWl0cyBvbiBhLiBZZXMsIEkga25vdyBh cnJvd3MgYXJlIGhhcmQpCj4KPiBleHBsaWNpdC0+ZXhwbGljaXQ6IFRoaXMgZG9lc24ndCB3YWl0 IG5vdywgd2hpY2ggaXMgZ29vZAo+IEltcGxpY2l0LT5leHBsaWNpdDogVGhpcyBkb2Vzbid0IHdh aXQgbm93LCB3aGljaCBpcyBnb29kCj4gZXhwbGljaXQtPmltcGxpY2l0IDogVGhpcyBzdGlsbCB3 YWl0cyBhcyB0aGUgZXhwbGljaXQgc3VibWlzc2lvbiBzdGlsbAo+IGFkZHMgc2hhcmVkIGZlbmNl cyBhbmQgbW9zdCB0aGluZ3MgdGhhdCBzZXQgYW4gZXhjbHVzaXZlIGZlbmNlIGZvcgo+IGltcGxp Y2l0IHN5bmMgd2lsbCBoZW5jZSB3YWl0IG9uIGl0Lgo+Cj4gVGhpcyBpcyBwcm9iYWJseSBnb29k IGVub3VnaCBmb3Igd2hhdCByYWR2IG5lZWRzIG5vdyBidXQgYWxzbyBzb3VuZHMKPiBsaWtlIGEg cmlzayB3cnQgYmFraW5nIGluIG5ldyB1YXBpIGJlaGF2aW9yIHRoYXQgd2UgZG9uJ3Qgd2FudCB0 byBiZQo+IHRoZSBlbmQgcmVzdWx0Lgo+Cj4gV2l0aGluIEFNREdQVSB0aGlzIGlzIHByb2JhYmx5 IHNvbHZhYmxlIGluIHR3byB3YXlzOgo+Cj4gMSkgRG93bmdyYWRlIEFNREdQVV9TWU5DX05FX09X TkVSIHRvIEFNREdQVV9TWU5DX0VYUExJQ0lUIGZvciBzaGFyZWQgZmVuY2VzLgoKSSdtIG5vdCBz dXJlIHRoYXQgd29ya3MuIEkgdGhpbmsgdGhlIHJpZ2h0IGZpeCBpcyB0aGF0IHJhZGVvbnNpIGFs c28Kc3dpdGNoZXMgdG8gdGhpcyBtb2RlbCwgd2l0aCBtYXliZSBhIHBlci1ibyBDUyBmbGFnIHRv IHNldCBpbmRpY2F0ZQp3cml0ZSBhY2Nlc3MsIHRvIGN1dCBkb3duIG9uIHRoZSBudW1iZXIgb2Yg aW9jdGxzIHRoYXQgYXJlIG5lZWRlZApvdGhlcndpc2Ugb24gc2hhcmVkIGJ1ZmZlcnMuIFRoaXMg cGVyLWJvIGZsYWcgd291bGQgZXNzZW50aWFsbHkgc2VsZWN0CmJldHdlZW4gU1lOQ19ORV9PV05F UiBhbmQgU1lOQ19FWFBMSUNJVCBvbiBhIHBlci1idWZmZXIgYmFzaXMuCgpUaGUgY3VycmVudCBh bWRncHUgdWFwaSBqdXN0IGRvZXNuJ3QgYWxsb3cgYW55IG90aGVyIG1vZGVsIHdpdGhvdXQgYW4K ZXhwbGljaXQgb3B0LWluLiBTbyBjdXJyZW50IGltcGxpY2l0IHN5bmMgdXNlcnNwYWNlIGp1c3Qg aGFzIHRvCm92ZXJzeW5jLCB0aGVyZSdzIG5vdCBtdWNoIGNob2ljZS4KCj4gMikgSGF2ZSBhbiBF WFBMSUNJVCBmZW5jZSBvd25lciB0aGF0IGlzIHVzZWQgZm9yIGV4cGxpY2l0IHN1Ym1pc3Npb25z Cj4gdGhhdCBpcyBpZ25vcmVkIGJ5IEFNREdQVV9TWU5DX05FX09XTkVSLgo+Cj4gQnV0IHRoaXMg ZG9lc24ndCBzb2x2ZSBjcm9zcy1kcml2ZXIgaW50ZXJhY3Rpb25zIGhlcmUuCgpZZWFoIGNyb3Nz LWRyaXZlciBpcyBzdGlsbCBlbnRpcmVseSB1bnNvbHZlZCwgYmVjYXVzZQphbWRncHVfYm9fZXhw bGljaXRfc3luYygpIG9uIHRoZSBibyBkaWRuJ3Qgc29sdmUgdGhhdCBlaXRoZXIuCi1EYW5pZWwK Cj4KPiA+Cj4gPiBDYzogbWVzYS1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBDYzogQmFz IE5pZXV3ZW5odWl6ZW4gPGJhc0BiYXNuaWV1d2VuaHVpemVuLm5sPgo+ID4gQ2M6IERhdmUgQWly bGllIDxhaXJsaWVkQGdtYWlsLmNvbT4KPiA+IENjOiBSb2IgQ2xhcmsgPHJvYmRjbGFya0BjaHJv bWl1bS5vcmc+Cj4gPiBDYzogS3Jpc3RpYW4gSC4gS3Jpc3RlbnNlbiA8aG9lZ3NiZXJnQGdvb2ds ZS5jb20+Cj4gPiBDYzogTWljaGVsIETDpG56ZXIgPG1pY2hlbEBkYWVuemVyLm5ldD4KPiA+IENj OiBEYW5pZWwgU3RvbmUgPGRhbmllbHNAY29sbGFib3JhLmNvbT4KPiA+IENjOiBTdW1pdCBTZW13 YWwgPHN1bWl0LnNlbXdhbEBsaW5hcm8ub3JnPgo+ID4gQ2M6ICJDaHJpc3RpYW4gS8O2bmlnIiA8 Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgo+ID4gQ2M6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVy LmRldWNoZXJAYW1kLmNvbT4KPiA+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZm d2xsLmNoPgo+ID4gQ2M6IERlZXBhayBSIFZhcm1hIDxtaDEyZ3gyODI1QGdtYWlsLmNvbT4KPiA+ IENjOiBDaGVuIExpIDxjaGVubGlAdW5pb250ZWNoLmNvbT4KPiA+IENjOiBLZXZpbiBXYW5nIDxr ZXZpbjEud2FuZ0BhbWQuY29tPgo+ID4gQ2M6IERlbm5pcyBMaSA8RGVubmlzLkxpQGFtZC5jb20+ Cj4gPiBDYzogTHViZW4gVHVpa292IDxsdWJlbi50dWlrb3ZAYW1kLmNvbT4KPiA+IENjOiBsaW5h cm8tbW0tc2lnQGxpc3RzLmxpbmFyby5vcmcKPiA+IFNpZ25lZC1vZmYtYnk6IERhbmllbCBWZXR0 ZXIgPGRhbmllbC52ZXR0ZXJAaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMgIHwgIDcgKysrKystLQo+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYyB8IDIxICsrKysrKysrKysrKysrKysrKysrKwo+ID4g IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5oICB8ICA2ICsrKysrKwo+ID4g IGluY2x1ZGUvdWFwaS9kcm0vYW1kZ3B1X2RybS5oICAgICAgICAgICB8IDEwICsrKysrKysrKysK PiA+ICA0IGZpbGVzIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4g Pgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMKPiA+IGluZGV4IDY1ZGYz NGMxNzI2NC4uYzUzODZkMTNlYjRhIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2NzLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9jcy5jCj4gPiBAQCAtNDk4LDYgKzQ5OCw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2Nz X3BhcnNlcl9ib3Moc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsCj4gPiAgICAgICAgIHN0cnVj dCBhbWRncHVfYm8gKmdkczsKPiA+ICAgICAgICAgc3RydWN0IGFtZGdwdV9ibyAqZ3dzOwo+ID4g ICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2JvICpvYTsKPiA+ICsgICAgICAgYm9vbCBub19pbXBsaWNp dF9zeW5jID0gUkVBRF9PTkNFKGZwcml2LT52bS5ub19pbXBsaWNpdF9zeW5jKTsKPiA+ICAgICAg ICAgaW50IHI7Cj4gPgo+ID4gICAgICAgICBJTklUX0xJU1RfSEVBRCgmcC0+dmFsaWRhdGVkKTsK PiA+IEBAIC01NzcsNyArNTc4LDggQEAgc3RhdGljIGludCBhbWRncHVfY3NfcGFyc2VyX2Jvcyhz dHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCwKPiA+Cj4gPiAgICAgICAgICAgICAgICAgZS0+Ym9f dmEgPSBhbWRncHVfdm1fYm9fZmluZCh2bSwgYm8pOwo+ID4KPiA+IC0gICAgICAgICAgICAgICBp ZiAoYm8tPnRiby5iYXNlLmRtYV9idWYgJiYgIWFtZGdwdV9ib19leHBsaWNpdF9zeW5jKGJvKSkg ewo+ID4gKyAgICAgICAgICAgICAgIGlmIChiby0+dGJvLmJhc2UuZG1hX2J1ZiAmJgo+ID4gKyAg ICAgICAgICAgICAgICAgICAhKG5vX2ltcGxpY2l0X3N5bmMgfHwgYW1kZ3B1X2JvX2V4cGxpY2l0 X3N5bmMoYm8pKSkgewo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgZS0+Y2hhaW4gPSBkbWFf ZmVuY2VfY2hhaW5fYWxsb2MoKTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZS0+ Y2hhaW4pIHsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IC1FTk9NRU07 Cj4gPiBAQCAtNjQ5LDYgKzY1MSw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2NzX3N5bmNfcmluZ3Mo c3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnApCj4gPiAgewo+ID4gICAgICAgICBzdHJ1Y3QgYW1k Z3B1X2Zwcml2ICpmcHJpdiA9IHAtPmZpbHAtPmRyaXZlcl9wcml2Owo+ID4gICAgICAgICBzdHJ1 Y3QgYW1kZ3B1X2JvX2xpc3RfZW50cnkgKmU7Cj4gPiArICAgICAgIGJvb2wgbm9faW1wbGljaXRf c3luYyA9IFJFQURfT05DRShmcHJpdi0+dm0ubm9faW1wbGljaXRfc3luYyk7Cj4gPiAgICAgICAg IGludCByOwo+ID4KPiA+ICAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShlLCAmcC0+dmFsaWRh dGVkLCB0di5oZWFkKSB7Cj4gPiBAQCAtNjU2LDcgKzY1OSw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1 X2NzX3N5bmNfcmluZ3Moc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnApCj4gPiAgICAgICAgICAg ICAgICAgc3RydWN0IGRtYV9yZXN2ICpyZXN2ID0gYm8tPnRiby5iYXNlLnJlc3Y7Cj4gPiAgICAg ICAgICAgICAgICAgZW51bSBhbWRncHVfc3luY19tb2RlIHN5bmNfbW9kZTsKPiA+Cj4gPiAtICAg ICAgICAgICAgICAgc3luY19tb2RlID0gYW1kZ3B1X2JvX2V4cGxpY2l0X3N5bmMoYm8pID8KPiA+ ICsgICAgICAgICAgICAgICBzeW5jX21vZGUgPSBub19pbXBsaWNpdF9zeW5jIHx8IGFtZGdwdV9i b19leHBsaWNpdF9zeW5jKGJvKSA/Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBBTURHUFVf U1lOQ19FWFBMSUNJVCA6IEFNREdQVV9TWU5DX05FX09XTkVSOwo+ID4gICAgICAgICAgICAgICAg IHIgPSBhbWRncHVfc3luY19yZXN2KHAtPmFkZXYsICZwLT5qb2ItPnN5bmMsIHJlc3YsIHN5bmNf bW9kZSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZnByaXYtPnZt KTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2 LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMKPiA+IGluZGV4IGMw ODBiYTE1YWU3Ny4uZjk4MjYyNmI1MzI4IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfZHJ2LmMKPiA+IEBAIC0xNzI0LDYgKzE3MjQsMjYgQEAgaW50IGFtZGdwdV9m aWxlX3RvX2Zwcml2KHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3QgYW1kZ3B1X2Zwcml2ICoqZnBy aXYpCj4gPiAgICAgICAgIHJldHVybiAwOwo+ID4gIH0KPiA+Cj4gPiAraW50IGFtZGdwdV9zZXRw YXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApCj4gPiArewo+ID4gKyAg ICAgICBzdHJ1Y3QgZHJtX2FtZGdwdV9zZXRwYXJhbSAqc2V0cGFyYW0gPSBkYXRhOwo+ID4gKyAg ICAgICBzdHJ1Y3QgYW1kZ3B1X2Zwcml2ICpmcHJpdiA9IGZpbHAtPmRyaXZlcl9wcml2Owo+ID4g Kwo+ID4gKyAgICAgICBzd2l0Y2ggKHNldHBhcmFtLT5wYXJhbSkgewo+ID4gKyAgICAgICBjYXNl IEFNREdQVV9TRVRQQVJBTV9OT19JTVBMSUNJVF9TWU5DOgo+ID4gKyAgICAgICAgICAgICAgIGlm IChzZXRwYXJhbS0+dmFsdWUpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBXUklURV9PTkNF KGZwcml2LT52bS5ub19pbXBsaWNpdF9zeW5jLCB0cnVlKTsKPiA+ICsgICAgICAgICAgICAgICBl bHNlCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBXUklURV9PTkNFKGZwcml2LT52bS5ub19p bXBsaWNpdF9zeW5jLCBmYWxzZSk7Cj4gPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiArICAg ICAgIGRlZmF1bHQ6Cj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiArICAg ICAgIH0KPiA+ICsKPiA+ICsgICAgICAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gIGNvbnN0 IHN0cnVjdCBkcm1faW9jdGxfZGVzYyBhbWRncHVfaW9jdGxzX2ttc1tdID0gewo+ID4gICAgICAg ICBEUk1fSU9DVExfREVGX0RSVihBTURHUFVfR0VNX0NSRUFURSwgYW1kZ3B1X2dlbV9jcmVhdGVf aW9jdGwsIERSTV9BVVRIfERSTV9SRU5ERVJfQUxMT1cpLAo+ID4gICAgICAgICBEUk1fSU9DVExf REVGX0RSVihBTURHUFVfQ1RYLCBhbWRncHVfY3R4X2lvY3RsLCBEUk1fQVVUSHxEUk1fUkVOREVS X0FMTE9XKSwKPiA+IEBAIC0xNzQyLDYgKzE3NjIsNyBAQCBjb25zdCBzdHJ1Y3QgZHJtX2lvY3Rs X2Rlc2MgYW1kZ3B1X2lvY3Rsc19rbXNbXSA9IHsKPiA+ICAgICAgICAgRFJNX0lPQ1RMX0RFRl9E UlYoQU1ER1BVX0dFTV9WQSwgYW1kZ3B1X2dlbV92YV9pb2N0bCwgRFJNX0FVVEh8RFJNX1JFTkRF Ul9BTExPVyksCj4gPiAgICAgICAgIERSTV9JT0NUTF9ERUZfRFJWKEFNREdQVV9HRU1fT1AsIGFt ZGdwdV9nZW1fb3BfaW9jdGwsIERSTV9BVVRIfERSTV9SRU5ERVJfQUxMT1cpLAo+ID4gICAgICAg ICBEUk1fSU9DVExfREVGX0RSVihBTURHUFVfR0VNX1VTRVJQVFIsIGFtZGdwdV9nZW1fdXNlcnB0 cl9pb2N0bCwgRFJNX0FVVEh8RFJNX1JFTkRFUl9BTExPVyksCj4gPiArICAgICAgIERSTV9JT0NU TF9ERUZfRFJWKEFNREdQVV9TRVRQQVJBTSwgYW1kZ3B1X3NldHBhcmFtX2lvY3RsLCBEUk1fQVVU SHxEUk1fUkVOREVSX0FMTE9XKSwKPiA+ICB9Owo+ID4KPiA+ICBzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9kcml2ZXIgYW1kZ3B1X2ttc19kcml2ZXIgPSB7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfdm0uaAo+ID4gaW5kZXggZGRiODVhODVjYmJhLi4wZThjNDQwYzYzMDMgMTAw NjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uaAo+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmgKPiA+IEBAIC0zMjEs NiArMzIxLDEyIEBAIHN0cnVjdCBhbWRncHVfdm0gewo+ID4gICAgICAgICBib29sICAgICAgICAg ICAgICAgICAgICBidWxrX21vdmVhYmxlOwo+ID4gICAgICAgICAvKiBGbGFnIHRvIGluZGljYXRl IGlmIFZNIGlzIHVzZWQgZm9yIGNvbXB1dGUgKi8KPiA+ICAgICAgICAgYm9vbCAgICAgICAgICAg ICAgICAgICAgaXNfY29tcHV0ZV9jb250ZXh0Owo+ID4gKyAgICAgICAvKgo+ID4gKyAgICAgICAg KiBGbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgaW1wbGljaXQgc3luYyBzaG91bGQgYWx3YXlzIGJl IHNraXBwZWQgb24KPiA+ICsgICAgICAgICogdGhpcyBjb250ZXh0LiBXZSBkbyBub3QgY2FyZSBh Ym91dCByYWNlcyBhdCBhbGwsIHVzZXJzcGFjZSBpcyBhbGxvd2VkCj4gPiArICAgICAgICAqIHRv IHNob290IGl0c2VsZiB3aXRoIGltcGxpY2l0IHN5bmMgdG8gaXRzIGZ1bGxlc3QgbGlraW5nLgo+ ID4gKyAgICAgICAgKi8KPiA+ICsgICAgICAgYm9vbCBub19pbXBsaWNpdF9zeW5jOwo+ID4gIH07 Cj4gPgo+ID4gIHN0cnVjdCBhbWRncHVfdm1fbWFuYWdlciB7Cj4gPiBkaWZmIC0tZ2l0IGEvaW5j bHVkZS91YXBpL2RybS9hbWRncHVfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2FtZGdwdV9kcm0u aAo+ID4gaW5kZXggMGNiZDE1NDBhZWFjLi45ZWFlMjQ1YzE0ZDYgMTAwNjQ0Cj4gPiAtLS0gYS9p bmNsdWRlL3VhcGkvZHJtL2FtZGdwdV9kcm0uaAo+ID4gKysrIGIvaW5jbHVkZS91YXBpL2RybS9h bWRncHVfZHJtLmgKPiA+IEBAIC01NCw2ICs1NCw3IEBAIGV4dGVybiAiQyIgewo+ID4gICNkZWZp bmUgRFJNX0FNREdQVV9WTSAgICAgICAgICAgICAgICAgIDB4MTMKPiA+ICAjZGVmaW5lIERSTV9B TURHUFVfRkVOQ0VfVE9fSEFORExFICAgICAweDE0Cj4gPiAgI2RlZmluZSBEUk1fQU1ER1BVX1ND SEVEICAgICAgICAgICAgICAgMHgxNQo+ID4gKyNkZWZpbmUgRFJNX0FNREdQVV9TRVRQQVJBTSAg ICAgICAgICAgIDB4MTYKPiA+Cj4gPiAgI2RlZmluZSBEUk1fSU9DVExfQU1ER1BVX0dFTV9DUkVB VEUgICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9BTURHUFVfR0VNX0NSRUFURSwg dW5pb24gZHJtX2FtZGdwdV9nZW1fY3JlYXRlKQo+ID4gICNkZWZpbmUgRFJNX0lPQ1RMX0FNREdQ VV9HRU1fTU1BUCAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fQU1ER1BVX0dF TV9NTUFQLCB1bmlvbiBkcm1fYW1kZ3B1X2dlbV9tbWFwKQo+ID4gQEAgLTcxLDYgKzcyLDcgQEAg ZXh0ZXJuICJDIiB7Cj4gPiAgI2RlZmluZSBEUk1fSU9DVExfQU1ER1BVX1ZNICAgICAgICAgICAg RFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9BTURHUFVfVk0sIHVuaW9uIGRybV9hbWRn cHVfdm0pCj4gPiAgI2RlZmluZSBEUk1fSU9DVExfQU1ER1BVX0ZFTkNFX1RPX0hBTkRMRSBEUk1f SU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0FNREdQVV9GRU5DRV9UT19IQU5ETEUsIHVuaW9u IGRybV9hbWRncHVfZmVuY2VfdG9faGFuZGxlKQo+ID4gICNkZWZpbmUgRFJNX0lPQ1RMX0FNREdQ VV9TQ0hFRCAgICAgICAgIERSTV9JT1coRFJNX0NPTU1BTkRfQkFTRSArIERSTV9BTURHUFVfU0NI RUQsIHVuaW9uIGRybV9hbWRncHVfc2NoZWQpCj4gPiArI2RlZmluZSBEUk1fSU9DVExfQU1ER1BV X1NFVFBBUkFNICAgICAgRFJNX0lPVyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX0FNREdQVV9TRVRQ QVJBTSwgc3RydWN0IGRybV9hbWRncHVfc2V0cGFyYW0pCj4gPgo+ID4gIC8qKgo+ID4gICAqIERP QzogbWVtb3J5IGRvbWFpbnMKPiA+IEBAIC0zMDYsNiArMzA4LDE0IEBAIHVuaW9uIGRybV9hbWRn cHVfc2NoZWQgewo+ID4gICAgICAgICBzdHJ1Y3QgZHJtX2FtZGdwdV9zY2hlZF9pbiBpbjsKPiA+ ICB9Owo+ID4KPiA+ICsjZGVmaW5lIEFNREdQVV9TRVRQQVJBTV9OT19JTVBMSUNJVF9TWU5DICAg ICAgIDEKPiA+ICsKPiA+ICtzdHJ1Y3QgZHJtX2FtZGdwdV9zZXRwYXJhbSB7Cj4gPiArICAgICAg IC8qIEFNREdQVV9TRVRQQVJBTV8qICovCj4gPiArICAgICAgIF9fdTMyICAgcGFyYW07Cj4gPiAr ICAgICAgIF9fdTMyICAgdmFsdWU7Cj4gPiArfTsKPiA+ICsKPiA+ICAvKgo+ID4gICAqIFRoaXMg aXMgbm90IGEgcmVsaWFibGUgQVBJIGFuZCB5b3Ugc2hvdWxkIGV4cGVjdCBpdCB0byBmYWlsIGZv ciBhbnkKPiA+ICAgKiBudW1iZXIgb2YgcmVhc29ucyBhbmQgaGF2ZSBmYWxsYmFjayBwYXRoIHRo YXQgZG8gbm90IHVzZSB1c2VycHRyIHRvCj4gPiAtLQo+ID4gMi4zMi4wLnJjMgo+ID4KCgoKLS0g CkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6 Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=