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 C48483858D39 for ; Tue, 27 Sep 2022 09:24:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C48483858D39 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.93,349,1654588800"; d="diff'?scan'208,217";a="86468426" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa1.mentor.iphmx.com with ESMTP; 27 Sep 2022 01:24:01 -0800 IronPort-SDR: 7Dk+JB/yClpr4Jl8kCcEbDCdeAqAlMtXt86/3GKCw4pkRqm6k2SUKKdi5Fkp6axrWGTOf4F7Qr EjjL2LmM7troifT4CM77/Nn+iT+xCEOMPuBl3yYAhmOI8mMjqW07NhGY6Hl3KINnjEHp0Ehfo5 qROOhNnUQhr/32wIUZFVOwNl1sKqD10k6PW2oQ5FxkqoQlBA3mD2cAYJWdidHlFLwojgBK+d7D 3yv+deawq5YUZuGMUJj54Z+0dafrVFH6wKqZqz5YyZcasf4Nx/HhRjmS3Zgk0WmQ7vA9V8QIaS RMU= Content-Type: multipart/mixed; boundary="------------0k4RXpGkDjBE76VBwqZYKHZR" Message-ID: <30e3ed49-0d14-8015-57ef-3d70b1dea69a@codesourcery.com> Date: Tue, 27 Sep 2022 11:23:56 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.0 Subject: Re: [Patch] libgomp/nvptx: Prepare for reverse-offload callback handling Content-Language: en-US To: Alexander Monakov CC: Jakub Jelinek , Tom de Vries , gcc-patches References: <57b3ae5e-8f15-8bea-fa09-39bccbaa2414@codesourcery.com> <3f0fc49f-b07f-bee2-51a8-a5d03f1c33ed@codesourcery.com> From: Tobias Burnus In-Reply-To: X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,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: --------------0k4RXpGkDjBE76VBwqZYKHZR Content-Type: multipart/alternative; boundary="------------bKl3e81HwWTnYV9lxbGrdJ5U" --------------bKl3e81HwWTnYV9lxbGrdJ5U Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: quoted-printable Hi, On 26.09.22 19:45, Alexander Monakov wrote: My main concerns remain not addressed: 1) what I said in the opening paragraphs of my previous email; (i.e. the general disagreement whether the feature itself should be impleme= nted for nvptx or not.) 2) device-issued atomics are not guaranteed to appear atomic to the host unless using atom.sys and translating for CUDA compute capability 6.0+. As you seem to have no other rough review comments, this can now be address= ed :-) 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= ".) Ignoring (1), does the overall patch and this part otherwise look okay(ish)? Caveat: The .sys scope works well with >=3D sm_60 but not does not handle o= lder versions. For those, the __atomic_{load/store}_n are used. I do not see a good solution beyond documentation. In the way it is used (one thread only setting only on/off flag, no atomic increments etc.), I th= ink it is unlikely to cause races without .sys scope, but as always is difficult to r= ule out some special unfortunate case where it does. At lease we do have now some documentation (in general) - which still needs to be expanded and improved. For this feature, I did not add any wording in this patch: until the feature is actually enabled, it would be more confusing than helpful. On Mon, 26 Sep 2022, Tobias Burnus wrote: In theory, compiling with "-m32 -foffload-options=3D-m64" or "-m32 -foffload-options=3D-m32" or "-m64 -foffload-options=3D-m32" is supported. I have no words. @node Nvidia PTX Options ... @item -m64 @opindex m64 Ignored, but preserved for backward compatibility. Only 64-bit ABI is supported. And in config/nvptx/mkoffload.cc you also still find leftovers from -m32. 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 --------------bKl3e81HwWTnYV9lxbGrdJ5U-- --------------0k4RXpGkDjBE76VBwqZYKHZR Content-Type: text/x-patch; charset="UTF-8"; name="rev-offload-run-nvptx-v4.diff" Content-Disposition: attachment; filename="rev-offload-run-nvptx-v4.diff" Content-Transfer-Encoding: base64 bGliZ29tcC9udnB0eDogUHJlcGFyZSBmb3IgcmV2ZXJzZS1vZmZsb2FkIGNh bGxiYWNrIGhhbmRsaW5nCgpUaGlzIHBhdGNoIGFkZHMgYSBzdHViICdnb21w X3RhcmdldF9yZXYnIGluIHRoZSBob3N0J3MgdGFyZ2V0LmMsIHdoaWNoIHdp bGwKbGF0ZXIgaGFuZGxlIHRoZSByZXZlcnNlIG9mZmxvYWQuCkZvciBudnB0 eCwgaXQgYWRkcyBzdXBwb3J0IGZvciBmb3J3YXJkaW5nIHRoZSBvZmZsb2Fk IGdvbXBfdGFyZ2V0X2V4dCBjYWxsCnRvIHRoZSBob3N0IGJ5IHNldHRpbmcg dmFsdWVzIGluIGEgc3RydWN0IG9uIHRoZSBkZXZpY2UgYW5kIHF1ZXJ5aW5n IGl0IG9uCnRoZSBob3N0IC0gaW52b2tpbmcgZ29tcF90YXJnZXRfcmV2IG9u IHRoZSByZXN1bHQuCgppbmNsdWRlL0NoYW5nZUxvZzoKCgkqIGN1ZGEvY3Vk YS5oIChlbnVtIENVZGV2aWNlX2F0dHJpYnV0ZSk6IEFkZAoJQ1VfREVWSUNF X0FUVFJJQlVURV9VTklGSUVEX0FERFJFU1NJTkcuCgkoY3VNZW1Ib3N0QWxs b2MpOiBBZGQgcHJvdG90eXBlLgoKbGliZ29tcC9DaGFuZ2VMb2c6CgoJKiBj b25maWcvbnZwdHgvaWN2LWRldmljZS5jIChHT01QX0RFVklDRV9OVU1fVkFS KTogUmVtb3ZlCgknc3RhdGljJyBmb3IgdGhpcyB2YXJpYWJsZS4KCSogY29u ZmlnL252cHR4L2xpYmdvbXAtbnZwdHguaDogTmV3IGZpbGUuCgkqIGNvbmZp Zy9udnB0eC90YXJnZXQuYzogSW5jbHVkZSBpdC4KCShHT01QX0FERElUSU9O QUxfSUNWUyk6IERlY2xhcmUgZXh0ZXJuIHZhci4KCShHT01QX1JFVl9PRkZM T0FEX1ZBUik6IERlY2xhcmUgdmFyLgoJKEdPTVBfdGFyZ2V0X2V4dCk6IEhh bmRsZSByZXZlcnNlIG9mZmxvYWQuCgkqIGxpYmdvbXAtcGx1Z2luLmggKEdP TVBfUExVR0lOX3RhcmdldF9yZXYpOiBOZXcgcHJvdG90eXBlLgoJKiBsaWJn b21wLXBsdWdpbi5jIChHT01QX1BMVUdJTl90YXJnZXRfcmV2KTogTmV3LCBj YWxsIC4uLgoJKiB0YXJnZXQuYyAoZ29tcF90YXJnZXRfcmV2KTogLi4uIHRo aXMgbmV3IHN0dWIgZnVuY3Rpb24uCgkqIGxpYmdvbXAuaCAoZ29tcF90YXJn ZXRfcmV2KTogRGVjbGFyZS4KCSogbGliZ29tcC5tYXAgKEdPTVBfUExVR0lO XzEuNCk6IE5ldzsgYWRkIEdPTVBfUExVR0lOX3RhcmdldF9yZXYuCgkqIHBs dWdpbi9jdWRhLWxpYi5kZWYgKGN1TWVtSG9zdEFsbG9jKTogQWRkLgoJKiBw bHVnaW4vcGx1Z2luLW52cHR4LmM6IEluY2x1ZGUgbGliZ29tcC1udnB0eC5o LgoJKHN0cnVjdCBwdHhfZGV2aWNlKTogQWRkIHJldl9kYXRhIG1lbWJlci4g CgkobnZwdHhfb3Blbl9kZXZpY2UpOiAjaWYgMCB1bnVzZWQgY2hlY2s7IGFk ZAoJdW5pZmllZCBhZGRyZXNzIGFzc2VydCBjaGVjay4KCShHT01QX09GRkxP QURfZ2V0X251bV9kZXZpY2VzKTogQ2xhaW0gdW5pZmllZCBhZGRyZXNzCglz dXBwb3J0LgoJKEdPTVBfT0ZGTE9BRF9sb2FkX2ltYWdlKTogRnJlZSByZXZf Zm5fdGFibGUgaWYgbm8KCW9mZmxvYWQgZnVuY3Rpb25zIGV4aXN0LiBNYWtl IG9mZmxvYWQgdmFyIGF2YWlsYWJsZQoJb24gaG9zdCBhbmQgZGV2aWNlLgoJ KHJldl9vZmZfZGV2X3RvX2hvc3RfY3B5LCByZXZfb2ZmX2hvc3RfdG9fZGV2 X2NweSk6IE5ldy4KCShHT01QX09GRkxPQURfcnVuKTogSGFuZGxlIHJldmVy c2Ugb2ZmbG9hZC4KCiBpbmNsdWRlL2N1ZGEvY3VkYS5oICAgICAgICAgICAg ICAgICAgfCAgIDMgKwogbGliZ29tcC9jb25maWcvbnZwdHgvaWN2LWRldmlj ZS5jICAgIHwgICAyICstCiBsaWJnb21wL2NvbmZpZy9udnB0eC9saWJnb21w LW52cHR4LmggfCAgNTIgKysrKysrKysrKysrKysrKwogbGliZ29tcC9jb25m aWcvbnZwdHgvdGFyZ2V0LmMgICAgICAgIHwgIDQ4ICsrKysrKysrKysrKy0t LQogbGliZ29tcC9saWJnb21wLXBsdWdpbi5jICAgICAgICAgICAgIHwgIDEy ICsrKysKIGxpYmdvbXAvbGliZ29tcC1wbHVnaW4uaCAgICAgICAgICAgICB8 ICAgNyArKysKIGxpYmdvbXAvbGliZ29tcC5oICAgICAgICAgICAgICAgICAg ICB8ICAgNSArKwogbGliZ29tcC9saWJnb21wLm1hcCAgICAgICAgICAgICAg ICAgIHwgICA1ICsrCiBsaWJnb21wL3BsdWdpbi9jdWRhLWxpYi5kZWYgICAg ICAgICAgfCAgIDEgKwogbGliZ29tcC9wbHVnaW4vcGx1Z2luLW52cHR4LmMg ICAgICAgIHwgMTExICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tCiBsaWJnb21wL3RhcmdldC5jICAgICAgICAgICAgICAgICAgICAgfCAg MTkgKysrKysrCiAxMSBmaWxlcyBjaGFuZ2VkLCAyNTEgaW5zZXJ0aW9ucygr KSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jdWRh L2N1ZGEuaCBiL2luY2x1ZGUvY3VkYS9jdWRhLmgKaW5kZXggMzkzOGQwNS4u ZTA4MWYwNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jdWRhL2N1ZGEuaAorKysg Yi9pbmNsdWRlL2N1ZGEvY3VkYS5oCkBAIC03Nyw2ICs3Nyw3IEBAIHR5cGVk ZWYgZW51bSB7CiAgIENVX0RFVklDRV9BVFRSSUJVVEVfQ09OQ1VSUkVOVF9L RVJORUxTID0gMzEsCiAgIENVX0RFVklDRV9BVFRSSUJVVEVfTUFYX1RIUkVB RFNfUEVSX01VTFRJUFJPQ0VTU09SID0gMzksCiAgIENVX0RFVklDRV9BVFRS SUJVVEVfQVNZTkNfRU5HSU5FX0NPVU5UID0gNDAsCisgIENVX0RFVklDRV9B VFRSSUJVVEVfVU5JRklFRF9BRERSRVNTSU5HID0gNDEsCiAgIENVX0RFVklD RV9BVFRSSUJVVEVfTUFYX1JFR0lTVEVSU19QRVJfTVVMVElQUk9DRVNTT1Ig PSA4MgogfSBDVWRldmljZV9hdHRyaWJ1dGU7CiAKQEAgLTExMyw2ICsxMTQs NyBAQCBlbnVtIHsKICNkZWZpbmUgQ1VfTEFVTkNIX1BBUkFNX0VORCAoKHZv aWQgKikgMCkKICNkZWZpbmUgQ1VfTEFVTkNIX1BBUkFNX0JVRkZFUl9QT0lO VEVSICgodm9pZCAqKSAxKQogI2RlZmluZSBDVV9MQVVOQ0hfUEFSQU1fQlVG RkVSX1NJWkUgKCh2b2lkICopIDIpCisjZGVmaW5lIENVX01FTUhPU1RBTExP Q19ERVZJQ0VNQVAgMHgwMlUKIAogZW51bSB7CiAgIENVX1NUUkVBTV9ERUZB VUxUID0gMCwKQEAgLTE2OSw2ICsxNzEsNyBAQCBDVXJlc3VsdCBjdU1lbUdl dEluZm8gKHNpemVfdCAqLCBzaXplX3QgKik7CiBDVXJlc3VsdCBjdU1lbUFs bG9jIChDVWRldmljZXB0ciAqLCBzaXplX3QpOwogI2RlZmluZSBjdU1lbUFs bG9jSG9zdCBjdU1lbUFsbG9jSG9zdF92MgogQ1VyZXN1bHQgY3VNZW1BbGxv Y0hvc3QgKHZvaWQgKiosIHNpemVfdCk7CitDVXJlc3VsdCBjdU1lbUhvc3RB bGxvYyAodm9pZCAqKiwgc2l6ZV90LCB1bnNpZ25lZCBpbnQpOwogQ1VyZXN1 bHQgY3VNZW1jcHkgKENVZGV2aWNlcHRyLCBDVWRldmljZXB0ciwgc2l6ZV90 KTsKICNkZWZpbmUgY3VNZW1jcHlEdG9EQXN5bmMgY3VNZW1jcHlEdG9EQXN5 bmNfdjIKIENVcmVzdWx0IGN1TWVtY3B5RHRvREFzeW5jIChDVWRldmljZXB0 ciwgQ1VkZXZpY2VwdHIsIHNpemVfdCwgQ1VzdHJlYW0pOwpkaWZmIC0tZ2l0 IGEvbGliZ29tcC9jb25maWcvbnZwdHgvaWN2LWRldmljZS5jIGIvbGliZ29t cC9jb25maWcvbnZwdHgvaWN2LWRldmljZS5jCmluZGV4IDZmODY5YmUuLmVl ZjE1MWMgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvY29uZmlnL252cHR4L2ljdi1k ZXZpY2UuYworKysgYi9saWJnb21wL2NvbmZpZy9udnB0eC9pY3YtZGV2aWNl LmMKQEAgLTMwLDcgKzMwLDcgQEAKIAogLyogVGhpcyBpcyBzZXQgdG8gdGhl IElDViB2YWx1ZXMgb2YgY3VycmVudCBHUFUgZHVyaW5nIGRldmljZSBpbml0 aWFsaXphdGlvbiwKICAgIHdoZW4gdGhlIG9mZmxvYWQgaW1hZ2UgY29udGFp bmluZyB0aGlzIGxpYmdvbXAgcG9ydGlvbiBpcyBsb2FkZWQuICAqLwotc3Rh dGljIHZvbGF0aWxlIHN0cnVjdCBnb21wX29mZmxvYWRfaWN2cyBHT01QX0FE RElUSU9OQUxfSUNWUzsKK3ZvbGF0aWxlIHN0cnVjdCBnb21wX29mZmxvYWRf aWN2cyBHT01QX0FERElUSU9OQUxfSUNWUzsKIAogdm9pZAogb21wX3NldF9k ZWZhdWx0X2RldmljZSAoaW50IGRldmljZV9udW0gX19hdHRyaWJ1dGVfXygo dW51c2VkKSkpCmRpZmYgLS1naXQgYS9saWJnb21wL2NvbmZpZy9udnB0eC9s aWJnb21wLW52cHR4LmggYi9saWJnb21wL2NvbmZpZy9udnB0eC9saWJnb21w LW52cHR4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u OWZkMWIyNwotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvY29uZmlnL252 cHR4L2xpYmdvbXAtbnZwdHguaApAQCAtMCwwICsxLDUyIEBACisvKiBDb3B5 cmlnaHQgKEMpIDIwMDUtMjAyMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKyAgIENvbnRyaWJ1dGVkIGJ5IFRvYmlhcyBCdXJudXMgPHRvYmlh c0Bjb2Rlc291cmNlcnkuY29tPi4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQg b2YgdGhlIEdOVSBPZmZsb2FkaW5nIGFuZCBNdWx0aSBQcm9jZXNzaW5nIExp YnJhcnkKKyAgIChsaWJnb21wKS4KKworICAgTGliZ29tcCBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlv dXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIExpYmdv bXAgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCisgICBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTCisgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICAgbW9y ZSBkZXRhaWxzLgorCisgICBVbmRlciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNp b24gMywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwKKyAgIHBlcm1pc3Np b25zIGRlc2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNl cHRpb24sIHZlcnNpb24KKyAgIDMuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisKKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFuZAorICAgYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJy YXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsKKyAgIHNl ZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNw ZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICAgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KKworLyogVGhpcyBmaWxlIGNvbnRhaW5zIGRl ZmluZXMgYW5kIHR5cGUgZGVmaW5pdGlvbnMgc2hhcmVkIGJldHdlZW4gdGhl CisgICBudnB0eCB0YXJnZXQncyBsaWJnb21wLmEgYW5kIHRoZSBwbHVnaW4t bnZwdHguYywgYnV0IHRoYXQgaXMgb25seQorICAgbmVlZGVmIGZvciB0aGlz IHRhcmdldC4gICovCisKKyNpZm5kZWYgTElCR09NUF9OVlBUWF9IIAorI2Rl ZmluZSBMSUJHT01QX05WUFRYX0ggMQorCisjZGVmaW5lIEdPTVBfUkVWX09G RkxPQURfVkFSIF9fZ29tcF9yZXZfb2ZmbG9hZF92YXIKKworc3RydWN0IHJl dl9vZmZsb2FkIHsKKyAgdWludDY0X3QgZm47CisgIHVpbnQ2NF90IG1hcG51 bTsKKyAgdWludDY0X3QgYWRkcnM7CisgIHVpbnQ2NF90IHNpemVzOworICB1 aW50NjRfdCBraW5kczsKKyAgaW50MzJfdCBkZXZfbnVtOworICB1aW50MzJf dCBsb2NrOworfTsKKworI2lmIChfX1NJWkVPRl9TSE9SVF9fICE9IDIgXAor ICAgICB8fCBfX1NJWkVPRl9TSVpFX1RfXyAhPSA4IFwKKyAgICAgfHwgX19T SVpFT0ZfUE9JTlRFUl9fICE9IDgpCisjZXJyb3IgIkRhdGEtdHlwZSBjb252 ZXJzaW9uIHJlcXVpcmVkIGZvciByZXZfb2ZmbG9hZCIKKyNlbmRpZgorCisj ZW5kaWYgIC8qIExJQkdPTVBfTlZQVFhfSCAqLworCmRpZmYgLS1naXQgYS9s aWJnb21wL2NvbmZpZy9udnB0eC90YXJnZXQuYyBiL2xpYmdvbXAvY29uZmln L252cHR4L3RhcmdldC5jCmluZGV4IDExMTA4ZDIuLjBjN2JiYTkgMTAwNjQ0 Ci0tLSBhL2xpYmdvbXAvY29uZmlnL252cHR4L3RhcmdldC5jCisrKyBiL2xp YmdvbXAvY29uZmlnL252cHR4L3RhcmdldC5jCkBAIC0yNCw5ICsyNCwxMiBA QAogICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAog I2luY2x1ZGUgImxpYmdvbXAuaCIKKyNpbmNsdWRlICJsaWJnb21wLW52cHR4 LmgiICAvKiBGb3Igc3RydWN0IHJldl9vZmZsb2FkICsgR09NUF9SRVZfT0ZG TE9BRF9WQVIuICovCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKIGV4dGVybiBp bnQgX19nb21wX3RlYW1fbnVtIF9fYXR0cmlidXRlX18oKHNoYXJlZCkpOwor ZXh0ZXJuIHZvbGF0aWxlIHN0cnVjdCBnb21wX29mZmxvYWRfaWN2cyBHT01Q X0FERElUSU9OQUxfSUNWUzsKK3ZvbGF0aWxlIHN0cnVjdCByZXZfb2ZmbG9h ZCAqR09NUF9SRVZfT0ZGTE9BRF9WQVI7CiAKIGJvb2wKIEdPTVBfdGVhbXM0 ICh1bnNpZ25lZCBpbnQgbnVtX3RlYW1zX2xvd2VyLCB1bnNpZ25lZCBpbnQg bnVtX3RlYW1zX3VwcGVyLApAQCAtODgsMTYgKzkxLDQ3IEBAIEdPTVBfdGFy Z2V0X2V4dCAoaW50IGRldmljZSwgdm9pZCAoKmZuKSAodm9pZCAqKSwgc2l6 ZV90IG1hcG51bSwKIAkJIHZvaWQgKipob3N0YWRkcnMsIHNpemVfdCAqc2l6 ZXMsIHVuc2lnbmVkIHNob3J0ICpraW5kcywKIAkJIHVuc2lnbmVkIGludCBm bGFncywgdm9pZCAqKmRlcGVuZCwgdm9pZCAqKmFyZ3MpCiB7Ci0gICh2b2lk KSBkZXZpY2U7Ci0gICh2b2lkKSBmbjsKLSAgKHZvaWQpIG1hcG51bTsKLSAg KHZvaWQpIGhvc3RhZGRyczsKLSAgKHZvaWQpIHNpemVzOwotICAodm9pZCkg a2luZHM7CiAgICh2b2lkKSBmbGFnczsKICAgKHZvaWQpIGRlcGVuZDsKICAg KHZvaWQpIGFyZ3M7Ci0gIF9fYnVpbHRpbl91bnJlYWNoYWJsZSAoKTsKKwor ICBpZiAoZGV2aWNlICE9IEdPTVBfREVWSUNFX0hPU1RfRkFMTEJBQ0sKKyAg ICAgIHx8IGZuID09IE5VTEwKKyAgICAgIHx8IEdPTVBfUkVWX09GRkxPQURf VkFSID09IE5VTEwpCisgICAgcmV0dXJuOworCisgIHdoaWxlIChfX3N5bmNf bG9ja190ZXN0X2FuZF9zZXQgKCZHT01QX1JFVl9PRkZMT0FEX1ZBUi0+bG9j aywgKHVpbnQ4X3QpIDEpKQorICAgIDsgIC8qIHNwaW4gICovCisKKyAgR09N UF9SRVZfT0ZGTE9BRF9WQVItPm1hcG51bSA9IG1hcG51bTsKKyAgR09NUF9S RVZfT0ZGTE9BRF9WQVItPmFkZHJzID0gKHVpbnQ2NF90KSBob3N0YWRkcnM7 CisgIEdPTVBfUkVWX09GRkxPQURfVkFSLT5zaXplcyA9ICh1aW50NjRfdCkg c2l6ZXM7CisgIEdPTVBfUkVWX09GRkxPQURfVkFSLT5raW5kcyA9ICh1aW50 NjRfdCkga2luZHM7CisgIEdPTVBfUkVWX09GRkxPQURfVkFSLT5kZXZfbnVt ID0gR09NUF9BRERJVElPTkFMX0lDVlMuZGV2aWNlX251bTsKKworICAvKiAn Zm4nIG11c3QgYmUgbGFzdC4gICovCisjaWYgX19QVFhfU01fXyA+PSA2MDAK KyAgdWludDY0X3QgYWRkcl9zdHJ1Y3RfZm4gPSAodWludDY0X3QpICZHT01Q X1JFVl9PRkZMT0FEX1ZBUi0+Zm47CisgIGFzbSB2b2xhdGlsZSAoInN0Lmds b2JhbC5yZWxlYXNlLnN5cy51NjQgWyUwXSwgJTE7IgorCQk6IDogInIiKGFk ZHJfc3RydWN0X2ZuKSwgInIiIChmbikgOiAibWVtb3J5Iik7CisjZWxzZQor ICBfX2F0b21pY19zdG9yZV9uICgmR09NUF9SRVZfT0ZGTE9BRF9WQVItPmZu LCBmbiwgX19BVE9NSUNfUkVMRUFTRSk7CisjZW5kaWYKKworICAvKiBQcm9j ZXNzZWQgb24gdGhlIGhvc3QgLSB3aGVuIGRvbmUsIGZuIGlzIHNldCB0byBO VUxMLiAgKi8KKyNpZiBfX1BUWF9TTV9fID49IDYwMAorICB1aW50NjRfdCBm bjI7CisgIGRvCisgICAgeworICAgICAgYXNtIHZvbGF0aWxlICgibGQuYWNx dWlyZS5zeXMuZ2xvYmFsLnU2NCAlMCwgWyUxXTsiCisJCSAgICA6ICI9ciIg KGZuMikgOiAiciIgKGFkZHJfc3RydWN0X2ZuKSA6ICJtZW1vcnkiKTsKKyAg ICB9CisgIHdoaWxlIChmbjIgIT0gMCk7CisjZWxzZQorICB3aGlsZSAoX19h dG9taWNfbG9hZF9uICgmR09NUF9SRVZfT0ZGTE9BRF9WQVItPmZuLCBfX0FU T01JQ19BQ1FVSVJFKSAhPSAwKQorICAgIDsgIC8qIHNwaW4gICovCisjZW5k aWYKKyAgX19zeW5jX2xvY2tfcmVsZWFzZSAoJkdPTVBfUkVWX09GRkxPQURf VkFSLT5sb2NrKTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvbGliZ29tcC9s aWJnb21wLXBsdWdpbi5jIGIvbGliZ29tcC9saWJnb21wLXBsdWdpbi5jCmlu ZGV4IDlkNGNjNjIuLjMxNmRlNzQgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvbGli Z29tcC1wbHVnaW4uYworKysgYi9saWJnb21wL2xpYmdvbXAtcGx1Z2luLmMK QEAgLTc4LDMgKzc4LDE1IEBAIEdPTVBfUExVR0lOX2ZhdGFsIChjb25zdCBj aGFyICptc2csIC4uLikKICAgZ29tcF92ZmF0YWwgKG1zZywgYXApOwogICB2 YV9lbmQgKGFwKTsKIH0KKwordm9pZAorR09NUF9QTFVHSU5fdGFyZ2V0X3Jl diAodWludDY0X3QgZm5fcHRyLCB1aW50NjRfdCBtYXBudW0sIHVpbnQ2NF90 IGRldmFkZHJzX3B0ciwKKwkJCXVpbnQ2NF90IHNpemVzX3B0ciwgdWludDY0 X3Qga2luZHNfcHRyLCBpbnQgZGV2X251bSwKKwkJCXZvaWQgKCpkZXZfdG9f aG9zdF9jcHkpICh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90LAorCQkJ CQkJIHZvaWQgKiksCisJCQl2b2lkICgqaG9zdF90b19kZXZfY3B5KSAodm9p ZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCwKKwkJCQkJCSB2b2lkICopLCB2 b2lkICp0b2tlbikKK3sKKyAgZ29tcF90YXJnZXRfcmV2IChmbl9wdHIsIG1h cG51bSwgZGV2YWRkcnNfcHRyLCBzaXplc19wdHIsIGtpbmRzX3B0ciwgZGV2 X251bSwKKwkJICAgZGV2X3RvX2hvc3RfY3B5LCBob3N0X3RvX2Rldl9jcHks IHRva2VuKTsKK30KZGlmZiAtLWdpdCBhL2xpYmdvbXAvbGliZ29tcC1wbHVn aW4uaCBiL2xpYmdvbXAvbGliZ29tcC1wbHVnaW4uaAppbmRleCA2YWI1YWM2 Li44NzVmOTY3IDEwMDY0NAotLS0gYS9saWJnb21wL2xpYmdvbXAtcGx1Z2lu LmgKKysrIGIvbGliZ29tcC9saWJnb21wLXBsdWdpbi5oCkBAIC0xMjEsNiAr MTIxLDEzIEBAIGV4dGVybiB2b2lkIEdPTVBfUExVR0lOX2Vycm9yIChjb25z dCBjaGFyICosIC4uLikKIGV4dGVybiB2b2lkIEdPTVBfUExVR0lOX2ZhdGFs IChjb25zdCBjaGFyICosIC4uLikKIAlfX2F0dHJpYnV0ZV9fICgobm9yZXR1 cm4sIGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpOwogCitleHRlcm4gdm9pZCBH T01QX1BMVUdJTl90YXJnZXRfcmV2ICh1aW50NjRfdCwgdWludDY0X3QsIHVp bnQ2NF90LCB1aW50NjRfdCwKKwkJCQkgICAgdWludDY0X3QsIGludCwKKwkJ CQkgICAgdm9pZCAoKikgKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3Qs CisJCQkJCSAgICAgIHZvaWQgKiksCisJCQkJICAgIHZvaWQgKCopICh2b2lk ICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90LAorCQkJCQkgICAgICB2b2lkICop LCB2b2lkICopOworCiAvKiBQcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW1w bGVtZW50ZWQgYnkgbGliZ29tcCBwbHVnaW5zLiAgKi8KIGV4dGVybiBjb25z dCBjaGFyICpHT01QX09GRkxPQURfZ2V0X25hbWUgKHZvaWQpOwogZXh0ZXJu IHVuc2lnbmVkIGludCBHT01QX09GRkxPQURfZ2V0X2NhcHMgKHZvaWQpOwpk aWZmIC0tZ2l0IGEvbGliZ29tcC9saWJnb21wLmggYi9saWJnb21wL2xpYmdv bXAuaAppbmRleCA3NTE5Mjc0Li41ODAzNjgzIDEwMDY0NAotLS0gYS9saWJn b21wL2xpYmdvbXAuaAorKysgYi9saWJnb21wL2xpYmdvbXAuaApAQCAtMTEy OCw2ICsxMTI4LDExIEBAIGV4dGVybiBpbnQgZ29tcF9wYXVzZV9ob3N0ICh2 b2lkKTsKIGV4dGVybiB2b2lkIGdvbXBfaW5pdF90YXJnZXRzX29uY2UgKHZv aWQpOwogZXh0ZXJuIGludCBnb21wX2dldF9udW1fZGV2aWNlcyAodm9pZCk7 CiBleHRlcm4gYm9vbCBnb21wX3RhcmdldF90YXNrX2ZuICh2b2lkICopOwor ZXh0ZXJuIHZvaWQgZ29tcF90YXJnZXRfcmV2ICh1aW50NjRfdCwgdWludDY0 X3QsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QsCisJCQkgICAgIGlu dCwKKwkJCSAgICAgdm9pZCAoKikgKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBz aXplX3QsIHZvaWQgKiksCisJCQkgICAgIHZvaWQgKCopICh2b2lkICosIGNv bnN0IHZvaWQgKiwgc2l6ZV90LCB2b2lkICopLAorCQkJICAgICB2b2lkICop OwogCiAvKiBTcGxheSB0cmVlIGRlZmluaXRpb25zLiAgKi8KIHR5cGVkZWYg c3RydWN0IHNwbGF5X3RyZWVfbm9kZV9zICpzcGxheV90cmVlX25vZGU7CmRp ZmYgLS1naXQgYS9saWJnb21wL2xpYmdvbXAubWFwIGIvbGliZ29tcC9saWJn b21wLm1hcAppbmRleCA0NmQ1ZjEwLi4xMmY3NmY3IDEwMDY0NAotLS0gYS9s aWJnb21wL2xpYmdvbXAubWFwCisrKyBiL2xpYmdvbXAvbGliZ29tcC5tYXAK QEAgLTYyMiwzICs2MjIsOCBAQCBHT01QX1BMVUdJTl8xLjMgewogCUdPTVBf UExVR0lOX2dvYWNjX3Byb2ZpbGluZ19kaXNwYXRjaDsKIAlHT01QX1BMVUdJ Tl9nb2FjY190aHJlYWQ7CiB9IEdPTVBfUExVR0lOXzEuMjsKKworR09NUF9Q TFVHSU5fMS40IHsKKyAgZ2xvYmFsOgorCUdPTVBfUExVR0lOX3RhcmdldF9y ZXY7Cit9IEdPTVBfUExVR0lOXzEuMzsKZGlmZiAtLWdpdCBhL2xpYmdvbXAv cGx1Z2luL2N1ZGEtbGliLmRlZiBiL2xpYmdvbXAvcGx1Z2luL2N1ZGEtbGli LmRlZgppbmRleCBjZDkxYjM5Li5kZmY0MmQ2IDEwMDY0NAotLS0gYS9saWJn b21wL3BsdWdpbi9jdWRhLWxpYi5kZWYKKysrIGIvbGliZ29tcC9wbHVnaW4v Y3VkYS1saWIuZGVmCkBAIC0yOSw2ICsyOSw3IEBAIENVREFfT05FX0NBTExf TUFZQkVfTlVMTCAoY3VMaW5rQ3JlYXRlX3YyKQogQ1VEQV9PTkVfQ0FMTCAo Y3VMaW5rRGVzdHJveSkKIENVREFfT05FX0NBTEwgKGN1TWVtQWxsb2MpCiBD VURBX09ORV9DQUxMIChjdU1lbUFsbG9jSG9zdCkKK0NVREFfT05FX0NBTEwg KGN1TWVtSG9zdEFsbG9jKQogQ1VEQV9PTkVfQ0FMTCAoY3VNZW1jcHkpCiBD VURBX09ORV9DQUxMIChjdU1lbWNweUR0b0RBc3luYykKIENVREFfT05FX0NB TEwgKGN1TWVtY3B5RHRvSCkKZGlmZiAtLWdpdCBhL2xpYmdvbXAvcGx1Z2lu L3BsdWdpbi1udnB0eC5jIGIvbGliZ29tcC9wbHVnaW4vcGx1Z2luLW52cHR4 LmMKaW5kZXggYmE2YjIyOS4uNDNiMzRkZiAxMDA2NDQKLS0tIGEvbGliZ29t cC9wbHVnaW4vcGx1Z2luLW52cHR4LmMKKysrIGIvbGliZ29tcC9wbHVnaW4v cGx1Z2luLW52cHR4LmMKQEAgLTQwLDYgKzQwLDkgQEAKICNpbmNsdWRlICJn b21wLWNvbnN0YW50cy5oIgogI2luY2x1ZGUgIm9hY2MtaW50LmgiCiAKKy8q IEZvciBzdHJ1Y3QgcmV2X29mZmxvYWQgKyBHT01QX1JFVl9PRkZMT0FEX1ZB Ui4gKi8KKyNpbmNsdWRlICJjb25maWcvbnZwdHgvbGliZ29tcC1udnB0eC5o IgorCiAjaW5jbHVkZSA8cHRocmVhZC5oPgogI2lmbmRlZiBQTFVHSU5fTlZQ VFhfSU5DTFVERV9TWVNURU1fQ1VEQV9ICiAjIGluY2x1ZGUgImN1ZGEvY3Vk YS5oIgpAQCAtMzI5LDYgKzMzMiw3IEBAIHN0cnVjdCBwdHhfZGV2aWNlCiAg ICAgICBwdGhyZWFkX211dGV4X3QgbG9jazsKICAgICB9IG9tcF9zdGFja3M7 CiAKKyAgc3RydWN0IHJldl9vZmZsb2FkICpyZXZfZGF0YTsKICAgc3RydWN0 IHB0eF9kZXZpY2UgKm5leHQ7CiB9OwogCkBAIC00MjMsNyArNDI3LDcgQEAg bnZwdHhfb3Blbl9kZXZpY2UgKGludCBuKQogICBzdHJ1Y3QgcHR4X2Rldmlj ZSAqcHR4X2RldjsKICAgQ1VkZXZpY2UgZGV2LCBjdHhfZGV2OwogICBDVXJl c3VsdCByOwotICBpbnQgYXN5bmNfZW5naW5lcywgcGk7CisgIGludCBwaTsK IAogICBDVURBX0NBTExfRVJFVCAoTlVMTCwgY3VEZXZpY2VHZXQsICZkZXYs IG4pOwogCkBAIC01MTksMTAgKzUyMywyMCBAQCBudnB0eF9vcGVuX2Rldmlj ZSAoaW50IG4pCiAJCSAgQ1VfREVWSUNFX0FUVFJJQlVURV9NQVhfVEhSRUFE U19QRVJfTVVMVElQUk9DRVNTT1IsIGRldik7CiAgIHB0eF9kZXYtPm1heF90 aHJlYWRzX3Blcl9tdWx0aXByb2Nlc3NvciA9IHBpOwogCisjaWYgMAorICBp bnQgYXN5bmNfZW5naW5lczsKICAgciA9IENVREFfQ0FMTF9OT0NIRUNLIChj dURldmljZUdldEF0dHJpYnV0ZSwgJmFzeW5jX2VuZ2luZXMsCiAJCQkgQ1Vf REVWSUNFX0FUVFJJQlVURV9BU1lOQ19FTkdJTkVfQ09VTlQsIGRldik7CiAg IGlmIChyICE9IENVREFfU1VDQ0VTUykKICAgICBhc3luY19lbmdpbmVzID0g MTsKKyNlbmRpZgorCisgIC8qIFJlcXVpcmVkIGJlbG93IGZvciByZXZlcnNl IG9mZmxvYWQgYXMgaW1wbGVtZW50ZWQsIGJ1dCB3aXRoIGNvbXB1dGUKKyAg ICAgY2FwYWJpbGl0eSA+PSAyLjAgYW5kIDY0Yml0IGRldmljZSBwcm9jZXNz ZXMsIHRoaXMgc2hvdWxkIGJlIHVuaXZlcnNhbGx5IGJlCisgICAgIHRoZSBj YXNlOyBoZW5jZSwgYW4gYXNzZXJ0LiAgKi8KKyAgciA9IENVREFfQ0FMTF9O T0NIRUNLIChjdURldmljZUdldEF0dHJpYnV0ZSwgJnBpLAorCQkJIENVX0RF VklDRV9BVFRSSUJVVEVfVU5JRklFRF9BRERSRVNTSU5HLCBkZXYpOworICBh c3NlcnQgKHIgPT0gQ1VEQV9TVUNDRVNTICYmIHBpKTsKIAogICBmb3IgKGlu dCBpID0gMDsgaSAhPSBHT01QX0RJTV9NQVg7IGkrKykKICAgICBwdHhfZGV2 LT5kZWZhdWx0X2RpbXNbaV0gPSAwOwpAQCAtMTE3OSw4ICsxMTkzLDEwIEBA IEdPTVBfT0ZGTE9BRF9nZXRfbnVtX2RldmljZXMgKHVuc2lnbmVkIGludCBv bXBfcmVxdWlyZXNfbWFzaykKIHsKICAgaW50IG51bV9kZXZpY2VzID0gbnZw dHhfZ2V0X251bV9kZXZpY2VzICgpOwogICAvKiBSZXR1cm4gLTEgaWYgbm8g b21wX3JlcXVpcmVzX21hc2sgY2Fubm90IGJlIGZ1bGZpbGxlZCBidXQKLSAg ICAgZGV2aWNlcyB3ZXJlIHByZXNlbnQuICAqLwotICBpZiAobnVtX2Rldmlj ZXMgPiAwICYmIG9tcF9yZXF1aXJlc19tYXNrICE9IDApCisgICAgIGRldmlj ZXMgd2VyZSBwcmVzZW50LiBVbmlmaWVkLXNoYXJlZCBhZGRyZXNzOiBzZWUg Y29tbWVudCBpbgorICAgICBudnB0eF9vcGVuX2RldmljZSBmb3IgQ1VfREVW SUNFX0FUVFJJQlVURV9VTklGSUVEX0FERFJFU1NJTkcuICAqLworICBpZiAo bnVtX2RldmljZXMgPiAwCisgICAgICAmJiAob21wX3JlcXVpcmVzX21hc2sg JiB+R09NUF9SRVFVSVJFU19VTklGSUVEX0FERFJFU1MpICE9IDApCiAgICAg cmV0dXJuIC0xOwogICByZXR1cm4gbnVtX2RldmljZXM7CiB9CkBAIC0xMzgw LDcgKzEzOTYsNyBAQCBHT01QX09GRkxPQURfbG9hZF9pbWFnZSAoaW50IG9y ZCwgdW5zaWduZWQgdmVyc2lvbiwgY29uc3Qgdm9pZCAqdGFyZ2V0X2RhdGEs CiAgIGVsc2UgaWYgKHJldl9mbl90YWJsZSkKICAgICB7CiAgICAgICBDVWRl dmljZXB0ciB2YXI7Ci0gICAgICBzaXplX3QgYnl0ZXM7CisgICAgICBzaXpl X3QgYnl0ZXMsIGk7CiAgICAgICByID0gQ1VEQV9DQUxMX05PQ0hFQ0sgKGN1 TW9kdWxlR2V0R2xvYmFsLCAmdmFyLCAmYnl0ZXMsIG1vZHVsZSwKIAkJCSAg ICAgIiRvZmZsb2FkX2Z1bmNfdGFibGUiKTsKICAgICAgIGlmIChyICE9IENV REFfU1VDQ0VTUykKQEAgLTEzOTAsNiArMTQwNiwzNyBAQCBHT01QX09GRkxP QURfbG9hZF9pbWFnZSAoaW50IG9yZCwgdW5zaWduZWQgdmVyc2lvbiwgY29u c3Qgdm9pZCAqdGFyZ2V0X2RhdGEsCiAgICAgICByID0gQ1VEQV9DQUxMX05P Q0hFQ0sgKGN1TWVtY3B5RHRvSCwgKnJldl9mbl90YWJsZSwgdmFyLCBieXRl cyk7CiAgICAgICBpZiAociAhPSBDVURBX1NVQ0NFU1MpCiAJR09NUF9QTFVH SU5fZmF0YWwgKCJjdU1lbWNweUR0b0ggZXJyb3I6ICVzIiwgY3VkYV9lcnJv ciAocikpOworICAgICAgLyogRnJlZSBpZiBvbmx5IE5VTEwgZW50cmllcy4g ICovCisgICAgICBmb3IgKGkgPSAwOyBpIDwgZm5fZW50cmllczsgKytpKQor CWlmICgoKnJldl9mbl90YWJsZSlbaV0gIT0gMCkKKwkgIGJyZWFrOworICAg ICAgaWYgKGkgPT0gZm5fZW50cmllcykKKwl7CisJICBmcmVlICgqcmV2X2Zu X3RhYmxlKTsKKwkgICpyZXZfZm5fdGFibGUgPSBOVUxMOworCX0KKyAgICB9 CisKKyAgaWYgKHJldl9mbl90YWJsZSAmJiAqcmV2X2ZuX3RhYmxlICYmIGRl di0+cmV2X2RhdGEgPT0gTlVMTCkKKyAgICB7CisgICAgICAvKiBjdU1lbUhv c3RBbGxvYyBtZW1vcnkgaXMgYWNjZXNzaWJsZSBvbiB0aGUgZGV2aWNlLCBp ZiB1bmlmaWVkLXNoYXJlZAorCSBhZGRyZXNzIGlzIHN1cHBvcnRlZDsgdGhp cyBpcyBhc3N1bWVkIC0gc2VlIGNvbW1lbnQgaW4KKwkgbnZwdHhfb3Blbl9k ZXZpY2UgZm9yIENVX0RFVklDRV9BVFRSSUJVVEVfVU5JRklFRF9BRERSRVNT SU5HLiAgICovCisgICAgICBDVURBX0NBTExfQVNTRVJUIChjdU1lbUhvc3RB bGxvYywgKHZvaWQgKiopICZkZXYtPnJldl9kYXRhLAorCQkJc2l6ZW9mICgq ZGV2LT5yZXZfZGF0YSksIENVX01FTUhPU1RBTExPQ19ERVZJQ0VNQVApOwor ICAgICAgQ1VkZXZpY2VwdHIgZHAgPSAoQ1VkZXZpY2VwdHIpIGRldi0+cmV2 X2RhdGE7CisgICAgICBDVWRldmljZXB0ciBkZXZpY2VfcmV2X29mZmxvYWRf dmFyOworICAgICAgc2l6ZV90IGRldmljZV9yZXZfb2ZmbG9hZF9zaXplOwor ICAgICAgQ1VyZXN1bHQgciA9IENVREFfQ0FMTF9OT0NIRUNLIChjdU1vZHVs ZUdldEdsb2JhbCwKKwkJCQkgICAgICAmZGV2aWNlX3Jldl9vZmZsb2FkX3Zh ciwKKwkJCQkgICAgICAmZGV2aWNlX3Jldl9vZmZsb2FkX3NpemUsIG1vZHVs ZSwKKwkJCQkgICAgICBYU1RSSU5HIChHT01QX1JFVl9PRkZMT0FEX1ZBUikp OworICAgICAgaWYgKHIgIT0gQ1VEQV9TVUNDRVNTKQorCUdPTVBfUExVR0lO X2ZhdGFsICgiY3VNb2R1bGVHZXRHbG9iYWwgZXJyb3IgLSBHT01QX1JFVl9P RkZMT0FEX1ZBUjogJXMiLCBjdWRhX2Vycm9yIChyKSk7CisgICAgICByID0g Q1VEQV9DQUxMX05PQ0hFQ0sgKGN1TWVtY3B5SHRvRCwgZGV2aWNlX3Jldl9v ZmZsb2FkX3ZhciwgJmRwLAorCQkJICAgICBzaXplb2YgKGRwKSk7CisgICAg ICBpZiAociAhPSBDVURBX1NVQ0NFU1MpCisJR09NUF9QTFVHSU5fZmF0YWwg KCJjdU1lbWNweUh0b0QgZXJyb3I6ICVzIiwgY3VkYV9lcnJvciAocikpOwog ICAgIH0KIAogICBudnB0eF9zZXRfY2xvY2t0aWNrIChtb2R1bGUsIGRldik7 CkBAIC0yMDAxLDYgKzIwNDgsMjMgQEAgbnZwdHhfc3RhY2tzX2FjcXVpcmUg KHN0cnVjdCBwdHhfZGV2aWNlICpwdHhfZGV2LCBzaXplX3Qgc2l6ZSwgaW50 IG51bSkKICAgcmV0dXJuICh2b2lkICopIHB0eF9kZXYtPm9tcF9zdGFja3Mu cHRyOwogfQogCisKK3ZvaWQKK3Jldl9vZmZfZGV2X3RvX2hvc3RfY3B5ICh2 b2lkICpkZXN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBzaXplLAorCQkJ IENVc3RyZWFtIHN0cmVhbSkKK3sKKyAgQ1VEQV9DQUxMX0FTU0VSVCAoY3VN ZW1jcHlEdG9IQXN5bmMsIGRlc3QsIChDVWRldmljZXB0cikgc3JjLCBzaXpl LCBzdHJlYW0pOworICBDVURBX0NBTExfQVNTRVJUIChjdVN0cmVhbVN5bmNo cm9uaXplLCBzdHJlYW0pOworfQorCit2b2lkCityZXZfb2ZmX2hvc3RfdG9f ZGV2X2NweSAodm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3Qg c2l6ZSwKKwkJCSBDVXN0cmVhbSBzdHJlYW0pCit7CisgIENVREFfQ0FMTF9B U1NFUlQgKGN1TWVtY3B5SHRvREFzeW5jLCAoQ1VkZXZpY2VwdHIpIGRlc3Qs IHNyYywgc2l6ZSwgc3RyZWFtKTsKKyAgQ1VEQV9DQUxMX0FTU0VSVCAoY3VT dHJlYW1TeW5jaHJvbml6ZSwgc3RyZWFtKTsKK30KKwogdm9pZAogR09NUF9P RkZMT0FEX3J1biAoaW50IG9yZCwgdm9pZCAqdGd0X2ZuLCB2b2lkICp0Z3Rf dmFycywgdm9pZCAqKmFyZ3MpCiB7CkBAIC0yMDM1LDYgKzIwOTksOCBAQCBH T01QX09GRkxPQURfcnVuIChpbnQgb3JkLCB2b2lkICp0Z3RfZm4sIHZvaWQg KnRndF92YXJzLCB2b2lkICoqYXJncykKICAgbnZwdHhfYWRqdXN0X2xhdW5j aF9ib3VuZHMgKHRndF9mbiwgcHR4X2RldiwgJnRlYW1zLCAmdGhyZWFkcyk7 CiAKICAgc2l6ZV90IHN0YWNrX3NpemUgPSBudnB0eF9zdGFja3Nfc2l6ZSAo KTsKKyAgYm9vbCByZXZlcnNlX29mZiA9IHB0eF9kZXYtPnJldl9kYXRhICE9 IE5VTEw7CisgIENVc3RyZWFtIGNvcHlfc3RyZWFtID0gTlVMTDsKIAogICBw dGhyZWFkX211dGV4X2xvY2sgKCZwdHhfZGV2LT5vbXBfc3RhY2tzLmxvY2sp OwogICB2b2lkICpzdGFja3MgPSBudnB0eF9zdGFja3NfYWNxdWlyZSAocHR4 X2Rldiwgc3RhY2tfc2l6ZSwgdGVhbXMgKiB0aHJlYWRzKTsKQEAgLTIwNDgs MTIgKzIxMTQsNDUgQEAgR09NUF9PRkZMT0FEX3J1biAoaW50IG9yZCwgdm9p ZCAqdGd0X2ZuLCB2b2lkICp0Z3RfdmFycywgdm9pZCAqKmFyZ3MpCiAgIEdP TVBfUExVR0lOX2RlYnVnICgwLCAiICAlczoga2VybmVsICVzOiBsYXVuY2gi CiAJCSAgICAgIiBbKHRlYW1zOiAldSksIDEsIDFdIFsobGFuZXM6IDMyKSwg KHRocmVhZHM6ICV1KSwgMV1cbiIsCiAJCSAgICAgX19GVU5DVElPTl9fLCBm bl9uYW1lLCB0ZWFtcywgdGhyZWFkcyk7CisgIGlmIChyZXZlcnNlX29mZikK KyAgICBDVURBX0NBTExfQVNTRVJUIChjdVN0cmVhbUNyZWF0ZSwgJmNvcHlf c3RyZWFtLCBDVV9TVFJFQU1fTk9OX0JMT0NLSU5HKTsKICAgciA9IENVREFf Q0FMTF9OT0NIRUNLIChjdUxhdW5jaEtlcm5lbCwgZnVuY3Rpb24sIHRlYW1z LCAxLCAxLAogCQkJIDMyLCB0aHJlYWRzLCAxLCAwLCBOVUxMLCBOVUxMLCBj b25maWcpOwogICBpZiAociAhPSBDVURBX1NVQ0NFU1MpCiAgICAgR09NUF9Q TFVHSU5fZmF0YWwgKCJjdUxhdW5jaEtlcm5lbCBlcnJvcjogJXMiLCBjdWRh X2Vycm9yIChyKSk7Ci0KLSAgciA9IENVREFfQ0FMTF9OT0NIRUNLIChjdUN0 eFN5bmNocm9uaXplLCApOworICBpZiAocmV2ZXJzZV9vZmYpCisgICAgd2hp bGUgKHRydWUpCisgICAgICB7CisJciA9IENVREFfQ0FMTF9OT0NIRUNLIChj dVN0cmVhbVF1ZXJ5LCBOVUxMKTsKKwlpZiAociA9PSBDVURBX1NVQ0NFU1Mp CisJICBicmVhazsKKwlpZiAociA9PSBDVURBX0VSUk9SX0xBVU5DSF9GQUlM RUQpCisJICBHT01QX1BMVUdJTl9mYXRhbCAoImN1U3RyZWFtUXVlcnkgZXJy b3I6ICVzICVzXG4iLCBjdWRhX2Vycm9yIChyKSwKKwkJCSAgICAgbWF5YmVf YWJvcnRfbXNnKTsKKwllbHNlIGlmIChyICE9IENVREFfRVJST1JfTk9UX1JF QURZKQorCSAgR09NUF9QTFVHSU5fZmF0YWwgKCJjdVN0cmVhbVF1ZXJ5IGVy cm9yOiAlcyIsIGN1ZGFfZXJyb3IgKHIpKTsKKworCWlmIChfX2F0b21pY19s b2FkX24gKCZwdHhfZGV2LT5yZXZfZGF0YS0+Zm4sIF9fQVRPTUlDX0FDUVVJ UkUpICE9IDApCisJICB7CisJICAgIHN0cnVjdCByZXZfb2ZmbG9hZCAqcmV2 X2RhdGEgPSBwdHhfZGV2LT5yZXZfZGF0YTsKKwkgICAgdWludDY0X3QgZm5f cHRyID0gcmV2X2RhdGEtPmZuOworCSAgICB1aW50NjRfdCBtYXBudW0gPSBy ZXZfZGF0YS0+bWFwbnVtOworCSAgICB1aW50NjRfdCBhZGRyX3B0ciA9IHJl dl9kYXRhLT5hZGRyczsKKwkgICAgdWludDY0X3Qgc2l6ZXNfcHRyID0gcmV2 X2RhdGEtPnNpemVzOworCSAgICB1aW50NjRfdCBraW5kc19wdHIgPSByZXZf ZGF0YS0+a2luZHM7CisJICAgIGludCBkZXZfbnVtID0gKGludCkgcmV2X2Rh dGEtPmRldl9udW07CisJICAgIEdPTVBfUExVR0lOX3RhcmdldF9yZXYgKGZu X3B0ciwgbWFwbnVtLCBhZGRyX3B0ciwgc2l6ZXNfcHRyLAorCQkJCSAgICBr aW5kc19wdHIsIGRldl9udW0sIHJldl9vZmZfZGV2X3RvX2hvc3RfY3B5LAor CQkJCSAgICByZXZfb2ZmX2hvc3RfdG9fZGV2X2NweSwgY29weV9zdHJlYW0p OworCSAgICBDVURBX0NBTExfQVNTRVJUIChjdVN0cmVhbVN5bmNocm9uaXpl LCBjb3B5X3N0cmVhbSk7CisJICAgIF9fYXRvbWljX3N0b3JlX24gKCZyZXZf ZGF0YS0+Zm4sIDAsIF9fQVRPTUlDX1JFTEVBU0UpOworCSAgfQorCXVzbGVl cCAoMSk7CisgICAgICB9CisgIGVsc2UKKyAgICByID0gQ1VEQV9DQUxMX05P Q0hFQ0sgKGN1Q3R4U3luY2hyb25pemUsICk7CisgIGlmIChyZXZlcnNlX29m ZikKKyAgICBDVURBX0NBTExfQVNTRVJUIChjdVN0cmVhbURlc3Ryb3ksIGNv cHlfc3RyZWFtKTsKICAgaWYgKHIgPT0gQ1VEQV9FUlJPUl9MQVVOQ0hfRkFJ TEVEKQogICAgIEdPTVBfUExVR0lOX2ZhdGFsICgiY3VDdHhTeW5jaHJvbml6 ZSBlcnJvcjogJXMgJXNcbiIsIGN1ZGFfZXJyb3IgKHIpLAogCQkgICAgICAg bWF5YmVfYWJvcnRfbXNnKTsKZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGFyZ2V0 LmMgYi9saWJnb21wL3RhcmdldC5jCmluZGV4IDU3NjM0ODMuLjkzNzdkZTAg MTAwNjQ0Ci0tLSBhL2xpYmdvbXAvdGFyZ2V0LmMKKysrIGIvbGliZ29tcC90 YXJnZXQuYwpAQCAtMjkyNSw2ICsyOTI1LDI1IEBAIEdPTVBfdGFyZ2V0X2V4 dCAoaW50IGRldmljZSwgdm9pZCAoKmZuKSAodm9pZCAqKSwgc2l6ZV90IG1h cG51bSwKICAgICBodGFiX2ZyZWUgKHJlZmNvdW50X3NldCk7CiB9CiAKKy8q IEhhbmRsZSByZXZlcnNlIG9mZmxvYWQuIFRoaXMgaXMgY2FsbGVkIGJ5IHRo ZSBkZXZpY2UgcGx1Z2lucyBmb3IgYQorICAgcmV2ZXJzZSBvZmZsb2FkOyBp dCBpcyBub3QgY2FsbGVkIGlmIHRoZSBvdXRlciB0YXJnZXQgcnVucyBvbiB0 aGUgaG9zdC4gICovCisKK3ZvaWQKK2dvbXBfdGFyZ2V0X3JldiAodWludDY0 X3QgZm5fcHRyIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKwkJIHVpbnQ2 NF90IG1hcG51bSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisJCSB1aW50 NjRfdCBkZXZhZGRyc19wdHIgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAor CQkgdWludDY0X3Qgc2l6ZXNfcHRyIF9fYXR0cmlidXRlX18gKCh1bnVzZWQp KSwKKwkJIHVpbnQ2NF90IGtpbmRzX3B0ciBfX2F0dHJpYnV0ZV9fICgodW51 c2VkKSksCisJCSBpbnQgZGV2X251bSBfX2F0dHJpYnV0ZV9fICgodW51c2Vk KSksCisJCSB2b2lkICgqZGV2X3RvX2hvc3RfY3B5KSAodm9pZCAqLCBjb25z dCB2b2lkICosIHNpemVfdCwKKwkJCQkJICB2b2lkICopIF9fYXR0cmlidXRl X18gKCh1bnVzZWQpKSwKKwkJIHZvaWQgKCpob3N0X3RvX2Rldl9jcHkpICh2 b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90LAorCQkJCQkgIHZvaWQgKikg X19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorCQkgdm9pZCAqdG9rZW4gX19h dHRyaWJ1dGVfXyAoKHVudXNlZCkpKQoreworICBfX2J1aWx0aW5fdW5yZWFj aGFibGUgKCk7Cit9CisKIC8qIEhvc3QgZmFsbGJhY2sgZm9yIEdPTVBfdGFy Z2V0X2RhdGF7LF9leHR9IHJvdXRpbmVzLiAgKi8KIAogc3RhdGljIHZvaWQK --------------0k4RXpGkDjBE76VBwqZYKHZR--