From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH RFC v1 34/74] x86/guest: add PV console code Date: Thu, 4 Jan 2018 13:05:45 +0000 Message-ID: <20180104130625.28605-35-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 1eX5fN-0002aj-R9 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2018 13:34:41 +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 Zi1ieTogU2VyZ2V5IER5YXNsaSA8c2VyZ2V5LmR5YXNsaUBjaXRyaXguY29tPgpTaWduZWQtb2Zm LWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KIHhlbi9k cml2ZXJzL2NoYXIvTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDEgKwogeGVuL2RyaXZlcnMvY2hh ci94ZW5fcHZfY29uc29sZS5jICAgICB8IDE5OCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiB4ZW4vaW5jbHVkZS9hc20teDg2L2ZpeG1hcC5oICAgICAgICAgIHwgICAxICsKIHhl bi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3QvaHlwZXJjYWxsLmggfCAgMzMgKysrKysrCiB4ZW4vaW5j bHVkZS94ZW4vcHZfY29uc29sZS5oICAgICAgICAgIHwgIDMyICsrKysrKwogNSBmaWxlcyBjaGFu Z2VkLCAyNjUgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9kcml2ZXJzL2No YXIveGVuX3B2X2NvbnNvbGUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3hlbi9w dl9jb25zb2xlLmgKCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9jaGFyL01ha2VmaWxlIGIveGVu L2RyaXZlcnMvY2hhci9NYWtlZmlsZQppbmRleCBhYTE2OWQ3OTYxLi45ZDQ4ZDBmMmRjIDEwMDY0 NAotLS0gYS94ZW4vZHJpdmVycy9jaGFyL01ha2VmaWxlCisrKyBiL3hlbi9kcml2ZXJzL2NoYXIv TWFrZWZpbGUKQEAgLTgsMyArOCw0IEBAIG9iai0kKENPTkZJR19IQVNfU0NJRikgKz0gc2NpZi11 YXJ0Lm8KIG9iai0kKENPTkZJR19IQVNfRUhDSSkgKz0gZWhjaS1kYmdwLm8KIG9iai0kKENPTkZJ R19BUk0pICs9IGFybS11YXJ0Lm8KIG9iai15ICs9IHNlcmlhbC5vCitvYmotJChDT05GSUdfWEVO X0dVRVNUKSArPSB4ZW5fcHZfY29uc29sZS5vCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9jaGFy L3hlbl9wdl9jb25zb2xlLmMgYi94ZW4vZHJpdmVycy9jaGFyL3hlbl9wdl9jb25zb2xlLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNWU0OTRiYzcyYQotLS0gL2Rldi9u dWxsCisrKyBiL3hlbi9kcml2ZXJzL2NoYXIveGVuX3B2X2NvbnNvbGUuYwpAQCAtMCwwICsxLDE5 OCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogZHJpdmVycy9jaGFyL3hlbl9wdl9jb25z b2xlLmMKKyAqCisgKiBBIGZyb250ZW5kIGRyaXZlciBmb3IgWGVuJ3MgUFYgY29uc29sZS4KKyAq IENhbiBiZSB1c2VkIHdoZW4gWGVuIGlzIHJ1bm5pbmcgb24gdG9wIG9mIFhlbiBpbiBwdi1pbi1w dmggbW9kZS4KKyAqIChMaW51eCdzIG5hbWUgZm9yIHRoaXMgaXMgaHZjIGNvbnNvbGUpCisgKgor ICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNyBD aXRyaXggU3lzdGVtcyBMdGQuCisgKi8KKworI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRl IDx4ZW4vaHlwZXJjYWxsLmg+CisjaW5jbHVkZSA8eGVuL3B2X2NvbnNvbGUuaD4KKworI2luY2x1 ZGUgPGFzbS9maXhtYXAuaD4KKyNpbmNsdWRlIDxhc20vZ3Vlc3QuaD4KKworI2luY2x1ZGUgPHB1 YmxpYy9pby9jb25zb2xlLmg+CisKK3N0YXRpYyBzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgKmNv bnNfcmluZzsKK3N0YXRpYyBldnRjaG5fcG9ydF90IGNvbnNfZXZ0Y2huOworc3RhdGljIHNlcmlh bF9yeF9mbiBjb25zX3J4X2hhbmRsZXI7CitzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHR4X2xvY2sp OworCit2b2lkIF9faW5pdCBwdl9jb25zb2xlX2luaXQodm9pZCkKK3sKKyAgICBsb25nIHI7Cisg ICAgdWludDY0X3QgcmF3X3BmbiA9IDAsIHJhd19ldnRjaG4gPSAwOworCisgICAgaWYgKCAheGVu X2d1ZXN0ICkKKyAgICB7CisgICAgICAgIHByaW50aygiUFYgY29uc29sZSBpbml0IGZhaWxlZDog eGVuX2d1ZXN0IG1vZGUgaXMgbm90IGFjdGl2ZSFcbiIpOworICAgICAgICByZXR1cm47CisgICAg fQorCisgICAgciA9IHhlbl9oeXBlcmNhbGxfaHZtX2dldF9wYXJhbShIVk1fUEFSQU1fQ09OU09M RV9QRk4sICZyYXdfcGZuKTsKKyAgICBpZiAoIHIgPCAwICkKKyAgICAgICAgZ290byBlcnJvcjsK KworICAgIHIgPSB4ZW5faHlwZXJjYWxsX2h2bV9nZXRfcGFyYW0oSFZNX1BBUkFNX0NPTlNPTEVf RVZUQ0hOLCAmcmF3X2V2dGNobik7CisgICAgaWYgKCByIDwgMCApCisgICAgICAgIGdvdG8gZXJy b3I7CisKKyAgICBzZXRfZml4bWFwKEZJWF9QVl9DT05TT0xFLCByYXdfcGZuIDw8IFBBR0VfU0hJ RlQpOworICAgIGNvbnNfcmluZyA9IChzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgKilmaXhfdG9f dmlydChGSVhfUFZfQ09OU09MRSk7CisgICAgY29uc19ldnRjaG4gPSByYXdfZXZ0Y2huOworCisg ICAgcHJpbnRrKCJJbml0aWFsaXNlZCBQViBjb25zb2xlIGF0IDB4JXAgd2l0aCBwZm4gJSNseCBh bmQgZXZ0Y2huICUjeFxuIiwKKyAgICAgICAgICAgIGNvbnNfcmluZywgcmF3X3BmbiwgY29uc19l dnRjaG4pOworICAgIHJldHVybjsKKworIGVycm9yOgorICAgIHByaW50aygiQ291bGRuJ3QgaW5p dGlhbGlzZSBQViBjb25zb2xlXG4iKTsKK30KKwordm9pZCBfX2luaXQgcHZfY29uc29sZV9zZXRf cnhfaGFuZGxlcihzZXJpYWxfcnhfZm4gZm4pCit7CisgICAgY29uc19yeF9oYW5kbGVyID0gZm47 Cit9CisKK3ZvaWQgX19pbml0IHB2X2NvbnNvbGVfaW5pdF9wb3N0aXJxKHZvaWQpCit7CisgICAg aWYgKCAhY29uc19yaW5nICkKKyAgICAgICAgcmV0dXJuOworCisgICAgeGVuX2h5cGVyY2FsbF9l dnRjaG5fdW5tYXNrKGNvbnNfZXZ0Y2huKTsKK30KKworc3RhdGljIHZvaWQgbm90aWZ5X2RhZW1v bih2b2lkKQoreworICAgIHhlbl9oeXBlcmNhbGxfZXZ0Y2huX3NlbmQoY29uc19ldnRjaG4pOwor fQorCitzaXplX3QgcHZfY29uc29sZV9yeChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKK3sK KyAgICBjaGFyIGM7CisgICAgWEVOQ09OU19SSU5HX0lEWCBjb25zLCBwcm9kOworICAgIHNpemVf dCByZWN2ID0gMDsKKworICAgIGlmICggIWNvbnNfcmluZyApCisgICAgICAgIHJldHVybiAwOwor CisgICAgLyogVE9ETzogbW92ZSB0aGlzIHNvbWV3aGVyZSAqLworICAgIGlmICggIXRlc3RfYml0 KGNvbnNfZXZ0Y2huLCBYRU5fc2hhcmVkX2luZm8tPmV2dGNobl9wZW5kaW5nKSApCisgICAgICAg IHJldHVybiAwOworCisgICAgcHJvZCA9IEFDQ0VTU19PTkNFKGNvbnNfcmluZy0+aW5fcHJvZCk7 CisgICAgY29ucyA9IGNvbnNfcmluZy0+aW5fY29uczsKKyAgICAvKiBHZXQgcG9pbnRlcnMgYmVm b3JlIHJlYWRpbmcgdGhlIHJpbmcgKi8KKyAgICBzbXBfcm1iKCk7CisKKyAgICBBU1NFUlQoKHBy b2QgLSBjb25zKSA8PSBzaXplb2YoY29uc19yaW5nLT5pbikpOworCisgICAgd2hpbGUgKCBjb25z ICE9IHByb2QgKQorICAgIHsKKyAgICAgICAgYyA9IGNvbnNfcmluZy0+aW5bTUFTS19YRU5DT05T X0lEWChjb25zKyssIGNvbnNfcmluZy0+aW4pXTsKKyAgICAgICAgaWYgKCBjb25zX3J4X2hhbmRs ZXIgKQorICAgICAgICAgICAgY29uc19yeF9oYW5kbGVyKGMsIHJlZ3MpOworICAgICAgICByZWN2 Kys7CisgICAgfQorCisgICAgLyogTm8gbmVlZCBmb3IgYSBtZW0gYmFycmllciBiZWNhdXNlIGV2 ZXJ5IGNoYXJhY3RlciB3YXMgYWxyZWFkeSBjb25zdW1lZCAqLworICAgIGJhcnJpZXIoKTsKKyAg ICBBQ0NFU1NfT05DRShjb25zX3JpbmctPmluX2NvbnMpID0gY29uczsKKyAgICBub3RpZnlfZGFl bW9uKCk7CisKKyAgICBjbGVhcl9iaXQoY29uc19ldnRjaG4sIFhFTl9zaGFyZWRfaW5mby0+ZXZ0 Y2huX3BlbmRpbmcpOworCisgICAgcmV0dXJuIHJlY3Y7Cit9CisKK3N0YXRpYyBzaXplX3QgcHZf cmluZ19wdXRzKGNvbnN0IGNoYXIgKmJ1ZikKK3sKKyAgICBYRU5DT05TX1JJTkdfSURYIGNvbnMs IHByb2Q7CisgICAgc2l6ZV90IHNlbnQgPSAwLCBhdmFpbDsKKyAgICBib29sIHB1dF9yID0gZmFs c2U7CisKKyAgICB3aGlsZSAoIGJ1ZltzZW50XSAhPSAnXDAnIHx8IHB1dF9yICkKKyAgICB7Cisg ICAgICAgIGNvbnMgPSBBQ0NFU1NfT05DRShjb25zX3JpbmctPm91dF9jb25zKTsKKyAgICAgICAg cHJvZCA9IGNvbnNfcmluZy0+b3V0X3Byb2Q7CisKKyAgICAgICAgQVNTRVJUKChwcm9kIC0gY29u cykgPD0gc2l6ZW9mKGNvbnNfcmluZy0+b3V0KSk7CisgICAgICAgIGF2YWlsID0gc2l6ZW9mKGNv bnNfcmluZy0+b3V0KSAtIChwcm9kIC0gY29ucyk7CisKKyAgICAgICAgaWYgKCBhdmFpbCA9PSAw ICkKKyAgICAgICAgeworICAgICAgICAgICAgLyogV2FpdCBmb3IgeGVuY29uc29sZWQgdG8gY29u c3VtZSBvdXIgb3V0cHV0ICovCisgICAgICAgICAgICB4ZW5faHlwZXJjYWxsX3NjaGVkX29wKFND SEVET1BfeWllbGQsIE5VTEwpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwor ICAgICAgICAvKiBVcGRhdGUgcG9pbnRlcnMgYmVmb3JlIGFjY2Vzc2luZyB0aGUgcmluZyAqLwor ICAgICAgICBzbXBfcm1iKCk7CisKKyAgICAgICAgd2hpbGUgKCBhdmFpbCAmJiAoYnVmW3NlbnRd ICE9ICdcMCcgfHwgcHV0X3IpICkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCBwdXRfciAp CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc19yaW5nLT5vdXRbTUFTS19YRU5D T05TX0lEWChwcm9kKyssIGNvbnNfcmluZy0+b3V0KV0gPSAnXHInOworICAgICAgICAgICAgICAg IHB1dF9yID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgY29uc19yaW5nLT5vdXRbTUFTS19YRU5DT05TX0lEWChw cm9kKyssIGNvbnNfcmluZy0+b3V0KV0gPQorICAgICAgICAgICAgICAgICAgICBidWZbc2VudF07 CisKKyAgICAgICAgICAgICAgICAvKiBTZW5kICdccicgZm9yIGV2ZXJ5ICdcbicgKi8KKyAgICAg ICAgICAgICAgICBpZiAoIGJ1ZltzZW50XSA9PSAnXG4nICkKKyAgICAgICAgICAgICAgICAgICAg cHV0X3IgPSB0cnVlOworICAgICAgICAgICAgICAgIHNlbnQrKzsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIGF2YWlsLS07CisgICAgICAgIH0KKworICAgICAgICAvKiBXcml0ZSB0byB0aGUg cmluZyBiZWZvcmUgdXBkYXRpbmcgdGhlIHBvaW50ZXIgKi8KKyAgICAgICAgc21wX3dtYigpOwor ICAgICAgICBBQ0NFU1NfT05DRShjb25zX3JpbmctPm91dF9wcm9kKSA9IHByb2Q7CisgICAgICAg IG5vdGlmeV9kYWVtb24oKTsKKyAgICB9CisKKyAgICByZXR1cm4gc2VudDsKK30KKwordm9pZCBw dl9jb25zb2xlX3B1dHMoY29uc3QgY2hhciAqYnVmKQoreworICAgIHVuc2lnbmVkIGxvbmcgZmxh Z3M7CisKKyAgICBpZiAoICFjb25zX3JpbmcgKQorICAgICAgICByZXR1cm47CisKKyAgICBzcGlu X2xvY2tfaXJxc2F2ZSgmdHhfbG9jaywgZmxhZ3MpOworICAgIHB2X3JpbmdfcHV0cyhidWYpOwor ICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnR4X2xvY2ssIGZsYWdzKTsKK30KKworLyoKKyAq IExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAq IGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6 IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2ZpeG1h cC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9maXhtYXAuaAppbmRleCBkZWQ0ZGRmMjFiLi4xNmNj YWEyYzc3IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2ZpeG1hcC5oCisrKyBiL3hl bi9pbmNsdWRlL2FzbS14ODYvZml4bWFwLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgZW51bSBmaXhlZF9h ZGRyZXNzZXMgewogICAgIEZJWF9DT01fRU5ELAogICAgIEZJWF9FSENJX0RCR1AsCiAjaWZkZWYg Q09ORklHX1hFTl9HVUVTVAorICAgIEZJWF9QVl9DT05TT0xFLAogICAgIEZJWF9YRU5fU0hBUkVE X0lORk8sCiAjZW5kaWYgLyogQ09ORklHX1hFTl9HVUVTVCAqLwogICAgIC8qIEV2ZXJ5dGhpbmcg ZWxzZSBzaG91bGQgZ28gZnVydGhlciBkb3duLiAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUv YXNtLXg4Ni9ndWVzdC9oeXBlcmNhbGwuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3QvaHlw ZXJjYWxsLmgKaW5kZXggZDZkNGQxOTQ2Yi4uOTBiNDc1NTQ2NyAxMDA2NDQKLS0tIGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9ndWVzdC9oeXBlcmNhbGwuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2 L2d1ZXN0L2h5cGVyY2FsbC5oCkBAIC05Nyw2ICs5NywxMSBAQCBzdGF0aWMgaW5saW5lIGxvbmcg eGVuX2h5cGVyY2FsbF9tZW1vcnlfb3AodW5zaWduZWQgaW50IGNtZCwgdm9pZCAqYXJnKQogICAg IHJldHVybiBfaHlwZXJjYWxsNjRfMihsb25nLCBfX0hZUEVSVklTT1JfbWVtb3J5X29wLCBjbWQs IGFyZyk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgbG9uZyB4ZW5faHlwZXJjYWxsX2V2ZW50X2NoYW5u ZWxfb3AodW5zaWduZWQgaW50IGNtZCwgdm9pZCAqYXJnKQoreworICAgIHJldHVybiBfaHlwZXJj YWxsNjRfMihsb25nLCBfX0hZUEVSVklTT1JfZXZlbnRfY2hhbm5lbF9vcCwgY21kLCBhcmcpOwor fQorCiBzdGF0aWMgaW5saW5lIGxvbmcgeGVuX2h5cGVyY2FsbF9odm1fb3AodW5zaWduZWQgaW50 IG9wLCB2b2lkICphcmcpCiB7CiAgICAgcmV0dXJuIF9oeXBlcmNhbGw2NF8yKGxvbmcsIF9fSFlQ RVJWSVNPUl9odm1fb3AsIG9wLCBhcmcpOwpAQCAtMTE3LDYgKzEyMiwzNCBAQCBzdGF0aWMgaW5s aW5lIGxvbmcgeGVuX2h5cGVyY2FsbF9zaHV0ZG93bih1bnNpZ25lZCBpbnQgcmVhc29uKQogICAg IHJldHVybiB4ZW5faHlwZXJjYWxsX3NjaGVkX29wKFNDSEVET1Bfc2h1dGRvd24sICZyZWFzb24p OwogfQogCitzdGF0aWMgaW5saW5lIGxvbmcgeGVuX2h5cGVyY2FsbF9ldnRjaG5fc2VuZChldnRj aG5fcG9ydF90IHBvcnQpCit7CisgICAgc3RydWN0IGV2dGNobl9zZW5kIHNlbmQgPSB7IC5wb3J0 ID0gcG9ydCB9OworCisgICAgcmV0dXJuIHhlbl9oeXBlcmNhbGxfZXZlbnRfY2hhbm5lbF9vcChF VlRDSE5PUF9zZW5kLCAmc2VuZCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgbG9uZyB4ZW5faHlwZXJj YWxsX2V2dGNobl91bm1hc2soZXZ0Y2huX3BvcnRfdCBwb3J0KQoreworICAgIHN0cnVjdCBldnRj aG5fdW5tYXNrIHVubWFzayA9IHsgLnBvcnQgPSBwb3J0IH07CisKKyAgICByZXR1cm4geGVuX2h5 cGVyY2FsbF9ldmVudF9jaGFubmVsX29wKEVWVENITk9QX3VubWFzaywgJnVubWFzayk7Cit9CisK K3N0YXRpYyBpbmxpbmUgbG9uZyB4ZW5faHlwZXJjYWxsX2h2bV9nZXRfcGFyYW0odWludDMyX3Qg aW5kZXgsIHVpbnQ2NF90ICp2YWx1ZSkKK3sKKyAgICBzdHJ1Y3QgeGVuX2h2bV9wYXJhbSB4aHYg PSB7CisgICAgICAgIC5kb21pZCA9IERPTUlEX1NFTEYsCisgICAgICAgIC5pbmRleCA9IGluZGV4 LAorICAgIH07CisgICAgbG9uZyByZXQgPSB4ZW5faHlwZXJjYWxsX2h2bV9vcChIVk1PUF9nZXRf cGFyYW0sICZ4aHYpOworCisgICAgaWYgKCByZXQgPT0gMCApCisgICAgICAgICp2YWx1ZSA9IHho di52YWx1ZTsKKworICAgIHJldHVybiByZXQ7Cit9CisKIHN0YXRpYyBpbmxpbmUgbG9uZyB4ZW5f aHlwZXJjYWxsX3NldF9ldnRjaG5fdXBjYWxsX3ZlY3RvcigKICAgICB1bnNpZ25lZCBpbnQgY3B1 LCB1bnNpZ25lZCBpbnQgdmVjdG9yKQogewpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3B2 X2NvbnNvbGUuaCBiL3hlbi9pbmNsdWRlL3hlbi9wdl9jb25zb2xlLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZTU3OGI1NjYyMAotLS0gL2Rldi9udWxsCisrKyBiL3hl bi9pbmNsdWRlL3hlbi9wdl9jb25zb2xlLmgKQEAgLTAsMCArMSwzMiBAQAorI2lmbmRlZiBfX1hF Tl9QVl9DT05TT0xFX0hfXworI2RlZmluZSBfX1hFTl9QVl9DT05TT0xFX0hfXworCisjaW5jbHVk ZSA8eGVuL3NlcmlhbC5oPgorCisjaWZkZWYgQ09ORklHX1hFTl9HVUVTVAorCit2b2lkIHB2X2Nv bnNvbGVfaW5pdCh2b2lkKTsKK3ZvaWQgcHZfY29uc29sZV9zZXRfcnhfaGFuZGxlcihzZXJpYWxf cnhfZm4gZm4pOwordm9pZCBwdl9jb25zb2xlX2luaXRfcG9zdGlycSh2b2lkKTsKK3ZvaWQgcHZf Y29uc29sZV9wdXRzKGNvbnN0IGNoYXIgKmJ1Zik7CitzaXplX3QgcHZfY29uc29sZV9yeChzdHJ1 Y3QgY3B1X3VzZXJfcmVncyAqcmVncyk7CisKKyNlbHNlCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBw dl9jb25zb2xlX2luaXQodm9pZCkge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBwdl9jb25zb2xlX3Nl dF9yeF9oYW5kbGVyKHNlcmlhbF9yeF9mbiBmbikgeyB9CitzdGF0aWMgaW5saW5lIHZvaWQgcHZf Y29uc29sZV9pbml0X3Bvc3RpcnEodm9pZCkgeyB9CitzdGF0aWMgaW5saW5lIHZvaWQgcHZfY29u c29sZV9wdXRzKGNvbnN0IGNoYXIgKmJ1ZikgeyB9CitzdGF0aWMgaW5saW5lIHNpemVfdCBwdl9j b25zb2xlX3J4KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKSB7IHJldHVybiAwOyB9CisKKyNl bmRpZiAvKiAhQ09ORklHX1hFTl9HVUVTVCAqLworI2VuZGlmIC8qIF9fWEVOX1BWX0NPTlNPTEVf SF9fICovCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0 eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5k ZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KLS0gCjIuMTEuMAoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj dC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=