From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v4 3/4] x86/mm: handle foreign mappings in p2m_entry_modify Date: Mon, 18 Feb 2019 18:27:26 +0100 Message-ID: <20190218172727.19644-4-roger.pau@citrix.com> References: <20190218172727.19644-1-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gvmhz-0001gk-LI for xen-devel@lists.xenproject.org; Mon, 18 Feb 2019 17:27:59 +0000 In-Reply-To: <20190218172727.19644-1-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Kevin Tian , Wei Liu , Jan Beulich , George Dunlap , Andrew Cooper , Tim Deegan , Jun Nakajima , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org U28gdGhhdCB0aGUgc3BlY2lmaWMgaGFuZGxpbmcgY2FuIGJlIHJlbW92ZWQgZnJvbQphdG9taWNf d3JpdGVfZXB0X2VudHJ5IGFuZCBiZSBzaGFyZWQgd2l0aCBucHQgYW5kIHNoYWRvdyBjb2RlLgoK VGhpcyBjb21taXQgYWxzbyByZW1vdmVzIHRoZSBjaGVjayB0aGF0IHByZXZlbnQgbm9uLWVwdCBQ VkggZG9tMCBmcm9tCm1hcHBpbmcgZm9yZWlnbiBwYWdlcy4KClNpZ25lZC1vZmYtYnk6IFJvZ2Vy IFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgotLS0KQ2M6IEdlb3JnZSBEdW5sYXAg PGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBz dXNlLmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNj OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgpDYzogSnVuIE5ha2FqaW1hIDxqdW4ubmFr YWppbWFAaW50ZWwuY29tPgpDYzogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+CkNj OiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9yZz4KLS0tCkNoYW5nZXMgc2luY2UgdjM6CiAtIFJlcGxh Y2UgdGhlIG1mbl92YWxpZCBCVUdfT05zIHdpdGggYW4gYXNzZXJ0ICYgcmV0dXJuLgoKQ2hhbmdl cyBzaW5jZSB2MjoKIC0gUmV0dXJuIGFuIGVycm9yIGNvZGUgZnJvbSBwMm1fZW50cnlfbW9kaWZ5 IGFuZCBwcm9wYWdhdGUgaXQgdG8gdGhlCiAgIGNhbGxlcnMuCgpDaGFuZ2VzIHNpbmNlIHYxOgog LSBTaW1wbHkgY29kZSBzaW5jZSBtZm5fdG9fcGFnZSBjYW5ub3QgcmV0dXJuIE5VTEwuCiAtIENo ZWNrIGlmIHRoZSBtZm4gaXMgdmFsaWQgYmVmb3JlIGdldHRpbmcvZHJvcHBpbmcgdGhlIHBhZ2Ug cmVmZXJlbmNlLgogLSBVc2UgQlVHX09OIGluc3RlYWQgb2YgQVNTRVJUcywgc2luY2UgZ2V0dGlu ZyB0aGUgcmVmZXJlbmNlIGNvdW50aW5nCiAgIHdyb25nIGlzIG1vcmUgZGFuZ2Vyb3VzIHRoYW4g YSBEb1MuCi0tLQogeGVuL2FyY2gveDg2L21tL2hhcC9oYXAuYyAgICAgICB8IDEyICsrKysrLS0K IHhlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMgICAgICAgfCA1NiArKystLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYyAgICAgICAgfCAgNyAtLS0t LQogeGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYyB8ICAzICstCiB4ZW4vaW5jbHVkZS9h c20teDg2L3AybS5oICAgICAgIHwgMzQgKysrKysrKysrKysrKysrKystLS0KIDUgZmlsZXMgY2hh bmdlZCwgNDcgaW5zZXJ0aW9ucygrKSwgNjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L21tL2hhcC9oYXAuYyBiL3hlbi9hcmNoL3g4Ni9tbS9oYXAvaGFwLmMKaW5kZXgg NWI1MDczNzZiYy4uMmRhZjg0MjRmNiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL2hhcC9o YXAuYworKysgYi94ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5jCkBAIC03MTQsNiArNzE0LDcgQEAg aGFwX3dyaXRlX3AybV9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwg bDFfcGdlbnRyeV90ICpwLAogewogICAgIHVpbnQzMl90IG9sZF9mbGFnczsKICAgICBib29sX3Qg Zmx1c2hfbmVzdGVkcDJtID0gMDsKKyAgICBpbnQgcmM7CiAKICAgICAvKiBXZSBrbm93IGFsd2F5 cyB1c2UgdGhlIGhvc3QgcDJtIGhlcmUsIHJlZ2FyZGxlc3MgaWYgdGhlIHZjcHUKICAgICAgKiBp cyBpbiBob3N0IG9yIGd1ZXN0IG1vZGUuIFRoZSB2Y3B1IGNhbiBiZSBpbiBndWVzdCBtb2RlIGJ5 CkBAIC03MzQsOCArNzM1LDE1IEBAIGhhcF93cml0ZV9wMm1fZW50cnkoc3RydWN0IGRvbWFpbiAq ZCwgdW5zaWduZWQgbG9uZyBnZm4sIGwxX3BnZW50cnlfdCAqcCwKICAgICAgICAgICAgICYmIHBl cm1zX3N0cmljdGx5X2luY3JlYXNlZChvbGRfZmxhZ3MsIGwxZV9nZXRfZmxhZ3MobmV3KSkgKTsK ICAgICB9CiAKLSAgICBwMm1fZW50cnlfbW9kaWZ5KHAybV9nZXRfaG9zdHAybShkKSwgcDJtX2Zs YWdzX3RvX3R5cGUobDFlX2dldF9mbGFncyhuZXcpKSwKLSAgICAgICAgICAgICAgICAgICAgIHAy bV9mbGFnc190b190eXBlKG9sZF9mbGFncyksIGxldmVsKTsKKyAgICByYyA9IHAybV9lbnRyeV9t b2RpZnkocDJtX2dldF9ob3N0cDJtKGQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1f ZmxhZ3NfdG9fdHlwZShsMWVfZ2V0X2ZsYWdzKG5ldykpLAorICAgICAgICAgICAgICAgICAgICAg ICAgICBwMm1fZmxhZ3NfdG9fdHlwZShvbGRfZmxhZ3MpLCBsMWVfZ2V0X21mbihuZXcpLAorICAg ICAgICAgICAgICAgICAgICAgICAgICBsMWVfZ2V0X21mbigqcCksIGxldmVsKTsKKyAgICBpZiAo IHJjICkKKyAgICB7CisgICAgICAgIHBhZ2luZ191bmxvY2soZCk7CisgICAgICAgIHJldHVybiBy YzsKKyAgICB9CiAKICAgICBzYWZlX3dyaXRlX3B0ZShwLCBuZXcpOwogICAgIGlmICggb2xkX2Zs YWdzICYgX1BBR0VfUFJFU0VOVCApCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLWVw dC5jIGIveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYwppbmRleCAwZWNlNjYwOGNiLi44M2JkNjAy ZmM0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCisrKyBiL3hlbi9hcmNo L3g4Ni9tbS9wMm0tZXB0LmMKQEAgLTQ1LDY1ICs0NSwxOSBAQCBzdGF0aWMgaW5saW5lIGJvb2xf dCBpc19lcHRlX3ZhbGlkKGVwdF9lbnRyeV90ICplKQogICAgIHJldHVybiAoKGUtPmVwdGUgJiB+ KDF1bCA8PCA2MykpICE9IDAgJiYgZS0+c2FfcDJtdCAhPSBwMm1faW52YWxpZCk7CiB9CiAKLS8q IHJldHVybnMgOiAwIGZvciBzdWNjZXNzLCAtZXJybm8gb3RoZXJ3aXNlICovCiBzdGF0aWMgaW50 IGF0b21pY193cml0ZV9lcHRfZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBlcHRfZW50cnlfdCAqZW50cnlwdHIsIGVwdF9lbnRy eV90IG5ldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWwpCiB7 Ci0gICAgaW50IHJjOwotICAgIHVuc2lnbmVkIGxvbmcgb2xkbWZuID0gbWZuX3goSU5WQUxJRF9N Rk4pOwotICAgIGJvb2xfdCBjaGVja19mb3JlaWduID0gKG5ldy5tZm4gIT0gZW50cnlwdHItPm1m biB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldy5zYV9wMm10ICE9IGVudHJ5cHRy LT5zYV9wMm10KTsKLQotICAgIGlmICggbGV2ZWwgKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFp c19lcHRlX3N1cGVycGFnZSgmbmV3KSB8fCAhcDJtX2lzX2ZvcmVpZ24obmV3LnNhX3AybXQpKTsK LSAgICAgICAgd3JpdGVfYXRvbWljKCZlbnRyeXB0ci0+ZXB0ZSwgbmV3LmVwdGUpOwotICAgICAg ICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoIHVubGlrZWx5KHAybV9pc19mb3JlaWduKG5l dy5zYV9wMm10KSkgKQotICAgIHsKLSAgICAgICAgcmMgPSAtRUlOVkFMOwotICAgICAgICBpZiAo ICFpc19lcHRlX3ByZXNlbnQoJm5ldykgKQotICAgICAgICAgICAgICAgIGdvdG8gb3V0OwotCi0g ICAgICAgIGlmICggY2hlY2tfZm9yZWlnbiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cnVj dCBkb21haW4gKmZkb207Ci0KLSAgICAgICAgICAgIGlmICggIW1mbl92YWxpZChfbWZuKG5ldy5t Zm4pKSApCi0gICAgICAgICAgICAgICAgZ290byBvdXQ7Ci0KLSAgICAgICAgICAgIHJjID0gLUVT UkNIOwotICAgICAgICAgICAgZmRvbSA9IHBhZ2VfZ2V0X293bmVyKG1mbl90b19wYWdlKF9tZm4o bmV3Lm1mbikpKTsKLSAgICAgICAgICAgIGlmICggZmRvbSA9PSBOVUxMICkKLSAgICAgICAgICAg ICAgICBnb3RvIG91dDsKKyAgICBpbnQgcmMgPSBwMm1fZW50cnlfbW9kaWZ5KHAybSwgbmV3LnNh X3AybXQsIGVudHJ5cHRyLT5zYV9wMm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg X21mbihuZXcubWZuKSwgX21mbihlbnRyeXB0ci0+bWZuKSwgbGV2ZWwpOwogCi0gICAgICAgICAg ICAvKiBnZXQgcmVmY291bnQgb24gdGhlIHBhZ2UgKi8KLSAgICAgICAgICAgIHJjID0gLUVCVVNZ OwotICAgICAgICAgICAgaWYgKCAhZ2V0X3BhZ2UobWZuX3RvX3BhZ2UoX21mbihuZXcubWZuKSks IGZkb20pICkKLSAgICAgICAgICAgICAgICBnb3RvIG91dDsKLSAgICAgICAgfQotICAgIH0KLQot ICAgIGlmICggdW5saWtlbHkocDJtX2lzX2ZvcmVpZ24oZW50cnlwdHItPnNhX3AybXQpKSAmJiBj aGVja19mb3JlaWduICkKLSAgICAgICAgb2xkbWZuID0gZW50cnlwdHItPm1mbjsKLQotICAgIHAy bV9lbnRyeV9tb2RpZnkocDJtLCBuZXcuc2FfcDJtdCwgZW50cnlwdHItPnNhX3AybXQsIGxldmVs KTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgcmV0dXJuIHJjOwogCiAgICAgd3JpdGVfYXRvbWlj KCZlbnRyeXB0ci0+ZXB0ZSwgbmV3LmVwdGUpOwogCi0gICAgaWYgKCB1bmxpa2VseShvbGRtZm4g IT0gbWZuX3goSU5WQUxJRF9NRk4pKSApCi0gICAgICAgIHB1dF9wYWdlKG1mbl90b19wYWdlKF9t Zm4ob2xkbWZuKSkpOwotCi0gICAgcmMgPSAwOwotCi0gb3V0OgotICAgIGlmICggcmMgKQotICAg ICAgICBnZHByaW50ayhYRU5MT0dfRVJSLCAiZXB0ZSBvOiUiUFJJeDY0IiBuOiUiUFJJeDY0IiBy YzolZFxuIiwKLSAgICAgICAgICAgICAgICAgZW50cnlwdHItPmVwdGUsIG5ldy5lcHRlLCByYyk7 Ci0gICAgcmV0dXJuIHJjOworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZCBlcHRfcDJt X3R5cGVfdG9fZmxhZ3Moc3RydWN0IHAybV9kb21haW4gKnAybSwgZXB0X2VudHJ5X3QgKmVudHJ5 LApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS1wdC5jIGIveGVuL2FyY2gveDg2L21t L3AybS1wdC5jCmluZGV4IDNhOGRjMDRlZmMuLjU3YWZhMzdjNzEgMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL3g4Ni9tbS9wMm0tcHQuYworKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKQEAgLTU2 NCwxMyArNTY0LDYgQEAgcDJtX3B0X3NldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCBn Zm5fdCBnZm5fLCBtZm5fdCBtZm4sCiAgICAgICAgIF9fdHJhY2VfdmFyKFRSQ19NRU1fU0VUX1Ay TV9FTlRSWSwgMCwgc2l6ZW9mKHQpLCAmdCk7CiAgICAgfQogCi0gICAgaWYgKCB1bmxpa2VseShw Mm1faXNfZm9yZWlnbihwMm10KSkgKQotICAgIHsKLSAgICAgICAgLyogaHZtIGZpeG1lOiBmb3Jl aWduIHR5cGVzIGFyZSBvbmx5IHN1cHBvcnRlZCBvbiBlcHQgYXQgcHJlc2VudCAqLwotICAgICAg ICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgIlVuaW1wbGVtZW50ZWQgZm9yZWlnbiBwMm0gdHlw ZS5cbiIpOwotICAgICAgICByZXR1cm4gLUVJTlZBTDsKLSAgICB9Ci0KICAgICAvKiBDYXJyeSBv dXQgYW55IGV2ZW50dWFsbHkgcGVuZGluZyBlYXJsaWVyIGNoYW5nZXMgZmlyc3QuICovCiAgICAg cmMgPSBkb19yZWNhbGMocDJtLCBnZm4pOwogICAgIGlmICggcmMgPCAwICkKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93 L2NvbW1vbi5jCmluZGV4IGZlNDhjNGEwMmIuLmFkNjcwZGU1MTUgMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKKysrIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9j b21tb24uYwpAQCAtMzE4OSw3ICszMTg5LDggQEAgc2hhZG93X3dyaXRlX3AybV9lbnRyeShzdHJ1 Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKICAgICAgICAgIHNoX3Vuc2hhZG93X2Zv cl9wMm1fY2hhbmdlKGQsIGdmbiwgcCwgbmV3LCBsZXZlbCk7CiAKICAgICBwMm1fZW50cnlfbW9k aWZ5KHAybV9nZXRfaG9zdHAybShkKSwgcDJtX2ZsYWdzX3RvX3R5cGUobDFlX2dldF9mbGFncyhu ZXcpKSwKLSAgICAgICAgICAgICAgICAgICAgIHAybV9mbGFnc190b190eXBlKGwxZV9nZXRfZmxh Z3MoKnApKSwgbGV2ZWwpOworICAgICAgICAgICAgICAgICAgICAgcDJtX2ZsYWdzX3RvX3R5cGUo bDFlX2dldF9mbGFncygqcCkpLCBsMWVfZ2V0X21mbihuZXcpLAorICAgICAgICAgICAgICAgICAg ICAgbDFlX2dldF9tZm4oKnApLCBsZXZlbCk7CiAKICAgICAvKiBVcGRhdGUgdGhlIGVudHJ5IHdp dGggbmV3IGNvbnRlbnQgKi8KICAgICBzYWZlX3dyaXRlX3B0ZShwLCBuZXcpOwpkaWZmIC0tZ2l0 IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgK aW5kZXggZjRlYzJiZWNiZC4uMjgwMWE4Y2NjYSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9wMm0uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oCkBAIC05MzIsMTEgKzkz MiwxNCBAQCBpbnQgcDJtX3NldF9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgaW50IGZsYWdzLAogc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnAybV9nZXRfaW9yZXFfc2Vy dmVyKHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50ICpmbGFncyk7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBw Mm1fZW50cnlfbW9kaWZ5KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHAybV90eXBlX3QgbnQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fdHlwZV90IG90LCB1bnNpZ25l ZCBpbnQgbGV2ZWwpCitzdGF0aWMgaW5saW5lIGludCBwMm1fZW50cnlfbW9kaWZ5KHN0cnVjdCBw Mm1fZG9tYWluICpwMm0sIHAybV90eXBlX3QgbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHAybV90eXBlX3Qgb3QsIG1mbl90IG5mbiwgbWZuX3Qgb2ZuLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGV2ZWwpCiB7Ci0gICAgaWYg KCBsZXZlbCAhPSAxIHx8IG50ID09IG90ICkKLSAgICAgICAgcmV0dXJuOworICAgIEJVR19PTihs ZXZlbCA+IDEgJiYgKG50ID09IHAybV9pb3JlcV9zZXJ2ZXIgfHwgbnQgPT0gcDJtX21hcF9mb3Jl aWduKSk7CisKKyAgICBpZiAoIGxldmVsICE9IDEgfHwgKG50ID09IG90ICYmIG1mbl9lcShuZm4s IG9mbikpICkKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICBzd2l0Y2ggKCBudCApCiAgICAgewpA QCAtOTQ4LDYgKzk1MSwxOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcDJtX2VudHJ5X21vZGlmeShz dHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCBwMm1fdHlwZV90IG50LAogICAgICAgICBwMm0tPmlvcmVx LmVudHJ5X2NvdW50Kys7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBwMm1fbWFwX2ZvcmVp Z246CisgICAgICAgIGlmICggIW1mbl92YWxpZChuZm4pICkKKyAgICAgICAgeworICAgICAgICAg ICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAg ICAgICAgfQorCisgICAgICAgIGlmICggIXBhZ2VfZ2V0X293bmVyX2FuZF9yZWZlcmVuY2UobWZu X3RvX3BhZ2UobmZuKSkgKQorICAgICAgICAgICAgcmV0dXJuIC1FQlVTWTsKKworICAgICAgICBi cmVhazsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTk1OSw5ICs5 NzQsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIHAybV9lbnRyeV9tb2RpZnkoc3RydWN0IHAybV9k b21haW4gKnAybSwgcDJtX3R5cGVfdCBudCwKICAgICAgICAgcDJtLT5pb3JlcS5lbnRyeV9jb3Vu dC0tOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgcDJtX21hcF9mb3JlaWduOgorICAgICAg ICBpZiAoICFtZm5fdmFsaWQob2ZuKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVF9V TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAg ICAgICAgcHV0X3BhZ2UobWZuX3RvX3BhZ2Uob2ZuKSk7CisgICAgICAgIGJyZWFrOworCiAgICAg ZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgcmV0dXJuIDA7CiB9CiAKICNl bmRpZiAvKiBfWEVOX0FTTV9YODZfUDJNX0ggKi8KLS0gCjIuMTcuMiAoQXBwbGUgR2l0LTExMykK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs