From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id 66A04393BC3A for ; Wed, 13 Jan 2021 15:07:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 66A04393BC3A Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=ChungLin_Tang@mentor.com IronPort-SDR: rMfFL1KKMfjOH8iLFaG0Ssz0xbqGpZv05uNirbU6vLOuWCygn1iKRR0bitTN+3inVmT3bhIJCz 9D4tnOuH0MSR747D/++fo49HV1Kf8U39tOa7juJlSieptt25StKrlqX5cbPevQaqvoJ0OefgIq +XASl1VtJLwEePplAANZ/TdgKd/58mdquRuIyMC5iGMbUqeuA5+8mqP9gVctncpsq12Izq8jX5 rQNq11KRnJi9+fn1CPLshKUe5BzJrNvk38UabiHgGygUJrSD0LB12j5zSebd+kMPQGsTiFxDbT gbc= X-IronPort-AV: E=Sophos;i="5.79,344,1602576000"; d="scan'208";a="57165904" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa4.mentor.iphmx.com with ESMTP; 13 Jan 2021 07:07:53 -0800 IronPort-SDR: LQALcu8mNLdotQW7CLABTtnNzx8mWgche07XDa7Yxgy5UWHSkH2Sa/7EdLZ53TO5N4Ys1imXsG oAmTG7fUh6ZJ/CKYlm0SeRD48TCNKVtwDVTFZuezCEWNO5wVcyd2Kq0jpPyBrsucpokOlc5A3e tDNXNjU0tqJ4bJ78f3ExtdBLEPs02vgrcOfUv5idSwbBIQvICy5d5eJ88pDTr7HYGX76+E8MXs XQHC+84Y9xrdfTzH9LxVlRObk6pSFpgSXRO3qnc72IZeE5ufW76rDWxUoglUICipEm5LjEw8aL uHw= From: Chung-Lin Tang Subject: [PATCH, OpenMP 5.0] More implementation of the requires directive To: gcc-patches , Jakub Jelinek , Catherine Moore , Andrew Stubbs Message-ID: <4273bf27-3f0e-0066-393b-2a561a7b9e12@codesourcery.com> Date: Wed, 13 Jan 2021 23:07:44 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------2A126DE23C4F44E876CE27D7" Content-Language: en-US X-ClientProxiedBy: svr-orw-mbx-08.mgc.mentorg.com (147.34.90.208) To svr-orw-mbx-02.mgc.mentorg.com (147.34.90.202) X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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, 13 Jan 2021 15:07:59 -0000 --------------2A126DE23C4F44E876CE27D7 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Hi Jakub, this patch provides more implementation of the requires directive, basically: (1) The collection of the reverse_offload, unified_address, and unified_shared_memory clauses into a .gnu.gomp_requires section (2) libgomp checking of consistency across the entire .gnu.gomp_requires section, and querying into the offload plugin to see if the offload target supports the required features (as of now, the setting is that none of those features are supported by any of the plugins). We currently emit errors, but do not fatally cause exit of the program if those are not met. We're still unsure if complete block-out of program execution is the right thing for the user. This can be discussed later. Is this okay for trunk after stage1 re-opens? Thanks, Chung-Lin 2021-01-13 Chung-Lin Tang gcc/c/ * c-parser.c (c_parser_declaration_or_fndef): Set OMP_REQUIRES_TARGET_USED in omp_requires_mask if function has "omp declare target" attribute. (c_parser_omp_target_data): Set OMP_REQUIRES_TARGET_USED in omp_requires_mask. (c_parser_omp_target_enter_data): Likewise. (c_parser_omp_target_exit_data): Likewise. (c_parser_omp_requires): Adjust to only mention "not implemented yet" for OMP_REQUIRES_DYNAMIC_ALLOCATORS. gcc/cp/ * parser.c (cp_parser_simple_declaration): Set OMP_REQUIRES_TARGET_USED in omp_requires_mask if function has "omp declare target" attribute. (cp_parser_omp_target_data): Set OMP_REQUIRES_TARGET_USED in omp_requires_mask. (cp_parser_omp_target_enter_data): Likewise. (cp_parser_omp_target_exit_data): Likewise. (cp_parser_omp_requires): Adjust to only mention "not implemented yet" for OMP_REQUIRES_DYNAMIC_ALLOCATORS. gcc/fortran/ * openmp.c (gfc_check_omp_requires): Fix REVERSE_OFFLOAD typo. (gfc_match_omp_requires): Adjust to only mention "not implemented yet" for OMP_REQUIRES_DYNAMIC_ALLOCATORS. * parse.c ("tree.h"): Add include. ("omp-general.h"): Likewise. (gfc_parse_file): Add code to merge omp_requires to omp_requires_mask. gcc/ * omp-offload.c (omp_finish_file): Add code to reate OpenMP requires mask variable in .gnu.gomp_requires section if needed. gcc/testsuite/ * c-c++-common/gomp/requires-4.c: Remove prune of "not supported yet". * gcc/testsuite/gfortran.dg/gomp/requires-4.f90: Fix REVERSE_OFFLOAD typo. * gcc/testsuite/gfortran.dg/gomp/requires-8.f90: Likewise. include/ * gomp-constants.h (GOMP_REQUIRES_UNIFIED_ADDRESS): New symbol. (GOMP_REQUIRES_UNIFIED_SHARED_MEMORY): Likewise. (GOMP_REQUIRES_REVERSE_OFFLOAD): Likewise. libgcc/ * offloadstuff.c (__requires_mask_table): New symbol to mark start of .gnu.gomp_requires section. (__requires_mask_table_end): New symbol to mark end of .gnu.gomp_requires section. libgomp/ * libgomp-plugin.h (GOMP_OFFLOAD_supported_features): New declaration. * libgomp.h (struct gomp_device_descr): New 'supported_features_func' plugin hook field. * oacc-host.c (host_supported_features): New host hook function. (host_dispatch): Initialize 'supported_features_func' host hook. * plugin/plugin-gcn.c (GOMP_OFFLOAD_supported_features): New function. * plugin/plugin-nvptx.c (GOMP_OFFLOAD_supported_features): Likewise. * target.c (): Add include of standard header. (gomp_requires_mask): New static variable. (__requires_mask_table): New declaration. (__requires_mask_table_end): Likewise. (gomp_load_plugin_for_device): Add loading of 'supported_features' hook. (gomp_target_init): Add code to summarize .gnu._gomp_requires section mask values, emit error if inconsistency found. * testsuite/libgomp.c-c++-common/requires-1.c: New test. * testsuite/libgomp.c-c++-common/requires-1-aux.c: New file linked with above test. * testsuite/libgomp.c-c++-common/requires-2.c: New test. * testsuite/libgomp.c-c++-common/requires-2-aux.c: New file linked with above test. liboffloadmic/ * plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_supported_features): New function. --------------2A126DE23C4F44E876CE27D7 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="requires.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="requires.patch" ZGlmZiAtLWdpdCBhL2djYy9jL2MtcGFyc2VyLmMgYi9nY2MvYy9jLXBhcnNlci5jCmluZGV4 IGM3N2Q5ZmNjZGMyLi5lNjg1YjI2NzQ2ZSAxMDA2NDQKLS0tIGEvZ2NjL2MvYy1wYXJzZXIu YworKysgYi9nY2MvYy9jLXBhcnNlci5jCkBAIC0yNDc1LDYgKzI0NzUsMTIgQEAgY19wYXJz ZXJfZGVjbGFyYXRpb25fb3JfZm5kZWYgKGNfcGFyc2VyICpwYXJzZXIsIGJvb2wgZm5kZWZf b2ssCiAJICBicmVhazsKIAl9CiAKKyAgICAgIGlmIChmbGFnX29wZW5tcAorCSAgJiYgbG9v a3VwX2F0dHJpYnV0ZSAoIm9tcCBkZWNsYXJlIHRhcmdldCIsCisJCQkgICAgICAgREVDTF9B VFRSSUJVVEVTIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wpKSkKKwlvbXBfcmVxdWlyZXNfbWFz aworCSAgPSAoZW51bSBvbXBfcmVxdWlyZXMpIChvbXBfcmVxdWlyZXNfbWFzayB8IE9NUF9S RVFVSVJFU19UQVJHRVRfVVNFRCk7CisKICAgICAgIGlmIChERUNMX0RFQ0xBUkVEX0lOTElO RV9QIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wpKQogICAgICAgICB0diA9IFRWX1BBUlNFX0lO TElORTsKICAgICAgIGVsc2UKQEAgLTE5NTU2LDYgKzE5NTYyLDEwIEBAIGNfcGFyc2VyX29t cF90ZWFtcyAobG9jYXRpb25fdCBsb2MsIGNfcGFyc2VyICpwYXJzZXIsCiBzdGF0aWMgdHJl ZQogY19wYXJzZXJfb21wX3RhcmdldF9kYXRhIChsb2NhdGlvbl90IGxvYywgY19wYXJzZXIg KnBhcnNlciwgYm9vbCAqaWZfcCkKIHsKKyAgaWYgKGZsYWdfb3Blbm1wKQorICAgIG9tcF9y ZXF1aXJlc19tYXNrCisgICAgICA9IChlbnVtIG9tcF9yZXF1aXJlcykgKG9tcF9yZXF1aXJl c19tYXNrIHwgT01QX1JFUVVJUkVTX1RBUkdFVF9VU0VEKTsKKwogICB0cmVlIGNsYXVzZXMK ICAgICA9IGNfcGFyc2VyX29tcF9hbGxfY2xhdXNlcyAocGFyc2VyLCBPTVBfVEFSR0VUX0RB VEFfQ0xBVVNFX01BU0ssCiAJCQkJIiNwcmFnbWEgb21wIHRhcmdldCBkYXRhIik7CkBAIC0x OTY5OCw2ICsxOTcwOCwxMCBAQCBjX3BhcnNlcl9vbXBfdGFyZ2V0X2VudGVyX2RhdGEgKGxv Y2F0aW9uX3QgbG9jLCBjX3BhcnNlciAqcGFyc2VyLAogICAgICAgcmV0dXJuIE5VTExfVFJF RTsKICAgICB9CiAKKyAgaWYgKGZsYWdfb3Blbm1wKQorICAgIG9tcF9yZXF1aXJlc19tYXNr CisgICAgICA9IChlbnVtIG9tcF9yZXF1aXJlcykgKG9tcF9yZXF1aXJlc19tYXNrIHwgT01Q X1JFUVVJUkVTX1RBUkdFVF9VU0VEKTsKKwogICB0cmVlIGNsYXVzZXMKICAgICA9IGNfcGFy c2VyX29tcF9hbGxfY2xhdXNlcyAocGFyc2VyLCBPTVBfVEFSR0VUX0VOVEVSX0RBVEFfQ0xB VVNFX01BU0ssCiAJCQkJIiNwcmFnbWEgb21wIHRhcmdldCBlbnRlciBkYXRhIik7CkBAIC0x OTc4NCw2ICsxOTc5OCwxMCBAQCBjX3BhcnNlcl9vbXBfdGFyZ2V0X2V4aXRfZGF0YSAobG9j YXRpb25fdCBsb2MsIGNfcGFyc2VyICpwYXJzZXIsCiAgICAgICByZXR1cm4gTlVMTF9UUkVF OwogICAgIH0KIAorICBpZiAoZmxhZ19vcGVubXApCisgICAgb21wX3JlcXVpcmVzX21hc2sK KyAgICAgID0gKGVudW0gb21wX3JlcXVpcmVzKSAob21wX3JlcXVpcmVzX21hc2sgfCBPTVBf UkVRVUlSRVNfVEFSR0VUX1VTRUQpOworCiAgIHRyZWUgY2xhdXNlcwogICAgID0gY19wYXJz ZXJfb21wX2FsbF9jbGF1c2VzIChwYXJzZXIsIE9NUF9UQVJHRVRfRVhJVF9EQVRBX0NMQVVT RV9NQVNLLAogCQkJCSIjcHJhZ21hIG9tcCB0YXJnZXQgZXhpdCBkYXRhIik7CkBAIC0yMTM3 MSw3ICsyMTM4OSw3IEBAIGNfcGFyc2VyX29tcF9yZXF1aXJlcyAoY19wYXJzZXIgKnBhcnNl cikKIAkgICAgICBjX3BhcnNlcl9za2lwX3RvX3ByYWdtYV9lb2wgKHBhcnNlciwgZmFsc2Up OwogCSAgICAgIHJldHVybjsKIAkgICAgfQotCSAgaWYgKHApCisJICBpZiAodGhpc19yZXEg PT0gT01QX1JFUVVJUkVTX0RZTkFNSUNfQUxMT0NBVE9SUykKIAkgICAgc29ycnlfYXQgKGNs b2MsICIlcXMgY2xhdXNlIG9uICU8cmVxdWlyZXMlPiBkaXJlY3RpdmUgbm90ICIKIAkJCSAg ICAic3VwcG9ydGVkIHlldCIsIHApOwogCSAgaWYgKHApCmRpZmYgLS1naXQgYS9nY2MvY3Av cGFyc2VyLmMgYi9nY2MvY3AvcGFyc2VyLmMKaW5kZXggYzcxMzg1MmZlOTMuLmFmYmM0ZTU1 MWQ0IDEwMDY0NAotLS0gYS9nY2MvY3AvcGFyc2VyLmMKKysrIGIvZ2NjL2NwL3BhcnNlci5j CkBAIC0xNDQ1NSw2ICsxNDQ1NSwxMSBAQCBjcF9wYXJzZXJfc2ltcGxlX2RlY2xhcmF0aW9u IChjcF9wYXJzZXIqIHBhcnNlciwKIAkgIC8qIE90aGVyd2lzZSwgd2UncmUgZG9uZSB3aXRo IHRoZSBsaXN0IG9mIGRlY2xhcmF0b3JzLiAgKi8KIAkgIGVsc2UKIAkgICAgeworCSAgICAg IGlmIChmbGFnX29wZW5tcCAmJiBsb29rdXBfYXR0cmlidXRlICgib21wIGRlY2xhcmUgdGFy Z2V0IiwKKwkJCQkJCSAgIERFQ0xfQVRUUklCVVRFUyAoZGVjbCkpKQorCQlvbXBfcmVxdWly ZXNfbWFzaworCQkgID0gKGVudW0gb21wX3JlcXVpcmVzKSAob21wX3JlcXVpcmVzX21hc2sK KwkJCQkJIHwgT01QX1JFUVVJUkVTX1RBUkdFVF9VU0VEKTsKIAkgICAgICBwb3BfZGVmZXJy aW5nX2FjY2Vzc19jaGVja3MgKCk7CiAJICAgICAgcmV0dXJuOwogCSAgICB9CkBAIC00MTQz Miw2ICs0MTQzNywxMCBAQCBjcF9wYXJzZXJfb21wX3RlYW1zIChjcF9wYXJzZXIgKnBhcnNl ciwgY3BfdG9rZW4gKnByYWdtYV90b2ssCiBzdGF0aWMgdHJlZQogY3BfcGFyc2VyX29tcF90 YXJnZXRfZGF0YSAoY3BfcGFyc2VyICpwYXJzZXIsIGNwX3Rva2VuICpwcmFnbWFfdG9rLCBi b29sICppZl9wKQogeworICBpZiAoZmxhZ19vcGVubXApCisgICAgb21wX3JlcXVpcmVzX21h c2sKKyAgICAgID0gKGVudW0gb21wX3JlcXVpcmVzKSAob21wX3JlcXVpcmVzX21hc2sgfCBP TVBfUkVRVUlSRVNfVEFSR0VUX1VTRUQpOworCiAgIHRyZWUgY2xhdXNlcwogICAgID0gY3Bf cGFyc2VyX29tcF9hbGxfY2xhdXNlcyAocGFyc2VyLCBPTVBfVEFSR0VUX0RBVEFfQ0xBVVNF X01BU0ssCiAJCQkJICIjcHJhZ21hIG9tcCB0YXJnZXQgZGF0YSIsIHByYWdtYV90b2spOwpA QCAtNDE1MzUsNiArNDE1NDQsMTAgQEAgY3BfcGFyc2VyX29tcF90YXJnZXRfZW50ZXJfZGF0 YSAoY3BfcGFyc2VyICpwYXJzZXIsIGNwX3Rva2VuICpwcmFnbWFfdG9rLAogICAgICAgcmV0 dXJuIE5VTExfVFJFRTsKICAgICB9CiAKKyAgaWYgKGZsYWdfb3Blbm1wKQorICAgIG9tcF9y ZXF1aXJlc19tYXNrCisgICAgICA9IChlbnVtIG9tcF9yZXF1aXJlcykgKG9tcF9yZXF1aXJl c19tYXNrIHwgT01QX1JFUVVJUkVTX1RBUkdFVF9VU0VEKTsKKwogICB0cmVlIGNsYXVzZXMK ICAgICA9IGNwX3BhcnNlcl9vbXBfYWxsX2NsYXVzZXMgKHBhcnNlciwgT01QX1RBUkdFVF9F TlRFUl9EQVRBX0NMQVVTRV9NQVNLLAogCQkJCSAiI3ByYWdtYSBvbXAgdGFyZ2V0IGVudGVy IGRhdGEiLCBwcmFnbWFfdG9rKTsKQEAgLTQxNjI1LDYgKzQxNjM4LDEwIEBAIGNwX3BhcnNl cl9vbXBfdGFyZ2V0X2V4aXRfZGF0YSAoY3BfcGFyc2VyICpwYXJzZXIsIGNwX3Rva2VuICpw cmFnbWFfdG9rLAogICAgICAgcmV0dXJuIE5VTExfVFJFRTsKICAgICB9CiAKKyAgaWYgKGZs YWdfb3Blbm1wKQorICAgIG9tcF9yZXF1aXJlc19tYXNrCisgICAgICA9IChlbnVtIG9tcF9y ZXF1aXJlcykgKG9tcF9yZXF1aXJlc19tYXNrIHwgT01QX1JFUVVJUkVTX1RBUkdFVF9VU0VE KTsKKwogICB0cmVlIGNsYXVzZXMKICAgICA9IGNwX3BhcnNlcl9vbXBfYWxsX2NsYXVzZXMg KHBhcnNlciwgT01QX1RBUkdFVF9FWElUX0RBVEFfQ0xBVVNFX01BU0ssCiAJCQkJICIjcHJh Z21hIG9tcCB0YXJnZXQgZXhpdCBkYXRhIiwgcHJhZ21hX3Rvayk7CkBAIC00MzgxOSw3ICs0 MzgzNiw3IEBAIGNwX3BhcnNlcl9vbXBfcmVxdWlyZXMgKGNwX3BhcnNlciAqcGFyc2VyLCBj cF90b2tlbiAqcHJhZ21hX3RvaykKIAkgICAgICBjcF9wYXJzZXJfc2tpcF90b19wcmFnbWFf ZW9sIChwYXJzZXIsIHByYWdtYV90b2spOwogCSAgICAgIHJldHVybiBmYWxzZTsKIAkgICAg fQotCSAgaWYgKHApCisJICBpZiAodGhpc19yZXEgPT0gT01QX1JFUVVJUkVTX0RZTkFNSUNf QUxMT0NBVE9SUykKIAkgICAgc29ycnlfYXQgKGNsb2MsICIlcXMgY2xhdXNlIG9uICU8cmVx dWlyZXMlPiBkaXJlY3RpdmUgbm90ICIKIAkJCSAgICAic3VwcG9ydGVkIHlldCIsIHApOwog CSAgaWYgKHApCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9vcGVubXAuYyBiL2djYy9mb3J0 cmFuL29wZW5tcC5jCmluZGV4IGNiMTY2Zjk1NmI3Li5jMjU1MzFhNDk4OSAxMDA2NDQKLS0t IGEvZ2NjL2ZvcnRyYW4vb3Blbm1wLmMKKysrIGIvZ2NjL2ZvcnRyYW4vb3Blbm1wLmMKQEAg LTM2NjgsNyArMzY2OCw3IEBAIGdmY19jaGVja19vbXBfcmVxdWlyZXMgKGdmY19uYW1lc3Bh Y2UgKm5zLCBpbnQgcmVmX29tcF9yZXF1aXJlcykKICAgICAgIGlmICgocmVmX29tcF9yZXF1 aXJlcyAmIE9NUF9SRVFfUkVWRVJTRV9PRkZMT0FEKQogCSAgJiYgIShucy0+b21wX3JlcXVp cmVzICYgT01QX1JFUV9SRVZFUlNFX09GRkxPQUQpKQogCWdmY19lcnJvciAoIlByb2dyYW0g dW5pdCBhdCAlTCBoYXMgT3Blbk1QIGRldmljZSBjb25zdHJ1Y3RzL3JvdXRpbmVzICIKLQkJ ICAgImJ1dCBkb2VzIG5vdCBzZXQgISRPTVAgUkVRVUlSRVMgUkVWRVJTRV9PRkZTRVQgYnV0 IG90aGVyICIKKwkJICAgImJ1dCBkb2VzIG5vdCBzZXQgISRPTVAgUkVRVUlSRVMgUkVWRVJT RV9PRkZMT0FEIGJ1dCBvdGhlciAiCiAJCSAgICJwcm9ncmFtIHVuaXRzIGRvIiwgJm5zLT5w cm9jX25hbWUtPmRlY2xhcmVkX2F0KTsKICAgICAgIGlmICgocmVmX29tcF9yZXF1aXJlcyAm IE9NUF9SRVFfVU5JRklFRF9BRERSRVNTKQogCSAgJiYgIShucy0+b21wX3JlcXVpcmVzICYg T01QX1JFUV9VTklGSUVEX0FERFJFU1MpKQpAQCAtMzg1NSw3ICszODU1LDggQEAgZ2ZjX21h dGNoX29tcF9yZXF1aXJlcyAodm9pZCkKICAgICAgIGVsc2UKIAlnb3RvIGVycm9yOwogCi0g ICAgICBpZiAocmVxdWlyZXNfY2xhdXNlICYgfk9NUF9SRVFfQVRPTUlDX01FTV9PUkRFUl9N QVNLKQorICAgICAgLyogQ3VycmVudGx5LCBldmVyeXRoaW5nIGV4Y2VwdCAnZHluYW1pY19h bGxvY2F0b3JzJyBpcyBhbGxvd2VkLiAgKi8KKyAgICAgIGlmIChyZXF1aXJlc19jbGF1c2Ug PT0gT01QX1JFUV9EWU5BTUlDX0FMTE9DQVRPUlMpCiAJZ2ZjX2Vycm9yX25vdyAoIlNvcnJ5 LCAlcXMgY2xhdXNlIGF0ICVMIG9uIFJFUVVJUkVTIGRpcmVjdGl2ZSBpcyBub3QgIgogCQkg ICAgICAgInlldCBzdXBwb3J0ZWQiLCBjbGF1c2UsICZvbGRfbG9jKTsKICAgICAgIGlmICgh Z2ZjX29tcF9yZXF1aXJlc19hZGRfY2xhdXNlIChyZXF1aXJlc19jbGF1c2UsIGNsYXVzZSwg Jm9sZF9sb2MsIE5VTEwpKQpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vcGFyc2UuYyBiL2dj Yy9mb3J0cmFuL3BhcnNlLmMKaW5kZXggMTU0OWY4ZTE2MzUuLjQ3MzFiY2EyY2Y3IDEwMDY0 NAotLS0gYS9nY2MvZm9ydHJhbi9wYXJzZS5jCisrKyBiL2djYy9mb3J0cmFuL3BhcnNlLmMK QEAgLTIyLDEwICsyMiwxMiBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJ TkczLiAgSWYgbm90IHNlZQogI2luY2x1ZGUgInN5c3RlbS5oIgogI2luY2x1ZGUgImNvcmV0 eXBlcy5oIgogI2luY2x1ZGUgIm9wdGlvbnMuaCIKKyNpbmNsdWRlICJ0cmVlLmgiCiAjaW5j bHVkZSAiZ2ZvcnRyYW4uaCIKICNpbmNsdWRlIDxzZXRqbXAuaD4KICNpbmNsdWRlICJtYXRj aC5oIgogI2luY2x1ZGUgInBhcnNlLmgiCisjaW5jbHVkZSAib21wLWdlbmVyYWwuaCIKIAog LyogQ3VycmVudCBzdGF0ZW1lbnQgbGFiZWwuICBaZXJvIG1lYW5zIG5vIHN0YXRlbWVudCBs YWJlbC4gIEJlY2F1c2UgbmV3X3N0CiAgICBjYW4gZ2V0IHdpcGVkIGR1cmluZyBzdGF0ZW1l bnQgbWF0Y2hpbmcsIHdlIGhhdmUgdG8ga2VlcCBpdCBzZXBhcmF0ZS4gICovCkBAIC02NTcy LDYgKzY1NzQsMjMgQEAgZG9uZToKICAgICAgICBnZmNfY3VycmVudF9ucyA9IGdmY19jdXJy ZW50X25zLT5zaWJsaW5nKQogICAgIGdmY19jaGVja19vbXBfcmVxdWlyZXMgKGdmY19jdXJy ZW50X25zLCBvbXBfcmVxdWlyZXMpOwogCisgIGlmIChvbXBfcmVxdWlyZXMpCisgICAgewor ICAgICAgb21wX3JlcXVpcmVzX21hc2sgPSAoZW51bSBvbXBfcmVxdWlyZXMpIE9NUF9SRVFV SVJFU19UQVJHRVRfVVNFRDsKKyAgICAgIGlmIChvbXBfcmVxdWlyZXMgJiBPTVBfUkVRX1JF VkVSU0VfT0ZGTE9BRCkKKwlvbXBfcmVxdWlyZXNfbWFzaworCSAgPSAoZW51bSBvbXBfcmVx dWlyZXMpIChvbXBfcmVxdWlyZXNfbWFzaworCQkJCSB8IE9NUF9SRVFVSVJFU19SRVZFUlNF X09GRkxPQUQpOworICAgICAgaWYgKG9tcF9yZXF1aXJlcyAmIE9NUF9SRVFfVU5JRklFRF9B RERSRVNTKQorCW9tcF9yZXF1aXJlc19tYXNrCisJICA9IChlbnVtIG9tcF9yZXF1aXJlcykg KG9tcF9yZXF1aXJlc19tYXNrCisJCQkJIHwgT01QX1JFUVVJUkVTX1VOSUZJRURfQUREUkVT Uyk7CisgICAgICBpZiAob21wX3JlcXVpcmVzICYgT01QX1JFUV9VTklGSUVEX1NIQVJFRF9N RU1PUlkpCisJb21wX3JlcXVpcmVzX21hc2sKKwkgID0gKGVudW0gb21wX3JlcXVpcmVzKSAo b21wX3JlcXVpcmVzX21hc2sKKwkJCQkgfCBPTVBfUkVRVUlSRVNfVU5JRklFRF9TSEFSRURf TUVNT1JZKTsKKyAgICB9CisKICAgLyogRG8gdGhlIHBhcnNlIHRyZWUgZHVtcC4gICovCiAg IGdmY19jdXJyZW50X25zID0gZmxhZ19kdW1wX2ZvcnRyYW5fb3JpZ2luYWwgPyBnZmNfZ2xv YmFsX25zX2xpc3QgOiBOVUxMOwogCmRpZmYgLS1naXQgYS9nY2Mvb21wLW9mZmxvYWQuYyBi L2djYy9vbXAtb2ZmbG9hZC5jCmluZGV4IGJhMDkzN2ZiYTk0Li45Y2M3ZDI5NDVmYyAxMDA2 NDQKLS0tIGEvZ2NjL29tcC1vZmZsb2FkLmMKKysrIGIvZ2NjL29tcC1vZmZsb2FkLmMKQEAg LTQzNyw2ICs0MzcsMjQgQEAgb21wX2ZpbmlzaF9maWxlICh2b2lkKQogCiAgICAgICB2YXJw b29sX25vZGU6OmZpbmFsaXplX2RlY2wgKHZhcnNfZGVjbCk7CiAgICAgICB2YXJwb29sX25v ZGU6OmZpbmFsaXplX2RlY2wgKGZ1bmNzX2RlY2wpOworCisgICAgICBpZiAoZmxhZ19vcGVu bXAgJiYgKG9tcF9yZXF1aXJlc19tYXNrICYgT01QX1JFUVVJUkVTX1RBUkdFVF9VU0VEKSAh PSAwKQorCXsKKwkgIGNvbnN0IGNoYXIgKnJlcXVpcmVzX3NlY3Rpb24gPSAiLmdudS5nb21w X3JlcXVpcmVzIjsKKwkgIHRyZWUgbWFza3ZhciA9IGJ1aWxkX2RlY2wgKFVOS05PV05fTE9D QVRJT04sIFZBUl9ERUNMLAorCQkJCSAgICAgZ2V0X2lkZW50aWZpZXIgKCIuZ29tcF9yZXF1 aXJlc19tYXNrIiksCisJCQkJICAgICB1bnNpZ25lZF90eXBlX25vZGUpOworCSAgU0VUX0RF Q0xfQUxJR04gKG1hc2t2YXIsIFRZUEVfQUxJR04gKHVuc2lnbmVkX3R5cGVfbm9kZSkpOwor CSAgVFJFRV9TVEFUSUMgKG1hc2t2YXIpID0gMTsKKwkgIERFQ0xfSU5JVElBTCAobWFza3Zh cikKKwkgICAgPSBidWlsZF9pbnRfY3N0ICh1bnNpZ25lZF90eXBlX25vZGUsCisJCQkgICAg ICgodW5zaWduZWQgaW50KSBvbXBfcmVxdWlyZXNfbWFzaworCQkJICAgICAgJiAoT01QX1JF UVVJUkVTX1VOSUZJRURfQUREUkVTUworCQkJCSB8IE9NUF9SRVFVSVJFU19VTklGSUVEX1NI QVJFRF9NRU1PUlkKKwkJCQkgfCBPTVBfUkVRVUlSRVNfUkVWRVJTRV9PRkZMT0FEKSkpOwor CSAgc2V0X2RlY2xfc2VjdGlvbl9uYW1lIChtYXNrdmFyLCByZXF1aXJlc19zZWN0aW9uKTsK KwkgIHZhcnBvb2xfbm9kZTo6ZmluYWxpemVfZGVjbCAobWFza3Zhcik7CisJfQogICAgIH0K ICAgZWxzZQogICAgIHsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L2dvbXAvcmVxdWlyZXMtNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9y ZXF1aXJlcy00LmMKaW5kZXggODhiYTc3NDZjZjguLjhmNDVkODNlYTZlIDEwMDY0NAotLS0g YS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3JlcXVpcmVzLTQuYworKysgYi9n Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3JlcXVpcmVzLTQuYwpAQCAtOSw1ICs5 LDMgQEAgZm9vICh2b2lkKQogI3ByYWdtYSBvbXAgcmVxdWlyZXMgdW5pZmllZF9zaGFyZWRf bWVtb3J5CS8qIHsgZGctZXJyb3IgIid1bmlmaWVkX3NoYXJlZF9tZW1vcnknIGNsYXVzZSB1 c2VkIGxleGljYWxseSBhZnRlciBmaXJzdCB0YXJnZXQgY29uc3RydWN0IG9yIG9mZmxvYWRp bmcgQVBJIiB9ICovCiAjcHJhZ21hIG9tcCByZXF1aXJlcyB1bmlmaWVkX2FkZHJlc3MJLyog eyBkZy1lcnJvciAiJ3VuaWZpZWRfYWRkcmVzcycgY2xhdXNlIHVzZWQgbGV4aWNhbGx5IGFm dGVyIGZpcnN0IHRhcmdldCBjb25zdHJ1Y3Qgb3Igb2ZmbG9hZGluZyBBUEkiIH0gKi8KICNw cmFnbWEgb21wIHJlcXVpcmVzIHJldmVyc2Vfb2ZmbG9hZAkvKiB7IGRnLWVycm9yICIncmV2 ZXJzZV9vZmZsb2FkJyBjbGF1c2UgdXNlZCBsZXhpY2FsbHkgYWZ0ZXIgZmlyc3QgdGFyZ2V0 IGNvbnN0cnVjdCBvciBvZmZsb2FkaW5nIEFQSSIgfSAqLwotCi0vKiB7IGRnLXBydW5lLW91 dHB1dCAibm90IHN1cHBvcnRlZCB5ZXQiIH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvZ29tcC9yZXF1aXJlcy00LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2Zv cnRyYW4uZGcvZ29tcC9yZXF1aXJlcy00LmY5MAppbmRleCBiMTdhY2ViODk4Yi4uYzg3MGEy ODQwZDMgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9yZXF1 aXJlcy00LmY5MAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvcmVxdWly ZXMtNC5mOTAKQEAgLTksNyArOSw3IEBAIGVuZCBtb2R1bGUgbQogc3Vicm91dGluZSBmb28K ICAgISRvbXAgdGFyZ2V0CiAgICEkb21wIGVuZCB0YXJnZXQKLSEgeyBkZy1lcnJvciAiT3Bl bk1QIGRldmljZSBjb25zdHJ1Y3RzL3JvdXRpbmVzIGJ1dCBkb2VzIG5vdCBzZXQgIS5PTVAg UkVRVUlSRVMgUkVWRVJTRV9PRkZTRVQgYnV0IG90aGVyIHByb2dyYW0gdW5pdHMgZG8iICIi IHsgdGFyZ2V0ICotKi0qIH0gOSB9CishIHsgZGctZXJyb3IgIk9wZW5NUCBkZXZpY2UgY29u c3RydWN0cy9yb3V0aW5lcyBidXQgZG9lcyBub3Qgc2V0ICEuT01QIFJFUVVJUkVTIFJFVkVS U0VfT0ZGTE9BRCBidXQgb3RoZXIgcHJvZ3JhbSB1bml0cyBkbyIgIiIgeyB0YXJnZXQgKi0q LSogfSA5IH0KICEgeyBkZy1lcnJvciAiT3Blbk1QIGRldmljZSBjb25zdHJ1Y3RzL3JvdXRp bmVzIGJ1dCBkb2VzIG5vdCBzZXQgIS5PTVAgUkVRVUlSRVMgVU5JRklFRF9BRERSRVNTIGJ1 dCBvdGhlciBwcm9ncmFtIHVuaXRzIGRvIiAiIiB7IHRhcmdldCAqLSotKiB9IDkgfQogISB7 IGRnLWVycm9yICJPcGVuTVAgZGV2aWNlIGNvbnN0cnVjdHMvcm91dGluZXMgYnV0IGRvZXMg bm90IHNldCAhLk9NUCBSRVFVSVJFUyBVTklGSUVEX1NIQVJFRF9NRU1PUlkgYnV0IG90aGVy IHByb2dyYW0gdW5pdHMgZG8iICIiIHsgdGFyZ2V0ICotKi0qIH0gOSB9CiBlbmQKZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9yZXF1aXJlcy04LmY5MCBi L2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9yZXF1aXJlcy04LmY5MAppbmRleCAz YzMyYWU5ODYwZS4uMzgxOWIwYzI4Y2MgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2Zv cnRyYW4uZGcvZ29tcC9yZXF1aXJlcy04LmY5MAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL2dvbXAvcmVxdWlyZXMtOC5mOTAKQEAgLTEzLDcgKzEzLDcgQEAgY29udGFpbnMK ICBlbmQgc3Vicm91dGluZSBmb28KIGVuZCBtb2R1bGUgbQogCi1zdWJyb3V0aW5lIGJhciAg ISB7IGRnLWVycm9yICJoYXMgT3Blbk1QIGRldmljZSBjb25zdHJ1Y3RzL3JvdXRpbmVzIGJ1 dCBkb2VzIG5vdCBzZXQgIS5PTVAgUkVRVUlSRVMgUkVWRVJTRV9PRkZTRVQgYnV0IG90aGVy IHByb2dyYW0gdW5pdHMgZG8iIH0KK3N1YnJvdXRpbmUgYmFyICAhIHsgZGctZXJyb3IgImhh cyBPcGVuTVAgZGV2aWNlIGNvbnN0cnVjdHMvcm91dGluZXMgYnV0IGRvZXMgbm90IHNldCAh Lk9NUCBSRVFVSVJFUyBSRVZFUlNFX09GRkxPQUQgYnV0IG90aGVyIHByb2dyYW0gdW5pdHMg ZG8iIH0KICAgIXVzZSBtCiAgICEkb21wIHJlcXVpcmVzIHVuaWZpZWRfc2hhcmVkX21lbW9y eQogICAhJG9tcCBkZWNsYXJlIHRhcmdldApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9nb21wLWNv bnN0YW50cy5oIGIvaW5jbHVkZS9nb21wLWNvbnN0YW50cy5oCmluZGV4IDExYTkzMDhlM2Qy Li5kNWEwYjJjNWVhNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9nb21wLWNvbnN0YW50cy5oCisr KyBiL2luY2x1ZGUvZ29tcC1jb25zdGFudHMuaApAQCAtMzAxLDYgKzMwMSwxMiBAQCBlbnVt IGdvbXBfbWFwX2tpbmQKICNkZWZpbmUgR09NUF9ERVBFTkRfSU5PVVQJCTMKICNkZWZpbmUg R09NUF9ERVBFTkRfTVVURVhJTk9VVFNFVAk0CiAKKy8qIEZsYWcgdmFsdWVzIGZvciByZXF1 aXJlcy1kaXJlY3RpdmUgZmVhdHVyZXMsIG11c3QgbWF0Y2ggY29ycmVzcG9uZGluZworICAg T01QX1JFUVVJUkVTXyogdmFsdWVzIGluIGdjYy9vbXAtZ2VuZXJhbC5oLiAgKi8KKyNkZWZp bmUgR09NUF9SRVFVSVJFU19VTklGSUVEX0FERFJFU1MgICAgICAgMHgxMAorI2RlZmluZSBH T01QX1JFUVVJUkVTX1VOSUZJRURfU0hBUkVEX01FTU9SWSAweDIwCisjZGVmaW5lIEdPTVBf UkVRVUlSRVNfUkVWRVJTRV9PRkZMT0FEICAgICAgIDB4ODAKKwogLyogSFNBIHNwZWNpZmlj IGRhdGEgc3RydWN0dXJlcy4gICovCiAKIC8qIElkZW50aWZpZXJzIG9mIGRldmljZS1zcGVj aWZpYyB0YXJnZXQgYXJndW1lbnRzLiAgKi8KZGlmZiAtLWdpdCBhL2xpYmdjYy9vZmZsb2Fk c3R1ZmYuYyBiL2xpYmdjYy9vZmZsb2Fkc3R1ZmYuYwppbmRleCBiMTk0MjhhZjZkOC4uNzgy MTBhODhmMTUgMTAwNjQ0Ci0tLSBhL2xpYmdjYy9vZmZsb2Fkc3R1ZmYuYworKysgYi9saWJn Y2Mvb2ZmbG9hZHN0dWZmLmMKQEAgLTU0LDYgKzU0LDkgQEAgY29uc3Qgdm9pZCAqY29uc3Qg X19vZmZsb2FkX3Zhcl90YWJsZVswXQogICBfX2F0dHJpYnV0ZV9fICgoX191c2VkX18sIHZp c2liaWxpdHkgKCJoaWRkZW4iKSwKIAkJICBzZWN0aW9uIChPRkZMT0FEX1ZBUl9UQUJMRV9T RUNUSU9OX05BTUUpKSkgPSB7IH07CiAKK2NvbnN0IHVuc2lnbmVkIGludCBjb25zdCBfX3Jl cXVpcmVzX21hc2tfdGFibGVbMF0KKyAgX19hdHRyaWJ1dGVfXyAoKF9fdXNlZF9fLCBzZWN0 aW9uICgiLmdudS5nb21wX3JlcXVpcmVzIikpKSA9IHsgfTsKKwogI2VsaWYgZGVmaW5lZCBD UlRfRU5ECiAKIGNvbnN0IHZvaWQgKmNvbnN0IF9fb2ZmbG9hZF9mdW5jc19lbmRbMF0KQEAg LTYzLDYgKzY2LDkgQEAgY29uc3Qgdm9pZCAqY29uc3QgX19vZmZsb2FkX3ZhcnNfZW5kWzBd CiAgIF9fYXR0cmlidXRlX18gKChfX3VzZWRfXywgdmlzaWJpbGl0eSAoImhpZGRlbiIpLAog CQkgIHNlY3Rpb24gKE9GRkxPQURfVkFSX1RBQkxFX1NFQ1RJT05fTkFNRSkpKSA9IHsgfTsK IAorY29uc3QgdW5zaWduZWQgaW50IGNvbnN0IF9fcmVxdWlyZXNfbWFza190YWJsZV9lbmRb MF0KKyAgX19hdHRyaWJ1dGVfXyAoKF9fdXNlZF9fLCBzZWN0aW9uICgiLmdudS5nb21wX3Jl cXVpcmVzIikpKSA9IHsgfTsKKwogI2VsaWYgZGVmaW5lZCBDUlRfVEFCTEUKIAogZXh0ZXJu IGNvbnN0IHZvaWQgKmNvbnN0IF9fb2ZmbG9hZF9mdW5jX3RhYmxlW107CkBAIC03Nyw2ICs4 Myw5IEBAIGNvbnN0IHZvaWQgKmNvbnN0IF9fT0ZGTE9BRF9UQUJMRV9fW10KICAgJl9fb2Zm bG9hZF92YXJfdGFibGUsICZfX29mZmxvYWRfdmFyc19lbmQKIH07CiAKK2V4dGVybiBjb25z dCB1bnNpZ25lZCBpbnQgY29uc3QgX19yZXF1aXJlc19tYXNrX3RhYmxlW107CitleHRlcm4g Y29uc3QgdW5zaWduZWQgaW50IGNvbnN0IF9fcmVxdWlyZXNfbWFza190YWJsZV9lbmRbXTsK KwogI2Vsc2UgLyogISBDUlRfQkVHSU4gJiYgISBDUlRfRU5EICYmICEgQ1JUX1RBQkxFICAq LwogI2Vycm9yICJPbmUgb2YgQ1JUX0JFR0lOLCBDUlRfRU5EIG9yIENSVF9UQUJMRSBtdXN0 IGJlIGRlZmluZWQuIgogI2VuZGlmCmRpZmYgLS1naXQgYS9saWJnb21wL2xpYmdvbXAtcGx1 Z2luLmggYi9saWJnb21wL2xpYmdvbXAtcGx1Z2luLmgKaW5kZXggNjI2NDVjZTk5NTQuLmY1 NDQ2OWZkZDZiIDEwMDY0NAotLS0gYS9saWJnb21wL2xpYmdvbXAtcGx1Z2luLmgKKysrIGIv bGliZ29tcC9saWJnb21wLXBsdWdpbi5oCkBAIC0xMjIsNiArMTIyLDcgQEAgZXh0ZXJuIGlu dCBHT01QX09GRkxPQURfZ2V0X3R5cGUgKHZvaWQpOwogZXh0ZXJuIGludCBHT01QX09GRkxP QURfZ2V0X251bV9kZXZpY2VzICh2b2lkKTsKIGV4dGVybiBib29sIEdPTVBfT0ZGTE9BRF9p bml0X2RldmljZSAoaW50KTsKIGV4dGVybiBib29sIEdPTVBfT0ZGTE9BRF9maW5pX2Rldmlj ZSAoaW50KTsKK2V4dGVybiBib29sIEdPTVBfT0ZGTE9BRF9zdXBwb3J0ZWRfZmVhdHVyZXMg KHVuc2lnbmVkICopOwogZXh0ZXJuIHVuc2lnbmVkIEdPTVBfT0ZGTE9BRF92ZXJzaW9uICh2 b2lkKTsKIGV4dGVybiBpbnQgR09NUF9PRkZMT0FEX2xvYWRfaW1hZ2UgKGludCwgdW5zaWdu ZWQsIGNvbnN0IHZvaWQgKiwKIAkJCQkgICAgc3RydWN0IGFkZHJfcGFpciAqKik7CmRpZmYg LS1naXQgYS9saWJnb21wL2xpYmdvbXAuaCBiL2xpYmdvbXAvbGliZ29tcC5oCmluZGV4IDMw NWNiYTNhYTAyLi4wOWYyYWM2Nzk0MyAxMDA2NDQKLS0tIGEvbGliZ29tcC9saWJnb21wLmgK KysrIGIvbGliZ29tcC9saWJnb21wLmgKQEAgLTExMzAsNiArMTEzMCw3IEBAIHN0cnVjdCBn b21wX2RldmljZV9kZXNjcgogICBfX3R5cGVvZiAoR09NUF9PRkZMT0FEX2dldF9udW1fZGV2 aWNlcykgKmdldF9udW1fZGV2aWNlc19mdW5jOwogICBfX3R5cGVvZiAoR09NUF9PRkZMT0FE X2luaXRfZGV2aWNlKSAqaW5pdF9kZXZpY2VfZnVuYzsKICAgX190eXBlb2YgKEdPTVBfT0ZG TE9BRF9maW5pX2RldmljZSkgKmZpbmlfZGV2aWNlX2Z1bmM7CisgIF9fdHlwZW9mIChHT01Q X09GRkxPQURfc3VwcG9ydGVkX2ZlYXR1cmVzKSAqc3VwcG9ydGVkX2ZlYXR1cmVzX2Z1bmM7 CiAgIF9fdHlwZW9mIChHT01QX09GRkxPQURfdmVyc2lvbikgKnZlcnNpb25fZnVuYzsKICAg X190eXBlb2YgKEdPTVBfT0ZGTE9BRF9sb2FkX2ltYWdlKSAqbG9hZF9pbWFnZV9mdW5jOwog ICBfX3R5cGVvZiAoR09NUF9PRkZMT0FEX3VubG9hZF9pbWFnZSkgKnVubG9hZF9pbWFnZV9m dW5jOwpkaWZmIC0tZ2l0IGEvbGliZ29tcC9vYWNjLWhvc3QuYyBiL2xpYmdvbXAvb2FjYy1o b3N0LmMKaW5kZXggZjNiYmQyYjljNjEuLjk0YTdmYWMyYTM5IDEwMDY0NAotLS0gYS9saWJn b21wL29hY2MtaG9zdC5jCisrKyBiL2xpYmdvbXAvb2FjYy1ob3N0LmMKQEAgLTcxLDYgKzcx LDEyIEBAIGhvc3RfZmluaV9kZXZpY2UgKGludCBuIF9fYXR0cmlidXRlX18gKCh1bnVzZWQp KSkKICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBib29sCitob3N0X3N1cHBvcnRlZF9m ZWF0dXJlcyAodW5zaWduZWQgaW50ICpuKQoreworICByZXR1cm4gKCpuID09IDApOworfQor CiBzdGF0aWMgdW5zaWduZWQKIGhvc3RfdmVyc2lvbiAodm9pZCkKIHsKQEAgLTI3Myw2ICsy NzksNyBAQCBzdGF0aWMgc3RydWN0IGdvbXBfZGV2aWNlX2Rlc2NyIGhvc3RfZGlzcGF0Y2gg PQogICAgIC5nZXRfbnVtX2RldmljZXNfZnVuYyA9IGhvc3RfZ2V0X251bV9kZXZpY2VzLAog ICAgIC5pbml0X2RldmljZV9mdW5jID0gaG9zdF9pbml0X2RldmljZSwKICAgICAuZmluaV9k ZXZpY2VfZnVuYyA9IGhvc3RfZmluaV9kZXZpY2UsCisgICAgLnN1cHBvcnRlZF9mZWF0dXJl c19mdW5jID0gaG9zdF9zdXBwb3J0ZWRfZmVhdHVyZXMsCiAgICAgLnZlcnNpb25fZnVuYyA9 IGhvc3RfdmVyc2lvbiwKICAgICAubG9hZF9pbWFnZV9mdW5jID0gaG9zdF9sb2FkX2ltYWdl LAogICAgIC51bmxvYWRfaW1hZ2VfZnVuYyA9IGhvc3RfdW5sb2FkX2ltYWdlLApkaWZmIC0t Z2l0IGEvbGliZ29tcC9wbHVnaW4vcGx1Z2luLWdjbi5jIGIvbGliZ29tcC9wbHVnaW4vcGx1 Z2luLWdjbi5jCmluZGV4IDQ3ZjBiNmUyNWY4Li43MThkNzgxNzNmZSAxMDA2NDQKLS0tIGEv bGliZ29tcC9wbHVnaW4vcGx1Z2luLWdjbi5jCisrKyBiL2xpYmdvbXAvcGx1Z2luL3BsdWdp bi1nY24uYwpAQCAtMzk5MSw0ICszOTkxLDEyIEBAIEdPTVBfT0ZGTE9BRF9vcGVuYWNjX2Rl c3Ryb3lfdGhyZWFkX2RhdGEgKHZvaWQgKmRhdGEpCiAgIGZyZWUgKGRhdGEpOwogfQogCisv KiBJbmRpY2F0ZSB3aGljaCBHT01QX1JFUVVJUkVTXyogZmVhdHVyZXMgYXJlIHN1cHBvcnRl ZCwgY3VycmVudGx5IG5vbmUuICAqLworCitib29sCitHT01QX09GRkxPQURfc3VwcG9ydGVk X2ZlYXR1cmVzICh1bnNpZ25lZCBpbnQgKm1hc2spCit7CisgIHJldHVybiAoKm1hc2sgPT0g MCk7Cit9CisKIC8qIH19fSAqLwpkaWZmIC0tZ2l0IGEvbGliZ29tcC9wbHVnaW4vcGx1Z2lu LW52cHR4LmMgYi9saWJnb21wL3BsdWdpbi9wbHVnaW4tbnZwdHguYwppbmRleCA2ODFjMzQ0 YjljMi4uNGNjMjVmYmUyMzIgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvcGx1Z2luL3BsdWdpbi1u dnB0eC5jCisrKyBiL2xpYmdvbXAvcGx1Z2luL3BsdWdpbi1udnB0eC5jCkBAIC0xMjM2LDYg KzEyMzYsMTQgQEAgR09NUF9PRkZMT0FEX2ZpbmlfZGV2aWNlIChpbnQgbikKICAgcmV0dXJu IHRydWU7CiB9CiAKKy8qIEluZGljYXRlIHdoaWNoIEdPTVBfUkVRVUlSRVNfKiBmZWF0dXJl cyBhcmUgc3VwcG9ydGVkLCBjdXJyZW50bHkgbm9uZS4gICovCisKK2Jvb2wKK0dPTVBfT0ZG TE9BRF9zdXBwb3J0ZWRfZmVhdHVyZXMgKHVuc2lnbmVkIGludCAqbWFzaykKK3sKKyAgcmV0 dXJuICgqbWFzayA9PSAwKTsKK30KKwogLyogUmV0dXJuIHRoZSBsaWJnb21wIHZlcnNpb24g bnVtYmVyIHdlJ3JlIGNvbXBhdGlibGUgd2l0aC4gIFRoZXJlIGlzCiAgICBubyByZXF1aXJl bWVudCBmb3IgY3Jvc3MtdmVyc2lvbiBjb21wYXRpYmlsaXR5LiAgKi8KIApkaWZmIC0tZ2l0 IGEvbGliZ29tcC90YXJnZXQuYyBiL2xpYmdvbXAvdGFyZ2V0LmMKaW5kZXggNGE0ZTFmODA3 NDUuLmYwNmRmN2JhMjhkIDEwMDY0NAotLS0gYS9saWJnb21wL3RhcmdldC5jCisrKyBiL2xp YmdvbXAvdGFyZ2V0LmMKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJnb21wLWNvbnN0 YW50cy5oIgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyNp bmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2lmZGVmIEhBVkVfSU5U VFlQRVNfSAogIyBpbmNsdWRlIDxpbnR0eXBlcy5oPiAgLyogRm9yIFBSSXU2NC4gICovCkBA IC03OSw2ICs4MCwxNiBAQCBzdGF0aWMgaW50IG51bV9kZXZpY2VzOwogLyogTnVtYmVyIG9m IEdPTVBfT0ZGTE9BRF9DQVBfT1BFTk1QXzQwMCBkZXZpY2VzLiAgKi8KIHN0YXRpYyBpbnQg bnVtX2RldmljZXNfb3Blbm1wOwogCisvKiBNYXNrIG9mIHJlcXVpcmVzIGRpcmVjdGl2ZSBj bGF1c2UgdmFsdWVzLCBzdW1tYXJpemVkIGZyb20gLmdudS5nb21wLnJlcXVpcmVzCisgICBz ZWN0aW9uLiBPZmZsb2FkIHBsdWdpbnMgYXJlIHF1ZXJpZWQgd2l0aCB0aGlzIG1hc2sgdG8g c2VlIGlmIGFsbCByZXF1aXJlZAorICAgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZC4gICovCitz dGF0aWMgdW5zaWduZWQgaW50IGdvbXBfcmVxdWlyZXNfbWFzazsKKworLyogU3RhcnQvZW5k IG9mIC5nbnUuZ29tcC5yZXF1aXJlcyBzZWN0aW9uIG9mIHByb2dyYW0sIGRlZmluZWQgaW4K KyAgIGNydG9mZmxvYWRiZWdpbi9lbmQuby4gICovCitleHRlcm4gY29uc3QgdW5zaWduZWQg aW50IF9fcmVxdWlyZXNfbWFza190YWJsZVtdOworZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGlu dCBfX3JlcXVpcmVzX21hc2tfdGFibGVfZW5kW107CisKIC8qIFNpbWlsYXIgdG8gZ29tcF9y ZWFsbG9jLCBidXQgcmVsZWFzZSByZWdpc3Rlcl9sb2NrIGJlZm9yZSBnb21wX2ZhdGFsLiAg Ki8KIAogc3RhdGljIHZvaWQgKgpAQCAtMTk2MSw2ICsxOTcyLDIwIEBAIGdvbXBfaW5pdF9k ZXZpY2UgKHN0cnVjdCBnb21wX2RldmljZV9kZXNjciAqZGV2aWNlcCkKICAgICAgIGdvbXBf ZmF0YWwgKCJkZXZpY2UgaW5pdGlhbGl6YXRpb24gZmFpbGVkIik7CiAgICAgfQogCisgIHVu c2lnbmVkIGludCBmZWF0dXJlcyA9IGdvbXBfcmVxdWlyZXNfbWFzazsKKyAgaWYgKCFkZXZp Y2VwLT5zdXBwb3J0ZWRfZmVhdHVyZXNfZnVuYyAoJmZlYXR1cmVzKSkKKyAgICB7CisgICAg ICBjaGFyIGJ1Zls2NF0sICplbmQgPSBidWYgKyBzaXplb2YgKGJ1ZiksICpwID0gYnVmOwor ICAgICAgaWYgKGZlYXR1cmVzICYgR09NUF9SRVFVSVJFU19VTklGSUVEX0FERFJFU1MpCisJ cCArPSBzbnByaW50ZiAocCwgZW5kIC0gcCwgInVuaWZpZWRfYWRkcmVzcyIpOworICAgICAg aWYgKGZlYXR1cmVzICYgR09NUF9SRVFVSVJFU19VTklGSUVEX1NIQVJFRF9NRU1PUlkpCisJ cCArPSBzbnByaW50ZiAocCwgZW5kIC0gcCwgIiVzdW5pZmllZF9zaGFyZWRfbWVtb3J5IiwK KwkJICAgICAgIChwID09IGJ1ZiA/ICIiIDogIiwgIikpOworICAgICAgaWYgKGZlYXR1cmVz ICYgR09NUF9SRVFVSVJFU19SRVZFUlNFX09GRkxPQUQpCisJcCArPSBzbnByaW50ZiAocCwg ZW5kIC0gcCwgIiVzcmV2ZXJzZV9vZmZsb2FkIiwgKHAgPT0gYnVmID8gIiIgOiAiLCAiKSk7 CisgICAgICBnb21wX2Vycm9yICgiZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgcmVxdWlyZWQg ZmVhdHVyZXM6ICVzIiwgYnVmKTsKKyAgICB9CisKICAgLyogTG9hZCB0byBkZXZpY2UgYWxs IGltYWdlcyByZWdpc3RlcmVkIGJ5IHRoZSBtb21lbnQuICAqLwogICBmb3IgKGkgPSAwOyBp IDwgbnVtX29mZmxvYWRfaW1hZ2VzOyBpKyspCiAgICAgewpAQCAtMzIwMCw2ICszMjI1LDcg QEAgZ29tcF9sb2FkX3BsdWdpbl9mb3JfZGV2aWNlIChzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVz Y3IgKmRldmljZSwKICAgRExTWU0gKGdldF9udW1fZGV2aWNlcyk7CiAgIERMU1lNIChpbml0 X2RldmljZSk7CiAgIERMU1lNIChmaW5pX2RldmljZSk7CisgIERMU1lNIChzdXBwb3J0ZWRf ZmVhdHVyZXMpOwogICBETFNZTSAobG9hZF9pbWFnZSk7CiAgIERMU1lNICh1bmxvYWRfaW1h Z2UpOwogICBETFNZTSAoYWxsb2MpOwpAQCAtMzMxMCw2ICszMzM2LDI4IEBAIGdvbXBfdGFy Z2V0X2luaXQgKHZvaWQpCiAgIGlmIChnb21wX3RhcmdldF9vZmZsb2FkX3ZhciA9PSBHT01Q X1RBUkdFVF9PRkZMT0FEX0RJU0FCTEVEKQogICAgIHJldHVybjsKIAorICBnb21wX3JlcXVp cmVzX21hc2sgPSAwOworICBjb25zdCB1bnNpZ25lZCBpbnQgKm1hc2tfcHRyID0gX19yZXF1 aXJlc19tYXNrX3RhYmxlOworICBib29sIGVycm9yX2VtaXR0ZWQgPSBmYWxzZTsKKyAgd2hp bGUgKG1hc2tfcHRyICE9IF9fcmVxdWlyZXNfbWFza190YWJsZV9lbmQpCisgICAgeworICAg ICAgaWYgKGdvbXBfcmVxdWlyZXNfbWFzayA9PSAwKQorCWdvbXBfcmVxdWlyZXNfbWFzayA9 ICptYXNrX3B0cjsKKyAgICAgIGVsc2UgaWYgKGdvbXBfcmVxdWlyZXNfbWFzayAhPSAqbWFz a19wdHIpCisJeworCSAgaWYgKCFlcnJvcl9lbWl0dGVkKQorCSAgICB7CisJICAgICAgZ29t cF9lcnJvciAoInJlcXVpcmVzLWRpcmVjdGl2ZSBjbGF1c2UgaW5jb25zaXN0ZW5jeSBiZXR3 ZWVuICIKKwkJCSAgImNvbXBpbGF0aW9uIHVuaXRzIGRldGVjdGVkIik7CisJICAgICAgZXJy b3JfZW1pdHRlZCA9IHRydWU7CisJICAgIH0KKwkgIC8qIFRoaXMgaXMgaW5jb25zaXN0ZW50 LCBidXQgc3RpbGwgbWVyZ2UgdG8gcXVlcnkgZm9yIGFsbCBmZWF0dXJlcworCSAgICAgbGF0 ZXIuICAqLworCSAgZ29tcF9yZXF1aXJlc19tYXNrIHw9ICptYXNrX3B0cjsKKwl9CisgICAg ICBtYXNrX3B0cisrOworICAgIH0KKwogICBjdXIgPSBPRkZMT0FEX1BMVUdJTlM7CiAgIGlm ICgqY3VyKQogICAgIGRvCmRpZmYgLS1naXQgYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21w LmMtYysrLWNvbW1vbi9yZXF1aXJlcy0xLWF1eC5jIGIvbGliZ29tcC90ZXN0c3VpdGUvbGli Z29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtMS1hdXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uOGI5MzQxNTIzYzYKLS0tIC9kZXYvbnVsbAorKysgYi9s aWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9yZXF1aXJlcy0xLWF1eC5j CkBAIC0wLDAgKzEsMTEgQEAKKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0gfSAqLwor CisjcHJhZ21hIG9tcCByZXF1aXJlcyByZXZlcnNlX29mZmxvYWQKKworaW50IHg7CisKK3Zv aWQgZm9vICh2b2lkKQoreworICAjcHJhZ21hIG9tcCB0YXJnZXQKKyAgeCA9IDE7Cit9CmRp ZmYgLS1naXQgYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9yZXF1 aXJlcy0xLmMgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9yZXF1 aXJlcy0xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI1YTNj NTEyZDI4Ci0tLSAvZGV2L251bGwKKysrIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5j LWMrKy1jb21tb24vcmVxdWlyZXMtMS5jCkBAIC0wLDAgKzEsMjEgQEAKKy8qIHsgZGctYWRk aXRpb25hbC1zb3VyY2VzIHJlcXVpcmVzLTEtYXV4LmMgfSAqLworCisjcHJhZ21hIG9tcCBy ZXF1aXJlcyB1bmlmaWVkX3NoYXJlZF9tZW1vcnkKKworaW50IGFbMTBdOworZXh0ZXJuIHZv aWQgZm9vICh2b2lkKTsKKworaW50CittYWluICh2b2lkKQoreworICAjcHJhZ21hIG9tcCB0 YXJnZXQKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKQorICAgIGFbaV0gPSAwOwor CisgIGZvbyAoKTsKKyAgcmV0dXJuIDA7Cit9CisKKy8qIHsgZGctb3V0cHV0ICJsaWJnb21w OiByZXF1aXJlcy1kaXJlY3RpdmUgY2xhdXNlIGluY29uc2lzdGVuY3kgYmV0d2VlbiBjb21w aWxhdGlvbiB1bml0cyBkZXRlY3RlZCIgfSAqLworLyogeyBkZy1wcnVuZS1vdXRwdXQgImRl dmljZSBkb2VzIG5vdCBzdXBwb3J0IHJlcXVpcmVkIGZlYXR1cmVzIiB9ICovCisvKiB7IGRn LXNob3VsZGZhaWwgIiIgfSAqLwpkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGli Z29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtMi1hdXguYyBiL2xpYmdvbXAvdGVzdHN1aXRl L2xpYmdvbXAuYy1jKystY29tbW9uL3JlcXVpcmVzLTItYXV4LmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjhiOTM0MTUyM2M2Ci0tLSAvZGV2L251bGwKKysr IGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtMi1h dXguYwpAQCAtMCwwICsxLDExIEBACisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IH0g Ki8KKworI3ByYWdtYSBvbXAgcmVxdWlyZXMgcmV2ZXJzZV9vZmZsb2FkCisKK2ludCB4Owor Cit2b2lkIGZvbyAodm9pZCkKK3sKKyAgI3ByYWdtYSBvbXAgdGFyZ2V0CisgIHggPSAxOwor fQpkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24v cmVxdWlyZXMtMi5jIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24v cmVxdWlyZXMtMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42 ZmIyODBiYWFiZAotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdv bXAuYy1jKystY29tbW9uL3JlcXVpcmVzLTIuYwpAQCAtMCwwICsxLDIwIEBACisvKiB7IGRn LWFkZGl0aW9uYWwtc291cmNlcyByZXF1aXJlcy0yLWF1eC5jIH0gKi8KKworI3ByYWdtYSBv bXAgcmVxdWlyZXMgcmV2ZXJzZV9vZmZsb2FkCisKK2ludCBhWzEwXTsKK2V4dGVybiB2b2lk IGZvbyAodm9pZCk7CisKK2ludAorbWFpbiAodm9pZCkKK3sKKyAgI3ByYWdtYSBvbXAgdGFy Z2V0CisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykKKyAgICBhW2ldID0gMDsKKwor ICBmb28gKCk7CisgIHJldHVybiAwOworfQorCisvKiB7IGRnLW91dHB1dCAibGliZ29tcDog ZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgcmVxdWlyZWQgZmVhdHVyZXM6IHJldmVyc2Vfb2Zm bG9hZCIgfSAqLworLyogeyBkZy1zaG91bGRmYWlsICIiIH0gKi8KZGlmZiAtLWdpdCBhL2xp Ym9mZmxvYWRtaWMvcGx1Z2luL2xpYmdvbXAtcGx1Z2luLWludGVsbWljLmNwcCBiL2xpYm9m ZmxvYWRtaWMvcGx1Z2luL2xpYmdvbXAtcGx1Z2luLWludGVsbWljLmNwcAppbmRleCBkMTY3 OGQwNTE0ZS4uZjkyNDE4ZmE0MTYgMTAwNjQ0Ci0tLSBhL2xpYm9mZmxvYWRtaWMvcGx1Z2lu L2xpYmdvbXAtcGx1Z2luLWludGVsbWljLmNwcAorKysgYi9saWJvZmZsb2FkbWljL3BsdWdp bi9saWJnb21wLXBsdWdpbi1pbnRlbG1pYy5jcHAKQEAgLTIzMyw2ICsyMzMsMTQgQEAgR09N UF9PRkZMT0FEX2ZpbmlfZGV2aWNlIChpbnQgZGV2aWNlKQogICByZXR1cm4gdHJ1ZTsKIH0K IAorLyogSW5kaWNhdGUgd2hpY2ggR09NUF9SRVFVSVJFU18qIGZlYXR1cmVzIGFyZSBzdXBw b3J0ZWQsIGN1cnJlbnRseSBub25lLiAgKi8KKworZXh0ZXJuICJDIiBib29sCitHT01QX09G RkxPQURfc3VwcG9ydGVkX2ZlYXR1cmVzICh1bnNpZ25lZCBpbnQgKm1hc2spCit7CisgIHJl dHVybiAoKm1hc2sgPT0gMCk7Cit9CisKIHN0YXRpYyBib29sCiBnZXRfdGFyZ2V0X3RhYmxl IChpbnQgZGV2aWNlLCBpbnQgJm51bV9mdW5jcywgaW50ICZudW1fdmFycywgdm9pZCAqKiZ0 YWJsZSkKIHsK --------------2A126DE23C4F44E876CE27D7--