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=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_2 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 93A62C43331 for ; Mon, 11 Nov 2019 11:19:45 +0000 (UTC) Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (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 6337F214DB for ; Mon, 11 Nov 2019 11:19:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6337F214DB Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=huawei.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=iommu-bounces@lists.linux-foundation.org Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 1678EC96; Mon, 11 Nov 2019 11:19:45 +0000 (UTC) Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id AD98EB62 for ; Mon, 11 Nov 2019 11:19:43 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from huawei.com (szxga04-in.huawei.com [45.249.212.190]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 552718AD for ; Mon, 11 Nov 2019 11:19:41 +0000 (UTC) Received: from DGGEMS401-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id 8B43BD684B8985D76D4F; Mon, 11 Nov 2019 19:19:37 +0800 (CST) Received: from localhost (10.202.226.61) by DGGEMS401-HUB.china.huawei.com (10.3.19.201) with Microsoft SMTP Server id 14.3.439.0; Mon, 11 Nov 2019 19:19:28 +0800 Date: Mon, 11 Nov 2019 11:19:18 +0000 From: Jonathan Cameron To: zhangfei Subject: Re: [PATCH v7 2/3] uacce: add uacce driver Message-ID: <20191111111918.0000157e@huawei.com> In-Reply-To: <6e427d92-e0c3-e77d-51f4-f7c1ae4d7da7@linaro.org> References: <1572331216-9503-1-git-send-email-zhangfei.gao@linaro.org> <1572331216-9503-3-git-send-email-zhangfei.gao@linaro.org> <20191031171357.000067c7@huawei.com> <6e427d92-e0c3-e77d-51f4-f7c1ae4d7da7@linaro.org> Organization: Huawei X-Mailer: Claws Mail 3.17.4 (GTK+ 2.24.32; i686-w64-mingw32) MIME-Version: 1.0 X-Originating-IP: [10.202.226.61] X-CFilter-Loop: Reflected Cc: jean-philippe , Herbert Xu , Arnd Bergmann , francois.ozog@linaro.org, Greg Kroah-Hartman , ilias.apalodimas@linaro.org, iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org, Jerome Glisse , grant.likely@arm.com, "haojian . zhuang" , linux-accelerators@lists.ozlabs.org, linux-crypto@vger.kernel.org, Kenneth Lee , guodong.xu@linaro.org, kenneth-lee-2012@foxmail.com X-BeenThere: iommu@lists.linux-foundation.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Development issues for Linux IOMMU support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: iommu-bounces@lists.linux-foundation.org Errors-To: iommu-bounces@lists.linux-foundation.org T24gVHVlLCA1IE5vdiAyMDE5IDE1OjQzOjMxICswODAwCnpoYW5nZmVpIDx6aGFuZ2ZlaS5nYW9A bGluYXJvLm9yZz4gd3JvdGU6Cgo+IEhpLCBKb25hdGhhbgo+IAo+IFRoYW5rcyBmb3IgdGhlIHN1 Z2dlc3Rpb25zCj4gCj4gT24gMjAxOS8xMS8xIOS4iuWNiDE6MTMsIEpvbmF0aGFuIENhbWVyb24g d3JvdGU6Cj4gPiBPbiBUdWUsIDI5IE9jdCAyMDE5IDE0OjQwOjE1ICswODAwCj4gPiBaaGFuZ2Zl aSBHYW8gPHpoYW5nZmVpLmdhb0BsaW5hcm8ub3JnPiB3cm90ZToKPiA+ICAKPiA+PiBGcm9tOiBL ZW5uZXRoIExlZSA8bGlndW96aHVAaGlzaWxpY29uLmNvbT4KPiA+Pgo+ID4+IFVhY2NlIChVbmlm aWVkL1VzZXItc3BhY2UtYWNjZXNzLWludGVuZGVkIEFjY2VsZXJhdG9yIEZyYW1ld29yaykgdGFy Z2V0cyB0bwo+ID4+IHByb3ZpZGUgU2hhcmVkIFZpcnR1YWwgQWRkcmVzc2luZyAoU1ZBKSBiZXR3 ZWVuIGFjY2VsZXJhdG9ycyBhbmQgcHJvY2Vzc2VzLgo+ID4+IFNvIGFjY2VsZXJhdG9yIGNhbiBh Y2Nlc3MgYW55IGRhdGEgc3RydWN0dXJlIG9mIHRoZSBtYWluIGNwdS4KPiA+PiBUaGlzIGRpZmZl cnMgZnJvbSB0aGUgZGF0YSBzaGFyaW5nIGJldHdlZW4gY3B1IGFuZCBpbyBkZXZpY2UsIHdoaWNo IHNoYXJlCj4gPj4gZGF0YSBjb250ZW50IHJhdGhlciB0aGFuIGFkZHJlc3MuCj4gPj4gU2luY2Ug dW5pZmllZCBhZGRyZXNzLCBoYXJkd2FyZSBhbmQgdXNlciBzcGFjZSBvZiBwcm9jZXNzIGNhbiBz aGFyZSB0aGUKPiA+PiBzYW1lIHZpcnR1YWwgYWRkcmVzcyBpbiB0aGUgY29tbXVuaWNhdGlvbi4K PiA+Pgo+ID4+IFVhY2NlIGNyZWF0ZSBhIGNocmRldiBmb3IgZXZlcnkgcmVnaXN0cmF0aW9uLCB0 aGUgcXVldWUgaXMgYWxsb2NhdGVkIHRvCj4gPj4gdGhlIHByb2Nlc3Mgd2hlbiB0aGUgY2hyZGV2 IGlzIG9wZW5lZC4gVGhlbiB0aGUgcHJvY2VzcyBjYW4gYWNjZXNzIHRoZQo+ID4+IGhhcmR3YXJl IHJlc291cmNlIGJ5IGludGVyYWN0IHdpdGggdGhlIHF1ZXVlIGZpbGUuIEJ5IG1tYXAgdGhlIHF1 ZXVlCj4gPj4gZmlsZSBzcGFjZSB0byB1c2VyIHNwYWNlLCB0aGUgcHJvY2VzcyBjYW4gZGlyZWN0 bHkgcHV0IHJlcXVlc3RzIHRvIHRoZQo+ID4+IGhhcmR3YXJlIHdpdGhvdXQgc3lzY2FsbCB0byB0 aGUga2VybmVsIHNwYWNlLgo+ID4+Cj4gPj4gU2lnbmVkLW9mZi1ieTogS2VubmV0aCBMZWUgPGxp Z3Vvemh1QGhpc2lsaWNvbi5jb20+Cj4gPj4gU2lnbmVkLW9mZi1ieTogWmFpYm8gWHUgPHh1emFp Ym9AaHVhd2VpLmNvbT4KPiA+PiBTaWduZWQtb2ZmLWJ5OiBaaG91IFdhbmcgPHdhbmd6aG91MUBo aXNpbGljb24uY29tPgo+ID4+IFNpZ25lZC1vZmYtYnk6IFpoYW5nZmVpIEdhbyA8emhhbmdmZWku Z2FvQGxpbmFyby5vcmc+ICAKPiA+IEdyZWF0LCBtdWNoIG1vcmUgY29tcGFjdC4KPiA+Cj4gPiBJ J3ZlIG5vdCBnb25lIHRocm91Z2ggdGhpcyBpbiBkZXRhaWwgeWV0IGJ1dCBhIGZldyBpbml0aWFs IGNvbW1lbnRzIGlubGluZS4KPiA+Cj4gPiBUaGFua3MsCj4gPgo+ID4gSm9uYXRoYW4KPiA+ICAK PiA+PiAtLS0KPiA+PiAgIERvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLXVh Y2NlIHwgIDUzICsrKwo+ID4+ICAgZHJpdmVycy9taXNjL0tjb25maWcgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDEgKwo+ID4+ICAgZHJpdmVycy9taXNjL01ha2VmaWxlICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDEgKwo+ID4+ICAgZHJpdmVycy9taXNjL3VhY2NlL0tjb25maWcgICAg ICAgICAgICAgICAgICAgfCAgMTMgKwo+ID4+ICAgZHJpdmVycy9taXNjL3VhY2NlL01ha2VmaWxl ICAgICAgICAgICAgICAgICAgfCAgIDIgKwo+ID4+ICAgZHJpdmVycy9taXNjL3VhY2NlL3VhY2Nl LmMgICAgICAgICAgICAgICAgICAgfCA1NzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4g Pj4gICBpbmNsdWRlL2xpbnV4L3VhY2NlLmggICAgICAgICAgICAgICAgICAgICAgICB8IDE2MyAr KysrKysrKwo+ID4+ICAgaW5jbHVkZS91YXBpL21pc2MvdWFjY2UvdWFjY2UuaCAgICAgICAgICAg ICAgfCAgMzggKysKPiA+PiAgIDggZmlsZXMgY2hhbmdlZCwgODQ1IGluc2VydGlvbnMoKykKPiA+ PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRy aXZlci11YWNjZQo+ID4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWlzYy91YWNjZS9L Y29uZmlnCj4gPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9taXNjL3VhY2NlL01ha2Vm aWxlCj4gPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9taXNjL3VhY2NlL3VhY2NlLmMK PiA+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L3VhY2NlLmgKPiA+PiAgIGNy ZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3VhcGkvbWlzYy91YWNjZS91YWNjZS5oCj4gPj4KPiA+ PiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItdWFj Y2UgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci11YWNjZQo+ID4+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPj4gaW5kZXggMDAwMDAwMC4uMzU2OTlkYwo+ID4+IC0tLSAv ZGV2L251bGwKPiA+PiArKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZl ci11YWNjZQo+ID4+IEBAIC0wLDAgKzEsNTMgQEAKPiA+PiArV2hhdDogICAgICAgICAgIC9zeXMv Y2xhc3MvdWFjY2UvPGRldl9uYW1lPi9pZAo+ID4+ICtEYXRlOiAgICAgICAgICAgT2N0IDIwMTkK PiA+PiArS2VybmVsVmVyc2lvbjogIDUuNQo+ID4+ICtDb250YWN0OiAgICAgICAgbGludXgtYWNj ZWxlcmF0b3JzQGxpc3RzLm96bGFicy5vcmcKPiA+PiArRGVzY3JpcHRpb246ICAgIElkIG9mIHRo ZSBkZXZpY2UuCj4gPj4gKwo+ID4+ICtXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy91YWNjZS88 ZGV2X25hbWU+L2FwaQo+ID4+ICtEYXRlOiAgICAgICAgICAgT2N0IDIwMTkKPiA+PiArS2VybmVs VmVyc2lvbjogIDUuNQo+ID4+ICtDb250YWN0OiAgICAgICAgbGludXgtYWNjZWxlcmF0b3JzQGxp c3RzLm96bGFicy5vcmcKPiA+PiArRGVzY3JpcHRpb246ICAgIEFwaSBvZiB0aGUgZGV2aWNlLCB1 c2VkIGJ5IGFwcGxpY2F0aW9uIHRvIG1hdGNoIHRoZSBjb3JyZWN0IGRyaXZlcgo+ID4+ICsKPiA+ PiArV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvdWFjY2UvPGRldl9uYW1lPi9mbGFncwo+ID4+ ICtEYXRlOiAgICAgICAgICAgT2N0IDIwMTkKPiA+PiArS2VybmVsVmVyc2lvbjogIDUuNQo+ID4+ ICtDb250YWN0OiAgICAgICAgbGludXgtYWNjZWxlcmF0b3JzQGxpc3RzLm96bGFicy5vcmcKPiA+ PiArRGVzY3JpcHRpb246ICAgIEF0dHJpYnV0ZXMgb2YgdGhlIGRldmljZSwgc2VlIFVBQ0NFX0RF Vl94eHggZmxhZyBkZWZpbmVkIGluIHVhY2NlLmgKPiA+PiArCj4gPj4gK1doYXQ6ICAgICAgICAg ICAvc3lzL2NsYXNzL3VhY2NlLzxkZXZfbmFtZT4vYXZhaWxhYmxlX2luc3RhbmNlcwo+ID4+ICtE YXRlOiAgICAgICAgICAgT2N0IDIwMTkKPiA+PiArS2VybmVsVmVyc2lvbjogIDUuNQo+ID4+ICtD b250YWN0OiAgICAgICAgbGludXgtYWNjZWxlcmF0b3JzQGxpc3RzLm96bGFicy5vcmcKPiA+PiAr RGVzY3JpcHRpb246ICAgIEF2YWlsYWJsZSBpbnN0YW5jZXMgbGVmdCBvZiB0aGUgZGV2aWNlCj4g Pj4gKwo+ID4+ICtXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy91YWNjZS88ZGV2X25hbWU+L2Fs Z29yaXRobXMKPiA+PiArRGF0ZTogICAgICAgICAgIE9jdCAyMDE5Cj4gPj4gK0tlcm5lbFZlcnNp b246ICA1LjUKPiA+PiArQ29udGFjdDogICAgICAgIGxpbnV4LWFjY2VsZXJhdG9yc0BsaXN0cy5v emxhYnMub3JnCj4gPj4gK0Rlc2NyaXB0aW9uOiAgICBBbGdvcml0aG1zIHN1cHBvcnRlZCBieSB0 aGlzIGFjY2VsZXJhdG9yICAKPiA+IEhvdyBhcmUgdGhleSBzZXBhcmF0ZWQ/ICBVc2Vyc3BhY2Ug Y29kZSBuZWVkcyB0byBrbm93IHRoYXQuCj4gPiAoY29tbWEsIHRhYiwgbmV3bGluZT8pICAKPiBZ ZXMsIHdpbGwgYWRkICJzZXBhcmF0ZWQgYnkgbmV3IGxpbmUiCj4gPiAgCj4gPj4gKwo+ID4+ICtX aGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy91YWNjZS88ZGV2X25hbWU+L3FmcnRfbW1pb19zaXpl ICAKPiA+IHFmcnQgaXMgbm90IHRoZSBtb3N0IG9idmlvdXMgbmFtaW5nIGV2ZXIuICBEbyB3ZSBj YXJlIGJleW9uZCBpdHMKPiA+IGEgcmVnaW9uIGZvciB0aGlzIGludGVyZmFjZT8gIHJlZ2lvbl9t bWlvX3NpemUgbWF5YmU/ICAKPiBPSywKPiA+ICAKPiA+PiArRGF0ZTogICAgICAgICAgIE9jdCAy MDE5Cj4gPj4gK0tlcm5lbFZlcnNpb246ICA1LjUKPiA+PiArQ29udGFjdDogICAgICAgIGxpbnV4 LWFjY2VsZXJhdG9yc0BsaXN0cy5vemxhYnMub3JnCj4gPj4gK0Rlc2NyaXB0aW9uOiAgICBQYWdl IHNpemUgb2YgbW1pbyByZWdpb24gcXVldWUgZmlsZSAgCj4gPiBTaXplIG9mIHBhZ2UgaW4gdGhp cyByZWdpb24sIG9yIG51bWJlciBvZiBwYWdlcyBpbiB0aGUgcmVnaW9uPyAgCj4gQ2hhbmdlIHRv ICJQYWdlIG51bWJlcnMgb2YgbW1pbyByZWdpb24gcXVldWUgZmlsZSIKCk51bWJlciBvZiBwYWdl cyB1c2VkIGJ5IHF1ZXVlIGluIG1taW8gcmVnaW9uPwoKPiA+ICAKPiA+PiArCj4gPj4gK1doYXQ6 ICAgICAgICAgICAvc3lzL2NsYXNzL3VhY2NlLzxkZXZfbmFtZT4vcWZydF9kdXNfc2l6ZQo+ID4+ ICtEYXRlOiAgICAgICAgICAgT2N0IDIwMTkKPiA+PiArS2VybmVsVmVyc2lvbjogIDUuNQo+ID4+ ICtDb250YWN0OiAgICAgICAgbGludXgtYWNjZWxlcmF0b3JzQGxpc3RzLm96bGFicy5vcmcKPiA+ PiArRGVzY3JpcHRpb246ICAgIFBhZ2Ugc2l6ZSBvZiBkdXMgcmVnaW9uIHF1ZXVlIGZpbGUKPiA+ PiArCj4gPj4gK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL3VhY2NlLzxkZXZfbmFtZT4vbnVt YV9kaXN0YW5jZQo+ID4+ICtEYXRlOiAgICAgICAgICAgT2N0IDIwMTkKPiA+PiArS2VybmVsVmVy c2lvbjogIDUuNQo+ID4+ICtDb250YWN0OiAgICAgICAgbGludXgtYWNjZWxlcmF0b3JzQGxpc3Rz Lm96bGFicy5vcmcKPiA+PiArRGVzY3JpcHRpb246ICAgIERpc3RhbmNlIG9mIGRldmljZSBub2Rl IHRvIGNwdSBub2RlICAKPiA+IEkgd29uZGVyIGlmIHdlIHNob3VsZCBiZSBkb2luZyB0aGlzIGlu IGhlcmUuIFRoZXJlIGFyZSBvdGhlciBzdGFuZGFyZAo+ID4gd2F5cyBvZiBvYnRhaW5pbmcgdGhp cyBmb3IgdGhlIGRldmljZS4gIEZvbGxvdyBwYXJlbnQgYW5kIGNoZWNrIG5vZGVfaWQKPiA+IHRo ZXJlIHRoZW4gdXNlIHRoZSAvc3lzL2J1cy9ub2RlIHBhdGggdG8gZmluZCBvdXQgdGhlIGRpc3Rh bmNlcy4gIAo+IENvdWxkIHlvdSBjbGFyaWZ5IG1vcmUgYWJvdXQgdGhpcyBtZXRob2QuCj4gVGhl IHB1cnBvc2UgaGVyZSBpcyBjcHUgc2VhcmNoaW5nIHRoZSBuZWFyZXN0IGRldmljZSh6aXApIGRv aW5nIHdvcmsuCj4gRG9lcyB1c2VyIGFwcGxpY2F0aW9uIGtub3cgd2hpY2ggbm9kZSBpdCBpcyBy dW5uaW5nIGFuZCBjb21wYXJlIGRpc3RhbmNlPwoKRXhhY3RseS4gIFRoZSBwYXJlbnQgZGV2aWNl IHdpbGwgdHlwaWNhbGx5IGJlIGEgcGNpIGRldmljZS4gVGhlIHBhcmVudApsaW5rIHdpbGwgcG9p bnQgc29tZXdoZXJlIGxpa2UKCi9zeXMvYnVzL3BjaS9kZXZpY2VzLzAwMDowMDoxMC4wLwoKVW5k ZXIgdGhhdCBkaXJlY3RvcnkgaXMgYSBudW1hX25vZGUgZmlsZSB3aGljaCB3aWxsIGdpdmUgeW91 IHdoaWNoIG5vZGUKdGhlIGRldmljZSBpcyBhc3NpZ25lZCB0by4gIAoKVXNpbmcgdGhhdCBudW1i ZXIgKE4pIHJlYWQKCi9zeXMvYnVzL25vZGUvZGV2aWNlcy9ub2RlTi9kaXN0YW5jZQoKV2hpY2gg c2hvdWxkIGJlIHRoZSBzYW1lIGFzIHdoYXQgeW91IGhhdmUgZnJvbSB0aGlzIGludGVyZmFjZS4K SXQgYWxzbyBwcm92aWRlcyBhY2Nlc3MgdG8gaW5mbyBvbiBsYXRlbmN5IGFuZCBiYW5kd2lkdGgg ZXRjCmlmIEhNQVQgaXMgcHJvdmlkZWQgLSBzbyBtb3JlIGluZm8gdG8gbWFrZSBhIGRlY2lzaW9u IHRoYW4geW91cgpuZXcgaW50ZXJmYWNlIGhlcmUgcHJvdmlkZXMuCgoKPiA+PiArCj4gPj4gK1do YXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL3VhY2NlLzxkZXZfbmFtZT4vbm9kZV9pZAo+ID4+ICtE YXRlOiAgICAgICAgICAgT2N0IDIwMTkKPiA+PiArS2VybmVsVmVyc2lvbjogIDUuNQo+ID4+ICtD b250YWN0OiAgICAgICAgbGludXgtYWNjZWxlcmF0b3JzQGxpc3RzLm96bGFicy5vcmcKPiA+PiAr RGVzY3JpcHRpb246ICAgIElkIG9mIHRoZSBudW1hIG5vZGUKPiA+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9taXNjL0tjb25maWcgYi9kcml2ZXJzL21pc2MvS2NvbmZpZwo+ID4+IGluZGV4IGM1NWI2 MzcuLjkyOWZlYjAgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9taXNjL0tjb25maWcKPiA+PiAr KysgYi9kcml2ZXJzL21pc2MvS2NvbmZpZwo+ID4+IEBAIC00ODEsNCArNDgxLDUgQEAgc291cmNl ICJkcml2ZXJzL21pc2MvY3hsL0tjb25maWciCj4gPj4gICBzb3VyY2UgImRyaXZlcnMvbWlzYy9v Y3hsL0tjb25maWciCj4gPj4gICBzb3VyY2UgImRyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL0tjb25m aWciCj4gPj4gICBzb3VyY2UgImRyaXZlcnMvbWlzYy9oYWJhbmFsYWJzL0tjb25maWciCj4gPj4g K3NvdXJjZSAiZHJpdmVycy9taXNjL3VhY2NlL0tjb25maWciCj4gPj4gICBlbmRtZW51Cj4gPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9NYWtlZmlsZSBiL2RyaXZlcnMvbWlzYy9NYWtlZmls ZQo+ID4+IGluZGV4IGMxODYwZDMuLjlhYmYyOTIgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9t aXNjL01ha2VmaWxlCj4gPj4gKysrIGIvZHJpdmVycy9taXNjL01ha2VmaWxlCj4gPj4gQEAgLTU2 LDQgKzU2LDUgQEAgb2JqLSQoQ09ORklHX09DWEwpCQkrPSBvY3hsLwo+ID4+ICAgb2JqLXkJCQkJ Kz0gY2FyZHJlYWRlci8KPiA+PiAgIG9iai0kKENPTkZJR19QVlBBTklDKSAgIAkrPSBwdnBhbmlj Lm8KPiA+PiAgIG9iai0kKENPTkZJR19IQUJBTkFfQUkpCQkrPSBoYWJhbmFsYWJzLwo+ID4+ICtv YmotJChDT05GSUdfVUFDQ0UpCQkrPSB1YWNjZS8KPiA+PiAgIG9iai0kKENPTkZJR19YSUxJTlhf U0RGRUMpCSs9IHhpbGlueF9zZGZlYy5vCj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy91 YWNjZS9LY29uZmlnIGIvZHJpdmVycy9taXNjL3VhY2NlL0tjb25maWcKPiA+PiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+ID4+IGluZGV4IDAwMDAwMDAuLjVlMzliNjAKPiA+PiAtLS0gL2Rldi9udWxs Cj4gPj4gKysrIGIvZHJpdmVycy9taXNjL3VhY2NlL0tjb25maWcKPiA+PiBAQCAtMCwwICsxLDEz IEBACj4gPj4gK2NvbmZpZyBVQUNDRQo+ID4+ICsJdHJpc3RhdGUgIkFjY2VsZXJhdG9yIEZyYW1l d29yayBmb3IgVXNlciBMYW5kIgo+ID4+ICsJZGVwZW5kcyBvbiBJT01NVV9BUEkKPiA+PiArCWhl bHAKPiA+PiArCSAgVUFDQ0UgcHJvdmlkZXMgaW50ZXJmYWNlIGZvciB0aGUgdXNlciBwcm9jZXNz IHRvIGFjY2VzcyB0aGUgaGFyZHdhcmUKPiA+PiArCSAgd2l0aG91dCBpbnRlcmFjdGlvbiB3aXRo IHRoZSBrZXJuZWwgc3BhY2UgaW4gZGF0YSBwYXRoLgo+ID4+ICsKPiA+PiArCSAgVGhlIHVzZXIt c3BhY2UgaW50ZXJmYWNlIGlzIGRlc2NyaWJlZCBpbgo+ID4+ICsJICBpbmNsdWRlL3VhcGkvbWlz Yy91YWNjZS91YWNjZS5oCj4gPj4gKwo+ID4+ICsJICBTZWUgRG9jdW1lbnRhdGlvbi9taXNjLWRl dmljZXMvdWFjY2UucnN0IGZvciBtb3JlIGRldGFpbHMuCj4gPj4gKwo+ID4+ICsJICBJZiB5b3Ug ZG9uJ3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLiAgCj4gPiBQZXNzaW1pc3QgOikgRXZl cnlvbmUgc2hvdWxkIHdhbnQgdWFjY2Ugc28gZG9uJ3QgcHV0IHRoZW0gb2ZmLiAgSGF2aW5nIHNh aWQKPiA+IHRoYXQgcGVyaGFwcyBmb3Igbm93IGl0IHNob3VsZCBiZSBoaWRkZW4gYW5kIGVuYWJs ZWQgb24gYSBkcml2ZXIgYnkgZHJpdmVyCj4gPiBiYXNpcz8KPiA+ICAKPiA+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9taXNjL3VhY2NlL01ha2VmaWxlIGIvZHJpdmVycy9taXNjL3VhY2NlL01ha2Vm aWxlCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+PiBpbmRleCAwMDAwMDAwLi41YjQzNzRl Cj4gPj4gLS0tIC9kZXYvbnVsbAo+ID4+ICsrKyBiL2RyaXZlcnMvbWlzYy91YWNjZS9NYWtlZmls ZQo+ID4+IEBAIC0wLDAgKzEsMiBAQAo+ID4+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wLW9yLWxhdGVyCj4gPj4gK29iai0kKENPTkZJR19VQUNDRSkgKz0gdWFjY2Uubwo+ID4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvdWFjY2UvdWFjY2UuYyBiL2RyaXZlcnMvbWlzYy91 YWNjZS91YWNjZS5jCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+PiBpbmRleCAwMDAwMDAw Li4yYjZiMDM4Cj4gPj4gLS0tIC9kZXYvbnVsbAo+ID4+ICsrKyBiL2RyaXZlcnMvbWlzYy91YWNj ZS91YWNjZS5jCj4gPj4gQEAgLTAsMCArMSw1NzQgQEAKPiA+PiArLy8gU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKPiA+PiArI2luY2x1ZGUgPGxpbnV4L2NvbXBhdC5o Pgo+ID4+ICsjaW5jbHVkZSA8bGludXgvZG1hLWlvbW11Lmg+Cj4gPj4gKyNpbmNsdWRlIDxsaW51 eC9tb2R1bGUuaD4KPiA+PiArI2luY2x1ZGUgPGxpbnV4L3BvbGwuaD4KPiA+PiArI2luY2x1ZGUg PGxpbnV4L3VhY2NlLmg+Cj4gPj4gKwo+ID4+ICtzdGF0aWMgc3RydWN0IGNsYXNzICp1YWNjZV9j bGFzczsKPiA+PiArc3RhdGljIGRldl90IHVhY2NlX2RldnQ7Cj4gPj4gK3N0YXRpYyBERUZJTkVf TVVURVgodWFjY2VfbXV0ZXgpOwo+ID4+ICtzdGF0aWMgREVGSU5FX1hBUlJBWV9BTExPQyh1YWNj ZV94YSk7Cj4gPj4gKwo+ID4+ICtzdGF0aWMgaW50IHVhY2NlX3N0YXJ0X3F1ZXVlKHN0cnVjdCB1 YWNjZV9xdWV1ZSAqcSkKPiA+PiArewo+ID4+ICsJaW50IHJldCA9IC1FSU5WQUw7Cj4gPj4gKwo+ ID4+ICsJbXV0ZXhfbG9jaygmdWFjY2VfbXV0ZXgpOwo+ID4+ICsKPiA+PiArCWlmIChxLT5zdGF0 ZSAhPSBVQUNDRV9RX0lOSVQpCj4gPj4gKwkJZ290byBvdXRfd2l0aF9sb2NrOwo+ID4+ICsKPiA+ PiArCWlmIChxLT51YWNjZS0+b3BzLT5zdGFydF9xdWV1ZSkgewo+ID4+ICsJCXJldCA9IHEtPnVh Y2NlLT5vcHMtPnN0YXJ0X3F1ZXVlKHEpOwo+ID4+ICsJCWlmIChyZXQgPCAwKQo+ID4+ICsJCQln b3RvIG91dF93aXRoX2xvY2s7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJcS0+c3RhdGUgPSBVQUND RV9RX1NUQVJURUQ7ICAKPiA+IG91dF93aXRoX2xvY2s6ICAKPiA+PiArCW11dGV4X3VubG9jaygm dWFjY2VfbXV0ZXgpOwo+ID4+ICsgIAo+ID4gcmV0dXJuIHJldDsKPiA+IFRob3VnaCBuZWVkIHRv IGhhbmRsZSByZXQgYSBiaXQgZGlmZmVyZW50bHkgYWJvdmUuLi4gIAo+IE9LCj4gPgo+ID4gK3N0 YXRpYyBpbnQgdWFjY2VfZm9wc19tbWFwKHN0cnVjdCBmaWxlICpmaWxlcCwgc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICp2bWEpCj4gPiArewo+ID4gKwlzdHJ1Y3QgdWFjY2VfcXVldWUgKnEgPSBmaWxl cC0+cHJpdmF0ZV9kYXRhOwo+ID4gKwlzdHJ1Y3QgdWFjY2VfZGV2aWNlICp1YWNjZSA9IHEtPnVh Y2NlOwo+ID4gKwlzdHJ1Y3QgdWFjY2VfcWZpbGVfcmVnaW9uICpxZnI7Cj4gPiArCWVudW0gdWFj Y2VfcWZydCB0eXBlID0gMDsKPiA+ICsJdW5zaWduZWQgaW50IGZsYWdzID0gMDsKPiA+ICsJaW50 IHJldDsKPiA+ICsKPiA+ICsJaWYgKHZtYS0+dm1fcGdvZmYgPCBVQUNDRV9RRlJUX01BWCkKPiA+ ICsJCXR5cGUgPSB2bWEtPnZtX3Bnb2ZmOwo+ID4gKwo+ID4gKwl2bWEtPnZtX2ZsYWdzIHw9IFZN X0RPTlRDT1BZIHwgVk1fRE9OVEVYUEFORCB8IFZNX1dJUEVPTkZPUks7Cj4gPiArCXZtYS0+dm1f b3BzID0gJnVhY2NlX3ZtX29wczsKPiA+ICsJdm1hLT52bV9wcml2YXRlX2RhdGEgPSBxOwo+ID4g Kwo+ID4gKwltdXRleF9sb2NrKCZ1YWNjZV9tdXRleCk7Cj4gPiArCj4gPiArCWlmIChxLT5xZnJz W3R5cGVdKSB7Cj4gPiArCQlyZXQgPSAtRUVYSVNUOwo+ID4gKwkJZ290byBvdXRfd2l0aF9sb2Nr Owo+ID4gKwl9Cj4gPiArCj4gPiArCXN3aXRjaCAodHlwZSkgewo+ID4gKwljYXNlIFVBQ0NFX1FG UlRfTU1JTzoKPiA+ICsJCWZsYWdzID0gVUFDQ0VfUUZSRl9TRUxGTVQ7Cj4gPiArCQlicmVhazsK PiA+ICsKPiA+ICsJY2FzZSBVQUNDRV9RRlJUX0RVUzoKPiA+ICsJCWlmICh1YWNjZS0+ZmxhZ3Mg JiBVQUNDRV9ERVZfU1ZBKSB7Cj4gPiArCQkJZmxhZ3MgPSBVQUNDRV9RRlJGX1NFTEZNVDsKPiA+ ICsJCQlicmVhazsKPiA+ICsJCX0KPiA+ICsJCWJyZWFrOwo+ID4gKwo+ID4gKwlkZWZhdWx0Ogo+ ID4gKwkJV0FSTl9PTigmdWFjY2UtPmRldik7Cj4gPiArCQlicmVhazsKPiA+ICsJfQo+ID4gKwo+ ID4gKwlxZnIgPSB1YWNjZV9jcmVhdGVfcmVnaW9uKHEsIHZtYSwgdHlwZSwgZmxhZ3MpOwo+ID4g KwlpZiAoSVNfRVJSKHFmcikpIHsKPiA+ICsJCXJldCA9IFBUUl9FUlIocWZyKTsKPiA+ICsJCWdv dG8gb3V0X3dpdGhfbG9jazsKPiA+ICsJfQo+ID4gKwlxLT5xZnJzW3R5cGVdID0gcWZyOwo+ID4g Kwo+ID4gQ291bGQgcHV0Cj4gPiBvdXRfd2l0aF9sb2NrOgo+ID4gaGVyZSBhbmQgcmV0dXJuIHJl dCBpbnN0ZWFkIG9mIDAuCj4gPiBZb3UnbGwgbmVlZCB0byBzZXQgcmV0IHRvIGRlZmF1bHQgdG8g MCBpbiB0aGF0Cj4gPiBjYXNlIHRob3VnaC4gIAo+IE9LCj4gPgo+ID4gK3N0YXRpYyBzc2l6ZV90 IGFsZ29yaXRobXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPiArCQkJICAgICAgIHN0cnVj dCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gPiArewo+ID4gKwlzdHJ1Y3Qg dWFjY2VfZGV2aWNlICp1YWNjZSA9IHRvX3VhY2NlX2RldmljZShkZXYpOwo+ID4gKwo+ID4gKwly ZXR1cm4gc3ByaW50ZihidWYsICIlcyIsIHVhY2NlLT5hbGdzKTsKPiA+IEFueSByaXNrIGFsZ3Mg d29uJ3QgaGF2ZSB0aGUgXG4/Cj4gPiBJJ2Qga2luZCBvZiBleHBlY3QgaXQgdG8gYmUgYSBudWxs IHRlcm1hdGVkIGFycmF5cyB0byBhbGxvdyB0aGUgY29yZQo+ID4gdG8gZm9ybWF0IGl0IGhvd2V2 ZXIgaXQgd2FudHMgdG8uICAKPiBZZXMsIGFkZGluZyBcbiBpcyBiZXR0ZXIuCgpUaGlzIG1heSB0 aGVuIGFkZCBhIGJvbnVzIG5ldyBsaW5lIGlmIHlvdSBoYXZlIG11bHRpcGxlIGxpbmVzIGFscmVh ZHkgaW4KdGhlIHN0cmluZy4gIFByb2JhYmx5IGRvZXNuJ3QgZG8gbXVjaCBoYXJtLCBidXQgaXQn cyBub3QgaWRlYWwuCgo+ID4gIAo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdGF0aWMgc3NpemVfdCBx ZnJ0X21taW9fc2l6ZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKPiA+PiArCQkJCSAgIHN0cnVj dCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gPj4gK3sKPiA+PiArCXN0cnVj dCB1YWNjZV9kZXZpY2UgKnVhY2NlID0gdG9fdWFjY2VfZGV2aWNlKGRldik7Cj4gPj4gKwo+ID4+ ICsJcmV0dXJuIHNwcmludGYoYnVmLCAiJWx1XG4iLAo+ID4+ICsJCSAgICAgICB1YWNjZS0+cWZf cGdfc2l6ZVtVQUNDRV9RRlJUX01NSU9dIDw8IFBBR0VfU0hJRlQpOwo+ID4+ICt9Cj4gPj4gKwo+ ID4+ICtzdGF0aWMgc3NpemVfdCBxZnJ0X2R1c19zaXplX3Nob3coc3RydWN0IGRldmljZSAqZGV2 LAo+ID4+ICsJCQkJICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+ ID4+ICt7Cj4gPj4gKwlzdHJ1Y3QgdWFjY2VfZGV2aWNlICp1YWNjZSA9IHRvX3VhY2NlX2Rldmlj ZShkZXYpOwo+ID4+ICsKPiA+PiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVsdVxuIiwKPiA+PiAr CQkgICAgICAgdWFjY2UtPnFmX3BnX3NpemVbVUFDQ0VfUUZSVF9EVVNdIDw8IFBBR0VfU0hJRlQp Owo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdGF0aWMgREVWSUNFX0FUVFJfUk8oaWQpOwo+ID4+ICtz dGF0aWMgREVWSUNFX0FUVFJfUk8oYXBpKTsKPiA+PiArc3RhdGljIERFVklDRV9BVFRSX1JPKG51 bWFfZGlzdGFuY2UpOwo+ID4+ICtzdGF0aWMgREVWSUNFX0FUVFJfUk8obm9kZV9pZCk7Cj4gPj4g K3N0YXRpYyBERVZJQ0VfQVRUUl9STyhmbGFncyk7Cj4gPj4gK3N0YXRpYyBERVZJQ0VfQVRUUl9S TyhhdmFpbGFibGVfaW5zdGFuY2VzKTsKPiA+PiArc3RhdGljIERFVklDRV9BVFRSX1JPKGFsZ29y aXRobXMpOwo+ID4+ICtzdGF0aWMgREVWSUNFX0FUVFJfUk8ocWZydF9tbWlvX3NpemUpOwo+ID4+ ICtzdGF0aWMgREVWSUNFX0FUVFJfUk8ocWZydF9kdXNfc2l6ZSk7Cj4gPj4gKwo+ID4+ICtzdGF0 aWMgc3RydWN0IGF0dHJpYnV0ZSAqdWFjY2VfZGV2X2F0dHJzW10gPSB7Cj4gPj4gKwkmZGV2X2F0 dHJfaWQuYXR0ciwKPiA+PiArCSZkZXZfYXR0cl9hcGkuYXR0ciwKPiA+PiArCSZkZXZfYXR0cl9u b2RlX2lkLmF0dHIsCj4gPj4gKwkmZGV2X2F0dHJfbnVtYV9kaXN0YW5jZS5hdHRyLAo+ID4+ICsJ JmRldl9hdHRyX2ZsYWdzLmF0dHIsCj4gPj4gKwkmZGV2X2F0dHJfYXZhaWxhYmxlX2luc3RhbmNl cy5hdHRyLAo+ID4+ICsJJmRldl9hdHRyX2FsZ29yaXRobXMuYXR0ciwKPiA+PiArCSZkZXZfYXR0 cl9xZnJ0X21taW9fc2l6ZS5hdHRyLAo+ID4+ICsJJmRldl9hdHRyX3FmcnRfZHVzX3NpemUuYXR0 ciwKPiA+PiArCU5VTEwsCj4gPj4gK307Cj4gPj4gK0FUVFJJQlVURV9HUk9VUFModWFjY2VfZGV2 KTsKPiA+PiArCj4gPj4gK3N0YXRpYyB2b2lkIHVhY2NlX3JlbGVhc2Uoc3RydWN0IGRldmljZSAq ZGV2KQo+ID4+ICt7Cj4gPj4gKwlzdHJ1Y3QgdWFjY2VfZGV2aWNlICp1YWNjZSA9IHRvX3VhY2Nl X2RldmljZShkZXYpOwo+ID4+ICsKPiA+PiArCWtmcmVlKHVhY2NlKTsKPiA+PiArfQo+ID4+ICsK PiA+PiArLyoqCj4gPj4gKyAqIHVhY2NlX3JlZ2lzdGVyIC0gcmVnaXN0ZXIgYW4gYWNjZWxlcmF0 b3IgIAo+ID4gVGhpcyBpc24ndCBxdWl0ZSBjb3JyZWN0IGtlcm5lbC1kb2MuICBQbGVhc2UgcnVu IHRoZQo+ID4gZ2VuZXJhdGlvbiBzY3JpcHQgb3ZlciBpdCBhbmQgZml4IGFueSB3YXJuaW5ncy4K PiA+Cj4gPiAJdWFjY2VfcmVnaXN0ZXIoKSAtIHJlZ2lzdGVyIGFuIGFjY2VsZXJhdG9yICAKPiBT dXJlLCB3aWxsIGFkZCAoKSwgdGhvdWdoIG5vIHdhcm5pbmcgcmVwb3J0ZWQgZnJvbSAuL3Njcmlw dHMva2VybmVsLWRvYwoKSSBjaGVja2VkIHRoYXQgb25lIGZvciBhbm90aGVyIHJldmlldyB5ZXN0 ZXJkYXkuICBTZWVtcyB0aGUga2VybmVsCnN1Z2dlc3RlZCBrZXJuZWwtZG9jIHN0eWxlIGlzbid0 IGFjdHVhbGx5IGVuZm9yY2VkIGFuZCB0aGUgYnJhY2tldHMKYXJlIG9wdGlvbmFsIGZvciBmdW5j dGlvbnMuICAgSXQgYXNzdW1lcyBhbnl0aGluZyBpdCBoYXNuJ3QgaWRlbnRpZmllZAphcyBzb21l dGhpbmcgZWxzZSBtdXN0IGJlIGEgZnVuY3Rpb24gaGVuY2UgdGhpcyBpcyB0aGUgb25lIGNhc2Ug d2hlcmUKY2FyZWZ1bCBtYXRjaGluZyBkb2Vzbid0IGFwcGx5ICh1bmxpa2Ugc3RydWN0LCBlbnVt IGV0YykuCgoKPiA+ICAKPiA+PiArICogQHBhcmVudDogcG9pbnRlciBvZiB1YWNjZSBwYXJlbnQg ZGV2aWNlCj4gPj4gKyAqIEBpbnRlcmZhY2U6IHBvaW50ZXIgb2YgdWFjY2VfaW50ZXJmYWNlIGZv ciByZWdpc3Rlcgo+ID4+ICsgKi8KPiA+PiArc3RydWN0IHVhY2NlX2RldmljZSAqdWFjY2VfcmVn aXN0ZXIoc3RydWN0IGRldmljZSAqcGFyZW50LAo+ID4+ICsJCQkJICAgIHN0cnVjdCB1YWNjZV9p bnRlcmZhY2UgKmludGVyZmFjZSkKPiA+PiArewo+ID4+ICsJdW5zaWduZWQgaW50IGZsYWdzID0g aW50ZXJmYWNlLT5mbGFnczsKPiA+PiArCXN0cnVjdCB1YWNjZV9kZXZpY2UgKnVhY2NlOwo+ID4+ ICsJaW50IHJldDsKPiA+PiArCj4gPj4gKwl1YWNjZSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCB1 YWNjZV9kZXZpY2UpLCBHRlBfS0VSTkVMKTsKPiA+PiArCWlmICghdWFjY2UpCj4gPj4gKwkJcmV0 dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gPj4gKwo+ID4+ICsJaWYgKGZsYWdzICYgVUFDQ0VfREVW X1NWQSkgewo+ID4+ICsJCXJldCA9IGlvbW11X2Rldl9lbmFibGVfZmVhdHVyZShwYXJlbnQsIElP TU1VX0RFVl9GRUFUX1NWQSk7Cj4gPj4gKwkJaWYgKHJldCkKPiA+PiArCQkJZmxhZ3MgJj0gflVB Q0NFX0RFVl9TVkE7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJdWFjY2UtPnBkZXYgPSBwYXJlbnQ7 Cj4gPj4gKwl1YWNjZS0+ZmxhZ3MgPSBmbGFnczsKPiA+PiArCXVhY2NlLT5vcHMgPSBpbnRlcmZh Y2UtPm9wczsKPiA+PiArCj4gPj4gKwlyZXQgPSB4YV9hbGxvYygmdWFjY2VfeGEsICZ1YWNjZS0+ ZGV2X2lkLCB1YWNjZSwgeGFfbGltaXRfMzJiLAo+ID4+ICsJCSAgICAgICBHRlBfS0VSTkVMKTsK PiA+PiArCWlmIChyZXQgPCAwKQo+ID4+ICsJCWdvdG8gZXJyX3dpdGhfdWFjY2U7Cj4gPj4gKwo+ ID4+ICsJdWFjY2UtPmNkZXYgPSBjZGV2X2FsbG9jKCk7ICAKPiA+IElmIHdlIGNhbiBlbWJlZCB0 aGlzIChzZWUgYmVsb3cpIHRoZW4gdXNlIGNkZXZfaW5pdCBpbnN0ZWFkLgo+ID4gIAo+ID4+ICsJ aWYgKCF1YWNjZS0+Y2Rldikgewo+ID4+ICsJCXJldCA9IC1FTk9NRU07Cj4gPj4gKwkJZ290byBl cnJfd2l0aF94YTsKPiA+PiArCX0KPiA+PiArCj4gPj4gKwlJTklUX0xJU1RfSEVBRCgmdWFjY2Ut PnFzKTsKPiA+PiArCW11dGV4X2luaXQoJnVhY2NlLT5xX2xvY2spOwo+ID4+ICsJdWFjY2UtPmNk ZXYtPm9wcyA9ICZ1YWNjZV9mb3BzOwo+ID4+ICsJdWFjY2UtPmNkZXYtPm93bmVyID0gVEhJU19N T0RVTEU7Cj4gPj4gKwlkZXZpY2VfaW5pdGlhbGl6ZSgmdWFjY2UtPmRldik7Cj4gPj4gKwl1YWNj ZS0+ZGV2LmRldnQgPSBNS0RFVihNQUpPUih1YWNjZV9kZXZ0KSwgdWFjY2UtPmRldl9pZCk7Cj4g Pj4gKwl1YWNjZS0+ZGV2LmNsYXNzID0gdWFjY2VfY2xhc3M7Cj4gPj4gKwl1YWNjZS0+ZGV2Lmdy b3VwcyA9IHVhY2NlX2Rldl9ncm91cHM7Cj4gPj4gKwl1YWNjZS0+ZGV2LnBhcmVudCA9IHVhY2Nl LT5wZGV2Owo+ID4+ICsJdWFjY2UtPmRldi5yZWxlYXNlID0gdWFjY2VfcmVsZWFzZTsKPiA+PiAr CWRldl9zZXRfbmFtZSgmdWFjY2UtPmRldiwgIiVzLSVkIiwgaW50ZXJmYWNlLT5uYW1lLCB1YWNj ZS0+ZGV2X2lkKTsKPiA+PiArCXJldCA9IGNkZXZfZGV2aWNlX2FkZCh1YWNjZS0+Y2RldiwgJnVh Y2NlLT5kZXYpOwo+ID4+ICsJaWYgKHJldCkKPiA+PiArCQlnb3RvIGVycl93aXRoX3hhOwo+ID4+ ICsKPiA+PiArCXJldHVybiB1YWNjZTsKPiA+PiArCj4gPj4gK2Vycl93aXRoX3hhOgo+ID4+ICsJ aWYgKHVhY2NlLT5jZGV2KQo+ID4+ICsJCWNkZXZfZGVsKHVhY2NlLT5jZGV2KTsgIAo+ID4gV2h5 IG5vdCB1c2UgYSBzZXBhcmF0ZSBsYWJlbCB0byBoYW5kbGUgdGhlIGFib3ZlIHJhdGhlciB0aGFu IGNoZWNraW5nIGlmCj4gPiBpdCdzIHNldD8gIAo+IG9rLAo+ID4gIAo+ID4+ICsJeGFfZXJhc2Uo JnVhY2NlX3hhLCB1YWNjZS0+ZGV2X2lkKTsKPiA+PiArZXJyX3dpdGhfdWFjY2U6Cj4gPj4gKwlp ZiAoZmxhZ3MgJiBVQUNDRV9ERVZfU1ZBKQo+ID4+ICsJCWlvbW11X2Rldl9kaXNhYmxlX2ZlYXR1 cmUodWFjY2UtPnBkZXYsIElPTU1VX0RFVl9GRUFUX1NWQSk7Cj4gPj4gKwlrZnJlZSh1YWNjZSk7 Cj4gPj4gKwlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ID4+ICt9Cj4gPj4gK0VYUE9SVF9TWU1CT0xf R1BMKHVhY2NlX3JlZ2lzdGVyKTsKPiA+PiArCj4gPj4gKy8qKgo+ID4+ICsgKiB1YWNjZV91bnJl Z2lzdGVyIC0gdW5yZWdpc3RlcnMgYW4gYWNjZWxlcmF0b3IKPiA+PiArICogQHVhY2NlOiB0aGUg YWNjZWxlcmF0b3IgdG8gdW5yZWdpc3Rlcgo+ID4+ICsgKi8KPiA+PiArdm9pZCB1YWNjZV91bnJl Z2lzdGVyKHN0cnVjdCB1YWNjZV9kZXZpY2UgKnVhY2NlKQo+ID4+ICt7Cj4gPj4gKwlpZiAoIXVh Y2NlKQo+ID4+ICsJCXJldHVybjsKPiA+PiArICAKPiA+IEknZCBsaWtlIHRvIHNlZSBhIGNvbW1l bnQgaGVyZSBvbiB3aHkgd2UgYXJlIGRvaW5nIHRoaW5ncyBub3QgdW53aW5kaW5nCj4gPiBhY3Rp b25zIGZyb20gdWFjY2VfcmVnaXN0ZXIuICAKPiBPSyB3aWxsIGFkZCBjb21tZW50cy4KPiBIZXJl IGlzICJlbnN1cmUgbm8gb3BlbiBxdWV1ZSByZW1haW5zIgo+ID4+ICsJbXV0ZXhfbG9jaygmdWFj Y2UtPnFfbG9jayk7Cj4gPj4gKwlpZiAoIWxpc3RfZW1wdHkoJnVhY2NlLT5xcykpIHsKPiA+PiAr CQlzdHJ1Y3QgdWFjY2VfcXVldWUgKnE7Cj4gPj4gKwo+ID4+ICsJCWxpc3RfZm9yX2VhY2hfZW50 cnkocSwgJnVhY2NlLT5xcywgbGlzdCkgewo+ID4+ICsJCQl1YWNjZV9wdXRfcXVldWUocSk7Cj4g Pj4gKwkJCWlmICh1YWNjZS0+ZmxhZ3MgJiBVQUNDRV9ERVZfU1ZBKQo+ID4+ICsJCQkJaW9tbXVf c3ZhX3VuYmluZF9kZXZpY2UocS0+aGFuZGxlKTsKPiA+PiArCQl9Cj4gPj4gKwl9Cj4gPj4gKwlt dXRleF91bmxvY2soJnVhY2NlLT5xX2xvY2spOwo+ID4+ICsgIAo+ID4gRm9yIHRoZXNlIG5leHQg cGFydHMgd2hpY2ggYXJlIHRoZSB1bndpbmQgb2YgdWFjY2VfcmVnaXN0ZXIsIHdoeSBhcmUgdGhl eSBub3QKPiA+IGluIHRoZSByZXZlcnNlIG9yZGVyIG9mIHdoYXQgaXMgaGFwcGVuaW5nIGluIHRo ZXJlICh3aGVyZSBwb3NzaWJsZSBnaXZlbgo+ID4gZGV2aWNlIGxpZmVzcGFuKS4gVGhhdCBpcyB3 aHkgZG8gd2Ugbm90IGRpc2FibGUgdGhlIGlvbW11IGZlYXR1cmUgbXVjaCBsYXRlcj8gIAo+IEZp cnN0IGNsb3NlIGFsbCBxdWV1ZXMsIHRoZW4gZGlzYWJsZSBzdmEgZmVhdHVyZS4KPiA+ICAKPiA+ PiArCWlmICh1YWNjZS0+ZmxhZ3MgJiBVQUNDRV9ERVZfU1ZBKQo+ID4+ICsJCWlvbW11X2Rldl9k aXNhYmxlX2ZlYXR1cmUodWFjY2UtPnBkZXYsIElPTU1VX0RFVl9GRUFUX1NWQSk7Cj4gPj4gKwo+ ID4+ICsJY2Rldl9kZXZpY2VfZGVsKHVhY2NlLT5jZGV2LCAmdWFjY2UtPmRldik7Cj4gPj4gKwl4 YV9lcmFzZSgmdWFjY2VfeGEsIHVhY2NlLT5kZXZfaWQpOwo+ID4+ICsJcHV0X2RldmljZSgmdWFj Y2UtPmRldik7Cj4gPj4gK30KPiA+PiArRVhQT1JUX1NZTUJPTF9HUEwodWFjY2VfdW5yZWdpc3Rl cik7Cj4gPj4gKwo+ID4+ICtzdGF0aWMgaW50IF9faW5pdCB1YWNjZV9pbml0KHZvaWQpCj4gPj4g K3sKPiA+PiArCWludCByZXQ7Cj4gPj4gKwo+ID4+ICsJdWFjY2VfY2xhc3MgPSBjbGFzc19jcmVh dGUoVEhJU19NT0RVTEUsIFVBQ0NFX05BTUUpOwo+ID4+ICsJaWYgKElTX0VSUih1YWNjZV9jbGFz cykpCj4gPj4gKwkJcmV0dXJuIFBUUl9FUlIodWFjY2VfY2xhc3MpOwo+ID4+ICsKPiA+PiArCXJl dCA9IGFsbG9jX2NocmRldl9yZWdpb24oJnVhY2NlX2RldnQsIDAsIE1JTk9STUFTSywgVUFDQ0Vf TkFNRSk7Cj4gPj4gKwlpZiAocmV0KSB7Cj4gPj4gKwkJY2xhc3NfZGVzdHJveSh1YWNjZV9jbGFz cyk7Cj4gPj4gKwkJcmV0dXJuIHJldDsgIAo+ID4gZHJvcCB0aGUgcmV0dXJuIHJldCBvdXQgb2Yg dGhlc2UgYnJhY2tldHMuIGkuZS4KPiA+Cj4gPiBpZiAocmV0KQo+ID4gCWNsYXNzX2Rlc3Ryb3ko dWFjY2VfY2xhc3MpCj4gPgo+ID4gcmV0dXJuIHJldDsgIAo+IHN1cmUsIHRoYW5rcwo+ID4gIAo+ ID4+ICsJfQo+ID4+ICsKPiA+PiArCXJldHVybiAwOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdGF0 aWMgX19leGl0IHZvaWQgdWFjY2VfZXhpdCh2b2lkKQo+ID4+ICt7Cj4gPj4gKwl1bnJlZ2lzdGVy X2NocmRldl9yZWdpb24odWFjY2VfZGV2dCwgTUlOT1JNQVNLKTsKPiA+PiArCWNsYXNzX2Rlc3Ry b3kodWFjY2VfY2xhc3MpOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdWJzeXNfaW5pdGNhbGwodWFj Y2VfaW5pdCk7Cj4gPj4gK21vZHVsZV9leGl0KHVhY2NlX2V4aXQpOwo+ID4+ICsKPiA+PiArTU9E VUxFX0xJQ0VOU0UoIkdQTCIpOwo+ID4+ICtNT0RVTEVfQVVUSE9SKCJIaXNpbGljb24gVGVjaC4g Q28uLCBMdGQuIik7Cj4gPj4gK01PRFVMRV9ERVNDUklQVElPTigiQWNjZWxlcmF0b3IgaW50ZXJm YWNlIGZvciBVc2VybGFuZCBhcHBsaWNhdGlvbnMiKTsKPiA+PiBkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9saW51eC91YWNjZS5oIGIvaW5jbHVkZS9saW51eC91YWNjZS5oCj4gPj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiA+PiBpbmRleCAwMDAwMDAwLi4wNGM4NjQzCj4gPj4gLS0tIC9kZXYvbnVsbAo+ ID4+ICsrKyBiL2luY2x1ZGUvbGludXgvdWFjY2UuaAo+ID4+IEBAIC0wLDAgKzEsMTYzIEBACj4g Pj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyICovCj4gPj4g KyNpZm5kZWYgX0xJTlVYX1VBQ0NFX0gKPiA+PiArI2RlZmluZSBfTElOVVhfVUFDQ0VfSAo+ID4+ ICsKPiA+PiArI2luY2x1ZGUgPGxpbnV4L2NkZXYuaD4KPiA+PiArI2luY2x1ZGUgPHVhcGkvbWlz Yy91YWNjZS91YWNjZS5oPgo+ID4+ICsKPiA+PiArI2RlZmluZSBVQUNDRV9OQU1FCQkidWFjY2Ui Cj4gPj4gKyNkZWZpbmUgVUFDQ0VfUUZSVF9NQVgJCTE2ICAKPiA+IFdoYXQgZG9lcyBRRlJUIHN0 YW5kIGZvcj8gIAo+IGNoYW5nZSB0byBVQUNDRV9NQVhfUkVHSU9OCgpNdWNoIGJldHRlcgoKPiA+ PiArI2RlZmluZSBVQUNDRV9NQVhfTkFNRV9TSVpFCTY0Cj4gPj4gKwo+ID4+ICtzdHJ1Y3QgdWFj Y2VfcXVldWU7Cj4gPj4gK3N0cnVjdCB1YWNjZV9kZXZpY2U7Cj4gPj4gKwo+ID4+ICsvKioKPiA+ PiArICogZW51bSB1YWNjZV9xZnJfZmxhZzogcXVldWUgZmlsZSBmbGFnOgo+ID4+ICsgKiBAVUFD Q0VfUUZSRl9TRUxGTVQ6IHNlbGYgbWFpbnRhaW5lZCBxZnIKPiA+PiArICovCj4gPj4gK2VudW0g dWFjY2VfcWZyX2ZsYWcgewo+ID4+ICsJVUFDQ0VfUUZSRl9TRUxGTVQgPSBCSVQoMCksCj4gPj4g K307ICAKPiA+IFNhbWUgaXNzdWUgd2l0aCBlbnVtcyBmb3IgZmxhZ3MuICBEb2Vzbid0IG1ha2Ug bXVjaCBzZW5zZSB0byBtZS4KPiA+IE9ubHkgb25lIHZhbHVlIGNhbiBiZSB0YWtlbiB3aGljaCBk b2Vzbid0IG1ha2UgaXQgYSBmbGFnLgo+ID4gIAo+ID4+ICsKPiA+PiArLyoqCj4gPj4gKyAqIHN0 cnVjdCB1YWNjZV9xZmlsZV9yZWdpb24gLSBzdHJ1Y3R1cmUgb2YgcXVldWUgZmlsZSByZWdpb24K PiA+PiArICogQHR5cGU6IHR5cGUgb2YgdGhlIHFmcgo+ID4+ICsgKiBAZmxhZ3M6IGZsYWdzIG9m IHFmcgo+ID4+ICsgKiBAcHJvdDogcWZyIHByb3RlY3Rpb24gZmxhZwo+ID4+ICsgKi8KPiA+PiAr c3RydWN0IHVhY2NlX3FmaWxlX3JlZ2lvbiB7Cj4gPj4gKwllbnVtIHVhY2NlX3FmcnQgdHlwZTsK PiA+PiArCWVudW0gdWFjY2VfcWZyX2ZsYWcgZmxhZ3M7Cj4gPj4gKwl1MzIgcHJvdDsKPiA+PiAr fTsKPiA+PiArCj4gPj4gKy8qKgo+ID4+ICsgKiBzdHJ1Y3QgdWFjY2Vfb3BzIC0gdWFjY2UgZGV2 aWNlIG9wZXJhdGlvbnMKPiA+PiArICogQGdldF9hdmFpbGFibGVfaW5zdGFuY2VzOiAgZ2V0IGF2 YWlsYWJsZSBpbnN0YW5jZXMgbGVmdCBvZiB0aGUgZGV2aWNlCj4gPj4gKyAqIEBnZXRfcXVldWU6 IGdldCBhIHF1ZXVlIGZyb20gdGhlIGRldmljZQo+ID4+ICsgKiBAcHV0X3F1ZXVlOiBmcmVlIGEg cXVldWUgdG8gdGhlIGRldmljZQo+ID4+ICsgKiBAc3RhcnRfcXVldWU6IG1ha2UgdGhlIHF1ZXVl IHN0YXJ0IHdvcmsgYWZ0ZXIgZ2V0X3F1ZXVlCj4gPj4gKyAqIEBzdG9wX3F1ZXVlOiBtYWtlIHRo ZSBxdWV1ZSBzdG9wIHdvcmsgYmVmb3JlIHB1dF9xdWV1ZQo+ID4+ICsgKiBAaXNfcV91cGRhdGVk OiBjaGVjayB3aGV0aGVyIHRoZSB0YXNrIGlzIGZpbmlzaGVkCj4gPj4gKyAqIEBtYXNrX25vdGlm eTogbWFzayB0aGUgdGFzayBpcnEgb2YgcXVldWUKPiA+PiArICogQG1tYXA6IG1tYXAgYWRkcmVz c2VzIG9mIHF1ZXVlIHRvIHVzZXIgc3BhY2UKPiA+PiArICogQHJlc2V0OiByZXNldCB0aGUgdWFj Y2UgZGV2aWNlCj4gPj4gKyAqIEByZXNldF9xdWV1ZTogcmVzZXQgdGhlIHF1ZXVlCj4gPj4gKyAq IEBpb2N0bDogaW9jdGwgZm9yIHVzZXIgc3BhY2UgdXNlcnMgb2YgdGhlIHF1ZXVlCj4gPj4gKyAq Lwo+ID4+ICtzdHJ1Y3QgdWFjY2Vfb3BzIHsKPiA+PiArCWludCAoKmdldF9hdmFpbGFibGVfaW5z dGFuY2VzKShzdHJ1Y3QgdWFjY2VfZGV2aWNlICp1YWNjZSk7Cj4gPj4gKwlpbnQgKCpnZXRfcXVl dWUpKHN0cnVjdCB1YWNjZV9kZXZpY2UgKnVhY2NlLCB1bnNpZ25lZCBsb25nIGFyZywKPiA+PiAr CQkJIHN0cnVjdCB1YWNjZV9xdWV1ZSAqcSk7Cj4gPj4gKwl2b2lkICgqcHV0X3F1ZXVlKShzdHJ1 Y3QgdWFjY2VfcXVldWUgKnEpOwo+ID4+ICsJaW50ICgqc3RhcnRfcXVldWUpKHN0cnVjdCB1YWNj ZV9xdWV1ZSAqcSk7Cj4gPj4gKwl2b2lkICgqc3RvcF9xdWV1ZSkoc3RydWN0IHVhY2NlX3F1ZXVl ICpxKTsKPiA+PiArCWludCAoKmlzX3FfdXBkYXRlZCkoc3RydWN0IHVhY2NlX3F1ZXVlICpxKTsK PiA+PiArCXZvaWQgKCptYXNrX25vdGlmeSkoc3RydWN0IHVhY2NlX3F1ZXVlICpxLCBpbnQgZXZl bnRfbWFzayk7Cj4gPj4gKwlpbnQgKCptbWFwKShzdHJ1Y3QgdWFjY2VfcXVldWUgKnEsIHN0cnVj dCB2bV9hcmVhX3N0cnVjdCAqdm1hLAo+ID4+ICsJCSAgICBzdHJ1Y3QgdWFjY2VfcWZpbGVfcmVn aW9uICpxZnIpOwo+ID4+ICsJaW50ICgqcmVzZXQpKHN0cnVjdCB1YWNjZV9kZXZpY2UgKnVhY2Nl KTsKPiA+PiArCWludCAoKnJlc2V0X3F1ZXVlKShzdHJ1Y3QgdWFjY2VfcXVldWUgKnEpOyAgCj4g PiBTb21lIG9mIHRoZXNlIGFyZW4ndCB1c2VkIG9uIG9ubHkgZXhpc3RpbmcgZHJpdmVyLiAgSW50 cm9kdWNlIHRoZW0gb25seQo+ID4gaW4gdGhlIHNlcmllcyB0aGF0IHVzZXMgdGhlbS4gIAo+IE9L Cj4gPiAgCj4gPj4gKwlsb25nICgqaW9jdGwpKHN0cnVjdCB1YWNjZV9xdWV1ZSAqcSwgdW5zaWdu ZWQgaW50IGNtZCwKPiA+PiArCQkgICAgICB1bnNpZ25lZCBsb25nIGFyZyk7Cj4gPj4gK307Cj4g Pj4gKwo+ID4+ICsvKioKPiA+PiArICogc3RydWN0IHVhY2NlX2ludGVyZmFjZSAgCj4gPiBJIHRo aW5rIHRoaXMgbmVlZHMgYSBkZXNjcmlwdGlvbiBmb3Iga2VybmVsIGRvYyAoZXZlbiBpZiBpdCdz IG9idmlvdXMhKQo+ID4gQ291bGQgYmUgd3JvbmcgdGhvdWdoLiAgCj4gT0sKPiA+ICAKPiA+PiAr ICogQG5hbWU6IHRoZSB1YWNjZSBkZXZpY2UgbmFtZS4gIFdpbGwgc2hvdyB1cCBpbiBzeXNmcwo+ ID4+ICsgKiBAZmxhZ3M6IHVhY2NlIGRldmljZSBhdHRyaWJ1dGVzCj4gPj4gKyAqIEBvcHM6IHBv aW50ZXIgdG8gdGhlIHN0cnVjdCB1YWNjZV9vcHMKPiA+PiArICoKPiA+PiArICogVGhpcyBzdHJ1 Y3R1cmUgaXMgdXNlZCBmb3IgdGhlIHVhY2NlX3JlZ2lzdGVyKCkKPiA+PiArICovCj4gPj4gK3N0 cnVjdCB1YWNjZV9pbnRlcmZhY2Ugewo+ID4+ICsJY2hhciBuYW1lW1VBQ0NFX01BWF9OQU1FX1NJ WkVdOwo+ID4+ICsJZW51bSB1YWNjZV9kZXZfZmxhZyBmbGFnczsKPiA+PiArCXN0cnVjdCB1YWNj ZV9vcHMgKm9wczsKPiA+PiArfTsKPiA+PiArCj4gPj4gK2VudW0gdWFjY2VfcV9zdGF0ZSB7Cj4g Pj4gKwlVQUNDRV9RX0lOSVQsCj4gPj4gKwlVQUNDRV9RX1NUQVJURUQsCj4gPj4gKwlVQUNDRV9R X1pPTUJJRSwKPiA+PiArfTsKPiA+PiArCj4gPj4gKy8qKgo+ID4+ICsgKiBzdHJ1Y3QgdWFjY2Vf cXVldWUKPiA+PiArICogQHVhY2NlOiBwb2ludGVyIHRvIHVhY2NlCj4gPj4gKyAqIEBwcml2OiBw cml2YXRlIHBvaW50ZXIKPiA+PiArICogQHdhaXQ6IHdhaXQgcXVldWUgaGVhZAo+ID4+ICsgKiBA cGFzaWQ6IHBhc2lkIG9mIHRoZSBxdWV1ZQo+ID4+ICsgKiBAcGlkOiBwaWQgb2YgdGhlIHByb2Nl c3MgdXNpbmcgdGhlIHF1ZXVlCj4gPj4gKyAqIEBoYW5kbGU6IGlvbW11X3N2YSBoYW5kbGUgcmV0 dXJuIGZyb20gaW9tbXVfc3ZhX2JpbmRfZGV2aWNlCj4gPj4gKyAqIEBsaXN0OiBxdWV1ZSBsaXN0 Cj4gPj4gKyAqIEBxZnJzOiBwb2ludGVyIG9mIHFmciByZWdpb25zCj4gPj4gKyAqIEBzdGF0ZTog cXVldWUgc3RhdGUgbWFjaGluZQo+ID4+ICsgKi8KPiA+PiArc3RydWN0IHVhY2NlX3F1ZXVlIHsK PiA+PiArCXN0cnVjdCB1YWNjZV9kZXZpY2UgKnVhY2NlOwo+ID4+ICsJdm9pZCAqcHJpdjsKPiA+ PiArCXdhaXRfcXVldWVfaGVhZF90IHdhaXQ7Cj4gPj4gKwlpbnQgcGFzaWQ7Cj4gPj4gKwlwaWRf dCBwaWQ7Cj4gPj4gKwlzdHJ1Y3QgaW9tbXVfc3ZhICpoYW5kbGU7Cj4gPj4gKwlzdHJ1Y3QgbGlz dF9oZWFkIGxpc3Q7Cj4gPj4gKwlzdHJ1Y3QgdWFjY2VfcWZpbGVfcmVnaW9uICpxZnJzW1VBQ0NF X1FGUlRfTUFYXTsKPiA+PiArCWVudW0gdWFjY2VfcV9zdGF0ZSBzdGF0ZTsKPiA+PiArfTsKPiA+ PiArCj4gPj4gKy8qKgo+ID4+ICsgKiBzdHJ1Y3QgdWFjY2VfZGV2aWNlCj4gPj4gKyAqIEBhbGdz OiBzdXBwb3J0ZWQgYWxnb3JpdGhtcwo+ID4+ICsgKiBAYXBpX3ZlcjogYXBpIHZlcnNpb24KPiA+ PiArICogQHFmX3BnX3NpemU6IHBhZ2Ugc2l6ZSBvZiB0aGUgcXVldWUgZmlsZSByZWdpb25zCj4g Pj4gKyAqIEBvcHM6IHBvaW50ZXIgdG8gdGhlIHN0cnVjdCB1YWNjZV9vcHMKPiA+PiArICogQHBk ZXY6IHBvaW50ZXIgdG8gdGhlIHBhcmVudCBkZXZpY2UKPiA+PiArICogQGlzX3ZmOiB3aGV0aGVy IHZpcnR1YWwgZnVuY3Rpb24KPiA+PiArICogQGZsYWdzOiB1YWNjZSBhdHRyaWJ1dGVzCj4gPj4g KyAqIEBkZXZfaWQ6IGlkIG9mIHRoZSB1YWNjZSBkZXZpY2UKPiA+PiArICogQHByb3Q6IHVhY2Nl IHByb3RlY3Rpb24gZmxhZwo+ID4+ICsgKiBAY2RldjogY2RldiBvZiB0aGUgdWFjY2UKPiA+PiAr ICogQGRldjogZGV2IG9mIHRoZSB1YWNjZQo+ID4+ICsgKiBAcHJpdjogcHJpdmF0ZSBwb2ludGVy IG9mIHRoZSB1YWNjZQo+ID4+ICsgKiBAcXM6IGxpc3QgaGVhZCBvZiBxdWV1ZS0+bGlzdAo+ID4+ ICsgKiBAcV9sb2NrOiBsb2NrIGZvciBxcwo+ID4+ICsgKi8KPiA+PiArc3RydWN0IHVhY2NlX2Rl dmljZSB7Cj4gPj4gKwljb25zdCBjaGFyICphbGdzOwo+ID4+ICsJY29uc3QgY2hhciAqYXBpX3Zl cjsKPiA+PiArCXVuc2lnbmVkIGxvbmcgcWZfcGdfc2l6ZVtVQUNDRV9RRlJUX01BWF07Cj4gPj4g KwlzdHJ1Y3QgdWFjY2Vfb3BzICpvcHM7ICAKPiA+IENhbiB3ZSBtYWtlIHRoaXMgb3BzIHN0cnVj dHVyZSBhIHBvaW50IHRvIGEgY29uc3RhbnQgc3RydWN0Pwo+ID4gSSdtIGd1ZXNzaW5nIGl0J2xs IGJlIGZpeGVkIGZvciBhIGdpdmVuIGRyaXZlci4gIAo+IE9LCj4gPiAgCj4gPj4gKwlzdHJ1Y3Qg ZGV2aWNlICpwZGV2OyAgCj4gPiBQZXJoYXBzIGp1c3QgY2FsbCBpdCBwYXJlbnQuIHBkZXYgd2ls bCBiZSBjb25mdXNpbmcgd2l0aAo+ID4gcGNpIGRldmljZXMuICAKPiBPSwo+ID4gIAo+ID4+ICsJ Ym9vbCBpc192ZjsKPiA+PiArCXUzMiBmbGFnczsKPiA+PiArCXUzMiBkZXZfaWQ7Cj4gPj4gKwl1 MzIgcHJvdDsKPiA+PiArCXN0cnVjdCBjZGV2ICpjZGV2OyAgCj4gPiBDYW4gd2UgZW1iZWQgdGhl IGNkZXYgc3RydWN0dXJlIHJhdGhlciB0aGFuIHVzZSBhIHBvaW50ZXIKPiA+IGFuZCBzZXBhcmF0 ZSBhbGxvY2F0aW9uPyAgCj4gTk8sIHdlIGNhbid0Lgo+IFdlIG9yaWdpbmFsbHkgZW1iZWQgdGhl IGNkZXYgc3RydWN0dXJlLCBhbmQgR3JlZyByZW1pbmRlZCB1cyB0aGVzZSB0d28gCj4gc3RydWN0 dXJlIGhhdmUgZGlmZmVyZW50IGxpZmV0aW1lLgo+IGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDE5 LzgvMjgvNzcxCgpPay4gRmFpciBlbm91Z2guCgoKPiA+PiArCXN0cnVjdCBkZXZpY2UgZGV2Owo+ ID4+ICsJdm9pZCAqcHJpdjsKPiA+PiArCXN0cnVjdCBsaXN0X2hlYWQgcXM7Cj4gPj4gKwlzdHJ1 Y3QgbXV0ZXggcV9sb2NrOwo+ID4+ICt9Owo+ID4+ICsKPiA+PiArI2lmIElTX0VOQUJMRUQoQ09O RklHX1VBQ0NFKQo+ID4+ICsKPiA+PiArc3RydWN0IHVhY2NlX2RldmljZSAqdWFjY2VfcmVnaXN0 ZXIoc3RydWN0IGRldmljZSAqcGFyZW50LAo+ID4+ICsJCQkJICAgIHN0cnVjdCB1YWNjZV9pbnRl cmZhY2UgKmludGVyZmFjZSk7Cj4gPj4gK3ZvaWQgdWFjY2VfdW5yZWdpc3RlcihzdHJ1Y3QgdWFj Y2VfZGV2aWNlICp1YWNjZSk7Cj4gPj4gKwo+ID4+ICsjZWxzZSAvKiBDT05GSUdfVUFDQ0UgKi8K PiA+PiArCj4gPj4gK3N0YXRpYyBpbmxpbmUKPiA+PiArc3RydWN0IHVhY2NlX2RldmljZSAqdWFj Y2VfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqcGFyZW50LAo+ID4+ICsJCQkJICAgIHN0cnVjdCB1 YWNjZV9pbnRlcmZhY2UgKmludGVyZmFjZSkKPiA+PiArewo+ID4+ICsJcmV0dXJuIEVSUl9QVFIo LUVOT0RFVik7Cj4gPj4gK30KPiA+PiArCj4gPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB1YWNjZV91 bnJlZ2lzdGVyKHN0cnVjdCB1YWNjZV9kZXZpY2UgKnVhY2NlKSB7fQo+ID4+ICsKPiA+PiArI2Vu ZGlmIC8qIENPTkZJR19VQUNDRSAqLwo+ID4+ICsKPiA+PiArI2VuZGlmIC8qIF9MSU5VWF9VQUND RV9IICovCj4gPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9taXNjL3VhY2NlL3VhY2NlLmgg Yi9pbmNsdWRlL3VhcGkvbWlzYy91YWNjZS91YWNjZS5oCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiA+PiBpbmRleCAwMDAwMDAwLi5hNGY5Mzc4Cj4gPj4gLS0tIC9kZXYvbnVsbAo+ID4+ICsr KyBiL2luY2x1ZGUvdWFwaS9taXNjL3VhY2NlL3VhY2NlLmgKPiA+PiBAQCAtMCwwICsxLDM4IEBA Cj4gPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyBXSVRIIExpbnV4LXN5 c2NhbGwtbm90ZSAqLwo+ID4+ICsjaWZuZGVmIF9VQVBJVVVBQ0NFX0gKPiA+PiArI2RlZmluZSBf VUFQSVVVQUNDRV9ICj4gPj4gKwo+ID4+ICsjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KPiA+PiAr I2luY2x1ZGUgPGxpbnV4L2lvY3RsLmg+Cj4gPj4gKwo+ID4+ICsvKiBVQUNDRV9DTURfU1RBUlRf UTogU3RhcnQgdGhlIHF1ZXVlICovCj4gPj4gKyNkZWZpbmUgVUFDQ0VfQ01EX1NUQVJUX1EJX0lP KCdXJywgMCkKPiA+PiArCj4gPj4gKy8qKgo+ID4+ICsgKiBVQUNDRV9DTURfUFVUX1E6Cj4gPj4g KyAqIFVzZXIgYWN0aXZlbHkgc3RvcCBxdWV1ZSBhbmQgZnJlZSBxdWV1ZSByZXNvdXJjZSBpbW1l ZGlhdGVseQo+ID4+ICsgKiBPcHRpbWl6YXRpb24gbWV0aG9kIHNpbmNlIGNsb3NlIGZkIG1heSBk ZWxheQo+ID4+ICsgKi8KPiA+PiArI2RlZmluZSBVQUNDRV9DTURfUFVUX1EJCV9JTygnVycsIDEp Cj4gPj4gKwo+ID4+ICsvKioKPiA+PiArICogZW51bSB1YWNjZV9kZXZfZmxhZzogRGV2aWNlIGZs YWdzOgo+ID4+ICsgKiBAVUFDQ0VfREVWX1NWQTogU2hhcmVkIFZpcnR1YWwgQWRkcmVzc2VzCj4g Pj4gKyAqCQkgICBTdXBwb3J0IFBBU0lECj4gPj4gKyAqCQkgICBTdXBwb3J0IGRldmljZSBwYWdl IGZhdWx0cyAoUENJIFBSSSBvciBTTU1VIFN0YWxsKQo+ID4+ICsgKi8KPiA+PiArZW51bSB1YWNj ZV9kZXZfZmxhZyB7Cj4gPj4gKwlVQUNDRV9ERVZfU1ZBID0gQklUKDApLCAgCj4gPiBBcyBtZW50 aW9uZWQgaW4gZG9jcyByZXZpZXcsIHRoaXMgZG9lc24ndCBsb29rIGxpa2UgYW4gZW51bSB0byBt ZS4KPiA+IEp1c3QgdXNlICNkZWZpbmUgZm9yIHRoZSBiaXQgYW5kIGEgc3VpdGFibGUgc2l6ZWQg aW50ZWdlciBmb3IgYW55Cj4gPiBjYWxscyB1c2luZyBpdC4gIAo+IE9LLCBidXQgdGhlcmUgYXJl IHN0aWxsIG1vcmUgZmVhdHVyZXMgaW4gdGhlIGZ1dHVyZSBwYXRjaC4KVGhhdCdzIG5vdCB0aGUg aXNzdWUuICBBbiBlbnVtIHNob3VsZCAobW9yZSBvciBsZXNzKSB1c2UgY29uY3VycmVudCB2YWx1 ZXMuCgpBID0gMCwKQiA9IDEsCkMgPSAyLCBldGMKYW5kIGFuIGluc3RhbmNlIG9mIGl0IHNob3Vs ZCBvbmx5IHRha2Ugb25lIG9mIHRoZW0uCgpPbmNlIHlvdSBhcmUgdXNpbmcgaXQgYXMgdmFsdWVz IGZvciBhIGJpdG1hcCwgdGhlIHR5cGluZyBiZWNvbWVzIGlycmVsZXZhbnQKYXMgeW91IGNhbid0 IHJlYWxseSB1c2UgaXQgdG8gZW5mb3JjZSBhbnl0aGluZywgc28geW91IHNob3VsZCBqdXN0IHVz ZS4KCiNkZWZpbmUgVUFDQ0VfREVWX1NWQSBCSVQoMCkKI2RlZmluZSBVQUNDRV9ERVZfU09NRVRI SU5HIEJJVCgxKSBldGMKCj4gCj4gVGhhbmtzCj4gCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KaW9tbXUgbWFpbGluZyBsaXN0CmlvbW11QGxpc3RzLmxp bnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWls bWFuL2xpc3RpbmZvL2lvbW11