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 4202B3858CDB for ; Fri, 7 Oct 2022 14:27:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 4202B3858CDB 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,166,1661846400"; d="diff'?scan'208,217";a="87092826" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa1.mentor.iphmx.com with ESMTP; 07 Oct 2022 06:27:06 -0800 IronPort-SDR: Vp9++zeENq50cI9MO/A2JMDihXltH2c07E6oNbXDSXbIJmdkfmnM01ZMZBh7Ncvua0477GQeAf cuAxBVXAGlh4oN0b0bd7g8+WJ3Vn4/G8uhP/1VRl4hytrgiJk9foHnkBTjiBX6oprs50fVfuNp NbGRrWSeVZZzUtekTqSTkEmcoHJT/Qq44wPnZ9UIzHegXw0NYvcHxE7C27JlK4wZzpowrpdxF2 8oHmsM8iGslnv17kXCI19eguMhS8Vwd8FFCqyl6XNTn8+cpZ7zU9clHB3TbenUqmXxTaGfXoC3 nEo= Content-Type: multipart/mixed; boundary="------------pW9mOrRhVBmZD8SkMhj0045u" Message-ID: <798d7ee1-2ffa-a591-38cb-a9ad421265d0@codesourcery.com> Date: Fri, 7 Oct 2022 16:26:58 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.1 Subject: [Patch][v5] libgomp/nvptx: Prepare for reverse-offload callback handling Content-Language: en-US From: Tobias Burnus To: Jakub Jelinek , gcc-patches CC: Alexander Monakov , Tom de Vries 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> In-Reply-To: <3ebce406-46e4-8f98-8c53-83b61423644e@codesourcery.com> X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: SVR-IES-MBX-08.mgc.mentorg.com (139.181.222.8) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,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: --------------pW9mOrRhVBmZD8SkMhj0045u Content-Type: multipart/alternative; boundary="------------H1CXtoXYjMD0iDF7fFkMawWF" --------------H1CXtoXYjMD0iDF7fFkMawWF Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: quoted-printable Updated patch enclosed. Changes: * Fixes the sm >=3D 700 issue, I noted before (cf. below) * The < sm_70 code is still in, but disabled at user-compile time, with a w= arning, if libgomp.a wasn't compiled with sm_70 or higher. (mkoffload strip= s the nvptx offload code) * Some minor cleanup OK for mainline? Tobias On 02.10.22 20:13, Tobias Burnus wrote: On 27.09.22 11:23, Tobias Burnus wrote: We do support #if __PTX_SM__ >=3D 600 (CUDA >=3D 8.0, ptx isa >=3D 5.0) and we also can configure GCC with --with-arch=3Dsm_70 (or sm_80 or ...) Thus, adding atomics with .sys scope is possible. See attached patch. This seems to work fine and I hope I got the assembly right in terms of atomic use. (And I do believe that the .release/.acquire do not need an additional __sync_syncronize()/"membar.sys= ".) Regarding this: While 'atom.op' (op =3D and/or/xor/cas/exch/add/inc/dec/min/max) with scope is a sm_60 feature, the used 'st/ld' with scope qualifier and .relaxed, .release / .relaxed, .acquire require sm_70. (Does not really matter as only ..., sm_53 and sm_70, ... is currently supported but not sm_60, but the #if should be obviously fixed.) * * * Looking at the generated code for without inline assembler, we have instead= of st.global.release.sys.u64 [%r27],%r39; and ld.acquire.sys.global.u64 %r62,[%r27]; for the older-systems (__PTX_SM < 700) the code: @ %r69 membar.sys; @ %r69 atom.exch.b64 _,[%r27],%r41; and ld.global.u64 %r64,[__gomp_rev_offload_var]; ld.u64 %r36,[%r64]; membar.sys; In my understanding, the membar.sys ensures - similar to st.release / ld.acquire that the memory handling is done in the correct order in scope .sys. As the 'fn' variable is initially 0 - and then only set via the device i.e. there is eventually a DMA write device->host, which is atomically as the will int64_t is written at once (and not first, e.g. the lower and then the upper half). The 'st'/'atom.exch' should work fine, despite having no .sys scope. Likewise, the membar.sys applies also in the other direction. Or did I miss something. If so, would an explicit __sync_synchronize() (=3D membar.s= ys) help between the 'st' and the 'ld'? Tobias ----------------- 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 --------------H1CXtoXYjMD0iDF7fFkMawWF-- --------------pW9mOrRhVBmZD8SkMhj0045u Content-Type: text/x-patch; charset="UTF-8"; name="rev-offload-run-nvptx-v5.diff" Content-Disposition: attachment; filename="rev-offload-run-nvptx-v5.diff" Content-Transfer-Encoding: base64 bGliZ29tcC9udnB0eDogUHJlcGFyZSBmb3IgcmV2ZXJzZS1vZmZsb2FkIGNh bGxiYWNrIGhhbmRsaW5nCgpUaGlzIHBhdGNoIGFkZHMgYSBzdHViICdnb21w X3RhcmdldF9yZXYnIGluIHRoZSBob3N0J3MgdGFyZ2V0LmMsIHdoaWNoIHdp bGwKbGF0ZXIgaGFuZGxlIHRoZSByZXZlcnNlIG9mZmxvYWQuCkZvciBudnB0 eCwgaXQgYWRkcyBzdXBwb3J0IGZvciBmb3J3YXJkaW5nIHRoZSBvZmZsb2Fk IGdvbXBfdGFyZ2V0X2V4dCBjYWxsCnRvIHRoZSBob3N0IGJ5IHNldHRpbmcg dmFsdWVzIGluIGEgc3RydWN0IG9uIHRoZSBkZXZpY2UgYW5kIHF1ZXJ5aW5n IGl0IG9uCnRoZSBob3N0IC0gaW52b2tpbmcgZ29tcF90YXJnZXRfcmV2IG9u IHRoZSByZXN1bHQuCgpGb3IgaG9zdC1kZXZpY2UgY29uc2lzdGVuY3kgZ3Vh cmFudGVlIHJlYXNvbnMsIHJldmVyc2Ugb2ZmbG9hZCBpcyBjdXJyZW50bHkK bGltaXRlZCAtbWFyY2g9c21fNzAgKGZvciBsaWJnb21wKS4KCmdjYy9DaGFu Z2VMb2c6CgoJKiBjb25maWcvbnZwdHgvbWtvZmZsb2FkLmNjIChwcm9jZXNz KTogV2FybiBpZiB0aGUgbGlua2VkLWluIGxpYmdvbXAuYQoJaGFzIG5vdCBi ZWVuIGNvbXBpbGVkIHdpdGggc21fNzAgb3IgaGlnaGVyIGFuZCBkaXNhYmxl IGNvZGUgZ2VuIHRoZW4uCgppbmNsdWRlL0NoYW5nZUxvZzoKCgkqIGN1ZGEv Y3VkYS5oIChlbnVtIENVZGV2aWNlX2F0dHJpYnV0ZSk6IEFkZAoJQ1VfREVW SUNFX0FUVFJJQlVURV9VTklGSUVEX0FERFJFU1NJTkcuCgkoQ1VfTUVNSE9T VEFMTE9DX0RFVklDRU1BUCk6IERlZmluZS4KCShjdU1lbUhvc3RBbGxvYyk6 IEFkZCBwcm90b3R5cGUuCgpsaWJnb21wL0NoYW5nZUxvZzoKCgkqIGNvbmZp Zy9udnB0eC9pY3YtZGV2aWNlLmMgKEdPTVBfREVWSUNFX05VTV9WQVIpOiBS ZW1vdmUKCSdzdGF0aWMnIGZvciB0aGlzIHZhcmlhYmxlLgoJKiBjb25maWcv bnZwdHgvbGliZ29tcC1udnB0eC5oOiBOZXcgZmlsZS4KCSogY29uZmlnL252 cHR4L3RhcmdldC5jOiBJbmNsdWRlIGl0LgoJKEdPTVBfQURESVRJT05BTF9J Q1ZTKTogRGVjbGFyZSBleHRlcm4gdmFyLgoJKEdPTVBfUkVWX09GRkxPQURf VkFSKTogRGVjbGFyZSB2YXIuCgkoR09NUF90YXJnZXRfZXh0KTogSGFuZGxl IHJldmVyc2Ugb2ZmbG9hZC4KCSogbGliZ29tcC1wbHVnaW4uaCAoR09NUF9Q TFVHSU5fdGFyZ2V0X3Jldik6IE5ldyBwcm90b3R5cGUuCgkqIGxpYmdvbXAt cGx1Z2luLmMgKEdPTVBfUExVR0lOX3RhcmdldF9yZXYpOiBOZXcsIGNhbGwg Li4uCgkqIHRhcmdldC5jIChnb21wX3RhcmdldF9yZXYpOiAuLi4gdGhpcyBu ZXcgc3R1YiBmdW5jdGlvbi4KCSogbGliZ29tcC5oIChnb21wX3RhcmdldF9y ZXYpOiBEZWNsYXJlLgoJKiBsaWJnb21wLm1hcCAoR09NUF9QTFVHSU5fMS40 KTogTmV3OyBhZGQgR09NUF9QTFVHSU5fdGFyZ2V0X3Jldi4KCSogcGx1Z2lu L2N1ZGEtbGliLmRlZiAoY3VNZW1Ib3N0QWxsb2MpOiBBZGQuCgkqIHBsdWdp bi9wbHVnaW4tbnZwdHguYzogSW5jbHVkZSBsaWJnb21wLW52cHR4LmguCgko c3RydWN0IHB0eF9kZXZpY2UpOiBBZGQgcmV2X2RhdGEgbWVtYmVyLiAKCShu dnB0eF9vcGVuX2RldmljZSk6ICNpZiAwIHVudXNlZCBjaGVjazsgYWRkCgl1 bmlmaWVkIGFkZHJlc3MgYXNzZXJ0IGNoZWNrLgoJKEdPTVBfT0ZGTE9BRF9n ZXRfbnVtX2RldmljZXMpOiBDbGFpbSB1bmlmaWVkIGFkZHJlc3MKCXN1cHBv cnQuCgkoR09NUF9PRkZMT0FEX2xvYWRfaW1hZ2UpOiBGcmVlIHJldl9mbl90 YWJsZSBpZiBubwoJb2ZmbG9hZCBmdW5jdGlvbnMgZXhpc3QuIE1ha2Ugb2Zm bG9hZCB2YXIgYXZhaWxhYmxlCglvbiBob3N0IGFuZCBkZXZpY2UuCgkocmV2 X29mZl9kZXZfdG9faG9zdF9jcHksIHJldl9vZmZfaG9zdF90b19kZXZfY3B5 KTogTmV3LgoJKEdPTVBfT0ZGTE9BRF9ydW4pOiBIYW5kbGUgcmV2ZXJzZSBv ZmZsb2FkLgoKIGdjYy9jb25maWcvbnZwdHgvbWtvZmZsb2FkLmNjICAgICAg ICB8ICA2MCArKysrKysrKysrKysrKystLS0tLQogaW5jbHVkZS9jdWRhL2N1 ZGEuaCAgICAgICAgICAgICAgICAgIHwgICAzICsKIGxpYmdvbXAvY29uZmln L252cHR4L2ljdi1kZXZpY2UuYyAgICB8ICAgMiArLQogbGliZ29tcC9jb25m aWcvbnZwdHgvbGliZ29tcC1udnB0eC5oIHwgIDUxICsrKysrKysrKysrKysr KysrCiBsaWJnb21wL2NvbmZpZy9udnB0eC90YXJnZXQuYyAgICAgICAgfCAg NjEgKysrKysrKysrKysrKysrKystLS0KIGxpYmdvbXAvbGliZ29tcC1wbHVn aW4uYyAgICAgICAgICAgICB8ICAxMiArKysrCiBsaWJnb21wL2xpYmdvbXAt cGx1Z2luLmggICAgICAgICAgICAgfCAgIDcgKysrCiBsaWJnb21wL2xpYmdv bXAuaCAgICAgICAgICAgICAgICAgICAgfCAgIDUgKysKIGxpYmdvbXAvbGli Z29tcC5tYXAgICAgICAgICAgICAgICAgICB8ICAgNSArKwogbGliZ29tcC9w bHVnaW4vY3VkYS1saWIuZGVmICAgICAgICAgIHwgICAxICsKIGxpYmdvbXAv cGx1Z2luL3BsdWdpbi1udnB0eC5jICAgICAgICB8IDEwNyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLQogbGliZ29tcC90YXJnZXQuYyAg ICAgICAgICAgICAgICAgICAgIHwgIDE5ICsrKysrKysKIDEyIGZpbGVzIGNo YW5nZWQsIDMwNCBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9nY2MvY29uZmlnL252cHR4L21rb2ZmbG9hZC5jYyBiL2dj Yy9jb25maWcvbnZwdHgvbWtvZmZsb2FkLmNjCmluZGV4IDg1NGNkNzIuLmFh MmUwNDIgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvbnZwdHgvbWtvZmZsb2Fk LmNjCisrKyBiL2djYy9jb25maWcvbnZwdHgvbWtvZmZsb2FkLmNjCkBAIC0y NTgsNiArMjU4LDcgQEAgcHJvY2VzcyAoRklMRSAqaW4sIEZJTEUgKm91dCwg dWludDMyX3Qgb21wX3JlcXVpcmVzKQogICB1bnNpZ25lZCBpeDsKICAgY29u c3QgY2hhciAqc21fdmVyID0gTlVMTCwgKnZlcnNpb24gPSBOVUxMOwogICBj b25zdCBjaGFyICpzbV92ZXIyID0gTlVMTCwgKnZlcnNpb24yID0gTlVMTDsK KyAgY29uc3QgY2hhciAqc21fbGliZ29tcCA9IE5VTEw7CiAgIHNpemVfdCBm aWxlX2NudCA9IDA7CiAgIHNpemVfdCAqZmlsZV9pZHggPSBYQUxMT0NBVkVD IChzaXplX3QsIGxlbik7CiAKQEAgLTI2OCw2ICsyNjksNyBAQCBwcm9jZXNz IChGSUxFICppbiwgRklMRSAqb3V0LCB1aW50MzJfdCBvbXBfcmVxdWlyZXMp CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGxlbjspCiAgICAgewogICAg ICAgY2hhciBjOworICAgICAgYm9vbCBpc19saWJnb21wID0gZmFsc2U7CiAg ICAgICBib29sIG91dHB1dF9mbl9wdHIgPSBmYWxzZTsKICAgICAgIGZpbGVf aWR4W2ZpbGVfY250KytdID0gaTsKIApAQCAtMjkxLDYgKzI5MywxMyBAQCBw cm9jZXNzIChGSUxFICppbiwgRklMRSAqb3V0LCB1aW50MzJfdCBvbXBfcmVx dWlyZXMpCiAJCSAgdmVyc2lvbiA9IGlucHV0ICsgaSArIHN0cmxlbiAoIi52 ZXJzaW9uICIpOwogCQkgIGNvbnRpbnVlOwogCQl9CisJICAgICAgaWYgKFVO TElLRUxZIChzdGFydHN3aXRoIChpbnB1dCArIGksCisJCQkJCSIvLyBCRUdJ TiBHTE9CQUwgRlVOQ1RJT04gIgorCQkJCQkiREVGOiBHT01QX3RhcmdldF9l eHQiKSkpCisJCXsKKwkJICBpc19saWJnb21wID0gdHJ1ZTsKKwkJICBjb250 aW51ZTsKKwkJfQogCSAgICAgIHdoaWxlIChzdGFydHN3aXRoIChpbnB1dCAr IGksICIvLzoiKSkKIAkJewogCQkgIGkgKz0gMzsKQEAgLTMxOSwyOCArMzI4 LDQ5IEBAIHByb2Nlc3MgKEZJTEUgKmluLCBGSUxFICpvdXQsIHVpbnQzMl90 IG9tcF9yZXF1aXJlcykKIAkgIHB1dGMgKGMsIG91dCk7CiAJfQogICAgICAg ZnByaW50ZiAob3V0LCAiXCI7XG5cbiIpOworICAgICAgaWYgKGlzX2xpYmdv bXApCisJc21fbGliZ29tcCA9IHNtX3ZlcjsKICAgICAgIGlmIChvdXRwdXRf Zm5fcHRyCiAJICAmJiAob21wX3JlcXVpcmVzICYgR09NUF9SRVFVSVJFU19S RVZFUlNFX09GRkxPQUQpICE9IDApCiAJewotCSAgaWYgKHNtX3ZlciAmJiBz bV92ZXJbMF0gPT0gJzMnICYmIHNtX3ZlclsxXSA9PSAnMCcKLQkgICAgICAm JiBzbV92ZXJbMl0gPT0gJ1xuJykKLQkgICAgewotCSAgICAgIHdhcm5pbmdf YXQgKGlucHV0X2xvY2F0aW9uLCAwLAotCQkJICAiJTxvbXAgcmVxdWlyZXMg cmV2ZXJzZV9vZmZsb2FkJT4gcmVxdWlyZXMgYXQgIgotCQkJICAibGVhc3Qg JTxzbV8zNSU+IGZvciAiCi0JCQkgICIlPC1mb2ZmbG9hZC1vcHRpb25zPW52 cHR4LW5vbmU9LW1hcmNoPSU+IC0gZGlzYWJsaW5nIgotCQkJICAiIG9mZmxv YWQtY29kZSBnZW5lcmF0aW9uIGZvciB0aGlzIGRldmljZSB0eXBlIik7Ci0J ICAgICAgLyogQXMgbm93IGFuIGVtcHR5IGZpbGUgaXMgY29tcGlsZWQgYW5k IHRoZXJlIGlzIG5vIGNhbGwgdG8KLQkJIEdPTVBfb2ZmbG9hZF9yZWdpc3Rl cl92ZXIsIHRoaXMgZGV2aWNlIHR5cGUgaXMgZWZmZWN0aXZlbHkKLQkJIGRp c2FibGVkLiAgKi8KLQkgICAgICBmZmx1c2ggKG91dCk7Ci0JICAgICAgZnRy dW5jYXRlIChmaWxlbm8gKG91dCksIDApOwotCSAgICAgIHJldHVybjsKLQkg ICAgfQogCSAgc21fdmVyMiA9IHNtX3ZlcjsKIAkgIHZlcnNpb24yID0gdmVy c2lvbjsKIAl9CiAgICAgfQorICBpZiAoc21fdmVyMiAmJiBzbV9saWJnb21w CisgICAgICAmJiBzbV9saWJnb21wWzBdIDwgJzcnICYmIHNtX2xpYmdvbXBb MV0gJiYgc21fbGliZ29tcFsyXSA9PSAnXG4nKQorICAgIHsKKyAgICAgIC8q IFRoZSBjb2RlIGZvciBudnB0eCBmb3IgR09NUF90YXJnZXRfZXh0IGluIGxp YmdvbXAvY29uZmlnL252cHR4L3RhcmdldC5jCisJIGZvciA8IHNtXzcwIGV4 aXN0cyBidXQgaXMgZGlzYWJsZWQgaGVyZSBhcyBpdCBpcyB1bmNsZWFyIHdo ZXRoZXIgdGhlcmUKKwkgaXMgdGhlIHJlcXVpcmVkIGNvbnNpc3RlbmN5IGJl dHdlZW4gaG9zdCBhbmQgZGV2aWNlLgorCSBTZWUgaHR0cHM6Ly9nY2MuZ251 Lm9yZy9waXBlcm1haWwvZ2NjLXBhdGNoZXMvMjAyMi1PY3RvYmVyLzYwMjcx NS5odG1sCisJIGZvciBkZXRhaWxzLiAgKi8KKyAgICAgIHdhcm5pbmdfYXQg KGlucHV0X2xvY2F0aW9uLCAwLAorCQkgICJEaXNhYmxpbmcgb2ZmbG9hZC1j b2RlIGdlbmVyYXRpb24gZm9yIHRoaXMgZGV2aWNlIHR5cGU6ICIKKwkJICAi JTxvbXAgcmVxdWlyZXMgcmV2ZXJzZV9vZmZsb2FkJT4gY2FuIG9ubHkgYmUg ZnVsZmlsbGVkICIKKwkJICAiZm9yICU8c21fNzAlPiBvciBoaWdoZXIiKTsK KyAgICAgIGluZm9ybSAoVU5LTk9XTl9MT0NBVElPTiwKKwkgICAgICAiUmV2 ZXJzZSBvZmZsb2FkIHJlcXVpcmVzIHRoYXQgR0NDIGlzIGNvbmZpZ3VyZWQg d2l0aCAiCisJICAgICAgIiU8LS13aXRoLWFyY2g9c21fNzAlPiBvciBoaWdo ZXIgYW5kIG5vdCBvdmVycmlkZGVuIGJ5IGEgbG93ZXIgIgorCSAgICAgICJ2 YWx1ZSBmb3IgJTwtZm9mZmxvYWQtb3B0aW9ucz1udnB0eC1ub25lPS1tYXJj aD0lPiIpOworICAgICAgLyogQXMgbm93IGFuIGVtcHR5IGZpbGUgaXMgY29t cGlsZWQgYW5kIHRoZXJlIGlzIG5vIGNhbGwgdG8KKwkgR09NUF9vZmZsb2Fk X3JlZ2lzdGVyX3ZlciwgdGhpcyBkZXZpY2UgdHlwZSBpcyBlZmZlY3RpdmVs eSBkaXNhYmxlZC4gICovCisgICAgICBmZmx1c2ggKG91dCk7CisgICAgICBm dHJ1bmNhdGUgKGZpbGVubyAob3V0KSwgMCk7CisgICAgICByZXR1cm47Cisg ICAgfQorICBpZiAoc21fdmVyMiAmJiBzbV92ZXIyWzBdID09ICczJyAmJiBz bV92ZXIyWzFdID09ICcwJyAmJiBzbV92ZXJbMl0gPT0gJ1xuJykKKyAgICB7 CisgICAgICB3YXJuaW5nX2F0IChpbnB1dF9sb2NhdGlvbiwgMCwKKwkJICAi JTxvbXAgcmVxdWlyZXMgcmV2ZXJzZV9vZmZsb2FkJT4gcmVxdWlyZXMgYXQg bGVhc3QgJTxzbV8zNSU+ICIKKwkJICAiZm9yICU8LWZvZmZsb2FkLW9wdGlv bnM9bnZwdHgtbm9uZT0tbWFyY2g9JT4gLSBkaXNhYmxpbmcgIgorCQkgICJv ZmZsb2FkLWNvZGUgZ2VuZXJhdGlvbiBmb3IgdGhpcyBkZXZpY2UgdHlwZSIp OworICAgICAgLyogQXMgbm93IGFuIGVtcHR5IGZpbGUgaXMgY29tcGlsZWQg YW5kIHRoZXJlIGlzIG5vIGNhbGwgdG8KKwkgR09NUF9vZmZsb2FkX3JlZ2lz dGVyX3ZlciwgdGhpcyBkZXZpY2UgdHlwZSBpcyBlZmZlY3RpdmVseSBkaXNh YmxlZC4gICovCisgICAgICBmZmx1c2ggKG91dCk7CisgICAgICBmdHJ1bmNh dGUgKGZpbGVubyAob3V0KSwgMCk7CisgICAgICByZXR1cm47CisgICAgfQog CiAgIC8qIENyZWF0ZSBmdW5jdGlvbi1wb2ludGVyIGFycmF5LCByZXF1aXJl ZCBmb3IgcmV2ZXJzZQogICAgICBvZmZsb2FkIGZ1bmN0aW9uLXBvaW50ZXIg bG9va3VwLiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY3VkYS9jdWRhLmgg Yi9pbmNsdWRlL2N1ZGEvY3VkYS5oCmluZGV4IDM5MzhkMDUuLmUwODFmMDQg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY3VkYS9jdWRhLmgKKysrIGIvaW5jbHVk ZS9jdWRhL2N1ZGEuaApAQCAtNzcsNiArNzcsNyBAQCB0eXBlZGVmIGVudW0g ewogICBDVV9ERVZJQ0VfQVRUUklCVVRFX0NPTkNVUlJFTlRfS0VSTkVMUyA9 IDMxLAogICBDVV9ERVZJQ0VfQVRUUklCVVRFX01BWF9USFJFQURTX1BFUl9N VUxUSVBST0NFU1NPUiA9IDM5LAogICBDVV9ERVZJQ0VfQVRUUklCVVRFX0FT WU5DX0VOR0lORV9DT1VOVCA9IDQwLAorICBDVV9ERVZJQ0VfQVRUUklCVVRF X1VOSUZJRURfQUREUkVTU0lORyA9IDQxLAogICBDVV9ERVZJQ0VfQVRUUklC VVRFX01BWF9SRUdJU1RFUlNfUEVSX01VTFRJUFJPQ0VTU09SID0gODIKIH0g Q1VkZXZpY2VfYXR0cmlidXRlOwogCkBAIC0xMTMsNiArMTE0LDcgQEAgZW51 bSB7CiAjZGVmaW5lIENVX0xBVU5DSF9QQVJBTV9FTkQgKCh2b2lkICopIDAp CiAjZGVmaW5lIENVX0xBVU5DSF9QQVJBTV9CVUZGRVJfUE9JTlRFUiAoKHZv aWQgKikgMSkKICNkZWZpbmUgQ1VfTEFVTkNIX1BBUkFNX0JVRkZFUl9TSVpF ICgodm9pZCAqKSAyKQorI2RlZmluZSBDVV9NRU1IT1NUQUxMT0NfREVWSUNF TUFQIDB4MDJVCiAKIGVudW0gewogICBDVV9TVFJFQU1fREVGQVVMVCA9IDAs CkBAIC0xNjksNiArMTcxLDcgQEAgQ1VyZXN1bHQgY3VNZW1HZXRJbmZvIChz aXplX3QgKiwgc2l6ZV90ICopOwogQ1VyZXN1bHQgY3VNZW1BbGxvYyAoQ1Vk ZXZpY2VwdHIgKiwgc2l6ZV90KTsKICNkZWZpbmUgY3VNZW1BbGxvY0hvc3Qg Y3VNZW1BbGxvY0hvc3RfdjIKIENVcmVzdWx0IGN1TWVtQWxsb2NIb3N0ICh2 b2lkICoqLCBzaXplX3QpOworQ1VyZXN1bHQgY3VNZW1Ib3N0QWxsb2MgKHZv aWQgKiosIHNpemVfdCwgdW5zaWduZWQgaW50KTsKIENVcmVzdWx0IGN1TWVt Y3B5IChDVWRldmljZXB0ciwgQ1VkZXZpY2VwdHIsIHNpemVfdCk7CiAjZGVm aW5lIGN1TWVtY3B5RHRvREFzeW5jIGN1TWVtY3B5RHRvREFzeW5jX3YyCiBD VXJlc3VsdCBjdU1lbWNweUR0b0RBc3luYyAoQ1VkZXZpY2VwdHIsIENVZGV2 aWNlcHRyLCBzaXplX3QsIENVc3RyZWFtKTsKZGlmZiAtLWdpdCBhL2xpYmdv bXAvY29uZmlnL252cHR4L2ljdi1kZXZpY2UuYyBiL2xpYmdvbXAvY29uZmln L252cHR4L2ljdi1kZXZpY2UuYwppbmRleCA2Zjg2OWJlLi5lZWYxNTFjIDEw MDY0NAotLS0gYS9saWJnb21wL2NvbmZpZy9udnB0eC9pY3YtZGV2aWNlLmMK KysrIGIvbGliZ29tcC9jb25maWcvbnZwdHgvaWN2LWRldmljZS5jCkBAIC0z MCw3ICszMCw3IEBACiAKIC8qIFRoaXMgaXMgc2V0IHRvIHRoZSBJQ1YgdmFs dWVzIG9mIGN1cnJlbnQgR1BVIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRp b24sCiAgICB3aGVuIHRoZSBvZmZsb2FkIGltYWdlIGNvbnRhaW5pbmcgdGhp cyBsaWJnb21wIHBvcnRpb24gaXMgbG9hZGVkLiAgKi8KLXN0YXRpYyB2b2xh dGlsZSBzdHJ1Y3QgZ29tcF9vZmZsb2FkX2ljdnMgR09NUF9BRERJVElPTkFM X0lDVlM7Cit2b2xhdGlsZSBzdHJ1Y3QgZ29tcF9vZmZsb2FkX2ljdnMgR09N UF9BRERJVElPTkFMX0lDVlM7CiAKIHZvaWQKIG9tcF9zZXRfZGVmYXVsdF9k ZXZpY2UgKGludCBkZXZpY2VfbnVtIF9fYXR0cmlidXRlX18oKHVudXNlZCkp KQpkaWZmIC0tZ2l0IGEvbGliZ29tcC9jb25maWcvbnZwdHgvbGliZ29tcC1u dnB0eC5oIGIvbGliZ29tcC9jb25maWcvbnZwdHgvbGliZ29tcC1udnB0eC5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYTlhYWUK LS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL2NvbmZpZy9udnB0eC9saWJn b21wLW52cHR4LmgKQEAgLTAsMCArMSw1MSBAQAorLyogQ29weXJpZ2h0IChD KSAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29u dHJpYnV0ZWQgYnkgVG9iaWFzIEJ1cm51cyA8dG9iaWFzQGNvZGVzb3VyY2Vy eS5jb20+LgorCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIE9m ZmxvYWRpbmcgYW5kIE11bHRpIFByb2Nlc3NpbmcgTGlicmFyeQorICAgKGxp YmdvbXApLgorCisgICBMaWJnb21wIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pCisg ICBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgTGliZ29tcCBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQg V0lUSE9VVCBBTlkKKyAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MK KyAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgICBtb3JlIGRldGFpbHMuCisK KyAgIFVuZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJl IGdyYW50ZWQgYWRkaXRpb25hbAorICAgcGVybWlzc2lvbnMgZGVzY3JpYmVk IGluIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiwgdmVyc2lv bgorICAgMy4xLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbi4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisg ICBhIGNvcHkgb2YgdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9u IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOworICAgc2VlIHRoZSBmaWxlcyBD T1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElm IG5vdCwgc2VlCisgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLworCisvKiBUaGlzIGZpbGUgY29udGFpbnMgZGVmaW5lcyBhbmQgdHlw ZSBkZWZpbml0aW9ucyBzaGFyZWQgYmV0d2VlbiB0aGUKKyAgIG52cHR4IHRh cmdldCdzIGxpYmdvbXAuYSBhbmQgdGhlIHBsdWdpbi1udnB0eC5jLCBidXQg dGhhdCBpcyBvbmx5CisgICBuZWVkZWYgZm9yIHRoaXMgdGFyZ2V0LiAgKi8K KworI2lmbmRlZiBMSUJHT01QX05WUFRYX0gKKyNkZWZpbmUgTElCR09NUF9O VlBUWF9IIDEKKworI2RlZmluZSBHT01QX1JFVl9PRkZMT0FEX1ZBUiBfX2dv bXBfcmV2X29mZmxvYWRfdmFyCisKK3N0cnVjdCByZXZfb2ZmbG9hZCB7Cisg IHVpbnQ2NF90IGZuOworICB1aW50NjRfdCBtYXBudW07CisgIHVpbnQ2NF90 IGFkZHJzOworICB1aW50NjRfdCBzaXplczsKKyAgdWludDY0X3Qga2luZHM7 CisgIGludDMyX3QgZGV2X251bTsKK307CisKKyNpZiAoX19TSVpFT0ZfU0hP UlRfXyAhPSAyIFwKKyAgICAgfHwgX19TSVpFT0ZfU0laRV9UX18gIT0gOCBc CisgICAgIHx8IF9fU0laRU9GX1BPSU5URVJfXyAhPSA4KQorI2Vycm9yICJE YXRhLXR5cGUgY29udmVyc2lvbiByZXF1aXJlZCBmb3IgcmV2X29mZmxvYWQi CisjZW5kaWYKKworI2VuZGlmICAvKiBMSUJHT01QX05WUFRYX0ggKi8KKwpk aWZmIC0tZ2l0IGEvbGliZ29tcC9jb25maWcvbnZwdHgvdGFyZ2V0LmMgYi9s aWJnb21wL2NvbmZpZy9udnB0eC90YXJnZXQuYwppbmRleCAxMTEwOGQyLi42 NDcwYWU4IDEwMDY0NAotLS0gYS9saWJnb21wL2NvbmZpZy9udnB0eC90YXJn ZXQuYworKysgYi9saWJnb21wL2NvbmZpZy9udnB0eC90YXJnZXQuYwpAQCAt MjQsOSArMjQsMTIgQEAKICAgIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4gICovCiAKICNpbmNsdWRlICJsaWJnb21wLmgiCisjaW5jbHVkZSAi bGliZ29tcC1udnB0eC5oIiAgLyogRm9yIHN0cnVjdCByZXZfb2ZmbG9hZCAr IEdPTVBfUkVWX09GRkxPQURfVkFSLiAqLwogI2luY2x1ZGUgPGxpbWl0cy5o PgogCiBleHRlcm4gaW50IF9fZ29tcF90ZWFtX251bSBfX2F0dHJpYnV0ZV9f KChzaGFyZWQpKTsKK2V4dGVybiB2b2xhdGlsZSBzdHJ1Y3QgZ29tcF9vZmZs b2FkX2ljdnMgR09NUF9BRERJVElPTkFMX0lDVlM7Cit2b2xhdGlsZSBzdHJ1 Y3QgcmV2X29mZmxvYWQgKkdPTVBfUkVWX09GRkxPQURfVkFSOwogCiBib29s CiBHT01QX3RlYW1zNCAodW5zaWduZWQgaW50IG51bV90ZWFtc19sb3dlciwg dW5zaWduZWQgaW50IG51bV90ZWFtc191cHBlciwKQEAgLTg4LDE2ICs5MSw2 MCBAQCBHT01QX3RhcmdldF9leHQgKGludCBkZXZpY2UsIHZvaWQgKCpmbikg KHZvaWQgKiksIHNpemVfdCBtYXBudW0sCiAJCSB2b2lkICoqaG9zdGFkZHJz LCBzaXplX3QgKnNpemVzLCB1bnNpZ25lZCBzaG9ydCAqa2luZHMsCiAJCSB1 bnNpZ25lZCBpbnQgZmxhZ3MsIHZvaWQgKipkZXBlbmQsIHZvaWQgKiphcmdz KQogewotICAodm9pZCkgZGV2aWNlOwotICAodm9pZCkgZm47Ci0gICh2b2lk KSBtYXBudW07Ci0gICh2b2lkKSBob3N0YWRkcnM7Ci0gICh2b2lkKSBzaXpl czsKLSAgKHZvaWQpIGtpbmRzOworICBzdGF0aWMgaW50IGxvY2sgPSAwOyAg LyogPT0gZ29tcF9tdXRleF90IGxvY2s7IGdvbXBfbXV0ZXhfaW5pdCAoJmxv Y2spOyAqLwogICAodm9pZCkgZmxhZ3M7CiAgICh2b2lkKSBkZXBlbmQ7CiAg ICh2b2lkKSBhcmdzOwotICBfX2J1aWx0aW5fdW5yZWFjaGFibGUgKCk7CisK KyAgaWYgKGRldmljZSAhPSBHT01QX0RFVklDRV9IT1NUX0ZBTExCQUNLCisg ICAgICB8fCBmbiA9PSBOVUxMCisgICAgICB8fCBHT01QX1JFVl9PRkZMT0FE X1ZBUiA9PSBOVUxMKQorICAgIHJldHVybjsKKworICBnb21wX211dGV4X2xv Y2sgKCZsb2NrKTsKKworICBHT01QX1JFVl9PRkZMT0FEX1ZBUi0+bWFwbnVt ID0gbWFwbnVtOworICBHT01QX1JFVl9PRkZMT0FEX1ZBUi0+YWRkcnMgPSAo dWludDY0X3QpIGhvc3RhZGRyczsKKyAgR09NUF9SRVZfT0ZGTE9BRF9WQVIt PnNpemVzID0gKHVpbnQ2NF90KSBzaXplczsKKyAgR09NUF9SRVZfT0ZGTE9B RF9WQVItPmtpbmRzID0gKHVpbnQ2NF90KSBraW5kczsKKyAgR09NUF9SRVZf T0ZGTE9BRF9WQVItPmRldl9udW0gPSBHT01QX0FERElUSU9OQUxfSUNWUy5k ZXZpY2VfbnVtOworCisgIC8qICdmbicgbXVzdCBiZSBsYXN0LiAgKi8KKyNp ZiBfX1BUWF9TTV9fID49IDcwMAorICB1aW50NjRfdCBhZGRyX3N0cnVjdF9m biA9ICh1aW50NjRfdCkgJkdPTVBfUkVWX09GRkxPQURfVkFSLT5mbjsKKyAg YXNtIHZvbGF0aWxlICgic3QuZ2xvYmFsLnJlbGVhc2Uuc3lzLnU2NCBbJTBd LCAlMTsiCisJCTogOiAiciIoYWRkcl9zdHJ1Y3RfZm4pLCAiciIgKGZuKSA6 ICJtZW1vcnkiKTsKKyNlbHNlCisvKiBUaGUgZm9sbG93aW5nIGhhcyBiZWVu IGVmZmVjdGl2ZWx5IGRpc2FibGVkIHZpYSBta29mZmxvYWQgYXMgaXQgaXMg dW5jbGVhcgorICAgd2hldGhlciB0aGVyZSBpcyB0aGUgcmVxdWlyZWQgY29u c2lzdGVuY3kgYmV0d2VlbiBob3N0IGFuZCBkZXZpY2UuCisgICBTZWUgaHR0 cHM6Ly9nY2MuZ251Lm9yZy9waXBlcm1haWwvZ2NjLXBhdGNoZXMvMjAyMi1P Y3RvYmVyLzYwMjcxNS5odG1sCisgICBOb3RlOiBVc2luZyBhdG9taWMgd2l0 aCBzY29wZSA9IC5zeXMgaXMgYWxyZWFkeSBzdXBwb3J0ZWQgc2luY2UgPj0g NjAwLgorICAgVGhlIGdlbmVyYXRlZCBjb2RlIGlzOgorICAgICBAICVyNjkg bWVtYmFyLnN5czsKKyAgICAgQCAlcjY5IGF0b20uZXhjaC5iNjQgXyxbJXIy N10sJXI0MTsgKi8KKyAgX19hdG9taWNfc3RvcmVfbiAoJkdPTVBfUkVWX09G RkxPQURfVkFSLT5mbiwgZm4sIF9fQVRPTUlDX1JFTEVBU0UpOworI2VuZGlm CisKKyAgLyogUHJvY2Vzc2VkIG9uIHRoZSBob3N0IC0gd2hlbiBkb25lLCBm biBpcyBzZXQgdG8gTlVMTC4gICovCisjaWYgX19QVFhfU01fXyA+PSA3MDAK KyAgdWludDY0X3QgZm4yOworICBkbworICAgIHsKKyAgICAgIGFzbSB2b2xh dGlsZSAoImxkLmFjcXVpcmUuc3lzLmdsb2JhbC51NjQgJTAsIFslMV07Igor CQkgICAgOiAiPXIiIChmbjIpIDogInIiIChhZGRyX3N0cnVjdF9mbikgOiAi bWVtb3J5Iik7CisgICAgfQorICB3aGlsZSAoZm4yICE9IDApOworI2Vsc2UK Ky8qIFNlZSByZW1hcmsgYWJvdmUuIFRoZSBnZW5lcmF0ZWQgbWVtb3J5LWFj Y2VzcyBjb2RlIGlzCisgICAgIGxkLmdsb2JhbC51NjQgJXI2NCxbX19nb21w X3Jldl9vZmZsb2FkX3Zhcl07CisgICAgIGxkLnU2NCAlcjM2LFslcjY0XTsK KyAgICAgbWVtYmFyLnN5czsgICovCisgIF9fc3luY19zeW5jaHJvbml6ZSAo KTsgIC8qIG1lbWJhci5zeXMgKi8KKyAgd2hpbGUgKF9fYXRvbWljX2xvYWRf biAoJkdPTVBfUkVWX09GRkxPQURfVkFSLT5mbiwgX19BVE9NSUNfQUNRVUlS RSkgIT0gMCkKKyAgICA7ICAvKiBzcGluICAqLworI2VuZGlmCisKKyAgZ29t cF9tdXRleF91bmxvY2sgKCZsb2NrKTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0 IGEvbGliZ29tcC9saWJnb21wLXBsdWdpbi5jIGIvbGliZ29tcC9saWJnb21w LXBsdWdpbi5jCmluZGV4IDlkNGNjNjIuLjMxNmRlNzQgMTAwNjQ0Ci0tLSBh L2xpYmdvbXAvbGliZ29tcC1wbHVnaW4uYworKysgYi9saWJnb21wL2xpYmdv bXAtcGx1Z2luLmMKQEAgLTc4LDMgKzc4LDE1IEBAIEdPTVBfUExVR0lOX2Zh dGFsIChjb25zdCBjaGFyICptc2csIC4uLikKICAgZ29tcF92ZmF0YWwgKG1z ZywgYXApOwogICB2YV9lbmQgKGFwKTsKIH0KKwordm9pZAorR09NUF9QTFVH SU5fdGFyZ2V0X3JldiAodWludDY0X3QgZm5fcHRyLCB1aW50NjRfdCBtYXBu dW0sIHVpbnQ2NF90IGRldmFkZHJzX3B0ciwKKwkJCXVpbnQ2NF90IHNpemVz X3B0ciwgdWludDY0X3Qga2luZHNfcHRyLCBpbnQgZGV2X251bSwKKwkJCXZv aWQgKCpkZXZfdG9faG9zdF9jcHkpICh2b2lkICosIGNvbnN0IHZvaWQgKiwg c2l6ZV90LAorCQkJCQkJIHZvaWQgKiksCisJCQl2b2lkICgqaG9zdF90b19k ZXZfY3B5KSAodm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCwKKwkJCQkJ CSB2b2lkICopLCB2b2lkICp0b2tlbikKK3sKKyAgZ29tcF90YXJnZXRfcmV2 IChmbl9wdHIsIG1hcG51bSwgZGV2YWRkcnNfcHRyLCBzaXplc19wdHIsIGtp bmRzX3B0ciwgZGV2X251bSwKKwkJICAgZGV2X3RvX2hvc3RfY3B5LCBob3N0 X3RvX2Rldl9jcHksIHRva2VuKTsKK30KZGlmZiAtLWdpdCBhL2xpYmdvbXAv bGliZ29tcC1wbHVnaW4uaCBiL2xpYmdvbXAvbGliZ29tcC1wbHVnaW4uaApp bmRleCA2YWI1YWM2Li44NzVmOTY3IDEwMDY0NAotLS0gYS9saWJnb21wL2xp YmdvbXAtcGx1Z2luLmgKKysrIGIvbGliZ29tcC9saWJnb21wLXBsdWdpbi5o CkBAIC0xMjEsNiArMTIxLDEzIEBAIGV4dGVybiB2b2lkIEdPTVBfUExVR0lO X2Vycm9yIChjb25zdCBjaGFyICosIC4uLikKIGV4dGVybiB2b2lkIEdPTVBf UExVR0lOX2ZhdGFsIChjb25zdCBjaGFyICosIC4uLikKIAlfX2F0dHJpYnV0 ZV9fICgobm9yZXR1cm4sIGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpOwogCitl eHRlcm4gdm9pZCBHT01QX1BMVUdJTl90YXJnZXRfcmV2ICh1aW50NjRfdCwg dWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCwKKwkJCQkgICAgdWludDY0 X3QsIGludCwKKwkJCQkgICAgdm9pZCAoKikgKHZvaWQgKiwgY29uc3Qgdm9p ZCAqLCBzaXplX3QsCisJCQkJCSAgICAgIHZvaWQgKiksCisJCQkJICAgIHZv aWQgKCopICh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90LAorCQkJCQkg ICAgICB2b2lkICopLCB2b2lkICopOworCiAvKiBQcm90b3R5cGVzIGZvciBm dW5jdGlvbnMgaW1wbGVtZW50ZWQgYnkgbGliZ29tcCBwbHVnaW5zLiAgKi8K IGV4dGVybiBjb25zdCBjaGFyICpHT01QX09GRkxPQURfZ2V0X25hbWUgKHZv aWQpOwogZXh0ZXJuIHVuc2lnbmVkIGludCBHT01QX09GRkxPQURfZ2V0X2Nh cHMgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvbGliZ29tcC9saWJnb21wLmggYi9s aWJnb21wL2xpYmdvbXAuaAppbmRleCA3NTE5Mjc0Li41ODAzNjgzIDEwMDY0 NAotLS0gYS9saWJnb21wL2xpYmdvbXAuaAorKysgYi9saWJnb21wL2xpYmdv bXAuaApAQCAtMTEyOCw2ICsxMTI4LDExIEBAIGV4dGVybiBpbnQgZ29tcF9w YXVzZV9ob3N0ICh2b2lkKTsKIGV4dGVybiB2b2lkIGdvbXBfaW5pdF90YXJn ZXRzX29uY2UgKHZvaWQpOwogZXh0ZXJuIGludCBnb21wX2dldF9udW1fZGV2 aWNlcyAodm9pZCk7CiBleHRlcm4gYm9vbCBnb21wX3RhcmdldF90YXNrX2Zu ICh2b2lkICopOworZXh0ZXJuIHZvaWQgZ29tcF90YXJnZXRfcmV2ICh1aW50 NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3Qs CisJCQkgICAgIGludCwKKwkJCSAgICAgdm9pZCAoKikgKHZvaWQgKiwgY29u c3Qgdm9pZCAqLCBzaXplX3QsIHZvaWQgKiksCisJCQkgICAgIHZvaWQgKCop ICh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCB2b2lkICopLAorCQkJ ICAgICB2b2lkICopOwogCiAvKiBTcGxheSB0cmVlIGRlZmluaXRpb25zLiAg Ki8KIHR5cGVkZWYgc3RydWN0IHNwbGF5X3RyZWVfbm9kZV9zICpzcGxheV90 cmVlX25vZGU7CmRpZmYgLS1naXQgYS9saWJnb21wL2xpYmdvbXAubWFwIGIv bGliZ29tcC9saWJnb21wLm1hcAppbmRleCA0NmQ1ZjEwLi4xMmY3NmY3IDEw MDY0NAotLS0gYS9saWJnb21wL2xpYmdvbXAubWFwCisrKyBiL2xpYmdvbXAv bGliZ29tcC5tYXAKQEAgLTYyMiwzICs2MjIsOCBAQCBHT01QX1BMVUdJTl8x LjMgewogCUdPTVBfUExVR0lOX2dvYWNjX3Byb2ZpbGluZ19kaXNwYXRjaDsK IAlHT01QX1BMVUdJTl9nb2FjY190aHJlYWQ7CiB9IEdPTVBfUExVR0lOXzEu MjsKKworR09NUF9QTFVHSU5fMS40IHsKKyAgZ2xvYmFsOgorCUdPTVBfUExV R0lOX3RhcmdldF9yZXY7Cit9IEdPTVBfUExVR0lOXzEuMzsKZGlmZiAtLWdp dCBhL2xpYmdvbXAvcGx1Z2luL2N1ZGEtbGliLmRlZiBiL2xpYmdvbXAvcGx1 Z2luL2N1ZGEtbGliLmRlZgppbmRleCBjZDkxYjM5Li5kZmY0MmQ2IDEwMDY0 NAotLS0gYS9saWJnb21wL3BsdWdpbi9jdWRhLWxpYi5kZWYKKysrIGIvbGli Z29tcC9wbHVnaW4vY3VkYS1saWIuZGVmCkBAIC0yOSw2ICsyOSw3IEBAIENV REFfT05FX0NBTExfTUFZQkVfTlVMTCAoY3VMaW5rQ3JlYXRlX3YyKQogQ1VE QV9PTkVfQ0FMTCAoY3VMaW5rRGVzdHJveSkKIENVREFfT05FX0NBTEwgKGN1 TWVtQWxsb2MpCiBDVURBX09ORV9DQUxMIChjdU1lbUFsbG9jSG9zdCkKK0NV REFfT05FX0NBTEwgKGN1TWVtSG9zdEFsbG9jKQogQ1VEQV9PTkVfQ0FMTCAo Y3VNZW1jcHkpCiBDVURBX09ORV9DQUxMIChjdU1lbWNweUR0b0RBc3luYykK IENVREFfT05FX0NBTEwgKGN1TWVtY3B5RHRvSCkKZGlmZiAtLWdpdCBhL2xp YmdvbXAvcGx1Z2luL3BsdWdpbi1udnB0eC5jIGIvbGliZ29tcC9wbHVnaW4v cGx1Z2luLW52cHR4LmMKaW5kZXggYmE2YjIyOS4uZGUyNDM5OCAxMDA2NDQK LS0tIGEvbGliZ29tcC9wbHVnaW4vcGx1Z2luLW52cHR4LmMKKysrIGIvbGli Z29tcC9wbHVnaW4vcGx1Z2luLW52cHR4LmMKQEAgLTQwLDYgKzQwLDkgQEAK ICNpbmNsdWRlICJnb21wLWNvbnN0YW50cy5oIgogI2luY2x1ZGUgIm9hY2Mt aW50LmgiCiAKKy8qIEZvciBzdHJ1Y3QgcmV2X29mZmxvYWQgKyBHT01QX1JF Vl9PRkZMT0FEX1ZBUi4gKi8KKyNpbmNsdWRlICJjb25maWcvbnZwdHgvbGli Z29tcC1udnB0eC5oIgorCiAjaW5jbHVkZSA8cHRocmVhZC5oPgogI2lmbmRl ZiBQTFVHSU5fTlZQVFhfSU5DTFVERV9TWVNURU1fQ1VEQV9ICiAjIGluY2x1 ZGUgImN1ZGEvY3VkYS5oIgpAQCAtMzI5LDYgKzMzMiw3IEBAIHN0cnVjdCBw dHhfZGV2aWNlCiAgICAgICBwdGhyZWFkX211dGV4X3QgbG9jazsKICAgICB9 IG9tcF9zdGFja3M7CiAKKyAgc3RydWN0IHJldl9vZmZsb2FkICpyZXZfZGF0 YTsKICAgc3RydWN0IHB0eF9kZXZpY2UgKm5leHQ7CiB9OwogCkBAIC00MjMs NyArNDI3LDcgQEAgbnZwdHhfb3Blbl9kZXZpY2UgKGludCBuKQogICBzdHJ1 Y3QgcHR4X2RldmljZSAqcHR4X2RldjsKICAgQ1VkZXZpY2UgZGV2LCBjdHhf ZGV2OwogICBDVXJlc3VsdCByOwotICBpbnQgYXN5bmNfZW5naW5lcywgcGk7 CisgIGludCBwaTsKIAogICBDVURBX0NBTExfRVJFVCAoTlVMTCwgY3VEZXZp Y2VHZXQsICZkZXYsIG4pOwogCkBAIC01MTksMTAgKzUyMywyMCBAQCBudnB0 eF9vcGVuX2RldmljZSAoaW50IG4pCiAJCSAgQ1VfREVWSUNFX0FUVFJJQlVU RV9NQVhfVEhSRUFEU19QRVJfTVVMVElQUk9DRVNTT1IsIGRldik7CiAgIHB0 eF9kZXYtPm1heF90aHJlYWRzX3Blcl9tdWx0aXByb2Nlc3NvciA9IHBpOwog CisjaWYgMAorICBpbnQgYXN5bmNfZW5naW5lczsKICAgciA9IENVREFfQ0FM TF9OT0NIRUNLIChjdURldmljZUdldEF0dHJpYnV0ZSwgJmFzeW5jX2VuZ2lu ZXMsCiAJCQkgQ1VfREVWSUNFX0FUVFJJQlVURV9BU1lOQ19FTkdJTkVfQ09V TlQsIGRldik7CiAgIGlmIChyICE9IENVREFfU1VDQ0VTUykKICAgICBhc3lu Y19lbmdpbmVzID0gMTsKKyNlbmRpZgorCisgIC8qIFJlcXVpcmVkIGJlbG93 IGZvciByZXZlcnNlIG9mZmxvYWQgYXMgaW1wbGVtZW50ZWQsIGJ1dCB3aXRo IGNvbXB1dGUKKyAgICAgY2FwYWJpbGl0eSA+PSAyLjAgYW5kIDY0Yml0IGRl dmljZSBwcm9jZXNzZXMsIHRoaXMgc2hvdWxkIGJlIHVuaXZlcnNhbGx5IGJl CisgICAgIHRoZSBjYXNlOyBoZW5jZSwgYW4gYXNzZXJ0LiAgKi8KKyAgciA9 IENVREFfQ0FMTF9OT0NIRUNLIChjdURldmljZUdldEF0dHJpYnV0ZSwgJnBp LAorCQkJIENVX0RFVklDRV9BVFRSSUJVVEVfVU5JRklFRF9BRERSRVNTSU5H LCBkZXYpOworICBhc3NlcnQgKHIgPT0gQ1VEQV9TVUNDRVNTICYmIHBpKTsK IAogICBmb3IgKGludCBpID0gMDsgaSAhPSBHT01QX0RJTV9NQVg7IGkrKykK ICAgICBwdHhfZGV2LT5kZWZhdWx0X2RpbXNbaV0gPSAwOwpAQCAtMTE3OSw4 ICsxMTkzLDEwIEBAIEdPTVBfT0ZGTE9BRF9nZXRfbnVtX2RldmljZXMgKHVu c2lnbmVkIGludCBvbXBfcmVxdWlyZXNfbWFzaykKIHsKICAgaW50IG51bV9k ZXZpY2VzID0gbnZwdHhfZ2V0X251bV9kZXZpY2VzICgpOwogICAvKiBSZXR1 cm4gLTEgaWYgbm8gb21wX3JlcXVpcmVzX21hc2sgY2Fubm90IGJlIGZ1bGZp bGxlZCBidXQKLSAgICAgZGV2aWNlcyB3ZXJlIHByZXNlbnQuICAqLwotICBp ZiAobnVtX2RldmljZXMgPiAwICYmIG9tcF9yZXF1aXJlc19tYXNrICE9IDAp CisgICAgIGRldmljZXMgd2VyZSBwcmVzZW50LiBVbmlmaWVkLXNoYXJlZCBh ZGRyZXNzOiBzZWUgY29tbWVudCBpbgorICAgICBudnB0eF9vcGVuX2Rldmlj ZSBmb3IgQ1VfREVWSUNFX0FUVFJJQlVURV9VTklGSUVEX0FERFJFU1NJTkcu ICAqLworICBpZiAobnVtX2RldmljZXMgPiAwCisgICAgICAmJiAob21wX3Jl cXVpcmVzX21hc2sgJiB+R09NUF9SRVFVSVJFU19VTklGSUVEX0FERFJFU1Mp ICE9IDApCiAgICAgcmV0dXJuIC0xOwogICByZXR1cm4gbnVtX2RldmljZXM7 CiB9CkBAIC0xMzgwLDcgKzEzOTYsNyBAQCBHT01QX09GRkxPQURfbG9hZF9p bWFnZSAoaW50IG9yZCwgdW5zaWduZWQgdmVyc2lvbiwgY29uc3Qgdm9pZCAq dGFyZ2V0X2RhdGEsCiAgIGVsc2UgaWYgKHJldl9mbl90YWJsZSkKICAgICB7 CiAgICAgICBDVWRldmljZXB0ciB2YXI7Ci0gICAgICBzaXplX3QgYnl0ZXM7 CisgICAgICBzaXplX3QgYnl0ZXMsIGk7CiAgICAgICByID0gQ1VEQV9DQUxM X05PQ0hFQ0sgKGN1TW9kdWxlR2V0R2xvYmFsLCAmdmFyLCAmYnl0ZXMsIG1v ZHVsZSwKIAkJCSAgICAgIiRvZmZsb2FkX2Z1bmNfdGFibGUiKTsKICAgICAg IGlmIChyICE9IENVREFfU1VDQ0VTUykKQEAgLTEzOTAsNiArMTQwNiwzNyBA QCBHT01QX09GRkxPQURfbG9hZF9pbWFnZSAoaW50IG9yZCwgdW5zaWduZWQg dmVyc2lvbiwgY29uc3Qgdm9pZCAqdGFyZ2V0X2RhdGEsCiAgICAgICByID0g Q1VEQV9DQUxMX05PQ0hFQ0sgKGN1TWVtY3B5RHRvSCwgKnJldl9mbl90YWJs ZSwgdmFyLCBieXRlcyk7CiAgICAgICBpZiAociAhPSBDVURBX1NVQ0NFU1Mp CiAJR09NUF9QTFVHSU5fZmF0YWwgKCJjdU1lbWNweUR0b0ggZXJyb3I6ICVz IiwgY3VkYV9lcnJvciAocikpOworICAgICAgLyogRnJlZSBpZiBvbmx5IE5V TEwgZW50cmllcy4gICovCisgICAgICBmb3IgKGkgPSAwOyBpIDwgZm5fZW50 cmllczsgKytpKQorCWlmICgoKnJldl9mbl90YWJsZSlbaV0gIT0gMCkKKwkg IGJyZWFrOworICAgICAgaWYgKGkgPT0gZm5fZW50cmllcykKKwl7CisJICBm cmVlICgqcmV2X2ZuX3RhYmxlKTsKKwkgICpyZXZfZm5fdGFibGUgPSBOVUxM OworCX0KKyAgICB9CisKKyAgaWYgKHJldl9mbl90YWJsZSAmJiAqcmV2X2Zu X3RhYmxlICYmIGRldi0+cmV2X2RhdGEgPT0gTlVMTCkKKyAgICB7CisgICAg ICAvKiBjdU1lbUhvc3RBbGxvYyBtZW1vcnkgaXMgYWNjZXNzaWJsZSBvbiB0 aGUgZGV2aWNlLCBpZiB1bmlmaWVkLXNoYXJlZAorCSBhZGRyZXNzIGlzIHN1 cHBvcnRlZDsgdGhpcyBpcyBhc3N1bWVkIC0gc2VlIGNvbW1lbnQgaW4KKwkg bnZwdHhfb3Blbl9kZXZpY2UgZm9yIENVX0RFVklDRV9BVFRSSUJVVEVfVU5J RklFRF9BRERSRVNTSU5HLiAgICovCisgICAgICBDVURBX0NBTExfQVNTRVJU IChjdU1lbUhvc3RBbGxvYywgKHZvaWQgKiopICZkZXYtPnJldl9kYXRhLAor CQkJc2l6ZW9mICgqZGV2LT5yZXZfZGF0YSksIENVX01FTUhPU1RBTExPQ19E RVZJQ0VNQVApOworICAgICAgQ1VkZXZpY2VwdHIgZHAgPSAoQ1VkZXZpY2Vw dHIpIGRldi0+cmV2X2RhdGE7CisgICAgICBDVWRldmljZXB0ciBkZXZpY2Vf cmV2X29mZmxvYWRfdmFyOworICAgICAgc2l6ZV90IGRldmljZV9yZXZfb2Zm bG9hZF9zaXplOworICAgICAgQ1VyZXN1bHQgciA9IENVREFfQ0FMTF9OT0NI RUNLIChjdU1vZHVsZUdldEdsb2JhbCwKKwkJCQkgICAgICAmZGV2aWNlX3Jl dl9vZmZsb2FkX3ZhciwKKwkJCQkgICAgICAmZGV2aWNlX3Jldl9vZmZsb2Fk X3NpemUsIG1vZHVsZSwKKwkJCQkgICAgICBYU1RSSU5HIChHT01QX1JFVl9P RkZMT0FEX1ZBUikpOworICAgICAgaWYgKHIgIT0gQ1VEQV9TVUNDRVNTKQor CUdPTVBfUExVR0lOX2ZhdGFsICgiY3VNb2R1bGVHZXRHbG9iYWwgZXJyb3Ig LSBHT01QX1JFVl9PRkZMT0FEX1ZBUjogJXMiLCBjdWRhX2Vycm9yIChyKSk7 CisgICAgICByID0gQ1VEQV9DQUxMX05PQ0hFQ0sgKGN1TWVtY3B5SHRvRCwg ZGV2aWNlX3Jldl9vZmZsb2FkX3ZhciwgJmRwLAorCQkJICAgICBzaXplb2Yg KGRwKSk7CisgICAgICBpZiAociAhPSBDVURBX1NVQ0NFU1MpCisJR09NUF9Q TFVHSU5fZmF0YWwgKCJjdU1lbWNweUh0b0QgZXJyb3I6ICVzIiwgY3VkYV9l cnJvciAocikpOwogICAgIH0KIAogICBudnB0eF9zZXRfY2xvY2t0aWNrICht b2R1bGUsIGRldik7CkBAIC0yMDAxLDYgKzIwNDgsMjMgQEAgbnZwdHhfc3Rh Y2tzX2FjcXVpcmUgKHN0cnVjdCBwdHhfZGV2aWNlICpwdHhfZGV2LCBzaXpl X3Qgc2l6ZSwgaW50IG51bSkKICAgcmV0dXJuICh2b2lkICopIHB0eF9kZXYt Pm9tcF9zdGFja3MucHRyOwogfQogCisKK3ZvaWQKK3Jldl9vZmZfZGV2X3Rv X2hvc3RfY3B5ICh2b2lkICpkZXN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVf dCBzaXplLAorCQkJIENVc3RyZWFtIHN0cmVhbSkKK3sKKyAgQ1VEQV9DQUxM X0FTU0VSVCAoY3VNZW1jcHlEdG9IQXN5bmMsIGRlc3QsIChDVWRldmljZXB0 cikgc3JjLCBzaXplLCBzdHJlYW0pOworICBDVURBX0NBTExfQVNTRVJUIChj dVN0cmVhbVN5bmNocm9uaXplLCBzdHJlYW0pOworfQorCit2b2lkCityZXZf b2ZmX2hvc3RfdG9fZGV2X2NweSAodm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAq c3JjLCBzaXplX3Qgc2l6ZSwKKwkJCSBDVXN0cmVhbSBzdHJlYW0pCit7Cisg IENVREFfQ0FMTF9BU1NFUlQgKGN1TWVtY3B5SHRvREFzeW5jLCAoQ1VkZXZp Y2VwdHIpIGRlc3QsIHNyYywgc2l6ZSwgc3RyZWFtKTsKKyAgQ1VEQV9DQUxM X0FTU0VSVCAoY3VTdHJlYW1TeW5jaHJvbml6ZSwgc3RyZWFtKTsKK30KKwog dm9pZAogR09NUF9PRkZMT0FEX3J1biAoaW50IG9yZCwgdm9pZCAqdGd0X2Zu LCB2b2lkICp0Z3RfdmFycywgdm9pZCAqKmFyZ3MpCiB7CkBAIC0yMDM1LDYg KzIwOTksOCBAQCBHT01QX09GRkxPQURfcnVuIChpbnQgb3JkLCB2b2lkICp0 Z3RfZm4sIHZvaWQgKnRndF92YXJzLCB2b2lkICoqYXJncykKICAgbnZwdHhf YWRqdXN0X2xhdW5jaF9ib3VuZHMgKHRndF9mbiwgcHR4X2RldiwgJnRlYW1z LCAmdGhyZWFkcyk7CiAKICAgc2l6ZV90IHN0YWNrX3NpemUgPSBudnB0eF9z dGFja3Nfc2l6ZSAoKTsKKyAgYm9vbCByZXZlcnNlX29mZmxvYWQgPSBwdHhf ZGV2LT5yZXZfZGF0YSAhPSBOVUxMOworICBDVXN0cmVhbSBjb3B5X3N0cmVh bSA9IE5VTEw7CiAKICAgcHRocmVhZF9tdXRleF9sb2NrICgmcHR4X2Rldi0+ b21wX3N0YWNrcy5sb2NrKTsKICAgdm9pZCAqc3RhY2tzID0gbnZwdHhfc3Rh Y2tzX2FjcXVpcmUgKHB0eF9kZXYsIHN0YWNrX3NpemUsIHRlYW1zICogdGhy ZWFkcyk7CkBAIC0yMDQ4LDEyICsyMTE0LDQxIEBAIEdPTVBfT0ZGTE9BRF9y dW4gKGludCBvcmQsIHZvaWQgKnRndF9mbiwgdm9pZCAqdGd0X3ZhcnMsIHZv aWQgKiphcmdzKQogICBHT01QX1BMVUdJTl9kZWJ1ZyAoMCwgIiAgJXM6IGtl cm5lbCAlczogbGF1bmNoIgogCQkgICAgICIgWyh0ZWFtczogJXUpLCAxLCAx XSBbKGxhbmVzOiAzMiksICh0aHJlYWRzOiAldSksIDFdXG4iLAogCQkgICAg IF9fRlVOQ1RJT05fXywgZm5fbmFtZSwgdGVhbXMsIHRocmVhZHMpOworICBp ZiAocmV2ZXJzZV9vZmZsb2FkKQorICAgIENVREFfQ0FMTF9BU1NFUlQgKGN1 U3RyZWFtQ3JlYXRlLCAmY29weV9zdHJlYW0sIENVX1NUUkVBTV9OT05fQkxP Q0tJTkcpOwogICByID0gQ1VEQV9DQUxMX05PQ0hFQ0sgKGN1TGF1bmNoS2Vy bmVsLCBmdW5jdGlvbiwgdGVhbXMsIDEsIDEsCiAJCQkgMzIsIHRocmVhZHMs IDEsIDAsIE5VTEwsIE5VTEwsIGNvbmZpZyk7CiAgIGlmIChyICE9IENVREFf U1VDQ0VTUykKICAgICBHT01QX1BMVUdJTl9mYXRhbCAoImN1TGF1bmNoS2Vy bmVsIGVycm9yOiAlcyIsIGN1ZGFfZXJyb3IgKHIpKTsKLQotICByID0gQ1VE QV9DQUxMX05PQ0hFQ0sgKGN1Q3R4U3luY2hyb25pemUsICk7CisgIGlmIChy ZXZlcnNlX29mZmxvYWQpCisgICAgd2hpbGUgKHRydWUpCisgICAgICB7CisJ ciA9IENVREFfQ0FMTF9OT0NIRUNLIChjdVN0cmVhbVF1ZXJ5LCBOVUxMKTsK KwlpZiAociA9PSBDVURBX1NVQ0NFU1MpCisJICBicmVhazsKKwlpZiAociA9 PSBDVURBX0VSUk9SX0xBVU5DSF9GQUlMRUQpCisJICBHT01QX1BMVUdJTl9m YXRhbCAoImN1U3RyZWFtUXVlcnkgZXJyb3I6ICVzICVzXG4iLCBjdWRhX2Vy cm9yIChyKSwKKwkJCSAgICAgbWF5YmVfYWJvcnRfbXNnKTsKKwllbHNlIGlm IChyICE9IENVREFfRVJST1JfTk9UX1JFQURZKQorCSAgR09NUF9QTFVHSU5f ZmF0YWwgKCJjdVN0cmVhbVF1ZXJ5IGVycm9yOiAlcyIsIGN1ZGFfZXJyb3Ig KHIpKTsKKworCWlmIChfX2F0b21pY19sb2FkX24gKCZwdHhfZGV2LT5yZXZf ZGF0YS0+Zm4sIF9fQVRPTUlDX0FDUVVJUkUpICE9IDApCisJICB7CisJICAg IHN0cnVjdCByZXZfb2ZmbG9hZCAqcmV2X2RhdGEgPSBwdHhfZGV2LT5yZXZf ZGF0YTsKKwkgICAgR09NUF9QTFVHSU5fdGFyZ2V0X3JldiAocmV2X2RhdGEt PmZuLCByZXZfZGF0YS0+bWFwbnVtLAorCQkJCSAgICByZXZfZGF0YS0+YWRk cnMsIHJldl9kYXRhLT5zaXplcywKKwkJCQkgICAgcmV2X2RhdGEtPmtpbmRz LCByZXZfZGF0YS0+ZGV2X251bSwKKwkJCQkgICAgcmV2X29mZl9kZXZfdG9f aG9zdF9jcHksCisJCQkJICAgIHJldl9vZmZfaG9zdF90b19kZXZfY3B5LCBj b3B5X3N0cmVhbSk7CisJICAgIENVREFfQ0FMTF9BU1NFUlQgKGN1U3RyZWFt U3luY2hyb25pemUsIGNvcHlfc3RyZWFtKTsKKwkgICAgX19hdG9taWNfc3Rv cmVfbiAoJnJldl9kYXRhLT5mbiwgMCwgX19BVE9NSUNfUkVMRUFTRSk7CisJ ICB9CisJdXNsZWVwICgxKTsKKyAgICAgIH0KKyAgZWxzZQorICAgIHIgPSBD VURBX0NBTExfTk9DSEVDSyAoY3VDdHhTeW5jaHJvbml6ZSwgKTsKKyAgaWYg KHJldmVyc2Vfb2ZmbG9hZCkKKyAgICBDVURBX0NBTExfQVNTRVJUIChjdVN0 cmVhbURlc3Ryb3ksIGNvcHlfc3RyZWFtKTsKICAgaWYgKHIgPT0gQ1VEQV9F UlJPUl9MQVVOQ0hfRkFJTEVEKQogICAgIEdPTVBfUExVR0lOX2ZhdGFsICgi Y3VDdHhTeW5jaHJvbml6ZSBlcnJvcjogJXMgJXNcbiIsIGN1ZGFfZXJyb3Ig KHIpLAogCQkgICAgICAgbWF5YmVfYWJvcnRfbXNnKTsKZGlmZiAtLWdpdCBh L2xpYmdvbXAvdGFyZ2V0LmMgYi9saWJnb21wL3RhcmdldC5jCmluZGV4IDU3 NjM0ODMuLjcxYmNiMDUgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvdGFyZ2V0LmMK KysrIGIvbGliZ29tcC90YXJnZXQuYwpAQCAtMjkyNSw2ICsyOTI1LDI1IEBA IEdPTVBfdGFyZ2V0X2V4dCAoaW50IGRldmljZSwgdm9pZCAoKmZuKSAodm9p ZCAqKSwgc2l6ZV90IG1hcG51bSwKICAgICBodGFiX2ZyZWUgKHJlZmNvdW50 X3NldCk7CiB9CiAKKy8qIEhhbmRsZSByZXZlcnNlIG9mZmxvYWQuIFRoaXMg aXMgY2FsbGVkIGJ5IHRoZSBkZXZpY2UgcGx1Z2lucyBmb3IgYQorICAgcmV2 ZXJzZSBvZmZsb2FkOyBpdCBpcyBub3QgY2FsbGVkIGlmIHRoZSBvdXRlciB0 YXJnZXQgcnVucyBvbiB0aGUgaG9zdC4gICovCisKK3ZvaWQKK2dvbXBfdGFy Z2V0X3JldiAodWludDY0X3QgZm5fcHRyIF9fYXR0cmlidXRlX18gKCh1bnVz ZWQpKSwKKwkJIHVpbnQ2NF90IG1hcG51bSBfX2F0dHJpYnV0ZV9fICgodW51 c2VkKSksCisJCSB1aW50NjRfdCBkZXZhZGRyc19wdHIgX19hdHRyaWJ1dGVf XyAoKHVudXNlZCkpLAorCQkgdWludDY0X3Qgc2l6ZXNfcHRyIF9fYXR0cmli dXRlX18gKCh1bnVzZWQpKSwKKwkJIHVpbnQ2NF90IGtpbmRzX3B0ciBfX2F0 dHJpYnV0ZV9fICgodW51c2VkKSksCisJCSBpbnQgZGV2X251bSBfX2F0dHJp YnV0ZV9fICgodW51c2VkKSksCisJCSB2b2lkICgqZGV2X3RvX2hvc3RfY3B5 KSAodm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCwKKwkJCQkJICB2b2lk ICopIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKwkJIHZvaWQgKCpob3N0 X3RvX2Rldl9jcHkpICh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90LAor CQkJCQkgIHZvaWQgKikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorCQkg dm9pZCAqdG9rZW4gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQoreworICBf X2J1aWx0aW5fdW5yZWFjaGFibGUgKCk7Cit9CisKIC8qIEhvc3QgZmFsbGJh Y2sgZm9yIEdPTVBfdGFyZ2V0X2RhdGF7LF9leHR9IHJvdXRpbmVzLiAgKi8K IAogc3RhdGljIHZvaWQK --------------pW9mOrRhVBmZD8SkMhj0045u--