From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH RFC v1 57/74] x86/pv-shim: shadow PV console's page for L2 DomU Date: Thu, 4 Jan 2018 13:06:08 +0000 Message-ID: <20180104130625.28605-58-wei.liu2@citrix.com> References: <20180104130625.28605-1-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eX5a6-0004qJ-Am for xen-devel@lists.xenproject.org; Thu, 04 Jan 2018 13:29:14 +0000 In-Reply-To: <20180104130625.28605-1-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: wei.liu2@citrix.com List-Id: xen-devel@lists.xenproject.org RnJvbTogU2VyZ2V5IER5YXNsaSA8c2VyZ2V5LmR5YXNsaUBjaXRyaXguY29tPgoKU2lnbmVkLW9m Zi1ieTogU2VyZ2V5IER5YXNsaSA8c2VyZ2V5LmR5YXNsaUBjaXRyaXguY29tPgotLS0KIHhlbi9h cmNoL3g4Ni9wdi9zaGltLmMgICAgICB8ICAzMSArKysrKysrKy0tCiB4ZW4vZHJpdmVycy9jaGFy L01ha2VmaWxlICAgfCAgIDEgKwogeGVuL2RyaXZlcnMvY2hhci9jb25zb2xlLmMgIHwgICA0ICsr CiB4ZW4vZHJpdmVycy9jaGFyL2NvbnNvbGVkLmMgfCAxNDUgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL3hlbi9jb25zb2xlZC5oICB8ICAy NyArKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMjA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2RyaXZlcnMvY2hhci9jb25zb2xlZC5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1ZGUveGVuL2NvbnNvbGVkLmgKCmRpZmYgLS1naXQg YS94ZW4vYXJjaC94ODYvcHYvc2hpbS5jIGIveGVuL2FyY2gveDg2L3B2L3NoaW0uYwppbmRleCA5 OGMxZTMxZThmLi43NGIyNGJmOTUwIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcHYvc2hpbS5j CisrKyBiL3hlbi9hcmNoL3g4Ni9wdi9zaGltLmMKQEAgLTI1LDYgKzI1LDggQEAKICNpbmNsdWRl IDx4ZW4vaW9jYXAuaD4KICNpbmNsdWRlIDx4ZW4vc2h1dGRvd24uaD4KICNpbmNsdWRlIDx4ZW4v dHlwZXMuaD4KKyNpbmNsdWRlIDx4ZW4vY29uc29sZWQuaD4KKyNpbmNsdWRlIDx4ZW4vcHZfY29u c29sZS5oPgogCiAjaW5jbHVkZSA8YXNtL2FwaWMuaD4KICNpbmNsdWRlIDxhc20vZG9tMF9idWls ZC5oPgpAQCAtMTI1LDEzICsxMjcsMjggQEAgdm9pZCBfX2luaXQgcHZfc2hpbV9zZXR1cF9kb20o c3RydWN0IGRvbWFpbiAqZCwgbDRfcGdlbnRyeV90ICpsNHN0YXJ0LAogfSkKICAgICBTRVRfQU5E X01BUF9QQVJBTShIVk1fUEFSQU1fU1RPUkVfUEZOLCBzaS0+c3RvcmVfbWZuLCBzdG9yZV92YSk7 CiAgICAgU0VUX0FORF9NQVBfUEFSQU0oSFZNX1BBUkFNX1NUT1JFX0VWVENITiwgc2ktPnN0b3Jl X2V2dGNobiwgMCk7CisgICAgU0VUX0FORF9NQVBfUEFSQU0oSFZNX1BBUkFNX0NPTlNPTEVfRVZU Q0hOLCBzaS0+Y29uc29sZS5kb21VLmV2dGNobiwgMCk7CiAgICAgaWYgKCAhcHZfY29uc29sZSAp Ci0gICAgewogICAgICAgICBTRVRfQU5EX01BUF9QQVJBTShIVk1fUEFSQU1fQ09OU09MRV9QRk4s IHNpLT5jb25zb2xlLmRvbVUubWZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xl X3ZhKTsKLSAgICAgICAgU0VUX0FORF9NQVBfUEFSQU0oSFZNX1BBUkFNX0NPTlNPTEVfRVZUQ0hO LCBzaS0+Y29uc29sZS5kb21VLmV2dGNobiwgMCk7Ci0gICAgfQogI3VuZGVmIFNFVF9BTkRfTUFQ X1BBUkFNCisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLyogQWxsb2NhdGUgYSBuZXcgcGFnZSBm b3IgRG9tVSdzIFBWIGNvbnNvbGUgKi8KKyAgICAgICAgdm9pZCAqcGFnZSA9IGFsbG9jX3hlbmhl YXBfcGFnZXMoMCwgTUVNRl9iaXRzKDMyKSk7CisgICAgICAgIHVpbnQ2NF90IGNvbnNvbGVfbWZu OworCisgICAgICAgIEFTU0VSVChwYWdlKTsKKyAgICAgICAgY2xlYXJfcGFnZShwYWdlKTsKKyAg ICAgICAgY29uc29sZV9tZm4gPSB2aXJ0X3RvX21mbihwYWdlKTsKKyAgICAgICAgc2ktPmNvbnNv bGUuZG9tVS5tZm4gPSBjb25zb2xlX21mbjsKKyAgICAgICAgc2hhcmVfeGVuX3BhZ2Vfd2l0aF9n dWVzdChtZm5fdG9fcGFnZShjb25zb2xlX21mbiksIGQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgWEVOU0hBUkVfd3JpdGFibGUpOworICAgICAgICByZXBsYWNlX3ZhKGQsIGw0 c3RhcnQsIGNvbnNvbGVfdmEsIGNvbnNvbGVfbWZuKTsKKyAgICAgICAgZG9tMF91cGRhdGVfcGh5 c21hcChkLCAoY29uc29sZV92YSAtIHZhX3N0YXJ0KSA+PiBQQUdFX1NISUZULAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnNvbGVfbWZuLCB2cGh5c21hcCk7CisgICAgICAgIGNvbnNv bGVkX3NldF9yaW5nX2FkZHIocGFnZSk7CisgICAgfQogfQogCiB2b2lkIHB2X3NoaW1fc2h1dGRv d24odWludDhfdCByZWFzb24pCkBAIC0zMzQsNyArMzUxLDEzIEBAIGNhc2UgRVZUQ0hOT1BfIyNj bWQ6IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK ICAgICAgICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJnNlbmQsIGFyZywgMSkgIT0gMCApCiAgICAg ICAgICAgICByZXR1cm4gLUVGQVVMVDsKIAotICAgICAgICByYyA9IHhlbl9oeXBlcmNhbGxfZXZl bnRfY2hhbm5lbF9vcChFVlRDSE5PUF9zZW5kLCAmc2VuZCk7CisgICAgICAgIGlmICggcHZfY29u c29sZSAmJiBzZW5kLnBvcnQgPT0gcHZfY29uc29sZV9ldnRjaG4oKSApCisgICAgICAgIHsKKyAg ICAgICAgICAgIGNvbnNvbGVkX2d1ZXN0X3J4KCk7CisgICAgICAgICAgICByYyA9IDA7CisgICAg ICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmMgPSB4ZW5faHlwZXJjYWxsX2V2ZW50 X2NoYW5uZWxfb3AoRVZUQ0hOT1Bfc2VuZCwgJnNlbmQpOwogCiAgICAgICAgIGJyZWFrOwogICAg IH0KZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL2NoYXIvTWFrZWZpbGUgYi94ZW4vZHJpdmVycy9j aGFyL01ha2VmaWxlCmluZGV4IDlkNDhkMGYyZGMuLjBkNDhiMTZlOGQgMTAwNjQ0Ci0tLSBhL3hl bi9kcml2ZXJzL2NoYXIvTWFrZWZpbGUKKysrIGIveGVuL2RyaXZlcnMvY2hhci9NYWtlZmlsZQpA QCAtOSwzICs5LDQgQEAgb2JqLSQoQ09ORklHX0hBU19FSENJKSArPSBlaGNpLWRiZ3Aubwogb2Jq LSQoQ09ORklHX0FSTSkgKz0gYXJtLXVhcnQubwogb2JqLXkgKz0gc2VyaWFsLm8KIG9iai0kKENP TkZJR19YRU5fR1VFU1QpICs9IHhlbl9wdl9jb25zb2xlLm8KK29iai0kKENPTkZJR19QVl9TSElN KSArPSBjb25zb2xlZC5vCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9jaGFyL2NvbnNvbGUuYyBi L3hlbi9kcml2ZXJzL2NoYXIvY29uc29sZS5jCmluZGV4IDM1NGUwMjBkMTkuLjNjNjE1YTI1NWMg MTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL2NoYXIvY29uc29sZS5jCisrKyBiL3hlbi9kcml2ZXJz L2NoYXIvY29uc29sZS5jCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSA8eGVuL2luaXQuaD4K ICNpbmNsdWRlIDx4ZW4vZXZlbnQuaD4KICNpbmNsdWRlIDx4ZW4vY29uc29sZS5oPgorI2luY2x1 ZGUgPHhlbi9jb25zb2xlZC5oPgogI2luY2x1ZGUgPHhlbi9zZXJpYWwuaD4KICNpbmNsdWRlIDx4 ZW4vcHZfY29uc29sZS5oPgogI2luY2x1ZGUgPHhlbi9zb2Z0aXJxLmg+CkBAIC00MDgsNiArNDA5 LDkgQEAgc3RhdGljIHZvaWQgX19zZXJpYWxfcngoY2hhciBjLCBzdHJ1Y3QgY3B1X3VzZXJfcmVn cyAqcmVncykKICAgICAgICAgc2VyaWFsX3J4X3JpbmdbU0VSSUFMX1JYX01BU0soc2VyaWFsX3J4 X3Byb2QrKyldID0gYzsKICAgICAvKiBBbHdheXMgbm90aWZ5IHRoZSBndWVzdDogcHJldmVudHMg cmVjZWl2ZSBwYXRoIGZyb20gZ2V0dGluZyBzdHVjay4gKi8KICAgICBzZW5kX2dsb2JhbF92aXJx KFZJUlFfQ09OU09MRSk7CisKKyAgICBpZiAoIHB2X3NoaW0gJiYgcHZfY29uc29sZSApCisgICAg ICAgIGNvbnNvbGVkX2d1ZXN0X3R4KGMpOwogfQogCiBzdGF0aWMgdm9pZCBzZXJpYWxfcngoY2hh ciBjLCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJz L2NoYXIvY29uc29sZWQuYyBiL3hlbi9kcml2ZXJzL2NoYXIvY29uc29sZWQuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi45YTRiNTA0MjA4Ci0tLSAvZGV2L251bGwKKysr IGIveGVuL2RyaXZlcnMvY2hhci9jb25zb2xlZC5jCkBAIC0wLDAgKzEsMTQ1IEBACisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisgKiBkcml2ZXJzL2NoYXIvY29uc29sZWQuYworICoKKyAqIEEgYmFj a2VuZCBkcml2ZXIgZm9yIFhlbidzIFBWIGNvbnNvbGUuCisgKgorICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAq IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNyBDaXRyaXggU3lzdGVtcyBMdGQu CisgKi8KKworI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4ZW4vZXZlbnQuaD4KKyNp bmNsdWRlIDx4ZW4vcHZfY29uc29sZS5oPgorI2luY2x1ZGUgPHhlbi9jb25zb2xlZC5oPgorCitz dGF0aWMgc3RydWN0IHhlbmNvbnNfaW50ZXJmYWNlICpjb25zX3Jpbmc7CitzdGF0aWMgREVGSU5F X1NQSU5MT0NLKHJ4X2xvY2spOworCit2b2lkIGNvbnNvbGVkX3NldF9yaW5nX2FkZHIoc3RydWN0 IHhlbmNvbnNfaW50ZXJmYWNlICpyaW5nKQoreworICAgIGNvbnNfcmluZyA9IHJpbmc7Cit9CisK K3N0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqY29uc29sZWRfZ2V0X3JpbmdfYWRkcih2b2lkKQor eworICAgIHJldHVybiBjb25zX3Jpbmc7Cit9CisKK3N0YXRpYyB2b2lkIG5vdGlmeV9ndWVzdCh2 b2lkKQoreworICAgIHVuc2lnbmVkIGludCBjcHUgPSAwLCBwb3J0ID0gcHZfY29uc29sZV9ldnRj aG4oKTsKKworICAgIGV2dGNobl9wb3J0X3NldF9wZW5kaW5nKHB2X2RvbWFpbiwgY3B1LCBldnRj aG5fZnJvbV9wb3J0KHB2X2RvbWFpbiwgcG9ydCkpOworfQorCisjZGVmaW5lIEJVRl9TWiAyNTUK K3N0YXRpYyBjaGFyIGJ1ZltCVUZfU1ogKyAxXTsKKworLyogUmVjZWl2ZXMgY2hhcmFjdGVycyBm cm9tIGEgZG9tYWluJ3MgUFYgY29uc29sZSAqLworc2l6ZV90IGNvbnNvbGVkX2d1ZXN0X3J4KHZv aWQpCit7CisgICAgc2l6ZV90IHJlY3YgPSAwLCBpZHggPSAwOworICAgIFhFTkNPTlNfUklOR19J RFggY29ucywgcHJvZDsKKworICAgIGlmICggIWNvbnNfcmluZyApCisgICAgICAgIHJldHVybiAw OworCisgICAgc3Bpbl9sb2NrKCZyeF9sb2NrKTsKKworICAgIGNvbnMgPSBjb25zX3JpbmctPm91 dF9jb25zOworICAgIHByb2QgPSBBQ0NFU1NfT05DRShjb25zX3JpbmctPm91dF9wcm9kKTsKKyAg ICBBU1NFUlQoKHByb2QgLSBjb25zKSA8PSBzaXplb2YoY29uc19yaW5nLT5vdXQpKTsKKworICAg IC8qIElzIHRoZSByaW5nIGVtcHR5PyAqLworICAgIGlmICggY29ucyA9PSBwcm9kICkKKyAgICAg ICAgZ290byBvdXQ7CisKKyAgICAvKiBVcGRhdGUgcG9pbnRlcnMgYmVmb3JlIGFjY2Vzc2luZyB0 aGUgcmluZyAqLworICAgIHNtcF9ybWIoKTsKKworICAgIHdoaWxlICggY29ucyAhPSBwcm9kICkK KyAgICB7CisgICAgICAgIGNoYXIgYyA9IGNvbnNfcmluZy0+b3V0W01BU0tfWEVOQ09OU19JRFgo Y29ucysrLCBjb25zX3JpbmctPm91dCldOworCisgICAgICAgIGJ1ZltpZHgrK10gPSBjOworICAg ICAgICByZWN2Kys7CisKKyAgICAgICAgaWYgKCBpZHggPj0gQlVGX1NaICkKKyAgICAgICAgewor ICAgICAgICAgICAgcHZfY29uc29sZV9wdXRzKGJ1Zik7CisgICAgICAgICAgICBpZHggPSAwOwor ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCBpZHggKQorICAgIHsKKyAgICAgICAgYnVmW2lk eF0gPSAnXDAnOworICAgICAgICBwdl9jb25zb2xlX3B1dHMoYnVmKTsKKyAgICB9CisKKyAgICAv KiBObyBuZWVkIGZvciBhIG1lbSBiYXJyaWVyIGJlY2F1c2UgZXZlcnkgY2hhcmFjdGVyIHdhcyBh bHJlYWR5IGNvbnN1bWVkICovCisgICAgYmFycmllcigpOworICAgIEFDQ0VTU19PTkNFKGNvbnNf cmluZy0+b3V0X2NvbnMpID0gY29uczsKKyAgICBub3RpZnlfZ3Vlc3QoKTsKKworIG91dDoKKyAg ICBzcGluX3VubG9jaygmcnhfbG9jayk7CisKKyAgICByZXR1cm4gcmVjdjsKK30KKworLyogU2Vu ZHMgYSBjaGFyYWN0ZXIgaW50byBhIGRvbWFpbidzIFBWIGNvbnNvbGUgKi8KK3NpemVfdCBjb25z b2xlZF9ndWVzdF90eChjaGFyIGMpCit7CisgICAgc2l6ZV90IHNlbnQgPSAwOworICAgIFhFTkNP TlNfUklOR19JRFggY29ucywgcHJvZDsKKworICAgIGlmICggIWNvbnNfcmluZyApCisgICAgICAg IHJldHVybiAwOworCisgICAgY29ucyA9IEFDQ0VTU19PTkNFKGNvbnNfcmluZy0+aW5fY29ucyk7 CisgICAgcHJvZCA9IGNvbnNfcmluZy0+aW5fcHJvZDsKKyAgICBBU1NFUlQoKHByb2QgLSBjb25z KSA8PSBzaXplb2YoY29uc19yaW5nLT5pbikpOworCisgICAgLyogSXMgdGhlIHJpbmcgb3V0IG9m IHNwYWNlPyAqLworICAgIGlmICggc2l6ZW9mKGNvbnNfcmluZy0+aW4pIC0gKHByb2QgLSBjb25z KSA9PSAwICkKKyAgICAgICAgZ290byBub3RpZnk7CisKKyAgICAvKiBVcGRhdGUgcG9pbnRlcnMg YmVmb3JlIGFjY2Vzc2luZyB0aGUgcmluZyAqLworICAgIHNtcF9ybWIoKTsKKworICAgIGNvbnNf cmluZy0+aW5bTUFTS19YRU5DT05TX0lEWChwcm9kKyssIGNvbnNfcmluZy0+aW4pXSA9IGM7Cisg ICAgc2VudCsrOworCisgICAgLyogV3JpdGUgdG8gdGhlIHJpbmcgYmVmb3JlIHVwZGF0aW5nIHRo ZSBwb2ludGVyICovCisgICAgc21wX3dtYigpOworICAgIEFDQ0VTU19PTkNFKGNvbnNfcmluZy0+ aW5fcHJvZCkgPSBwcm9kOworCisgbm90aWZ5OgorICAgIC8qIEFsd2F5cyBub3RpZnkgdGhlIGd1 ZXN0OiBwcmV2ZW50cyByZWNlaXZlIHBhdGggZnJvbSBnZXR0aW5nIHN0dWNrLiAqLworICAgIG5v dGlmeV9ndWVzdCgpOworCisgICAgcmV0dXJuIHNlbnQ7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJp YWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9m ZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVu ZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2NvbnNvbGVkLmggYi94ZW4vaW5j bHVkZS94ZW4vY29uc29sZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li5mZDVkMjIwYThhCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUveGVuL2NvbnNvbGVk LmgKQEAgLTAsMCArMSwyNyBAQAorI2lmbmRlZiBfX1hFTl9DT05TT0xFRF9IX18KKyNkZWZpbmUg X19YRU5fQ09OU09MRURfSF9fCisKKyNpbmNsdWRlIDxwdWJsaWMvaW8vY29uc29sZS5oPgorCisj aWZkZWYgQ09ORklHX1BWX1NISU0KKwordm9pZCBjb25zb2xlZF9zZXRfcmluZ19hZGRyKHN0cnVj dCB4ZW5jb25zX2ludGVyZmFjZSAqcmluZyk7CitzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgKmNv bnNvbGVkX2dldF9yaW5nX2FkZHIodm9pZCk7CitzaXplX3QgY29uc29sZWRfZ3Vlc3Rfcngodm9p ZCk7CitzaXplX3QgY29uc29sZWRfZ3Vlc3RfdHgoY2hhciBjKTsKKworI2Vsc2UKKworc2l6ZV90 IGNvbnNvbGVkX2d1ZXN0X3R4KGNoYXIgYykgeyByZXR1cm4gMDsgfQorCisjZW5kaWYgLyogIUNP TkZJR19QVl9TSElNICovCisjZW5kaWYgLyogX19YRU5fQ09OU09MRURfSF9fICovCisvKgorICog TG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICog Yy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTog bmlsCisgKiBFbmQ6CisgKi8KLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s aXN0aW5mby94ZW4tZGV2ZWw=