From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com [68.232.129.153]) by sourceware.org (Postfix) with ESMTPS id 89D133858D20; Mon, 14 Mar 2022 15:42:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 89D133858D20 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.90,181,1643702400"; d="diff'?scan'208";a="75712228" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa1.mentor.iphmx.com with ESMTP; 14 Mar 2022 07:42:20 -0800 IronPort-SDR: 0LtLqG+30h2syAp5/1MF0Zzc6V0r25jKhhc0SzcfFgXWzGf//njEwrQe90Mqjh5wCkfBCKLD3u VBDbMJt/CdQQc/qUzUxEvELi15YmVFFmqAS3L7Yk8JaEa9JHx6un4ynrSbL+Zti5sAEa8+l0/n wRijrrDqVPBb4CgjPVkWYwRrRQcta2qjZeRhZ6Hc5wVN+IlRzO2+J+Jcn6ioGC+4bLTJ86BWhj znXg5owifeWtYC6/DMR2dC9qkeYLzfVFBTB134bThJya+91xRqb01jddk1tZFU23Rx8eVghUrs yzI= Content-Type: multipart/mixed; boundary="------------yydJ0RwNFa0alUKjQm3hue7D" Message-ID: <31be8262-626b-e3be-60d8-14bdf2911f64@codesourcery.com> Date: Mon, 14 Mar 2022 16:42:14 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.6.1 Subject: Re: [Patch] OpenMP, libgomp: Add new runtime routine omp_target_is_accessible. To: Tobias Burnus , , References: <7fa4a70c-60e7-fa18-0fcd-98301c0b3344@codesourcery.com> <1b53e970-a0a7-66bc-4b2e-828e881cce73@codesourcery.com> From: Marcel Vollweiler In-Reply-To: <1b53e970-a0a7-66bc-4b2e-828e881cce73@codesourcery.com> X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: SVR-IES-MBX-07.mgc.mentorg.com (139.181.222.7) To SVR-IES-MBX-03.mgc.mentorg.com (139.181.222.3) X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, NICE_REPLY_A, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: fortran@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Fortran mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Mar 2022 15:42:23 -0000 --------------yydJ0RwNFa0alUKjQm3hue7D Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable Hi Tobias, > Minor remark to the test: > > On 11.03.22 13:30, Marcel Vollweiler wrote: >> + int d =3D omp_get_default_device (); > ... >> + int shared_mem =3D 0; >> + #pragma omp target map (alloc: shared_mem) device (d) >> + shared_mem =3D 1; >> + if (omp_target_is_accessible (p, sizeof (int), d) !=3D shared_mem) >> + __builtin_abort (); > > I wonder whether it makes sense to do instead > for (d =3D 0; d <=3D omp_get_num_devices(); ++d) > instead of just > d =3D omp_get_default_device(); > given that we have already found once in a while bugs when testing more > than just the default device - be it because devices differed or because > '0' was special. > > In particular, I could image having at the same time two or three devices > available of type intelmic + gcn + nvptx, possibly mixing shared memory, > nonshared memory and semi-shared memory* Good hint, thanks. I updated the C(++) and Fortran tests accordingly and attached the updated patch. Marcel ----------------- 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 --------------yydJ0RwNFa0alUKjQm3hue7D Content-Type: text/plain; charset="UTF-8"; name="target-is-accessible-patch.diff" Content-Disposition: attachment; filename="target-is-accessible-patch.diff" Content-Transfer-Encoding: base64 T3Blbk1QLCBsaWJnb21wOiBBZGQgbmV3IHJ1bnRpbWUgcm91dGluZSBvbXBfdGFyZ2V0X2lz X2FjY2Vzc2libGUuCgpnY2MvQ2hhbmdlTG9nOgoKCSogb21wLWxvdy5jYyAob21wX3J1bnRp bWVfYXBpX2NhbGwpOiBBZGRlZCB0YXJnZXRfaXNfYWNjZXNzaWJsZSB0bwoJb21wX3J1bnRp bWVfYXBpcyBhcnJheS4KCmxpYmdvbXAvQ2hhbmdlTG9nOgoKCSogbGliZ29tcC5tYXA6IEFk ZGVkIG9tcF90YXJnZXRfaXNfYWNjZXNzaWJsZS4KCSogbGliZ29tcC50ZXhpOiBUYWdnZWQg b21wX3RhcmdldF9pc19hY2Nlc3NpYmxlIGFzIHN1cHBvcnRlZC4KCSogb21wLmguaW46IEFk ZGVkIG9tcF90YXJnZXRfaXNfYWNjZXNzaWJsZS4KCSogb21wX2xpYi5mOTAuaW46IEFkZGVk IGludGVyZmFjZSBmb3Igb21wX3RhcmdldF9pc19hY2Nlc3NpYmxlLgoJKiBvbXBfbGliLmgu aW46IExpa2V3aXNlLgoJKiB0YXJnZXQuYyAob21wX3RhcmdldF9pc19hY2Nlc3NpYmxlKTog QWRkZWQgaW1wbGVtZW50YXRpb24gb2YKCW9tcF90YXJnZXRfaXNfYWNjZXNzaWJsZS4KCSog dGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL3RhcmdldC1pcy1hY2Nlc3NpYmxlLTEu YzogTmV3IHRlc3QuCgkqIHRlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vdGFyZ2V0LWlzLWFj Y2Vzc2libGUtMS5mOTA6IE5ldyB0ZXN0LgoKZGlmZiAtLWdpdCBhL2djYy9vbXAtbG93LmNj IGIvZ2NjL29tcC1sb3cuY2MKaW5kZXggNzcxNzZlZi4uYmYzOGZhZCAxMDA2NDQKLS0tIGEv Z2NjL29tcC1sb3cuY2MKKysrIGIvZ2NjL29tcC1sb3cuY2MKQEAgLTM5NTksNiArMzk1OSw3 IEBAIG9tcF9ydW50aW1lX2FwaV9jYWxsIChjb25zdF90cmVlIGZuZGVjbCkKICAgICAgICJ0 YXJnZXRfYXNzb2NpYXRlX3B0ciIsCiAgICAgICAidGFyZ2V0X2Rpc2Fzc29jaWF0ZV9wdHIi LAogICAgICAgInRhcmdldF9mcmVlIiwKKyAgICAgICJ0YXJnZXRfaXNfYWNjZXNzaWJsZSIs CiAgICAgICAidGFyZ2V0X2lzX3ByZXNlbnQiLAogICAgICAgInRhcmdldF9tZW1jcHkiLAog ICAgICAgInRhcmdldF9tZW1jcHlfcmVjdCIsCmRpZmYgLS1naXQgYS9saWJnb21wL2xpYmdv bXAubWFwIGIvbGliZ29tcC9saWJnb21wLm1hcAppbmRleCAyYWM1ODA5Li4xNzY0MzgwIDEw MDY0NAotLS0gYS9saWJnb21wL2xpYmdvbXAubWFwCisrKyBiL2xpYmdvbXAvbGliZ29tcC5t YXAKQEAgLTIyNiw2ICsyMjYsMTEgQEAgT01QXzUuMSB7CiAJb21wX2dldF90ZWFtc190aHJl YWRfbGltaXRfOwogfSBPTVBfNS4wLjI7CiAKK09NUF81LjEuMSB7CisgIGdsb2JhbDoKKwlv bXBfdGFyZ2V0X2lzX2FjY2Vzc2libGU7Cit9IE9NUF81LjE7CisKIEdPTVBfMS4wIHsKICAg Z2xvYmFsOgogCUdPTVBfYXRvbWljX2VuZDsKZGlmZiAtLWdpdCBhL2xpYmdvbXAvbGliZ29t cC50ZXhpIGIvbGliZ29tcC9saWJnb21wLnRleGkKaW5kZXggMTYxYTQyMy4uNThlNDMyYyAx MDA2NDQKLS0tIGEvbGliZ29tcC9saWJnb21wLnRleGkKKysrIGIvbGliZ29tcC9saWJnb21w LnRleGkKQEAgLTMxMSw3ICszMTEsNyBAQCBUaGUgT3Blbk1QIDQuNSBzcGVjaWZpY2F0aW9u IGlzIGZ1bGx5IHN1cHBvcnRlZC4KIEBpdGVtIEBjb2Rle29tcF9zZXRfbnVtX3RlYW1zfSwg QGNvZGV7b21wX3NldF90ZWFtc190aHJlYWRfbGltaXR9LAogICAgICAgQGNvZGV7b21wX2dl dF9tYXhfdGVhbXN9LCBAY29kZXtvbXBfZ2V0X3RlYW1zX3RocmVhZF9saW1pdH0gcnVudGlt ZQogICAgICAgcm91dGluZXMgQHRhYiBZIEB0YWIKLUBpdGVtIEBjb2Rle29tcF90YXJnZXRf aXNfYWNjZXNzaWJsZX0gcnVudGltZSByb3V0aW5lIEB0YWIgTiBAdGFiCitAaXRlbSBAY29k ZXtvbXBfdGFyZ2V0X2lzX2FjY2Vzc2libGV9IHJ1bnRpbWUgcm91dGluZSBAdGFiIFkgQHRh YgogQGl0ZW0gQGNvZGV7b21wX3RhcmdldF9tZW1jcHlfYXN5bmN9IGFuZCBAY29kZXtvbXBf dGFyZ2V0X21lbWNweV9yZWN0X2FzeW5jfQogICAgICAgcnVudGltZSByb3V0aW5lcyBAdGFi IE4gQHRhYgogQGl0ZW0gQGNvZGV7b21wX2dldF9tYXBwZWRfcHRyfSBydW50aW1lIHJvdXRp bmUgQHRhYiBOIEB0YWIKZGlmZiAtLWdpdCBhL2xpYmdvbXAvb21wLmguaW4gYi9saWJnb21w L29tcC5oLmluCmluZGV4IDg5YzVkNjUuLjFlYzc0MTUgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAv b21wLmguaW4KKysrIGIvbGliZ29tcC9vbXAuaC5pbgpAQCAtMjgyLDYgKzI4Miw4IEBAIGV4 dGVybiBpbnQgb21wX3RhcmdldF9tZW1jcHlfcmVjdCAodm9pZCAqLCBjb25zdCB2b2lkICos IF9fU0laRV9UWVBFX18sIGludCwKIGV4dGVybiBpbnQgb21wX3RhcmdldF9hc3NvY2lhdGVf cHRyIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgX19TSVpFX1RZUEVfXywKIAkJCQkg ICAgIF9fU0laRV9UWVBFX18sIGludCkgX19HT01QX05PVEhST1c7CiBleHRlcm4gaW50IG9t cF90YXJnZXRfZGlzYXNzb2NpYXRlX3B0ciAoY29uc3Qgdm9pZCAqLCBpbnQpIF9fR09NUF9O T1RIUk9XOworZXh0ZXJuIGludCBvbXBfdGFyZ2V0X2lzX2FjY2Vzc2libGUgKGNvbnN0IHZv aWQgKiwgX19TSVpFX1RZUEVfXywgaW50KQorICBfX0dPTVBfTk9USFJPVzsKIAogZXh0ZXJu IHZvaWQgb21wX3NldF9hZmZpbml0eV9mb3JtYXQgKGNvbnN0IGNoYXIgKikgX19HT01QX05P VEhST1c7CiBleHRlcm4gX19TSVpFX1RZUEVfXyBvbXBfZ2V0X2FmZmluaXR5X2Zvcm1hdCAo Y2hhciAqLCBfX1NJWkVfVFlQRV9fKQpkaWZmIC0tZ2l0IGEvbGliZ29tcC9vbXBfbGliLmY5 MC5pbiBiL2xpYmdvbXAvb21wX2xpYi5mOTAuaW4KaW5kZXggZGFmNDBkYy4uZjM2OTUwNyAx MDA2NDQKLS0tIGEvbGliZ29tcC9vbXBfbGliLmY5MC5pbgorKysgYi9saWJnb21wL29tcF9s aWIuZjkwLmluCkBAIC04MzUsNiArODM1LDE2IEBACiAgICAgICAgICAgZW5kIGZ1bmN0aW9u IG9tcF90YXJnZXRfZGlzYXNzb2NpYXRlX3B0cgogICAgICAgICBlbmQgaW50ZXJmYWNlCiAK KyAgICAgICAgaW50ZXJmYWNlCisgICAgICAgICAgZnVuY3Rpb24gb21wX3RhcmdldF9pc19h Y2Nlc3NpYmxlIChwdHIsIHNpemUsIGRldmljZV9udW0pIGJpbmQoYykKKyAgICAgICAgICAg IHVzZSwgaW50cmluc2ljIDo6IGlzb19jX2JpbmRpbmcsIG9ubHkgOiBjX3B0ciwgY19zaXpl X3QsIGNfaW50CisgICAgICAgICAgICBpbnRlZ2VyKGNfaW50KSA6OiBvbXBfdGFyZ2V0X2lz X2FjY2Vzc2libGUKKyAgICAgICAgICAgIHR5cGUoY19wdHIpLCB2YWx1ZSA6OiBwdHIKKyAg ICAgICAgICAgIGludGVnZXIoY19zaXplX3QpLCB2YWx1ZSA6OiBzaXplCisgICAgICAgICAg ICBpbnRlZ2VyKGNfaW50KSwgdmFsdWUgOjogZGV2aWNlX251bQorICAgICAgICAgIGVuZCBm dW5jdGlvbiBvbXBfdGFyZ2V0X2lzX2FjY2Vzc2libGUKKyAgICAgICAgZW5kIGludGVyZmFj ZQorCiAjaWYgX09QRU5NUCA+PSAyMDE4MTEKICFHQ0MkIEFUVFJJQlVURVMgREVQUkVDQVRF RCA6OiBvbXBfZ2V0X25lc3RlZCwgb21wX3NldF9uZXN0ZWQKICNlbmRpZgpkaWZmIC0tZ2l0 IGEvbGliZ29tcC9vbXBfbGliLmguaW4gYi9saWJnb21wL29tcF9saWIuaC5pbgppbmRleCBm Zjg1N2E0Li41ZWEwMzY2IDEwMDY0NAotLS0gYS9saWJnb21wL29tcF9saWIuaC5pbgorKysg Yi9saWJnb21wL29tcF9saWIuaC5pbgpAQCAtNDE2LDMgKzQxNiwxNCBAQAogICAgICAgICAg IGludGVnZXIoY19pbnQpLCB2YWx1ZSA6OiBkZXZpY2VfbnVtCiAgICAgICAgIGVuZCBmdW5j dGlvbiBvbXBfdGFyZ2V0X2Rpc2Fzc29jaWF0ZV9wdHIKICAgICAgIGVuZCBpbnRlcmZhY2UK KworICAgICAgaW50ZXJmYWNlCisgICAgICAgIGZ1bmN0aW9uIG9tcF90YXJnZXRfaXNfYWNj ZXNzaWJsZSAocHRyLCBzaXplLCBkZXZpY2VfbnVtKSAgICAgICAgICAmCisgICAgICYgICAg ICBiaW5kKGMpCisgICAgICAgICAgdXNlLCBpbnRyaW5zaWMgOjogaXNvX2NfYmluZGluZywg b25seSA6IGNfcHRyLCBjX3NpemVfdCwgY19pbnQKKyAgICAgICAgICBpbnRlZ2VyKGNfaW50 KSA6OiBvbXBfdGFyZ2V0X2lzX2FjY2Vzc2libGUKKyAgICAgICAgICB0eXBlKGNfcHRyKSwg dmFsdWUgOjogcHRyCisgICAgICAgICAgaW50ZWdlcihjX3NpemVfdCksIHZhbHVlIDo6IHNp emUKKyAgICAgICAgICBpbnRlZ2VyKGNfaW50KSwgdmFsdWUgOjogZGV2aWNlX251bQorICAg ICAgICBlbmQgZnVuY3Rpb24gb21wX3RhcmdldF9pc19hY2Nlc3NpYmxlCisgICAgICBlbmQg aW50ZXJmYWNlCmRpZmYgLS1naXQgYS9saWJnb21wL3RhcmdldC5jIGIvbGliZ29tcC90YXJn ZXQuYwppbmRleCA5MDE3NDU4Li4wMWQzNmQxIDEwMDY0NAotLS0gYS9saWJnb21wL3Rhcmdl dC5jCisrKyBiL2xpYmdvbXAvdGFyZ2V0LmMKQEAgLTM2NjYsNiArMzY2NiwyNCBAQCBvbXBf dGFyZ2V0X2Rpc2Fzc29jaWF0ZV9wdHIgKGNvbnN0IHZvaWQgKnB0ciwgaW50IGRldmljZV9u dW0pCiB9CiAKIGludAorb21wX3RhcmdldF9pc19hY2Nlc3NpYmxlIChjb25zdCB2b2lkICpw dHIsIHNpemVfdCBzaXplLCBpbnQgZGV2aWNlX251bSkKK3sKKyAgaWYgKGRldmljZV9udW0g PCAwIHx8IGRldmljZV9udW0gPiBnb21wX2dldF9udW1fZGV2aWNlcyAoKSkKKyAgICByZXR1 cm4gZmFsc2U7CisKKyAgaWYgKGRldmljZV9udW0gPT0gZ29tcF9nZXRfbnVtX2RldmljZXMg KCkpCisgICAgcmV0dXJuIHRydWU7CisKKyAgc3RydWN0IGdvbXBfZGV2aWNlX2Rlc2NyICpk ZXZpY2VwID0gcmVzb2x2ZV9kZXZpY2UgKGRldmljZV9udW0pOworICBpZiAoZGV2aWNlcCA9 PSBOVUxMKQorICAgIHJldHVybiBmYWxzZTsKKworICAvKiBUT0RPOiBVbmlmaWVkIHNoYXJl ZCBtZW1vcnkgbXVzdCBiZSBoYW5kbGVkIHdoZW4gYXZhaWxhYmxlLiAgKi8KKworICByZXR1 cm4gZGV2aWNlcC0+Y2FwYWJpbGl0aWVzICYgR09NUF9PRkZMT0FEX0NBUF9TSEFSRURfTUVN OworfQorCitpbnQKIG9tcF9wYXVzZV9yZXNvdXJjZSAob21wX3BhdXNlX3Jlc291cmNlX3Qg a2luZCwgaW50IGRldmljZV9udW0pCiB7CiAgICh2b2lkKSBraW5kOwpkaWZmIC0tZ2l0IGEv bGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vdGFyZ2V0LWlzLWFjY2Vz c2libGUtMS5jIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vdGFy Z2V0LWlzLWFjY2Vzc2libGUtMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjdjMmNmNjIKLS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJn b21wLmMtYysrLWNvbW1vbi90YXJnZXQtaXMtYWNjZXNzaWJsZS0xLmMKQEAgLTAsMCArMSw0 NyBAQAorI2luY2x1ZGUgPG9tcC5oPgorCitpbnQKK21haW4gKCkKK3sKKyAgaW50IGQgPSBv bXBfZ2V0X2RlZmF1bHRfZGV2aWNlICgpOworICBpbnQgaWQgPSBvbXBfZ2V0X2luaXRpYWxf ZGV2aWNlICgpOworICBpbnQgbiA9IG9tcF9nZXRfbnVtX2RldmljZXMgKCk7CisgIHZvaWQg KnA7CisKKyAgaWYgKGQgPCAwIHx8IGQgPj0gbikKKyAgICBkID0gaWQ7CisKKyAgaWYgKCFv bXBfdGFyZ2V0X2lzX2FjY2Vzc2libGUgKHAsIHNpemVvZiAoaW50KSwgbikpCisgICAgX19i dWlsdGluX2Fib3J0ICgpOworCisgIGlmICghb21wX3RhcmdldF9pc19hY2Nlc3NpYmxlIChw LCBzaXplb2YgKGludCksIGlkKSkKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7CisKKyAgaWYg KG9tcF90YXJnZXRfaXNfYWNjZXNzaWJsZSAocCwgc2l6ZW9mIChpbnQpLCAtMSkpCisgICAg X19idWlsdGluX2Fib3J0ICgpOworCisgIGlmIChvbXBfdGFyZ2V0X2lzX2FjY2Vzc2libGUg KHAsIHNpemVvZiAoaW50KSwgbiArIDEpKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKwor ICAvKiBDdXJyZW50bHksIGEgaG9zdCBwb2ludGVyIGlzIGFjY2Vzc2libGUgaWYgdGhlIGRl dmljZSBzdXBwb3J0cyBzaGFyZWQKKyAgICAgbWVtb3J5IG9yIG9tcF90YXJnZXRfaXNfYWNj ZXNzaWJsZSBpcyBleGVjdXRlZCBvbiB0aGUgaG9zdC4gVGhpcworICAgICB0ZXN0IGNhc2Ug bXVzdCBiZSBhZGFwdGVkIHdoZW4gdW5pZmllZCBzaGFyZWQgbWVtb3J5IGlzIGF2aWFsYWJs ZS4gICovCisgIGludCBhWzEyOF07CisgIGZvciAoaW50IGQgPSAwOyBkIDw9IG9tcF9nZXRf bnVtX2RldmljZXMgKCk7IGQrKykKKyAgICB7CisgICAgICBpbnQgc2hhcmVkX21lbSA9IDA7 CisgICAgICAjcHJhZ21hIG9tcCB0YXJnZXQgbWFwIChhbGxvYzogc2hhcmVkX21lbSkgZGV2 aWNlIChkKQorCXNoYXJlZF9tZW0gPSAxOworICAgICAgaWYgKG9tcF90YXJnZXRfaXNfYWNj ZXNzaWJsZSAocCwgc2l6ZW9mIChpbnQpLCBkKSAhPSBzaGFyZWRfbWVtKQorCV9fYnVpbHRp bl9hYm9ydCAoKTsKKworICAgICAgaWYgKG9tcF90YXJnZXRfaXNfYWNjZXNzaWJsZSAoYSwg MTI4ICogc2l6ZW9mIChpbnQpLCBkKSAhPSBzaGFyZWRfbWVtKQorCV9fYnVpbHRpbl9hYm9y dCAoKTsKKworICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMjg7IGkrKykKKwlpZiAob21w X3RhcmdldF9pc19hY2Nlc3NpYmxlICgmYVtpXSwgc2l6ZW9mIChpbnQpLCBkKSAhPSBzaGFy ZWRfbWVtKQorCSAgX19idWlsdGluX2Fib3J0ICgpOworICAgIH0KKworICByZXR1cm4gMDsK K30KZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi90YXJn ZXQtaXMtYWNjZXNzaWJsZS0xLmY5MCBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9y dHJhbi90YXJnZXQtaXMtYWNjZXNzaWJsZS0xLmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4yNjExODU1Ci0tLSAvZGV2L251bGwKKysrIGIvbGliZ29tcC90ZXN0 c3VpdGUvbGliZ29tcC5mb3J0cmFuL3RhcmdldC1pcy1hY2Nlc3NpYmxlLTEuZjkwCkBAIC0w LDAgKzEsNTAgQEAKK3Byb2dyYW0gbWFpbgorICB1c2Ugb21wX2xpYgorICB1c2UgaXNvX2Nf YmluZGluZworICBpbXBsaWNpdCBub25lIChleHRlcm5hbCwgdHlwZSkKKyAgaW50ZWdlciA6 OiBkLCBpZCwgbiwgc2hhcmVkX21lbSwgaQorICBpbnRlZ2VyLCB0YXJnZXQgOjogYSgxOjEy OCkKKyAgdHlwZShjX3B0cikgOjogcAorCisgIGQgPSBvbXBfZ2V0X2RlZmF1bHRfZGV2aWNl ICgpCisgIGlkID0gb21wX2dldF9pbml0aWFsX2RldmljZSAoKQorICBuID0gb21wX2dldF9u dW1fZGV2aWNlcyAoKQorCisgIGlmIChkIDwgMCAub3IuIGQgPj0gbikgJgorICAgIGQgPSBp ZAorCisgIGlmIChvbXBfdGFyZ2V0X2lzX2FjY2Vzc2libGUgKHAsIGNfc2l6ZW9mIChkKSwg bikgLz0gMSkgJgorICAgIHN0b3AgMQorCisgIGlmIChvbXBfdGFyZ2V0X2lzX2FjY2Vzc2li bGUgKHAsIGNfc2l6ZW9mIChkKSwgaWQpIC89IDEpICYKKyAgICBzdG9wIDIKKworICBpZiAo b21wX3RhcmdldF9pc19hY2Nlc3NpYmxlIChwLCBjX3NpemVvZiAoZCksIC0xKSAvPSAwKSAm CisgICAgc3RvcCAzCisKKyAgaWYgKG9tcF90YXJnZXRfaXNfYWNjZXNzaWJsZSAocCwgY19z aXplb2YgKGQpLCBuICsgMSkgLz0gMCkgJgorICAgIHN0b3AgNAorCisgICEgQ3VycmVudGx5 LCBhIGhvc3QgcG9pbnRlciBpcyBhY2Nlc3NpYmxlIGlmIHRoZSBkZXZpY2Ugc3VwcG9ydHMg c2hhcmVkCisgICEgbWVtb3J5IG9yIG9tcF90YXJnZXRfaXNfYWNjZXNzaWJsZSBpcyBleGVj dXRlZCBvbiB0aGUgaG9zdC4gVGhpcworICAhIHRlc3QgY2FzZSBtdXN0IGJlIGFkYXB0ZWQg d2hlbiB1bmlmaWVkIHNoYXJlZCBtZW1vcnkgaXMgYXZpYWxhYmxlLgorICBkbyBkID0gMCwg b21wX2dldF9udW1fZGV2aWNlcyAoKQorICAgIHNoYXJlZF9tZW0gPSAwOworICAgICEkb21w IHRhcmdldCBtYXAgKGFsbG9jOiBzaGFyZWRfbWVtKSBkZXZpY2UgKGQpCisgICAgICBzaGFy ZWRfbWVtID0gMTsKKyAgICAhJG9tcCBlbmQgdGFyZ2V0CisKKyAgICBpZiAob21wX3Rhcmdl dF9pc19hY2Nlc3NpYmxlIChwLCBjX3NpemVvZiAoZCksIGQpIC89IHNoYXJlZF9tZW0pICYK KyAgICAgIHN0b3AgNTsKKworICAgIGlmIChvbXBfdGFyZ2V0X2lzX2FjY2Vzc2libGUgKGNf bG9jIChhKSwgMTI4ICogc2l6ZW9mIChhKDEpKSwgZCkgLz0gc2hhcmVkX21lbSkgJgorICAg ICAgc3RvcCA2OworCisgICAgZG8gaSA9IDEsIDEyOAorICAgICAgaWYgKG9tcF90YXJnZXRf aXNfYWNjZXNzaWJsZSAoY19sb2MgKGEoaSkpLCBzaXplb2YgKGEoaSkpLCBkKSAvPSBzaGFy ZWRfbWVtKSAmCisgICAgICAgIHN0b3AgNzsKKyAgICBlbmQgZG8KKworICBlbmQgZG8KKwor ZW5kIHByb2dyYW0gbWFpbgo= --------------yydJ0RwNFa0alUKjQm3hue7D--