From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2] x86/shadow: Correct guest behaviour when creating PTEs above maxphysaddr Date: Mon, 13 Feb 2017 11:00:04 +0000 Message-ID: <1486983604-21845-1-git-send-email-andrew.cooper3@citrix.com> References: <1486557378-30443-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1486557378-30443-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Kevin Tian , Jan Beulich , George Dunlap , Andrew Cooper , Tim Deegan , Jun Nakajima List-Id: xen-devel@lists.xenproject.org WFNBLTE3MyAoYy9zIDhiMTc2NDgzMykgaW50cm9kdWNlcyBnZm5fYml0cywgYW5kIGFuIHVwcGVy IGxpbWl0IHdoaWNoIG1pZ2h0IGJlCmxvd2VyIHRoYW4gdGhlIHJlYWwgbWF4cGh5c2FkZHIsIHRv IGF2b2lkIG92ZXJmbG93aW5nIHRoZSBzdXBlcnBhZ2Ugc2hhZG93CmJhY2twb2ludGVyLgoKSG93 ZXZlciwgcGxlbnR5IG9mIGhhcmR3YXJlIGhhcyBhIHBoeXNpY2FsIGFkZHJlc3Mgd2lkdGggbGVz cyB0aGF0IDQ0IGJpdHMsCmFuZCB0aGUgY29kZSBhZGRlZCBpbiBzaGFkb3dfZG9tYWluX2luaXQo KSBpcyBhIHN0cmFpZ2h0IGFzc2lnbm1lbnQuICBUaGlzCmNhdXNlcyBnZm5fYml0cyB0byBiZSBp bmNyZWFzZWQgYmV5b25kIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHdpZHRoIG9uIG1vc3QKSW50ZWwg Y29uc3VtZXIgaGFyZHdhcmUgKHR5cGljYWxseSBhIHdpZHRoIG9mIDM5LCB3aGljaCBpcyB0aGUg bnVtYmVyIHJlcG9ydGVkCnRvIHRoZSBndWVzdCB2aWEgQ1BVSUQpLgoKSWYgdGhlIGd1ZXN0IGlu dGVudGlvbmFsbHkgY3JlYXRlcyBhIFBURSByZWZlcmVuY2luZyBhIHBoeXNpY2FsIGFkZHJlc3MK YmV0d2VlbiAzOSBhbmQgNDQgYml0cywgdGhlIHJlc3VsdCBzaG91bGQgYmUgI1BGW1JTVkRdIGZv ciB1c2luZyB0aGUgdmlydHVhbAphZGRyZXNzLiAgSG93ZXZlciwgdGhlIHNoYWRvdyBjb2RlIGFj Y2VwdHMgdGhlIFBURSwgc2hhZG93cyBpdCwgYW5kIHRoZQp2aXJ0dWFsIGFkZHJlc3Mgd29ya3Mg bm9ybWFsbHkuCgpJbnRyb2R1Y2UgcGFnaW5nX21heF9wYWRkcl9iaXRzKCkgdG8gY2FsY3VsYXRl IHRoZSBsYXJnZXN0IGd1ZXN0IHBoeXNpY2FsCmFkZHJlc3Mgc3VwcG9ydGFibGUgYnkgdGhlIHBh Z2luZyBpbmZyYXN0cnVjdHVyZSwgYW5kIHVwZGF0ZQpyZWNhbGN1bGF0ZV9jcHVpZF9wb2xpY3ko KSB0byB0YWtlIHRoaXMgaW50byBhY2NvdW50IHdoZW4gY2xhbXBpbmcgdGhlIGd1ZXN0cwpjcHVp ZF9wb2xpY3kgdG8gcmVhbGl0eS4gIFJlbW92ZSBnZm5fYml0cyBhbmQgcmV3b3JrIGl0cyB1c2Vy cyBpbiB0ZXJtcyBvZiBhCmd1ZXN0cyBtYXhwaHlzYWRkci4KClNpZ25lZC1vZmYtYnk6IEFuZHJl dyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Ci0tLQpDQzogSmFuIEJldWxpY2gg PEpCZXVsaWNoQHN1c2UuY29tPgpDQzogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+CkNDOiBHZW9y Z2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGV1LmNpdHJpeC5jb20+CkNDOiBKdW4gTmFrYWppbWEg PGp1bi5uYWthamltYUBpbnRlbC5jb20+CkNDOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVs LmNvbT4KCnYyOgogKiBJbnRyb2R1Y2UgcGFnaW5nX21heF9wYWRkcl9iaXRzKCkgcmF0aGVyIHRo YW4gbW92aW5nIHBhZ2luZyBsb2dpYyBpbnRvCiAgIHJlY2FsY3VsYXRlX2NwdWlkX3BvbGljeSgp LgogKiBSZXdyaXRlIGhhbGYgb2YgdGhlIGNvbW1pdCBtZXNzYWdlLgotLS0KIHhlbi9hcmNoL3g4 Ni9jcHVpZC5jICAgICAgICAgICAgfCAgNyArKystLS0tCiB4ZW4vYXJjaC94ODYvaHZtL3ZteC92 dm14LmMgICAgIHwgIDIgKy0KIHhlbi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMgICAgfCAgMyAr Ky0KIHhlbi9hcmNoL3g4Ni9tbS9oYXAvaGFwLmMgICAgICAgfCAgMiAtLQogeGVuL2FyY2gveDg2 L21tL3AybS5jICAgICAgICAgICB8ICAzICsrLQogeGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21t b24uYyB8IDEwIC0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYyAgfCAg MyArKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmggICAgfCAgMyAtLS0KIHhlbi9pbmNs dWRlL2FzbS14ODYvcGFnaW5nLmggICAgfCAxNiArKysrKysrKysrKysrKysrCiA5IGZpbGVzIGNo YW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9jcHVpZC5jIGIveGVuL2FyY2gveDg2L2NwdWlkLmMKaW5kZXggZTBhMzg3ZS4u MzM3OGY3YSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdWlkLmMKKysrIGIveGVuL2FyY2gv eDg2L2NwdWlkLmMKQEAgLTYsNiArNiw3IEBACiAjaW5jbHVkZSA8YXNtL2h2bS9uZXN0ZWRodm0u aD4KICNpbmNsdWRlIDxhc20vaHZtL3N2bS9zdm0uaD4KICNpbmNsdWRlIDxhc20vaHZtL3ZteC92 bWNzLmg+CisjaW5jbHVkZSA8YXNtL3BhZ2luZy5oPgogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3Iu aD4KICNpbmNsdWRlIDxhc20veHN0YXRlLmg+CiAKQEAgLTUwMiwxMSArNTAzLDkgQEAgdm9pZCBy ZWNhbGN1bGF0ZV9jcHVpZF9wb2xpY3koc3RydWN0IGRvbWFpbiAqZCkKIAogICAgIGNwdWlkX2Zl YXR1cmVzZXRfdG9fcG9saWN5KGZzLCBwKTsKIAotICAgIHAtPmV4dGQubWF4cGh5c2FkZHIgPSBt aW4ocC0+ZXh0ZC5tYXhwaHlzYWRkciwgbWF4LT5leHRkLm1heHBoeXNhZGRyKTsKICAgICBwLT5l eHRkLm1heHBoeXNhZGRyID0gbWluX3QodWludDhfdCwgcC0+ZXh0ZC5tYXhwaHlzYWRkciwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+YXJjaC5wYWdpbmcuZ2ZuX2JpdHMgKyBQ QUdFX1NISUZUKTsKLSAgICBwLT5leHRkLm1heHBoeXNhZGRyID0gbWF4X3QodWludDhfdCwgcC0+ ZXh0ZC5tYXhwaHlzYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHAtPmJh c2ljLnBhZSB8fCBwLT5iYXNpYy5wc2UzNikgPyAzNiA6IDMyKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGFnaW5nX21heF9wYWRkcl9iaXRzKGQpKTsKKyAgICBwLT5leHRkLm1h eHBoeXNhZGRyID0gbWF4X3QodWludDhfdCwgcC0+ZXh0ZC5tYXhwaHlzYWRkciwgMzIpOwogCiAg ICAgcC0+ZXh0ZC5tYXhsaW5hZGRyID0gcC0+ZXh0ZC5sbSA/IDQ4IDogMzI7CiAKZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3Z2bXguYyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3Z2 bXguYwppbmRleCA5YzYxYjViLi43NzRhMTFmIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZt L3ZteC92dm14LmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdnZteC5jCkBAIC0xMzgxLDcg KzEzODEsNyBAQCBpbnQgbnZteF9oYW5kbGVfdm14b24oc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJl Z3MpCiAgICAgfQogCiAgICAgaWYgKCAoZ3BhICYgflBBR0VfTUFTSykgfHwKLSAgICAgICAgIChn cGEgPj4gKHYtPmRvbWFpbi0+YXJjaC5wYWdpbmcuZ2ZuX2JpdHMgKyBQQUdFX1NISUZUKSkgKQor ICAgICAgICAgKGdwYSA+PiB2LT5kb21haW4tPmFyY2guY3B1aWQtPmV4dGQubWF4cGh5c2FkZHIp ICkKICAgICB7CiAgICAgICAgIHZtZmFpbF9pbnZhbGlkKHJlZ3MpOwogICAgICAgICByZXR1cm4g WDg2RU1VTF9PS0FZOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL2d1ZXN0X3dhbGsuYyBi L3hlbi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMKaW5kZXggYTY3ZmQ1YS4uNWFkOGNmNiAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL2d1ZXN0X3dhbGsuYworKysgYi94ZW4vYXJjaC94ODYv bW0vZ3Vlc3Rfd2Fsay5jCkBAIC00MzUsNyArNDM1LDggQEAgZ3Vlc3Rfd2Fsa190YWJsZXMoc3Ry dWN0IHZjcHUgKnYsIHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCiAgICAgLyogSWYgdGhpcyBndWVz dCBoYXMgYSByZXN0cmljdGVkIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UgdGhlbiB0aGUKICAgICAg KiB0YXJnZXQgR0ZOIG11c3QgZml0IHdpdGhpbiBpdC4gKi8KICAgICBpZiAoICEocmMgJiBfUEFH RV9QUkVTRU5UKQotICAgICAgICAgJiYgZ2ZuX3goZ3Vlc3RfbDFlX2dldF9nZm4oZ3ctPmwxZSkp ID4+IGQtPmFyY2gucGFnaW5nLmdmbl9iaXRzICkKKyAgICAgICAgICYmIGdmbl94KGd1ZXN0X2wx ZV9nZXRfZ2ZuKGd3LT5sMWUpKSA+PgorICAgICAgICAgKGQtPmFyY2guY3B1aWQtPmV4dGQubWF4 cGh5c2FkZHIgLSBQQUdFX1NISUZUKSApCiAgICAgICAgIHJjIHw9IF9QQUdFX0lOVkFMSURfQklU UzsKIAogICAgIHJldHVybiByYzsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAvaGFw LmMgYi94ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5jCmluZGV4IDZkYmIzY2MuLjkyOGNkNWUgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAvaGFwLmMKKysrIGIveGVuL2FyY2gveDg2L21t L2hhcC9oYXAuYwpAQCAtNDQ3LDggKzQ0Nyw2IEBAIHZvaWQgaGFwX2RvbWFpbl9pbml0KHN0cnVj dCBkb21haW4gKmQpCiB7CiAgICAgSU5JVF9QQUdFX0xJU1RfSEVBRCgmZC0+YXJjaC5wYWdpbmcu aGFwLmZyZWVsaXN0KTsKIAotICAgIGQtPmFyY2gucGFnaW5nLmdmbl9iaXRzID0gaGFwX3BhZGRy X2JpdHMgLSBQQUdFX1NISUZUOwotCiAgICAgLyogVXNlIEhBUCBsb2dkaXJ0eSBtZWNoYW5pc20u ICovCiAgICAgcGFnaW5nX2xvZ19kaXJ0eV9pbml0KGQsIGhhcF9lbmFibGVfbG9nX2RpcnR5LAog ICAgICAgICAgICAgICAgICAgICAgICAgICBoYXBfZGlzYWJsZV9sb2dfZGlydHksCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKaW5kZXgg ZGIzMzE1My4uNjljNjljNyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS5jCisrKyBi L3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwpAQCAtMTc4Myw3ICsxNzgzLDggQEAgdm9pZCAqbWFwX2Rv bWFpbl9nZm4oc3RydWN0IHAybV9kb21haW4gKnAybSwgZ2ZuX3QgZ2ZuLCBtZm5fdCAqbWZuLAog ewogICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7CiAKLSAgICBpZiAoIGdmbl94KGdmbikgPj4g cDJtLT5kb21haW4tPmFyY2gucGFnaW5nLmdmbl9iaXRzICkKKyAgICBpZiAoIGdmbl94KGdmbikg Pj4KKyAgICAgICAgIChwMm0tPmRvbWFpbi0+YXJjaC5jcHVpZC0+ZXh0ZC5tYXhwaHlzYWRkciAt IFBBR0VfU0hJRlQpICkKICAgICB7CiAgICAgICAgICpyYyA9IF9QQUdFX0lOVkFMSURfQklUOwog ICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cv Y29tbW9uLmMgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jCmluZGV4IGE2MTlkNjUu LjIyMzVhMGEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKKysr IGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYwpAQCAtNTIsMTYgKzUyLDYgQEAgaW50 IHNoYWRvd19kb21haW5faW5pdChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgZG9tY3Jf ZmxhZ3MpCiAgICAgSU5JVF9QQUdFX0xJU1RfSEVBRCgmZC0+YXJjaC5wYWdpbmcuc2hhZG93LmZy ZWVsaXN0KTsKICAgICBJTklUX1BBR0VfTElTVF9IRUFEKCZkLT5hcmNoLnBhZ2luZy5zaGFkb3cu cGlubmVkX3NoYWRvd3MpOwogCi0gICAgZC0+YXJjaC5wYWdpbmcuZ2ZuX2JpdHMgPSBwYWRkcl9i aXRzIC0gUEFHRV9TSElGVDsKLSNpZm5kZWYgQ09ORklHX0JJR01FTQotICAgIC8qCi0gICAgICog U2hhZG93ZWQgc3VwZXJwYWdlcyBzdG9yZSBHRk5zIGluIDMyLWJpdCBwYWdlX2luZm8gZmllbGRz LgotICAgICAqIE5vdGUgdGhhdCB3ZSBjYW5ub3QgdXNlIGd1ZXN0X3N1cHBvcnRzX3N1cGVycGFn ZXMoKSBoZXJlLgotICAgICAqLwotICAgIGlmICggIWlzX3B2X2RvbWFpbihkKSB8fCBvcHRfYWxs b3dfc3VwZXJwYWdlICkKLSAgICAgICAgZC0+YXJjaC5wYWdpbmcuZ2ZuX2JpdHMgPSAzMjsKLSNl bmRpZgotCiAgICAgLyogVXNlIHNoYWRvdyBwYWdldGFibGVzIGZvciBsb2ctZGlydHkgc3VwcG9y dCAqLwogICAgIHBhZ2luZ19sb2dfZGlydHlfaW5pdChkLCBzaF9lbmFibGVfbG9nX2RpcnR5LAog ICAgICAgICAgICAgICAgICAgICAgICAgICBzaF9kaXNhYmxlX2xvZ19kaXJ0eSwgc2hfY2xlYW5f ZGlydHlfYml0bWFwKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGku YyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYwppbmRleCBkNDA5MGQ3Li5lOTUxZGFm IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMKKysrIGIveGVuL2Fy Y2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCkBAIC01MzcsNyArNTM3LDggQEAgX3NoX3Byb3BhZ2F0 ZShzdHJ1Y3QgdmNwdSAqdiwKIAogICAgIC8qIENoZWNrIHRoZXJlJ3Mgc29tZXRoaW5nIGZvciB0 aGUgc2hhZG93cyB0byBtYXAgdG8gKi8KICAgICBpZiAoICghcDJtX2lzX3ZhbGlkKHAybXQpICYm ICFwMm1faXNfZ3JhbnQocDJtdCkpCi0gICAgICAgICB8fCBnZm5feCh0YXJnZXRfZ2ZuKSA+PiBk LT5hcmNoLnBhZ2luZy5nZm5fYml0cyApCisgICAgICAgICB8fCBnZm5feCh0YXJnZXRfZ2ZuKSA+ PgorICAgICAgICAgKGQtPmFyY2guY3B1aWQtPmV4dGQubWF4cGh5c2FkZHIgLSBQQUdFX1NISUZU KSApCiAgICAgewogICAgICAgICAqc3AgPSBzaGFkb3dfbDFlX2VtcHR5KCk7CiAgICAgICAgIGdv dG8gZG9uZTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmggYi94ZW4v aW5jbHVkZS9hc20teDg2L2RvbWFpbi5oCmluZGV4IGU2YzdlMTMuLjIyNzBlOTYgMTAwNjQ0Ci0t LSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4 Ni9kb21haW4uaApAQCAtMTk1LDkgKzE5NSw2IEBAIHN0cnVjdCBwYWdpbmdfZG9tYWluIHsKICAg ICAvKiBsb2cgZGlydHkgc3VwcG9ydCAqLwogICAgIHN0cnVjdCBsb2dfZGlydHlfZG9tYWluIGxv Z19kaXJ0eTsKIAotICAgIC8qIE51bWJlciBvZiB2YWxpZCBiaXRzIGluIGEgZ2ZuLiAqLwotICAg IHVuc2lnbmVkIGludCBnZm5fYml0czsKLQogICAgIC8qIHByZWVtcHRpb24gaGFuZGxpbmcgKi8K ICAgICBzdHJ1Y3QgewogICAgICAgICBjb25zdCBzdHJ1Y3QgZG9tYWluICpkb207CmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3BhZ2luZy5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9w YWdpbmcuaAppbmRleCBjZWM2YmZkLi41YzJkZjhhIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9h c20teDg2L3BhZ2luZy5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcGFnaW5nLmgKQEAgLTI1 LDYgKzI1LDcgQEAKICNkZWZpbmUgX1hFTl9QQUdJTkdfSAogCiAjaW5jbHVkZSA8eGVuL21tLmg+ CisjaW5jbHVkZSA8eGVuL2tjb25maWcuaD4KICNpbmNsdWRlIDxwdWJsaWMvZG9tY3RsLmg+CiAj aW5jbHVkZSA8eGVuL3NjaGVkLmg+CiAjaW5jbHVkZSA8eGVuL3BlcmZjLmg+CkBAIC0zNjAsNiAr MzYxLDIxIEBAIHZvaWQgcGFnaW5nX2R1bXBfdmNwdV9pbmZvKHN0cnVjdCB2Y3B1ICp2KTsKIGlu dCBwYWdpbmdfc2V0X2FsbG9jYXRpb24oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHBh Z2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpwcmVlbXB0ZWQpOwogCisvKiBN YXhwaHlzYWRkciBzdXBwb3J0YWJsZSBieSB0aGUgcGFnaW5nIGluZnJhc3RydWN0dXJlLiAqLwor c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgcGFnaW5nX21heF9wYWRkcl9iaXRzKGNvbnN0IHN0 cnVjdCBkb21haW4gKmQpCit7CisgICAgdW5zaWduZWQgaW50IGJpdHMgPSBwYWdpbmdfbW9kZV9o YXAoZCkgPyBoYXBfcGFkZHJfYml0cyA6IHBhZGRyX2JpdHM7CisKKyAgICBpZiAoICFJU19FTkFC TEVEKEJJR01FTSkgJiYgcGFnaW5nX21vZGVfc2hhZG93KGQpICYmCisgICAgICAgICAoIWlzX3B2 X2RvbWFpbihkKSB8fCBvcHRfYWxsb3dfc3VwZXJwYWdlKSApCisgICAgeworICAgICAgICAvKiBT aGFkb3dlZCBzdXBlcnBhZ2VzIHN0b3JlIEdGTnMgaW4gMzItYml0IHBhZ2VfaW5mbyBmaWVsZHMu ICovCisgICAgICAgIGJpdHMgPSBtaW4oYml0cywgMzJVICsgUEFHRV9TSElGVCk7CisgICAgfQor CisgICAgcmV0dXJuIGJpdHM7Cit9CisKICNlbmRpZiAvKiBYRU5fUEFHSU5HX0ggKi8KIAogLyoK LS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczov L2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==