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=-15.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 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 9FAF5C433B4 for ; Sat, 1 May 2021 17:28:43 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 AF9BA61353 for ; Sat, 1 May 2021 17:28:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AF9BA61353 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-nvme-bounces+linux-nvme=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Se4IjTkYhIQKDOazNkUjmAptrTu91HPlimguzgmUXOg=; b=hj2il7MqS4G53HAJRsYLwNs6U +gatyiC0NOjfLZvGLoB/0lT0OwdMB5ng6Z08BLbvoetkb0FOuab3rM6jjw17BGHhdPzy5EAgREtf/ AmWxb1SWMyVnHTQhryQhPKMMWucQAEZ7FPBPNyd+kg/pQtgaVh1RJVQbsqPH+7Njr2tvoKfJRltUm MA6oSCIEf9bMN5i7VARCcadbIbRskN5Q0Jii96C/gweT3qBTQUlNyqNWI/Cerhgnit6TCWRLA1xGx Ia4440M3jua67ONaf9P1PGMsa+FhIrDmzvt4LQmGFhFWiQVwR0TKEhA+MpX37b2kIT1CKSIfPELq8 fcFbTap2Q==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lctPh-00AOcc-EO; Sat, 01 May 2021 17:28:21 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lctPf-00AOcB-8U for linux-nvme@desiato.infradead.org; Sat, 01 May 2021 17:28:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:In-Reply-To:MIME-Version:Date:Message-ID:From:References:Cc:To: Subject:Sender:Reply-To:Content-ID:Content-Description; bh=JVa+S0HyJDEn3gsCSJzlidii8gFI0ULCBSRNUflWxjg=; b=aa/Hqs2ORMxaow5P6emA32sbJB HLcbBpTE/qKDmjb6FOKMuNEbr5pwm1YA4rOmGO13fw5d+Xs8bPoOPgQh9qyPbJHjxyT7O/6wAFVKh kQKhdLGCh6faYLeJH0NVHG7FzuU8qodxGWjFkLW17qY3mHISncTQ2msKtU+Grc4IPcCKnOezYXuPi rqAYJVvcuMwZyI0kNIzJeG/CcuNwsdhyZt5NlN2Oh5aFMm94hLynaHNQaDPFgDiTG81qUwe6K5d0c Tqtn++hYoyxkLHpCSFjpWGanUNLFpCnpYGFsMkUcEVKuHX1n8wUyEdyYLPz1wR42075lwARdrb+jY IMll97dQ==; Received: from mx2.suse.de ([195.135.220.15]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lctPa-00256u-5S for linux-nvme@lists.infradead.org; Sat, 01 May 2021 17:28:17 +0000 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id DC4EAB2F6; Sat, 1 May 2021 17:28:10 +0000 (UTC) Subject: Re: [RFC PATCH v4 02/27] qed: Add NVMeTCP Offload Connection Level FW and HW HSI To: Shai Malin , netdev@vger.kernel.org, linux-nvme@lists.infradead.org, sagi@grimberg.me, hch@lst.de, axboe@fb.com, kbusch@kernel.org Cc: "David S . Miller davem @ davemloft . net --cc=Jakub Kicinski" , aelior@marvell.com, mkalderon@marvell.com, okulkarni@marvell.com, pkushwaha@marvell.com, malin1024@gmail.com References: <20210429190926.5086-1-smalin@marvell.com> <20210429190926.5086-3-smalin@marvell.com> From: Hannes Reinecke Message-ID: Date: Sat, 1 May 2021 19:28:07 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.0 MIME-Version: 1.0 In-Reply-To: <20210429190926.5086-3-smalin@marvell.com> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210501_102814_554509_F0D93E35 X-CRM114-Status: GOOD ( 29.36 ) X-BeenThere: linux-nvme@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "Linux-nvme" Errors-To: linux-nvme-bounces+linux-nvme=archiver.kernel.org@lists.infradead.org T24gNC8yOS8yMSA5OjA5IFBNLCBTaGFpIE1hbGluIHdyb3RlOgo+IFRoaXMgcGF0Y2ggaW50cm9k dWNlcyB0aGUgTlZNZVRDUCBIU0kgYW5kIEhTSSBmdW5jdGlvbmFsaXR5IGluIG9yZGVyIHRvCj4g aW5pdGlhbGl6ZSBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgSFcgZGV2aWNlIGFzIHBhcnQgb2YgdGhl IGNvbm5lY3Rpb24gbGV2ZWwKPiBIU0kuCj4gCj4gVGhpcyBpbmNsdWRlczoKPiAtIENvbm5lY3Rp b24gb2ZmbG9hZDogb2ZmbG9hZCBhIFRDUCBjb25uZWN0aW9uIHRvIHRoZSBGVy4KPiAtIENvbm5l Y3Rpb24gdXBkYXRlOiB1cGRhdGUgdGhlIElDUmVxLUlDUmVzcCBwYXJhbXMKPiAtIENvbm5lY3Rp b24gY2xlYXIgU1E6IG91dHN0YW5kaW5nIElPcyBGVyBmbHVzaC4KPiAtIENvbm5lY3Rpb24gdGVy bWluYXRpb246IHRlcm1pbmF0ZSB0aGUgVENQIGNvbm5lY3Rpb24gYW5kIGZsdXNoIHRoZSBGVy4K PiAKPiBBY2tlZC1ieTogSWdvciBSdXNza2lraCA8aXJ1c3NraWtoQG1hcnZlbGwuY29tPgo+IFNp Z25lZC1vZmYtYnk6IFByYWJoYWthciBLdXNod2FoYSA8cGt1c2h3YWhhQG1hcnZlbGwuY29tPgo+ IFNpZ25lZC1vZmYtYnk6IE9ta2FyIEt1bGthcm5pIDxva3Vsa2FybmlAbWFydmVsbC5jb20+Cj4g U2lnbmVkLW9mZi1ieTogU2hhaSBNYWxpbiA8c21hbGluQG1hcnZlbGwuY29tPgo+IFNpZ25lZC1v ZmYtYnk6IE1pY2hhbCBLYWxkZXJvbiA8bWthbGRlcm9uQG1hcnZlbGwuY29tPgo+IFNpZ25lZC1v ZmYtYnk6IEFyaWVsIEVsaW9yIDxhZWxpb3JAbWFydmVsbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJz L25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9udm1ldGNwLmMgfCA1ODAgKysrKysrKysrKysr KysrKystCj4gICBkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9udm1ldGNwLmgg fCAgNjMgKysKPiAgIGRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX3NwLmggICAg ICB8ICAgMyArCj4gICBpbmNsdWRlL2xpbnV4L3FlZC9udm1ldGNwX2NvbW1vbi5oICAgICAgICAg ICAgfCAxNDMgKysrKysKPiAgIGluY2x1ZGUvbGludXgvcWVkL3FlZF9udm1ldGNwX2lmLmggICAg ICAgICAgICB8ICA5NCArKysKPiAgIDUgZmlsZXMgY2hhbmdlZCwgODgxIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fs b2dpYy9xZWQvcWVkX252bWV0Y3AuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQv cWVkX252bWV0Y3AuYwo+IGluZGV4IGRhM2I1MDAyZDIxNi4uNzliZDFjYzY2NzdmIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX252bWV0Y3AuYwo+ICsr KyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX252bWV0Y3AuYwo+IEBAIC0y NTksNiArMjU5LDU3OCBAQCBzdGF0aWMgaW50IHFlZF9udm1ldGNwX3N0YXJ0KHN0cnVjdCBxZWRf ZGV2ICpjZGV2LAo+ICAgCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyBzdHJ1Y3QgcWVk X2hhc2hfbnZtZXRjcF9jb24gKnFlZF9udm1ldGNwX2dldF9oYXNoKHN0cnVjdCBxZWRfZGV2ICpj ZGV2LAo+ICsJCQkJCQkJIHUzMiBoYW5kbGUpCj4gK3sKPiArCXN0cnVjdCBxZWRfaGFzaF9udm1l dGNwX2NvbiAqaGFzaF9jb24gPSBOVUxMOwo+ICsKPiArCWlmICghKGNkZXYtPmZsYWdzICYgUUVE X0ZMQUdfU1RPUkFHRV9TVEFSVEVEKSkKPiArCQlyZXR1cm4gTlVMTDsKPiArCj4gKwloYXNoX2Zv cl9lYWNoX3Bvc3NpYmxlKGNkZXYtPmNvbm5lY3Rpb25zLCBoYXNoX2Nvbiwgbm9kZSwgaGFuZGxl KSB7Cj4gKwkJaWYgKGhhc2hfY29uLT5jb24tPmljaWQgPT0gaGFuZGxlKQo+ICsJCQlicmVhazsK PiArCX0KPiArCj4gKwlpZiAoIWhhc2hfY29uIHx8IGhhc2hfY29uLT5jb24tPmljaWQgIT0gaGFu ZGxlKQo+ICsJCXJldHVybiBOVUxMOwo+ICsKPiArCXJldHVybiBoYXNoX2NvbjsKPiArfQo+ICsK PiArc3RhdGljIGludCBxZWRfc3BfbnZtZXRjcF9jb25uX29mZmxvYWQoc3RydWN0IHFlZF9od2Zu ICpwX2h3Zm4sCj4gKwkJCQkgICAgICAgc3RydWN0IHFlZF9udm1ldGNwX2Nvbm4gKnBfY29ubiwK PiArCQkJCSAgICAgICBlbnVtIHNwcV9tb2RlIGNvbXBfbW9kZSwKPiArCQkJCSAgICAgICBzdHJ1 Y3QgcWVkX3NwcV9jb21wX2NiICpwX2NvbXBfYWRkcikKPiArewo+ICsJc3RydWN0IG52bWV0Y3Bf c3BlX2Nvbm5fb2ZmbG9hZCAqcF9yYW1yb2QgPSBOVUxMOwo+ICsJc3RydWN0IHRjcF9vZmZsb2Fk X3BhcmFtc19vcHQyICpwX3RjcDIgPSBOVUxMOwo+ICsJc3RydWN0IHFlZF9zcF9pbml0X2RhdGEg aW5pdF9kYXRhID0geyAwIH07Cj4gKwlzdHJ1Y3QgcWVkX3NwcV9lbnRyeSAqcF9lbnQgPSBOVUxM Owo+ICsJZG1hX2FkZHJfdCByMnRxX3BibF9hZGRyOwo+ICsJZG1hX2FkZHJfdCB4aHFfcGJsX2Fk ZHI7Cj4gKwlkbWFfYWRkcl90IHVocV9wYmxfYWRkcjsKPiArCXUxNiBwaHlzaWNhbF9xOwo+ICsJ aW50IHJjID0gMDsKPiArCXUzMiBkdmFsOwo+ICsJdTggaTsKPiArCj4gKwkvKiBHZXQgU1BRIGVu dHJ5ICovCj4gKwlpbml0X2RhdGEuY2lkID0gcF9jb25uLT5pY2lkOwo+ICsJaW5pdF9kYXRhLm9w YXF1ZV9maWQgPSBwX2h3Zm4tPmh3X2luZm8ub3BhcXVlX2ZpZDsKPiArCWluaXRfZGF0YS5jb21w X21vZGUgPSBjb21wX21vZGU7Cj4gKwlpbml0X2RhdGEucF9jb21wX2RhdGEgPSBwX2NvbXBfYWRk cjsKPiArCj4gKwlyYyA9IHFlZF9zcF9pbml0X3JlcXVlc3QocF9od2ZuLCAmcF9lbnQsCj4gKwkJ CQkgTlZNRVRDUF9SQU1ST0RfQ01EX0lEX09GRkxPQURfQ09OTiwKPiArCQkJCSBQUk9UT0NPTElE X05WTUVUQ1AsICZpbml0X2RhdGEpOwo+ICsJaWYgKHJjKQo+ICsJCXJldHVybiByYzsKPiArCj4g KwlwX3JhbXJvZCA9ICZwX2VudC0+cmFtcm9kLm52bWV0Y3BfY29ubl9vZmZsb2FkOwo+ICsKPiAr CS8qIFRyYW5zbWlzc2lvbiBQUSBpcyB0aGUgZmlyc3Qgb2YgdGhlIFBGICovCj4gKwlwaHlzaWNh bF9xID0gcWVkX2dldF9jbV9wcV9pZHgocF9od2ZuLCBQUV9GTEFHU19PRkxEKTsKPiArCXBfY29u bi0+cGh5c2ljYWxfcTAgPSBjcHVfdG9fbGUxNihwaHlzaWNhbF9xKTsKPiArCXBfcmFtcm9kLT5u dm1ldGNwLnBoeXNpY2FsX3EwID0gY3B1X3RvX2xlMTYocGh5c2ljYWxfcSk7Cj4gKwo+ICsJLyog bnZtZXRjcCBQdXJlLUFDSyBQUSAqLwo+ICsJcGh5c2ljYWxfcSA9IHFlZF9nZXRfY21fcHFfaWR4 KHBfaHdmbiwgUFFfRkxBR1NfQUNLKTsKPiArCXBfY29ubi0+cGh5c2ljYWxfcTEgPSBjcHVfdG9f bGUxNihwaHlzaWNhbF9xKTsKPiArCXBfcmFtcm9kLT5udm1ldGNwLnBoeXNpY2FsX3ExID0gY3B1 X3RvX2xlMTYocGh5c2ljYWxfcSk7Cj4gKwo+ICsJcF9yYW1yb2QtPmNvbm5faWQgPSBjcHVfdG9f bGUxNihwX2Nvbm4tPmNvbm5faWQpOwo+ICsKPiArCURNQV9SRUdQQUlSX0xFKHBfcmFtcm9kLT5u dm1ldGNwLnNxX3BibF9hZGRyLCBwX2Nvbm4tPnNxX3BibF9hZGRyKTsKPiArCj4gKwlyMnRxX3Bi bF9hZGRyID0gcWVkX2NoYWluX2dldF9wYmxfcGh5cygmcF9jb25uLT5yMnRxKTsKPiArCURNQV9S RUdQQUlSX0xFKHBfcmFtcm9kLT5udm1ldGNwLnIydHFfcGJsX2FkZHIsIHIydHFfcGJsX2FkZHIp Owo+ICsKPiArCXhocV9wYmxfYWRkciA9IHFlZF9jaGFpbl9nZXRfcGJsX3BoeXMoJnBfY29ubi0+ eGhxKTsKPiArCURNQV9SRUdQQUlSX0xFKHBfcmFtcm9kLT5udm1ldGNwLnhocV9wYmxfYWRkciwg eGhxX3BibF9hZGRyKTsKPiArCj4gKwl1aHFfcGJsX2FkZHIgPSBxZWRfY2hhaW5fZ2V0X3BibF9w aHlzKCZwX2Nvbm4tPnVocSk7Cj4gKwlETUFfUkVHUEFJUl9MRShwX3JhbXJvZC0+bnZtZXRjcC51 aHFfcGJsX2FkZHIsIHVocV9wYmxfYWRkcik7Cj4gKwo+ICsJcF9yYW1yb2QtPm52bWV0Y3AuZmxh Z3MgPSBwX2Nvbm4tPm9mZmxfZmxhZ3M7Cj4gKwlwX3JhbXJvZC0+bnZtZXRjcC5kZWZhdWx0X2Nx ID0gcF9jb25uLT5kZWZhdWx0X2NxOwo+ICsJcF9yYW1yb2QtPm52bWV0Y3AuaW5pdGlhbF9hY2sg PSAwOwo+ICsKPiArCURNQV9SRUdQQUlSX0xFKHBfcmFtcm9kLT5udm1ldGNwLm52bWV0Y3AuY2Nj aWRfaXRpZF90YWJsZV9hZGRyLAo+ICsJCSAgICAgICBwX2Nvbm4tPm52bWV0Y3BfY2NjaWRfaXRp ZF90YWJsZV9hZGRyKTsKPiArCXBfcmFtcm9kLT5udm1ldGNwLm52bWV0Y3AuY2NjaWRfbWF4X3Jh bmdlID0KPiArCQkgY3B1X3RvX2xlMTYocF9jb25uLT5udm1ldGNwX2NjY2lkX21heF9yYW5nZSk7 Cj4gKwo+ICsJcF90Y3AyID0gJnBfcmFtcm9kLT50Y3A7Cj4gKwo+ICsJcWVkX3NldF9md19tYWNf YWRkcigmcF90Y3AyLT5yZW1vdGVfbWFjX2FkZHJfaGksCj4gKwkJCSAgICAmcF90Y3AyLT5yZW1v dGVfbWFjX2FkZHJfbWlkLAo+ICsJCQkgICAgJnBfdGNwMi0+cmVtb3RlX21hY19hZGRyX2xvLCBw X2Nvbm4tPnJlbW90ZV9tYWMpOwo+ICsJcWVkX3NldF9md19tYWNfYWRkcigmcF90Y3AyLT5sb2Nh bF9tYWNfYWRkcl9oaSwKPiArCQkJICAgICZwX3RjcDItPmxvY2FsX21hY19hZGRyX21pZCwKPiAr CQkJICAgICZwX3RjcDItPmxvY2FsX21hY19hZGRyX2xvLCBwX2Nvbm4tPmxvY2FsX21hYyk7Cj4g Kwo+ICsJcF90Y3AyLT52bGFuX2lkID0gY3B1X3RvX2xlMTYocF9jb25uLT52bGFuX2lkKTsKPiAr CXBfdGNwMi0+ZmxhZ3MgPSBjcHVfdG9fbGUxNihwX2Nvbm4tPnRjcF9mbGFncyk7Cj4gKwo+ICsJ cF90Y3AyLT5pcF92ZXJzaW9uID0gcF9jb25uLT5pcF92ZXJzaW9uOwo+ICsJZm9yIChpID0gMDsg aSA8IDQ7IGkrKykgewo+ICsJCWR2YWwgPSBwX2Nvbm4tPnJlbW90ZV9pcFtpXTsKPiArCQlwX3Rj cDItPnJlbW90ZV9pcFtpXSA9IGNwdV90b19sZTMyKGR2YWwpOwo+ICsJCWR2YWwgPSBwX2Nvbm4t PmxvY2FsX2lwW2ldOwo+ICsJCXBfdGNwMi0+bG9jYWxfaXBbaV0gPSBjcHVfdG9fbGUzMihkdmFs KTsKPiArCX0KPiArCgpXaGF0IGlzIHRoaXM/ClNvbWUgY29udm9sdXRlZCB3YXkgb2YgYXNzaWdu aW5nIHRoZSBJUCBhZGRyZXNzIGluIGxpdHRsZSBlbmRpYW4/ClBvaW50bGVzcyBpZiBpdCdzIElQ djQsIGFzIHRoZW4gZWFjaCBiaXQgaXMganVzdCBvbmUgYnl0ZS4KQW5kIGlmIGl0J3MgZm9yIElQ djYsIHdoYXQgZG8geW91IGRvIGZvciBJUHY0PwpBbmQgaXNuJ3QgdGhlcmUgYSBoZWxwZXIgZm9y IGl0PwoKPiArCXBfdGNwMi0+Zmxvd19sYWJlbCA9IGNwdV90b19sZTMyKHBfY29ubi0+Zmxvd19s YWJlbCk7Cj4gKwlwX3RjcDItPnR0bCA9IHBfY29ubi0+dHRsOwo+ICsJcF90Y3AyLT50b3Nfb3Jf dGMgPSBwX2Nvbm4tPnRvc19vcl90YzsKPiArCXBfdGNwMi0+cmVtb3RlX3BvcnQgPSBjcHVfdG9f bGUxNihwX2Nvbm4tPnJlbW90ZV9wb3J0KTsKPiArCXBfdGNwMi0+bG9jYWxfcG9ydCA9IGNwdV90 b19sZTE2KHBfY29ubi0+bG9jYWxfcG9ydCk7Cj4gKwlwX3RjcDItPm1zcyA9IGNwdV90b19sZTE2 KHBfY29ubi0+bXNzKTsKPiArCXBfdGNwMi0+cmN2X3duZF9zY2FsZSA9IHBfY29ubi0+cmN2X3du ZF9zY2FsZTsKPiArCXBfdGNwMi0+Y29ubmVjdF9tb2RlID0gcF9jb25uLT5jb25uZWN0X21vZGU7 Cj4gKwlwX3RjcDItPmN3bmQgPSBjcHVfdG9fbGUzMihwX2Nvbm4tPmN3bmQpOwo+ICsJcF90Y3Ay LT5rYV9tYXhfcHJvYmVfY250ID0gcF9jb25uLT5rYV9tYXhfcHJvYmVfY250Owo+ICsJcF90Y3Ay LT5rYV90aW1lb3V0ID0gY3B1X3RvX2xlMzIocF9jb25uLT5rYV90aW1lb3V0KTsKPiArCXBfdGNw Mi0+bWF4X3J0X3RpbWUgPSBjcHVfdG9fbGUzMihwX2Nvbm4tPm1heF9ydF90aW1lKTsKPiArCXBf dGNwMi0+a2FfaW50ZXJ2YWwgPSBjcHVfdG9fbGUzMihwX2Nvbm4tPmthX2ludGVydmFsKTsKPiAr Cj4gKwlyZXR1cm4gcWVkX3NwcV9wb3N0KHBfaHdmbiwgcF9lbnQsIE5VTEwpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW50IHFlZF9zcF9udm1ldGNwX2Nvbm5fdXBkYXRlKHN0cnVjdCBxZWRfaHdmbiAq cF9od2ZuLAo+ICsJCQkJICAgICAgc3RydWN0IHFlZF9udm1ldGNwX2Nvbm4gKnBfY29ubiwKPiAr CQkJCSAgICAgIGVudW0gc3BxX21vZGUgY29tcF9tb2RlLAo+ICsJCQkJICAgICAgc3RydWN0IHFl ZF9zcHFfY29tcF9jYiAqcF9jb21wX2FkZHIpCj4gK3sKPiArCXN0cnVjdCBudm1ldGNwX2Nvbm5f dXBkYXRlX3JhbXJvZF9wYXJhbXMgKnBfcmFtcm9kID0gTlVMTDsKPiArCXN0cnVjdCBxZWRfc3Bx X2VudHJ5ICpwX2VudCA9IE5VTEw7Cj4gKwlzdHJ1Y3QgcWVkX3NwX2luaXRfZGF0YSBpbml0X2Rh dGE7Cj4gKwlpbnQgcmMgPSAtRUlOVkFMOwo+ICsJdTMyIGR2YWw7Cj4gKwo+ICsJLyogR2V0IFNQ USBlbnRyeSAqLwo+ICsJbWVtc2V0KCZpbml0X2RhdGEsIDAsIHNpemVvZihpbml0X2RhdGEpKTsK PiArCWluaXRfZGF0YS5jaWQgPSBwX2Nvbm4tPmljaWQ7Cj4gKwlpbml0X2RhdGEub3BhcXVlX2Zp ZCA9IHBfaHdmbi0+aHdfaW5mby5vcGFxdWVfZmlkOwo+ICsJaW5pdF9kYXRhLmNvbXBfbW9kZSA9 IGNvbXBfbW9kZTsKPiArCWluaXRfZGF0YS5wX2NvbXBfZGF0YSA9IHBfY29tcF9hZGRyOwo+ICsK PiArCXJjID0gcWVkX3NwX2luaXRfcmVxdWVzdChwX2h3Zm4sICZwX2VudCwKPiArCQkJCSBOVk1F VENQX1JBTVJPRF9DTURfSURfVVBEQVRFX0NPTk4sCj4gKwkJCQkgUFJPVE9DT0xJRF9OVk1FVENQ LCAmaW5pdF9kYXRhKTsKPiArCWlmIChyYykKPiArCQlyZXR1cm4gcmM7Cj4gKwo+ICsJcF9yYW1y b2QgPSAmcF9lbnQtPnJhbXJvZC5udm1ldGNwX2Nvbm5fdXBkYXRlOwo+ICsJcF9yYW1yb2QtPmNv bm5faWQgPSBjcHVfdG9fbGUxNihwX2Nvbm4tPmNvbm5faWQpOwo+ICsJcF9yYW1yb2QtPmZsYWdz ID0gcF9jb25uLT51cGRhdGVfZmxhZzsKPiArCXBfcmFtcm9kLT5tYXhfc2VxX3NpemUgPSBjcHVf dG9fbGUzMihwX2Nvbm4tPm1heF9zZXFfc2l6ZSk7Cj4gKwlkdmFsID0gcF9jb25uLT5tYXhfcmVj dl9wZHVfbGVuZ3RoOwo+ICsJcF9yYW1yb2QtPm1heF9yZWN2X3BkdV9sZW5ndGggPSBjcHVfdG9f bGUzMihkdmFsKTsKPiArCWR2YWwgPSBwX2Nvbm4tPm1heF9zZW5kX3BkdV9sZW5ndGg7Cj4gKwlw X3JhbXJvZC0+bWF4X3NlbmRfcGR1X2xlbmd0aCA9IGNwdV90b19sZTMyKGR2YWwpOwo+ICsJZHZh bCA9IHBfY29ubi0+Zmlyc3Rfc2VxX2xlbmd0aDsKPiArCXBfcmFtcm9kLT5maXJzdF9zZXFfbGVu Z3RoID0gY3B1X3RvX2xlMzIoZHZhbCk7Cj4gKwo+ICsJcmV0dXJuIHFlZF9zcHFfcG9zdChwX2h3 Zm4sIHBfZW50LCBOVUxMKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBxZWRfc3BfbnZtZXRjcF9j b25uX3Rlcm1pbmF0ZShzdHJ1Y3QgcWVkX2h3Zm4gKnBfaHdmbiwKPiArCQkJCQkgc3RydWN0IHFl ZF9udm1ldGNwX2Nvbm4gKnBfY29ubiwKPiArCQkJCQkgZW51bSBzcHFfbW9kZSBjb21wX21vZGUs Cj4gKwkJCQkJIHN0cnVjdCBxZWRfc3BxX2NvbXBfY2IgKnBfY29tcF9hZGRyKQo+ICt7Cj4gKwlz dHJ1Y3QgbnZtZXRjcF9zcGVfY29ubl90ZXJtaW5hdGlvbiAqcF9yYW1yb2QgPSBOVUxMOwo+ICsJ c3RydWN0IHFlZF9zcHFfZW50cnkgKnBfZW50ID0gTlVMTDsKPiArCXN0cnVjdCBxZWRfc3BfaW5p dF9kYXRhIGluaXRfZGF0YTsKPiArCWludCByYyA9IC1FSU5WQUw7Cj4gKwo+ICsJLyogR2V0IFNQ USBlbnRyeSAqLwo+ICsJbWVtc2V0KCZpbml0X2RhdGEsIDAsIHNpemVvZihpbml0X2RhdGEpKTsK PiArCWluaXRfZGF0YS5jaWQgPSBwX2Nvbm4tPmljaWQ7Cj4gKwlpbml0X2RhdGEub3BhcXVlX2Zp ZCA9IHBfaHdmbi0+aHdfaW5mby5vcGFxdWVfZmlkOwo+ICsJaW5pdF9kYXRhLmNvbXBfbW9kZSA9 IGNvbXBfbW9kZTsKPiArCWluaXRfZGF0YS5wX2NvbXBfZGF0YSA9IHBfY29tcF9hZGRyOwo+ICsK PiArCXJjID0gcWVkX3NwX2luaXRfcmVxdWVzdChwX2h3Zm4sICZwX2VudCwKPiArCQkJCSBOVk1F VENQX1JBTVJPRF9DTURfSURfVEVSTUlOQVRJT05fQ09OTiwKPiArCQkJCSBQUk9UT0NPTElEX05W TUVUQ1AsICZpbml0X2RhdGEpOwo+ICsJaWYgKHJjKQo+ICsJCXJldHVybiByYzsKPiArCj4gKwlw X3JhbXJvZCA9ICZwX2VudC0+cmFtcm9kLm52bWV0Y3BfY29ubl90ZXJtaW5hdGU7Cj4gKwlwX3Jh bXJvZC0+Y29ubl9pZCA9IGNwdV90b19sZTE2KHBfY29ubi0+Y29ubl9pZCk7Cj4gKwlwX3JhbXJv ZC0+YWJvcnRpdmUgPSBwX2Nvbm4tPmFib3J0aXZlX2RzY29ubmVjdDsKPiArCj4gKwlyZXR1cm4g cWVkX3NwcV9wb3N0KHBfaHdmbiwgcF9lbnQsIE5VTEwpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IHFlZF9zcF9udm1ldGNwX2Nvbm5fY2xlYXJfc3Eoc3RydWN0IHFlZF9od2ZuICpwX2h3Zm4sCj4g KwkJCQkJc3RydWN0IHFlZF9udm1ldGNwX2Nvbm4gKnBfY29ubiwKPiArCQkJCQllbnVtIHNwcV9t b2RlIGNvbXBfbW9kZSwKPiArCQkJCQlzdHJ1Y3QgcWVkX3NwcV9jb21wX2NiICpwX2NvbXBfYWRk cikKPiArewo+ICsJc3RydWN0IHFlZF9zcHFfZW50cnkgKnBfZW50ID0gTlVMTDsKPiArCXN0cnVj dCBxZWRfc3BfaW5pdF9kYXRhIGluaXRfZGF0YTsKPiArCWludCByYyA9IC1FSU5WQUw7Cj4gKwo+ ICsJLyogR2V0IFNQUSBlbnRyeSAqLwo+ICsJbWVtc2V0KCZpbml0X2RhdGEsIDAsIHNpemVvZihp bml0X2RhdGEpKTsKPiArCWluaXRfZGF0YS5jaWQgPSBwX2Nvbm4tPmljaWQ7Cj4gKwlpbml0X2Rh dGEub3BhcXVlX2ZpZCA9IHBfaHdmbi0+aHdfaW5mby5vcGFxdWVfZmlkOwo+ICsJaW5pdF9kYXRh LmNvbXBfbW9kZSA9IGNvbXBfbW9kZTsKPiArCWluaXRfZGF0YS5wX2NvbXBfZGF0YSA9IHBfY29t cF9hZGRyOwo+ICsKPiArCXJjID0gcWVkX3NwX2luaXRfcmVxdWVzdChwX2h3Zm4sICZwX2VudCwK PiArCQkJCSBOVk1FVENQX1JBTVJPRF9DTURfSURfQ0xFQVJfU1EsCj4gKwkJCQkgUFJPVE9DT0xJ RF9OVk1FVENQLCAmaW5pdF9kYXRhKTsKPiArCWlmIChyYykKPiArCQlyZXR1cm4gcmM7Cj4gKwo+ ICsJcmV0dXJuIHFlZF9zcHFfcG9zdChwX2h3Zm4sIHBfZW50LCBOVUxMKTsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgX19pb21lbSAqcWVkX252bWV0Y3BfZ2V0X2RiX2FkZHIoc3RydWN0IHFlZF9o d2ZuICpwX2h3Zm4sIHUzMiBjaWQpCj4gK3sKPiArCXJldHVybiAodTggX19pb21lbSAqKXBfaHdm bi0+ZG9vcmJlbGxzICsKPiArCQkJICAgICBxZWRfZGJfYWRkcihjaWQsIERRX0RFTVNfTEVHQUNZ KTsKPiArfQo+ICsKPiArc3RhdGljIGludCBxZWRfbnZtZXRjcF9hbGxvY2F0ZV9jb25uZWN0aW9u KHN0cnVjdCBxZWRfaHdmbiAqcF9od2ZuLAo+ICsJCQkJCSAgIHN0cnVjdCBxZWRfbnZtZXRjcF9j b25uICoqcF9vdXRfY29ubikKPiArewo+ICsJc3RydWN0IHFlZF9jaGFpbl9pbml0X3BhcmFtcyBw YXJhbXMgPSB7Cj4gKwkJLm1vZGUJCT0gUUVEX0NIQUlOX01PREVfUEJMLAo+ICsJCS5pbnRlbmRl ZF91c2UJPSBRRURfQ0hBSU5fVVNFX1RPX0NPTlNVTUVfUFJPRFVDRSwKPiArCQkuY250X3R5cGUJ PSBRRURfQ0hBSU5fQ05UX1RZUEVfVTE2LAo+ICsJfTsKPiArCXN0cnVjdCBxZWRfbnZtZXRjcF9w Zl9wYXJhbXMgKnBfcGFyYW1zID0gTlVMTDsKPiArCXN0cnVjdCBxZWRfbnZtZXRjcF9jb25uICpw X2Nvbm4gPSBOVUxMOwo+ICsJaW50IHJjID0gMDsKPiArCj4gKwkvKiBUcnkgZmluZGluZyBhIGZy ZWUgY29ubmVjdGlvbiB0aGF0IGNhbiBiZSB1c2VkICovCj4gKwlzcGluX2xvY2tfYmgoJnBfaHdm bi0+cF9udm1ldGNwX2luZm8tPmxvY2spOwo+ICsJaWYgKCFsaXN0X2VtcHR5KCZwX2h3Zm4tPnBf bnZtZXRjcF9pbmZvLT5mcmVlX2xpc3QpKQo+ICsJCXBfY29ubiA9IGxpc3RfZmlyc3RfZW50cnko JnBfaHdmbi0+cF9udm1ldGNwX2luZm8tPmZyZWVfbGlzdCwKPiArCQkJCQkgIHN0cnVjdCBxZWRf bnZtZXRjcF9jb25uLCBsaXN0X2VudHJ5KTsKPiArCWlmIChwX2Nvbm4pIHsKPiArCQlsaXN0X2Rl bCgmcF9jb25uLT5saXN0X2VudHJ5KTsKPiArCQlzcGluX3VubG9ja19iaCgmcF9od2ZuLT5wX252 bWV0Y3BfaW5mby0+bG9jayk7Cj4gKwkJKnBfb3V0X2Nvbm4gPSBwX2Nvbm47Cj4gKwo+ICsJCXJl dHVybiAwOwo+ICsJfQo+ICsJc3Bpbl91bmxvY2tfYmgoJnBfaHdmbi0+cF9udm1ldGNwX2luZm8t PmxvY2spOwo+ICsKPiArCS8qIE5lZWQgdG8gYWxsb2NhdGUgYSBuZXcgY29ubmVjdGlvbiAqLwo+ ICsJcF9wYXJhbXMgPSAmcF9od2ZuLT5wZl9wYXJhbXMubnZtZXRjcF9wZl9wYXJhbXM7Cj4gKwo+ ICsJcF9jb25uID0ga3phbGxvYyhzaXplb2YoKnBfY29ubiksIEdGUF9LRVJORUwpOwo+ICsJaWYg KCFwX2Nvbm4pCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJcGFyYW1zLm51bV9lbGVtcyA9 IHBfcGFyYW1zLT5udW1fcjJ0cV9wYWdlc19pbl9yaW5nICoKPiArCQkJICAgUUVEX0NIQUlOX1BB R0VfU0laRSAvIHNpemVvZihzdHJ1Y3QgbnZtZXRjcF93cWUpOwo+ICsJcGFyYW1zLmVsZW1fc2l6 ZSA9IHNpemVvZihzdHJ1Y3QgbnZtZXRjcF93cWUpOwo+ICsKPiArCXJjID0gcWVkX2NoYWluX2Fs bG9jKHBfaHdmbi0+Y2RldiwgJnBfY29ubi0+cjJ0cSwgJnBhcmFtcyk7Cj4gKwlpZiAocmMpCj4g KwkJZ290byBub21lbV9yMnRxOwo+ICsKPiArCXBhcmFtcy5udW1fZWxlbXMgPSBwX3BhcmFtcy0+ bnVtX3VocV9wYWdlc19pbl9yaW5nICoKPiArCQkJICAgUUVEX0NIQUlOX1BBR0VfU0laRSAvIHNp emVvZihzdHJ1Y3QgaXNjc2lfdWhxZSk7Cj4gKwlwYXJhbXMuZWxlbV9zaXplID0gc2l6ZW9mKHN0 cnVjdCBpc2NzaV91aHFlKTsKPiArCj4gKwlyYyA9IHFlZF9jaGFpbl9hbGxvYyhwX2h3Zm4tPmNk ZXYsICZwX2Nvbm4tPnVocSwgJnBhcmFtcyk7Cj4gKwlpZiAocmMpCj4gKwkJZ290byBub21lbV91 aHE7Cj4gKwo+ICsJcGFyYW1zLmVsZW1fc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaXNjc2lfeGhxZSk7 Cj4gKwo+ICsJcmMgPSBxZWRfY2hhaW5fYWxsb2MocF9od2ZuLT5jZGV2LCAmcF9jb25uLT54aHEs ICZwYXJhbXMpOwo+ICsJaWYgKHJjKQo+ICsJCWdvdG8gbm9tZW07Cj4gKwo+ICsJcF9jb25uLT5m cmVlX29uX2RlbGV0ZSA9IHRydWU7Cj4gKwkqcF9vdXRfY29ubiA9IHBfY29ubjsKPiArCj4gKwly ZXR1cm4gMDsKPiArCj4gK25vbWVtOgo+ICsJcWVkX2NoYWluX2ZyZWUocF9od2ZuLT5jZGV2LCAm cF9jb25uLT51aHEpOwo+ICtub21lbV91aHE6Cj4gKwlxZWRfY2hhaW5fZnJlZShwX2h3Zm4tPmNk ZXYsICZwX2Nvbm4tPnIydHEpOwo+ICtub21lbV9yMnRxOgo+ICsJa2ZyZWUocF9jb25uKTsKPiAr Cj4gKwlyZXR1cm4gLUVOT01FTTsKPiArfQo+ICsKPiArc3RhdGljIGludCBxZWRfbnZtZXRjcF9h Y3F1aXJlX2Nvbm5lY3Rpb24oc3RydWN0IHFlZF9od2ZuICpwX2h3Zm4sCj4gKwkJCQkJICBzdHJ1 Y3QgcWVkX252bWV0Y3BfY29ubiAqKnBfb3V0X2Nvbm4pCj4gK3sKPiArCXN0cnVjdCBxZWRfbnZt ZXRjcF9jb25uICpwX2Nvbm4gPSBOVUxMOwo+ICsJaW50IHJjID0gMDsKPiArCXUzMiBpY2lkOwo+ ICsKPiArCXNwaW5fbG9ja19iaCgmcF9od2ZuLT5wX252bWV0Y3BfaW5mby0+bG9jayk7Cj4gKwly YyA9IHFlZF9jeHRfYWNxdWlyZV9jaWQocF9od2ZuLCBQUk9UT0NPTElEX05WTUVUQ1AsICZpY2lk KTsKPiArCXNwaW5fdW5sb2NrX2JoKCZwX2h3Zm4tPnBfbnZtZXRjcF9pbmZvLT5sb2NrKTsKPiAr Cj4gKwlpZiAocmMpCj4gKwkJcmV0dXJuIHJjOwo+ICsKPiArCXJjID0gcWVkX252bWV0Y3BfYWxs b2NhdGVfY29ubmVjdGlvbihwX2h3Zm4sICZwX2Nvbm4pOwo+ICsJaWYgKHJjKSB7Cj4gKwkJc3Bp bl9sb2NrX2JoKCZwX2h3Zm4tPnBfbnZtZXRjcF9pbmZvLT5sb2NrKTsKPiArCQlxZWRfY3h0X3Jl bGVhc2VfY2lkKHBfaHdmbiwgaWNpZCk7Cj4gKwkJc3Bpbl91bmxvY2tfYmgoJnBfaHdmbi0+cF9u dm1ldGNwX2luZm8tPmxvY2spOwo+ICsKPiArCQlyZXR1cm4gcmM7Cj4gKwl9Cj4gKwo+ICsJcF9j b25uLT5pY2lkID0gaWNpZDsKPiArCXBfY29ubi0+Y29ubl9pZCA9ICh1MTYpaWNpZDsKPiArCXBf Y29ubi0+ZndfY2lkID0gKHBfaHdmbi0+aHdfaW5mby5vcGFxdWVfZmlkIDw8IDE2KSB8IGljaWQ7 Cj4gKwkqcF9vdXRfY29ubiA9IHBfY29ubjsKPiArCj4gKwlyZXR1cm4gcmM7Cj4gK30KPiArCj4g K3N0YXRpYyB2b2lkIHFlZF9udm1ldGNwX3JlbGVhc2VfY29ubmVjdGlvbihzdHJ1Y3QgcWVkX2h3 Zm4gKnBfaHdmbiwKPiArCQkJCQkgICBzdHJ1Y3QgcWVkX252bWV0Y3BfY29ubiAqcF9jb25uKQo+ ICt7Cj4gKwlzcGluX2xvY2tfYmgoJnBfaHdmbi0+cF9udm1ldGNwX2luZm8tPmxvY2spOwo+ICsJ bGlzdF9hZGRfdGFpbCgmcF9jb25uLT5saXN0X2VudHJ5LCAmcF9od2ZuLT5wX252bWV0Y3BfaW5m by0+ZnJlZV9saXN0KTsKPiArCXFlZF9jeHRfcmVsZWFzZV9jaWQocF9od2ZuLCBwX2Nvbm4tPmlj aWQpOwo+ICsJc3Bpbl91bmxvY2tfYmgoJnBfaHdmbi0+cF9udm1ldGNwX2luZm8tPmxvY2spOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBxZWRfbnZtZXRjcF9mcmVlX2Nvbm5lY3Rpb24oc3RydWN0 IHFlZF9od2ZuICpwX2h3Zm4sCj4gKwkJCQkJc3RydWN0IHFlZF9udm1ldGNwX2Nvbm4gKnBfY29u bikKPiArewo+ICsJcWVkX2NoYWluX2ZyZWUocF9od2ZuLT5jZGV2LCAmcF9jb25uLT54aHEpOwo+ ICsJcWVkX2NoYWluX2ZyZWUocF9od2ZuLT5jZGV2LCAmcF9jb25uLT51aHEpOwo+ICsJcWVkX2No YWluX2ZyZWUocF9od2ZuLT5jZGV2LCAmcF9jb25uLT5yMnRxKTsKPiArCj4gKwlrZnJlZShwX2Nv bm4pOwo+ICt9Cj4gKwo+ICtpbnQgcWVkX252bWV0Y3BfYWxsb2Moc3RydWN0IHFlZF9od2ZuICpw X2h3Zm4pCj4gK3sKPiArCXN0cnVjdCBxZWRfbnZtZXRjcF9pbmZvICpwX252bWV0Y3BfaW5mbzsK PiArCj4gKwlwX252bWV0Y3BfaW5mbyA9IGt6YWxsb2Moc2l6ZW9mKCpwX252bWV0Y3BfaW5mbyks IEdGUF9LRVJORUwpOwo+ICsJaWYgKCFwX252bWV0Y3BfaW5mbykKPiArCQlyZXR1cm4gLUVOT01F TTsKPiArCj4gKwlJTklUX0xJU1RfSEVBRCgmcF9udm1ldGNwX2luZm8tPmZyZWVfbGlzdCk7Cj4g Kwo+ICsJcF9od2ZuLT5wX252bWV0Y3BfaW5mbyA9IHBfbnZtZXRjcF9pbmZvOwo+ICsKPiArCXJl dHVybiAwOwo+ICt9Cj4gKwo+ICt2b2lkIHFlZF9udm1ldGNwX3NldHVwKHN0cnVjdCBxZWRfaHdm biAqcF9od2ZuKQo+ICt7Cj4gKwlzcGluX2xvY2tfaW5pdCgmcF9od2ZuLT5wX252bWV0Y3BfaW5m by0+bG9jayk7Cj4gK30KPiArCj4gK3ZvaWQgcWVkX252bWV0Y3BfZnJlZShzdHJ1Y3QgcWVkX2h3 Zm4gKnBfaHdmbikKPiArewo+ICsJc3RydWN0IHFlZF9udm1ldGNwX2Nvbm4gKnBfY29ubiA9IE5V TEw7Cj4gKwo+ICsJaWYgKCFwX2h3Zm4tPnBfbnZtZXRjcF9pbmZvKQo+ICsJCXJldHVybjsKPiAr Cj4gKwl3aGlsZSAoIWxpc3RfZW1wdHkoJnBfaHdmbi0+cF9udm1ldGNwX2luZm8tPmZyZWVfbGlz dCkpIHsKPiArCQlwX2Nvbm4gPSBsaXN0X2ZpcnN0X2VudHJ5KCZwX2h3Zm4tPnBfbnZtZXRjcF9p bmZvLT5mcmVlX2xpc3QsCj4gKwkJCQkJICBzdHJ1Y3QgcWVkX252bWV0Y3BfY29ubiwgbGlzdF9l bnRyeSk7Cj4gKwkJaWYgKHBfY29ubikgewo+ICsJCQlsaXN0X2RlbCgmcF9jb25uLT5saXN0X2Vu dHJ5KTsKPiArCQkJcWVkX252bWV0Y3BfZnJlZV9jb25uZWN0aW9uKHBfaHdmbiwgcF9jb25uKTsK PiArCQl9Cj4gKwl9Cj4gKwo+ICsJa2ZyZWUocF9od2ZuLT5wX252bWV0Y3BfaW5mbyk7Cj4gKwlw X2h3Zm4tPnBfbnZtZXRjcF9pbmZvID0gTlVMTDsKPiArfQo+ICsKPiArc3RhdGljIGludCBxZWRf bnZtZXRjcF9hY3F1aXJlX2Nvbm4oc3RydWN0IHFlZF9kZXYgKmNkZXYsCj4gKwkJCQkgICAgdTMy ICpoYW5kbGUsCj4gKwkJCQkgICAgdTMyICpmd19jaWQsIHZvaWQgX19pb21lbSAqKnBfZG9vcmJl bGwpCj4gK3sKPiArCXN0cnVjdCBxZWRfaGFzaF9udm1ldGNwX2NvbiAqaGFzaF9jb247Cj4gKwlp bnQgcmM7Cj4gKwo+ICsJLyogQWxsb2NhdGUgYSBoYXNoZWQgY29ubmVjdGlvbiAqLwo+ICsJaGFz aF9jb24gPSBremFsbG9jKHNpemVvZigqaGFzaF9jb24pLCBHRlBfQVRPTUlDKTsKPiArCWlmICgh aGFzaF9jb24pCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJLyogQWNxdWlyZSB0aGUgY29u bmVjdGlvbiAqLwo+ICsJcmMgPSBxZWRfbnZtZXRjcF9hY3F1aXJlX2Nvbm5lY3Rpb24oUUVEX0FG RklOX0hXRk4oY2RldiksCj4gKwkJCQkJICAgICZoYXNoX2Nvbi0+Y29uKTsKPiArCWlmIChyYykg ewo+ICsJCURQX05PVElDRShjZGV2LCAiRmFpbGVkIHRvIGFjcXVpcmUgQ29ubmVjdGlvblxuIik7 Cj4gKwkJa2ZyZWUoaGFzaF9jb24pOwo+ICsKPiArCQlyZXR1cm4gcmM7Cj4gKwl9Cj4gKwo+ICsJ LyogQWRkZWQgdGhlIGNvbm5lY3Rpb24gdG8gaGFzaCB0YWJsZSAqLwo+ICsJKmhhbmRsZSA9IGhh c2hfY29uLT5jb24tPmljaWQ7Cj4gKwkqZndfY2lkID0gaGFzaF9jb24tPmNvbi0+ZndfY2lkOwo+ ICsJaGFzaF9hZGQoY2Rldi0+Y29ubmVjdGlvbnMsICZoYXNoX2Nvbi0+bm9kZSwgKmhhbmRsZSk7 Cj4gKwo+ICsJaWYgKHBfZG9vcmJlbGwpCj4gKwkJKnBfZG9vcmJlbGwgPSBxZWRfbnZtZXRjcF9n ZXRfZGJfYWRkcihRRURfQUZGSU5fSFdGTihjZGV2KSwKPiArCQkJCQkJICAgICAgKmhhbmRsZSk7 Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgcWVkX252bWV0Y3BfcmVs ZWFzZV9jb25uKHN0cnVjdCBxZWRfZGV2ICpjZGV2LCB1MzIgaGFuZGxlKQo+ICt7Cj4gKwlzdHJ1 Y3QgcWVkX2hhc2hfbnZtZXRjcF9jb24gKmhhc2hfY29uOwo+ICsKPiArCWhhc2hfY29uID0gcWVk X252bWV0Y3BfZ2V0X2hhc2goY2RldiwgaGFuZGxlKTsKPiArCWlmICghaGFzaF9jb24pIHsKPiAr CQlEUF9OT1RJQ0UoY2RldiwgIkZhaWxlZCB0byBmaW5kIGNvbm5lY3Rpb24gZm9yIGhhbmRsZSAl ZFxuIiwKPiArCQkJICBoYW5kbGUpOwo+ICsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiAr Cj4gKwlobGlzdF9kZWwoJmhhc2hfY29uLT5ub2RlKTsKPiArCXFlZF9udm1ldGNwX3JlbGVhc2Vf Y29ubmVjdGlvbihRRURfQUZGSU5fSFdGTihjZGV2KSwgaGFzaF9jb24tPmNvbik7Cj4gKwlrZnJl ZShoYXNoX2Nvbik7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgcWVk X252bWV0Y3Bfb2ZmbG9hZF9jb25uKHN0cnVjdCBxZWRfZGV2ICpjZGV2LCB1MzIgaGFuZGxlLAo+ ICsJCQkJICAgIHN0cnVjdCBxZWRfbnZtZXRjcF9wYXJhbXNfb2ZmbG9hZCAqY29ubl9pbmZvKQo+ ICt7Cj4gKwlzdHJ1Y3QgcWVkX2hhc2hfbnZtZXRjcF9jb24gKmhhc2hfY29uOwo+ICsJc3RydWN0 IHFlZF9udm1ldGNwX2Nvbm4gKmNvbjsKPiArCj4gKwloYXNoX2NvbiA9IHFlZF9udm1ldGNwX2dl dF9oYXNoKGNkZXYsIGhhbmRsZSk7Cj4gKwlpZiAoIWhhc2hfY29uKSB7Cj4gKwkJRFBfTk9USUNF KGNkZXYsICJGYWlsZWQgdG8gZmluZCBjb25uZWN0aW9uIGZvciBoYW5kbGUgJWRcbiIsCj4gKwkJ CSAgaGFuZGxlKTsKPiArCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJLyogVXBk YXRlIHRoZSBjb25uZWN0aW9uIHdpdGggaW5mb3JtYXRpb24gZnJvbSB0aGUgcGFyYW1zICovCj4g Kwljb24gPSBoYXNoX2Nvbi0+Y29uOwo+ICsKPiArCS8qIEZXIGluaXRpYWxpemF0aW9ucyAqLwo+ ICsJY29uLT5sYXllcl9jb2RlID0gTlZNRVRDUF9TTE9XX1BBVEhfTEFZRVJfQ09ERTsKPiArCWNv bi0+c3FfcGJsX2FkZHIgPSBjb25uX2luZm8tPnNxX3BibF9hZGRyOwo+ICsJY29uLT5udm1ldGNw X2NjY2lkX21heF9yYW5nZSA9IGNvbm5faW5mby0+bnZtZXRjcF9jY2NpZF9tYXhfcmFuZ2U7Cj4g Kwljb24tPm52bWV0Y3BfY2NjaWRfaXRpZF90YWJsZV9hZGRyID0gY29ubl9pbmZvLT5udm1ldGNw X2NjY2lkX2l0aWRfdGFibGVfYWRkcjsKPiArCWNvbi0+ZGVmYXVsdF9jcSA9IGNvbm5faW5mby0+ ZGVmYXVsdF9jcTsKPiArCj4gKwlTRVRfRklFTEQoY29uLT5vZmZsX2ZsYWdzLCBOVk1FVENQX0NP Tk5fT0ZGTE9BRF9QQVJBTVNfVEFSR0VUX01PREUsIDApOwo+ICsJU0VUX0ZJRUxEKGNvbi0+b2Zm bF9mbGFncywgTlZNRVRDUF9DT05OX09GRkxPQURfUEFSQU1TX05WTUVUQ1BfTU9ERSwgMSk7Cj4g KwlTRVRfRklFTEQoY29uLT5vZmZsX2ZsYWdzLCBOVk1FVENQX0NPTk5fT0ZGTE9BRF9QQVJBTVNf VENQX09OX0NISVBfMUIsIDEpOwo+ICsKPiArCS8qIE5ldHdvcmtpbmcgYW5kIFRDUCBzdGFjayBp bml0aWFsaXphdGlvbnMgKi8KPiArCWV0aGVyX2FkZHJfY29weShjb24tPmxvY2FsX21hYywgY29u bl9pbmZvLT5zcmMubWFjKTsKPiArCWV0aGVyX2FkZHJfY29weShjb24tPnJlbW90ZV9tYWMsIGNv bm5faW5mby0+ZHN0Lm1hYyk7Cj4gKwltZW1jcHkoY29uLT5sb2NhbF9pcCwgY29ubl9pbmZvLT5z cmMuaXAsIHNpemVvZihjb24tPmxvY2FsX2lwKSk7Cj4gKwltZW1jcHkoY29uLT5yZW1vdGVfaXAs IGNvbm5faW5mby0+ZHN0LmlwLCBzaXplb2YoY29uLT5yZW1vdGVfaXApKTsKPiArCWNvbi0+bG9j YWxfcG9ydCA9IGNvbm5faW5mby0+c3JjLnBvcnQ7Cj4gKwljb24tPnJlbW90ZV9wb3J0ID0gY29u bl9pbmZvLT5kc3QucG9ydDsKPiArCWNvbi0+dmxhbl9pZCA9IGNvbm5faW5mby0+dmxhbl9pZDsK PiArCj4gKwlpZiAoY29ubl9pbmZvLT50aW1lc3RhbXBfZW4pCj4gKwkJU0VUX0ZJRUxEKGNvbi0+ dGNwX2ZsYWdzLCBUQ1BfT0ZGTE9BRF9QQVJBTVNfT1BUMl9UU19FTiwgMSk7Cj4gKwo+ICsJaWYg KGNvbm5faW5mby0+ZGVsYXllZF9hY2tfZW4pCj4gKwkJU0VUX0ZJRUxEKGNvbi0+dGNwX2ZsYWdz LCBUQ1BfT0ZGTE9BRF9QQVJBTVNfT1BUMl9EQV9FTiwgMSk7Cj4gKwo+ICsJaWYgKGNvbm5faW5m by0+dGNwX2tlZXBfYWxpdmVfZW4pCj4gKwkJU0VUX0ZJRUxEKGNvbi0+dGNwX2ZsYWdzLCBUQ1Bf T0ZGTE9BRF9QQVJBTVNfT1BUMl9LQV9FTiwgMSk7Cj4gKwo+ICsJaWYgKGNvbm5faW5mby0+ZWNu X2VuKQo+ICsJCVNFVF9GSUVMRChjb24tPnRjcF9mbGFncywgVENQX09GRkxPQURfUEFSQU1TX09Q VDJfRUNOX0VOLCAxKTsKPiArCj4gKwljb24tPmlwX3ZlcnNpb24gPSBjb25uX2luZm8tPmlwX3Zl cnNpb247Cj4gKwljb24tPmZsb3dfbGFiZWwgPSBRRURfVENQX0ZMT1dfTEFCRUw7Cj4gKwljb24t PmthX21heF9wcm9iZV9jbnQgPSBjb25uX2luZm8tPmthX21heF9wcm9iZV9jbnQ7Cj4gKwljb24t PmthX3RpbWVvdXQgPSBjb25uX2luZm8tPmthX3RpbWVvdXQ7Cj4gKwljb24tPmthX2ludGVydmFs ID0gY29ubl9pbmZvLT5rYV9pbnRlcnZhbDsKPiArCWNvbi0+bWF4X3J0X3RpbWUgPSBjb25uX2lu Zm8tPm1heF9ydF90aW1lOwo+ICsJY29uLT50dGwgPSBjb25uX2luZm8tPnR0bDsKPiArCWNvbi0+ dG9zX29yX3RjID0gY29ubl9pbmZvLT50b3Nfb3JfdGM7Cj4gKwljb24tPm1zcyA9IGNvbm5faW5m by0+bXNzOwo+ICsJY29uLT5jd25kID0gY29ubl9pbmZvLT5jd25kOwo+ICsJY29uLT5yY3Zfd25k X3NjYWxlID0gY29ubl9pbmZvLT5yY3Zfd25kX3NjYWxlOwo+ICsJY29uLT5jb25uZWN0X21vZGUg PSAwOyAvKiBUQ1BfQ09OTkVDVF9BQ1RJVkUgKi8KPiArCj4gKwlyZXR1cm4gcWVkX3NwX252bWV0 Y3BfY29ubl9vZmZsb2FkKFFFRF9BRkZJTl9IV0ZOKGNkZXYpLCBjb24sCj4gKwkJCQkJIFFFRF9T UFFfTU9ERV9FQkxPQ0ssIE5VTEwpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHFlZF9udm1ldGNw X3VwZGF0ZV9jb25uKHN0cnVjdCBxZWRfZGV2ICpjZGV2LAo+ICsJCQkJICAgdTMyIGhhbmRsZSwK PiArCQkJCSAgIHN0cnVjdCBxZWRfbnZtZXRjcF9wYXJhbXNfdXBkYXRlICpjb25uX2luZm8pCj4g K3sKPiArCXN0cnVjdCBxZWRfaGFzaF9udm1ldGNwX2NvbiAqaGFzaF9jb247Cj4gKwlzdHJ1Y3Qg cWVkX252bWV0Y3BfY29ubiAqY29uOwo+ICsKPiArCWhhc2hfY29uID0gcWVkX252bWV0Y3BfZ2V0 X2hhc2goY2RldiwgaGFuZGxlKTsKPiArCWlmICghaGFzaF9jb24pIHsKPiArCQlEUF9OT1RJQ0Uo Y2RldiwgIkZhaWxlZCB0byBmaW5kIGNvbm5lY3Rpb24gZm9yIGhhbmRsZSAlZFxuIiwKPiArCQkJ ICBoYW5kbGUpOwo+ICsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwkvKiBVcGRh dGUgdGhlIGNvbm5lY3Rpb24gd2l0aCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBwYXJhbXMgKi8KPiAr CWNvbiA9IGhhc2hfY29uLT5jb247Cj4gKwo+ICsJU0VUX0ZJRUxEKGNvbi0+dXBkYXRlX2ZsYWcs Cj4gKwkJICBJU0NTSV9DT05OX1VQREFURV9SQU1ST0RfUEFSQU1TX0lOSVRJQUxfUjJULCAwKTsK PiArCVNFVF9GSUVMRChjb24tPnVwZGF0ZV9mbGFnLAo+ICsJCSAgSVNDU0lfQ09OTl9VUERBVEVf UkFNUk9EX1BBUkFNU19JTU1FRElBVEVfREFUQSwgMSk7Cj4gKwo+ICsJaWYgKGNvbm5faW5mby0+ aGRyX2RpZ2VzdF9lbikKPiArCQlTRVRfRklFTEQoY29uLT51cGRhdGVfZmxhZywgSVNDU0lfQ09O Tl9VUERBVEVfUkFNUk9EX1BBUkFNU19IRF9FTiwgMSk7Cj4gKwo+ICsJaWYgKGNvbm5faW5mby0+ ZGF0YV9kaWdlc3RfZW4pCj4gKwkJU0VUX0ZJRUxEKGNvbi0+dXBkYXRlX2ZsYWcsIElTQ1NJX0NP Tk5fVVBEQVRFX1JBTVJPRF9QQVJBTVNfRERfRU4sIDEpOwo+ICsKPiArCS8qIFBsYWNlaG9sZGVy IC0gaW5pdGlhbGl6ZSBwZnYsIGNwZGEsIGhwZGEgKi8KPiArCj4gKwljb24tPm1heF9zZXFfc2l6 ZSA9IGNvbm5faW5mby0+bWF4X2lvX3NpemU7Cj4gKwljb24tPm1heF9yZWN2X3BkdV9sZW5ndGgg PSBjb25uX2luZm8tPm1heF9yZWN2X3BkdV9sZW5ndGg7Cj4gKwljb24tPm1heF9zZW5kX3BkdV9s ZW5ndGggPSBjb25uX2luZm8tPm1heF9zZW5kX3BkdV9sZW5ndGg7Cj4gKwljb24tPmZpcnN0X3Nl cV9sZW5ndGggPSBjb25uX2luZm8tPm1heF9pb19zaXplOwo+ICsKPiArCXJldHVybiBxZWRfc3Bf bnZtZXRjcF9jb25uX3VwZGF0ZShRRURfQUZGSU5fSFdGTihjZGV2KSwgY29uLAo+ICsJCQkJCVFF RF9TUFFfTU9ERV9FQkxPQ0ssIE5VTEwpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHFlZF9udm1l dGNwX2NsZWFyX2Nvbm5fc3Eoc3RydWN0IHFlZF9kZXYgKmNkZXYsIHUzMiBoYW5kbGUpCj4gK3sK PiArCXN0cnVjdCBxZWRfaGFzaF9udm1ldGNwX2NvbiAqaGFzaF9jb247Cj4gKwo+ICsJaGFzaF9j b24gPSBxZWRfbnZtZXRjcF9nZXRfaGFzaChjZGV2LCBoYW5kbGUpOwo+ICsJaWYgKCFoYXNoX2Nv bikgewo+ICsJCURQX05PVElDRShjZGV2LCAiRmFpbGVkIHRvIGZpbmQgY29ubmVjdGlvbiBmb3Ig aGFuZGxlICVkXG4iLAo+ICsJCQkgIGhhbmRsZSk7Cj4gKwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ ICsJfQo+ICsKPiArCXJldHVybiBxZWRfc3BfbnZtZXRjcF9jb25uX2NsZWFyX3NxKFFFRF9BRkZJ Tl9IV0ZOKGNkZXYpLCBoYXNoX2Nvbi0+Y29uLAo+ICsJCQkJCSAgICBRRURfU1BRX01PREVfRUJM T0NLLCBOVUxMKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBxZWRfbnZtZXRjcF9kZXN0cm95X2Nv bm4oc3RydWN0IHFlZF9kZXYgKmNkZXYsCj4gKwkJCQkgICAgdTMyIGhhbmRsZSwgdTggYWJydF9j b25uKQo+ICt7Cj4gKwlzdHJ1Y3QgcWVkX2hhc2hfbnZtZXRjcF9jb24gKmhhc2hfY29uOwo+ICsK PiArCWhhc2hfY29uID0gcWVkX252bWV0Y3BfZ2V0X2hhc2goY2RldiwgaGFuZGxlKTsKPiArCWlm ICghaGFzaF9jb24pIHsKPiArCQlEUF9OT1RJQ0UoY2RldiwgIkZhaWxlZCB0byBmaW5kIGNvbm5l Y3Rpb24gZm9yIGhhbmRsZSAlZFxuIiwKPiArCQkJICBoYW5kbGUpOwo+ICsKPiArCQlyZXR1cm4g LUVJTlZBTDsKPiArCX0KPiArCj4gKwloYXNoX2Nvbi0+Y29uLT5hYm9ydGl2ZV9kc2Nvbm5lY3Qg PSBhYnJ0X2Nvbm47Cj4gKwo+ICsJcmV0dXJuIHFlZF9zcF9udm1ldGNwX2Nvbm5fdGVybWluYXRl KFFFRF9BRkZJTl9IV0ZOKGNkZXYpLCBoYXNoX2Nvbi0+Y29uLAo+ICsJCQkJCSAgIFFFRF9TUFFf TU9ERV9FQkxPQ0ssIE5VTEwpOwo+ICt9Cj4gKwo+ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBxZWRf bnZtZXRjcF9vcHMgcWVkX252bWV0Y3Bfb3BzX3Bhc3MgPSB7Cj4gICAJLmNvbW1vbiA9ICZxZWRf Y29tbW9uX29wc19wYXNzLAo+ICAgCS5sbDIgPSAmcWVkX2xsMl9vcHNfcGFzcywKPiBAQCAtMjY2 LDggKzgzOCwxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHFlZF9udm1ldGNwX29wcyBxZWRfbnZt ZXRjcF9vcHNfcGFzcyA9IHsKPiAgIAkucmVnaXN0ZXJfb3BzID0gJnFlZF9yZWdpc3Rlcl9udm1l dGNwX29wcywKPiAgIAkuc3RhcnQgPSAmcWVkX252bWV0Y3Bfc3RhcnQsCj4gICAJLnN0b3AgPSAm cWVkX252bWV0Y3Bfc3RvcCwKPiAtCj4gLQkvKiBQbGFjZWhvbGRlciAtIENvbm5lY3Rpb24gbGV2 ZWwgb3BzICovCj4gKwkuYWNxdWlyZV9jb25uID0gJnFlZF9udm1ldGNwX2FjcXVpcmVfY29ubiwK PiArCS5yZWxlYXNlX2Nvbm4gPSAmcWVkX252bWV0Y3BfcmVsZWFzZV9jb25uLAo+ICsJLm9mZmxv YWRfY29ubiA9ICZxZWRfbnZtZXRjcF9vZmZsb2FkX2Nvbm4sCj4gKwkudXBkYXRlX2Nvbm4gPSAm cWVkX252bWV0Y3BfdXBkYXRlX2Nvbm4sCj4gKwkuZGVzdHJveV9jb25uID0gJnFlZF9udm1ldGNw X2Rlc3Ryb3lfY29ubiwKPiArCS5jbGVhcl9zcSA9ICZxZWRfbnZtZXRjcF9jbGVhcl9jb25uX3Nx LAo+ICAgfTsKPiAgIAo+ICAgY29uc3Qgc3RydWN0IHFlZF9udm1ldGNwX29wcyAqcWVkX2dldF9u dm1ldGNwX29wcyh2b2lkKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9n aWMvcWVkL3FlZF9udm1ldGNwLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3Fl ZF9udm1ldGNwLmgKPiBpbmRleCA3NzRiNDZhZGU0MDguLjc0OTE2OWYwYmRiMSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9udm1ldGNwLmgKPiArKysg Yi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9udm1ldGNwLmgKPiBAQCAtMTks NiArMTksNyBAQAo+ICAgI2RlZmluZSBRRURfTlZNRVRDUF9GV19DUV9TSVpFICg0ICogMTAyNCkK PiAgIAo+ICAgLyogdGNwIHBhcmFtZXRlcnMgKi8KPiArI2RlZmluZSBRRURfVENQX0ZMT1dfTEFC RUwgMAo+ICAgI2RlZmluZSBRRURfVENQX1RXT19NU0xfVElNRVIgNDAwMAo+ICAgI2RlZmluZSBR RURfVENQX0hBTEZfV0FZX0NMT1NFX1RJTUVPVVQgMTAKPiAgICNkZWZpbmUgUUVEX1RDUF9NQVhf RklOX1JUIDIKPiBAQCAtMzIsNiArMzMsNjggQEAgc3RydWN0IHFlZF9udm1ldGNwX2luZm8gewo+ ICAgCW52bWV0Y3BfZXZlbnRfY2JfdCBldmVudF9jYjsKPiAgIH07Cj4gICAKPiArc3RydWN0IHFl ZF9oYXNoX252bWV0Y3BfY29uIHsKPiArCXN0cnVjdCBobGlzdF9ub2RlIG5vZGU7Cj4gKwlzdHJ1 Y3QgcWVkX252bWV0Y3BfY29ubiAqY29uOwo+ICt9Owo+ICsKPiArc3RydWN0IHFlZF9udm1ldGNw X2Nvbm4gewo+ICsJc3RydWN0IGxpc3RfaGVhZCBsaXN0X2VudHJ5Owo+ICsJYm9vbCBmcmVlX29u X2RlbGV0ZTsKPiArCj4gKwl1MTYgY29ubl9pZDsKPiArCXUzMiBpY2lkOwo+ICsJdTMyIGZ3X2Np ZDsKPiArCj4gKwl1OCBsYXllcl9jb2RlOwo+ICsJdTggb2ZmbF9mbGFnczsKPiArCXU4IGNvbm5l Y3RfbW9kZTsKPiArCj4gKwlkbWFfYWRkcl90IHNxX3BibF9hZGRyOwo+ICsJc3RydWN0IHFlZF9j aGFpbiByMnRxOwo+ICsJc3RydWN0IHFlZF9jaGFpbiB4aHE7Cj4gKwlzdHJ1Y3QgcWVkX2NoYWlu IHVocTsKPiArCj4gKwl1OCBsb2NhbF9tYWNbNl07Cj4gKwl1OCByZW1vdGVfbWFjWzZdOwo+ICsJ dTggaXBfdmVyc2lvbjsKPiArCXU4IGthX21heF9wcm9iZV9jbnQ7Cj4gKwo+ICsJdTE2IHZsYW5f aWQ7Cj4gKwl1MTYgdGNwX2ZsYWdzOwo+ICsJdTMyIHJlbW90ZV9pcFs0XTsKPiArCXUzMiBsb2Nh bF9pcFs0XTsKPiArCj4gKwl1MzIgZmxvd19sYWJlbDsKPiArCXUzMiBrYV90aW1lb3V0Owo+ICsJ dTMyIGthX2ludGVydmFsOwo+ICsJdTMyIG1heF9ydF90aW1lOwo+ICsKPiArCXU4IHR0bDsKPiAr CXU4IHRvc19vcl90YzsKPiArCXUxNiByZW1vdGVfcG9ydDsKPiArCXUxNiBsb2NhbF9wb3J0Owo+ ICsJdTE2IG1zczsKPiArCXU4IHJjdl93bmRfc2NhbGU7Cj4gKwl1MzIgcmN2X3duZDsKPiArCXUz MiBjd25kOwo+ICsKPiArCXU4IHVwZGF0ZV9mbGFnOwo+ICsJdTggZGVmYXVsdF9jcTsKPiArCXU4 IGFib3J0aXZlX2RzY29ubmVjdDsKPiArCj4gKwl1MzIgbWF4X3NlcV9zaXplOwo+ICsJdTMyIG1h eF9yZWN2X3BkdV9sZW5ndGg7Cj4gKwl1MzIgbWF4X3NlbmRfcGR1X2xlbmd0aDsKPiArCXUzMiBm aXJzdF9zZXFfbGVuZ3RoOwo+ICsKPiArCXUxNiBwaHlzaWNhbF9xMDsKPiArCXUxNiBwaHlzaWNh bF9xMTsKPiArCj4gKwl1MTYgbnZtZXRjcF9jY2NpZF9tYXhfcmFuZ2U7Cj4gKwlkbWFfYWRkcl90 IG52bWV0Y3BfY2NjaWRfaXRpZF90YWJsZV9hZGRyOwo+ICt9Owo+ICsKPiAgICNpZiBJU19FTkFC TEVEKENPTkZJR19RRURfTlZNRVRDUCkKPiAgIGludCBxZWRfbnZtZXRjcF9hbGxvYyhzdHJ1Y3Qg cWVkX2h3Zm4gKnBfaHdmbik7Cj4gICB2b2lkIHFlZF9udm1ldGNwX3NldHVwKHN0cnVjdCBxZWRf aHdmbiAqcF9od2ZuKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2lj L3FlZC9xZWRfc3AuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX3NwLmgK PiBpbmRleCA1MjUxNTllNzQ3YTUuLjYwZmYzMjIyYmY1NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9zcC5oCj4gKysrIGIvZHJpdmVycy9uZXQvZXRo ZXJuZXQvcWxvZ2ljL3FlZC9xZWRfc3AuaAo+IEBAIC0xMDEsNiArMTAxLDkgQEAgdW5pb24gcmFt cm9kX2RhdGEgewo+ICAgCXN0cnVjdCBpc2NzaV9zcGVfY29ubl90ZXJtaW5hdGlvbiBpc2NzaV9j b25uX3Rlcm1pbmF0ZTsKPiAgIAo+ICAgCXN0cnVjdCBudm1ldGNwX2luaXRfcmFtcm9kX3BhcmFt cyBudm1ldGNwX2luaXQ7Cj4gKwlzdHJ1Y3QgbnZtZXRjcF9zcGVfY29ubl9vZmZsb2FkIG52bWV0 Y3BfY29ubl9vZmZsb2FkOwo+ICsJc3RydWN0IG52bWV0Y3BfY29ubl91cGRhdGVfcmFtcm9kX3Bh cmFtcyBudm1ldGNwX2Nvbm5fdXBkYXRlOwo+ICsJc3RydWN0IG52bWV0Y3Bfc3BlX2Nvbm5fdGVy bWluYXRpb24gbnZtZXRjcF9jb25uX3Rlcm1pbmF0ZTsKPiAgIAo+ICAgCXN0cnVjdCB2Zl9zdGFy dF9yYW1yb2RfZGF0YSB2Zl9zdGFydDsKPiAgIAlzdHJ1Y3QgdmZfc3RvcF9yYW1yb2RfZGF0YSB2 Zl9zdG9wOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3FlZC9udm1ldGNwX2NvbW1vbi5o IGIvaW5jbHVkZS9saW51eC9xZWQvbnZtZXRjcF9jb21tb24uaAo+IGluZGV4IGU5Y2NmYzA3MDQx ZC4uYzg4MzZiNzFiODY2IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvbGludXgvcWVkL252bWV0Y3Bf Y29tbW9uLmgKPiArKysgYi9pbmNsdWRlL2xpbnV4L3FlZC9udm1ldGNwX2NvbW1vbi5oCj4gQEAg LTYsNiArNiw4IEBACj4gICAKPiAgICNpbmNsdWRlICJ0Y3BfY29tbW9uLmgiCj4gICAKPiArI2Rl ZmluZSBOVk1FVENQX1NMT1dfUEFUSF9MQVlFUl9DT0RFICg2KQo+ICsKPiAgIC8qIE5WTWVUQ1Ag ZmlybXdhcmUgZnVuY3Rpb24gaW5pdCBwYXJhbWV0ZXJzICovCj4gICBzdHJ1Y3QgbnZtZXRjcF9z cGVfZnVuY19pbml0IHsKPiAgIAlfX2xlMTYgaGFsZl93YXlfY2xvc2VfdGltZW91dDsKPiBAQCAt NDMsNiArNDUsMTAgQEAgZW51bSBudm1ldGNwX3JhbXJvZF9jbWRfaWQgewo+ICAgCU5WTUVUQ1Bf UkFNUk9EX0NNRF9JRF9VTlVTRUQgPSAwLAo+ICAgCU5WTUVUQ1BfUkFNUk9EX0NNRF9JRF9JTklU X0ZVTkMgPSAxLAo+ICAgCU5WTUVUQ1BfUkFNUk9EX0NNRF9JRF9ERVNUUk9ZX0ZVTkMgPSAyLAo+ ICsJTlZNRVRDUF9SQU1ST0RfQ01EX0lEX09GRkxPQURfQ09OTiA9IDMsCj4gKwlOVk1FVENQX1JB TVJPRF9DTURfSURfVVBEQVRFX0NPTk4gPSA0LAo+ICsJTlZNRVRDUF9SQU1ST0RfQ01EX0lEX1RF Uk1JTkFUSU9OX0NPTk4gPSA1LAo+ICsJTlZNRVRDUF9SQU1ST0RfQ01EX0lEX0NMRUFSX1NRID0g NiwKPiAgIAlNQVhfTlZNRVRDUF9SQU1ST0RfQ01EX0lECj4gICB9Owo+ICAgCj4gQEAgLTUxLDQg KzU3LDE0MSBAQCBzdHJ1Y3QgbnZtZXRjcF9nbGJsX3F1ZXVlX2VudHJ5IHsKPiAgIAlzdHJ1Y3Qg cmVncGFpciByZXNlcnZlZDsKPiAgIH07Cj4gICAKPiArLyogTlZNZVRDUCBjb25uIGxldmVsIEVR RXMgKi8KPiArZW51bSBudm1ldGNwX2VxZV9vcGNvZGUgewo+ICsJTlZNRVRDUF9FVkVOVF9UWVBF X0lOSVRfRlVOQyA9IDAsIC8qIFJlc3BvbnNlIGFmdGVyIGluaXQgUmFtcm9kICovCj4gKwlOVk1F VENQX0VWRU5UX1RZUEVfREVTVFJPWV9GVU5DLCAvKiBSZXNwb25zZSBhZnRlciBkZXN0cm95IFJh bXJvZCAqLwo+ICsJTlZNRVRDUF9FVkVOVF9UWVBFX09GRkxPQURfQ09OTiwvKiBSZXNwb25zZSBh ZnRlciBvcHRpb24gMiBvZmZsb2FkIFJhbXJvZCAqLwo+ICsJTlZNRVRDUF9FVkVOVF9UWVBFX1VQ REFURV9DT05OLCAvKiBSZXNwb25zZSBhZnRlciB1cGRhdGUgUmFtcm9kICovCj4gKwlOVk1FVENQ X0VWRU5UX1RZUEVfQ0xFQVJfU1EsIC8qIFJlc3BvbnNlIGFmdGVyIGNsZWFyIHNxIFJhbXJvZCAq Lwo+ICsJTlZNRVRDUF9FVkVOVF9UWVBFX1RFUk1JTkFURV9DT05OLCAvKiBSZXNwb25zZSBhZnRl ciB0ZXJtaW5hdGlvbiBSYW1yb2QgKi8KPiArCU5WTUVUQ1BfRVZFTlRfVFlQRV9SRVNFUlZFRDAs Cj4gKwlOVk1FVENQX0VWRU5UX1RZUEVfUkVTRVJWRUQxLAo+ICsJTlZNRVRDUF9FVkVOVF9UWVBF X0FTWU5fQ09OTkVDVF9DT01QTEVURSwgLyogQ29ubmVjdCBjb21wbGV0ZWQgKEEtc3luIEVRRSkg Ki8KPiArCU5WTUVUQ1BfRVZFTlRfVFlQRV9BU1lOX1RFUk1JTkFURV9ET05FLCAvKiBUZXJtaW5h dGlvbiBjb21wbGV0ZWQgKEEtc3luIEVRRSkgKi8KPiArCU5WTUVUQ1BfRVZFTlRfVFlQRV9TVEFS VF9PRl9FUlJPUl9UWVBFUyA9IDEwLCAvKiBTZXBhcmF0ZSBFUXMgZnJvbSBlcnIgRVFzICovCj4g KwlOVk1FVENQX0VWRU5UX1RZUEVfQVNZTl9BQk9SVF9SQ1ZELCAvKiBUQ1AgUlNUIHBhY2tldCBy ZWNlaXZlIChBLXN5biBFUUUpICovCj4gKwlOVk1FVENQX0VWRU5UX1RZUEVfQVNZTl9DTE9TRV9S Q1ZELCAvKiBUQ1AgRklOIHBhY2tldCByZWNlaXZlIChBLXN5biBFUUUpICovCj4gKwlOVk1FVENQ X0VWRU5UX1RZUEVfQVNZTl9TWU5fUkNWRCwgLyogVENQIFNZTitBQ0sgcGFja2V0IHJlY2VpdmUg KEEtc3luIEVRRSkgKi8KPiArCU5WTUVUQ1BfRVZFTlRfVFlQRV9BU1lOX01BWF9SVF9USU1FLCAv KiBUQ1AgbWF4IHJldHJhbnNtaXQgdGltZSAoQS1zeW4gRVFFKSAqLwo+ICsJTlZNRVRDUF9FVkVO VF9UWVBFX0FTWU5fTUFYX1JUX0NOVCwgLyogVENQIG1heCByZXRyYW5zbWl0IGNvdW50IChBLXN5 biBFUUUpICovCj4gKwlOVk1FVENQX0VWRU5UX1RZUEVfQVNZTl9NQVhfS0FfUFJPQkVTX0NOVCwg LyogVENQIGthIHByb2JlcyBjb3VudCAoQS1zeW4gRVFFKSAqLwo+ICsJTlZNRVRDUF9FVkVOVF9U WVBFX0FTWU5fRklOX1dBSVQyLCAvKiBUQ1AgZmluIHdhaXQgMiAoQS1zeW4gRVFFKSAqLwo+ICsJ TlZNRVRDUF9FVkVOVF9UWVBFX05WTUVUQ1BfQ09OTl9FUlJPUiwgLyogTlZNZVRDUCBlcnJvciBy ZXNwb25zZSAoQS1zeW4gRVFFKSAqLwo+ICsJTlZNRVRDUF9FVkVOVF9UWVBFX1RDUF9DT05OX0VS Uk9SLCAvKiBOVk1lVENQIGVycm9yIC0gdGNwIGVycm9yIChBLXN5biBFUUUpICovCj4gKwlNQVhf TlZNRVRDUF9FUUVfT1BDT0RFCj4gK307Cj4gKwo+ICtzdHJ1Y3QgbnZtZXRjcF9jb25uX29mZmxv YWRfc2VjdGlvbiB7Cj4gKwlzdHJ1Y3QgcmVncGFpciBjY2NpZF9pdGlkX3RhYmxlX2FkZHI7IC8q IENDQ0lEIHRvIGlUSUQgdGFibGUgYWRkcmVzcyAqLwo+ICsJX19sZTE2IGNjY2lkX21heF9yYW5n ZTsgLyogQ0NDSUQgbWF4IHZhbHVlIC0gdXNlZCBmb3IgdmFsaWRhdGlvbiAqLwo+ICsJX19sZTE2 IHJlc2VydmVkWzNdOwo+ICt9Owo+ICsKPiArLyogTlZNZSBUQ1AgY29ubmVjdGlvbiBvZmZsb2Fk IHBhcmFtcyBwYXNzZWQgYnkgZHJpdmVyIHRvIEZXIGluIE5WTWVUQ1Agb2ZmbG9hZCByYW1yb2Qg Ki8KPiArc3RydWN0IG52bWV0Y3BfY29ubl9vZmZsb2FkX3BhcmFtcyB7Cj4gKwlzdHJ1Y3QgcmVn cGFpciBzcV9wYmxfYWRkcjsKPiArCXN0cnVjdCByZWdwYWlyIHIydHFfcGJsX2FkZHI7Cj4gKwlz dHJ1Y3QgcmVncGFpciB4aHFfcGJsX2FkZHI7Cj4gKwlzdHJ1Y3QgcmVncGFpciB1aHFfcGJsX2Fk ZHI7Cj4gKwlfX2xlMTYgcGh5c2ljYWxfcTA7Cj4gKwlfX2xlMTYgcGh5c2ljYWxfcTE7Cj4gKwl1 OCBmbGFnczsKPiArI2RlZmluZSBOVk1FVENQX0NPTk5fT0ZGTE9BRF9QQVJBTVNfVENQX09OX0NI SVBfMUJfTUFTSyAweDEKPiArI2RlZmluZSBOVk1FVENQX0NPTk5fT0ZGTE9BRF9QQVJBTVNfVENQ X09OX0NISVBfMUJfU0hJRlQgMAo+ICsjZGVmaW5lIE5WTUVUQ1BfQ09OTl9PRkZMT0FEX1BBUkFN U19UQVJHRVRfTU9ERV9NQVNLIDB4MQo+ICsjZGVmaW5lIE5WTUVUQ1BfQ09OTl9PRkZMT0FEX1BB UkFNU19UQVJHRVRfTU9ERV9TSElGVCAxCj4gKyNkZWZpbmUgTlZNRVRDUF9DT05OX09GRkxPQURf UEFSQU1TX1JFU1RSSUNURURfTU9ERV9NQVNLIDB4MQo+ICsjZGVmaW5lIE5WTUVUQ1BfQ09OTl9P RkZMT0FEX1BBUkFNU19SRVNUUklDVEVEX01PREVfU0hJRlQgMgo+ICsjZGVmaW5lIE5WTUVUQ1Bf Q09OTl9PRkZMT0FEX1BBUkFNU19OVk1FVENQX01PREVfTUFTSyAweDEKPiArI2RlZmluZSBOVk1F VENQX0NPTk5fT0ZGTE9BRF9QQVJBTVNfTlZNRVRDUF9NT0RFX1NISUZUIDMKPiArI2RlZmluZSBO Vk1FVENQX0NPTk5fT0ZGTE9BRF9QQVJBTVNfUkVTRVJWRUQxX01BU0sgMHhGCj4gKyNkZWZpbmUg TlZNRVRDUF9DT05OX09GRkxPQURfUEFSQU1TX1JFU0VSVkVEMV9TSElGVCA0Cj4gKwl1OCBkZWZh dWx0X2NxOwo+ICsJX19sZTE2IHJlc2VydmVkMDsKPiArCV9fbGUzMiByZXNlcnZlZDE7Cj4gKwlf X2xlMzIgaW5pdGlhbF9hY2s7Cj4gKwo+ICsJc3RydWN0IG52bWV0Y3BfY29ubl9vZmZsb2FkX3Nl Y3Rpb24gbnZtZXRjcDsgLyogTlZNZS9UQ1Agc2VjdGlvbiAqLwo+ICt9Owo+ICsKPiArLyogTlZN ZSBUQ1AgYW5kIFRDUCBjb25uZWN0aW9uIG9mZmxvYWQgcGFyYW1zIHBhc3NlZCBieSBkcml2ZXIg dG8gRlcgaW4gTlZNZVRDUCBvZmZsb2FkIHJhbXJvZC4gKi8KPiArc3RydWN0IG52bWV0Y3Bfc3Bl X2Nvbm5fb2ZmbG9hZCB7Cj4gKwlfX2xlMTYgcmVzZXJ2ZWQ7Cj4gKwlfX2xlMTYgY29ubl9pZDsK PiArCV9fbGUzMiBmd19jaWQ7Cj4gKwlzdHJ1Y3QgbnZtZXRjcF9jb25uX29mZmxvYWRfcGFyYW1z IG52bWV0Y3A7Cj4gKwlzdHJ1Y3QgdGNwX29mZmxvYWRfcGFyYW1zX29wdDIgdGNwOwo+ICt9Owo+ ICsKPiArLyogTlZNZVRDUCBjb25uZWN0aW9uIHVwZGF0ZSBwYXJhbXMgcGFzc2VkIGJ5IGRyaXZl ciB0byBGVyBpbiBOVk1FVENQIHVwZGF0ZSByYW1yb2QuICovCj4gK3N0cnVjdCBudm1ldGNwX2Nv bm5fdXBkYXRlX3JhbXJvZF9wYXJhbXMgewo+ICsJX19sZTE2IHJlc2VydmVkMDsKPiArCV9fbGUx NiBjb25uX2lkOwo+ICsJX19sZTMyIHJlc2VydmVkMTsKPiArCXU4IGZsYWdzOwo+ICsjZGVmaW5l IE5WTUVUQ1BfQ09OTl9VUERBVEVfUkFNUk9EX1BBUkFNU19IRF9FTl9NQVNLIDB4MQo+ICsjZGVm aW5lIE5WTUVUQ1BfQ09OTl9VUERBVEVfUkFNUk9EX1BBUkFNU19IRF9FTl9TSElGVCAwCj4gKyNk ZWZpbmUgTlZNRVRDUF9DT05OX1VQREFURV9SQU1ST0RfUEFSQU1TX0REX0VOX01BU0sgMHgxCj4g KyNkZWZpbmUgTlZNRVRDUF9DT05OX1VQREFURV9SQU1ST0RfUEFSQU1TX0REX0VOX1NISUZUIDEK PiArI2RlZmluZSBOVk1FVENQX0NPTk5fVVBEQVRFX1JBTVJPRF9QQVJBTVNfUkVTRVJWRUQwX01B U0sgMHgxCj4gKyNkZWZpbmUgTlZNRVRDUF9DT05OX1VQREFURV9SQU1ST0RfUEFSQU1TX1JFU0VS VkVEMF9TSElGVCAyCj4gKyNkZWZpbmUgTlZNRVRDUF9DT05OX1VQREFURV9SQU1ST0RfUEFSQU1T X1JFU0VSVkVEMV9NQVNLIDB4MQo+ICsjZGVmaW5lIE5WTUVUQ1BfQ09OTl9VUERBVEVfUkFNUk9E X1BBUkFNU19SRVNFUlZFRDFfREFUQV9TSElGVCAzCj4gKyNkZWZpbmUgTlZNRVRDUF9DT05OX1VQ REFURV9SQU1ST0RfUEFSQU1TX1JFU0VSVkVEMl9NQVNLIDB4MQo+ICsjZGVmaW5lIE5WTUVUQ1Bf Q09OTl9VUERBVEVfUkFNUk9EX1BBUkFNU19SRVNFUlZFRDJfU0hJRlQgNAo+ICsjZGVmaW5lIE5W TUVUQ1BfQ09OTl9VUERBVEVfUkFNUk9EX1BBUkFNU19SRVNFUlZFRDNfTUFTSyAweDEKPiArI2Rl ZmluZSBOVk1FVENQX0NPTk5fVVBEQVRFX1JBTVJPRF9QQVJBTVNfUkVTRVJWRUQzX1NISUZUIDUK PiArI2RlZmluZSBOVk1FVENQX0NPTk5fVVBEQVRFX1JBTVJPRF9QQVJBTVNfUkVTRVJWRUQ0X01B U0sgMHgxCj4gKyNkZWZpbmUgTlZNRVRDUF9DT05OX1VQREFURV9SQU1ST0RfUEFSQU1TX1JFU0VS VkVENF9TSElGVCA2Cj4gKyNkZWZpbmUgTlZNRVRDUF9DT05OX1VQREFURV9SQU1ST0RfUEFSQU1T X1JFU0VSVkVENV9NQVNLIDB4MQo+ICsjZGVmaW5lIE5WTUVUQ1BfQ09OTl9VUERBVEVfUkFNUk9E X1BBUkFNU19SRVNFUlZFRDVfU0hJRlQgNwo+ICsJdTggcmVzZXJ2ZWQzWzNdOwo+ICsJX19sZTMy IG1heF9zZXFfc2l6ZTsKPiArCV9fbGUzMiBtYXhfc2VuZF9wZHVfbGVuZ3RoOwo+ICsJX19sZTMy IG1heF9yZWN2X3BkdV9sZW5ndGg7Cj4gKwlfX2xlMzIgZmlyc3Rfc2VxX2xlbmd0aDsKPiArCV9f bGUzMiByZXNlcnZlZDRbNV07Cj4gK307Cj4gKwo+ICsvKiBOVk1lVENQIGNvbm5lY3Rpb24gdGVy bWluYXRpb24gcmVxdWVzdCAqLwo+ICtzdHJ1Y3QgbnZtZXRjcF9zcGVfY29ubl90ZXJtaW5hdGlv biB7Cj4gKwlfX2xlMTYgcmVzZXJ2ZWQwOwo+ICsJX19sZTE2IGNvbm5faWQ7Cj4gKwlfX2xlMzIg cmVzZXJ2ZWQxOwo+ICsJdTggYWJvcnRpdmU7Cj4gKwl1OCByZXNlcnZlZDJbN107Cj4gKwlzdHJ1 Y3QgcmVncGFpciByZXNlcnZlZDM7Cj4gKwlzdHJ1Y3QgcmVncGFpciByZXNlcnZlZDQ7Cj4gK307 Cj4gKwo+ICtzdHJ1Y3QgbnZtZXRjcF9kaWZfZmxhZ3Mgewo+ICsJdTggZmxhZ3M7Cj4gK307Cj4g Kwo+ICtlbnVtIG52bWV0Y3Bfd3FlX3R5cGUgewo+ICsJTlZNRVRDUF9XUUVfVFlQRV9OT1JNQUws Cj4gKwlOVk1FVENQX1dRRV9UWVBFX1RBU0tfQ0xFQU5VUCwKPiArCU5WTUVUQ1BfV1FFX1RZUEVf TUlERExFX1BBVEgsCj4gKwlOVk1FVENQX1dRRV9UWVBFX0lDLAo+ICsJTUFYX05WTUVUQ1BfV1FF X1RZUEUKPiArfTsKPiArCj4gK3N0cnVjdCBudm1ldGNwX3dxZSB7Cj4gKwlfX2xlMTYgdGFza19p ZDsKPiArCXU4IGZsYWdzOwo+ICsjZGVmaW5lIE5WTUVUQ1BfV1FFX1dRRV9UWVBFX01BU0sgMHg3 IC8qIFt1c2UgbnZtZXRjcF93cWVfdHlwZV0gKi8KPiArI2RlZmluZSBOVk1FVENQX1dRRV9XUUVf VFlQRV9TSElGVCAwCj4gKyNkZWZpbmUgTlZNRVRDUF9XUUVfTlVNX1NHRVNfTUFTSyAweEYKPiAr I2RlZmluZSBOVk1FVENQX1dRRV9OVU1fU0dFU19TSElGVCAzCj4gKyNkZWZpbmUgTlZNRVRDUF9X UUVfUkVTUE9OU0VfTUFTSyAweDEKPiArI2RlZmluZSBOVk1FVENQX1dRRV9SRVNQT05TRV9TSElG VCA3Cj4gKwlzdHJ1Y3QgbnZtZXRjcF9kaWZfZmxhZ3MgcHJvdF9mbGFnczsKPiArCV9fbGUzMiBj b250bGVuX2NkYnNpemU7Cj4gKyNkZWZpbmUgTlZNRVRDUF9XUUVfQ09OVF9MRU5fTUFTSyAweEZG RkZGRgo+ICsjZGVmaW5lIE5WTUVUQ1BfV1FFX0NPTlRfTEVOX1NISUZUIDAKPiArI2RlZmluZSBO Vk1FVENQX1dRRV9DREJfU0laRV9PUl9OVk1FVENQX0NNRF9NQVNLIDB4RkYKPiArI2RlZmluZSBO Vk1FVENQX1dRRV9DREJfU0laRV9PUl9OVk1FVENQX0NNRF9TSElGVCAyNAo+ICt9Owo+ICsKPiAg ICNlbmRpZiAvKiBfX05WTUVUQ1BfQ09NTU9OX18gKi8KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9s aW51eC9xZWQvcWVkX252bWV0Y3BfaWYuaCBiL2luY2x1ZGUvbGludXgvcWVkL3FlZF9udm1ldGNw X2lmLmgKPiBpbmRleCBhYmMxZjQxODYyZTMuLjk2MjYzZTNjZmExZSAxMDA2NDQKPiAtLS0gYS9p bmNsdWRlL2xpbnV4L3FlZC9xZWRfbnZtZXRjcF9pZi5oCj4gKysrIGIvaW5jbHVkZS9saW51eC9x ZWQvcWVkX252bWV0Y3BfaWYuaAo+IEBAIC0yNSw2ICsyNSw1MCBAQCBzdHJ1Y3QgcWVkX252bWV0 Y3BfdGlkIHsKPiAgIAl1OCAqYmxvY2tzW01BWF9USURfQkxPQ0tTX05WTUVUQ1BdOwo+ICAgfTsK PiAgIAo+ICtzdHJ1Y3QgcWVkX252bWV0Y3BfaWRfcGFyYW1zIHsKPiArCXU4IG1hY1tFVEhfQUxF Tl07Cj4gKwl1MzIgaXBbNF07Cj4gKwl1MTYgcG9ydDsKPiArfTsKPiArCj4gK3N0cnVjdCBxZWRf bnZtZXRjcF9wYXJhbXNfb2ZmbG9hZCB7Cj4gKwkvKiBGVyBpbml0aWFsaXphdGlvbnMgKi8KPiAr CWRtYV9hZGRyX3Qgc3FfcGJsX2FkZHI7Cj4gKwlkbWFfYWRkcl90IG52bWV0Y3BfY2NjaWRfaXRp ZF90YWJsZV9hZGRyOwo+ICsJdTE2IG52bWV0Y3BfY2NjaWRfbWF4X3JhbmdlOwo+ICsJdTggZGVm YXVsdF9jcTsKPiArCj4gKwkvKiBOZXR3b3JraW5nIGFuZCBUQ1Agc3RhY2sgaW5pdGlhbGl6YXRp b25zICovCj4gKwlzdHJ1Y3QgcWVkX252bWV0Y3BfaWRfcGFyYW1zIHNyYzsKPiArCXN0cnVjdCBx ZWRfbnZtZXRjcF9pZF9wYXJhbXMgZHN0Owo+ICsJdTMyIGthX3RpbWVvdXQ7Cj4gKwl1MzIga2Ff aW50ZXJ2YWw7Cj4gKwl1MzIgbWF4X3J0X3RpbWU7Cj4gKwl1MzIgY3duZDsKPiArCXUxNiBtc3M7 Cj4gKwl1MTYgdmxhbl9pZDsKPiArCWJvb2wgdGltZXN0YW1wX2VuOwo+ICsJYm9vbCBkZWxheWVk X2Fja19lbjsKPiArCWJvb2wgdGNwX2tlZXBfYWxpdmVfZW47Cj4gKwlib29sIGVjbl9lbjsKPiAr CXU4IGlwX3ZlcnNpb247Cj4gKwl1OCBrYV9tYXhfcHJvYmVfY250Owo+ICsJdTggdHRsOwo+ICsJ dTggdG9zX29yX3RjOwo+ICsJdTggcmN2X3duZF9zY2FsZTsKPiArfTsKPiArCj4gK3N0cnVjdCBx ZWRfbnZtZXRjcF9wYXJhbXNfdXBkYXRlIHsKPiArCXUzMiBtYXhfaW9fc2l6ZTsKPiArCXUzMiBt YXhfcmVjdl9wZHVfbGVuZ3RoOwo+ICsJdTMyIG1heF9zZW5kX3BkdV9sZW5ndGg7Cj4gKwo+ICsJ LyogUGxhY2Vob2xkZXI6IHBmdiwgY3BkYSwgaHBkYSAqLwo+ICsKPiArCWJvb2wgaGRyX2RpZ2Vz dF9lbjsKPiArCWJvb2wgZGF0YV9kaWdlc3RfZW47Cj4gK307Cj4gKwo+ICAgc3RydWN0IHFlZF9u dm1ldGNwX2NiX29wcyB7Cj4gICAJc3RydWN0IHFlZF9jb21tb25fY2Jfb3BzIGNvbW1vbjsKPiAg IH07Cj4gQEAgLTQ4LDYgKzkyLDM4IEBAIHN0cnVjdCBxZWRfbnZtZXRjcF9jYl9vcHMgewo+ICAg ICogQHN0b3A6CQludm1ldGNwIGluIEZXCj4gICAgKgkJCUBwYXJhbSBjZGV2Cj4gICAgKgkJCXJl dHVybiAwIG9uIHN1Y2Nlc3MsIG90aGVyd2lzZSBlcnJvciB2YWx1ZS4KPiArICogQGFjcXVpcmVf Y29ubjoJYWNxdWlyZSBhIG5ldyBudm1ldGNwIGNvbm5lY3Rpb24KPiArICoJCQlAcGFyYW0gY2Rl dgo+ICsgKgkJCUBwYXJhbSBoYW5kbGUgLSBxZWQgd2lsbCBmaWxsIGhhbmRsZSB0aGF0IHNob3Vs ZCBiZQo+ICsgKgkJCQl1c2VkIGhlbmNlZm9ydGggYXMgaWRlbnRpZmllciBvZiB0aGUKPiArICoJ CQkJY29ubmVjdGlvbi4KPiArICoJCQlAcGFyYW0gcF9kb29yYmVsbCAtIHFlZCB3aWxsIGZpbGwg dGhlIGFkZHJlc3Mgb2YgdGhlCj4gKyAqCQkJCWRvb3JiZWxsLgo+ICsgKgkJCUByZXR1cm4gMCBv biBzdWNlc3NzLCBvdGhlcndpc2UgZXJyb3IgdmFsdWUuCj4gKyAqIEByZWxlYXNlX2Nvbm46CXJl bGVhc2UgYSBwcmV2aW91c2x5IGFjcXVpcmVkIG52bWV0Y3AgY29ubmVjdGlvbgo+ICsgKgkJCUBw YXJhbSBjZGV2Cj4gKyAqCQkJQHBhcmFtIGhhbmRsZSAtIHRoZSBjb25uZWN0aW9uIGhhbmRsZS4K PiArICoJCQlAcmV0dXJuIDAgb24gc3VjY2Vzcywgb3RoZXJ3aXNlIGVycm9yIHZhbHVlLgo+ICsg KiBAb2ZmbG9hZF9jb25uOgljb25maWd1cmVzIGFuIG9mZmxvYWRlZCBjb25uZWN0aW9uCj4gKyAq CQkJQHBhcmFtIGNkZXYKPiArICoJCQlAcGFyYW0gaGFuZGxlIC0gdGhlIGNvbm5lY3Rpb24gaGFu ZGxlLgo+ICsgKgkJCUBwYXJhbSBjb25uX2luZm8gLSB0aGUgY29uZmlndXJhdGlvbiB0byB1c2Ug Zm9yIHRoZQo+ICsgKgkJCQlvZmZsb2FkLgo+ICsgKgkJCUByZXR1cm4gMCBvbiBzdWNjZXNzLCBv dGhlcndpc2UgZXJyb3IgdmFsdWUuCj4gKyAqIEB1cGRhdGVfY29ubjoJdXBkYXRlcyBhbiBvZmZs b2FkZWQgY29ubmVjdGlvbgo+ICsgKgkJCUBwYXJhbSBjZGV2Cj4gKyAqCQkJQHBhcmFtIGhhbmRs ZSAtIHRoZSBjb25uZWN0aW9uIGhhbmRsZS4KPiArICoJCQlAcGFyYW0gY29ubl9pbmZvIC0gdGhl IGNvbmZpZ3VyYXRpb24gdG8gdXNlIGZvciB0aGUKPiArICoJCQkJb2ZmbG9hZC4KPiArICoJCQlA cmV0dXJuIDAgb24gc3VjY2Vzcywgb3RoZXJ3aXNlIGVycm9yIHZhbHVlLgo+ICsgKiBAZGVzdHJv eV9jb25uOglzdG9wcyBhbiBvZmZsb2FkZWQgY29ubmVjdGlvbgo+ICsgKgkJCUBwYXJhbSBjZGV2 Cj4gKyAqCQkJQHBhcmFtIGhhbmRsZSAtIHRoZSBjb25uZWN0aW9uIGhhbmRsZS4KPiArICoJCQlA cmV0dXJuIDAgb24gc3VjY2Vzcywgb3RoZXJ3aXNlIGVycm9yIHZhbHVlLgo+ICsgKiBAY2xlYXJf c3E6CQljbGVhciBhbGwgdGFzayBpbiBzcQo+ICsgKgkJCUBwYXJhbSBjZGV2Cj4gKyAqCQkJQHBh cmFtIGhhbmRsZSAtIHRoZSBjb25uZWN0aW9uIGhhbmRsZS4KPiArICoJCQlAcmV0dXJuIDAgb24g c3VjY2Vzcywgb3RoZXJ3aXNlIGVycm9yIHZhbHVlLgo+ICAgICovCj4gICBzdHJ1Y3QgcWVkX252 bWV0Y3Bfb3BzIHsKPiAgIAljb25zdCBzdHJ1Y3QgcWVkX2NvbW1vbl9vcHMgKmNvbW1vbjsKPiBA QCAtNjUsNiArMTQxLDI0IEBAIHN0cnVjdCBxZWRfbnZtZXRjcF9vcHMgewo+ICAgCQkgICAgIHZv aWQgKmV2ZW50X2NvbnRleHQsIG52bWV0Y3BfZXZlbnRfY2JfdCBhc3luY19ldmVudF9jYik7Cj4g ICAKPiAgIAlpbnQgKCpzdG9wKShzdHJ1Y3QgcWVkX2RldiAqY2Rldik7Cj4gKwo+ICsJaW50ICgq YWNxdWlyZV9jb25uKShzdHJ1Y3QgcWVkX2RldiAqY2RldiwKPiArCQkJICAgIHUzMiAqaGFuZGxl LAo+ICsJCQkgICAgdTMyICpmd19jaWQsIHZvaWQgX19pb21lbSAqKnBfZG9vcmJlbGwpOwo+ICsK PiArCWludCAoKnJlbGVhc2VfY29ubikoc3RydWN0IHFlZF9kZXYgKmNkZXYsIHUzMiBoYW5kbGUp Owo+ICsKPiArCWludCAoKm9mZmxvYWRfY29ubikoc3RydWN0IHFlZF9kZXYgKmNkZXYsCj4gKwkJ CSAgICB1MzIgaGFuZGxlLAo+ICsJCQkgICAgc3RydWN0IHFlZF9udm1ldGNwX3BhcmFtc19vZmZs b2FkICpjb25uX2luZm8pOwo+ICsKPiArCWludCAoKnVwZGF0ZV9jb25uKShzdHJ1Y3QgcWVkX2Rl diAqY2RldiwKPiArCQkJICAgdTMyIGhhbmRsZSwKPiArCQkJICAgc3RydWN0IHFlZF9udm1ldGNw X3BhcmFtc191cGRhdGUgKmNvbm5faW5mbyk7Cj4gKwo+ICsJaW50ICgqZGVzdHJveV9jb25uKShz dHJ1Y3QgcWVkX2RldiAqY2RldiwgdTMyIGhhbmRsZSwgdTggYWJydF9jb25uKTsKPiArCj4gKwlp bnQgKCpjbGVhcl9zcSkoc3RydWN0IHFlZF9kZXYgKmNkZXYsIHUzMiBoYW5kbGUpOwo+ICAgfTsK PiAgIAo+ICAgY29uc3Qgc3RydWN0IHFlZF9udm1ldGNwX29wcyAqcWVkX2dldF9udm1ldGNwX29w cyh2b2lkKTsKPiAKQ2hlZXJzLAoKSGFubmVzCi0tIApEci4gSGFubmVzIFJlaW5lY2tlICAgICAg ICAgICAgICAgIEtlcm5lbCBTdG9yYWdlIEFyY2hpdGVjdApoYXJlQHN1c2UuZGUgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArNDkgOTExIDc0MDUzIDY4OApTVVNFIFNvZnR3YXJlIFNvbHV0 aW9ucyBHbWJILCBNYXhmZWxkc3RyLiA1LCA5MDQwOSBOw7xybmJlcmcKSFJCIDM2ODA5IChBRyBO w7xybmJlcmcpLCBHZXNjaMOkZnRzZsO8aHJlcjogRmVsaXggSW1lbmTDtnJmZmVyCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1udm1lIG1haWxp bmcgbGlzdApMaW51eC1udm1lQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJh ZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1udm1lCg==