From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com [68.232.129.153]) by sourceware.org (Postfix) with ESMTPS id 4D2C938582BC for ; Wed, 12 Oct 2022 08:55:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 4D2C938582BC Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.95,178,1661846400"; d="diff'?scan'208";a="87355007" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa1.mentor.iphmx.com with ESMTP; 12 Oct 2022 00:55:32 -0800 IronPort-SDR: 5nCVSGqk7/hAPbAbNsqXJnHMoV/AvmRQsGoCmIyieeMX4R7D+rQy8BFyqNDOT0s5SoB/Pkfofl efSKeot7jT6kzL37HIeWchcwAOMlZm/0O14SPHwFUupzjHjNT74sbbvt5RKHVdrw2KjH0p86ut W6x8M4Qa110D+wrSXDElC5Zw7tmjTuKIZuTM/0PGqhenWe/p5/AMEdTHV44HQDhO3duXwCM+3C VqhQO8gS9x8ldy0nxVT/hOeXM66N4OoRh89zAIISsvVuYhe5zlgEdjg5GDx5XTSoIcbfn+2Ios lv4= Content-Type: multipart/mixed; boundary="------------dAKCXIjx5uRyds1u8uO0g4eD" Message-ID: <1e56b27f-3c74-8bc2-028b-9091fa1ae7b1@codesourcery.com> Date: Wed, 12 Oct 2022 10:55:26 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.2 Subject: Re: [Patch][v5] libgomp/nvptx: Prepare for reverse-offload callback handling Content-Language: en-US To: Alexander Monakov , Jakub Jelinek , gcc-patches References: <57b3ae5e-8f15-8bea-fa09-39bccbaa2414@codesourcery.com> <3f0fc49f-b07f-bee2-51a8-a5d03f1c33ed@codesourcery.com> <30e3ed49-0d14-8015-57ef-3d70b1dea69a@codesourcery.com> <3ebce406-46e4-8f98-8c53-83b61423644e@codesourcery.com> <798d7ee1-2ffa-a591-38cb-a9ad421265d0@codesourcery.com> <832946f-bb12-23d7-7d64-47b85c95125@ispras.ru> From: Tobias Burnus In-Reply-To: <832946f-bb12-23d7-7d64-47b85c95125@ispras.ru> X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-13.mgc.mentorg.com (139.181.222.13) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,KAM_SHORT,NICE_REPLY_A,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --------------dAKCXIjx5uRyds1u8uO0g4eD Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable On 11.10.22 13:12, Alexander Monakov wrote: > My understanding is such trickery should not be necessary with > the barrier-based approach, i.e. the sequence of PTX instructions > > st % plain store > membar.sys > st.volatile > > should be enough to guarantee that the former store is visible on the hos= t > before the latter, and work all the way back to sm_20. If I understand it correctly, you mean: GOMP_REV_OFFLOAD_VAR->dev_num =3D GOMP_ADDITIONAL_ICVS.device_num; __sync_synchronize (); /* membar.sys */ asm volatile ("st.volatile.global.u64 [%0], %1;" : : "r"(addr_struct_fn), "r" (fn) : "memory"); And then directly followed by the busy wait: while (__atomic_load_n (&GOMP_REV_OFFLOAD_VAR->fn, __ATOMIC_ACQUIRE) != =3D 0) ; /* spin */ which GCC expands to: /* ld.global.u64 %r64,[__gomp_rev_offload_var]; ld.u64 %r36,[%r64]; membar.sys; */ The such updated patch is attached. (This is the only change + removing the mkoffload.cc part is the only larger change. Otherwise, it only handles the minor comments by Jakub. The now removed CU_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT was used until commit r10-304-g1f4c5b9bb2eb81880e2bc725435d596fcd2bdfef i.e. it is a really old left over!) Otherwise, tested* to work with sm_30 (error by mkoffload, unchanged), sm_35 and sm_70. Tobias *With some added code; until GOMP_OFFLOAD_get_num_devices accepts GOMP_REQUIRES_UNIFIED_SHARED_MEMORY and GOMP_OFFLOAD_load_image gets passed a non-NULL for rev_fn_table, the current patch is a no op. Planned next is the related GCN patch =E2=80=93 and the actual change in libgomp/target.c (+ accepting USM in GOMP_OFFLOAD_get_num_devices) ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------dAKCXIjx5uRyds1u8uO0g4eD Content-Type: text/x-patch; charset="UTF-8"; name="rev-offload-run-nvptx-v6.diff" Content-Disposition: attachment; filename="rev-offload-run-nvptx-v6.diff" Content-Transfer-Encoding: base64 bGliZ29tcC9udnB0eDogUHJlcGFyZSBmb3IgcmV2ZXJzZS1vZmZsb2FkIGNhbGxiYWNrIGhh bmRsaW5nCgpUaGlzIHBhdGNoIGFkZHMgYSBzdHViICdnb21wX3RhcmdldF9yZXYnIGluIHRo ZSBob3N0J3MgdGFyZ2V0LmMsIHdoaWNoIHdpbGwKbGF0ZXIgaGFuZGxlIHRoZSByZXZlcnNl IG9mZmxvYWQuCkZvciBudnB0eCwgaXQgYWRkcyBzdXBwb3J0IGZvciBmb3J3YXJkaW5nIHRo ZSBvZmZsb2FkIGdvbXBfdGFyZ2V0X2V4dCBjYWxsCnRvIHRoZSBob3N0IGJ5IHNldHRpbmcg dmFsdWVzIGluIGEgc3RydWN0IG9uIHRoZSBkZXZpY2UgYW5kIHF1ZXJ5aW5nIGl0IG9uCnRo ZSBob3N0IC0gaW52b2tpbmcgZ29tcF90YXJnZXRfcmV2IG9uIHRoZSByZXN1bHQuCgppbmNs dWRlL0NoYW5nZUxvZzoKCgkqIGN1ZGEvY3VkYS5oIChlbnVtIENVZGV2aWNlX2F0dHJpYnV0 ZSk6IEFkZAoJQ1VfREVWSUNFX0FUVFJJQlVURV9VTklGSUVEX0FERFJFU1NJTkcuCgkoQ1Vf TUVNSE9TVEFMTE9DX0RFVklDRU1BUCk6IERlZmluZS4KCShjdU1lbUhvc3RBbGxvYyk6IEFk ZCBwcm90b3R5cGUuCgpsaWJnb21wL0NoYW5nZUxvZzoKCgkqIGNvbmZpZy9udnB0eC9pY3Yt ZGV2aWNlLmMgKEdPTVBfREVWSUNFX05VTV9WQVIpOiBSZW1vdmUKCSdzdGF0aWMnIGZvciB0 aGlzIHZhcmlhYmxlLgoJKiBjb25maWcvbnZwdHgvbGliZ29tcC1udnB0eC5oOiBOZXcgZmls ZS4KCSogY29uZmlnL252cHR4L3RhcmdldC5jOiBJbmNsdWRlIGl0LgoJKEdPTVBfQURESVRJ T05BTF9JQ1ZTKTogRGVjbGFyZSBleHRlcm4gdmFyLgoJKEdPTVBfUkVWX09GRkxPQURfVkFS KTogRGVjbGFyZSB2YXIuCgkoR09NUF90YXJnZXRfZXh0KTogSGFuZGxlIHJldmVyc2Ugb2Zm bG9hZC4KCSogbGliZ29tcC1wbHVnaW4uaCAoR09NUF9QTFVHSU5fdGFyZ2V0X3Jldik6IE5l dyBwcm90b3R5cGUuCgkqIGxpYmdvbXAtcGx1Z2luLmMgKEdPTVBfUExVR0lOX3RhcmdldF9y ZXYpOiBOZXcsIGNhbGwgLi4uCgkqIHRhcmdldC5jIChnb21wX3RhcmdldF9yZXYpOiAuLi4g dGhpcyBuZXcgc3R1YiBmdW5jdGlvbi4KCSogbGliZ29tcC5oIChnb21wX3RhcmdldF9yZXYp OiBEZWNsYXJlLgoJKiBsaWJnb21wLm1hcCAoR09NUF9QTFVHSU5fMS40KTogTmV3OyBhZGQg R09NUF9QTFVHSU5fdGFyZ2V0X3Jldi4KCSogcGx1Z2luL2N1ZGEtbGliLmRlZiAoY3VNZW1I b3N0QWxsb2MpOiBBZGQuCgkqIHBsdWdpbi9wbHVnaW4tbnZwdHguYzogSW5jbHVkZSBsaWJn b21wLW52cHR4LmguCgkoc3RydWN0IHB0eF9kZXZpY2UpOiBBZGQgcmV2X2RhdGEgbWVtYmVy LiAKCShudnB0eF9vcGVuX2RldmljZSk6IFJlbW92ZSBhc3luY19lbmdpbmVzIHF1ZXJ5LCBs YXN0IHVzZWQgaW4KCXIxMC0zMDQtZzFmNGM1YjliOyBhZGQgdW5pZmllZC1hZGRyZXNzIGFz c2VydCBjaGVjay4KCShHT01QX09GRkxPQURfZ2V0X251bV9kZXZpY2VzKTogQ2xhaW0gdW5p ZmllZCBhZGRyZXNzCglzdXBwb3J0LgoJKEdPTVBfT0ZGTE9BRF9sb2FkX2ltYWdlKTogRnJl ZSByZXZfZm5fdGFibGUgaWYgbm8KCW9mZmxvYWQgZnVuY3Rpb25zIGV4aXN0LiBNYWtlIG9m ZmxvYWQgdmFyIGF2YWlsYWJsZQoJb24gaG9zdCBhbmQgZGV2aWNlLgoJKHJldl9vZmZfZGV2 X3RvX2hvc3RfY3B5LCByZXZfb2ZmX2hvc3RfdG9fZGV2X2NweSk6IE5ldy4KCShHT01QX09G RkxPQURfcnVuKTogSGFuZGxlIHJldmVyc2Ugb2ZmbG9hZC4KCiBpbmNsdWRlL2N1ZGEvY3Vk YS5oICAgICAgICAgICAgICAgICAgfCAgIDMgKwogbGliZ29tcC9jb25maWcvbnZwdHgvaWN2 LWRldmljZS5jICAgIHwgICAyICstCiBsaWJnb21wL2NvbmZpZy9udnB0eC9saWJnb21wLW52 cHR4LmggfCAgNTEgKysrKysrKysrKysrKysrKysKIGxpYmdvbXAvY29uZmlnL252cHR4L3Rh cmdldC5jICAgICAgICB8ICA1NCArKysrKysrKysrKysrKystLS0KIGxpYmdvbXAvbGliZ29t cC1wbHVnaW4uYyAgICAgICAgICAgICB8ICAxMiArKysrCiBsaWJnb21wL2xpYmdvbXAtcGx1 Z2luLmggICAgICAgICAgICAgfCAgIDcgKysrCiBsaWJnb21wL2xpYmdvbXAuaCAgICAgICAg ICAgICAgICAgICAgfCAgIDUgKysKIGxpYmdvbXAvbGliZ29tcC5tYXAgICAgICAgICAgICAg ICAgICB8ICAgNSArKwogbGliZ29tcC9wbHVnaW4vY3VkYS1saWIuZGVmICAgICAgICAgIHwg ICAxICsKIGxpYmdvbXAvcGx1Z2luL3BsdWdpbi1udnB0eC5jICAgICAgICB8IDEwNyArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogbGliZ29tcC90YXJnZXQuYyAgICAg ICAgICAgICAgICAgICAgIHwgIDE5ICsrKysrKysKIDExIGZpbGVzIGNoYW5nZWQsIDI0OCBp bnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2N1 ZGEvY3VkYS5oIGIvaW5jbHVkZS9jdWRhL2N1ZGEuaAppbmRleCAzOTM4ZDA1Li5lMDgxZjA0 IDEwMDY0NAotLS0gYS9pbmNsdWRlL2N1ZGEvY3VkYS5oCisrKyBiL2luY2x1ZGUvY3VkYS9j dWRhLmgKQEAgLTc3LDYgKzc3LDcgQEAgdHlwZWRlZiBlbnVtIHsKICAgQ1VfREVWSUNFX0FU VFJJQlVURV9DT05DVVJSRU5UX0tFUk5FTFMgPSAzMSwKICAgQ1VfREVWSUNFX0FUVFJJQlVU RV9NQVhfVEhSRUFEU19QRVJfTVVMVElQUk9DRVNTT1IgPSAzOSwKICAgQ1VfREVWSUNFX0FU VFJJQlVURV9BU1lOQ19FTkdJTkVfQ09VTlQgPSA0MCwKKyAgQ1VfREVWSUNFX0FUVFJJQlVU RV9VTklGSUVEX0FERFJFU1NJTkcgPSA0MSwKICAgQ1VfREVWSUNFX0FUVFJJQlVURV9NQVhf UkVHSVNURVJTX1BFUl9NVUxUSVBST0NFU1NPUiA9IDgyCiB9IENVZGV2aWNlX2F0dHJpYnV0 ZTsKIApAQCAtMTEzLDYgKzExNCw3IEBAIGVudW0gewogI2RlZmluZSBDVV9MQVVOQ0hfUEFS QU1fRU5EICgodm9pZCAqKSAwKQogI2RlZmluZSBDVV9MQVVOQ0hfUEFSQU1fQlVGRkVSX1BP SU5URVIgKCh2b2lkICopIDEpCiAjZGVmaW5lIENVX0xBVU5DSF9QQVJBTV9CVUZGRVJfU0la RSAoKHZvaWQgKikgMikKKyNkZWZpbmUgQ1VfTUVNSE9TVEFMTE9DX0RFVklDRU1BUCAweDAy VQogCiBlbnVtIHsKICAgQ1VfU1RSRUFNX0RFRkFVTFQgPSAwLApAQCAtMTY5LDYgKzE3MSw3 IEBAIENVcmVzdWx0IGN1TWVtR2V0SW5mbyAoc2l6ZV90ICosIHNpemVfdCAqKTsKIENVcmVz dWx0IGN1TWVtQWxsb2MgKENVZGV2aWNlcHRyICosIHNpemVfdCk7CiAjZGVmaW5lIGN1TWVt QWxsb2NIb3N0IGN1TWVtQWxsb2NIb3N0X3YyCiBDVXJlc3VsdCBjdU1lbUFsbG9jSG9zdCAo dm9pZCAqKiwgc2l6ZV90KTsKK0NVcmVzdWx0IGN1TWVtSG9zdEFsbG9jICh2b2lkICoqLCBz aXplX3QsIHVuc2lnbmVkIGludCk7CiBDVXJlc3VsdCBjdU1lbWNweSAoQ1VkZXZpY2VwdHIs IENVZGV2aWNlcHRyLCBzaXplX3QpOwogI2RlZmluZSBjdU1lbWNweUR0b0RBc3luYyBjdU1l bWNweUR0b0RBc3luY192MgogQ1VyZXN1bHQgY3VNZW1jcHlEdG9EQXN5bmMgKENVZGV2aWNl cHRyLCBDVWRldmljZXB0ciwgc2l6ZV90LCBDVXN0cmVhbSk7CmRpZmYgLS1naXQgYS9saWJn b21wL2NvbmZpZy9udnB0eC9pY3YtZGV2aWNlLmMgYi9saWJnb21wL2NvbmZpZy9udnB0eC9p Y3YtZGV2aWNlLmMKaW5kZXggNmY4NjliZS4uZWVmMTUxYyAxMDA2NDQKLS0tIGEvbGliZ29t cC9jb25maWcvbnZwdHgvaWN2LWRldmljZS5jCisrKyBiL2xpYmdvbXAvY29uZmlnL252cHR4 L2ljdi1kZXZpY2UuYwpAQCAtMzAsNyArMzAsNyBAQAogCiAvKiBUaGlzIGlzIHNldCB0byB0 aGUgSUNWIHZhbHVlcyBvZiBjdXJyZW50IEdQVSBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0 aW9uLAogICAgd2hlbiB0aGUgb2ZmbG9hZCBpbWFnZSBjb250YWluaW5nIHRoaXMgbGliZ29t cCBwb3J0aW9uIGlzIGxvYWRlZC4gICovCi1zdGF0aWMgdm9sYXRpbGUgc3RydWN0IGdvbXBf b2ZmbG9hZF9pY3ZzIEdPTVBfQURESVRJT05BTF9JQ1ZTOwordm9sYXRpbGUgc3RydWN0IGdv bXBfb2ZmbG9hZF9pY3ZzIEdPTVBfQURESVRJT05BTF9JQ1ZTOwogCiB2b2lkCiBvbXBfc2V0 X2RlZmF1bHRfZGV2aWNlIChpbnQgZGV2aWNlX251bSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQp KSkKZGlmZiAtLWdpdCBhL2xpYmdvbXAvY29uZmlnL252cHR4L2xpYmdvbXAtbnZwdHguaCBi L2xpYmdvbXAvY29uZmlnL252cHR4L2xpYmdvbXAtbnZwdHguaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi41ZGE5YWFlCi0tLSAvZGV2L251bGwKKysrIGIvbGliZ29t cC9jb25maWcvbnZwdHgvbGliZ29tcC1udnB0eC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qIENv cHlyaWdodCAoQykgMjAyMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENv bnRyaWJ1dGVkIGJ5IFRvYmlhcyBCdXJudXMgPHRvYmlhc0Bjb2Rlc291cmNlcnkuY29tPi4K KworICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBPZmZsb2FkaW5nIGFuZCBNdWx0 aSBQcm9jZXNzaW5nIExpYnJhcnkKKyAgIChsaWJnb21wKS4KKworICAgTGliZ29tcCBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0 CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNp b24uCisKKyAgIExpYmdvbXAgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCisgICBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT CisgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvcgorICAgbW9yZSBkZXRhaWxzLgorCisgICBVbmRlciBTZWN0aW9u IDcgb2YgR1BMIHZlcnNpb24gMywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwKKyAgIHBl cm1pc3Npb25zIGRlc2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRp b24sIHZlcnNpb24KKyAgIDMuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24uCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZAorICAgYSBjb3B5IG9mIHRoZSBH Q0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsK KyAgIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0 aXZlbHkuICBJZiBub3QsIHNlZQorICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KKworLyogVGhpcyBmaWxlIGNvbnRhaW5zIGRlZmluZXMgYW5kIHR5cGUgZGVmaW5p dGlvbnMgc2hhcmVkIGJldHdlZW4gdGhlCisgICBudnB0eCB0YXJnZXQncyBsaWJnb21wLmEg YW5kIHRoZSBwbHVnaW4tbnZwdHguYywgYnV0IHRoYXQgaXMgb25seQorICAgbmVlZGVmIGZv ciB0aGlzIHRhcmdldC4gICovCisKKyNpZm5kZWYgTElCR09NUF9OVlBUWF9ICisjZGVmaW5l IExJQkdPTVBfTlZQVFhfSCAxCisKKyNkZWZpbmUgR09NUF9SRVZfT0ZGTE9BRF9WQVIgX19n b21wX3Jldl9vZmZsb2FkX3ZhcgorCitzdHJ1Y3QgcmV2X29mZmxvYWQgeworICB1aW50NjRf dCBmbjsKKyAgdWludDY0X3QgbWFwbnVtOworICB1aW50NjRfdCBhZGRyczsKKyAgdWludDY0 X3Qgc2l6ZXM7CisgIHVpbnQ2NF90IGtpbmRzOworICBpbnQzMl90IGRldl9udW07Cit9Owor CisjaWYgKF9fU0laRU9GX1NIT1JUX18gIT0gMiBcCisgICAgIHx8IF9fU0laRU9GX1NJWkVf VF9fICE9IDggXAorICAgICB8fCBfX1NJWkVPRl9QT0lOVEVSX18gIT0gOCkKKyNlcnJvciAi RGF0YS10eXBlIGNvbnZlcnNpb24gcmVxdWlyZWQgZm9yIHJldl9vZmZsb2FkIgorI2VuZGlm CisKKyNlbmRpZiAgLyogTElCR09NUF9OVlBUWF9IICovCisKZGlmZiAtLWdpdCBhL2xpYmdv bXAvY29uZmlnL252cHR4L3RhcmdldC5jIGIvbGliZ29tcC9jb25maWcvbnZwdHgvdGFyZ2V0 LmMKaW5kZXggMTExMDhkMi4uMGU3OTM4OCAxMDA2NDQKLS0tIGEvbGliZ29tcC9jb25maWcv bnZwdHgvdGFyZ2V0LmMKKysrIGIvbGliZ29tcC9jb25maWcvbnZwdHgvdGFyZ2V0LmMKQEAg LTI0LDkgKzI0LDEyIEBACiAgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAq LwogCiAjaW5jbHVkZSAibGliZ29tcC5oIgorI2luY2x1ZGUgImxpYmdvbXAtbnZwdHguaCIg IC8qIEZvciBzdHJ1Y3QgcmV2X29mZmxvYWQgKyBHT01QX1JFVl9PRkZMT0FEX1ZBUi4gKi8K ICNpbmNsdWRlIDxsaW1pdHMuaD4KIAogZXh0ZXJuIGludCBfX2dvbXBfdGVhbV9udW0gX19h dHRyaWJ1dGVfXygoc2hhcmVkKSk7CitleHRlcm4gdm9sYXRpbGUgc3RydWN0IGdvbXBfb2Zm bG9hZF9pY3ZzIEdPTVBfQURESVRJT05BTF9JQ1ZTOwordm9sYXRpbGUgc3RydWN0IHJldl9v ZmZsb2FkICpHT01QX1JFVl9PRkZMT0FEX1ZBUjsKIAogYm9vbAogR09NUF90ZWFtczQgKHVu c2lnbmVkIGludCBudW1fdGVhbXNfbG93ZXIsIHVuc2lnbmVkIGludCBudW1fdGVhbXNfdXBw ZXIsCkBAIC04OCwxNiArOTEsNTMgQEAgR09NUF90YXJnZXRfZXh0IChpbnQgZGV2aWNlLCB2 b2lkICgqZm4pICh2b2lkICopLCBzaXplX3QgbWFwbnVtLAogCQkgdm9pZCAqKmhvc3RhZGRy cywgc2l6ZV90ICpzaXplcywgdW5zaWduZWQgc2hvcnQgKmtpbmRzLAogCQkgdW5zaWduZWQg aW50IGZsYWdzLCB2b2lkICoqZGVwZW5kLCB2b2lkICoqYXJncykKIHsKLSAgKHZvaWQpIGRl dmljZTsKLSAgKHZvaWQpIGZuOwotICAodm9pZCkgbWFwbnVtOwotICAodm9pZCkgaG9zdGFk ZHJzOwotICAodm9pZCkgc2l6ZXM7Ci0gICh2b2lkKSBraW5kczsKKyAgc3RhdGljIGludCBs b2NrID0gMDsgIC8qID09IGdvbXBfbXV0ZXhfdCBsb2NrOyBnb21wX211dGV4X2luaXQgKCZs b2NrKTsgKi8KICAgKHZvaWQpIGZsYWdzOwogICAodm9pZCkgZGVwZW5kOwogICAodm9pZCkg YXJnczsKLSAgX19idWlsdGluX3VucmVhY2hhYmxlICgpOworCisgIGlmIChkZXZpY2UgIT0g R09NUF9ERVZJQ0VfSE9TVF9GQUxMQkFDSworICAgICAgfHwgZm4gPT0gTlVMTAorICAgICAg fHwgR09NUF9SRVZfT0ZGTE9BRF9WQVIgPT0gTlVMTCkKKyAgICByZXR1cm47CisKKyAgZ29t cF9tdXRleF9sb2NrICgmbG9jayk7CisKKyAgR09NUF9SRVZfT0ZGTE9BRF9WQVItPm1hcG51 bSA9IG1hcG51bTsKKyAgR09NUF9SRVZfT0ZGTE9BRF9WQVItPmFkZHJzID0gKHVpbnQ2NF90 KSBob3N0YWRkcnM7CisgIEdPTVBfUkVWX09GRkxPQURfVkFSLT5zaXplcyA9ICh1aW50NjRf dCkgc2l6ZXM7CisgIEdPTVBfUkVWX09GRkxPQURfVkFSLT5raW5kcyA9ICh1aW50NjRfdCkg a2luZHM7CisgIEdPTVBfUkVWX09GRkxPQURfVkFSLT5kZXZfbnVtID0gR09NUF9BRERJVElP TkFMX0lDVlMuZGV2aWNlX251bTsKKworICAvKiBTZXQgJ2ZuJyB0byB0cmlnZ2VyIHByb2Nl c3Npbmcgb24gdGhlIGhvc3Q7IHdhaXQgZm9yIGNvbXBsZXRpb24sCisgICAgIHdoaWNoIGlz IGZsYWdnZWQgYnkgc2V0dGluZyAnZm4nIGJhY2sgdG8gMCBvbiB0aGUgaG9zdC4gICovCisg IHVpbnQ2NF90IGFkZHJfc3RydWN0X2ZuID0gKHVpbnQ2NF90KSAmR09NUF9SRVZfT0ZGTE9B RF9WQVItPmZuOworI2lmIF9fUFRYX1NNX18gPj0gNzAwCisgIGFzbSB2b2xhdGlsZSAoInN0 Lmdsb2JhbC5yZWxlYXNlLnN5cy51NjQgWyUwXSwgJTE7IgorCQk6IDogInIiKGFkZHJfc3Ry dWN0X2ZuKSwgInIiIChmbikgOiAibWVtb3J5Iik7CisjZWxzZQorICBfX3N5bmNfc3luY2hy b25pemUgKCk7ICAvKiBtZW1iYXIuc3lzICovCisgIGFzbSB2b2xhdGlsZSAoInN0LnZvbGF0 aWxlLmdsb2JhbC51NjQgWyUwXSwgJTE7IgorCQk6IDogInIiKGFkZHJfc3RydWN0X2ZuKSwg InIiIChmbikgOiAibWVtb3J5Iik7CisjZW5kaWYKKworI2lmIF9fUFRYX1NNX18gPj0gNzAw CisgIHVpbnQ2NF90IGZuMjsKKyAgZG8KKyAgICB7CisgICAgICBhc20gdm9sYXRpbGUgKCJs ZC5hY3F1aXJlLnN5cy5nbG9iYWwudTY0ICUwLCBbJTFdOyIKKwkJICAgIDogIj1yIiAoZm4y KSA6ICJyIiAoYWRkcl9zdHJ1Y3RfZm4pIDogIm1lbW9yeSIpOworICAgIH0KKyAgd2hpbGUg KGZuMiAhPSAwKTsKKyNlbHNlCisgIC8qIGxkLmdsb2JhbC51NjQgJXI2NCxbX19nb21wX3Jl dl9vZmZsb2FkX3Zhcl07CisgICAgIGxkLnU2NCAlcjM2LFslcjY0XTsKKyAgICAgbWVtYmFy LnN5czsgICovCisgIHdoaWxlIChfX2F0b21pY19sb2FkX24gKCZHT01QX1JFVl9PRkZMT0FE X1ZBUi0+Zm4sIF9fQVRPTUlDX0FDUVVJUkUpICE9IDApCisgICAgOyAgLyogc3BpbiAgKi8K KyNlbmRpZgorCisgIGdvbXBfbXV0ZXhfdW5sb2NrICgmbG9jayk7CiB9CiAKIHZvaWQKZGlm ZiAtLWdpdCBhL2xpYmdvbXAvbGliZ29tcC1wbHVnaW4uYyBiL2xpYmdvbXAvbGliZ29tcC1w bHVnaW4uYwppbmRleCA5ZDRjYzYyLi4zMTZkZTc0IDEwMDY0NAotLS0gYS9saWJnb21wL2xp YmdvbXAtcGx1Z2luLmMKKysrIGIvbGliZ29tcC9saWJnb21wLXBsdWdpbi5jCkBAIC03OCwz ICs3OCwxNSBAQCBHT01QX1BMVUdJTl9mYXRhbCAoY29uc3QgY2hhciAqbXNnLCAuLi4pCiAg IGdvbXBfdmZhdGFsIChtc2csIGFwKTsKICAgdmFfZW5kIChhcCk7CiB9CisKK3ZvaWQKK0dP TVBfUExVR0lOX3RhcmdldF9yZXYgKHVpbnQ2NF90IGZuX3B0ciwgdWludDY0X3QgbWFwbnVt LCB1aW50NjRfdCBkZXZhZGRyc19wdHIsCisJCQl1aW50NjRfdCBzaXplc19wdHIsIHVpbnQ2 NF90IGtpbmRzX3B0ciwgaW50IGRldl9udW0sCisJCQl2b2lkICgqZGV2X3RvX2hvc3RfY3B5 KSAodm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCwKKwkJCQkJCSB2b2lkICopLAorCQkJ dm9pZCAoKmhvc3RfdG9fZGV2X2NweSkgKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3Qs CisJCQkJCQkgdm9pZCAqKSwgdm9pZCAqdG9rZW4pCit7CisgIGdvbXBfdGFyZ2V0X3JldiAo Zm5fcHRyLCBtYXBudW0sIGRldmFkZHJzX3B0ciwgc2l6ZXNfcHRyLCBraW5kc19wdHIsIGRl dl9udW0sCisJCSAgIGRldl90b19ob3N0X2NweSwgaG9zdF90b19kZXZfY3B5LCB0b2tlbik7 Cit9CmRpZmYgLS1naXQgYS9saWJnb21wL2xpYmdvbXAtcGx1Z2luLmggYi9saWJnb21wL2xp YmdvbXAtcGx1Z2luLmgKaW5kZXggNmFiNWFjNi4uODc1Zjk2NyAxMDA2NDQKLS0tIGEvbGli Z29tcC9saWJnb21wLXBsdWdpbi5oCisrKyBiL2xpYmdvbXAvbGliZ29tcC1wbHVnaW4uaApA QCAtMTIxLDYgKzEyMSwxMyBAQCBleHRlcm4gdm9pZCBHT01QX1BMVUdJTl9lcnJvciAoY29u c3QgY2hhciAqLCAuLi4pCiBleHRlcm4gdm9pZCBHT01QX1BMVUdJTl9mYXRhbCAoY29uc3Qg Y2hhciAqLCAuLi4pCiAJX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuLCBmb3JtYXQgKHByaW50 ZiwgMSwgMikpKTsKIAorZXh0ZXJuIHZvaWQgR09NUF9QTFVHSU5fdGFyZ2V0X3JldiAodWlu dDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QsCisJCQkJICAgIHVpbnQ2NF90 LCBpbnQsCisJCQkJICAgIHZvaWQgKCopICh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90 LAorCQkJCQkgICAgICB2b2lkICopLAorCQkJCSAgICB2b2lkICgqKSAodm9pZCAqLCBjb25z dCB2b2lkICosIHNpemVfdCwKKwkJCQkJICAgICAgdm9pZCAqKSwgdm9pZCAqKTsKKwogLyog UHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGltcGxlbWVudGVkIGJ5IGxpYmdvbXAgcGx1Z2lu cy4gICovCiBleHRlcm4gY29uc3QgY2hhciAqR09NUF9PRkZMT0FEX2dldF9uYW1lICh2b2lk KTsKIGV4dGVybiB1bnNpZ25lZCBpbnQgR09NUF9PRkZMT0FEX2dldF9jYXBzICh2b2lkKTsK ZGlmZiAtLWdpdCBhL2xpYmdvbXAvbGliZ29tcC5oIGIvbGliZ29tcC9saWJnb21wLmgKaW5k ZXggNzUxOTI3NC4uNTgwMzY4MyAxMDA2NDQKLS0tIGEvbGliZ29tcC9saWJnb21wLmgKKysr IGIvbGliZ29tcC9saWJnb21wLmgKQEAgLTExMjgsNiArMTEyOCwxMSBAQCBleHRlcm4gaW50 IGdvbXBfcGF1c2VfaG9zdCAodm9pZCk7CiBleHRlcm4gdm9pZCBnb21wX2luaXRfdGFyZ2V0 c19vbmNlICh2b2lkKTsKIGV4dGVybiBpbnQgZ29tcF9nZXRfbnVtX2RldmljZXMgKHZvaWQp OwogZXh0ZXJuIGJvb2wgZ29tcF90YXJnZXRfdGFza19mbiAodm9pZCAqKTsKK2V4dGVybiB2 b2lkIGdvbXBfdGFyZ2V0X3JldiAodWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWlu dDY0X3QsIHVpbnQ2NF90LAorCQkJICAgICBpbnQsCisJCQkgICAgIHZvaWQgKCopICh2b2lk ICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCB2b2lkICopLAorCQkJICAgICB2b2lkICgqKSAo dm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCwgdm9pZCAqKSwKKwkJCSAgICAgdm9pZCAq KTsKIAogLyogU3BsYXkgdHJlZSBkZWZpbml0aW9ucy4gICovCiB0eXBlZGVmIHN0cnVjdCBz cGxheV90cmVlX25vZGVfcyAqc3BsYXlfdHJlZV9ub2RlOwpkaWZmIC0tZ2l0IGEvbGliZ29t cC9saWJnb21wLm1hcCBiL2xpYmdvbXAvbGliZ29tcC5tYXAKaW5kZXggNDZkNWYxMC4uMTJm NzZmNyAxMDA2NDQKLS0tIGEvbGliZ29tcC9saWJnb21wLm1hcAorKysgYi9saWJnb21wL2xp YmdvbXAubWFwCkBAIC02MjIsMyArNjIyLDggQEAgR09NUF9QTFVHSU5fMS4zIHsKIAlHT01Q X1BMVUdJTl9nb2FjY19wcm9maWxpbmdfZGlzcGF0Y2g7CiAJR09NUF9QTFVHSU5fZ29hY2Nf dGhyZWFkOwogfSBHT01QX1BMVUdJTl8xLjI7CisKK0dPTVBfUExVR0lOXzEuNCB7CisgIGds b2JhbDoKKwlHT01QX1BMVUdJTl90YXJnZXRfcmV2OworfSBHT01QX1BMVUdJTl8xLjM7CmRp ZmYgLS1naXQgYS9saWJnb21wL3BsdWdpbi9jdWRhLWxpYi5kZWYgYi9saWJnb21wL3BsdWdp bi9jdWRhLWxpYi5kZWYKaW5kZXggY2Q5MWIzOS4uZGZmNDJkNiAxMDA2NDQKLS0tIGEvbGli Z29tcC9wbHVnaW4vY3VkYS1saWIuZGVmCisrKyBiL2xpYmdvbXAvcGx1Z2luL2N1ZGEtbGli LmRlZgpAQCAtMjksNiArMjksNyBAQCBDVURBX09ORV9DQUxMX01BWUJFX05VTEwgKGN1TGlu a0NyZWF0ZV92MikKIENVREFfT05FX0NBTEwgKGN1TGlua0Rlc3Ryb3kpCiBDVURBX09ORV9D QUxMIChjdU1lbUFsbG9jKQogQ1VEQV9PTkVfQ0FMTCAoY3VNZW1BbGxvY0hvc3QpCitDVURB X09ORV9DQUxMIChjdU1lbUhvc3RBbGxvYykKIENVREFfT05FX0NBTEwgKGN1TWVtY3B5KQog Q1VEQV9PTkVfQ0FMTCAoY3VNZW1jcHlEdG9EQXN5bmMpCiBDVURBX09ORV9DQUxMIChjdU1l bWNweUR0b0gpCmRpZmYgLS1naXQgYS9saWJnb21wL3BsdWdpbi9wbHVnaW4tbnZwdHguYyBi L2xpYmdvbXAvcGx1Z2luL3BsdWdpbi1udnB0eC5jCmluZGV4IGJhNmIyMjkuLmFkMDU3ZWQg MTAwNjQ0Ci0tLSBhL2xpYmdvbXAvcGx1Z2luL3BsdWdpbi1udnB0eC5jCisrKyBiL2xpYmdv bXAvcGx1Z2luL3BsdWdpbi1udnB0eC5jCkBAIC00MCw2ICs0MCw5IEBACiAjaW5jbHVkZSAi Z29tcC1jb25zdGFudHMuaCIKICNpbmNsdWRlICJvYWNjLWludC5oIgogCisvKiBGb3Igc3Ry dWN0IHJldl9vZmZsb2FkICsgR09NUF9SRVZfT0ZGTE9BRF9WQVIuICovCisjaW5jbHVkZSAi Y29uZmlnL252cHR4L2xpYmdvbXAtbnZwdHguaCIKKwogI2luY2x1ZGUgPHB0aHJlYWQuaD4K ICNpZm5kZWYgUExVR0lOX05WUFRYX0lOQ0xVREVfU1lTVEVNX0NVREFfSAogIyBpbmNsdWRl ICJjdWRhL2N1ZGEuaCIKQEAgLTMyOSw2ICszMzIsNyBAQCBzdHJ1Y3QgcHR4X2RldmljZQog ICAgICAgcHRocmVhZF9tdXRleF90IGxvY2s7CiAgICAgfSBvbXBfc3RhY2tzOwogCisgIHN0 cnVjdCByZXZfb2ZmbG9hZCAqcmV2X2RhdGE7CiAgIHN0cnVjdCBwdHhfZGV2aWNlICpuZXh0 OwogfTsKIApAQCAtNDIzLDcgKzQyNyw3IEBAIG52cHR4X29wZW5fZGV2aWNlIChpbnQgbikK ICAgc3RydWN0IHB0eF9kZXZpY2UgKnB0eF9kZXY7CiAgIENVZGV2aWNlIGRldiwgY3R4X2Rl djsKICAgQ1VyZXN1bHQgcjsKLSAgaW50IGFzeW5jX2VuZ2luZXMsIHBpOworICBpbnQgcGk7 CiAKICAgQ1VEQV9DQUxMX0VSRVQgKE5VTEwsIGN1RGV2aWNlR2V0LCAmZGV2LCBuKTsKIApA QCAtNTE5LDEwICs1MjMsMTIgQEAgbnZwdHhfb3Blbl9kZXZpY2UgKGludCBuKQogCQkgIENV X0RFVklDRV9BVFRSSUJVVEVfTUFYX1RIUkVBRFNfUEVSX01VTFRJUFJPQ0VTU09SLCBkZXYp OwogICBwdHhfZGV2LT5tYXhfdGhyZWFkc19wZXJfbXVsdGlwcm9jZXNzb3IgPSBwaTsKIAot ICByID0gQ1VEQV9DQUxMX05PQ0hFQ0sgKGN1RGV2aWNlR2V0QXR0cmlidXRlLCAmYXN5bmNf ZW5naW5lcywKLQkJCSBDVV9ERVZJQ0VfQVRUUklCVVRFX0FTWU5DX0VOR0lORV9DT1VOVCwg ZGV2KTsKLSAgaWYgKHIgIT0gQ1VEQV9TVUNDRVNTKQotICAgIGFzeW5jX2VuZ2luZXMgPSAx OworICAvKiBSZXF1aXJlZCBiZWxvdyBmb3IgcmV2ZXJzZSBvZmZsb2FkIGFzIGltcGxlbWVu dGVkLCBidXQgd2l0aCBjb21wdXRlCisgICAgIGNhcGFiaWxpdHkgPj0gMi4wIGFuZCA2NGJp dCBkZXZpY2UgcHJvY2Vzc2VzLCB0aGlzIHNob3VsZCBiZSB1bml2ZXJzYWxseSBiZQorICAg ICB0aGUgY2FzZTsgaGVuY2UsIGFuIGFzc2VydC4gICovCisgIHIgPSBDVURBX0NBTExfTk9D SEVDSyAoY3VEZXZpY2VHZXRBdHRyaWJ1dGUsICZwaSwKKwkJCSBDVV9ERVZJQ0VfQVRUUklC VVRFX1VOSUZJRURfQUREUkVTU0lORywgZGV2KTsKKyAgYXNzZXJ0IChyID09IENVREFfU1VD Q0VTUyAmJiBwaSk7CiAKICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gR09NUF9ESU1fTUFYOyBp KyspCiAgICAgcHR4X2Rldi0+ZGVmYXVsdF9kaW1zW2ldID0gMDsKQEAgLTExNzksOCArMTE4 NSwxMCBAQCBHT01QX09GRkxPQURfZ2V0X251bV9kZXZpY2VzICh1bnNpZ25lZCBpbnQgb21w X3JlcXVpcmVzX21hc2spCiB7CiAgIGludCBudW1fZGV2aWNlcyA9IG52cHR4X2dldF9udW1f ZGV2aWNlcyAoKTsKICAgLyogUmV0dXJuIC0xIGlmIG5vIG9tcF9yZXF1aXJlc19tYXNrIGNh bm5vdCBiZSBmdWxmaWxsZWQgYnV0Ci0gICAgIGRldmljZXMgd2VyZSBwcmVzZW50LiAgKi8K LSAgaWYgKG51bV9kZXZpY2VzID4gMCAmJiBvbXBfcmVxdWlyZXNfbWFzayAhPSAwKQorICAg ICBkZXZpY2VzIHdlcmUgcHJlc2VudC4gIFVuaWZpZWQtc2hhcmVkIGFkZHJlc3M6IHNlZSBj b21tZW50IGluCisgICAgIG52cHR4X29wZW5fZGV2aWNlIGZvciBDVV9ERVZJQ0VfQVRUUklC VVRFX1VOSUZJRURfQUREUkVTU0lORy4gICovCisgIGlmIChudW1fZGV2aWNlcyA+IDAKKyAg ICAgICYmIChvbXBfcmVxdWlyZXNfbWFzayAmIH5HT01QX1JFUVVJUkVTX1VOSUZJRURfQURE UkVTUykgIT0gMCkKICAgICByZXR1cm4gLTE7CiAgIHJldHVybiBudW1fZGV2aWNlczsKIH0K QEAgLTEzODAsNyArMTM4OCw3IEBAIEdPTVBfT0ZGTE9BRF9sb2FkX2ltYWdlIChpbnQgb3Jk LCB1bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCB2b2lkICp0YXJnZXRfZGF0YSwKICAgZWxzZSBp ZiAocmV2X2ZuX3RhYmxlKQogICAgIHsKICAgICAgIENVZGV2aWNlcHRyIHZhcjsKLSAgICAg IHNpemVfdCBieXRlczsKKyAgICAgIHNpemVfdCBieXRlcywgaTsKICAgICAgIHIgPSBDVURB X0NBTExfTk9DSEVDSyAoY3VNb2R1bGVHZXRHbG9iYWwsICZ2YXIsICZieXRlcywgbW9kdWxl LAogCQkJICAgICAiJG9mZmxvYWRfZnVuY190YWJsZSIpOwogICAgICAgaWYgKHIgIT0gQ1VE QV9TVUNDRVNTKQpAQCAtMTM5MCw2ICsxMzk4LDM3IEBAIEdPTVBfT0ZGTE9BRF9sb2FkX2lt YWdlIChpbnQgb3JkLCB1bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCB2b2lkICp0YXJnZXRfZGF0 YSwKICAgICAgIHIgPSBDVURBX0NBTExfTk9DSEVDSyAoY3VNZW1jcHlEdG9ILCAqcmV2X2Zu X3RhYmxlLCB2YXIsIGJ5dGVzKTsKICAgICAgIGlmIChyICE9IENVREFfU1VDQ0VTUykKIAlH T01QX1BMVUdJTl9mYXRhbCAoImN1TWVtY3B5RHRvSCBlcnJvcjogJXMiLCBjdWRhX2Vycm9y IChyKSk7CisgICAgICAvKiBGcmVlIGlmIG9ubHkgTlVMTCBlbnRyaWVzLiAgKi8KKyAgICAg IGZvciAoaSA9IDA7IGkgPCBmbl9lbnRyaWVzOyArK2kpCisJaWYgKCgqcmV2X2ZuX3RhYmxl KVtpXSAhPSAwKQorCSAgYnJlYWs7CisgICAgICBpZiAoaSA9PSBmbl9lbnRyaWVzKQorCXsK KwkgIGZyZWUgKCpyZXZfZm5fdGFibGUpOworCSAgKnJldl9mbl90YWJsZSA9IE5VTEw7CisJ fQorICAgIH0KKworICBpZiAocmV2X2ZuX3RhYmxlICYmICpyZXZfZm5fdGFibGUgJiYgZGV2 LT5yZXZfZGF0YSA9PSBOVUxMKQorICAgIHsKKyAgICAgIC8qIGN1TWVtSG9zdEFsbG9jIG1l bW9yeSBpcyBhY2Nlc3NpYmxlIG9uIHRoZSBkZXZpY2UsIGlmIHVuaWZpZWQtc2hhcmVkCisJ IGFkZHJlc3MgaXMgc3VwcG9ydGVkOyB0aGlzIGlzIGFzc3VtZWQgLSBzZWUgY29tbWVudCBp bgorCSBudnB0eF9vcGVuX2RldmljZSBmb3IgQ1VfREVWSUNFX0FUVFJJQlVURV9VTklGSUVE X0FERFJFU1NJTkcuICAgKi8KKyAgICAgIENVREFfQ0FMTF9BU1NFUlQgKGN1TWVtSG9zdEFs bG9jLCAodm9pZCAqKikgJmRldi0+cmV2X2RhdGEsCisJCQlzaXplb2YgKCpkZXYtPnJldl9k YXRhKSwgQ1VfTUVNSE9TVEFMTE9DX0RFVklDRU1BUCk7CisgICAgICBDVWRldmljZXB0ciBk cCA9IChDVWRldmljZXB0cikgZGV2LT5yZXZfZGF0YTsKKyAgICAgIENVZGV2aWNlcHRyIGRl dmljZV9yZXZfb2ZmbG9hZF92YXI7CisgICAgICBzaXplX3QgZGV2aWNlX3Jldl9vZmZsb2Fk X3NpemU7CisgICAgICBDVXJlc3VsdCByID0gQ1VEQV9DQUxMX05PQ0hFQ0sgKGN1TW9kdWxl R2V0R2xvYmFsLAorCQkJCSAgICAgICZkZXZpY2VfcmV2X29mZmxvYWRfdmFyLAorCQkJCSAg ICAgICZkZXZpY2VfcmV2X29mZmxvYWRfc2l6ZSwgbW9kdWxlLAorCQkJCSAgICAgIFhTVFJJ TkcgKEdPTVBfUkVWX09GRkxPQURfVkFSKSk7CisgICAgICBpZiAociAhPSBDVURBX1NVQ0NF U1MpCisJR09NUF9QTFVHSU5fZmF0YWwgKCJjdU1vZHVsZUdldEdsb2JhbCBlcnJvciAtIEdP TVBfUkVWX09GRkxPQURfVkFSOiAlcyIsIGN1ZGFfZXJyb3IgKHIpKTsKKyAgICAgIHIgPSBD VURBX0NBTExfTk9DSEVDSyAoY3VNZW1jcHlIdG9ELCBkZXZpY2VfcmV2X29mZmxvYWRfdmFy LCAmZHAsCisJCQkgICAgIHNpemVvZiAoZHApKTsKKyAgICAgIGlmIChyICE9IENVREFfU1VD Q0VTUykKKwlHT01QX1BMVUdJTl9mYXRhbCAoImN1TWVtY3B5SHRvRCBlcnJvcjogJXMiLCBj dWRhX2Vycm9yIChyKSk7CiAgICAgfQogCiAgIG52cHR4X3NldF9jbG9ja3RpY2sgKG1vZHVs ZSwgZGV2KTsKQEAgLTIwMDEsNiArMjA0MCwyMyBAQCBudnB0eF9zdGFja3NfYWNxdWlyZSAo c3RydWN0IHB0eF9kZXZpY2UgKnB0eF9kZXYsIHNpemVfdCBzaXplLCBpbnQgbnVtKQogICBy ZXR1cm4gKHZvaWQgKikgcHR4X2Rldi0+b21wX3N0YWNrcy5wdHI7CiB9CiAKKwordm9pZAor cmV2X29mZl9kZXZfdG9faG9zdF9jcHkgKHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywg c2l6ZV90IHNpemUsCisJCQkgQ1VzdHJlYW0gc3RyZWFtKQoreworICBDVURBX0NBTExfQVNT RVJUIChjdU1lbWNweUR0b0hBc3luYywgZGVzdCwgKENVZGV2aWNlcHRyKSBzcmMsIHNpemUs IHN0cmVhbSk7CisgIENVREFfQ0FMTF9BU1NFUlQgKGN1U3RyZWFtU3luY2hyb25pemUsIHN0 cmVhbSk7Cit9CisKK3ZvaWQKK3Jldl9vZmZfaG9zdF90b19kZXZfY3B5ICh2b2lkICpkZXN0 LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBzaXplLAorCQkJIENVc3RyZWFtIHN0cmVhbSkK K3sKKyAgQ1VEQV9DQUxMX0FTU0VSVCAoY3VNZW1jcHlIdG9EQXN5bmMsIChDVWRldmljZXB0 cikgZGVzdCwgc3JjLCBzaXplLCBzdHJlYW0pOworICBDVURBX0NBTExfQVNTRVJUIChjdVN0 cmVhbVN5bmNocm9uaXplLCBzdHJlYW0pOworfQorCiB2b2lkCiBHT01QX09GRkxPQURfcnVu IChpbnQgb3JkLCB2b2lkICp0Z3RfZm4sIHZvaWQgKnRndF92YXJzLCB2b2lkICoqYXJncykK IHsKQEAgLTIwMzUsNiArMjA5MSw4IEBAIEdPTVBfT0ZGTE9BRF9ydW4gKGludCBvcmQsIHZv aWQgKnRndF9mbiwgdm9pZCAqdGd0X3ZhcnMsIHZvaWQgKiphcmdzKQogICBudnB0eF9hZGp1 c3RfbGF1bmNoX2JvdW5kcyAodGd0X2ZuLCBwdHhfZGV2LCAmdGVhbXMsICZ0aHJlYWRzKTsK IAogICBzaXplX3Qgc3RhY2tfc2l6ZSA9IG52cHR4X3N0YWNrc19zaXplICgpOworICBib29s IHJldmVyc2Vfb2ZmbG9hZCA9IHB0eF9kZXYtPnJldl9kYXRhICE9IE5VTEw7CisgIENVc3Ry ZWFtIGNvcHlfc3RyZWFtID0gTlVMTDsKIAogICBwdGhyZWFkX211dGV4X2xvY2sgKCZwdHhf ZGV2LT5vbXBfc3RhY2tzLmxvY2spOwogICB2b2lkICpzdGFja3MgPSBudnB0eF9zdGFja3Nf YWNxdWlyZSAocHR4X2Rldiwgc3RhY2tfc2l6ZSwgdGVhbXMgKiB0aHJlYWRzKTsKQEAgLTIw NDgsMTIgKzIxMDYsNDEgQEAgR09NUF9PRkZMT0FEX3J1biAoaW50IG9yZCwgdm9pZCAqdGd0 X2ZuLCB2b2lkICp0Z3RfdmFycywgdm9pZCAqKmFyZ3MpCiAgIEdPTVBfUExVR0lOX2RlYnVn ICgwLCAiICAlczoga2VybmVsICVzOiBsYXVuY2giCiAJCSAgICAgIiBbKHRlYW1zOiAldSks IDEsIDFdIFsobGFuZXM6IDMyKSwgKHRocmVhZHM6ICV1KSwgMV1cbiIsCiAJCSAgICAgX19G VU5DVElPTl9fLCBmbl9uYW1lLCB0ZWFtcywgdGhyZWFkcyk7CisgIGlmIChyZXZlcnNlX29m ZmxvYWQpCisgICAgQ1VEQV9DQUxMX0FTU0VSVCAoY3VTdHJlYW1DcmVhdGUsICZjb3B5X3N0 cmVhbSwgQ1VfU1RSRUFNX05PTl9CTE9DS0lORyk7CiAgIHIgPSBDVURBX0NBTExfTk9DSEVD SyAoY3VMYXVuY2hLZXJuZWwsIGZ1bmN0aW9uLCB0ZWFtcywgMSwgMSwKIAkJCSAzMiwgdGhy ZWFkcywgMSwgMCwgTlVMTCwgTlVMTCwgY29uZmlnKTsKICAgaWYgKHIgIT0gQ1VEQV9TVUND RVNTKQogICAgIEdPTVBfUExVR0lOX2ZhdGFsICgiY3VMYXVuY2hLZXJuZWwgZXJyb3I6ICVz IiwgY3VkYV9lcnJvciAocikpOwotCi0gIHIgPSBDVURBX0NBTExfTk9DSEVDSyAoY3VDdHhT eW5jaHJvbml6ZSwgKTsKKyAgaWYgKHJldmVyc2Vfb2ZmbG9hZCkKKyAgICB3aGlsZSAodHJ1 ZSkKKyAgICAgIHsKKwlyID0gQ1VEQV9DQUxMX05PQ0hFQ0sgKGN1U3RyZWFtUXVlcnksIE5V TEwpOworCWlmIChyID09IENVREFfU1VDQ0VTUykKKwkgIGJyZWFrOworCWlmIChyID09IENV REFfRVJST1JfTEFVTkNIX0ZBSUxFRCkKKwkgIEdPTVBfUExVR0lOX2ZhdGFsICgiY3VTdHJl YW1RdWVyeSBlcnJvcjogJXMgJXNcbiIsIGN1ZGFfZXJyb3IgKHIpLAorCQkJICAgICBtYXli ZV9hYm9ydF9tc2cpOworCWVsc2UgaWYgKHIgIT0gQ1VEQV9FUlJPUl9OT1RfUkVBRFkpCisJ ICBHT01QX1BMVUdJTl9mYXRhbCAoImN1U3RyZWFtUXVlcnkgZXJyb3I6ICVzIiwgY3VkYV9l cnJvciAocikpOworCisJaWYgKF9fYXRvbWljX2xvYWRfbiAoJnB0eF9kZXYtPnJldl9kYXRh LT5mbiwgX19BVE9NSUNfQUNRVUlSRSkgIT0gMCkKKwkgIHsKKwkgICAgc3RydWN0IHJldl9v ZmZsb2FkICpyZXZfZGF0YSA9IHB0eF9kZXYtPnJldl9kYXRhOworCSAgICBHT01QX1BMVUdJ Tl90YXJnZXRfcmV2IChyZXZfZGF0YS0+Zm4sIHJldl9kYXRhLT5tYXBudW0sCisJCQkJICAg IHJldl9kYXRhLT5hZGRycywgcmV2X2RhdGEtPnNpemVzLAorCQkJCSAgICByZXZfZGF0YS0+ a2luZHMsIHJldl9kYXRhLT5kZXZfbnVtLAorCQkJCSAgICByZXZfb2ZmX2Rldl90b19ob3N0 X2NweSwKKwkJCQkgICAgcmV2X29mZl9ob3N0X3RvX2Rldl9jcHksIGNvcHlfc3RyZWFtKTsK KwkgICAgQ1VEQV9DQUxMX0FTU0VSVCAoY3VTdHJlYW1TeW5jaHJvbml6ZSwgY29weV9zdHJl YW0pOworCSAgICBfX2F0b21pY19zdG9yZV9uICgmcmV2X2RhdGEtPmZuLCAwLCBfX0FUT01J Q19SRUxFQVNFKTsKKwkgIH0KKwl1c2xlZXAgKDEpOworICAgICAgfQorICBlbHNlCisgICAg ciA9IENVREFfQ0FMTF9OT0NIRUNLIChjdUN0eFN5bmNocm9uaXplLCApOworICBpZiAocmV2 ZXJzZV9vZmZsb2FkKQorICAgIENVREFfQ0FMTF9BU1NFUlQgKGN1U3RyZWFtRGVzdHJveSwg Y29weV9zdHJlYW0pOwogICBpZiAociA9PSBDVURBX0VSUk9SX0xBVU5DSF9GQUlMRUQpCiAg ICAgR09NUF9QTFVHSU5fZmF0YWwgKCJjdUN0eFN5bmNocm9uaXplIGVycm9yOiAlcyAlc1xu IiwgY3VkYV9lcnJvciAociksCiAJCSAgICAgICBtYXliZV9hYm9ydF9tc2cpOwpkaWZmIC0t Z2l0IGEvbGliZ29tcC90YXJnZXQuYyBiL2xpYmdvbXAvdGFyZ2V0LmMKaW5kZXggNTc2MzQ4 My4uYzdmZTc0MSAxMDA2NDQKLS0tIGEvbGliZ29tcC90YXJnZXQuYworKysgYi9saWJnb21w L3RhcmdldC5jCkBAIC0yOTI1LDYgKzI5MjUsMjUgQEAgR09NUF90YXJnZXRfZXh0IChpbnQg ZGV2aWNlLCB2b2lkICgqZm4pICh2b2lkICopLCBzaXplX3QgbWFwbnVtLAogICAgIGh0YWJf ZnJlZSAocmVmY291bnRfc2V0KTsKIH0KIAorLyogSGFuZGxlIHJldmVyc2Ugb2ZmbG9hZC4g IFRoaXMgaXMgY2FsbGVkIGJ5IHRoZSBkZXZpY2UgcGx1Z2lucyBmb3IgYQorICAgcmV2ZXJz ZSBvZmZsb2FkOyBpdCBpcyBub3QgY2FsbGVkIGlmIHRoZSBvdXRlciB0YXJnZXQgcnVucyBv biB0aGUgaG9zdC4gICovCisKK3ZvaWQKK2dvbXBfdGFyZ2V0X3JldiAodWludDY0X3QgZm5f cHRyIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKwkJIHVpbnQ2NF90IG1hcG51bSBfX2F0 dHJpYnV0ZV9fICgodW51c2VkKSksCisJCSB1aW50NjRfdCBkZXZhZGRyc19wdHIgX19hdHRy aWJ1dGVfXyAoKHVudXNlZCkpLAorCQkgdWludDY0X3Qgc2l6ZXNfcHRyIF9fYXR0cmlidXRl X18gKCh1bnVzZWQpKSwKKwkJIHVpbnQ2NF90IGtpbmRzX3B0ciBfX2F0dHJpYnV0ZV9fICgo dW51c2VkKSksCisJCSBpbnQgZGV2X251bSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisJ CSB2b2lkICgqZGV2X3RvX2hvc3RfY3B5KSAodm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVf dCwKKwkJCQkJICB2b2lkICopIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKwkJIHZvaWQg KCpob3N0X3RvX2Rldl9jcHkpICh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90LAorCQkJ CQkgIHZvaWQgKikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorCQkgdm9pZCAqdG9rZW4g X19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQoreworICBfX2J1aWx0aW5fdW5yZWFjaGFibGUg KCk7Cit9CisKIC8qIEhvc3QgZmFsbGJhY2sgZm9yIEdPTVBfdGFyZ2V0X2RhdGF7LF9leHR9 IHJvdXRpbmVzLiAgKi8KIAogc3RhdGljIHZvaWQK --------------dAKCXIjx5uRyds1u8uO0g4eD--