From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa2.mentor.iphmx.com (esa2.mentor.iphmx.com [68.232.141.98]) by sourceware.org (Postfix) with ESMTPS id 952973853560 for ; Wed, 29 Jun 2022 14:33:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 952973853560 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.92,231,1650960000"; d="diff'?scan'208";a="78039494" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa2.mentor.iphmx.com with ESMTP; 29 Jun 2022 06:33:07 -0800 IronPort-SDR: eQZ+r4Y/yiGfBudzzThyYaaokB9XU06ktezrOnKamwZHuUPQo87WuS7iRbLFVtoTQz4frMVDJp 9hg6A8L+GgP1jOfB++kSbvaI4cLTfwsHf3VkM121nsN2jKd/WbFNOduGPFRHbhEJA8tMtNjfM3 x+y0HlkTfnnsgdrAxKmXAa9UCzoWeuF/9nJNQTUcJ4fjz47Loqqfwve+eWt/O3kXUJx2uwgOsj b/XMuF0lm+Lz3g7EAjw1YUBVgkiAbXJn5DCX8EW8YRiWpFkgVDg4QwXZgUeGYHBZRDWUA/bfeL tVs= Content-Type: multipart/mixed; boundary="------------d5pWmEbwRXgqxePVDHYBRx6E" Message-ID: <5576fa00-0ddd-8046-17c1-d1cea82bdcf5@codesourcery.com> Date: Wed, 29 Jun 2022 16:33:02 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [Patch][v4] OpenMP: Move omp requires checks to libgomp Content-Language: en-US To: Jakub Jelinek CC: gcc-patches References: <07fec82a-41cf-fdc5-6307-c068dd95ef1a@mentor.com> <7f9c91c1-a479-f94f-ac14-1d6827ce671b@codesourcery.com> From: Tobias Burnus In-Reply-To: X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-10.mgc.mentorg.com (139.181.222.10) 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, KAM_DMARC_STATUS, NICE_REPLY_A, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Jun 2022 14:33:20 -0000 --------------d5pWmEbwRXgqxePVDHYBRx6E Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable Hi Jakub, hi all, new version attached. It now checks during lto1 whether the values are consistent =E2=80=93 and fails with a hard error. The actually used value (by libgomp) is stored as a scalar weak symbol =E2= =80=93 while for checking, each translation unit stores the integer value for lto (alongside the offload table). This is both used for checking and in lto1 (device + host lto1), to restore the value of 'omp_requires_mask' for further use. =E2=80=93 Currently, it is only used on the host to make t= he value available to libgomp. =E2=80=93 However, a device lto1 could also use= it. (Usage: cf. Andrew's USM gcn patch.) Unchanged from previous version, libgomp outputs an warning/note if a device could be found but the requires prevented libgomp from using it. This message is also shown with -foffload=3Ddisable but it is not shown for OMP_TARGET_OFFLOAD=3Ddisable. Other change is that API calls no longer count as relevant for 'omp requires' =E2=80=93 such that compilation units which only contain those wi= ll not output anything (independent whether there is an 'omp requires' or not.= ) On 09.06.22 16:19, Jakub Jelinek wrote: > On Thu, Jun 09, 2022 at 02:46:34PM +0200, Tobias Burnus wrote: >> On 09.06.22 13:40, Jakub Jelinek via Gcc-patches wrote: > If it is from me, bet it was because of that (mis)understanding that > device routines are device related runtime API calls. > I'd suggest to only mark in the patch what is clear (which is device > constructs) and defer the rest until it is clarified. Done so. >>> Shouldn't the vars in that section be const, so that it is a read-only >>> section? >>> >>> Is unsigned_type_node what we want (say wouldn't be just unsigned_char_= node >>> be enough, currently we just need 3 bits). >> Probably -that would be 8 bits, leaving 5 spare. I have not checked what >> Andrew et al. do with the pinned-memory support by -f, but >> that will likely use only 1 to 3 bits, if any. > If it is SHF_MERGE, even 16-bit or 32-bit wouldn't be the end of the worl= d, > or if it is in LTO streamed out stuff, we can use a bitpack for it... As the final binary will only contain a single variable, the size should not matter much. I currently use 'unsigned' but it could surely be shorter. For the .o files, it also outputs the unsigned value for each TU, but that's also small. I was thinking about adding more data (like location data, be it location_t or __FILENAME__). However, it uses a stripped-down stream writer - and to do so, location/string writing requires a different object (and reading it, data_in). I did not regard this as worthwhile and, thus, I only output the used requires clauses and not where they were used. > I think best would be a fatal error if people try to configure > offloading targets for a compiler that doesn't support named sections, > or perhaps that and presence of anything that should be offloaded. I do not use any named section =E2=80=93 but I could if it makes sense. In = any case, the question is whether the current weak symbol makes sense or not. And whether there are problems in using weak symbols (in libgomp's target.c + for non-ACCEL_COMPILER, but only when the symbol needs to be written). I am also not sure about the best naming. =E2=80=93 Thoughts? Otherwise, tested with no offloading configured + with offloading to nvptx (fully tested) and gcn (partially) [all x86_64-gnu-linux) Tobias PS: At some point, we need to think about handling calling from a program's target region a declare-target device function which is inside a shared library. I am sure, we currently do not handle it. =E2=80=93 For t= hat, we then also have to think about how to handle the requires clauses. ----------------- 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 --------------d5pWmEbwRXgqxePVDHYBRx6E Content-Type: text/x-patch; charset="UTF-8"; name="omp-requires-v4.diff" Content-Disposition: attachment; filename="omp-requires-v4.diff" Content-Transfer-Encoding: base64 T3Blbk1QOiBNb3ZlIG9tcCByZXF1aXJlcyBjaGVja3MgdG8gbGliZ29tcAoKSGFuZGxlIHJl dmVyc2Vfb2ZmbG9hZCwgdW5pZmllZF9hZGRyZXNzLCBhbmQgdW5pZmllZF9zaGFyZWRfbWVt b3J5CnJlcXVpcmVtZW50cyBpbiBsaWJnb21wIGJ5IHB1dHRpbmcgdGhlbSBpbnRvIHRoZSAn X19vZmZsb2FkX3JlcXVpcmVzX21hc2snCndlYWsgdmFyaWFibGUuIEFkZGl0aW9uYWxseSwg c3RvcmUgdGhlIHZhbHVlIGFsb25nc2lkZSB0aGUgb2ZmbG9hZCB0YWJsZQppbiBsdG8gLSB0 byBwZXJtaXQgY2hlY2tpbmcgdGhlIHZhbHVlIGZvciBjb25zaXN0ZW5jeSBpbiBsdG8xLiBU aGUgdmFsdWUKaXMgb25seSBzdG9yZWQgd2hlbiBhY3R1YWxseSByZXF1aXJlZCBkdWUgdG8g J29tcCAoZGVjbGFyZSkgdGFyZ2V0IC4uLicuCgpJbiBsdG8xIChlaXRoZXIgdGhlIGhvc3Qg b25lLCB3aXRoIC1mbHRvIFsrIEVOQUJMRV9PRkZMT0FESU5HXSwgb3IgaW4gdGhlCm9mZmxv YWQtZGV2aWNlIGx0bzEpLCB0aGUgY29uc2lzdGVuY3kgY2hlY2sgaXMgZG9uZSwgZXJyb3Jp bmcgb3V0IHdoZW4KYW4gaW5jb25pc3RlbmN5IGlzIGZvdW5kLgoKRm9yIGFsbCBpbi1wcmlu Y2lwbGUgc3VwcG9ydGVkIGRldmljZXMsIGlmIGEgcmVxdWlyZW1lbnQgY2Fubm90IGJlIGZ1 bGZpbGxlZCwKdGhlIGRldmljZSBpcyBleGNsdWRlZCBmcm9tIHRoZSAoc3VwcG9ydGVkKSBk ZXZpY2VzIGxpc3QuIEN1cnJlbnRseSwgbm9uZSBvZgp0aG9zZSByZXF1aXJlbWVudHMgYXJl IG1hcmtlZCBhcyBzdXBwb3J0ZWQgZm9yIGFueSBvZiB0aGUgbm9uLWhvc3QgZGV2aWNlcy4K CmdjYy9jL0NoYW5nZUxvZzoKCiAgICAgICAgKiBjLXBhcnNlci5jYyAoY19wYXJzZXJfZGVj bGFyYXRpb25fb3JfZm5kZWYpOiBTZXQKICAgICAgICBPTVBfUkVRVUlSRVNfVEFSR0VUX1VT RUQgaW4gb21wX3JlcXVpcmVzX21hc2sgaWYgZnVuY3Rpb24gaGFzCiAgICAgICAgIm9tcCBk ZWNsYXJlIHRhcmdldCIgYXR0cmlidXRlLgogICAgICAgIChjX3BhcnNlcl9vbXBfdGFyZ2V0 X2RhdGEpOiBTZXQgT01QX1JFUVVJUkVTX1RBUkdFVF9VU0VEIGluCiAgICAgICAgb21wX3Jl cXVpcmVzX21hc2suCiAgICAgICAgKGNfcGFyc2VyX29tcF90YXJnZXRfZW50ZXJfZGF0YSk6 IExpa2V3aXNlLgogICAgICAgIChjX3BhcnNlcl9vbXBfdGFyZ2V0X2V4aXRfZGF0YSk6IExp a2V3aXNlLgogICAgICAgIChjX3BhcnNlcl9vbXBfcmVxdWlyZXMpOiBSZW1vdmUgc29ycnku CgpnY2MvY3AvQ2hhbmdlTG9nOgoKICAgICAgICAqIHBhcnNlci5jYyAoY3BfcGFyc2VyX3Np bXBsZV9kZWNsYXJhdGlvbik6IFNldAogICAgICAgIE9NUF9SRVFVSVJFU19UQVJHRVRfVVNF RCBpbiBvbXBfcmVxdWlyZXNfbWFzayBpZiBmdW5jdGlvbiBoYXMKICAgICAgICAib21wIGRl Y2xhcmUgdGFyZ2V0IiBhdHRyaWJ1dGUuCiAgICAgICAgKGNwX3BhcnNlcl9vbXBfdGFyZ2V0 X2RhdGEpOiBTZXQgT01QX1JFUVVJUkVTX1RBUkdFVF9VU0VEIGluCiAgICAgICAgb21wX3Jl cXVpcmVzX21hc2suCiAgICAgICAgKGNwX3BhcnNlcl9vbXBfdGFyZ2V0X2VudGVyX2RhdGEp OiBMaWtld2lzZS4KICAgICAgICAoY3BfcGFyc2VyX29tcF90YXJnZXRfZXhpdF9kYXRhKTog TGlrZXdpc2UuCiAgICAgICAgKGNwX3BhcnNlcl9vbXBfcmVxdWlyZXMpOiBSZW1vdmUgc29y cnkuCgpnY2MvZm9ydHJhbi9DaGFuZ2VMb2c6CgogICAgICAgICogb3Blbm1wLmNjIChnZmNf bWF0Y2hfb21wX3JlcXVpcmVzKTogUmVtb3ZlICJub3QgaW1wbGVtZW50ZWQgeWV0Ii4KICAg ICAgICAqIHBhcnNlLmNjOiBJbmNsdWRlICJ0cmVlLmgiIGFuZCAib21wLWdlbmVyYWwuaCIu CiAgICAgICAgKGdmY19wYXJzZV9maWxlKTogQWRkIGNvZGUgdG8gbWVyZ2Ugb21wX3JlcXVp cmVzIHRvIG9tcF9yZXF1aXJlc19tYXNrLgoKZ2NjL0NoYW5nZUxvZzoKCgkqIGx0by1jZ3Jh cGguY2MgKG91dHB1dF9vZmZsb2FkX3RhYmxlcyk6IE91dHB1dCBvbXBfcmVxdWlyZXNfbWFz aywKCWJ1dCBvbmx5IGlmIE9NUF9SRVFVSVJFU19UQVJHRVRfVVNFRC4KCShvbXBfcmVxdWly ZXNfdG9fbmFtZSk6IE5ldy4KCShpbnB1dF9vZmZsb2FkX3RhYmxlcyk6IFJlYWQgb21wX3Jl cXVpcmVzX21hc2sgYW5kIGNoZWNrIHdoZXRoZXIKCWFsbCBjb21waWxhdGlvbiB1bml0cyB1 c2UgdGhlIHNhbWUgdmFsdWUuCgkqIG9tcC1vZmZsb2FkLmNjIChvbXBfZmluaXNoX2ZpbGUp OiBPdXRwdXQgb21wX3JlcXVpcmVzX21hc2sgYXMKCXdlYWsgc3ltYm9sICdfX29mZmxvYWRf cmVxdWlyZXNfbWFzaycuCgppbmNsdWRlL0NoYW5nZUxvZzoKCgkqIGdvbXAtY29uc3RhbnRz LmggKEdPTVBfUkVRVUlSRVNfVU5JRklFRF9BRERSRVNTLAoJR09NUF9SRVFVSVJFU19VTklG SUVEX1NIQVJFRF9NRU1PUlksCglHT01QX1JFUVVJUkVTX1JFVkVSU0VfT0ZGTE9BRCk6IE5l dy4KCmxpYmdvbXAvQ2hhbmdlTG9nOgoKICAgICAgICAqIGxpYmdvbXAtcGx1Z2luLmggKEdP TVBfT0ZGTE9BRF9nZXRfbnVtX2RldmljZXMpOiBBZGQKICAgICAgICBvbXBfcmVxdWlyZXNf bWFzayBhcmcuCiAgICAgICAgKiBwbHVnaW4vcGx1Z2luLWdjbi5jIChHT01QX09GRkxPQURf Z2V0X251bV9kZXZpY2VzKTogTGlrZXdpc2U7CiAgICAgICAgcmV0dXJuIC0xIHdoZW4gZGV2 aWNlIGF2YWlsYWJsZSBidXQgb21wX3JlcXVpcmVzX21hc2sgIT0gMC4KICAgICAgICAqIHBs dWdpbi9wbHVnaW4tbnZwdHguYyAoR09NUF9PRkZMT0FEX2dldF9udW1fZGV2aWNlcyk6IExp a2V3aXNlLgogICAgICAgICogb2FjYy1ob3N0LmMgKGhvc3RfZ2V0X251bV9kZXZpY2VzLCBo b3N0X29wZW5hY2NfZ2V0X3Byb3BlcnR5KToKICAgICAgICBVcGRhdGUgY2FsbC4KICAgICAg ICAqIG9hY2MtaW5pdC5jIChyZXNvbHZlX2RldmljZSwgYWNjX2luaXRfMSwgYWNjX3NodXRk b3duXzEsCiAgICAgICAgZ29hY2NfYXR0YWNoX2hvc3RfdGhyZWFkX3RvX2RldmljZSwgYWNj X2dldF9udW1fZGV2aWNlcywKICAgICAgICBhY2Nfc2V0X2RldmljZV9udW0sIGdldF9wcm9w ZXJ0eV9hbnkpOiBMaWtld2lzZS4KCSogdGFyZ2V0LmMgKF9fb2ZmbG9hZF9yZXF1aXJlc19t YXNrKTogRGVjbGFyZSBleHRlcm4gd2VhayB2YXIuCgkoZ29tcF9yZXF1aXJlc190b19uYW1l KTogTmV3LgoJKGdvbXBfdGFyZ2V0X2luaXQpOiBQYXNzIF9fb2ZmbG9hZF9yZXF1aXJlc19t YXNrIHRvCglnZXRfbnVtX2RldmljZXNfZnVuYywgd2FybiBpZiBkZXZpY2VzIHByZXNlbnQg d2hpY2ggZG8gbm90IGZ1bGZpbGwKCXJlcXVpcmVtZW50cy4KCSogdGVzdHN1aXRlL2xpYmdv bXAuYy1jKystY29tbW9uL3JlcXVpcmVzLTEtYXV4LmM6IE5ldyB0ZXN0LgoJKiB0ZXN0c3Vp dGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtMS5jOiBOZXcgdGVzdC4KCSogdGVz dHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL3JlcXVpcmVzLTItYXV4LmM6IE5ldyB0ZXN0 LgoJKiB0ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtMi5jOiBOZXcg dGVzdC4KCSogdGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL3JlcXVpcmVzLTMtYXV4 LmM6IE5ldyB0ZXN0LgoJKiB0ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWly ZXMtMy5jOiBOZXcgdGVzdC4KCSogdGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL3Jl cXVpcmVzLTQtYXV4LmM6IE5ldyB0ZXN0LgoJKiB0ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1j b21tb24vcmVxdWlyZXMtNC5jOiBOZXcgdGVzdC4KCSogdGVzdHN1aXRlL2xpYmdvbXAuYy1j KystY29tbW9uL3JlcXVpcmVzLTUtYXV4LmM6IE5ldyB0ZXN0LgoJKiB0ZXN0c3VpdGUvbGli Z29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtNS5jOiBOZXcgdGVzdC4KCSogdGVzdHN1aXRl L2xpYmdvbXAuYy1jKystY29tbW9uL3JlcXVpcmVzLTYuYzogTmV3IHRlc3QuCgpsaWJvZmZs b2FkbWljL0NoYW5nZUxvZzoKCgkqIHBsdWdpbi9saWJnb21wLXBsdWdpbi1pbnRlbG1pYy5j cHAgKEdPTVBfT0ZGTE9BRF9nZXRfbnVtX2RldmljZXMpOgoJUmV0dXJuIC0xIHdoZW4gZGV2 aWNlIGF2YWlsYWJsZSBidXQgb21wX3JlcXVpcmVzX21hc2sgIT0gMC4KCmdjYy90ZXN0c3Vp dGUvQ2hhbmdlTG9nOgoKICAgICAgICAqIGMtYysrLWNvbW1vbi9nb21wL3JlcXVpcmVzLTQu YzogVXBkYXRlIGRnLSouCgkqIGMtYysrLWNvbW1vbi9nb21wL3JldmVyc2Utb2ZmbG9hZC0x LmM6IExpa2V3aXNlLgogICAgICAgICogYy1jKystY29tbW9uL2dvbXAvdGFyZ2V0LWRldmlj ZS1hbmNlc3Rvci0yLmM6IExpa2V3aXNlLgogICAgICAgICogYy1jKystY29tbW9uL2dvbXAv dGFyZ2V0LWRldmljZS1hbmNlc3Rvci0zLmM6IExpa2V3aXNlLgogICAgICAgICogYy1jKyst Y29tbW9uL2dvbXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci00LmM6IExpa2V3aXNlLgogICAg ICAgICogYy1jKystY29tbW9uL2dvbXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci01LmM6IExp a2V3aXNlLgogICAgICAgICogZ2ZvcnRyYW4uZGcvZ29tcC90YXJnZXQtZGV2aWNlLWFuY2Vz dG9yLTMuZjkwOiBMaWtld2lzZS4KICAgICAgICAqIGdmb3J0cmFuLmRnL2dvbXAvdGFyZ2V0 LWRldmljZS1hbmNlc3Rvci00LmY5MDogTGlrZXdpc2UuCiAgICAgICAgKiBnZm9ydHJhbi5k Zy9nb21wL3RhcmdldC1kZXZpY2UtYW5jZXN0b3ItMi5mOTA6IExpa2V3aXNlLiBNb3ZlIHBv c3QtRkUKICAgICAgICBjaGVja3MgdG8gLi4uCiAgICAgICAgKiBnZm9ydHJhbi5kZy9nb21w L3RhcmdldC1kZXZpY2UtYW5jZXN0b3ItMmEuZjkwOiAuLi4gdGhpcyBuZXcgZmlsZS4KCkNv LWF1dGhvcmVkLWJ5OiBDaHVuZy1MaW4gVGFuZyA8Y2x0YW5nQGNvZGVzb3VyY2VyeS5jb20+ CkNvLWF1dGhvcmVkLWJ5OiBUaG9tYXMgU2Nod2luZ2UgPHRob21hc0Bjb2Rlc291cmNlcnku Y29tPgoKIGdjYy9jL2MtcGFyc2VyLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgMjEgKysrKystCiBnY2MvY3AvcGFyc2VyLmNjICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDIwICsrKysrLQogZ2NjL2ZvcnRyYW4vb3Blbm1wLmNjICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCAtLQogZ2NjL2ZvcnRyYW4vcGFyc2UuY2Mg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMSArKysrKysKIGdjYy9sdG8tY2dy YXBoLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNTMgKysrKysrKysr KysrKy0KIGdjYy9vbXAtb2ZmbG9hZC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgMjEgKysrKysrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3JlcXVp cmVzLTQuYyAgICAgICB8ICAyIC0KIC4uLi9jLWMrKy1jb21tb24vZ29tcC9yZXZlcnNlLW9m ZmxvYWQtMS5jICAgICAgICAgIHwgIDIgKy0KIC4uLi9jLWMrKy1jb21tb24vZ29tcC90YXJn ZXQtZGV2aWNlLWFuY2VzdG9yLTIuYyAgIHwgMTAgKystCiAuLi4vYy1jKystY29tbW9uL2dv bXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci0zLmMgICB8ICAyICstCiAuLi4vYy1jKystY29t bW9uL2dvbXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci00LmMgICB8ICA0ICstCiAuLi4vYy1j KystY29tbW9uL2dvbXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci01LmMgICB8ICAyICstCiAu Li4vZ2ZvcnRyYW4uZGcvZ29tcC90YXJnZXQtZGV2aWNlLWFuY2VzdG9yLTIuZjkwICB8IDcw ICsrLS0tLS0tLS0tLS0tLS0tLS0KIC4uLi9nZm9ydHJhbi5kZy9nb21wL3RhcmdldC1kZXZp Y2UtYW5jZXN0b3ItMmEuZjkwIHwgODAgKysrKysrKysrKysrKysrKysrKysrKwogLi4uL2dm b3J0cmFuLmRnL2dvbXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci0zLmY5MCAgfCAgNiArLQog Li4uL2dmb3J0cmFuLmRnL2dvbXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci00LmY5MCAgfCAg NiArLQogLi4uL2dmb3J0cmFuLmRnL2dvbXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci01LmY5 MCAgfCAgOCArLS0KIGluY2x1ZGUvZ29tcC1jb25zdGFudHMuaCAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDYgKysKIGxpYmdvbXAvbGliZ29tcC1wbHVnaW4uaCAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDIgKy0KIGxpYmdvbXAvb2FjYy1ob3N0LmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIGxpYmdvbXAvb2FjYy1pbml0LmMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYgKystLS0KIGxpYmdvbXAvcGx1Z2lu L3BsdWdpbi1nY24uYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKy0KIGxpYmdvbXAv cGx1Z2luL3BsdWdpbi1udnB0eC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDkgKystCiBs aWJnb21wL3RhcmdldC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQw ICsrKysrKysrKystCiAuLi4vbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtMS1hdXgu YyAgICAgICAgICB8IDExICsrKwogLi4uL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1v bi9yZXF1aXJlcy0xLmMgICAgfCAyNCArKysrKysrCiAuLi4vbGliZ29tcC5jLWMrKy1jb21t b24vcmVxdWlyZXMtMi1hdXguYyAgICAgICAgICB8ICA5ICsrKwogLi4uL3Rlc3RzdWl0ZS9s aWJnb21wLmMtYysrLWNvbW1vbi9yZXF1aXJlcy0yLmMgICAgfCAyNSArKysrKysrCiAuLi4v bGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtMy1hdXguYyAgICAgICAgICB8IDExICsr KwogLi4uL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9yZXF1aXJlcy0zLmMgICAg fCAyNCArKysrKysrCiAuLi4vbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtNC1hdXgu YyAgICAgICAgICB8IDEzICsrKysKIC4uLi90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21t b24vcmVxdWlyZXMtNC5jICAgIHwgMjMgKysrKysrKwogLi4uL2xpYmdvbXAuYy1jKystY29t bW9uL3JlcXVpcmVzLTUtYXV4LmMgICAgICAgICAgfCAxMSArKysKIC4uLi90ZXN0c3VpdGUv bGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtNS5jICAgIHwgMjAgKysrKysrCiAuLi4v dGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL3JlcXVpcmVzLTYuYyAgICB8IDE3ICsr KysrCiBsaWJvZmZsb2FkbWljL3BsdWdpbi9saWJnb21wLXBsdWdpbi1pbnRlbG1pYy5jcHAg ICB8ICA2ICstCiAzNiBmaWxlcyBjaGFuZ2VkLCA0OTMgaW5zZXJ0aW9ucygrKSwgMTE2IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2djYy9jL2MtcGFyc2VyLmNjIGIvZ2NjL2MvYy1w YXJzZXIuY2MKaW5kZXggMTcwNGE1MmJlMTIuLjQ3NDhjZTA0NzM3IDEwMDY0NAotLS0gYS9n Y2MvYy9jLXBhcnNlci5jYworKysgYi9nY2MvYy9jLXBhcnNlci5jYwpAQCAtMjQ4OCw2ICsy NDg4LDEyIEBAIGNfcGFyc2VyX2RlY2xhcmF0aW9uX29yX2ZuZGVmIChjX3BhcnNlciAqcGFy c2VyLCBib29sIGZuZGVmX29rLAogCSAgYnJlYWs7CiAJfQogCisgICAgICBpZiAoZmxhZ19v cGVubXAKKwkgICYmIGxvb2t1cF9hdHRyaWJ1dGUgKCJvbXAgZGVjbGFyZSB0YXJnZXQiLAor CQkJICAgICAgIERFQ0xfQVRUUklCVVRFUyAoY3VycmVudF9mdW5jdGlvbl9kZWNsKSkpCisJ b21wX3JlcXVpcmVzX21hc2sKKwkgID0gKGVudW0gb21wX3JlcXVpcmVzKSAob21wX3JlcXVp cmVzX21hc2sgfCBPTVBfUkVRVUlSRVNfVEFSR0VUX1VTRUQpOworCiAgICAgICBpZiAoREVD TF9ERUNMQVJFRF9JTkxJTkVfUCAoY3VycmVudF9mdW5jdGlvbl9kZWNsKSkKICAgICAgICAg dHYgPSBUVl9QQVJTRV9JTkxJTkU7CiAgICAgICBlbHNlCkBAIC0yMDkxNSw2ICsyMDkyMSwx MCBAQCBjX3BhcnNlcl9vbXBfdGVhbXMgKGxvY2F0aW9uX3QgbG9jLCBjX3BhcnNlciAqcGFy c2VyLAogc3RhdGljIHRyZWUKIGNfcGFyc2VyX29tcF90YXJnZXRfZGF0YSAobG9jYXRpb25f dCBsb2MsIGNfcGFyc2VyICpwYXJzZXIsIGJvb2wgKmlmX3ApCiB7CisgIGlmIChmbGFnX29w ZW5tcCkKKyAgICBvbXBfcmVxdWlyZXNfbWFzaworICAgICAgPSAoZW51bSBvbXBfcmVxdWly ZXMpIChvbXBfcmVxdWlyZXNfbWFzayB8IE9NUF9SRVFVSVJFU19UQVJHRVRfVVNFRCk7CisK ICAgdHJlZSBjbGF1c2VzCiAgICAgPSBjX3BhcnNlcl9vbXBfYWxsX2NsYXVzZXMgKHBhcnNl ciwgT01QX1RBUkdFVF9EQVRBX0NMQVVTRV9NQVNLLAogCQkJCSIjcHJhZ21hIG9tcCB0YXJn ZXQgZGF0YSIpOwpAQCAtMjEwNTcsNiArMjEwNjcsMTAgQEAgY19wYXJzZXJfb21wX3Rhcmdl dF9lbnRlcl9kYXRhIChsb2NhdGlvbl90IGxvYywgY19wYXJzZXIgKnBhcnNlciwKICAgICAg IHJldHVybiB0cnVlOwogICAgIH0KIAorICBpZiAoZmxhZ19vcGVubXApCisgICAgb21wX3Jl cXVpcmVzX21hc2sKKyAgICAgID0gKGVudW0gb21wX3JlcXVpcmVzKSAob21wX3JlcXVpcmVz X21hc2sgfCBPTVBfUkVRVUlSRVNfVEFSR0VUX1VTRUQpOworCiAgIHRyZWUgY2xhdXNlcwog ICAgID0gY19wYXJzZXJfb21wX2FsbF9jbGF1c2VzIChwYXJzZXIsIE9NUF9UQVJHRVRfRU5U RVJfREFUQV9DTEFVU0VfTUFTSywKIAkJCQkiI3ByYWdtYSBvbXAgdGFyZ2V0IGVudGVyIGRh dGEiKTsKQEAgLTIxMTQzLDYgKzIxMTU3LDEwIEBAIGNfcGFyc2VyX29tcF90YXJnZXRfZXhp dF9kYXRhIChsb2NhdGlvbl90IGxvYywgY19wYXJzZXIgKnBhcnNlciwKICAgICAgIHJldHVy biB0cnVlOwogICAgIH0KIAorICBpZiAoZmxhZ19vcGVubXApCisgICAgb21wX3JlcXVpcmVz X21hc2sKKyAgICAgID0gKGVudW0gb21wX3JlcXVpcmVzKSAob21wX3JlcXVpcmVzX21hc2sg fCBPTVBfUkVRVUlSRVNfVEFSR0VUX1VTRUQpOworCiAgIHRyZWUgY2xhdXNlcwogICAgID0g Y19wYXJzZXJfb21wX2FsbF9jbGF1c2VzIChwYXJzZXIsIE9NUF9UQVJHRVRfRVhJVF9EQVRB X0NMQVVTRV9NQVNLLAogCQkJCSIjcHJhZ21hIG9tcCB0YXJnZXQgZXhpdCBkYXRhIik7CkBA IC0yMjc2Myw5ICsyMjc4MSw2IEBAIGNfcGFyc2VyX29tcF9yZXF1aXJlcyAoY19wYXJzZXIg KnBhcnNlcikKIAkgICAgICBjX3BhcnNlcl9za2lwX3RvX3ByYWdtYV9lb2wgKHBhcnNlciwg ZmFsc2UpOwogCSAgICAgIHJldHVybjsKIAkgICAgfQotCSAgaWYgKHAgJiYgdGhpc19yZXEg IT0gT01QX1JFUVVJUkVTX0RZTkFNSUNfQUxMT0NBVE9SUykKLQkgICAgc29ycnlfYXQgKGNs b2MsICIlcXMgY2xhdXNlIG9uICU8cmVxdWlyZXMlPiBkaXJlY3RpdmUgbm90ICIKLQkJCSAg ICAic3VwcG9ydGVkIHlldCIsIHApOwogCSAgaWYgKHApCiAJICAgIGNfcGFyc2VyX2NvbnN1 bWVfdG9rZW4gKHBhcnNlcik7CiAJICBpZiAodGhpc19yZXEpCmRpZmYgLS1naXQgYS9nY2Mv Y3AvcGFyc2VyLmNjIGIvZ2NjL2NwL3BhcnNlci5jYwppbmRleCBkYTJmMzcwY2RjYS4uNmUy NmQxMjMzNzAgMTAwNjQ0Ci0tLSBhL2djYy9jcC9wYXJzZXIuY2MKKysrIGIvZ2NjL2NwL3Bh cnNlci5jYwpAQCAtMTUzODksNiArMTUzODksMTEgQEAgY3BfcGFyc2VyX3NpbXBsZV9kZWNs YXJhdGlvbiAoY3BfcGFyc2VyKiBwYXJzZXIsCiAJICAvKiBPdGhlcndpc2UsIHdlJ3JlIGRv bmUgd2l0aCB0aGUgbGlzdCBvZiBkZWNsYXJhdG9ycy4gICovCiAJICBlbHNlCiAJICAgIHsK KwkgICAgICBpZiAoZmxhZ19vcGVubXAgJiYgbG9va3VwX2F0dHJpYnV0ZSAoIm9tcCBkZWNs YXJlIHRhcmdldCIsCisJCQkJCQkgICBERUNMX0FUVFJJQlVURVMgKGRlY2wpKSkKKwkJb21w X3JlcXVpcmVzX21hc2sKKwkJICA9IChlbnVtIG9tcF9yZXF1aXJlcykgKG9tcF9yZXF1aXJl c19tYXNrCisJCQkJCSB8IE9NUF9SRVFVSVJFU19UQVJHRVRfVVNFRCk7CiAJICAgICAgcG9w X2RlZmVycmluZ19hY2Nlc3NfY2hlY2tzICgpOwogCSAgICAgIGNwX2ZpbmFsaXplX29tcF9k ZWNsYXJlX3NpbWQgKHBhcnNlciwgJm9kc2QpOwogCSAgICAgIHJldHVybjsKQEAgLTQ0Mjg3 LDYgKzQ0MjkyLDEwIEBAIGNwX3BhcnNlcl9vbXBfdGVhbXMgKGNwX3BhcnNlciAqcGFyc2Vy LCBjcF90b2tlbiAqcHJhZ21hX3RvaywKIHN0YXRpYyB0cmVlCiBjcF9wYXJzZXJfb21wX3Rh cmdldF9kYXRhIChjcF9wYXJzZXIgKnBhcnNlciwgY3BfdG9rZW4gKnByYWdtYV90b2ssIGJv b2wgKmlmX3ApCiB7CisgIGlmIChmbGFnX29wZW5tcCkKKyAgICBvbXBfcmVxdWlyZXNfbWFz aworICAgICAgPSAoZW51bSBvbXBfcmVxdWlyZXMpIChvbXBfcmVxdWlyZXNfbWFzayB8IE9N UF9SRVFVSVJFU19UQVJHRVRfVVNFRCk7CisKICAgdHJlZSBjbGF1c2VzCiAgICAgPSBjcF9w YXJzZXJfb21wX2FsbF9jbGF1c2VzIChwYXJzZXIsIE9NUF9UQVJHRVRfREFUQV9DTEFVU0Vf TUFTSywKIAkJCQkgIiNwcmFnbWEgb21wIHRhcmdldCBkYXRhIiwgcHJhZ21hX3Rvayk7CkBA IC00NDM5MCw2ICs0NDM5OSwxMCBAQCBjcF9wYXJzZXJfb21wX3RhcmdldF9lbnRlcl9kYXRh IChjcF9wYXJzZXIgKnBhcnNlciwgY3BfdG9rZW4gKnByYWdtYV90b2ssCiAgICAgICByZXR1 cm4gdHJ1ZTsKICAgICB9CiAKKyAgaWYgKGZsYWdfb3Blbm1wKQorICAgIG9tcF9yZXF1aXJl c19tYXNrCisgICAgICA9IChlbnVtIG9tcF9yZXF1aXJlcykgKG9tcF9yZXF1aXJlc19tYXNr IHwgT01QX1JFUVVJUkVTX1RBUkdFVF9VU0VEKTsKKwogICB0cmVlIGNsYXVzZXMKICAgICA9 IGNwX3BhcnNlcl9vbXBfYWxsX2NsYXVzZXMgKHBhcnNlciwgT01QX1RBUkdFVF9FTlRFUl9E QVRBX0NMQVVTRV9NQVNLLAogCQkJCSAiI3ByYWdtYSBvbXAgdGFyZ2V0IGVudGVyIGRhdGEi LCBwcmFnbWFfdG9rKTsKQEAgLTQ0NDgxLDYgKzQ0NDk0LDEwIEBAIGNwX3BhcnNlcl9vbXBf dGFyZ2V0X2V4aXRfZGF0YSAoY3BfcGFyc2VyICpwYXJzZXIsIGNwX3Rva2VuICpwcmFnbWFf dG9rLAogICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgIGlmIChmbGFnX29wZW5tcCkK KyAgICBvbXBfcmVxdWlyZXNfbWFzaworICAgICAgPSAoZW51bSBvbXBfcmVxdWlyZXMpIChv bXBfcmVxdWlyZXNfbWFzayB8IE9NUF9SRVFVSVJFU19UQVJHRVRfVVNFRCk7CisKICAgdHJl ZSBjbGF1c2VzCiAgICAgPSBjcF9wYXJzZXJfb21wX2FsbF9jbGF1c2VzIChwYXJzZXIsIE9N UF9UQVJHRVRfRVhJVF9EQVRBX0NMQVVTRV9NQVNLLAogCQkJCSAiI3ByYWdtYSBvbXAgdGFy Z2V0IGV4aXQgZGF0YSIsIHByYWdtYV90b2spOwpAQCAtNDY4NjEsOSArNDY4NzgsNiBAQCBj cF9wYXJzZXJfb21wX3JlcXVpcmVzIChjcF9wYXJzZXIgKnBhcnNlciwgY3BfdG9rZW4gKnBy YWdtYV90b2spCiAJICAgICAgY3BfcGFyc2VyX3NraXBfdG9fcHJhZ21hX2VvbCAocGFyc2Vy LCBwcmFnbWFfdG9rKTsKIAkgICAgICByZXR1cm4gZmFsc2U7CiAJICAgIH0KLQkgIGlmIChw ICYmIHRoaXNfcmVxICE9IE9NUF9SRVFVSVJFU19EWU5BTUlDX0FMTE9DQVRPUlMpCi0JICAg IHNvcnJ5X2F0IChjbG9jLCAiJXFzIGNsYXVzZSBvbiAlPHJlcXVpcmVzJT4gZGlyZWN0aXZl IG5vdCAiCi0JCQkgICAgInN1cHBvcnRlZCB5ZXQiLCBwKTsKIAkgIGlmIChwKQogCSAgICBj cF9sZXhlcl9jb25zdW1lX3Rva2VuIChwYXJzZXItPmxleGVyKTsKIAkgIGlmICh0aGlzX3Jl cSkKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL29wZW5tcC5jYyBiL2djYy9mb3J0cmFuL29w ZW5tcC5jYwppbmRleCBhZWI4YTQzZTEyZS4uYTY4NzExMDgxZTIgMTAwNjQ0Ci0tLSBhL2dj Yy9mb3J0cmFuL29wZW5tcC5jYworKysgYi9nY2MvZm9ydHJhbi9vcGVubXAuY2MKQEAgLTU0 ODgsMTAgKzU0ODgsNiBAQCBnZmNfbWF0Y2hfb21wX3JlcXVpcmVzICh2b2lkKQogICAgICAg ZWxzZQogCWdvdG8gZXJyb3I7CiAKLSAgICAgIGlmIChyZXF1aXJlc19jbGF1c2UgJiB+KE9N UF9SRVFfQVRPTUlDX01FTV9PUkRFUl9NQVNLCi0JCQkgICAgICB8IE9NUF9SRVFfRFlOQU1J Q19BTExPQ0FUT1JTKSkKLQlnZmNfZXJyb3Jfbm93ICgiU29ycnksICVxcyBjbGF1c2UgYXQg JUwgb24gUkVRVUlSRVMgZGlyZWN0aXZlIGlzIG5vdCAiCi0JCSAgICAgICAieWV0IHN1cHBv cnRlZCIsIGNsYXVzZSwgJm9sZF9sb2MpOwogICAgICAgaWYgKCFnZmNfb21wX3JlcXVpcmVz X2FkZF9jbGF1c2UgKHJlcXVpcmVzX2NsYXVzZSwgY2xhdXNlLCAmb2xkX2xvYywgTlVMTCkp CiAJZ290byBlcnJvcjsKICAgICAgIHJlcXVpcmVzX2NsYXVzZXMgfD0gcmVxdWlyZXNfY2xh dXNlOwpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vcGFyc2UuY2MgYi9nY2MvZm9ydHJhbi9w YXJzZS5jYwppbmRleCA3MzU2ZDFiNWEzYS4uYjE0MmUxNjlhNWMgMTAwNjQ0Ci0tLSBhL2dj Yy9mb3J0cmFuL3BhcnNlLmNjCisrKyBiL2djYy9mb3J0cmFuL3BhcnNlLmNjCkBAIC02OTA4 LDYgKzY5MDgsMjcgQEAgZG9uZToKICAgICAgIGJyZWFrOwogICAgIH0KIAorICBpZiAob21w X3JlcXVpcmVzICYgT01QX1JFUV9UQVJHRVRfTUFTSykKKyAgICB7CisgICAgICBvbXBfcmVx dWlyZXNfbWFzayA9IChlbnVtIG9tcF9yZXF1aXJlcykgKG9tcF9yZXF1aXJlc19tYXNrCisJ CQkJCSAgICAgICB8IE9NUF9SRVFVSVJFU19UQVJHRVRfVVNFRCk7CisgICAgICBpZiAob21w X3JlcXVpcmVzICYgT01QX1JFUV9SRVZFUlNFX09GRkxPQUQpCisJb21wX3JlcXVpcmVzX21h c2sKKwkgID0gKGVudW0gb21wX3JlcXVpcmVzKSAob21wX3JlcXVpcmVzX21hc2sKKwkJCQkg fCBPTVBfUkVRVUlSRVNfUkVWRVJTRV9PRkZMT0FEKTsKKyAgICAgIGlmIChvbXBfcmVxdWly ZXMgJiBPTVBfUkVRX1VOSUZJRURfQUREUkVTUykKKwlvbXBfcmVxdWlyZXNfbWFzaworCSAg PSAoZW51bSBvbXBfcmVxdWlyZXMpIChvbXBfcmVxdWlyZXNfbWFzaworCQkJCSB8IE9NUF9S RVFVSVJFU19VTklGSUVEX0FERFJFU1MpOworICAgICAgaWYgKG9tcF9yZXF1aXJlcyAmIE9N UF9SRVFfVU5JRklFRF9TSEFSRURfTUVNT1JZKQorCW9tcF9yZXF1aXJlc19tYXNrCisJICA9 IChlbnVtIG9tcF9yZXF1aXJlcykgKG9tcF9yZXF1aXJlc19tYXNrCisJCQkJIHwgT01QX1JF UVVJUkVTX1VOSUZJRURfU0hBUkVEX01FTU9SWSk7CisgICAgfQorCisgIGlmIChvbXBfcmVx dWlyZXMgJiBPTVBfUkVRX0RZTkFNSUNfQUxMT0NBVE9SUykKKyAgICBvbXBfcmVxdWlyZXNf bWFzaworCT0gKGVudW0gb21wX3JlcXVpcmVzKSAob21wX3JlcXVpcmVzX21hc2sgfCBPTVBf UkVRVUlSRVNfRFlOQU1JQ19BTExPQ0FUT1JTKTsKICAgLyogRG8gdGhlIHBhcnNlIHRyZWUg ZHVtcC4gICovCiAgIGdmY19jdXJyZW50X25zID0gZmxhZ19kdW1wX2ZvcnRyYW5fb3JpZ2lu YWwgPyBnZmNfZ2xvYmFsX25zX2xpc3QgOiBOVUxMOwogCmRpZmYgLS1naXQgYS9nY2MvbHRv LWNncmFwaC5jYyBiL2djYy9sdG8tY2dyYXBoLmNjCmluZGV4IDIzNzc0M2VmMGJhLi4xYjY3 YzQ5MTZjNCAxMDA2NDQKLS0tIGEvZ2NjL2x0by1jZ3JhcGguY2MKKysrIGIvZ2NjL2x0by1j Z3JhcGguY2MKQEAgLTM3LDYgKzM3LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmls ZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKICNpbmNsdWRlICJwYXNzX21hbmFnZXIuaCIKICNp bmNsdWRlICJpcGEtdXRpbHMuaCIKICNpbmNsdWRlICJvbXAtb2ZmbG9hZC5oIgorI2luY2x1 ZGUgIm9tcC1nZW5lcmFsLmgiCiAjaW5jbHVkZSAic3RyaW5ncG9vbC5oIgogI2luY2x1ZGUg ImF0dHJpYnMuaCIKICNpbmNsdWRlICJhbGxvYy1wb29sLmgiCkBAIC0xMDY4LDEyICsxMDY5 LDI4IEBAIHJlYWRfc3RyaW5nIChjbGFzcyBsdG9faW5wdXRfYmxvY2sgKmliKQogdm9pZAog b3V0cHV0X29mZmxvYWRfdGFibGVzICh2b2lkKQogewotICBpZiAodmVjX3NhZmVfaXNfZW1w dHkgKG9mZmxvYWRfZnVuY3MpICYmIHZlY19zYWZlX2lzX2VtcHR5IChvZmZsb2FkX3ZhcnMp KQorICBib29sIG91dHB1dF9yZXF1aXJlcyA9IChmbGFnX29wZW5tcAorCQkJICAmJiAob21w X3JlcXVpcmVzX21hc2sgJiBPTVBfUkVRVUlSRVNfVEFSR0VUX1VTRUQpICE9IDApOworICBp ZiAodmVjX3NhZmVfaXNfZW1wdHkgKG9mZmxvYWRfZnVuY3MpICYmIHZlY19zYWZlX2lzX2Vt cHR5IChvZmZsb2FkX3ZhcnMpCisgICAgICAmJiAhb3V0cHV0X3JlcXVpcmVzKQogICAgIHJl dHVybjsKIAogICBzdHJ1Y3QgbHRvX3NpbXBsZV9vdXRwdXRfYmxvY2sgKm9iCiAgICAgPSBs dG9fY3JlYXRlX3NpbXBsZV9vdXRwdXRfYmxvY2sgKExUT19zZWN0aW9uX29mZmxvYWRfdGFi bGUpOwogCisgIGlmIChvdXRwdXRfcmVxdWlyZXMpCisgICAgeworICAgICAgSE9TVF9XSURF X0lOVCB2YWwgPSAoKEhPU1RfV0lERV9JTlQpIG9tcF9yZXF1aXJlc19tYXNrCisJCQkgICAm IChPTVBfUkVRVUlSRVNfVU5JRklFRF9BRERSRVNTCisJCQkgICAgICB8IE9NUF9SRVFVSVJF U19VTklGSUVEX1NIQVJFRF9NRU1PUlkKKwkJCSAgICAgIHwgT01QX1JFUVVJUkVTX1JFVkVS U0VfT0ZGTE9BRAorCQkJICAgICAgfCBPTVBfUkVRVUlSRVNfVEFSR0VUX1VTRUQpKTsKKyAg ICAgIC8qIChNaXMpdXNlIExUT19zeW10YWJfZWRnZSBmb3IgdGhpcyB2YXJpYWJsZS4gICov CisgICAgICBzdHJlYW1lcl93cml0ZV9lbnVtIChvYi0+bWFpbl9zdHJlYW0sIExUT19zeW10 YWJfdGFncywKKwkJCSAgIExUT19zeW10YWJfbGFzdF90YWcsIExUT19zeW10YWJfZWRnZSk7 CisgICAgICBzdHJlYW1lcl93cml0ZV9od2lfc3RyZWFtIChvYi0+bWFpbl9zdHJlYW0sIHZh bCk7CisgICAgfQorCiAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2ZWNfc2FmZV9sZW5n dGggKG9mZmxvYWRfZnVuY3MpOyBpKyspCiAgICAgewogICAgICAgc3ltdGFiX25vZGUgKm5v ZGUgPSBzeW10YWJfbm9kZTo6Z2V0ICgoKm9mZmxvYWRfZnVuY3MpW2ldKTsKQEAgLTE3NjQs NiArMTc4MSwyMCBAQCBpbnB1dF9zeW10YWIgKHZvaWQpCiAgICAgfQogfQogCitzdGF0aWMg dm9pZAorb21wX3JlcXVpcmVzX3RvX25hbWUgKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIHVu c2lnbmVkIGludCByZXF1aXJlc19tYXNrKQoreworICBjaGFyICplbmQgPSBidWYgKyBzaXpl LCAqcCA9IGJ1ZjsKKyAgaWYgKHJlcXVpcmVzX21hc2sgJiBHT01QX1JFUVVJUkVTX1VOSUZJ RURfQUREUkVTUykKKyAgICBwICs9IHNucHJpbnRmIChwLCBlbmQgLSBwLCAidW5pZmllZF9h ZGRyZXNzIik7CisgIGlmIChyZXF1aXJlc19tYXNrICYgR09NUF9SRVFVSVJFU19VTklGSUVE X1NIQVJFRF9NRU1PUlkpCisgICAgcCArPSBzbnByaW50ZiAocCwgZW5kIC0gcCwgIiVzdW5p ZmllZF9zaGFyZWRfbWVtb3J5IiwKKwkJICAgKHAgPT0gYnVmID8gIiIgOiAiLCAiKSk7Cisg IGlmIChyZXF1aXJlc19tYXNrICYgR09NUF9SRVFVSVJFU19SRVZFUlNFX09GRkxPQUQpCisg ICAgcCArPSBzbnByaW50ZiAocCwgZW5kIC0gcCwgIiVzcmV2ZXJzZV9vZmZsb2FkIiwKKwkJ ICAgKHAgPT0gYnVmID8gIiIgOiAiLCAiKSk7Cit9CisKIC8qIElucHV0IGZ1bmN0aW9uL3Zh cmlhYmxlIHRhYmxlcyB0aGF0IHdpbGwgYWxsb3cgbGliZ29tcCB0byBsb29rIHVwIG9mZmxv YWQKICAgIHRhcmdldCBjb2RlLCBhbmQgc3RvcmUgdGhlbSBpbnRvIE9GRkxPQURfRlVOQ1Mg YW5kIE9GRkxPQURfVkFSUy4gICovCiAKQEAgLTE3NzQsNiArMTgwNSw4IEBAIGlucHV0X29m ZmxvYWRfdGFibGVzIChib29sIGRvX2ZvcmNlX291dHB1dCkKICAgc3RydWN0IGx0b19maWxl X2RlY2xfZGF0YSAqZmlsZV9kYXRhOwogICB1bnNpZ25lZCBpbnQgaiA9IDA7CiAKKyAgb21w X3JlcXVpcmVzX21hc2sgPSAob21wX3JlcXVpcmVzKSAwOworCiAgIHdoaWxlICgoZmlsZV9k YXRhID0gZmlsZV9kYXRhX3ZlY1tqKytdKSkKICAgICB7CiAgICAgICBjb25zdCBjaGFyICpk YXRhOwpAQCAtMTgxMSw2ICsxODQ0LDI0IEBAIGlucHV0X29mZmxvYWRfdGFibGVzIChib29s IGRvX2ZvcmNlX291dHB1dCkKIAkgICAgICBpZiAoZG9fZm9yY2Vfb3V0cHV0KQogCQl2YXJw b29sX25vZGU6OmdldCAodmFyX2RlY2wpLT5mb3JjZV9vdXRwdXQgPSAxOwogCSAgICB9CisJ ICBlbHNlIGlmICh0YWcgPT0gTFRPX3N5bXRhYl9lZGdlKQorCSAgICB7CisJICAgICAgc3Rh dGljIGJvb2wgZXJyb3JfZW1pdHRlZCA9IGZhbHNlOworCSAgICAgIEhPU1RfV0lERV9JTlQg dmFsID0gc3RyZWFtZXJfcmVhZF9od2kgKGliKTsKKworCSAgICAgIGlmIChvbXBfcmVxdWly ZXNfbWFzayA9PSAwKQorCQlvbXBfcmVxdWlyZXNfbWFzayA9IChvbXBfcmVxdWlyZXMpIHZh bDsKKwkgICAgICBlbHNlIGlmIChvbXBfcmVxdWlyZXNfbWFzayAhPSB2YWwgJiYgIWVycm9y X2VtaXR0ZWQpCisJCXsKKwkJICBjaGFyIGJ1Zls2NF0sIGJ1ZjJbNjRdOworCQkgIG9tcF9y ZXF1aXJlc190b19uYW1lIChidWYsIHNpemVvZiAoYnVmKSwgb21wX3JlcXVpcmVzX21hc2sp OworCQkgIG9tcF9yZXF1aXJlc190b19uYW1lIChidWYyLCBzaXplb2YgKGJ1ZjIpLCB2YWwp OworCQkgIGVycm9yICgiT3Blbk1QICU8cmVxdWlyZXMlPiBkaXJlY3RpdmUgd2l0aCBub24t aWRlbnRpY2FsICIKKwkJCSAiY2xhdXNlcyBpbiBtdWx0aXBsZSBjb21waWxhdGlvbiB1bml0 czogJXFzIHZzLiAlcXMiLAorCQkJIGJ1ZiwgYnVmMik7CisJCSAgZXJyb3JfZW1pdHRlZCA9 IHRydWU7CisJCX0KKwkgICAgfQogCSAgZWxzZQogCSAgICBmYXRhbF9lcnJvciAoaW5wdXRf bG9jYXRpb24sCiAJCQkgImludmFsaWQgb2ZmbG9hZCB0YWJsZSBpbiAlcyIsIGZpbGVfZGF0 YS0+ZmlsZV9uYW1lKTsKZGlmZiAtLWdpdCBhL2djYy9vbXAtb2ZmbG9hZC5jYyBiL2djYy9v bXAtb2ZmbG9hZC5jYwppbmRleCAzYTg5MTE5MzcxYy4uNjhlNGY2ZTA5OTMgMTAwNjQ0Ci0t LSBhL2djYy9vbXAtb2ZmbG9hZC5jYworKysgYi9nY2Mvb21wLW9mZmxvYWQuY2MKQEAgLTU1 LDYgKzU1LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElm IG5vdCBzZWUKICNpbmNsdWRlICJjb250ZXh0LmgiCiAjaW5jbHVkZSAiY29udmVydC5oIgog I2luY2x1ZGUgIm9wdHMuaCIKKyNpbmNsdWRlICJ2YXJhc20uaCIKIAogLyogRGVzY3JpYmUg dGhlIE9wZW5BQ0MgbG9vcGluZyBzdHJ1Y3R1cmUgb2YgYSBmdW5jdGlvbi4gIFRoZSBlbnRp cmUKICAgIGZ1bmN0aW9uIGlzIGhlbGQgaW4gYSAnTlVMTCcgbG9vcC4gICovCkBAIC0zOTgs NiArMzk5LDI2IEBAIG9tcF9maW5pc2hfZmlsZSAodm9pZCkKICAgdW5zaWduZWQgbnVtX2Z1 bmNzID0gdmVjX3NhZmVfbGVuZ3RoIChvZmZsb2FkX2Z1bmNzKTsKICAgdW5zaWduZWQgbnVt X3ZhcnMgPSB2ZWNfc2FmZV9sZW5ndGggKG9mZmxvYWRfdmFycyk7CiAKKyNpZm5kZWYgQUND RUxfQ09NUElMRVIKKyAgaWYgKGZsYWdfb3Blbm1wICYmIChvbXBfcmVxdWlyZXNfbWFzayAm IE9NUF9SRVFVSVJFU19UQVJHRVRfVVNFRCkgIT0gMCkKKyAgICB7CisgICAgICB0cmVlIHZh ciA9IGJ1aWxkX2RlY2wgKFVOS05PV05fTE9DQVRJT04sIFZBUl9ERUNMLAorCQkJCSBnZXRf aWRlbnRpZmllciAoIl9fb2ZmbG9hZF9yZXF1aXJlc19tYXNrIiksCisJCQkJIHVuc2lnbmVk X3R5cGVfbm9kZSk7CisgICAgICBUUkVFX1BVQkxJQyAodmFyKSA9IDE7CisgICAgICBUUkVF X1NUQVRJQyAodmFyKSA9IDE7CisgICAgICBUUkVFX1JFQURPTkxZICh2YXIpID0gMTsKKyAg ICAgIERFQ0xfSU5JVElBTCAodmFyKQorCT0gYnVpbGRfaW50X2NzdCAodW5zaWduZWRfdHlw ZV9ub2RlLAorCQkJICgodW5zaWduZWQgaW50KSBvbXBfcmVxdWlyZXNfbWFzaworCQkJICAm IChPTVBfUkVRVUlSRVNfVU5JRklFRF9BRERSRVNTCisJCQkgICAgIHwgT01QX1JFUVVJUkVT X1VOSUZJRURfU0hBUkVEX01FTU9SWQorCQkJICAgICB8IE9NUF9SRVFVSVJFU19SRVZFUlNF X09GRkxPQUQpKSk7CisgICAgICBkZWNsYXJlX3dlYWsgKHZhcik7CisgICAgICB2YXJwb29s X25vZGU6OmZpbmFsaXplX2RlY2wgKHZhcik7CisgICAgfQorI2VuZGlmCisKICAgaWYgKG51 bV9mdW5jcyA9PSAwICYmIG51bV92YXJzID09IDApCiAgICAgcmV0dXJuOwogCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3JlcXVpcmVzLTQuYyBiL2dj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvcmVxdWlyZXMtNC5jCmluZGV4IDg4YmE3 NzQ2Y2Y4Li44ZjQ1ZDgzZWE2ZSAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vZ29tcC9yZXF1aXJlcy00LmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vZ29tcC9yZXF1aXJlcy00LmMKQEAgLTksNSArOSwzIEBAIGZvbyAodm9pZCkKICNwcmFn bWEgb21wIHJlcXVpcmVzIHVuaWZpZWRfc2hhcmVkX21lbW9yeQkvKiB7IGRnLWVycm9yICIn dW5pZmllZF9zaGFyZWRfbWVtb3J5JyBjbGF1c2UgdXNlZCBsZXhpY2FsbHkgYWZ0ZXIgZmly c3QgdGFyZ2V0IGNvbnN0cnVjdCBvciBvZmZsb2FkaW5nIEFQSSIgfSAqLwogI3ByYWdtYSBv bXAgcmVxdWlyZXMgdW5pZmllZF9hZGRyZXNzCS8qIHsgZGctZXJyb3IgIid1bmlmaWVkX2Fk ZHJlc3MnIGNsYXVzZSB1c2VkIGxleGljYWxseSBhZnRlciBmaXJzdCB0YXJnZXQgY29uc3Ry dWN0IG9yIG9mZmxvYWRpbmcgQVBJIiB9ICovCiAjcHJhZ21hIG9tcCByZXF1aXJlcyByZXZl cnNlX29mZmxvYWQJLyogeyBkZy1lcnJvciAiJ3JldmVyc2Vfb2ZmbG9hZCcgY2xhdXNlIHVz ZWQgbGV4aWNhbGx5IGFmdGVyIGZpcnN0IHRhcmdldCBjb25zdHJ1Y3Qgb3Igb2ZmbG9hZGlu ZyBBUEkiIH0gKi8KLQotLyogeyBkZy1wcnVuZS1vdXRwdXQgIm5vdCBzdXBwb3J0ZWQgeWV0 IiB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3Jl dmVyc2Utb2ZmbG9hZC0xLmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3Jl dmVyc2Utb2ZmbG9hZC0xLmMKaW5kZXggOWEzZmE1MjMwZjguLjM0NTIxNTZmOTQ4IDEwMDY0 NAotLS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3JldmVyc2Utb2ZmbG9h ZC0xLmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9yZXZlcnNlLW9m ZmxvYWQtMS5jCkBAIC00Myw3ICs0Myw3IEBAIHRnX2ZuIChpbnQgKngsIGludCAqeSkKICAg eDIgPSB4MiArIDIgKyBjYWxsZWRfaW5fdGFyZ2V0MSAoKTsKICAgeTIgPSB5MiArIDc7CiAK LSAgI3ByYWdtYSBvbXAgdGFyZ2V0IGRldmljZShhbmNlc3RvciA6IDEpIG1hcCh0b2Zyb206 IHgyKQorICAjcHJhZ21hIG9tcCB0YXJnZXQgZGV2aWNlKGFuY2VzdG9yIDogMSkgbWFwKHRv ZnJvbTogeDIpICAvKiB7IGRnLW1lc3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiAnYW5j ZXN0b3InIG5vdCB5ZXQgc3VwcG9ydGVkIiB9ICovCiAgICAgY2hlY2tfb2ZmbG9hZCgmeDIs ICZ5Mik7CiAKICAgaWYgKHgyICE9IDIrMiszKzQyIHx8IHkyICE9IDMgKyA3KQpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC90YXJnZXQtZGV2aWNlLWFu Y2VzdG9yLTIuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvdGFyZ2V0LWRl dmljZS1hbmNlc3Rvci0yLmMKaW5kZXggY2YwNWM1MDUwMDQuLmIxNmU3MDFiZDVhIDEwMDY0 NAotLS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3RhcmdldC1kZXZpY2Ut YW5jZXN0b3ItMi5jCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvdGFy Z2V0LWRldmljZS1hbmNlc3Rvci0yLmMKQEAgLTEsMTMgKzEsMTEgQEAKIC8qIHsgZGctZG8g Y29tcGlsZSB9ICovCiAKLSNwcmFnbWEgb21wIHJlcXVpcmVzIHJldmVyc2Vfb2ZmbG9hZCAv KiB7IGRnLW1lc3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiAncmV2ZXJzZV9vZmZsb2Fk JyBjbGF1c2Ugb24gJ3JlcXVpcmVzJyBkaXJlY3RpdmUgbm90IHN1cHBvcnRlZCB5ZXQiIH0g Ki8KKyNwcmFnbWEgb21wIHJlcXVpcmVzIHJldmVyc2Vfb2ZmbG9hZAogCiB2b2lkCiBmb28g KGludCBuKQogewotICAvKiBUaGUgZm9sbG93aW5nIHRlc3QgaXMgbWFya2VkIHdpdGggJ3hm YWlsJyBiZWNhdXNlIGEgcHJldmlvdXMgJ3NvcnJ5JyBmcm9tCi0gICAgICdyZXZlcnNlX29m ZmxvYWQnIHN1cHByZXNzZXMgdGhlICdzb3JyeScgZm9yICdhbmNlc3RvcicuICAqLwotICAj cHJhZ21hIG9tcCB0YXJnZXQgZGV2aWNlIChhbmNlc3RvcjogMSkgLyogeyBkZy1tZXNzYWdl ICIiICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogJ2FuY2VzdG9yJyBub3QgeWV0IHN1cHBvcnRl ZCIgeyB4ZmFpbCAqLSotKiB9IH0gKi8KKyAgI3ByYWdtYSBvbXAgdGFyZ2V0IGRldmljZSAo YW5jZXN0b3I6IDEpCiAgIDsKIAogCkBAIC0xOSw5ICsxNyw5IEBAIGZvbyAoaW50IG4pCiAg ICNwcmFnbWEgb21wIHRhcmdldCBkZXZpY2UgKGFuY2VzdG9yIDogNDIpIC8qIHsgZGctZXJy b3IgInRoZSAnZGV2aWNlJyBjbGF1c2UgZXhwcmVzc2lvbiBtdXN0IGV2YWx1YXRlIHRvICcx JyIgfSAqLwogICA7CiAKLSAgI3ByYWdtYSBvbXAgdGFyZ2V0IGRldmljZSAoYW5jZXN0b3Ig OiBuKSAvKiB7IGRnLW1lc3NhZ2UgIiIgInNvcnJ5LCB1bmltcGxlbWVudGVkOiAnYW5jZXN0 b3InIG5vdCB5ZXQgc3VwcG9ydGVkIiB7IHhmYWlsICotKi0qIH0gfSAqLworICAjcHJhZ21h IG9tcCB0YXJnZXQgZGV2aWNlIChhbmNlc3RvciA6IG4pCiAgIDsKLSAgI3ByYWdtYSBvbXAg dGFyZ2V0IGRldmljZSAoYW5jZXN0b3IgOiBuICsgMSkgLyogeyBkZy1tZXNzYWdlICIiICJz b3JyeSwgdW5pbXBsZW1lbnRlZDogJ2FuY2VzdG9yJyBub3QgeWV0IHN1cHBvcnRlZCIgeyB4 ZmFpbCAqLSotKiB9IH0gKi8KKyAgI3ByYWdtYSBvbXAgdGFyZ2V0IGRldmljZSAoYW5jZXN0 b3IgOiBuICsgMSkKICAgOwogCiAKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL2dvbXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci0zLmMgYi9nY2MvdGVzdHN1aXRl L2MtYysrLWNvbW1vbi9nb21wL3RhcmdldC1kZXZpY2UtYW5jZXN0b3ItMy5jCmluZGV4IGVh NmU1YTBjZjZjLi5kMTY1OTAxMDdkMiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vZ29tcC90YXJnZXQtZGV2aWNlLWFuY2VzdG9yLTMuYworKysgYi9nY2MvdGVz dHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3RhcmdldC1kZXZpY2UtYW5jZXN0b3ItMy5jCkBA IC0xMSw3ICsxMSw3IEBAIGludCBiYXIgKHZvaWQpOwogCiAvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLwogCi0jcHJhZ21hIG9tcCByZXF1aXJlcyByZXZlcnNlX29mZmxvYWQgLyogeyBkZy1t ZXNzYWdlICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogJ3JldmVyc2Vfb2ZmbG9hZCcgY2xhdXNl IG9uICdyZXF1aXJlcycgZGlyZWN0aXZlIG5vdCBzdXBwb3J0ZWQgeWV0IiB9ICovCisjcHJh Z21hIG9tcCByZXF1aXJlcyByZXZlcnNlX29mZmxvYWQKIAogdm9pZAogZm9vICh2b2lkKQpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC90YXJnZXQtZGV2 aWNlLWFuY2VzdG9yLTQuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvdGFy Z2V0LWRldmljZS1hbmNlc3Rvci00LmMKaW5kZXggYjRiNTYyMGJiYzAuLjI0MTIzNGY4ZGFm IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3RhcmdldC1k ZXZpY2UtYW5jZXN0b3ItNC5jCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dv bXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci00LmMKQEAgLTQsMTIgKzQsMTIgQEAKICAgLyog VGVzdCB0byBlbnN1cmUgdGhhdCBkZXZpY2UtbW9kaWZpZXIgJ2FuY2VzdG9yJyBpcyBwYXJz ZWQgY29ycmVjdGx5IGluCiAgICAgIGRldmljZSBjbGF1c2VzLiAqLwogCi0jcHJhZ21hIG9t cCByZXF1aXJlcyByZXZlcnNlX29mZmxvYWQgLyogeyBkZy1tZXNzYWdlICJzb3JyeSwgdW5p bXBsZW1lbnRlZDogJ3JldmVyc2Vfb2ZmbG9hZCcgY2xhdXNlIG9uICdyZXF1aXJlcycgZGly ZWN0aXZlIG5vdCBzdXBwb3J0ZWQgeWV0IiB9ICovCisjcHJhZ21hIG9tcCByZXF1aXJlcyBy ZXZlcnNlX29mZmxvYWQKIAogdm9pZAogZm9vICh2b2lkKQogewotICAjcHJhZ21hIG9tcCB0 YXJnZXQgZGV2aWNlIChhbmNlc3RvcjogMSkgLyogeyBkZy1tZXNzYWdlICIiICJzb3JyeSwg dW5pbXBsZW1lbnRlZDogJ2FuY2VzdG9yJyBub3QgeWV0IHN1cHBvcnRlZCIgeyB4ZmFpbCAq LSotKiB9IH0gKi8KKyAgI3ByYWdtYSBvbXAgdGFyZ2V0IGRldmljZSAoYW5jZXN0b3I6IDEp IC8qIHsgZGctbWVzc2FnZSAic29ycnksIHVuaW1wbGVtZW50ZWQ6ICdhbmNlc3Rvcicgbm90 IHlldCBzdXBwb3J0ZWQiIH0gKi8KICAgOwogCiB9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2MtYysrLWNvbW1vbi9nb21wL3RhcmdldC1kZXZpY2UtYW5jZXN0b3ItNS5jIGIvZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC90YXJnZXQtZGV2aWNlLWFuY2VzdG9yLTUu YwppbmRleCBiNmZmODRiY2RhYi4uYjE1MjBmZjA2MzYgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL2dvbXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci01LmMKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC90YXJnZXQtZGV2aWNlLWFuY2Vz dG9yLTUuYwpAQCAtMSw0ICsxLDQgQEAKLSNwcmFnbWEgb21wIHJlcXVpcmVzIHJldmVyc2Vf b2ZmbG9hZCAgLyogeyBkZy1tZXNzYWdlICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogJ3JldmVy c2Vfb2ZmbG9hZCcgY2xhdXNlIG9uICdyZXF1aXJlcycgZGlyZWN0aXZlIG5vdCBzdXBwb3J0 ZWQgeWV0IiB9ICovCisjcHJhZ21hIG9tcCByZXF1aXJlcyByZXZlcnNlX29mZmxvYWQKIAog dm9pZAogZm9vICgpCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dv bXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci0yLmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRy YW4uZGcvZ29tcC90YXJnZXQtZGV2aWNlLWFuY2VzdG9yLTIuZjkwCmluZGV4IDExN2ExZDAw MGE1Li4yMzBjNjkwZDg0YyAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5k Zy9nb21wL3RhcmdldC1kZXZpY2UtYW5jZXN0b3ItMi5mOTAKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9nb21wL3RhcmdldC1kZXZpY2UtYW5jZXN0b3ItMi5mOTAKQEAgLTQs MTkgKzQsMTYgQEAgaW1wbGljaXQgbm9uZQogCiBpbnRlZ2VyIDo6IGEsIGIsIGMKIAotISRv bXAgcmVxdWlyZXMgcmV2ZXJzZV9vZmZsb2FkICAhIHsgZGctZXJyb3IgIlNvcnJ5LCAncmV2 ZXJzZV9vZmZsb2FkJyBjbGF1c2UgYXQgXFwoMVxcKSBvbiBSRVFVSVJFUyBkaXJlY3RpdmUg aXMgbm90IHlldCBzdXBwb3J0ZWQiIH0KKyEkb21wIHJlcXVpcmVzIHJldmVyc2Vfb2ZmbG9h ZAogCiAKLSEgVGhlIGZvbGxvd2luZyB0ZXN0IGNhc2UgaXMgbWFya2VkIHdpdGggJ3hmYWls JyBiZWNhdXNlIGEgcHJldmlvdXMgJ3NvcnJ5JyBmcm9tCi0hICdyZXZlcnNlX29mZmxvYWQn IHN1cHByZXNzZXMgdGhlICdzb3JyeScgZm9yICdhbmNlc3RvcicuCi0KLSEkb21wIHRhcmdl dCBkZXZpY2UgKGFuY2VzdG9yOiAxKSAgISB7IGRnLW1lc3NhZ2UgIiIgInNvcnJ5LCB1bmlt cGxlbWVudGVkOiAnYW5jZXN0b3InIG5vdCB5ZXQgc3VwcG9ydGVkIiB7IHhmYWlsICotKi0q IH0gfQorISRvbXAgdGFyZ2V0IGRldmljZSAoYW5jZXN0b3I6IDEpCiAhJG9tcCBlbmQgdGFy Z2V0CiAKLSEkb21wIHRhcmdldCBkZXZpY2UgKGFuY2VzdG9yIDogYSkgICEgeyBkZy1tZXNz YWdlICIiICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogJ2FuY2VzdG9yJyBub3QgeWV0IHN1cHBv cnRlZCIgeyB4ZmFpbCAqLSotKiB9IH0KKyEkb21wIHRhcmdldCBkZXZpY2UgKGFuY2VzdG9y IDogYSkKICEkb21wIGVuZCB0YXJnZXQKIAotISRvbXAgdGFyZ2V0IGRldmljZSAoYW5jZXN0 b3IgOiBhICsgMSkgICEgeyBkZy1tZXNzYWdlICIiICJzb3JyeSwgdW5pbXBsZW1lbnRlZDog J2FuY2VzdG9yJyBub3QgeWV0IHN1cHBvcnRlZCIgeyB4ZmFpbCAqLSotKiB9IH0KKyEkb21w IHRhcmdldCBkZXZpY2UgKGFuY2VzdG9yIDogYSArIDEpCiAhJG9tcCBlbmQgdGFyZ2V0CiAK IApAQCAtMzIsNjEgKzI5LDQgQEAgaW50ZWdlciA6OiBhLCBiLCBjCiAhJG9tcCB0YXJnZXQg ZGV2aWNlICg0MikKICEkb21wIGVuZCB0YXJnZXQKIAotCi0hIEVuc3VyZSB0aGF0IG5vIE9w ZW5NUCBjb25zdHJ1Y3RzIGFwcGVhciBpbnNpZGUgdGFyZ2V0IHJlZ2lvbnMgd2l0aCAnYW5j ZXN0b3InLgotISBUaGUgZm9sbG93aW5nIHRlc3QgY2FzZSBpcyBtYXJrZWQgd2l0aCAneGZh aWwnIGJlY2F1c2UgYSBwcmV2aW91cyAnc29ycnknIGZyb20KLSEgJ3JldmVyc2Vfb2ZmbG9h ZCcgc3VwcHJlc3NlcyB0aGUgJ3NvcnJ5JyBmb3IgJ2FuY2VzdG9yJy4KLQotISRvbXAgdGFy Z2V0IGRldmljZSAoYW5jZXN0b3I6IDEpCi0gICEkb21wIHRlYW1zICAhIHsgZGctZXJyb3Ig IiIgIk9wZW5NUCBjb25zdHJ1Y3RzIGFyZSBub3QgYWxsb3dlZCBpbiB0YXJnZXQgcmVnaW9u IHdpdGggJ2FuY2VzdG9yJyIgeyB4ZmFpbCAqLSotKiB9IH0KLSAgISRvbXAgZW5kIHRlYW1z Ci0hJG9tcCBlbmQgdGFyZ2V0Ci0KLSEkb21wIHRhcmdldCBkZXZpY2UgKGRldmljZV9udW06 IDEpCi0gICEkb21wIHRlYW1zCi0gICEkb21wIGVuZCB0ZWFtcwotISRvbXAgZW5kIHRhcmdl dAotCi0hJG9tcCB0YXJnZXQgZGV2aWNlICgxKQotICAhJG9tcCB0ZWFtcwotICAhJG9tcCBl bmQgdGVhbXMKLSEkb21wIGVuZCB0YXJnZXQKLQotCi0hIEVuc3VyZSB0aGF0IHdpdGggJ2Fu Y2VzdG9yJyBvbmx5IHRoZSAnZGV2aWNlJywgJ2ZpcnN0cHJpdmF0ZScsICdwcml2YXRlJywK LSEgJ2RlZmF1bHRtYXAnLCBhbmQgJ21hcCcgY2xhdXNlcyBhcHBlYXIgb24gdGhlIGNvbnN0 cnVjdC4KLSEgVGhlIGZvbGxvd2luZyB0ZXN0IGNhc2UgaXMgbWFya2VkIHdpdGggJ3hmYWls JyBiZWNhdXNlIGEgcHJldmlvdXMgJ3NvcnJ5JyBmcm9tCi0hICdyZXZlcnNlX29mZmxvYWQn IHN1cHByZXNzZXMgdGhlICdzb3JyeScgZm9yICdhbmNlc3RvcicuCi0KLSEkb21wIHRhcmdl dCBub3dhaXQgZGV2aWNlIChhbmNlc3RvcjogMSkgICEgeyBkZy1lcnJvciAiIiAid2l0aCAn YW5jZXN0b3InLCBvbmx5IHRoZSAnZGV2aWNlJywgJ2ZpcnN0cHJpdmF0ZScsICdwcml2YXRl JywgJ2RlZmF1bHRtYXAnLCBhbmQgJ21hcCcgY2xhdXNlcyBtYXkgYXBwZWFyIG9uIHRoZSBj b25zdHJ1Y3QiIHsgeGZhaWwgKi0qLSogfSB9Ci0hJG9tcCBlbmQgdGFyZ2V0Ci0KLSEkb21w IHRhcmdldCBkZXZpY2UgKGFuY2VzdG9yOiAxKSBub3dhaXQgICEgeyBkZy1lcnJvciAiIiAi d2l0aCAnYW5jZXN0b3InLCBvbmx5IHRoZSAnZGV2aWNlJywgJ2ZpcnN0cHJpdmF0ZScsICdw cml2YXRlJywgJ2RlZmF1bHRtYXAnLCBhbmQgJ21hcCcgY2xhdXNlcyBtYXkgYXBwZWFyIG9u IHRoZSBjb25zdHJ1Y3QiIHsgeGZhaWwgKi0qLSogfSB9Ci0hJG9tcCBlbmQgdGFyZ2V0Ci0K LSEkb21wIHRhcmdldCBub3dhaXQgZGV2aWNlIChkZXZpY2VfbnVtOiAxKQotISRvbXAgZW5k IHRhcmdldAotCi0hJG9tcCB0YXJnZXQgbm93YWl0IGRldmljZSAoMSkKLSEkb21wIGVuZCB0 YXJnZXQKLQotISRvbXAgdGFyZ2V0IGRldmljZSAoYW5jZXN0b3I6IDEpIGZpcnN0cHJpdmF0 ZSAoYSkgcHJpdmF0ZSAoYikgZGVmYXVsdG1hcCAobm9uZSkgbWFwIChjKQotISRvbXAgZW5k IHRhcmdldAotCi0KLSEgRW5zdXJlIHRoYXQgJ2FuY2VzdG9yJyBpcyBvbmx5IHVzZWQgd2l0 aCAndGFyZ2V0JyBjb25zdHJ1Y3RzIChub3Qgd2l0aAotISAndGFyZ2V0IGRhdGEnLCAndGFy Z2V0IHVwZGF0ZScgZXRjLikuCi0hIFRoZSBmb2xsb3dpbmcgdGVzdCBjYXNlIGlzIG1hcmtl ZCB3aXRoICd4ZmFpbCcgYmVjYXVzZSBhIHByZXZpb3VzICdzb3JyeScgZnJvbQotISAncmV2 ZXJzZV9vZmZsb2FkJyBzdXBwcmVzc2VzIHRoZSAnc29ycnknIGZvciAnYW5jZXN0b3InLgot Ci0hJG9tcCB0YXJnZXQgZGF0YSBtYXAgKGEpIGRldmljZSAoYW5jZXN0b3I6IDEpICAhIHsg ZGctZXJyb3IgIiIgIidkZXZpY2UnIGNsYXVzZSB3aXRoICdhbmNlc3RvcicgaXMgb25seSBh bGxvd2VkIG9uICd0YXJnZXQnIGNvbnN0cnVjdCIgeyB4ZmFpbCAqLSotKiB9IH0KLSEkb21w IGVuZCB0YXJnZXQgZGF0YQotCi0hJG9tcCB0YXJnZXQgZW50ZXIgZGF0YSBtYXAgKHRvOiBh KSBkZXZpY2UgKGFuY2VzdG9yOiAxKSAgISB7IGRnLWVycm9yICIiICInZGV2aWNlJyBjbGF1 c2Ugd2l0aCAnYW5jZXN0b3InIGlzIG9ubHkgYWxsb3dlZCBvbiAndGFyZ2V0JyBjb25zdHJ1 Y3QiIHsgeGZhaWwgKi0qLSogfSB9Ci0hJG9tcCB0YXJnZXQgZXhpdCBkYXRhIG1hcCAoZnJv bTogYSkgZGV2aWNlIChhbmNlc3RvcjogMSkgICEgeyBkZy1lcnJvciAiIiAiJ2RldmljZScg Y2xhdXNlIHdpdGggJ2FuY2VzdG9yJyBpcyBvbmx5IGFsbG93ZWQgb24gJ3RhcmdldCcgY29u c3RydWN0IiB7IHhmYWlsICotKi0qIH0gfQotCi0hJG9tcCB0YXJnZXQgdXBkYXRlIHRvIChh KSBkZXZpY2UgKGFuY2VzdG9yOiAxKSAgISB7IGRnLWVycm9yICInZGV2aWNlJyBjbGF1c2Ug d2l0aCAnYW5jZXN0b3InIGlzIG9ubHkgYWxsb3dlZCBvbiAndGFyZ2V0JyBjb25zdHJ1Y3Qi ICIiIHsgeGZhaWwgKi0qLSogfSB9Ci0hIHsgZGctZXJyb3IgIndpdGggJ2FuY2VzdG9yJywg b25seSB0aGUgJ2RldmljZScsICdmaXJzdHByaXZhdGUnLCAncHJpdmF0ZScsICdkZWZhdWx0 bWFwJywgYW5kICdtYXAnIGNsYXVzZXMgbWF5IGFwcGVhciBvbiB0aGUgY29uc3RydWN0IiAi IiB7IHhmYWlsICotKi0qIH0gLi0xIH0KLQotCi1lbmQKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCitlbmQKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29t cC90YXJnZXQtZGV2aWNlLWFuY2VzdG9yLTJhLmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRy YW4uZGcvZ29tcC90YXJnZXQtZGV2aWNlLWFuY2VzdG9yLTJhLmY5MApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmViNzZmZTIxNDQKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvdGFyZ2V0LWRldmljZS1hbmNl c3Rvci0yYS5mOTAKQEAgLTAsMCArMSw4MCBAQAorISB7IGRnLWRvIGNvbXBpbGUgfQorCitp bXBsaWNpdCBub25lCisKK2ludGVnZXIgOjogYSwgYiwgYworCishJG9tcCByZXF1aXJlcyBy ZXZlcnNlX29mZmxvYWQKKworISRvbXAgdGFyZ2V0IGRldmljZSAoYW5jZXN0b3I6IDEpCish JG9tcCBlbmQgdGFyZ2V0CisKKyEkb21wIHRhcmdldCBkZXZpY2UgKGFuY2VzdG9yIDogYSkK KyEkb21wIGVuZCB0YXJnZXQKKworISRvbXAgdGFyZ2V0IGRldmljZSAoYW5jZXN0b3IgOiBh ICsgMSkKKyEkb21wIGVuZCB0YXJnZXQKKworCishJG9tcCB0YXJnZXQgZGV2aWNlIChkZXZp Y2VfbnVtOjQyKQorISRvbXAgZW5kIHRhcmdldAorCishJG9tcCB0YXJnZXQgZGV2aWNlICg0 MikKKyEkb21wIGVuZCB0YXJnZXQKKworCishIEVuc3VyZSB0aGF0IG5vIE9wZW5NUCBjb25z dHJ1Y3RzIGFwcGVhciBpbnNpZGUgdGFyZ2V0IHJlZ2lvbnMgd2l0aCAnYW5jZXN0b3InLgor CishJG9tcCB0YXJnZXQgZGV2aWNlIChhbmNlc3RvcjogMSkKKyAgISRvbXAgdGVhbXMgICEg eyBkZy1lcnJvciAiT3Blbk1QIGNvbnN0cnVjdHMgYXJlIG5vdCBhbGxvd2VkIGluIHRhcmdl dCByZWdpb24gd2l0aCAnYW5jZXN0b3InIiB9CisgICEkb21wIGVuZCB0ZWFtcworISRvbXAg ZW5kIHRhcmdldAorCishJG9tcCB0YXJnZXQgZGV2aWNlIChkZXZpY2VfbnVtOiAxKQorICAh JG9tcCB0ZWFtcworICAhJG9tcCBlbmQgdGVhbXMKKyEkb21wIGVuZCB0YXJnZXQKKworISRv bXAgdGFyZ2V0IGRldmljZSAoMSkKKyAgISRvbXAgdGVhbXMKKyAgISRvbXAgZW5kIHRlYW1z CishJG9tcCBlbmQgdGFyZ2V0CisKKworISBFbnN1cmUgdGhhdCB3aXRoICdhbmNlc3Rvcicg b25seSB0aGUgJ2RldmljZScsICdmaXJzdHByaXZhdGUnLCAncHJpdmF0ZScsCishICdkZWZh dWx0bWFwJywgYW5kICdtYXAnIGNsYXVzZXMgYXBwZWFyIG9uIHRoZSBjb25zdHJ1Y3QuCisK KyEkb21wIHRhcmdldCBub3dhaXQgZGV2aWNlIChhbmNlc3RvcjogMSkgICEgeyBkZy1lcnJv ciAid2l0aCAnYW5jZXN0b3InLCBvbmx5IHRoZSAnZGV2aWNlJywgJ2ZpcnN0cHJpdmF0ZScs ICdwcml2YXRlJywgJ2RlZmF1bHRtYXAnLCBhbmQgJ21hcCcgY2xhdXNlcyBtYXkgYXBwZWFy IG9uIHRoZSBjb25zdHJ1Y3QiIH0KKyEkb21wIGVuZCB0YXJnZXQKKworISRvbXAgdGFyZ2V0 IGRldmljZSAoYW5jZXN0b3I6IDEpIG5vd2FpdCAgISB7IGRnLWVycm9yICJ3aXRoICdhbmNl c3RvcicsIG9ubHkgdGhlICdkZXZpY2UnLCAnZmlyc3Rwcml2YXRlJywgJ3ByaXZhdGUnLCAn ZGVmYXVsdG1hcCcsIGFuZCAnbWFwJyBjbGF1c2VzIG1heSBhcHBlYXIgb24gdGhlIGNvbnN0 cnVjdCIgfQorISRvbXAgZW5kIHRhcmdldAorCishJG9tcCB0YXJnZXQgbm93YWl0IGRldmlj ZSAoZGV2aWNlX251bTogMSkKKyEkb21wIGVuZCB0YXJnZXQKKworISRvbXAgdGFyZ2V0IG5v d2FpdCBkZXZpY2UgKDEpCishJG9tcCBlbmQgdGFyZ2V0CisKKyEkb21wIHRhcmdldCBkZXZp Y2UgKGFuY2VzdG9yOiAxKSBmaXJzdHByaXZhdGUgKGEpIHByaXZhdGUgKGIpIGRlZmF1bHRt YXAgKG5vbmUpIG1hcCAoYykKKyEkb21wIGVuZCB0YXJnZXQKKworCishIEVuc3VyZSB0aGF0 ICdhbmNlc3RvcicgaXMgb25seSB1c2VkIHdpdGggJ3RhcmdldCcgY29uc3RydWN0cyAobm90 IHdpdGgKKyEgJ3RhcmdldCBkYXRhJywgJ3RhcmdldCB1cGRhdGUnIGV0Yy4pLgorISBUaGUg Zm9sbG93aW5nIHRlc3QgY2FzZSBpcyBtYXJrZWQgd2l0aCAneGZhaWwnIGJlY2F1c2UgYSBw cmV2aW91cyAnc29ycnknIGZyb20KKyEgJ3JldmVyc2Vfb2ZmbG9hZCcgc3VwcHJlc3NlcyB0 aGUgJ3NvcnJ5JyBmb3IgJ2FuY2VzdG9yJy4KKworISRvbXAgdGFyZ2V0IGRhdGEgbWFwIChh KSBkZXZpY2UgKGFuY2VzdG9yOiAxKSAgISB7IGRnLWVycm9yICInZGV2aWNlJyBjbGF1c2Ug d2l0aCAnYW5jZXN0b3InIGlzIG9ubHkgYWxsb3dlZCBvbiAndGFyZ2V0JyBjb25zdHJ1Y3Qi IH0KKyEkb21wIGVuZCB0YXJnZXQgZGF0YQorCishJG9tcCB0YXJnZXQgZW50ZXIgZGF0YSBt YXAgKHRvOiBhKSBkZXZpY2UgKGFuY2VzdG9yOiAxKSAgISB7IGRnLWVycm9yICInZGV2aWNl JyBjbGF1c2Ugd2l0aCAnYW5jZXN0b3InIGlzIG9ubHkgYWxsb3dlZCBvbiAndGFyZ2V0JyBj b25zdHJ1Y3QiIH0KKyEkb21wIHRhcmdldCBleGl0IGRhdGEgbWFwIChmcm9tOiBhKSBkZXZp Y2UgKGFuY2VzdG9yOiAxKSAgISB7IGRnLWVycm9yICInZGV2aWNlJyBjbGF1c2Ugd2l0aCAn YW5jZXN0b3InIGlzIG9ubHkgYWxsb3dlZCBvbiAndGFyZ2V0JyBjb25zdHJ1Y3QiIH0KKwor ISRvbXAgdGFyZ2V0IHVwZGF0ZSB0byAoYSkgZGV2aWNlIChhbmNlc3RvcjogMSkgICEgeyBk Zy1lcnJvciAiJ2RldmljZScgY2xhdXNlIHdpdGggJ2FuY2VzdG9yJyBpcyBvbmx5IGFsbG93 ZWQgb24gJ3RhcmdldCcgY29uc3RydWN0IiB9CisKKyEkb21wIHRhcmdldCBkZXZpY2UgKGFu Y2VzdG9yOiAxKSBpZiguZmFsc2UuKQorISB7IGRnLWVycm9yICJ3aXRoICdhbmNlc3Rvcics IG9ubHkgdGhlICdkZXZpY2UnLCAnZmlyc3Rwcml2YXRlJywgJ3ByaXZhdGUnLCAnZGVmYXVs dG1hcCcsIGFuZCAnbWFwJyBjbGF1c2VzIG1heSBhcHBlYXIgb24gdGhlIGNvbnN0cnVjdCIg IiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQorISRvbXAgZW5kIHRhcmdldAorCitlbmQKZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC90YXJnZXQtZGV2aWNl LWFuY2VzdG9yLTMuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL3Rhcmdl dC1kZXZpY2UtYW5jZXN0b3ItMy5mOTAKaW5kZXggZjExNDViZGUyZWMuLmU4OTc1ZTZhMDhi IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvdGFyZ2V0LWRl dmljZS1hbmNlc3Rvci0zLmY5MAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dv bXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci0zLmY5MApAQCAtMTYsMTAgKzE2LDEwIEBAIHN1 YnJvdXRpbmUgZjEgKCkKICAgaW1wbGljaXQgbm9uZQogICBpbnRlZ2VyIDo6IG4KIAotICAh JG9tcCByZXF1aXJlcyByZXZlcnNlX29mZmxvYWQgICEgeyBkZy1lcnJvciAiU29ycnksICdy ZXZlcnNlX29mZmxvYWQnIGNsYXVzZSBhdCBcXCgxXFwpIG9uIFJFUVVJUkVTIGRpcmVjdGl2 ZSBpcyBub3QgeWV0IHN1cHBvcnRlZCIgfQorICAhJG9tcCByZXF1aXJlcyByZXZlcnNlX29m ZmxvYWQKIAogICAhJG9tcCB0YXJnZXQgZGV2aWNlIChhbmNlc3RvciA6IDEpCi0gICAgbiA9 IG9tcF9nZXRfdGhyZWFkX251bSAoKSAgISB7IGRnLWVycm9yICIiICJPcGVuTVAgcnVudGlt ZSBBUEkgY2FsbCAnb21wX2dldF90aHJlYWRfbnVtJyBpbiBhIHJlZ2lvbiB3aXRoICdkZXZp Y2VcXChhbmNlc3RvclxcKScgY2xhdXNlIiB7IHhmYWlsICotKi0qIH0gfQorICAgIG4gPSBv bXBfZ2V0X3RocmVhZF9udW0gKCkgICEgeyBkZy1lcnJvciAiT3Blbk1QIHJ1bnRpbWUgQVBJ IGNhbGwgJ29tcF9nZXRfdGhyZWFkX251bScgaW4gYSByZWdpb24gd2l0aCAnZGV2aWNlXFwo YW5jZXN0b3JcXCknIGNsYXVzZSIgfQogICAhJG9tcCBlbmQgdGFyZ2V0CiAKICAgISRvbXAg dGFyZ2V0IGRldmljZSAoZGV2aWNlX251bSA6IDEpCkBAIC0zMCw0ICszMCw0IEBAIHN1YnJv dXRpbmUgZjEgKCkKICAgICBuID0gb21wX2dldF90aHJlYWRfbnVtICgpCiAgICEkb21wIGVu ZCB0YXJnZXQKIAotZW5kClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZW5kCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvdGFyZ2V0LWRldmljZS1h bmNlc3Rvci00LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC90YXJnZXQt ZGV2aWNlLWFuY2VzdG9yLTQuZjkwCmluZGV4IDYzODcyZmE1MWZiLi5hYjU2ZTJkMWQ1MiAx MDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL3RhcmdldC1kZXZp Y2UtYW5jZXN0b3ItNC5mOTAKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21w L3RhcmdldC1kZXZpY2UtYW5jZXN0b3ItNC5mOTAKQEAgLTQsMTEgKzQsMTEgQEAKICEgVGVz dCB0byBlbnN1cmUgdGhhdCBkZXZpY2UtbW9kaWZpZXIgJ2FuY2VzdG9yJyBpcyBwYXJzZWQg Y29ycmVjdGx5IGluCiAhIGRldmljZSBjbGF1c2VzLgogCi0hJG9tcCByZXF1aXJlcyByZXZl cnNlX29mZmxvYWQgICEgeyBkZy1lcnJvciAiU29ycnksICdyZXZlcnNlX29mZmxvYWQnIGNs YXVzZSBhdCBcXCgxXFwpIG9uIFJFUVVJUkVTIGRpcmVjdGl2ZSBpcyBub3QgeWV0IHN1cHBv cnRlZCIgfQorISRvbXAgcmVxdWlyZXMgcmV2ZXJzZV9vZmZsb2FkCiAKLSEkb21wIHRhcmdl dCBkZXZpY2UgKGFuY2VzdG9yIDogMSkgICEgeyBkZy1tZXNzYWdlICIiICJzb3JyeSwgdW5p bXBsZW1lbnRlZDogJ2FuY2VzdG9yJyBub3QgeWV0IHN1cHBvcnRlZCIgeyB4ZmFpbCAqLSot KiB9IH0KKyEkb21wIHRhcmdldCBkZXZpY2UgKGFuY2VzdG9yIDogMSkgICEgeyBkZy1tZXNz YWdlICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogJ2FuY2VzdG9yJyBub3QgeWV0IHN1cHBvcnRl ZCIgfQogISRvbXAgZW5kIHRhcmdldAogCiBlbmQKIAotISBUT0RPOiBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLXRpbWVzICJwcmFnbWEgb21wIHRhcmdldCBcW15cblxyKV0qZGV2aWNl XFwoYW5jZXN0b3I6MVxcKSIgMSAib3JpZ2luYWwiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAtdGltZXMgInByYWdtYSBvbXAgdGFyZ2V0IFxbXlxuXHIpXSpkZXZpY2Vc XChhbmNlc3RvcjoxXFwpIiAxICJvcmlnaW5hbCIgfSB9CmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci01LmY5MCBi L2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC90YXJnZXQtZGV2aWNlLWFuY2VzdG9y LTUuZjkwCmluZGV4IDA2YTExZWI1MDkyLi5jYThkNGIyODJhMCAxMDA2NDQKLS0tIGEvZ2Nj L3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL3RhcmdldC1kZXZpY2UtYW5jZXN0b3ItNS5m OTAKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL3RhcmdldC1kZXZpY2Ut YW5jZXN0b3ItNS5mOTAKQEAgLTYsNyArNiw3IEBACiAhCiAKIG1vZHVsZSBtCi0gICEkb21w IHJlcXVpcmVzIHJldmVyc2Vfb2ZmbG9hZCAgISB7IGRnLWVycm9yICJSRVFVSVJFUyBkaXJl Y3RpdmUgaXMgbm90IHlldCBzdXBwb3J0ZWQiIH0KKyAgISRvbXAgcmVxdWlyZXMgcmV2ZXJz ZV9vZmZsb2FkCiBjb250YWlucwogICBzdWJyb3V0aW5lIGZvbygpCiAgICAgISRvbXAgdGFy Z2V0IGRldmljZShhbmNlc3RvcjoxKQpAQCAtMTcsNyArMTcsNyBAQCBjb250YWlucwogICAg IGJsb2NrCiAgICAgICBibG9jawogICAgICAgICBibG9jawotICAgICAgICAgICEkb21wIHRh cmdldCBkZXZpY2UoYW5jZXN0b3I6MSkKKyAgICAgICAgICAhJG9tcCB0YXJnZXQgZGV2aWNl KGFuY2VzdG9yOjEpICAhIHsgZGctbWVzc2FnZSAic29ycnksIHVuaW1wbGVtZW50ZWQ6ICdh bmNlc3Rvcicgbm90IHlldCBzdXBwb3J0ZWQiIH0KICAgICAgICAgICAhJG9tcCBlbmQgdGFy Z2V0CiAgICAgICAgIGVuZCBibG9jawogICAgICAgZW5kIGJsb2NrCkBAIC0yNiw3ICsyNiw3 IEBAIGNvbnRhaW5zCiBlbmQgbW9kdWxlIG0KIAogc3Vicm91dGluZSBmb28oKQotICAhJG9t cCByZXF1aXJlcyByZXZlcnNlX29mZmxvYWQgICEgeyBkZy1lcnJvciAiUkVRVUlSRVMgZGly ZWN0aXZlIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIiB9CisgICEkb21wIHJlcXVpcmVzIHJldmVy c2Vfb2ZmbG9hZAogICBibG9jawogICAgIGJsb2NrCiAgICAgICBibG9jawpAQCAtNDksNyAr NDksNyBAQCBjb250YWlucwogZW5kIHN1YnJvdXRpbmUgZm9vCiAKIHByb2dyYW0gbWFpbgot ICAhJG9tcCByZXF1aXJlcyByZXZlcnNlX29mZmxvYWQgICEgeyBkZy1lcnJvciAiUkVRVUlS RVMgZGlyZWN0aXZlIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIiB9CisgICEkb21wIHJlcXVpcmVz IHJldmVyc2Vfb2ZmbG9hZAogY29udGFpbnMKICAgc3Vicm91dGluZSBmb28oKQogICAgICEk b21wIHRhcmdldCBkZXZpY2UoYW5jZXN0b3I6MSkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ29t cC1jb25zdGFudHMuaCBiL2luY2x1ZGUvZ29tcC1jb25zdGFudHMuaAppbmRleCBlNGRkOGVm M2UxZC4uMjQ4MDRhYTU1MWYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ29tcC1jb25zdGFudHMu aAorKysgYi9pbmNsdWRlL2dvbXAtY29uc3RhbnRzLmgKQEAgLTM0MSw2ICszNDEsMTIgQEAg ZW51bSBnb21wX21hcF9raW5kCiAjZGVmaW5lIEdPTVBfREVQRU5EX01VVEVYSU5PVVRTRVQJ NAogI2RlZmluZSBHT01QX0RFUEVORF9JTk9VVFNFVAkJNQogCisvKiBGbGFnIHZhbHVlcyBm b3IgcmVxdWlyZXMtZGlyZWN0aXZlIGZlYXR1cmVzLCBtdXN0IG1hdGNoIGNvcnJlc3BvbmRp bmcKKyAgIE9NUF9SRVFVSVJFU18qIHZhbHVlcyBpbiBnY2Mvb21wLWdlbmVyYWwuaC4gICov CisjZGVmaW5lIEdPTVBfUkVRVUlSRVNfVU5JRklFRF9BRERSRVNTICAgICAgIDB4MTAKKyNk ZWZpbmUgR09NUF9SRVFVSVJFU19VTklGSUVEX1NIQVJFRF9NRU1PUlkgMHgyMAorI2RlZmlu ZSBHT01QX1JFUVVJUkVTX1JFVkVSU0VfT0ZGTE9BRCAgICAgICAweDgwCisKIC8qIEhTQSBz cGVjaWZpYyBkYXRhIHN0cnVjdHVyZXMuICAqLwogCiAvKiBJZGVudGlmaWVycyBvZiBkZXZp Y2Utc3BlY2lmaWMgdGFyZ2V0IGFyZ3VtZW50cy4gICovCmRpZmYgLS1naXQgYS9saWJnb21w L2xpYmdvbXAtcGx1Z2luLmggYi9saWJnb21wL2xpYmdvbXAtcGx1Z2luLmgKaW5kZXggMDdh YjcwMGI4MGMuLmFiM2VkNjM4NDc1IDEwMDY0NAotLS0gYS9saWJnb21wL2xpYmdvbXAtcGx1 Z2luLmgKKysrIGIvbGliZ29tcC9saWJnb21wLXBsdWdpbi5oCkBAIC0xMjUsNyArMTI1LDcg QEAgZXh0ZXJuIHZvaWQgR09NUF9QTFVHSU5fZmF0YWwgKGNvbnN0IGNoYXIgKiwgLi4uKQog ZXh0ZXJuIGNvbnN0IGNoYXIgKkdPTVBfT0ZGTE9BRF9nZXRfbmFtZSAodm9pZCk7CiBleHRl cm4gdW5zaWduZWQgaW50IEdPTVBfT0ZGTE9BRF9nZXRfY2FwcyAodm9pZCk7CiBleHRlcm4g aW50IEdPTVBfT0ZGTE9BRF9nZXRfdHlwZSAodm9pZCk7Ci1leHRlcm4gaW50IEdPTVBfT0ZG TE9BRF9nZXRfbnVtX2RldmljZXMgKHZvaWQpOworZXh0ZXJuIGludCBHT01QX09GRkxPQURf Z2V0X251bV9kZXZpY2VzICh1bnNpZ25lZCBpbnQpOwogZXh0ZXJuIGJvb2wgR09NUF9PRkZM T0FEX2luaXRfZGV2aWNlIChpbnQpOwogZXh0ZXJuIGJvb2wgR09NUF9PRkZMT0FEX2Zpbmlf ZGV2aWNlIChpbnQpOwogZXh0ZXJuIHVuc2lnbmVkIEdPTVBfT0ZGTE9BRF92ZXJzaW9uICh2 b2lkKTsKZGlmZiAtLWdpdCBhL2xpYmdvbXAvb2FjYy1ob3N0LmMgYi9saWJnb21wL29hY2Mt aG9zdC5jCmluZGV4IDViYjg4OTkyNmQzLi5lYjExYjljZjE2YSAxMDA2NDQKLS0tIGEvbGli Z29tcC9vYWNjLWhvc3QuYworKysgYi9saWJnb21wL29hY2MtaG9zdC5jCkBAIC01NCw3ICs1 NCw3IEBAIGhvc3RfZ2V0X3R5cGUgKHZvaWQpCiB9CiAKIHN0YXRpYyBpbnQKLWhvc3RfZ2V0 X251bV9kZXZpY2VzICh2b2lkKQoraG9zdF9nZXRfbnVtX2RldmljZXMgKHVuc2lnbmVkIGlu dCBvbXBfcmVxdWlyZXNfbWFzayBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSkKIHsKICAgcmV0 dXJuIDE7CiB9CkBAIC0yMjksNyArMjI5LDcgQEAgaG9zdF9vcGVuYWNjX2dldF9wcm9wZXJ0 eSAoaW50IG4sIGVudW0gZ29hY2NfcHJvcGVydHkgcHJvcCkKIHsKICAgdW5pb24gZ29hY2Nf cHJvcGVydHlfdmFsdWUgbnVsbHZhbCA9IHsgLnZhbCA9IDAgfTsKIAotICBpZiAobiA+PSBo b3N0X2dldF9udW1fZGV2aWNlcyAoKSkKKyAgaWYgKG4gPj0gaG9zdF9nZXRfbnVtX2Rldmlj ZXMgKDApKQogICAgIHJldHVybiBudWxsdmFsOwogCiAgIHN3aXRjaCAocHJvcCkKZGlmZiAt LWdpdCBhL2xpYmdvbXAvb2FjYy1pbml0LmMgYi9saWJnb21wL29hY2MtaW5pdC5jCmluZGV4 IDE1NjVhYTBmMjkwLi40MmMzZTc0ZTZiYSAxMDA2NDQKLS0tIGEvbGliZ29tcC9vYWNjLWlu aXQuYworKysgYi9saWJnb21wL29hY2MtaW5pdC5jCkBAIC0xNDgsNyArMTQ4LDcgQEAgcmVz b2x2ZV9kZXZpY2UgKGFjY19kZXZpY2VfdCBkLCBib29sIGZhaWxfaXNfZXJyb3IpCiAJICAg ICAgaWYgKGRpc3BhdGNoZXJzW2RdCiAJCSAgJiYgIXN0cmNhc2VjbXAgKGdvYWNjX2Rldmlj ZV90eXBlLAogCQkJCSAgZ2V0X29wZW5hY2NfbmFtZSAoZGlzcGF0Y2hlcnNbZF0tPm5hbWUp KQotCQkgICYmIGRpc3BhdGNoZXJzW2RdLT5nZXRfbnVtX2RldmljZXNfZnVuYyAoKSA+IDAp CisJCSAgJiYgZGlzcGF0Y2hlcnNbZF0tPmdldF9udW1fZGV2aWNlc19mdW5jICgwKSA+IDAp CiAJCWdvdG8gZm91bmQ7CiAKIAkgICAgaWYgKGZhaWxfaXNfZXJyb3IpCkBAIC0xNjksNyAr MTY5LDcgQEAgcmVzb2x2ZV9kZXZpY2UgKGFjY19kZXZpY2VfdCBkLCBib29sIGZhaWxfaXNf ZXJyb3IpCiAgICAgY2FzZSBhY2NfZGV2aWNlX25vdF9ob3N0OgogICAgICAgLyogRmluZCB0 aGUgZmlyc3QgYXZhaWxhYmxlIGRldmljZSBhZnRlciBhY2NfZGV2aWNlX25vdF9ob3N0LiAg Ki8KICAgICAgIHdoaWxlIChrbm93bl9kZXZpY2VfdHlwZV9wICgrK2QpKQotCWlmIChkaXNw YXRjaGVyc1tkXSAmJiBkaXNwYXRjaGVyc1tkXS0+Z2V0X251bV9kZXZpY2VzX2Z1bmMgKCkg PiAwKQorCWlmIChkaXNwYXRjaGVyc1tkXSAmJiBkaXNwYXRjaGVyc1tkXS0+Z2V0X251bV9k ZXZpY2VzX2Z1bmMgKDApID4gMCkKIAkgIGdvdG8gZm91bmQ7CiAgICAgICBpZiAoZF9hcmcg PT0gYWNjX2RldmljZV9kZWZhdWx0KQogCXsKQEAgLTMwMiw3ICszMDIsNyBAQCBhY2NfaW5p dF8xIChhY2NfZGV2aWNlX3QgZCwgYWNjX2NvbnN0cnVjdF90IHBhcmVudF9jb25zdHJ1Y3Qs IGludCBpbXBsaWNpdCkKIAogICBiYXNlX2RldiA9IHJlc29sdmVfZGV2aWNlIChkLCB0cnVl KTsKIAotICBuZGV2cyA9IGJhc2VfZGV2LT5nZXRfbnVtX2RldmljZXNfZnVuYyAoKTsKKyAg bmRldnMgPSBiYXNlX2Rldi0+Z2V0X251bV9kZXZpY2VzX2Z1bmMgKDApOwogCiAgIGlmIChu ZGV2cyA8PSAwIHx8IGdvYWNjX2RldmljZV9udW0gPj0gbmRldnMpCiAgICAgYWNjX2Rldl9u dW1fb3V0X29mX3JhbmdlIChkLCBnb2FjY19kZXZpY2VfbnVtLCBuZGV2cyk7CkBAIC0zNTEs NyArMzUxLDcgQEAgYWNjX3NodXRkb3duXzEgKGFjY19kZXZpY2VfdCBkKQogICAvKiBHZXQg dGhlIGJhc2UgZGV2aWNlIGZvciB0aGlzIGRldmljZSB0eXBlLiAgKi8KICAgYmFzZV9kZXYg PSByZXNvbHZlX2RldmljZSAoZCwgdHJ1ZSk7CiAKLSAgbmRldnMgPSBiYXNlX2Rldi0+Z2V0 X251bV9kZXZpY2VzX2Z1bmMgKCk7CisgIG5kZXZzID0gYmFzZV9kZXYtPmdldF9udW1fZGV2 aWNlc19mdW5jICgwKTsKIAogICAvKiBVbmxvYWQgYWxsIHRoZSBkZXZpY2VzIG9mIHRoaXMg dHlwZSB0aGF0IGhhdmUgYmVlbiBvcGVuZWQuICAqLwogICBmb3IgKGkgPSAwOyBpIDwgbmRl dnM7IGkrKykKQEAgLTUyMCw3ICs1MjAsNyBAQCBnb2FjY19hdHRhY2hfaG9zdF90aHJlYWRf dG9fZGV2aWNlIChpbnQgb3JkKQogICAgICAgYmFzZV9kZXYgPSBjYWNoZWRfYmFzZV9kZXY7 CiAgICAgfQogICAKLSAgbnVtX2RldmljZXMgPSBiYXNlX2Rldi0+Z2V0X251bV9kZXZpY2Vz X2Z1bmMgKCk7CisgIG51bV9kZXZpY2VzID0gYmFzZV9kZXYtPmdldF9udW1fZGV2aWNlc19m dW5jICgwKTsKICAgaWYgKG51bV9kZXZpY2VzIDw9IDAgfHwgb3JkID49IG51bV9kZXZpY2Vz KQogICAgIGFjY19kZXZfbnVtX291dF9vZl9yYW5nZSAoYWNjX2RldmljZV90eXBlIChiYXNl X2Rldi0+dHlwZSksIG9yZCwKIAkJCSAgICAgIG51bV9kZXZpY2VzKTsKQEAgLTU5OSw3ICs1 OTksNyBAQCBhY2NfZ2V0X251bV9kZXZpY2VzIChhY2NfZGV2aWNlX3QgZCkKICAgaWYgKCFh Y2NfZGV2KQogICAgIHJldHVybiAwOwogCi0gIG4gPSBhY2NfZGV2LT5nZXRfbnVtX2Rldmlj ZXNfZnVuYyAoKTsKKyAgbiA9IGFjY19kZXYtPmdldF9udW1fZGV2aWNlc19mdW5jICgwKTsK ICAgaWYgKG4gPCAwKQogICAgIG4gPSAwOwogCkBAIC03NzksNyArNzc5LDcgQEAgYWNjX3Nl dF9kZXZpY2VfbnVtIChpbnQgb3JkLCBhY2NfZGV2aWNlX3QgZCkKIAogICAgICAgY2FjaGVk X2Jhc2VfZGV2ID0gYmFzZV9kZXYgPSByZXNvbHZlX2RldmljZSAoZCwgdHJ1ZSk7CiAKLSAg ICAgIG51bV9kZXZpY2VzID0gYmFzZV9kZXYtPmdldF9udW1fZGV2aWNlc19mdW5jICgpOwor ICAgICAgbnVtX2RldmljZXMgPSBiYXNlX2Rldi0+Z2V0X251bV9kZXZpY2VzX2Z1bmMgKDAp OwogCiAgICAgICBpZiAobnVtX2RldmljZXMgPD0gMCB8fCBvcmQgPj0gbnVtX2RldmljZXMp CiAgICAgICAgIGFjY19kZXZfbnVtX291dF9vZl9yYW5nZSAoZCwgb3JkLCBudW1fZGV2aWNl cyk7CkBAIC04MTQsNyArODE0LDcgQEAgZ2V0X3Byb3BlcnR5X2FueSAoaW50IG9yZCwgYWNj X2RldmljZV90IGQsIGFjY19kZXZpY2VfcHJvcGVydHlfdCBwcm9wKQogCiAgIHN0cnVjdCBn b21wX2RldmljZV9kZXNjciAqZGV2ID0gcmVzb2x2ZV9kZXZpY2UgKGQsIHRydWUpOwogCi0g IGludCBudW1fZGV2aWNlcyA9IGRldi0+Z2V0X251bV9kZXZpY2VzX2Z1bmMgKCk7CisgIGlu dCBudW1fZGV2aWNlcyA9IGRldi0+Z2V0X251bV9kZXZpY2VzX2Z1bmMgKDApOwogCiAgIGlm IChudW1fZGV2aWNlcyA8PSAwIHx8IG9yZCA+PSBudW1fZGV2aWNlcykKICAgICBhY2NfZGV2 X251bV9vdXRfb2ZfcmFuZ2UgKGQsIG9yZCwgbnVtX2RldmljZXMpOwpkaWZmIC0tZ2l0IGEv bGliZ29tcC9wbHVnaW4vcGx1Z2luLWdjbi5jIGIvbGliZ29tcC9wbHVnaW4vcGx1Z2luLWdj bi5jCmluZGV4IDFjMDQzNjg0MmRhLi5lYTMyN2JmMmNhMCAxMDA2NDQKLS0tIGEvbGliZ29t cC9wbHVnaW4vcGx1Z2luLWdjbi5jCisrKyBiL2xpYmdvbXAvcGx1Z2luL3BsdWdpbi1nY24u YwpAQCAtMzIyMSwxMCArMzIyMSwxNCBAQCBHT01QX09GRkxPQURfdmVyc2lvbiAodm9pZCkK IC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIEdDTiBkZXZpY2VzIG9uIHRoZSBzeXN0ZW0uICAq LwogCiBpbnQKLUdPTVBfT0ZGTE9BRF9nZXRfbnVtX2RldmljZXMgKHZvaWQpCitHT01QX09G RkxPQURfZ2V0X251bV9kZXZpY2VzICh1bnNpZ25lZCBpbnQgb21wX3JlcXVpcmVzX21hc2sp CiB7CiAgIGlmICghaW5pdF9oc2FfY29udGV4dCAoKSkKICAgICByZXR1cm4gMDsKKyAgLyog UmV0dXJuIC0xIGlmIG5vIG9tcF9yZXF1aXJlc19tYXNrIGNhbm5vdCBiZSBmdWxmaWxsZWQg YnV0CisgICAgIGRldmljZXMgd2VyZSBwcmVzZW50LiAgKi8KKyAgaWYgKGhzYV9jb250ZXh0 LmFnZW50X2NvdW50ID4gMCAmJiBvbXBfcmVxdWlyZXNfbWFzayAhPSAwKQorICAgIHJldHVy biAtMTsKICAgcmV0dXJuIGhzYV9jb250ZXh0LmFnZW50X2NvdW50OwogfQogCmRpZmYgLS1n aXQgYS9saWJnb21wL3BsdWdpbi9wbHVnaW4tbnZwdHguYyBiL2xpYmdvbXAvcGx1Z2luL3Bs dWdpbi1udnB0eC5jCmluZGV4IDM4N2JjYmJjNTJhLi5iYzYzZTI3NGNkZiAxMDA2NDQKLS0t IGEvbGliZ29tcC9wbHVnaW4vcGx1Z2luLW52cHR4LmMKKysrIGIvbGliZ29tcC9wbHVnaW4v cGx1Z2luLW52cHR4LmMKQEAgLTExNzUsOSArMTE3NSwxNCBAQCBHT01QX09GRkxPQURfZ2V0 X3R5cGUgKHZvaWQpCiB9CiAKIGludAotR09NUF9PRkZMT0FEX2dldF9udW1fZGV2aWNlcyAo dm9pZCkKK0dPTVBfT0ZGTE9BRF9nZXRfbnVtX2RldmljZXMgKHVuc2lnbmVkIGludCBvbXBf cmVxdWlyZXNfbWFzaykKIHsKLSAgcmV0dXJuIG52cHR4X2dldF9udW1fZGV2aWNlcyAoKTsK KyAgaW50IG51bV9kZXZpY2VzID0gbnZwdHhfZ2V0X251bV9kZXZpY2VzICgpOworICAvKiBS ZXR1cm4gLTEgaWYgbm8gb21wX3JlcXVpcmVzX21hc2sgY2Fubm90IGJlIGZ1bGZpbGxlZCBi dXQKKyAgICAgZGV2aWNlcyB3ZXJlIHByZXNlbnQuICAqLworICBpZiAobnVtX2RldmljZXMg PiAwICYmIG9tcF9yZXF1aXJlc19tYXNrICE9IDApCisgICAgcmV0dXJuIC0xOworICByZXR1 cm4gbnVtX2RldmljZXM7CiB9CiAKIGJvb2wKZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGFyZ2V0 LmMgYi9saWJnb21wL3RhcmdldC5jCmluZGV4IGMwODQ0ZjIyNjVhLi4xMmU2ZGYyODE5OCAx MDA2NDQKLS0tIGEvbGliZ29tcC90YXJnZXQuYworKysgYi9saWJnb21wL3RhcmdldC5jCkBA IC0zNiw2ICszNiw3IEBACiAjIGluY2x1ZGUgPGludHR5cGVzLmg+ICAvKiBGb3IgUFJJdTY0 LiAgKi8KICNlbmRpZgogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+ ICAvKiBGb3Igc25wcmludGYuICovCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSA8 ZXJybm8uaD4KIApAQCAtOTgsNiArOTksMTIgQEAgc3RhdGljIGludCBudW1fZGV2aWNlczsK IC8qIE51bWJlciBvZiBHT01QX09GRkxPQURfQ0FQX09QRU5NUF80MDAgZGV2aWNlcy4gICov CiBzdGF0aWMgaW50IG51bV9kZXZpY2VzX29wZW5tcDsKIAorLyogTWFzayBvZiByZXF1aXJl cyBkaXJlY3RpdmUgY2xhdXNlIHZhbHVlcy4gIE9mZmxvYWQgcGx1Z2lucyBhcmUgcXVlcmll ZAorICAgd2l0aCB0aGlzIG1hc2sgdG8gc2VlIGlmIGFsbCByZXF1aXJlZCBmZWF0dXJlcyBh cmUgc3VwcG9ydGVkLiAgKi8KK19fYXR0cmlidXRlX18oKHdlYWspKQorZXh0ZXJuIHVuc2ln bmVkIGludCBfX29mZmxvYWRfcmVxdWlyZXNfbWFzazsKKworCiAvKiBTaW1pbGFyIHRvIGdv bXBfcmVhbGxvYywgYnV0IHJlbGVhc2UgcmVnaXN0ZXJfbG9jayBiZWZvcmUgZ29tcF9mYXRh bC4gICovCiAKIHN0YXRpYyB2b2lkICoKQEAgLTQwNzgsNiArNDA4NSwyMCBAQCBnb21wX3Rh cmdldF9maW5pICh2b2lkKQogICAgIH0KIH0KIAorc3RhdGljIHZvaWQKK2dvbXBfcmVxdWly ZXNfdG9fbmFtZSAoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgdW5zaWduZWQgaW50IHJlcXVp cmVzX21hc2spCit7CisgIGNoYXIgKmVuZCA9IGJ1ZiArIHNpemUsICpwID0gYnVmOworICBp ZiAocmVxdWlyZXNfbWFzayAmIEdPTVBfUkVRVUlSRVNfVU5JRklFRF9BRERSRVNTKQorICAg IHAgKz0gc25wcmludGYgKHAsIGVuZCAtIHAsICJ1bmlmaWVkX2FkZHJlc3MiKTsKKyAgaWYg KHJlcXVpcmVzX21hc2sgJiBHT01QX1JFUVVJUkVTX1VOSUZJRURfU0hBUkVEX01FTU9SWSkK KyAgICBwICs9IHNucHJpbnRmIChwLCBlbmQgLSBwLCAiJXN1bmlmaWVkX3NoYXJlZF9tZW1v cnkiLAorCQkgICAocCA9PSBidWYgPyAiIiA6ICIsICIpKTsKKyAgaWYgKHJlcXVpcmVzX21h c2sgJiBHT01QX1JFUVVJUkVTX1JFVkVSU0VfT0ZGTE9BRCkKKyAgICBwICs9IHNucHJpbnRm IChwLCBlbmQgLSBwLCAiJXNyZXZlcnNlX29mZmxvYWQiLAorCQkgICAocCA9PSBidWYgPyAi IiA6ICIsICIpKTsKK30KKwogLyogVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgcnVu dGltZSBmb3Igb2ZmbG9hZGluZy4KICAgIEl0IHBhcnNlcyB0aGUgbGlzdCBvZiBvZmZsb2Fk IHBsdWdpbnMsIGFuZCB0cmllcyB0byBsb2FkIHRoZXNlLgogICAgT24gcmV0dXJuLCB0aGUg dmFyaWFibGVzIE5VTV9ERVZJQ0VTIGFuZCBOVU1fREVWSUNFU19PUEVOTVAKQEAgLTQxMjUs OCArNDE0NiwyMyBAQCBnb21wX3RhcmdldF9pbml0ICh2b2lkKQogCiAJaWYgKGdvbXBfbG9h ZF9wbHVnaW5fZm9yX2RldmljZSAoJmN1cnJlbnRfZGV2aWNlLCBwbHVnaW5fbmFtZSkpCiAJ ICB7Ci0JICAgIG5ld19udW1fZGV2cyA9IGN1cnJlbnRfZGV2aWNlLmdldF9udW1fZGV2aWNl c19mdW5jICgpOwotCSAgICBpZiAobmV3X251bV9kZXZzID49IDEpCisJICAgIGludCByZXF1 aXJlc19tYXNrID0gMDsKKwkgICAgaWYgKCZfX29mZmxvYWRfcmVxdWlyZXNfbWFzayAhPSBO VUxMKQorCSAgICAgIHJlcXVpcmVzX21hc2sgPSBfX29mZmxvYWRfcmVxdWlyZXNfbWFzazsK KwkgICAgbmV3X251bV9kZXZzCisJICAgICAgPSBjdXJyZW50X2RldmljZS5nZXRfbnVtX2Rl dmljZXNfZnVuYyAocmVxdWlyZXNfbWFzayk7CisJICAgIGlmIChuZXdfbnVtX2RldnMgPCAw KQorCSAgICAgIHsKKwkJY2hhciBidWZbNjRdOworCQlnb21wX3JlcXVpcmVzX3RvX25hbWUg KGJ1Ziwgc2l6ZW9mIChidWYpLCByZXF1aXJlc19tYXNrKTsKKwkJY2hhciAqbmFtZSA9IChj aGFyICopIG1hbGxvYyAoY3VyX2xlbiArIDEpOworCQltZW1jcHkgKG5hbWUsIGN1ciwgY3Vy X2xlbik7CisJCW5hbWVbY3VyX2xlbl0gPSAnXDAnOworCQlHT01QX1BMVUdJTl9lcnJvciAo Im5vdGU6ICVzIGRldmljZXMgcHJlc2VudCBidXQgJ29tcCByZXF1aXJlcyAiCisJCQkJICAg IiVzJyBjYW5ub3QgYmUgZnVsZmlsbGVkIiwgbmFtZSwgYnVmKTsKKwkJZnJlZSAobmFtZSk7 CisJICAgICAgfQorCSAgICBlbHNlIGlmIChuZXdfbnVtX2RldnMgPj0gMSkKIAkgICAgICB7 CiAJCS8qIEF1Z21lbnQgREVWSUNFUyBhbmQgTlVNX0RFVklDRVMuICAqLwogCmRpZmYgLS1n aXQgYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9yZXF1aXJlcy0x LWF1eC5jIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWly ZXMtMS1hdXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmRj YTY2MmU0MmYKLS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21w LmMtYysrLWNvbW1vbi9yZXF1aXJlcy0xLWF1eC5jCkBAIC0wLDAgKzEsMTEgQEAKKy8qIHsg ZGctc2tpcC1pZiAiIiB7ICotKi0qIH0gfSAqLworCisjcHJhZ21hIG9tcCByZXF1aXJlcyB1 bmlmaWVkX2FkZHJlc3MKKworaW50IHg7CisKK3ZvaWQgZm9vICh2b2lkKQoreworICAjcHJh Z21hIG9tcCB0YXJnZXQKKyAgeCA9IDE7Cit9CmRpZmYgLS1naXQgYS9saWJnb21wL3Rlc3Rz dWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9yZXF1aXJlcy0xLmMgYi9saWJnb21wL3Rlc3Rz dWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9yZXF1aXJlcy0xLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZlZGY5Nzc5NzY5Ci0tLSAvZGV2L251bGwKKysr IGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtMS5j CkBAIC0wLDAgKzEsMjQgQEAKKy8qIHsgZGctZG8gbGluayB7IHRhcmdldCB7IG9mZmxvYWRf dGFyZ2V0X252cHR4IHx8IG9mZmxvYWRfdGFyZ2V0X2FtZGdjbiB9IH0gfSAqLworLyogeyBk Zy1hZGRpdGlvbmFsLXNvdXJjZXMgcmVxdWlyZXMtMS1hdXguYyB9ICovCisKKy8qIENoZWNr IGRpYWdub3N0aWMgYnkgZGV2aWNlLWNvbXBpbGVyJ3MgbHRvMS4KKyAgIE90aGVyIGZpbGUg dXNlczogJ3JlcXVpcmVzIHVuaWZpZWRfYWRkcmVzcycuICAqLworCisjcHJhZ21hIG9tcCBy ZXF1aXJlcyB1bmlmaWVkX3NoYXJlZF9tZW1vcnkKKworaW50IGFbMTBdOworZXh0ZXJuIHZv aWQgZm9vICh2b2lkKTsKKworaW50CittYWluICh2b2lkKQoreworICAjcHJhZ21hIG9tcCB0 YXJnZXQKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKQorICAgIGFbaV0gPSAwOwor CisgIGZvbyAoKTsKKyAgcmV0dXJuIDA7Cit9CisKKy8qIHsgZGctZXJyb3IgIk9wZW5NUCAn cmVxdWlyZXMnIGRpcmVjdGl2ZSB3aXRoIG5vbi1pZGVudGljYWwgY2xhdXNlcyBpbiBtdWx0 aXBsZSBjb21waWxhdGlvbiB1bml0czogJ3VuaWZpZWRfc2hhcmVkX21lbW9yeScgdnMuICd1 bmlmaWVkX2FkZHJlc3MnIiAiIiB7IHRhcmdldCAqLSotKiB9IDAgfSAgKi8KKy8qIHsgZGct ZXhjZXNzLWVycm9ycyAiSWdub3JlIG1lc3NhZ2VzIGxpa2U6IGVycm9ycyBkdXJpbmcgbWVy Z2luZyBvZiB0cmFuc2xhdGlvbiB1bml0c3xta29mZmxvYWQgcmV0dXJuZWQgMSBleGl0IHN0 YXR1cyIgfSAqLwpkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMr Ky1jb21tb24vcmVxdWlyZXMtMi1hdXguYyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAu Yy1jKystY29tbW9uL3JlcXVpcmVzLTItYXV4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjYxNzU3NzQ0OGVkCi0tLSAvZGV2L251bGwKKysrIGIvbGliZ29t cC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtMi1hdXguYwpAQCAt MCwwICsxLDkgQEAKKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0gfSAqLworCitpbnQg eDsKKwordm9pZCBmb28gKHZvaWQpCit7CisgICNwcmFnbWEgb21wIHRhcmdldAorICB4ID0g MTsKK30KZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29t bW9uL3JlcXVpcmVzLTIuYyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29t bW9uL3JlcXVpcmVzLTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uYWM3ZjNlZjUxMmMKLS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9s aWJnb21wLmMtYysrLWNvbW1vbi9yZXF1aXJlcy0yLmMKQEAgLTAsMCArMSwyNSBAQAorLyog eyBkZy1kbyBsaW5rIHsgdGFyZ2V0IG9mZmxvYWRpbmdfZW5hYmxlZCB9IH0gKi8KKy8qIHsg ZGctYWRkaXRpb25hbC1vcHRpb25zICItZm9mZmxvYWQ9ZGlzYWJsZSAtZmx0byIgfSAqLwor LyogeyBkZy1hZGRpdGlvbmFsLXNvdXJjZXMgcmVxdWlyZXMtMi1hdXguYyB9ICovCisKKy8q IENoZWNrIGRpYWdub3N0aWMgYnkgaG9zdCdzIGx0bzEuCisgICBPdGhlciBmaWxlIGRvZXMg bm90IGhhdmUgYW55ICdvbXAgcmVxdWlyZXMnLiAqLworCisjcHJhZ21hIG9tcCByZXF1aXJl cyB1bmlmaWVkX3NoYXJlZF9tZW1vcnkKKworaW50IGFbMTBdOworZXh0ZXJuIHZvaWQgZm9v ICh2b2lkKTsKKworaW50CittYWluICh2b2lkKQoreworICAjcHJhZ21hIG9tcCB0YXJnZXQK KyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKQorICAgIGFbaV0gPSAwOworCisgIGZv byAoKTsKKyAgcmV0dXJuIDA7Cit9CisKKy8qIHsgZGctZXJyb3IgIk9wZW5NUCAncmVxdWly ZXMnIGRpcmVjdGl2ZSB3aXRoIG5vbi1pZGVudGljYWwgY2xhdXNlcyBpbiBtdWx0aXBsZSBj b21waWxhdGlvbiB1bml0czogJ3VuaWZpZWRfc2hhcmVkX21lbW9yeScgdnMuICcnIiAiIiB7 IHRhcmdldCAqLSotKiB9IDAgfSAgKi8KKy8qIHsgZGctZXhjZXNzLWVycm9ycyAiSWdub3Jl IG1lc3NhZ2VzIGxpa2U6IGVycm9ycyBkdXJpbmcgbWVyZ2luZyBvZiB0cmFuc2xhdGlvbiB1 bml0c3xta29mZmxvYWQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cyIgfSAqLwpkaWZmIC0tZ2l0 IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtMy1h dXguYyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL3JlcXVpcmVz LTMtYXV4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJkY2E2 NjJlNDJmCi0tLSAvZGV2L251bGwKKysrIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5j LWMrKy1jb21tb24vcmVxdWlyZXMtMy1hdXguYwpAQCAtMCwwICsxLDExIEBACisvKiB7IGRn LXNraXAtaWYgIiIgeyAqLSotKiB9IH0gKi8KKworI3ByYWdtYSBvbXAgcmVxdWlyZXMgdW5p ZmllZF9hZGRyZXNzCisKK2ludCB4OworCit2b2lkIGZvbyAodm9pZCkKK3sKKyAgI3ByYWdt YSBvbXAgdGFyZ2V0CisgIHggPSAxOworfQpkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3Vp dGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtMy5jIGIvbGliZ29tcC90ZXN0c3Vp dGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtMy5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40YjA3ZmZkZDA5YgotLS0gL2Rldi9udWxsCisrKyBi L2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL3JlcXVpcmVzLTMuYwpA QCAtMCwwICsxLDI0IEBACisvKiB7IGRnLWRvIGxpbmsgeyB0YXJnZXQgb2ZmbG9hZGluZ19l bmFibGVkIH0gfSAqLworLyogeyBkZy1hZGRpdGlvbmFsLXNvdXJjZXMgcmVxdWlyZXMtMy1h dXguYyB9ICovCisKKy8qIENoZWNrIGRpYWdub3N0aWMgYnkgZGV2aWNlLWNvbXBpbGVyJ3Mg bHRvMS4KKyAgIE90aGVyIGZpbGUgdXNlczogJ3JlcXVpcmVzIHVuaWZpZWRfYWRkcmVzcycu ICAqLworCisjcHJhZ21hIG9tcCByZXF1aXJlcyB1bmlmaWVkX2FkZHJlc3MsdW5pZmllZF9z aGFyZWRfbWVtb3J5CisKK2ludCBhWzEwXTsKK2V4dGVybiB2b2lkIGZvbyAodm9pZCk7CisK K2ludAorbWFpbiAodm9pZCkKK3sKKyAgI3ByYWdtYSBvbXAgdGFyZ2V0CisgIGZvciAoaW50 IGkgPSAwOyBpIDwgMTA7IGkrKykKKyAgICBhW2ldID0gMDsKKworICBmb28gKCk7CisgIHJl dHVybiAwOworfQorCisvKiB7IGRnLWVycm9yICJPcGVuTVAgJ3JlcXVpcmVzJyBkaXJlY3Rp dmUgd2l0aCBub24taWRlbnRpY2FsIGNsYXVzZXMgaW4gbXVsdGlwbGUgY29tcGlsYXRpb24g dW5pdHM6ICd1bmlmaWVkX2FkZHJlc3MsIHVuaWZpZWRfc2hhcmVkX21lbW9yeScgdnMuICd1 bmlmaWVkX2FkZHJlc3MnIiAiIiB7IHRhcmdldCAqLSotKiB9IDAgfSAgKi8KKy8qIHsgZGct ZXhjZXNzLWVycm9ycyAiSWdub3JlIG1lc3NhZ2VzIGxpa2U6IGVycm9ycyBkdXJpbmcgbWVy Z2luZyBvZiB0cmFuc2xhdGlvbiB1bml0c3xta29mZmxvYWQgcmV0dXJuZWQgMSBleGl0IHN0 YXR1cyIgfSAqLwpkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMr Ky1jb21tb24vcmVxdWlyZXMtNC1hdXguYyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAu Yy1jKystY29tbW9uL3JlcXVpcmVzLTQtYXV4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLmI4YjUxYWU4Y2E3Ci0tLSAvZGV2L251bGwKKysrIGIvbGliZ29t cC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtNC1hdXguYwpAQCAt MCwwICsxLDEzIEBACisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IH0gKi8KKworI3By YWdtYSBvbXAgcmVxdWlyZXMgcmV2ZXJzZV9vZmZsb2FkCisKKy8qIE5vdGU6IFRoZSBmaWxl IGRvZXMgbm90IGhhdmUgbmVpdGhlciBvZjoKKyAgIGRlY2xhcmUgdGFyZ2V0IGRpcmVjdGl2 ZXMsIGRldmljZSBjb25zdHJ1Y3RzIG9yIGRldmljZSByb3V0aW5lcy4gICovCisKK2ludCB4 OworCit2b2lkIGZvbyAodm9pZCkKK3sKKyAgeCA9IDE7Cit9CmRpZmYgLS1naXQgYS9saWJn b21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9yZXF1aXJlcy00LmMgYi9saWJn b21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9yZXF1aXJlcy00LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjEyOGZkYmI4NDYzCi0tLSAvZGV2 L251bGwKKysrIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVx dWlyZXMtNC5jCkBAIC0wLDAgKzEsMjMgQEAKKy8qIHsgZGctZG8gbGluayB7IHRhcmdldCBv ZmZsb2FkaW5nX2VuYWJsZWQgfSB9ICovCisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAi LWZsdG8iIH0gKi8KKy8qIHsgZGctYWRkaXRpb25hbC1zb3VyY2VzIHJlcXVpcmVzLTQtYXV4 LmMgfSAqLworCisvKiBDaGVjayBkaWFnbm9zdGljIGJ5IGRldmljZS1jb21waWxlcidzIG9y IGhvc3QgY29tcGlsZXIncyBsdG8xLgorICAgT3RoZXIgZmlsZSB1c2VzOiAncmVxdWlyZXMg cmV2ZXJzZV9vZmZsb2FkJywgYnV0IHRoYXQncyBpbmFjdGl2ZSBhcworICAgdGhlcmUgYXJl IG5vIGRlY2xhcmUgdGFyZ2V0IGRpcmVjdGl2ZXMsIGRldmljZSBjb25zdHJ1Y3RzIG5vciBk ZXZpY2Ugcm91dGluZXMgICovCisKKyNwcmFnbWEgb21wIHJlcXVpcmVzIHVuaWZpZWRfYWRk cmVzcyx1bmlmaWVkX3NoYXJlZF9tZW1vcnkKKworaW50IGFbMTBdOworZXh0ZXJuIHZvaWQg Zm9vICh2b2lkKTsKKworaW50CittYWluICh2b2lkKQoreworICAjcHJhZ21hIG9tcCB0YXJn ZXQKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKQorICAgIGFbaV0gPSAwOworCisg IGZvbyAoKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9saWJnb21wL3Rlc3RzdWl0 ZS9saWJnb21wLmMtYysrLWNvbW1vbi9yZXF1aXJlcy01LWF1eC5jIGIvbGliZ29tcC90ZXN0 c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtNS1hdXguYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDIyMzc0OWYwYTEKLS0tIC9kZXYvbnVs bAorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9yZXF1aXJl cy01LWF1eC5jCkBAIC0wLDAgKzEsMTEgQEAKKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0q IH0gfSAqLworCisjcHJhZ21hIG9tcCByZXF1aXJlcyB1bmlmaWVkX3NoYXJlZF9tZW1vcnks IHVuaWZpZWRfYWRkcmVzcywgcmV2ZXJzZV9vZmZsb2FkCisKK2ludCB4OworCit2b2lkIGZv byAodm9pZCkKK3sKKyAgI3ByYWdtYSBvbXAgdGFyZ2V0CisgIHggPSAxOworfQpkaWZmIC0t Z2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMt NS5jIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMt NS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zZDE1YmRlMjFm MAotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy1jKyst Y29tbW9uL3JlcXVpcmVzLTUuYwpAQCAtMCwwICsxLDIwIEBACisvKiB7IGRnLWRvIHJ1biB7 IHRhcmdldCB7IG9mZmxvYWRfdGFyZ2V0X252cHR4IHx8IG9mZmxvYWRfdGFyZ2V0X2FtZGdj biB9IH0gfSAqLworLyogeyBkZy1hZGRpdGlvbmFsLXNvdXJjZXMgcmVxdWlyZXMtNS1hdXgu YyB9ICovCisKKyNwcmFnbWEgb21wIHJlcXVpcmVzIHVuaWZpZWRfc2hhcmVkX21lbW9yeSwg dW5pZmllZF9hZGRyZXNzLCByZXZlcnNlX29mZmxvYWQKKworaW50IGFbMTBdOworZXh0ZXJu IHZvaWQgZm9vICh2b2lkKTsKKworaW50CittYWluICh2b2lkKQoreworICAjcHJhZ21hIG9t cCB0YXJnZXQKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKQorICAgIGFbaV0gPSAw OworCisgIGZvbyAoKTsKKyAgcmV0dXJuIDA7Cit9CisKKy8qIHsgZGctb3V0cHV0ICJkZXZp Y2VzIHByZXNlbnQgYnV0ICdvbXAgcmVxdWlyZXMgdW5pZmllZF9hZGRyZXNzLCB1bmlmaWVk X3NoYXJlZF9tZW1vcnksIHJldmVyc2Vfb2ZmbG9hZCcgY2Fubm90IGJlIGZ1bGZpbGxlZCIg fSAqLwpkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21t b24vcmVxdWlyZXMtNi5jIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21t b24vcmVxdWlyZXMtNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5iMDBjNzQ1OWJiYwotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xp YmdvbXAuYy1jKystY29tbW9uL3JlcXVpcmVzLTYuYwpAQCAtMCwwICsxLDE3IEBACisjcHJh Z21hIG9tcCByZXF1aXJlcyB1bmlmaWVkX3NoYXJlZF9tZW1vcnksIHVuaWZpZWRfYWRkcmVz cywgcmV2ZXJzZV9vZmZsb2FkCisKKy8qIFRoZSByZXF1aXJlcyBsaW5lIGlzIG5vdCBhY3Rp dmUgYXMgdGhlcmUgaXMgbm9uZSBvZjoKKyAgICAgZGVjbGFyZSB0YXJnZXQgZGlyZWN0aXZl cywgZGV2aWNlIGNvbnN0cnVjdHMgb3IgZGV2aWNlIHJvdXRpbmVzLgorICAgVGh1cywgdGhp cyBjb2RlIGlzIGV4cGVjdGVkIHRvIHdvcmsgZXZlcnl3aGVyZS4gICovCisKK2ludCBhWzEw XTsKK2V4dGVybiB2b2lkIGZvbyAodm9pZCk7CisKK2ludAorbWFpbiAodm9pZCkKK3sKKyAg Zm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKQorICAgIGFbaV0gPSAwOworCisgIHJldHVy biAwOworfQpkaWZmIC0tZ2l0IGEvbGlib2ZmbG9hZG1pYy9wbHVnaW4vbGliZ29tcC1wbHVn aW4taW50ZWxtaWMuY3BwIGIvbGlib2ZmbG9hZG1pYy9wbHVnaW4vbGliZ29tcC1wbHVnaW4t aW50ZWxtaWMuY3BwCmluZGV4IGQxNjc4ZDA1MTRlLi4zM2JhZTA2NTBiNCAxMDA2NDQKLS0t IGEvbGlib2ZmbG9hZG1pYy9wbHVnaW4vbGliZ29tcC1wbHVnaW4taW50ZWxtaWMuY3BwCisr KyBiL2xpYm9mZmxvYWRtaWMvcGx1Z2luL2xpYmdvbXAtcGx1Z2luLWludGVsbWljLmNwcApA QCAtMTY4LDggKzE2OCwxMiBAQCBHT01QX09GRkxPQURfZ2V0X3R5cGUgKHZvaWQpCiB9CiAK IGV4dGVybiAiQyIgaW50Ci1HT01QX09GRkxPQURfZ2V0X251bV9kZXZpY2VzICh2b2lkKQor R09NUF9PRkZMT0FEX2dldF9udW1fZGV2aWNlcyAodW5zaWduZWQgaW50IG9tcF9yZXF1aXJl c19tYXNrKQogeworICAvKiBSZXR1cm4gLTEgaWYgbm8gb21wX3JlcXVpcmVzX21hc2sgY2Fu bm90IGJlIGZ1bGZpbGxlZCBidXQKKyAgICAgZGV2aWNlcyB3ZXJlIHByZXNlbnQuICAqLwor ICBpZiAobnVtX2RldmljZXMgPiAwICYmIG9tcF9yZXF1aXJlc19tYXNrICE9IDApCisgICAg cmV0dXJuIC0xOwogICBUUkFDRSAoIigpOiByZXR1cm4gJWQiLCBudW1fZGV2aWNlcyk7CiAg IHJldHVybiBudW1fZGV2aWNlczsKIH0K --------------d5pWmEbwRXgqxePVDHYBRx6E--