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 A21F03944817 for ; Fri, 14 May 2021 13:20:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org A21F03944817 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: bryxwOWJ0oxOhGSmV86NzX++eEaXoOEA6LciaQDVFdFllJKtu1EuKJ/2+YR+u94WOY6d+wvwlx uO0RCf3bJkdWGATZ0Rn2esCF/I6L1vnwBKjN6o/Rly/0/dTDiH+A6lQxAEzQlcDfV/pmMVmVZz KqNeZDOhimleJODneiJBuiyuPUncxwdQHvvZrWm6yz4QhTwyfTnPhmSQKrRu7nFjusomx3NLOq v+5wo4eXHokzVpI4lpxq6p87NGPj9vBgcLJviCGPRuxCn8SnwBDXwG1geIPc9PkZtmWqaunlrl a/s= X-IronPort-AV: E=Sophos;i="5.82,299,1613462400"; d="scan'208";a="61353239" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa4.mentor.iphmx.com with ESMTP; 14 May 2021 05:20:35 -0800 IronPort-SDR: RbsvqzVmOqwNOSvK1n5r/MEO6ZUgYpDtk3e0391C/AuuAOZpO9ecW7pA7x4qLWxl90WMeB7RQ5 nMHg/IUbbousxNFeQxvCu4TyXLOTaqoeqj3Jw6CeiHzXbmL8vS5n/gS5EeroIbnpBRHmTbUc1X 6vY/RodukVTDeOWluoFdj6U90OGp8h851OtZrecHP2ggmwo7jyl8pXxte1gRTWDS2G6ob3OQd4 tjqwi1rlzQuXWRsg2YGWdFrg0MXXAckc59FnoGVFigdraoIZdg7chgsoEIJSpAFQkPT2aC/AF9 htc= From: Chung-Lin Tang To: gcc-patches , Jakub Jelinek , Catherine Moore , Tobias Burnus , Thomas Schwinge Subject: [PATCH, OpenMP 5.0] Implement relaxation of implicit map vs. existing device mappings (for mainline trunk) Message-ID: Date: Fri, 14 May 2021 21:20:25 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------4FACBAFB8EE2562286AB4522" Content-Language: en-US X-ClientProxiedBy: SVR-ORW-MBX-05.mgc.mentorg.com (147.34.90.205) To svr-orw-mbx-02.mgc.mentorg.com (147.34.90.202) X-Spam-Status: No, score=-10.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, KAM_SHORT, 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: Fri, 14 May 2021 13:20:40 -0000 --------------4FACBAFB8EE2562286AB4522 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Hi Jakub, This is a version of patch https://gcc.gnu.org/pipermail/gcc-patches/2021-May/569665.html for mainline trunk. This patch implements relaxing the requirements when a map with the implicit attribute encounters an overlapping existing map. As the OpenMP 5.0 spec describes on page 320, lines 18-27 (and 5.1 spec, page 352, lines 13-22): "If a single contiguous part of the original storage of a list item with an implicit data-mapping attribute has corresponding storage in the device data environment prior to a task encountering the construct that is associated with the map clause, only that part of the original storage will have corresponding storage in the device data environment as a result of the map clause." Also tracked in the OpenMP spec context as issue #1463: https://github.com/OpenMP/spec/issues/1463 The implementation inside the compiler is to of course, tag the implicitly created maps with some indication of "implicit". I've done this with a OMP_CLAUSE_MAP_IMPLICIT_P macro, using 'base.deprecated_flag' underneath. There is an encoding of this as GOMP_MAP_IMPLICIT == GOMP_MAP_FLAG_SPECIAL_3|GOMP_MAP_FLAG_SPECIAL_4 in include/gomp-constants.h for the runtime, but I've intentionally avoided exploding the entire gimplify/omp-low with a new set of GOMP_MAP_IMPLICIT_TO/FROM/etc. symbols, instead adding in the new flag bits only at the final runtime call generation during omp-lowering. The rest is libgomp mapping taking care of the implicit case: allowing map success if an existing map is a proper subset of the new map, if the new map is implicit. Straightforward enough I think. There are also some additions to print the implicit attribute during tree pretty-printing, for that reason some scan tests were updated. Also, another adjustment in this patch is how implicitly created clauses are added to the current clause list in gimplify_adjust_omp_clauses(). Instead of simply appending the new clauses to the end, this patch adds them at the position "after initial non-map clauses, but right before any existing map clauses". The reason for this is: when combined with other map clauses, for example: #pragma omp target map(rec.ptr[:N]) for (int i = 0; i < N; i++) rec.ptr[i] += 1; There will be an implicit map created for map(rec), because of the access inside the target region. The expectation is that 'rec' is implicitly mapped, and then the pointed array-section part by 'rec.ptr' will be mapped, and then attachment to the 'rec.ptr' field of the mapped 'rec' (in that order). If the implicit 'map(rec)' is appended to the end, instead of placed before other maps, the attachment operation will not find anything to attach to, and the entire region will fail. Note: this touches a bit on another issue which I will be sending a patch for later: per the discussion on omp-lang, an array section list item should *not* be mapping its base-pointer (although an attachment attempt should exist), while in current GCC behavior, for struct member pointers like 'rec.ptr' above, we do map it (which should be deemed incorrect). This means that as of right now, this modification of map order doesn't really exhibit the above mentioned behavior yet. I have included it as part of this patch because the "[implicit]" tree printing requires modifying many gimple scan tests already, so including the test modifications together seems more manageable patch-wise. Tested with no regressions on x86_64-linux with nvptx offloading. Was already pushed to devel/omp/gcc-10 a while ago, asking for approval for mainline trunk. Chung-Lin 2021-05-14 Chung-Lin Tang include/ChangeLog: * gomp-constants.h (GOMP_MAP_FLAG_SPECIAL_3): Define special bit macro. (GOMP_MAP_IMPLICIT): New special map kind bits value. (GOMP_MAP_FLAG_SPECIAL_BITS): Define helper mask for whole set of special map kind bits. (GOMP_MAP_IMPLICIT_P): New predicate macro for implicit map kinds. gcc/ChangeLog: * tree.h (OMP_CLAUSE_MAP_IMPLICIT_P): New access macro for 'implicit' bit, using 'base.deprecated_flag' field of tree_node. * tree-pretty-print.c (dump_omp_clause): Add support for printing implicit attribute in tree dumping. * gimplify.c (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_MAP_IMPLICIT_P to 1 if map clause is implicitly created. (gimplify_adjust_omp_clauses): Adjust place of adding implicitly created clauses, from simple append, to starting of list, after non-map clauses. * omp-low.c (lower_omp_target): Add GOMP_MAP_IMPLICIT bits into kind values passed to libgomp for implicit maps. gcc/testsuite/ChangeLog: * c-c++-common/gomp/target-implicit-map-1.c: New test. * c-c++-common/goacc/combined-reduction.c: Adjust scan test pattern. * c-c++-common/goacc/firstprivate-mappings-1.c: Likewise. * c-c++-common/goacc/mdc-1.c: Likewise. * c-c++-common/goacc/reduction-1.c: Likewise. * c-c++-common/goacc/reduction-2.c: Likewise. * c-c++-common/goacc/reduction-3.c: Likewise. * c-c++-common/goacc/reduction-4.c: Likewise. * c-c++-common/goacc/reduction-8.c: Likewise. * g++.dg/goacc/firstprivate-mappings-1.C: Likewise. * g++.dg/gomp/target-lambda-1.C: Likewise. * g++.dg/gomp/target-this-3.C: Likewise. * g++.dg/gomp/target-this-4.C: Likewise. * gfortran.dg/goacc/common-block-3.f90: Likewise. * gfortran.dg/goacc/loop-tree-1.f90: Likewise. * gfortran.dg/goacc/private-explicit-kernels-1.f95: Likewise. * gfortran.dg/goacc/private-predetermined-kernels-1.f95: Likewise. libgomp/ChangeLog: * target.c (gomp_map_vars_existing): Add 'bool implicit' parameter, add implicit map handling to allow a "superset" existing map as valid case. (get_kind): Adjust to filter out GOMP_MAP_IMPLICIT bits in return value. (get_implicit): New function to extract implicit status. (gomp_map_fields_existing): Adjust arguments in calls to gomp_map_vars_existing, and add uses of get_implicit. (gomp_map_vars_internal): Likewise. * testsuite/libgomp.c-c++-common/target-implicit-map-1.c: New test. --------------4FACBAFB8EE2562286AB4522 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="omp-1463.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="omp-1463.patch" ZGlmZiAtLWdpdCBhL2djYy9naW1wbGlmeS5jIGIvZ2NjL2dpbXBsaWZ5LmMKaW5kZXggZTc5 MGYwOGIyM2YuLjY5YzRhOGUwYTBhIDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxpZnkuYworKysg Yi9nY2MvZ2ltcGxpZnkuYwpAQCAtMTAzNzQsNiArMTAzNzQsNyBAQCBnaW1wbGlmeV9hZGp1 c3Rfb21wX2NsYXVzZXNfMSAoc3BsYXlfdHJlZV9ub2RlIG4sIHZvaWQgKmRhdGEpCiAJICBn Y2NfdW5yZWFjaGFibGUgKCk7CiAJfQogICAgICAgT01QX0NMQVVTRV9TRVRfTUFQX0tJTkQg KGNsYXVzZSwga2luZCk7CisgICAgICBPTVBfQ0xBVVNFX01BUF9JTVBMSUNJVF9QIChjbGF1 c2UpID0gMTsKICAgICAgIGlmIChERUNMX1NJWkUgKGRlY2wpCiAJICAmJiBUUkVFX0NPREUg KERFQ0xfU0laRSAoZGVjbCkpICE9IElOVEVHRVJfQ1NUKQogCXsKQEAgLTEwOTcxLDkgKzEw OTcyLDE1IEBAIGdpbXBsaWZ5X2FkanVzdF9vbXBfY2xhdXNlcyAoZ2ltcGxlX3NlcSAqcHJl X3AsIGdpbXBsZV9zZXEgYm9keSwgdHJlZSAqbGlzdF9wLAogCWxpc3RfcCA9ICZPTVBfQ0xB VVNFX0NIQUlOIChjKTsKICAgICB9CiAKLSAgLyogQWRkIGluIGFueSBpbXBsaWNpdCBkYXRh IHNoYXJpbmcuICAqLworICAvKiBBZGQgaW4gYW55IGltcGxpY2l0IGRhdGEgc2hhcmluZy4g SW1wbGljaXQgY2xhdXNlcyBhcmUgYWRkZWQgYXQgdGhlIHN0YXJ0CisgICAgIG9mIHRoZSBj bGF1c2UgbGlzdCwgYnV0IGFmdGVyIGFueSBub24tbWFwIGNsYXVzZXMuICAqLwogICBzdHJ1 Y3QgZ2ltcGxpZnlfYWRqdXN0X29tcF9jbGF1c2VzX2RhdGEgZGF0YTsKLSAgZGF0YS5saXN0 X3AgPSBsaXN0X3A7CisgIHRyZWUgKmltcGxpY2l0X2FkZF9saXN0X3AgPSBvcmlnX2xpc3Rf cDsKKyAgd2hpbGUgKCppbXBsaWNpdF9hZGRfbGlzdF9wCisJICYmIE9NUF9DTEFVU0VfQ09E RSAoKmltcGxpY2l0X2FkZF9saXN0X3ApICE9IE9NUF9DTEFVU0VfTUFQKQorICAgIGltcGxp Y2l0X2FkZF9saXN0X3AgPSAmT01QX0NMQVVTRV9DSEFJTiAoKmltcGxpY2l0X2FkZF9saXN0 X3ApOworCisgIGRhdGEubGlzdF9wID0gaW1wbGljaXRfYWRkX2xpc3RfcDsKICAgZGF0YS5w cmVfcCA9IHByZV9wOwogICBzcGxheV90cmVlX2ZvcmVhY2ggKGN0eC0+dmFyaWFibGVzLCBn aW1wbGlmeV9hZGp1c3Rfb21wX2NsYXVzZXNfMSwgJmRhdGEpOwogCmRpZmYgLS1naXQgYS9n Y2Mvb21wLWxvdy5jIGIvZ2NjL29tcC1sb3cuYwppbmRleCBjYWRjYTdlMjAxZi4uZThmZGQy NzQxYmIgMTAwNjQ0Ci0tLSBhL2djYy9vbXAtbG93LmMKKysrIGIvZ2NjL29tcC1sb3cuYwpA QCAtMTI0OTgsNiArMTI0OTgsMTkgQEAgbG93ZXJfb21wX3RhcmdldCAoZ2ltcGxlX3N0bXRf aXRlcmF0b3IgKmdzaV9wLCBvbXBfY29udGV4dCAqY3R4KQogCQkgICAgZWxzZSBpZiAoaW50 ZWdlcl9ub256ZXJvcCAocykpCiAJCSAgICAgIHRraW5kX3plcm8gPSB0a2luZDsKIAkJICB9 CisJCWlmICh0a2luZF96ZXJvID09IHRraW5kCisJCSAgICAmJiBPTVBfQ0xBVVNFX01BUF9J TVBMSUNJVF9QIChjKQorCQkgICAgJiYgKCgodGtpbmQgJiBHT01QX01BUF9GTEFHX1NQRUNJ QUxfQklUUykKKwkJCSAmIH5HT01QX01BUF9JTVBMSUNJVCkKKwkJCT09IDApKQorCQkgIHsK KwkJICAgIC8qIElmIHRoaXMgaXMgYW4gaW1wbGljaXQgbWFwLCBhbmQgdGhlIEdPTVBfTUFQ X0lNUExJQ0lUCisJCSAgICAgICBiaXRzIGFyZSBub3QgaW50ZXJmZXJlZCBieSBvdGhlciBz cGVjaWFsIGJpdCBlbmNvZGluZ3MsCisJCSAgICAgICB0aGVuIHR1cm4gdGhlIEdPTVBfSU1Q TElDSVRfQklUIGZsYWcgb24gZm9yIHRoZSBydW50aW1lCisJCSAgICAgICB0byBzZWUuICAq LworCQkgICAgdGtpbmQgfD0gR09NUF9NQVBfSU1QTElDSVQ7CisJCSAgICB0a2luZF96ZXJv ID0gdGtpbmQ7CisJCSAgfQogCQlicmVhazsKIAkgICAgICBjYXNlIE9NUF9DTEFVU0VfRklS U1RQUklWQVRFOgogCQlnY2NfY2hlY2tpbmdfYXNzZXJ0IChpc19naW1wbGVfb21wX29hY2Mg KGN0eC0+c3RtdCkpOwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v Z29hY2MvY29tYmluZWQtcmVkdWN0aW9uLmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi9nb2FjYy9jb21iaW5lZC1yZWR1Y3Rpb24uYwppbmRleCBlY2YyM2Y1OWQ2Ni4uZmE2N2Uw ODVjODYgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvYWNjL2Nv bWJpbmVkLXJlZHVjdGlvbi5jCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dv YWNjL2NvbWJpbmVkLXJlZHVjdGlvbi5jCkBAIC0yMyw3ICsyMyw3IEBAIG1haW4gKCkKICAg cmV0dXJuIDA7CiB9CiAKLS8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAi b21wIHRhcmdldCBvYWNjX3BhcmFsbGVsIHJlZHVjdGlvbi4rOnYxLiBtYXAudG9mcm9tOnYx IiAxICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRp bWVzICJvbXAgdGFyZ2V0IG9hY2NfcGFyYWxsZWwgcmVkdWN0aW9uLis6djEuIGZpcnN0cHJp dmF0ZS5uLiBtYXAudG9mcm9tOnYxIiAxICJnaW1wbGUiIH0gfSAqLwogLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJhY2MgbG9vcCByZWR1Y3Rpb24uKzp2MS4gcHJp dmF0ZS5pLiIgMSAiZ2ltcGxlIiB9IH0gKi8KLS8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC10aW1lcyAib21wIHRhcmdldCBvYWNjX2tlcm5lbHMgbWFwLmZvcmNlX3RvZnJvbTpu IC5sZW46IDQuLiBtYXAuZm9yY2VfdG9mcm9tOnYxIC5sZW46IDQuLiIgMSAiZ2ltcGxlIiB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAib21wIHRhcmdl dCBvYWNjX2tlcm5lbHMgbWFwLmZvcmNlX3RvZnJvbTpuIC5sZW46IDQuLmltcGxpY2l0Li4g bWFwLmZvcmNlX3RvZnJvbTp2MSAubGVuOiA0Li5pbXBsaWNpdC4uIiAxICJnaW1wbGUiIH0g fSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJhY2MgbG9vcCBy ZWR1Y3Rpb24uKzp2MS4gcHJpdmF0ZS5pLiIgMSAiZ2ltcGxlIiB9IH0gKi8KZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvYWNjL2ZpcnN0cHJpdmF0ZS1tYXBw aW5ncy0xLmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb2FjYy9maXJzdHByaXZh dGUtbWFwcGluZ3MtMS5jCmluZGV4IDc5ODdiZWFlZDlhLi41MTM0ZWY2ZWQ2YyAxMDA2NDQK LS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvZmlyc3Rwcml2YXRlLW1h cHBpbmdzLTEuYworKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb2FjYy9maXJz dHByaXZhdGUtbWFwcGluZ3MtMS5jCkBAIC00MTksMTIgKzQxOSw3IEBAIHZsYSAoaW50IGFy cmF5X2xpKQogICBjb3B5b3V0IChhcnJheV9zbykKICAgLyogVGhlIGdpbXBsaWZpZXIgaGFz IGNyZWF0ZWQgYW4gaW1wbGljaXQgJ2ZpcnN0cHJpdmF0ZScgY2xhdXNlIGZvciB0aGUgYXJy YXkKICAgICAgbGVuZ3RoLgotICAgICB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgeyg/ bikjcHJhZ21hIG9tcCB0YXJnZXQgb2FjY19wYXJhbGxlbCBtYXBcKGZyb206YXJyYXlfc28g XFtsZW46IDRcXVwpIGZpcnN0cHJpdmF0ZVwoYXJyYXlfbGkuWzAtOV0rXCl9IG9tcGxvd2Vy IHsgdGFyZ2V0IHsgISBjKysgfSB9IH0gfQotICAgICB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAgeyg/bikjcHJhZ21hIG9tcCB0YXJnZXQgb2FjY19wYXJhbGxlbCBtYXBcKGZyb206 YXJyYXlfc28gXFtsZW46IDRcXVwpIGZpcnN0cHJpdmF0ZVwofSBvbXBsb3dlciB7IHRhcmdl dCB7IGMrKyB9IH0gfSB9Ci0gICAgIChDKysgY29tcHV0ZXMgYW4gaW50ZXJtZWRpYXRlIHZh bHVlLCBzbyBjYW4ndCBzY2FuIGZvciAnZmlyc3Rwcml2YXRlKGFycmF5X2xpKScuKSAgKi8K LSAgLyogRm9yIEMsIG5vbi1MUDY0LCB0aGUgZ2ltcGxpZmllciBoYXMgYWxzbyBjcmVhdGVk IGEgbWFwcGluZyBmb3IgdGhlIGFycmF5Ci0gICAgIGl0c2VsZjsgUFI5MDg1OS4KLSAgICAg eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wIHsoP24pI3ByYWdtYSBvbXAgdGFyZ2V0IG9h Y2NfcGFyYWxsZWwgbWFwXChmcm9tOmFycmF5X3NvIFxbbGVuOiA0XF1cKSBmaXJzdHByaXZh dGVcKGFycmF5X2xpLlswLTldK1wpIG1hcFwodG9mcm9tOlwoXCphcnJheS5bMC05XStcKSBc W2xlbjogRFwuWzAtOV0rXF1cKSBtYXBcKGZpcnN0cHJpdmF0ZTphcnJheSBcW3BvaW50ZXIg YXNzaWduLCBiaWFzOiAwXF1cKSBcW30gb21wbG93ZXIgeyB0YXJnZXQgeyBjICYmIHsgISBs cDY0IH0gfSB9IH0gfSAqLworICAgICB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgeyg/ bikjcHJhZ21hIG9tcCB0YXJnZXQgb2FjY19wYXJhbGxlbCBmaXJzdHByaXZhdGVcKGFycmF5 X2xpLlswLTldK1wpIG1hcFwoZnJvbTphcnJheV9zbyBcW2xlbjogNFxdXCkgXFt9IG9tcGxv d2VyIH0gfSAqLwogICB7CiAgICAgYXJyYXlfc28gPSBzaXplb2YgYXJyYXk7CiAgIH0KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvYWNjL21kYy0xLmMgYi9n Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb2FjYy9tZGMtMS5jCmluZGV4IDMzN2MxZjdj Yzc3Li45ZjQzZGU0Zjc3NiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vZ29hY2MvbWRjLTEuYworKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb2Fj Yy9tZGMtMS5jCkBAIC00NSw3ICs0NSw3IEBAIHQxICgpCiAKIC8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcC10aW1lcyAicHJhZ21hIG9tcCB0YXJnZXQgb2FjY19lbnRlcl9leGl0 X2RhdGEgbWFwLnRvOnMgLmxlbjogMzIuLiIgMSAib21wbG93ZXIiIH0gfSAqLwogLyogeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJwcmFnbWEgb21wIHRhcmdldCBvYWNj X2RhdGEgbWFwLnRvZnJvbToueiAubGVuOiA0MC4uIG1hcC5zdHJ1Y3Q6cyAubGVuOiAxLi4g bWFwLmFsbG9jOnMuYSAubGVuOiA4Li4gbWFwLnRvZnJvbTouXzEgLmxlbjogNDAuLiBtYXAu YXR0YWNoOnMuYSAuYmlhczogMC4uIiAxICJvbXBsb3dlciIgfSB9ICovCi0vKiB7IGRnLWZp bmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgInByYWdtYSBvbXAgdGFyZ2V0IG9hY2NfcGFy YWxsZWwgbWFwLmF0dGFjaDpzLmUgLmJpYXM6IDAuLiBtYXAudG9mcm9tOnMgLmxlbjogMzIi IDEgIm9tcGxvd2VyIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10 aW1lcyAicHJhZ21hIG9tcCB0YXJnZXQgb2FjY19wYXJhbGxlbCBtYXAudG9mcm9tOnMgLmxl bjogMzIuLmltcGxpY2l0Li4gbWFwLmF0dGFjaDpzLmUgLmJpYXM6IDAuLiIgMSAib21wbG93 ZXIiIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJwcmFn bWEgb21wIHRhcmdldCBvYWNjX2VudGVyX2V4aXRfZGF0YSBtYXAuYXR0YWNoOmEgLmJpYXM6 IDAuLiIgMSAib21wbG93ZXIiIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wLXRpbWVzICJwcmFnbWEgb21wIHRhcmdldCBvYWNjX2VudGVyX2V4aXRfZGF0YSBtYXAu ZGV0YWNoOmEgLmJpYXM6IDAuLiIgMSAib21wbG93ZXIiIH0gfSAqLwogLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJwcmFnbWEgb21wIHRhcmdldCBvYWNjX2VudGVy X2V4aXRfZGF0YSBtYXAudG86YSAubGVuOiA4Li4iIDEgIm9tcGxvd2VyIiB9IH0gKi8KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvYWNjL3JlZHVjdGlvbi0x LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb2FjYy9yZWR1Y3Rpb24tMS5jCmlu ZGV4IDM1YmZjODY4NzA4Li5kOWUzYzM4MGI4ZSAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0 ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVkdWN0aW9uLTEuYworKysgYi9nY2MvdGVzdHN1aXRl L2MtYysrLWNvbW1vbi9nb2FjYy9yZWR1Y3Rpb24tMS5jCkBAIC02OCw1ICs2OCw1IEBAIG1h aW4odm9pZCkKIH0KIAogLyogQ2hlY2sgdGhhdCBkZWZhdWx0IGNvcHkgbWFwcyBhcmUgZ2Vu ZXJhdGVkIGZvciBsb29wIHJlZHVjdGlvbnMuICAqLwotLyogeyBkZy1maW5hbCB7IHNjYW4t dHJlZS1kdW1wLXRpbWVzICJtYXBcXCh0b2Zyb206cmVzdWx0IFxcXFtsZW46IFxbMC05XF0r XFxcXVxcKSIgNyAiZ2ltcGxlIiB9IH0gKi8KLS8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC10aW1lcyAibWFwXFwodG9mcm9tOmxyZXN1bHQgXFxcW2xlbjogXFswLTlcXStcXFxd XFwpIiAyICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w LXRpbWVzICJtYXBcXCh0b2Zyb206cmVzdWx0IFxcXFtsZW46IFxbMC05XF0rXFxcXVxcXFtp bXBsaWNpdFxcXF1cXCkiIDcgImdpbXBsZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAtdGltZXMgIm1hcFxcKHRvZnJvbTpscmVzdWx0IFxcXFtsZW46IFxbMC05 XF0rXFxcXVxcXFtpbXBsaWNpdFxcXF1cXCkiIDIgImdpbXBsZSIgfSB9ICovCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb2FjYy9yZWR1Y3Rpb24tMi5jIGIv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVkdWN0aW9uLTIuYwppbmRleCA5 ZGJhMDM1YWRiNi4uMThkYzAzYzkzYWMgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL2dvYWNjL3JlZHVjdGlvbi0yLmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vZ29hY2MvcmVkdWN0aW9uLTIuYwpAQCAtNTAsNSArNTAsNSBAQCBtYWluKHZv aWQpCiB9CiAKIC8qIENoZWNrIHRoYXQgZGVmYXVsdCBjb3B5IG1hcHMgYXJlIGdlbmVyYXRl ZCBmb3IgbG9vcCByZWR1Y3Rpb25zLiAgKi8KLS8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC10aW1lcyAibWFwXFwodG9mcm9tOnJlc3VsdCBcXFxbbGVuOiBcWzAtOVxdK1xcXF1c XCkiIDQgImdpbXBsZSIgfSB9ICovCi0vKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAt dGltZXMgIm1hcFxcKHRvZnJvbTpscmVzdWx0IFxcXFtsZW46IFxbMC05XF0rXFxcXVxcKSIg MiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAibWFwXFwodG9mcm9tOnJlc3VsdCBcXFxbbGVuOiBcWzAtOVxdK1xcXF1cXFxbaW1wbGlj aXRcXFxdXFwpIiA0ICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wLXRpbWVzICJtYXBcXCh0b2Zyb206bHJlc3VsdCBcXFxbbGVuOiBcWzAtOVxdK1xc XF1cXFxbaW1wbGljaXRcXFxdXFwpIiAyICJnaW1wbGUiIH0gfSAqLwpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVkdWN0aW9uLTMuYyBiL2djYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvYWNjL3JlZHVjdGlvbi0zLmMKaW5kZXggNjY5Y2Q0 MzgxMTMuLjIzMTFkNGIwYWRiIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9nb2FjYy9yZWR1Y3Rpb24tMy5jCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29t bW9uL2dvYWNjL3JlZHVjdGlvbi0zLmMKQEAgLTUwLDUgKzUwLDUgQEAgbWFpbih2b2lkKQog fQogCiAvKiBDaGVjayB0aGF0IGRlZmF1bHQgY29weSBtYXBzIGFyZSBnZW5lcmF0ZWQgZm9y IGxvb3AgcmVkdWN0aW9ucy4gICovCi0vKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAt dGltZXMgIm1hcFxcKHRvZnJvbTpyZXN1bHQgXFxcW2xlbjogXFswLTlcXStcXFxdXFwpIiA0 ICJnaW1wbGUiIH0gfSAqLwotLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVz ICJtYXBcXCh0b2Zyb206bHJlc3VsdCBcXFxbbGVuOiBcWzAtOVxdK1xcXF1cXCkiIDIgImdp bXBsZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIm1h cFxcKHRvZnJvbTpyZXN1bHQgXFxcW2xlbjogXFswLTlcXStcXFxdXFxcW2ltcGxpY2l0XFxc XVxcKSIgNCAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cC10aW1lcyAibWFwXFwodG9mcm9tOmxyZXN1bHQgXFxcW2xlbjogXFswLTlcXStcXFxdXFxc W2ltcGxpY2l0XFxcXVxcKSIgMiAiZ2ltcGxlIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvYWNjL3JlZHVjdGlvbi00LmMgYi9nY2MvdGVzdHN1 aXRlL2MtYysrLWNvbW1vbi9nb2FjYy9yZWR1Y3Rpb24tNC5jCmluZGV4IDVjM2RmYjE5MTcy Li41NzgyM2Y4ODk4ZiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v Z29hY2MvcmVkdWN0aW9uLTQuYworKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9n b2FjYy9yZWR1Y3Rpb24tNC5jCkBAIC0zOCw1ICszOCw1IEBAIG1haW4odm9pZCkKIH0KIAog LyogQ2hlY2sgdGhhdCBkZWZhdWx0IGNvcHkgbWFwcyBhcmUgZ2VuZXJhdGVkIGZvciBsb29w IHJlZHVjdGlvbnMuICAqLwotLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVz ICJtYXBcXCh0b2Zyb206cmVzdWx0IFxcXFtsZW46IFxbMC05XF0rXFxcXVxcKSIgMiAiZ2lt cGxlIiB9IH0gKi8KLS8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAibWFw XFwodG9mcm9tOmxyZXN1bHQgXFxcW2xlbjogXFswLTlcXStcXFxdXFwpIiAyICJnaW1wbGUi IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJtYXBcXCh0 b2Zyb206cmVzdWx0IFxcXFtsZW46IFxbMC05XF0rXFxcXVxcXFtpbXBsaWNpdFxcXF1cXCki IDIgImdpbXBsZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGlt ZXMgIm1hcFxcKHRvZnJvbTpscmVzdWx0IFxcXFtsZW46IFxbMC05XF0rXFxcXVxcXFtpbXBs aWNpdFxcXF1cXCkiIDIgImdpbXBsZSIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2MtYysrLWNvbW1vbi9nb21wL3RhcmdldC1pbXBsaWNpdC1tYXAtMS5jIGIvZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC90YXJnZXQtaW1wbGljaXQtbWFwLTEuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTI5NDRmZGM2NWEKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3RhcmdldC1p bXBsaWNpdC1tYXAtMS5jCkBAIC0wLDAgKzEsMzkgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9 ICovCisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZkdW1wLXRyZWUtZ2ltcGxlIiB9 ICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbHNlCitleHRlcm4KKyNl bmRpZgordm9pZCBhYm9ydCAodm9pZCk7CisKK2ludAorbWFpbiAodm9pZCkKK3sKKyAgI2Rl ZmluZSBOIDUKKyAgaW50IGFycmF5W05dW05dOworCisgIGZvciAoaW50IGkgPSAwOyBpIDwg TjsgaSsrKQorICAgIHsKKyAgICAgICNwcmFnbWEgb21wIHRhcmdldCBlbnRlciBkYXRhIG1h cChhbGxvYzogYXJyYXlbaToxXVswOk5dKQorCisgICAgICAjcHJhZ21hIG9tcCB0YXJnZXQK KyAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgTjsgaisrKQorCWFycmF5W2ldW2pdID0gaSAq IDEwICsgajsKKworICAgICAgI3ByYWdtYSBvbXAgdGFyZ2V0IGV4aXQgZGF0YSBtYXAoZnJv bTogYXJyYXlbaToxXVswOk5dKQorICAgIH0KKworICBmb3IgKGludCBpID0gMDsgaSA8IE47 IGkrKykKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IE47IGorKykKKyAgICAgIGlmIChhcnJh eVtpXVtqXSAhPSBpICsgaikKKwlhYm9ydCAoKTsKKworICByZXR1cm4gMDsKK30KKworLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wIHsjcHJhZ21hIG9tcCB0YXJnZXQgZW50ZXIg ZGF0YSBtYXBcKGFsbG9jOmFycmF5XFtbXl1dK1xdXFswXF0gXFtsZW46IFswLTldK1xdXCl9 ICJnaW1wbGUiIH0gfSAqLworCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgeyNw cmFnbWEgb21wIHRhcmdldCBudW1fdGVhbXMuKiBmaXJzdHByaXZhdGVcKGlcKSBtYXBcKHRv ZnJvbTphcnJheSBcW2xlbjogWzAtOV0rXF1cW2ltcGxpY2l0XF1cKX0gImdpbXBsZSIgfSB9 ICovCisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCB7I3ByYWdtYSBvbXAgdGFy Z2V0IGV4aXQgZGF0YSBtYXBcKGZyb206YXJyYXlcW1teXV0rXF1cWzBcXSBcW2xlbjogWzAt OV0rXF1cKX0gImdpbXBsZSIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9nb2FjYy9maXJzdHByaXZhdGUtbWFwcGluZ3MtMS5DIGIvZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvZ29hY2MvZmlyc3Rwcml2YXRlLW1hcHBpbmdzLTEuQwppbmRleCAxYjFiYWRiMWE5 MC4uOTlhM2JkNDcyZjcgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2dvYWNj L2ZpcnN0cHJpdmF0ZS1tYXBwaW5ncy0xLkMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv Z29hY2MvZmlyc3Rwcml2YXRlLW1hcHBpbmdzLTEuQwpAQCAtNDE2LDcgKzQxNiw3IEBAIHZs YSAoaW50ICZhcnJheV9saSkKICAgY29weW91dCAoYXJyYXlfc28pCiAgIC8qIFRoZSBnaW1w bGlmaWVyIGhhcyBjcmVhdGVkIGFuIGltcGxpY2l0ICdmaXJzdHByaXZhdGUnIGNsYXVzZSBm b3IgdGhlIGFycmF5CiAgICAgIGxlbmd0aC4KLSAgICAgeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wIHsoP24pI3ByYWdtYSBvbXAgdGFyZ2V0IG9hY2NfcGFyYWxsZWwgbWFwXChmcm9t OmFycmF5X3NvIFxbbGVuOiA0XF1cKSBmaXJzdHByaXZhdGVcKH0gb21wbG93ZXIgfSB9Cisg ICAgIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCB7KD9uKSNwcmFnbWEgb21wIHRhcmdl dCBvYWNjX3BhcmFsbGVsIGZpcnN0cHJpdmF0ZVwoW14pXStcKSBtYXBcKGZyb206YXJyYXlf c28gXFtsZW46IDRcXVwpfSBvbXBsb3dlciB9IH0KICAgICAgKEMrKyBjb21wdXRlcyBhbiBp bnRlcm1lZGlhdGUgdmFsdWUsIHNvIGNhbid0IHNjYW4gZm9yICdmaXJzdHByaXZhdGUoYXJy YXlfbGkpJy4pICAqLwogICB7CiAgICAgYXJyYXlfc28gPSBzaXplb2YgYXJyYXk7CmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvYWNjL2NvbW1vbi1ibG9jay0z LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29hY2MvY29tbW9uLWJsb2NrLTMu ZjkwCmluZGV4IDVkZWZlMmVhODVkLi5kZDk4YWZlNGZiMSAxMDA2NDQKLS0tIGEvZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy9nb2FjYy9jb21tb24tYmxvY2stMy5mOTAKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb2FjYy9jb21tb24tYmxvY2stMy5mOTAKQEAgLTMw LDEwICszMCwxMCBAQCBlbmQgcHJvZ3JhbSBtYWluCiAhIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcC10aW1lcyAib21wIHRhcmdldCBvYWNjX3BhcmFsbGVsIC4qbWFwXFwodG9mcm9t OmIgXFxcW2xlbjogNDAwXFxcXVxcXCkiIDEgIm9tcGxvd2VyIiB9IH0KICEgeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJvbXAgdGFyZ2V0IG9hY2NfcGFyYWxsZWwgLipt YXBcXCh0b2Zyb206YyBcXFxbbGVuOiA0XFxcXVxcKSIgMSAib21wbG93ZXIiIH0gfQogCi0h IHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAib21wIHRhcmdldCBvYWNjX2tl cm5lbHMgLiptYXBcXChmb3JjZV90b2Zyb206aSBcXFxbbGVuOiA0XFxcXVxcKSIgMSAib21w bG93ZXIiIH0gfQotISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIm9tcCB0 YXJnZXQgb2FjY19rZXJuZWxzIC4qbWFwXFwodG9mcm9tOnggXFxcW2xlbjogNDAwXFxcXVxc KSIgMSAib21wbG93ZXIiIH0gfQotISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGlt ZXMgIm9tcCB0YXJnZXQgb2FjY19rZXJuZWxzIC4qbWFwXFwodG9mcm9tOnkgXFxcW2xlbjog NDAwXFxcXVxcXCkiIDEgIm9tcGxvd2VyIiB9IH0KLSEgeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wLXRpbWVzICJvbXAgdGFyZ2V0IG9hY2Nfa2VybmVscyAuKm1hcFxcKGZvcmNlX3Rv ZnJvbTpjIFxcXFtsZW46IDRcXFxdXFwpIiAxICJvbXBsb3dlciIgfSB9CishIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAib21wIHRhcmdldCBvYWNjX2tlcm5lbHMgLipt YXBcXChmb3JjZV90b2Zyb206aSBcXFxbbGVuOiA0XFxcXVxcXFtpbXBsaWNpdFxcXF1cXCki IDEgIm9tcGxvd2VyIiB9IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVz ICJvbXAgdGFyZ2V0IG9hY2Nfa2VybmVscyAuKm1hcFxcKHRvZnJvbTp4IFxcXFtsZW46IDQw MFxcXF1cXFxbaW1wbGljaXRcXFxdXFwpIiAxICJvbXBsb3dlciIgfSB9CishIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAib21wIHRhcmdldCBvYWNjX2tlcm5lbHMgLipt YXBcXCh0b2Zyb206eSBcXFxbbGVuOiA0MDBcXFxdXFxcW2ltcGxpY2l0XFxcXVxcXCkiIDEg Im9tcGxvd2VyIiB9IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJv bXAgdGFyZ2V0IG9hY2Nfa2VybmVscyAuKm1hcFxcKGZvcmNlX3RvZnJvbTpjIFxcXFtsZW46 IDRcXFxdXFxcW2ltcGxpY2l0XFxcXVxcKSIgMSAib21wbG93ZXIiIH0gfQogCiAhIEV4cGVj dGluZyBubyBtYXBwaW5nIG9mIHVuLXJlZmVyZW5jZWQgY29tbW9uLWJsb2NrcyB2YXJpYWJs ZXMKIApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb2FjYy9sb29w LXRyZWUtMS5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvYWNjL2xvb3AtdHJl ZS0xLmY5MAppbmRleCAxNTBmOTMwNGU0Ni4uNGNkZmM1NTU2YjcgMTAwNjQ0Ci0tLSBhL2dj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29hY2MvbG9vcC10cmVlLTEuZjkwCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29hY2MvbG9vcC10cmVlLTEuZjkwCkBAIC00NCw0 ICs0NCw0IEBAIGVuZCBwcm9ncmFtIHRlc3QKIAogISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtdGltZXMgInByaXZhdGVcXChtXFwpIiAxICJvcmlnaW5hbCIgfSB9IAogISB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgInJlZHVjdGlvblxcKFxcKzpzdW1cXCki IDEgIm9yaWdpbmFsIiB9IH0gCi0hIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAibWFwXFwodG9mcm9tOnN1bSBcXFxbbGVuOiBcWzAtOVxdK1xcXF1cXCkiIDEgImdpbXBs ZSIgfSB9CishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAibWFwXFwodG9m cm9tOnN1bSBcXFxbbGVuOiBcWzAtOVxdK1xcXF1cXFxbaW1wbGljaXRcXFxdXFwpIiAxICJn aW1wbGUiIH0gfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb2Fj Yy9wcml2YXRlLWV4cGxpY2l0LWtlcm5lbHMtMS5mOTUgYi9nY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL2dvYWNjL3ByaXZhdGUtZXhwbGljaXQta2VybmVscy0xLmY5NQppbmRleCA1ZDU2 M2QyMjZiMC4uZWVkZDk4NmM3YjkgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRy YW4uZGcvZ29hY2MvcHJpdmF0ZS1leHBsaWNpdC1rZXJuZWxzLTEuZjk1CisrKyBiL2djYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29hY2MvcHJpdmF0ZS1leHBsaWNpdC1rZXJuZWxzLTEu Zjk1CkBAIC04Miw3ICs4Miw3IEBAIHByb2dyYW0gdGVzdAogICAhJGFjYyBrZXJuZWxzICEg RXhwbGljaXQgInByaXZhdGUoaTJfMl9zKSIgY2xhdXNlIGNhbm5vdCBiZSBzcGVjaWZpZWQg aGVyZS4KICAgISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgInByaXZhdGVc XChpMl8yX3NcXCkiIDEgIm9yaWdpbmFsIiB7IHhmYWlsICotKi0qIH0gfSB9ICEgUFI5MDA2 NwogICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAicHJpdmF0ZVxcKGky XzJfc1xcKSIgMSAiZ2ltcGxlIiB7IHhmYWlsICotKi0qIH0gfSB9ICEgUFI5MDA2NwotICAh IHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiI3ByYWdtYSBvbXAgdGFyZ2V0 IG9hY2Nfa2VybmVscyBtYXBcXChmb3JjZV90b2Zyb206aTJfMl9zIFxcXFtsZW46IFxbMC05 XF0rXFxcXVxcKSIgMCAiZ2ltcGxlIiB7IHhmYWlsICotKi0qIH0gfSB9ICEgUFI5MDA2Nwor ICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiI3ByYWdtYSBvbXAgdGFy Z2V0IG9hY2Nfa2VybmVscyBtYXBcXChmb3JjZV90b2Zyb206aTJfMl9zIFxcXFtsZW46IFxb MC05XF0rXFxcXVxcXFtpbXBsaWNpdFxcXF1cXCkiIDAgImdpbXBsZSIgeyB4ZmFpbCAqLSot KiB9IH0gfSAhIFBSOTAwNjcKICAgZG8gaTJfMl9zID0gMSwgMTAwCiAgICAgICEkYWNjIGxv b3AgcHJpdmF0ZShqMl8yX3MpIGluZGVwZW5kZW50CiAgICAgICEgeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLXRpbWVzICIjcHJhZ21hIGFjYyBsb29wIHByaXZhdGVcXChqMl8yX3Nc XCkgaW5kZXBlbmRlbnQiIDEgIm9yaWdpbmFsIiB9IH0KQEAgLTIzMSw3ICsyMzEsNyBAQCBw cm9ncmFtIHRlc3QKICAgISRhY2Mga2VybmVscyAhIEV4cGxpY2l0ICJwcml2YXRlKGkzXzVf cykiIGNsYXVzZSBjYW5ub3QgYmUgc3BlY2lmaWVkIGhlcmUuCiAgICEgeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJwcml2YXRlXFwoaTNfNV9zXFwpIiAxICJvcmlnaW5h bCIgeyB4ZmFpbCAqLSotKiB9IH0gfSAhIFBSOTAwNjcKICAgISB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAtdGltZXMgInByaXZhdGVcXChpM181X3NcXCkiIDEgImdpbXBsZSIgeyB4 ZmFpbCAqLSotKiB9IH0gfSAhIFBSOTAwNjcKLSAgISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtdGltZXMgIiNwcmFnbWEgb21wIHRhcmdldCBvYWNjX2tlcm5lbHMgbWFwXFwoZm9y Y2VfdG9mcm9tOmkzXzVfcyBcXFxbbGVuOiBcWzAtOVxdK1xcXF1cXCkiIDAgImdpbXBsZSIg eyB4ZmFpbCAqLSotKiB9IH0gfSAhIFBSOTAwNjcKKyAgISB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAtdGltZXMgIiNwcmFnbWEgb21wIHRhcmdldCBvYWNjX2tlcm5lbHMgbWFwXFwo Zm9yY2VfdG9mcm9tOmkzXzVfcyBcXFxbbGVuOiBcWzAtOVxdK1xcXF1cXFxbaW1wbGljaXRc XFxdXFwpIiAwICJnaW1wbGUiIHsgeGZhaWwgKi0qLSogfSB9IH0gISBQUjkwMDY3CiAgIGRv IGkzXzVfcyA9IDEsIDEwMAogICAgICAhJGFjYyBsb29wIHByaXZhdGUoajNfNV9zKSBpbmRl cGVuZGVudAogICAgICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiI3By YWdtYSBhY2MgbG9vcCBwcml2YXRlXFwoajNfNV9zXFwpIGluZGVwZW5kZW50IiAxICJvcmln aW5hbCIgfSB9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvYWNj L3ByaXZhdGUtcHJlZGV0ZXJtaW5lZC1rZXJuZWxzLTEuZjk1IGIvZ2NjL3Rlc3RzdWl0ZS9n Zm9ydHJhbi5kZy9nb2FjYy9wcml2YXRlLXByZWRldGVybWluZWQta2VybmVscy0xLmY5NQpp bmRleCAxMmE3ODU0NTI2YS4uMjRiYzBlNzM5MDYgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvZ29hY2MvcHJpdmF0ZS1wcmVkZXRlcm1pbmVkLWtlcm5lbHMtMS5m OTUKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb2FjYy9wcml2YXRlLXByZWRl dGVybWluZWQta2VybmVscy0xLmY5NQpAQCAtODIsNyArODIsNyBAQCBwcm9ncmFtIHRlc3QK ICAgISRhY2Mga2VybmVscwogICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAicHJpdmF0ZVxcKGkyXzJfc1xcKSIgMSAib3JpZ2luYWwiIHsgeGZhaWwgKi0qLSogfSB9 IH0gISBQUjkwMDY3CiAgICEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJw cml2YXRlXFwoaTJfMl9zXFwpIiAxICJnaW1wbGUiIHsgeGZhaWwgKi0qLSogfSB9IH0gISBQ UjkwMDY3Ci0gICEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICIjcHJhZ21h IG9tcCB0YXJnZXQgb2FjY19rZXJuZWxzIG1hcFxcKGZvcmNlX3RvZnJvbTppMl8yX3MgXFxc W2xlbjogXFswLTlcXStcXFxdXFwpIiAwICJnaW1wbGUiIHsgeGZhaWwgKi0qLSogfSB9IH0g ISBQUjkwMDY3CisgICEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICIjcHJh Z21hIG9tcCB0YXJnZXQgb2FjY19rZXJuZWxzIG1hcFxcKGZvcmNlX3RvZnJvbTppMl8yX3Mg XFxcW2xlbjogXFswLTlcXStcXFxdXFxcW2ltcGxpY2l0XFxcXVxcKSIgMCAiZ2ltcGxlIiB7 IHhmYWlsICotKi0qIH0gfSB9ICEgUFI5MDA2NwogICBkbyBpMl8yX3MgPSAxLCAxMDAKICAg ICAgISRhY2MgbG9vcCBpbmRlcGVuZGVudAogICAgICAhIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcC10aW1lcyAiI3ByYWdtYSBhY2MgbG9vcCBwcml2YXRlXFwoajJfMl9zXFwpIGlu ZGVwZW5kZW50IiAxICJvcmlnaW5hbCIgfSB9CkBAIC0yMzEsNyArMjMxLDcgQEAgcHJvZ3Jh bSB0ZXN0CiAgICEkYWNjIGtlcm5lbHMKICAgISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtdGltZXMgInByaXZhdGVcXChpM181X3NcXCkiIDEgIm9yaWdpbmFsIiB7IHhmYWlsICot Ki0qIH0gfSB9ICEgUFI5MDA2NwogICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10 aW1lcyAicHJpdmF0ZVxcKGkzXzVfc1xcKSIgMSAiZ2ltcGxlIiB7IHhmYWlsICotKi0qIH0g fSB9ICEgUFI5MDA2NwotICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAi I3ByYWdtYSBvbXAgdGFyZ2V0IG9hY2Nfa2VybmVscyBtYXBcXChmb3JjZV90b2Zyb206aTNf NV9zIFxcXFtsZW46IFxbMC05XF0rXFxcXVxcKSIgMCAiZ2ltcGxlIiB7IHhmYWlsICotKi0q IH0gfSB9ICEgUFI5MDA2NworICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAiI3ByYWdtYSBvbXAgdGFyZ2V0IG9hY2Nfa2VybmVscyBtYXBcXChmb3JjZV90b2Zyb206 aTNfNV9zIFxcXFtsZW46IFxbMC05XF0rXFxcXVxcXFtpbXBsaWNpdFxcXF1cXCkiIDAgImdp bXBsZSIgeyB4ZmFpbCAqLSotKiB9IH0gfSAhIFBSOTAwNjcKICAgZG8gaTNfNV9zID0gMSwg MTAwCiAgICAgICEkYWNjIGxvb3AgaW5kZXBlbmRlbnQKICAgICAgISB7IGRnLWZpbmFsIHsg c2Nhbi10cmVlLWR1bXAtdGltZXMgIiNwcmFnbWEgYWNjIGxvb3AgcHJpdmF0ZVxcKGozXzVf c1xcKSBpbmRlcGVuZGVudCIgMSAib3JpZ2luYWwiIH0gfQpkaWZmIC0tZ2l0IGEvZ2NjL3Ry ZWUtcHJldHR5LXByaW50LmMgYi9nY2MvdHJlZS1wcmV0dHktcHJpbnQuYwppbmRleCAwYTU3 NWViOWRhZC4uOGYwMjZkMzMyZWEgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLXByZXR0eS1wcmlu dC5jCisrKyBiL2djYy90cmVlLXByZXR0eS1wcmludC5jCkBAIC05MjksNiArOTI5LDkgQEAg ZHVtcF9vbXBfY2xhdXNlIChwcmV0dHlfcHJpbnRlciAqcHAsIHRyZWUgY2xhdXNlLCBpbnQg c3BjLCBkdW1wX2ZsYWdzX3QgZmxhZ3MpCiAJCQkgICAgIHNwYywgZmxhZ3MsIGZhbHNlKTsK IAkgIHBwX3JpZ2h0X2JyYWNrZXQgKHBwKTsKIAl9CisgICAgICBpZiAoT01QX0NMQVVTRV9D T0RFIChjbGF1c2UpID09IE9NUF9DTEFVU0VfTUFQCisJICAmJiBPTVBfQ0xBVVNFX01BUF9J TVBMSUNJVF9QIChjbGF1c2UpKQorCXBwX3N0cmluZyAocHAsICJbaW1wbGljaXRdIik7CiAg ICAgICBwcF9yaWdodF9wYXJlbiAocHApOwogICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBh L2djYy90cmVlLmggYi9nY2MvdHJlZS5oCmluZGV4IDc4NDQ1MmNhNDkwLi44M2I5MjBhMzVm ZiAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUuaAorKysgYi9nY2MvdHJlZS5oCkBAIC0xNjQ0LDYg KzE2NDQsMTAgQEAgY2xhc3MgYXV0b19zdXBwcmVzc19sb2NhdGlvbl93cmFwcGVycwogICAg dmFyaWFibGUuICAqLwogI2RlZmluZSBPTVBfQ0xBVVNFX01BUF9JTl9SRURVQ1RJT04oTk9E RSkgXAogICBUUkVFX1BSSVZBVEUgKE9NUF9DTEFVU0VfU1VCQ09ERV9DSEVDSyAoTk9ERSwg T01QX0NMQVVTRV9NQVApKQorLyogTm9uemVybyBpZiB0aGlzIG1hcCBjbGF1c2Ugd2FzIGNy ZWF0ZWQgdGhyb3VnaCBpbXBsaWNpdCBkYXRhLW1hcHBpbmcKKyAgIHJ1bGVzLiAqLworI2Rl ZmluZSBPTVBfQ0xBVVNFX01BUF9JTVBMSUNJVF9QKE5PREUpIFwKKyAgKE9NUF9DTEFVU0Vf U1VCQ09ERV9DSEVDSyAoTk9ERSwgT01QX0NMQVVTRV9NQVApLT5iYXNlLmRlcHJlY2F0ZWRf ZmxhZykKIAogLyogVHJ1ZSBvbiBhbiBPTVBfQ0xBVVNFX1VTRV9ERVZJQ0VfUFRSIHdpdGgg YW4gT3BlbkFDQyAnaWZfcHJlc2VudCcKICAgIGNsYXVzZS4gICovCmRpZmYgLS1naXQgYS9p bmNsdWRlL2dvbXAtY29uc3RhbnRzLmggYi9pbmNsdWRlL2dvbXAtY29uc3RhbnRzLmgKaW5k ZXggNmUxNjNiMDI1NjAuLjZlNjViNjQzN2IzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2dvbXAt Y29uc3RhbnRzLmgKKysrIGIvaW5jbHVkZS9nb21wLWNvbnN0YW50cy5oCkBAIC00MCwxMSAr NDAsMjIgQEAKICNkZWZpbmUgR09NUF9NQVBfRkxBR19TUEVDSUFMXzAJCSgxIDw8IDIpCiAj ZGVmaW5lIEdPTVBfTUFQX0ZMQUdfU1BFQ0lBTF8xCQkoMSA8PCAzKQogI2RlZmluZSBHT01Q X01BUF9GTEFHX1NQRUNJQUxfMgkJKDEgPDwgNCkKKyNkZWZpbmUgR09NUF9NQVBfRkxBR19T UEVDSUFMXzMJCSgxIDw8IDUpCiAjZGVmaW5lIEdPTVBfTUFQX0ZMQUdfU1BFQ0lBTF80CQko MSA8PCA2KQogI2RlZmluZSBHT01QX01BUF9GTEFHX1NQRUNJQUwJCShHT01QX01BUF9GTEFH X1NQRUNJQUxfMSBcCiAJCQkJCSB8IEdPTVBfTUFQX0ZMQUdfU1BFQ0lBTF8wKQogI2RlZmlu ZSBHT01QX01BUF9ERUVQX0NPUFkJCShHT01QX01BUF9GTEFHX1NQRUNJQUxfNCBcCiAJCQkJ CSB8IEdPTVBfTUFQX0ZMQUdfU1BFQ0lBTF8yKQorLyogVGhpcyB2YWx1ZSBpbmRpY2F0ZXMg dGhlIG1hcCB3YXMgY3JlYXRlZCBpbXBsaWNpdGx5IGFjY29yZGluZyB0bworICAgT3Blbk1Q IHJ1bGVzLiAgKi8KKyNkZWZpbmUgR09NUF9NQVBfSU1QTElDSVQJCShHT01QX01BUF9GTEFH X1NQRUNJQUxfMyBcCisJCQkJCSB8IEdPTVBfTUFQX0ZMQUdfU1BFQ0lBTF80KQorLyogTWFz ayBmb3IgZW50aXJlIHNldCBvZiBzcGVjaWFsIG1hcCBraW5kIGJpdHMuICAqLworI2RlZmlu ZSBHT01QX01BUF9GTEFHX1NQRUNJQUxfQklUUwkoR09NUF9NQVBfRkxBR19TUEVDSUFMXzAg XAorCQkJCQkgfCBHT01QX01BUF9GTEFHX1NQRUNJQUxfMSBcCisJCQkJCSB8IEdPTVBfTUFQ X0ZMQUdfU1BFQ0lBTF8yIFwKKwkJCQkJIHwgR09NUF9NQVBfRkxBR19TUEVDSUFMXzMgXAor CQkJCQkgfCBHT01QX01BUF9GTEFHX1NQRUNJQUxfNCkKIC8qIEZsYWcgdG8gZm9yY2UgYSBz cGVjaWZpYyBiZWhhdmlvciAob3IgZWxzZSwgdHJpZ2dlciBhIHJ1bi10aW1lIGVycm9yKS4g ICovCiAjZGVmaW5lIEdPTVBfTUFQX0ZMQUdfRk9SQ0UJCSgxIDw8IDcpCiAKQEAgLTE4Niw2 ICsxOTcsOSBAQCBlbnVtIGdvbXBfbWFwX2tpbmQKICNkZWZpbmUgR09NUF9NQVBfQUxXQVlT X1AoWCkgXAogICAoR09NUF9NQVBfQUxXQVlTX1RPX1AgKFgpIHx8ICgoWCkgPT0gR09NUF9N QVBfQUxXQVlTX0ZST00pKQogCisjZGVmaW5lIEdPTVBfTUFQX0lNUExJQ0lUX1AoWCkgXAor ICAoKChYKSAmIEdPTVBfTUFQX0ZMQUdfU1BFQ0lBTF9CSVRTKSA9PSBHT01QX01BUF9JTVBM SUNJVCkKKwogCiAvKiBBc3luY2hyb25vdXMgYmVoYXZpb3IuICBLZWVwIGluIHN5bmMgd2l0 aAogICAgbGliZ29tcC97b3BlbmFjYy5oLG9wZW5hY2MuZjkwLG9wZW5hY2NfbGliLmh9OmFj Y19hc3luY190LiAgKi8KZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGFyZ2V0LmMgYi9saWJnb21w L3RhcmdldC5jCmluZGV4IDIxNTBlNWQ3OWIyLi5iODM2ZTNkN2Y4MCAxMDA2NDQKLS0tIGEv bGliZ29tcC90YXJnZXQuYworKysgYi9saWJnb21wL3RhcmdldC5jCkBAIC0zNjgsNyArMzY4 LDcgQEAgc3RhdGljIGlubGluZSB2b2lkCiBnb21wX21hcF92YXJzX2V4aXN0aW5nIChzdHJ1 Y3QgZ29tcF9kZXZpY2VfZGVzY3IgKmRldmljZXAsCiAJCQlzdHJ1Y3QgZ29hY2NfYXN5bmNx dWV1ZSAqYXEsIHNwbGF5X3RyZWVfa2V5IG9sZG4sCiAJCQlzcGxheV90cmVlX2tleSBuZXdu LCBzdHJ1Y3QgdGFyZ2V0X3Zhcl9kZXNjICp0Z3RfdmFyLAotCQkJdW5zaWduZWQgY2hhciBr aW5kLCBib29sIGFsd2F5c190b19mbGFnLAorCQkJdW5zaWduZWQgY2hhciBraW5kLCBib29s IGFsd2F5c190b19mbGFnLCBib29sIGltcGxpY2l0LAogCQkJc3RydWN0IGdvbXBfY29hbGVz Y2VfYnVmICpjYnVmKQogewogICBhc3NlcnQgKGtpbmQgIT0gR09NUF9NQVBfQVRUQUNIKTsK QEAgLTM3OCwxMSArMzc4LDIyIEBAIGdvbXBfbWFwX3ZhcnNfZXhpc3RpbmcgKHN0cnVjdCBn b21wX2RldmljZV9kZXNjciAqZGV2aWNlcCwKICAgdGd0X3Zhci0+YWx3YXlzX2NvcHlfZnJv bSA9IEdPTVBfTUFQX0FMV0FZU19GUk9NX1AgKGtpbmQpOwogICB0Z3RfdmFyLT5pc19hdHRh Y2ggPSBmYWxzZTsKICAgdGd0X3Zhci0+b2Zmc2V0ID0gbmV3bi0+aG9zdF9zdGFydCAtIG9s ZG4tPmhvc3Rfc3RhcnQ7Ci0gIHRndF92YXItPmxlbmd0aCA9IG5ld24tPmhvc3RfZW5kIC0g bmV3bi0+aG9zdF9zdGFydDsKKworICAvKiBGb3IgaW1wbGljaXQgbWFwcywgb2xkIGNvbnRh aW5lZCBpbiBuZXcgaXMgdmFsaWQuICAqLworICBib29sIGltcGxpY2l0X3N1YnNldCA9IChp bXBsaWNpdAorCQkJICAmJiBuZXduLT5ob3N0X3N0YXJ0IDw9IG9sZG4tPmhvc3Rfc3RhcnQK KwkJCSAgJiYgb2xkbi0+aG9zdF9lbmQgPD0gbmV3bi0+aG9zdF9lbmQpOworICBpZiAoaW1w bGljaXRfc3Vic2V0KQorICAgIHRndF92YXItPmxlbmd0aCA9IG9sZG4tPmhvc3RfZW5kIC0g b2xkbi0+aG9zdF9zdGFydDsKKyAgZWxzZQorICAgIHRndF92YXItPmxlbmd0aCA9IG5ld24t Pmhvc3RfZW5kIC0gbmV3bi0+aG9zdF9zdGFydDsKIAogICBpZiAoKGtpbmQgJiBHT01QX01B UF9GTEFHX0ZPUkNFKQotICAgICAgfHwgb2xkbi0+aG9zdF9zdGFydCA+IG5ld24tPmhvc3Rf c3RhcnQKLSAgICAgIHx8IG9sZG4tPmhvc3RfZW5kIDwgbmV3bi0+aG9zdF9lbmQpCisgICAg ICAvKiBGb3IgaW1wbGljaXQgbWFwcywgb2xkIGNvbnRhaW5lZCBpbiBuZXcgaXMgdmFsaWQu ICAqLworICAgICAgfHwgIShpbXBsaWNpdF9zdWJzZXQKKwkgICAvKiBPdGhlcndpc2UsIG5l dyBjb250YWluZWQgaW5zaWRlIG9sZCBpcyBjb25zaWRlcmVkIHZhbGlkLiAgKi8KKwkgICB8 fCAob2xkbi0+aG9zdF9zdGFydCA8PSBuZXduLT5ob3N0X3N0YXJ0CisJICAgICAgICYmIG5l d24tPmhvc3RfZW5kIDw9IG9sZG4tPmhvc3RfZW5kKSkpCiAgICAgewogICAgICAgZ29tcF9t dXRleF91bmxvY2sgKCZkZXZpY2VwLT5sb2NrKTsKICAgICAgIGdvbXBfZmF0YWwgKCJUcnlp bmcgdG8gbWFwIGludG8gZGV2aWNlIFslcC4uJXApIG9iamVjdCB3aGVuICIKQEAgLTM5Miwx MSArNDAzLDE3IEBAIGdvbXBfbWFwX3ZhcnNfZXhpc3RpbmcgKHN0cnVjdCBnb21wX2Rldmlj ZV9kZXNjciAqZGV2aWNlcCwKICAgICB9CiAKICAgaWYgKEdPTVBfTUFQX0FMV0FZU19UT19Q IChraW5kKSB8fCBhbHdheXNfdG9fZmxhZykKLSAgICBnb21wX2NvcHlfaG9zdDJkZXYgKGRl dmljZXAsIGFxLAotCQkJKHZvaWQgKikgKG9sZG4tPnRndC0+dGd0X3N0YXJ0ICsgb2xkbi0+ dGd0X29mZnNldAotCQkJCSAgKyBuZXduLT5ob3N0X3N0YXJ0IC0gb2xkbi0+aG9zdF9zdGFy dCksCi0JCQkodm9pZCAqKSBuZXduLT5ob3N0X3N0YXJ0LAotCQkJbmV3bi0+aG9zdF9lbmQg LSBuZXduLT5ob3N0X3N0YXJ0LCBjYnVmKTsKKyAgICB7CisgICAgICAvKiBJbXBsaWNpdCAr IGFsd2F5cyBzaG91bGQgbm90IGhhcHBlbi4gSWYgdGhpcyBkb2VzIG9jY3VyLCBiZWxvdwor CSBhZGRyZXNzL2xlbmd0aCBhZGp1c3RtZW50IGlzIGEgVE9ETy4gICovCisgICAgICBhc3Nl cnQgKCFpbXBsaWNpdF9zdWJzZXQpOworCisgICAgICBnb21wX2NvcHlfaG9zdDJkZXYgKGRl dmljZXAsIGFxLAorCQkJICAodm9pZCAqKSAob2xkbi0+dGd0LT50Z3Rfc3RhcnQgKyBvbGRu LT50Z3Rfb2Zmc2V0CisJCQkJICAgICsgbmV3bi0+aG9zdF9zdGFydCAtIG9sZG4tPmhvc3Rf c3RhcnQpLAorCQkJICAodm9pZCAqKSBuZXduLT5ob3N0X3N0YXJ0LAorCQkJICBuZXduLT5o b3N0X2VuZCAtIG5ld24tPmhvc3Rfc3RhcnQsIGNidWYpOworICAgIH0KIAogICBpZiAob2xk bi0+cmVmY291bnQgIT0gUkVGQ09VTlRfSU5GSU5JVFkpCiAgICAgb2xkbi0+cmVmY291bnQr KzsKQEAgLTQwNSw4ICs0MjIsMjQgQEAgZ29tcF9tYXBfdmFyc19leGlzdGluZyAoc3RydWN0 IGdvbXBfZGV2aWNlX2Rlc2NyICpkZXZpY2VwLAogc3RhdGljIGludAogZ2V0X2tpbmQgKGJv b2wgc2hvcnRfbWFwa2luZCwgdm9pZCAqa2luZHMsIGludCBpZHgpCiB7Ci0gIHJldHVybiBz aG9ydF9tYXBraW5kID8gKCh1bnNpZ25lZCBzaG9ydCAqKSBraW5kcylbaWR4XQotCQkgICAg ICAgOiAoKHVuc2lnbmVkIGNoYXIgKikga2luZHMpW2lkeF07CisgIGludCB2YWwgPSAoc2hv cnRfbWFwa2luZAorCSAgICAgPyAoKHVuc2lnbmVkIHNob3J0ICopIGtpbmRzKVtpZHhdCisJ ICAgICA6ICgodW5zaWduZWQgY2hhciAqKSBraW5kcylbaWR4XSk7CisKKyAgaWYgKEdPTVBf TUFQX0lNUExJQ0lUX1AgKHZhbCkpCisgICAgdmFsICY9IH5HT01QX01BUF9JTVBMSUNJVDsK KyAgcmV0dXJuIHZhbDsKK30KKworCitzdGF0aWMgYm9vbAorZ2V0X2ltcGxpY2l0IChib29s IHNob3J0X21hcGtpbmQsIHZvaWQgKmtpbmRzLCBpbnQgaWR4KQoreworICBpbnQgdmFsID0g KHNob3J0X21hcGtpbmQKKwkgICAgID8gKCh1bnNpZ25lZCBzaG9ydCAqKSBraW5kcylbaWR4 XQorCSAgICAgOiAoKHVuc2lnbmVkIGNoYXIgKikga2luZHMpW2lkeF0pOworCisgIHJldHVy biBHT01QX01BUF9JTVBMSUNJVF9QICh2YWwpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNDU5 LDYgKzQ5Miw3IEBAIGdvbXBfbWFwX2ZpZWxkc19leGlzdGluZyAoc3RydWN0IHRhcmdldF9t ZW1fZGVzYyAqdGd0LAogICBzdHJ1Y3Qgc3BsYXlfdHJlZV9zICptZW1fbWFwID0gJmRldmlj ZXAtPm1lbV9tYXA7CiAgIHN0cnVjdCBzcGxheV90cmVlX2tleV9zIGN1cl9ub2RlOwogICBp bnQga2luZDsKKyAgYm9vbCBpbXBsaWNpdDsKICAgY29uc3QgYm9vbCBzaG9ydF9tYXBraW5k ID0gdHJ1ZTsKICAgY29uc3QgaW50IHR5cGVtYXNrID0gc2hvcnRfbWFwa2luZCA/IDB4ZmYg OiAweDc7CiAKQEAgLTQ2NiwxMiArNTAwLDEzIEBAIGdvbXBfbWFwX2ZpZWxkc19leGlzdGlu ZyAoc3RydWN0IHRhcmdldF9tZW1fZGVzYyAqdGd0LAogICBjdXJfbm9kZS5ob3N0X2VuZCA9 IGN1cl9ub2RlLmhvc3Rfc3RhcnQgKyBzaXplc1tpXTsKICAgc3BsYXlfdHJlZV9rZXkgbjIg PSBzcGxheV90cmVlX2xvb2t1cCAobWVtX21hcCwgJmN1cl9ub2RlKTsKICAga2luZCA9IGdl dF9raW5kIChzaG9ydF9tYXBraW5kLCBraW5kcywgaSk7CisgIGltcGxpY2l0ID0gZ2V0X2lt cGxpY2l0IChzaG9ydF9tYXBraW5kLCBraW5kcywgaSk7CiAgIGlmIChuMgogICAgICAgJiYg bjItPnRndCA9PSBuLT50Z3QKICAgICAgICYmIG4yLT5ob3N0X3N0YXJ0IC0gbi0+aG9zdF9z dGFydCA9PSBuMi0+dGd0X29mZnNldCAtIG4tPnRndF9vZmZzZXQpCiAgICAgewogICAgICAg Z29tcF9tYXBfdmFyc19leGlzdGluZyAoZGV2aWNlcCwgYXEsIG4yLCAmY3VyX25vZGUsICZ0 Z3QtPmxpc3RbaV0sCi0JCQkgICAgICBraW5kICYgdHlwZW1hc2ssIGZhbHNlLCBjYnVmKTsK KwkJCSAgICAgIGtpbmQgJiB0eXBlbWFzaywgZmFsc2UsIGltcGxpY2l0LCBjYnVmKTsKICAg ICAgIHJldHVybjsKICAgICB9CiAgIGlmIChzaXplc1tpXSA9PSAwKQpAQCAtNDg3LDcgKzUy Miw3IEBAIGdvbXBfbWFwX2ZpZWxkc19leGlzdGluZyAoc3RydWN0IHRhcmdldF9tZW1fZGVz YyAqdGd0LAogCQkgPT0gbjItPnRndF9vZmZzZXQgLSBuLT50Z3Rfb2Zmc2V0KQogCSAgICB7 CiAJICAgICAgZ29tcF9tYXBfdmFyc19leGlzdGluZyAoZGV2aWNlcCwgYXEsIG4yLCAmY3Vy X25vZGUsICZ0Z3QtPmxpc3RbaV0sCi0JCQkJICAgICAga2luZCAmIHR5cGVtYXNrLCBmYWxz ZSwgY2J1Zik7CisJCQkJICAgICAga2luZCAmIHR5cGVtYXNrLCBmYWxzZSwgaW1wbGljaXQs IGNidWYpOwogCSAgICAgIHJldHVybjsKIAkgICAgfQogCX0KQEAgLTQ5OSw3ICs1MzQsNyBA QCBnb21wX21hcF9maWVsZHNfZXhpc3RpbmcgKHN0cnVjdCB0YXJnZXRfbWVtX2Rlc2MgKnRn dCwKIAkgICYmIG4yLT5ob3N0X3N0YXJ0IC0gbi0+aG9zdF9zdGFydCA9PSBuMi0+dGd0X29m ZnNldCAtIG4tPnRndF9vZmZzZXQpCiAJewogCSAgZ29tcF9tYXBfdmFyc19leGlzdGluZyAo ZGV2aWNlcCwgYXEsIG4yLCAmY3VyX25vZGUsICZ0Z3QtPmxpc3RbaV0sCi0JCQkJICBraW5k ICYgdHlwZW1hc2ssIGZhbHNlLCBjYnVmKTsKKwkJCQkgIGtpbmQgJiB0eXBlbWFzaywgZmFs c2UsIGltcGxpY2l0LCBjYnVmKTsKIAkgIHJldHVybjsKIAl9CiAgICAgfQpAQCAtNzI5LDYg Kzc2NCw3IEBAIGdvbXBfbWFwX3ZhcnNfaW50ZXJuYWwgKHN0cnVjdCBnb21wX2RldmljZV9k ZXNjciAqZGV2aWNlcCwKICAgZm9yIChpID0gMDsgaSA8IG1hcG51bTsgaSsrKQogICAgIHsK ICAgICAgIGludCBraW5kID0gZ2V0X2tpbmQgKHNob3J0X21hcGtpbmQsIGtpbmRzLCBpKTsK KyAgICAgIGJvb2wgaW1wbGljaXQgPSBnZXRfaW1wbGljaXQgKHNob3J0X21hcGtpbmQsIGtp bmRzLCBpKTsKICAgICAgIGlmIChob3N0YWRkcnNbaV0gPT0gTlVMTAogCSAgfHwgKGtpbmQg JiB0eXBlbWFzaykgPT0gR09NUF9NQVBfRklSU1RQUklWQVRFX0lOVCkKIAl7CkBAIC05MDks NyArOTQ1LDggQEAgZ29tcF9tYXBfdmFyc19pbnRlcm5hbCAoc3RydWN0IGdvbXBfZGV2aWNl X2Rlc2NyICpkZXZpY2VwLAogCQl9CiAJICAgIH0KIAkgIGdvbXBfbWFwX3ZhcnNfZXhpc3Rp bmcgKGRldmljZXAsIGFxLCBuLCAmY3VyX25vZGUsICZ0Z3QtPmxpc3RbaV0sCi0JCQkJICBr aW5kICYgdHlwZW1hc2ssIGFsd2F5c190b19jbnQgPiAwLCBOVUxMKTsKKwkJCQkgIGtpbmQg JiB0eXBlbWFzaywgYWx3YXlzX3RvX2NudCA+IDAsIGltcGxpY2l0LAorCQkJCSAgTlVMTCk7 CiAJICBpICs9IGFsd2F5c190b19jbnQ7CiAJfQogICAgICAgZWxzZQpAQCAtMTA3OCw2ICsx MTE1LDcgQEAgZ29tcF9tYXBfdmFyc19pbnRlcm5hbCAoc3RydWN0IGdvbXBfZGV2aWNlX2Rl c2NyICpkZXZpY2VwLAogCWVsc2UgaWYgKHRndC0+bGlzdFtpXS5rZXkgPT0gTlVMTCkKIAkg IHsKIAkgICAgaW50IGtpbmQgPSBnZXRfa2luZCAoc2hvcnRfbWFwa2luZCwga2luZHMsIGkp OworCSAgICBib29sIGltcGxpY2l0ID0gZ2V0X2ltcGxpY2l0IChzaG9ydF9tYXBraW5kLCBr aW5kcywgaSk7CiAJICAgIGlmIChob3N0YWRkcnNbaV0gPT0gTlVMTCkKIAkgICAgICBjb250 aW51ZTsKIAkgICAgc3dpdGNoIChraW5kICYgdHlwZW1hc2spCkBAIC0xMjM2LDcgKzEyNzQs NyBAQCBnb21wX21hcF92YXJzX2ludGVybmFsIChzdHJ1Y3QgZ29tcF9kZXZpY2VfZGVzY3Ig KmRldmljZXAsCiAJICAgIHNwbGF5X3RyZWVfa2V5IG4gPSBzcGxheV90cmVlX2xvb2t1cCAo bWVtX21hcCwgayk7CiAJICAgIGlmIChuICYmIG4tPnJlZmNvdW50ICE9IFJFRkNPVU5UX0xJ TkspCiAJICAgICAgZ29tcF9tYXBfdmFyc19leGlzdGluZyAoZGV2aWNlcCwgYXEsIG4sIGss ICZ0Z3QtPmxpc3RbaV0sCi0JCQkJICAgICAga2luZCAmIHR5cGVtYXNrLCBmYWxzZSwgY2J1 ZnApOworCQkJCSAgICAgIGtpbmQgJiB0eXBlbWFzaywgZmFsc2UsIGltcGxpY2l0LCBjYnVm cCk7CiAJICAgIGVsc2UKIAkgICAgICB7CiAJCWstPmF1eCA9IE5VTEw7CmRpZmYgLS1naXQg YS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi90YXJnZXQtaW1wbGlj aXQtbWFwLTEuYyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL3Rh cmdldC1pbXBsaWNpdC1tYXAtMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi5mMmU3MjkzNjg2MgotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvdGVzdHN1 aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL3RhcmdldC1pbXBsaWNpdC1tYXAtMS5jCkBAIC0w LDAgKzEsMzEgQEAKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2Vsc2UKK2V4 dGVybgorI2VuZGlmCit2b2lkIGFib3J0ICh2b2lkKTsKKworaW50CittYWluICh2b2lkKQor eworICAjZGVmaW5lIE4gNQorICBpbnQgYXJyYXlbTl1bTl07CisKKyAgZm9yIChpbnQgaSA9 IDA7IGkgPCBOOyBpKyspCisgICAgeworICAgICAgI3ByYWdtYSBvbXAgdGFyZ2V0IGVudGVy IGRhdGEgbWFwKGFsbG9jOiBhcnJheVtpOjFdWzA6Tl0pCisKKyAgICAgICNwcmFnbWEgb21w IHRhcmdldAorICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBOOyBqKyspCisJYXJyYXlbaV1b al0gPSBpICsgajsKKworICAgICAgI3ByYWdtYSBvbXAgdGFyZ2V0IGV4aXQgZGF0YSBtYXAo ZnJvbTogYXJyYXlbaToxXVswOk5dKQorICAgIH0KKworICBmb3IgKGludCBpID0gMDsgaSA8 IE47IGkrKykKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IE47IGorKykKKyAgICAgIGlmIChh cnJheVtpXVtqXSAhPSBpICsgaikKKwlhYm9ydCAoKTsKKworICByZXR1cm4gMDsKK30K --------------4FACBAFB8EE2562286AB4522--