From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v2 36/62] x86/guest: add PV console code Date: Fri, 12 Jan 2018 11:28:44 +0000 Message-ID: <20180112112910.16762-37-wei.liu2@citrix.com> References: <20180112112910.16762-1-wei.liu2@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.84_2) (envelope-from ) id 1eZxzY-00048K-6H for xen-devel@lists.xenproject.org; Fri, 12 Jan 2018 11:59:24 +0000 In-Reply-To: <20180112112910.16762-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 LWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgpTaWduZWQtb2Zm LWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0KIHhlbi9kcml2ZXJzL2NoYXIv TWFrZWZpbGUgICAgICAgICAgICAgfCAgIDEgKwogeGVuL2RyaXZlcnMvY2hhci94ZW5fcHZfY29u c29sZS5jICAgICB8IDIwNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4v aW5jbHVkZS9hc20teDg2L2ZpeG1hcC5oICAgICAgICAgIHwgICAxICsKIHhlbi9pbmNsdWRlL2Fz bS14ODYvZ3Vlc3QvaHlwZXJjYWxsLmggfCAgMzMgKysrKysrCiB4ZW4vaW5jbHVkZS94ZW4vcHZf Y29uc29sZS5oICAgICAgICAgIHwgIDMyICsrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAyNzIgaW5z ZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9kcml2ZXJzL2NoYXIveGVuX3B2X2Nv bnNvbGUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3hlbi9wdl9jb25zb2xlLmgK CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9jaGFyL01ha2VmaWxlIGIveGVuL2RyaXZlcnMvY2hh ci9NYWtlZmlsZQppbmRleCBhYTE2OWQ3OTYxLi45ZDQ4ZDBmMmRjIDEwMDY0NAotLS0gYS94ZW4v ZHJpdmVycy9jaGFyL01ha2VmaWxlCisrKyBiL3hlbi9kcml2ZXJzL2NoYXIvTWFrZWZpbGUKQEAg LTgsMyArOCw0IEBAIG9iai0kKENPTkZJR19IQVNfU0NJRikgKz0gc2NpZi11YXJ0Lm8KIG9iai0k KENPTkZJR19IQVNfRUhDSSkgKz0gZWhjaS1kYmdwLm8KIG9iai0kKENPTkZJR19BUk0pICs9IGFy bS11YXJ0Lm8KIG9iai15ICs9IHNlcmlhbC5vCitvYmotJChDT05GSUdfWEVOX0dVRVNUKSArPSB4 ZW5fcHZfY29uc29sZS5vCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9jaGFyL3hlbl9wdl9jb25z b2xlLmMgYi94ZW4vZHJpdmVycy9jaGFyL3hlbl9wdl9jb25zb2xlLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZjVhY2E0YzY5ZQotLS0gL2Rldi9udWxsCisrKyBiL3hl bi9kcml2ZXJzL2NoYXIveGVuX3B2X2NvbnNvbGUuYwpAQCAtMCwwICsxLDIwNSBAQAorLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgorICogZHJpdmVycy9jaGFyL3hlbl9wdl9jb25zb2xlLmMKKyAqCisg KiBBIGZyb250ZW5kIGRyaXZlciBmb3IgWGVuJ3MgUFYgY29uc29sZS4KKyAqIENhbiBiZSB1c2Vk IHdoZW4gWGVuIGlzIHJ1bm5pbmcgb24gdG9wIG9mIFhlbiBpbiBwdi1pbi1wdmggbW9kZS4KKyAq IChMaW51eCdzIG5hbWUgZm9yIHRoaXMgaXMgaHZjIGNvbnNvbGUpCisgKgorICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNyBDaXRyaXggU3lzdGVt cyBMdGQuCisgKi8KKworI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4ZW4vaHlwZXJj YWxsLmg+CisjaW5jbHVkZSA8eGVuL3B2X2NvbnNvbGUuaD4KKworI2luY2x1ZGUgPGFzbS9maXht YXAuaD4KKyNpbmNsdWRlIDxhc20vZ3Vlc3QuaD4KKworI2luY2x1ZGUgPHB1YmxpYy9pby9jb25z b2xlLmg+CisKK3N0YXRpYyBzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgKmNvbnNfcmluZzsKK3N0 YXRpYyBldnRjaG5fcG9ydF90IGNvbnNfZXZ0Y2huOworc3RhdGljIHNlcmlhbF9yeF9mbiBjb25z X3J4X2hhbmRsZXI7CitzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHR4X2xvY2spOworCit2b2lkIF9f aW5pdCBwdl9jb25zb2xlX2luaXQodm9pZCkKK3sKKyAgICBsb25nIHI7CisgICAgdWludDY0X3Qg cmF3X3BmbiA9IDAsIHJhd19ldnRjaG4gPSAwOworCisgICAgaWYgKCAheGVuX2d1ZXN0ICkKKyAg ICB7CisgICAgICAgIHByaW50aygiUFYgY29uc29sZSBpbml0IGZhaWxlZDogeGVuX2d1ZXN0IG1v ZGUgaXMgbm90IGFjdGl2ZSFcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgciA9 IHhlbl9oeXBlcmNhbGxfaHZtX2dldF9wYXJhbShIVk1fUEFSQU1fQ09OU09MRV9QRk4sICZyYXdf cGZuKTsKKyAgICBpZiAoIHIgPCAwICkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHIgPSB4 ZW5faHlwZXJjYWxsX2h2bV9nZXRfcGFyYW0oSFZNX1BBUkFNX0NPTlNPTEVfRVZUQ0hOLCAmcmF3 X2V2dGNobik7CisgICAgaWYgKCByIDwgMCApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBz ZXRfZml4bWFwKEZJWF9QVl9DT05TT0xFLCByYXdfcGZuIDw8IFBBR0VfU0hJRlQpOworICAgIGNv bnNfcmluZyA9IChzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgKilmaXhfdG9fdmlydChGSVhfUFZf Q09OU09MRSk7CisgICAgY29uc19ldnRjaG4gPSByYXdfZXZ0Y2huOworCisgICAgcHJpbnRrKCJJ bml0aWFsaXNlZCBQViBjb25zb2xlIGF0IDB4JXAgd2l0aCBwZm4gJSNseCBhbmQgZXZ0Y2huICUj eFxuIiwKKyAgICAgICAgICAgIGNvbnNfcmluZywgcmF3X3BmbiwgY29uc19ldnRjaG4pOworICAg IHJldHVybjsKKworIGVycm9yOgorICAgIHByaW50aygiQ291bGRuJ3QgaW5pdGlhbGlzZSBQViBj b25zb2xlXG4iKTsKK30KKwordm9pZCBfX2luaXQgcHZfY29uc29sZV9zZXRfcnhfaGFuZGxlcihz ZXJpYWxfcnhfZm4gZm4pCit7CisgICAgY29uc19yeF9oYW5kbGVyID0gZm47Cit9CisKK3ZvaWQg X19pbml0IHB2X2NvbnNvbGVfaW5pdF9wb3N0aXJxKHZvaWQpCit7CisgICAgaWYgKCAhY29uc19y aW5nICkKKyAgICAgICAgcmV0dXJuOworCisgICAgeGVuX2h5cGVyY2FsbF9ldnRjaG5fdW5tYXNr KGNvbnNfZXZ0Y2huKTsKK30KKworc3RhdGljIHZvaWQgbm90aWZ5X2RhZW1vbih2b2lkKQorewor ICAgIHhlbl9oeXBlcmNhbGxfZXZ0Y2huX3NlbmQoY29uc19ldnRjaG4pOworfQorCitzaXplX3Qg cHZfY29uc29sZV9yeChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKK3sKKyAgICBjaGFyIGM7 CisgICAgWEVOQ09OU19SSU5HX0lEWCBjb25zLCBwcm9kOworICAgIHNpemVfdCByZWN2ID0gMDsK KworICAgIGlmICggIWNvbnNfcmluZyApCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogVE9E TzogbW92ZSB0aGlzIHNvbWV3aGVyZSAqLworICAgIGlmICggIXRlc3RfYml0KGNvbnNfZXZ0Y2hu LCBYRU5fc2hhcmVkX2luZm8tPmV2dGNobl9wZW5kaW5nKSApCisgICAgICAgIHJldHVybiAwOwor CisgICAgcHJvZCA9IEFDQ0VTU19PTkNFKGNvbnNfcmluZy0+aW5fcHJvZCk7CisgICAgY29ucyA9 IGNvbnNfcmluZy0+aW5fY29uczsKKworICAgIC8qCisgICAgICogTGF0Y2ggcG9pbnRlcnMgYmVm b3JlIGFjY2Vzc2luZyB0aGUgcmluZy4gSW5jbHVkZWQgY29tcGlsZXIgYmFycmllciBhbHNvCisg ICAgICogZW5zdXJlcyB0aGF0IHBvaW50ZXJzIGFyZSByZWFsbHkgcmVhZCBvbmx5IG9uY2UgaW50 byBsb2NhbCB2YXJpYWJsZXMuCisgICAgICovCisgICAgc21wX3JtYigpOworCisgICAgQVNTRVJU KChwcm9kIC0gY29ucykgPD0gc2l6ZW9mKGNvbnNfcmluZy0+aW4pKTsKKworICAgIHdoaWxlICgg Y29ucyAhPSBwcm9kICkKKyAgICB7CisgICAgICAgIGMgPSBjb25zX3JpbmctPmluW01BU0tfWEVO Q09OU19JRFgoY29ucysrLCBjb25zX3JpbmctPmluKV07CisgICAgICAgIGlmICggY29uc19yeF9o YW5kbGVyICkKKyAgICAgICAgICAgIGNvbnNfcnhfaGFuZGxlcihjLCByZWdzKTsKKyAgICAgICAg cmVjdisrOworICAgIH0KKworICAgIC8qIE5vIG5lZWQgZm9yIGEgbWVtIGJhcnJpZXIgYmVjYXVz ZSBldmVyeSBjaGFyYWN0ZXIgd2FzIGFscmVhZHkgY29uc3VtZWQgKi8KKyAgICBiYXJyaWVyKCk7 CisgICAgQUNDRVNTX09OQ0UoY29uc19yaW5nLT5pbl9jb25zKSA9IGNvbnM7CisgICAgbm90aWZ5 X2RhZW1vbigpOworCisgICAgY2xlYXJfYml0KGNvbnNfZXZ0Y2huLCBYRU5fc2hhcmVkX2luZm8t PmV2dGNobl9wZW5kaW5nKTsKKworICAgIHJldHVybiByZWN2OworfQorCitzdGF0aWMgc2l6ZV90 IHB2X3JpbmdfcHV0cyhjb25zdCBjaGFyICpidWYpCit7CisgICAgWEVOQ09OU19SSU5HX0lEWCBj b25zLCBwcm9kOworICAgIHNpemVfdCBzZW50ID0gMCwgYXZhaWw7CisgICAgYm9vbCBwdXRfciA9 IGZhbHNlOworCisgICAgd2hpbGUgKCBidWZbc2VudF0gIT0gJ1wwJyB8fCBwdXRfciApCisgICAg eworICAgICAgICBjb25zID0gQUNDRVNTX09OQ0UoY29uc19yaW5nLT5vdXRfY29ucyk7CisgICAg ICAgIHByb2QgPSBjb25zX3JpbmctPm91dF9wcm9kOworCisgICAgICAgIC8qCisgICAgICAgICAq IExhdGNoIHBvaW50ZXJzIGJlZm9yZSBhY2Nlc3NpbmcgdGhlIHJpbmcuIEluY2x1ZGVkIGNvbXBp bGVyIGJhcnJpZXIKKyAgICAgICAgICogZW5zdXJlcyB0aGF0IHBvaW50ZXJzIGFyZSByZWFsbHkg cmVhZCBvbmx5IG9uY2UgaW50byBsb2NhbCB2YXJpYWJsZXMuCisgICAgICAgICAqLworICAgICAg ICBzbXBfcm1iKCk7CisKKyAgICAgICAgQVNTRVJUKChwcm9kIC0gY29ucykgPD0gc2l6ZW9mKGNv bnNfcmluZy0+b3V0KSk7CisgICAgICAgIGF2YWlsID0gc2l6ZW9mKGNvbnNfcmluZy0+b3V0KSAt IChwcm9kIC0gY29ucyk7CisKKyAgICAgICAgaWYgKCBhdmFpbCA9PSAwICkKKyAgICAgICAgewor ICAgICAgICAgICAgLyogV2FpdCBmb3IgeGVuY29uc29sZWQgdG8gY29uc3VtZSBvdXIgb3V0cHV0 ICovCisgICAgICAgICAgICB4ZW5faHlwZXJjYWxsX3NjaGVkX29wKFNDSEVET1BfeWllbGQsIE5V TEwpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICB3aGlsZSAo IGF2YWlsICYmIChidWZbc2VudF0gIT0gJ1wwJyB8fCBwdXRfcikgKQorICAgICAgICB7CisgICAg ICAgICAgICBpZiAoIHB1dF9yICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25z X3JpbmctPm91dFtNQVNLX1hFTkNPTlNfSURYKHByb2QrKywgY29uc19yaW5nLT5vdXQpXSA9ICdc cic7CisgICAgICAgICAgICAgICAgcHV0X3IgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAg ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zX3JpbmctPm91 dFtNQVNLX1hFTkNPTlNfSURYKHByb2QrKywgY29uc19yaW5nLT5vdXQpXSA9CisgICAgICAgICAg ICAgICAgICAgIGJ1ZltzZW50XTsKKworICAgICAgICAgICAgICAgIC8qIFNlbmQgJ1xyJyBmb3Ig ZXZlcnkgJ1xuJyAqLworICAgICAgICAgICAgICAgIGlmICggYnVmW3NlbnRdID09ICdcbicgKQor ICAgICAgICAgICAgICAgICAgICBwdXRfciA9IHRydWU7CisgICAgICAgICAgICAgICAgc2VudCsr OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXZhaWwtLTsKKyAgICAgICAgfQorCisgICAg ICAgIC8qIFdyaXRlIHRvIHRoZSByaW5nIGJlZm9yZSB1cGRhdGluZyB0aGUgcG9pbnRlciAqLwor ICAgICAgICBzbXBfd21iKCk7CisgICAgICAgIEFDQ0VTU19PTkNFKGNvbnNfcmluZy0+b3V0X3By b2QpID0gcHJvZDsKKyAgICAgICAgbm90aWZ5X2RhZW1vbigpOworICAgIH0KKworICAgIHJldHVy biBzZW50OworfQorCit2b2lkIHB2X2NvbnNvbGVfcHV0cyhjb25zdCBjaGFyICpidWYpCit7Cisg ICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKworICAgIGlmICggIWNvbnNfcmluZyApCisgICAgICAg IHJldHVybjsKKworICAgIHNwaW5fbG9ja19pcnFzYXZlKCZ0eF9sb2NrLCBmbGFncyk7CisgICAg cHZfcmluZ19wdXRzKGJ1Zik7CisgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdHhfbG9jaywg ZmxhZ3MpOworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1m aWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAor ICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL2FzbS14ODYvZml4bWFwLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2ZpeG1hcC5oCmlu ZGV4IGRlZDRkZGYyMWIuLjE2Y2NhYTJjNzcgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14 ODYvZml4bWFwLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9maXhtYXAuaApAQCAtNDYsNiAr NDYsNyBAQCBlbnVtIGZpeGVkX2FkZHJlc3NlcyB7CiAgICAgRklYX0NPTV9FTkQsCiAgICAgRklY X0VIQ0lfREJHUCwKICNpZmRlZiBDT05GSUdfWEVOX0dVRVNUCisgICAgRklYX1BWX0NPTlNPTEUs CiAgICAgRklYX1hFTl9TSEFSRURfSU5GTywKICNlbmRpZiAvKiBDT05GSUdfWEVOX0dVRVNUICov CiAgICAgLyogRXZlcnl0aGluZyBlbHNlIHNob3VsZCBnbyBmdXJ0aGVyIGRvd24uICovCmRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0L2h5cGVyY2FsbC5oIGIveGVuL2luY2x1 ZGUvYXNtLXg4Ni9ndWVzdC9oeXBlcmNhbGwuaAppbmRleCBiMzZhMWNjMTg5Li44MWE5NTVkNDc5 IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0L2h5cGVyY2FsbC5oCisrKyBi L3hlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3QvaHlwZXJjYWxsLmgKQEAgLTEwNSw2ICsxMDUsMTEg QEAgc3RhdGljIGlubGluZSBpbnQgeGVuX2h5cGVyY2FsbF92Y3B1X29wKHVuc2lnbmVkIGludCBj bWQsIHVuc2lnbmVkIGludCB2Y3B1LAogICAgIHJldHVybiBfaHlwZXJjYWxsNjRfMyhsb25nLCBf X0hZUEVSVklTT1JfdmNwdV9vcCwgY21kLCB2Y3B1LCBhcmcpOwogfQogCitzdGF0aWMgaW5saW5l IGxvbmcgeGVuX2h5cGVyY2FsbF9ldmVudF9jaGFubmVsX29wKHVuc2lnbmVkIGludCBjbWQsIHZv aWQgKmFyZykKK3sKKyAgICByZXR1cm4gX2h5cGVyY2FsbDY0XzIobG9uZywgX19IWVBFUlZJU09S X2V2ZW50X2NoYW5uZWxfb3AsIGNtZCwgYXJnKTsKK30KKwogc3RhdGljIGlubGluZSBsb25nIHhl bl9oeXBlcmNhbGxfaHZtX29wKHVuc2lnbmVkIGludCBvcCwgdm9pZCAqYXJnKQogewogICAgIHJl dHVybiBfaHlwZXJjYWxsNjRfMihsb25nLCBfX0hZUEVSVklTT1JfaHZtX29wLCBvcCwgYXJnKTsK QEAgLTEyNiw2ICsxMzEsMzQgQEAgc3RhdGljIGlubGluZSBsb25nIHhlbl9oeXBlcmNhbGxfc2h1 dGRvd24odW5zaWduZWQgaW50IHJlYXNvbikKICAgICByZXR1cm4geGVuX2h5cGVyY2FsbF9zY2hl ZF9vcChTQ0hFRE9QX3NodXRkb3duLCAmcyk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgbG9uZyB4ZW5f aHlwZXJjYWxsX2V2dGNobl9zZW5kKGV2dGNobl9wb3J0X3QgcG9ydCkKK3sKKyAgICBzdHJ1Y3Qg ZXZ0Y2huX3NlbmQgc2VuZCA9IHsgLnBvcnQgPSBwb3J0IH07CisKKyAgICByZXR1cm4geGVuX2h5 cGVyY2FsbF9ldmVudF9jaGFubmVsX29wKEVWVENITk9QX3NlbmQsICZzZW5kKTsKK30KKworc3Rh dGljIGlubGluZSBsb25nIHhlbl9oeXBlcmNhbGxfZXZ0Y2huX3VubWFzayhldnRjaG5fcG9ydF90 IHBvcnQpCit7CisgICAgc3RydWN0IGV2dGNobl91bm1hc2sgdW5tYXNrID0geyAucG9ydCA9IHBv cnQgfTsKKworICAgIHJldHVybiB4ZW5faHlwZXJjYWxsX2V2ZW50X2NoYW5uZWxfb3AoRVZUQ0hO T1BfdW5tYXNrLCAmdW5tYXNrKTsKK30KKworc3RhdGljIGlubGluZSBsb25nIHhlbl9oeXBlcmNh bGxfaHZtX2dldF9wYXJhbSh1aW50MzJfdCBpbmRleCwgdWludDY0X3QgKnZhbHVlKQoreworICAg IHN0cnVjdCB4ZW5faHZtX3BhcmFtIHhodiA9IHsKKyAgICAgICAgLmRvbWlkID0gRE9NSURfU0VM RiwKKyAgICAgICAgLmluZGV4ID0gaW5kZXgsCisgICAgfTsKKyAgICBsb25nIHJldCA9IHhlbl9o eXBlcmNhbGxfaHZtX29wKEhWTU9QX2dldF9wYXJhbSwgJnhodik7CisKKyAgICBpZiAoIHJldCA9 PSAwICkKKyAgICAgICAgKnZhbHVlID0geGh2LnZhbHVlOworCisgICAgcmV0dXJuIHJldDsKK30K Kwogc3RhdGljIGlubGluZSBsb25nIHhlbl9oeXBlcmNhbGxfc2V0X2V2dGNobl91cGNhbGxfdmVj dG9yKAogICAgIHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGludCB2ZWN0b3IpCiB7CmRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vcHZfY29uc29sZS5oIGIveGVuL2luY2x1ZGUveGVuL3B2 X2NvbnNvbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lNTc4YjU2 NjIwCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUveGVuL3B2X2NvbnNvbGUuaApAQCAt MCwwICsxLDMyIEBACisjaWZuZGVmIF9fWEVOX1BWX0NPTlNPTEVfSF9fCisjZGVmaW5lIF9fWEVO X1BWX0NPTlNPTEVfSF9fCisKKyNpbmNsdWRlIDx4ZW4vc2VyaWFsLmg+CisKKyNpZmRlZiBDT05G SUdfWEVOX0dVRVNUCisKK3ZvaWQgcHZfY29uc29sZV9pbml0KHZvaWQpOwordm9pZCBwdl9jb25z b2xlX3NldF9yeF9oYW5kbGVyKHNlcmlhbF9yeF9mbiBmbik7Cit2b2lkIHB2X2NvbnNvbGVfaW5p dF9wb3N0aXJxKHZvaWQpOwordm9pZCBwdl9jb25zb2xlX3B1dHMoY29uc3QgY2hhciAqYnVmKTsK K3NpemVfdCBwdl9jb25zb2xlX3J4KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKTsKKworI2Vs c2UKKworc3RhdGljIGlubGluZSB2b2lkIHB2X2NvbnNvbGVfaW5pdCh2b2lkKSB7fQorc3RhdGlj IGlubGluZSB2b2lkIHB2X2NvbnNvbGVfc2V0X3J4X2hhbmRsZXIoc2VyaWFsX3J4X2ZuIGZuKSB7 IH0KK3N0YXRpYyBpbmxpbmUgdm9pZCBwdl9jb25zb2xlX2luaXRfcG9zdGlycSh2b2lkKSB7IH0K K3N0YXRpYyBpbmxpbmUgdm9pZCBwdl9jb25zb2xlX3B1dHMoY29uc3QgY2hhciAqYnVmKSB7IH0K K3N0YXRpYyBpbmxpbmUgc2l6ZV90IHB2X2NvbnNvbGVfcngoc3RydWN0IGNwdV91c2VyX3JlZ3Mg KnJlZ3MpIHsgcmV0dXJuIDA7IH0KKworI2VuZGlmIC8qICFDT05GSUdfWEVOX0dVRVNUICovCisj ZW5kaWYgLyogX19YRU5fUFZfQ09OU09MRV9IX18gKi8KKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6 CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDog NAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAq LwotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZl bA==