From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v4 04/27] x86: move PV invalid op emulation code Date: Thu, 8 Jun 2017 18:11:40 +0100 Message-ID: <20170608171203.20416-5-wei.liu2@citrix.com> References: <20170608171203.20416-1-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dJ0yj-0004sg-PH for xen-devel@lists.xenproject.org; Thu, 08 Jun 2017 17:12:13 +0000 In-Reply-To: <20170608171203.20416-1-wei.liu2@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: Andrew Cooper , Wei Liu , Jan Beulich List-Id: xen-devel@lists.xenproject.org TW92ZSB0aGUgY29kZSB0byBwdi9lbXVsLWludi1vcC5jLiBQcmVmaXggZW11bGF0ZV8qIGZ1bmN0 aW9ucyB3aXRoIHB2XwphbmQgZXhwb3J0IHRoZW0gdmlhIHB2L3RyYXBzLmguCgpQdXJlIGNvZGUg bW90aW9uIGV4Y2VwdCBmb3IgdGhlIHJlbmFtZS4KClNpZ25lZC1vZmYtYnk6IFdlaSBMaXUgPHdl aS5saXUyQGNpdHJpeC5jb20+Ci0tLQogeGVuL2FyY2gveDg2L3B2L01ha2VmaWxlICAgICAgIHwg ICAxICsKIHhlbi9hcmNoL3g4Ni9wdi9lbXVsLWludi1vcC5jICB8IDEyMyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gveDg2L3RyYXBzLmMgICAgICAg ICAgIHwgIDc1ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9pbmNsdWRlL2FzbS14ODYv cHYvdHJhcHMuaCB8ICAgNCArKwogNCBmaWxlcyBjaGFuZ2VkLCAxMzAgaW5zZXJ0aW9ucygrKSwg NzMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gveDg2L3B2L2VtdWwt aW52LW9wLmMKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvTWFrZWZpbGUgYi94ZW4vYXJj aC94ODYvcHYvTWFrZWZpbGUKaW5kZXggMWY2ZmJkM2Y1Yy4uNDJjYTY0ZGM5ZSAxMDA2NDQKLS0t IGEveGVuL2FyY2gveDg2L3B2L01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL3g4Ni9wdi9NYWtlZmls ZQpAQCAtNSw1ICs1LDYgQEAgb2JqLWJpbi15ICs9IGRvbTBfYnVpbGQuaW5pdC5vCiBvYmoteSAr PSBkb21haW4ubwogb2JqLXkgKz0gZW11bGF0ZS5vCiBvYmoteSArPSBlbXVsLWdhdGUtb3Aubwor b2JqLXkgKz0gZW11bC1pbnYtb3Aubwogb2JqLXkgKz0gZW11bC1wcml2LW9wLm8KIG9iai1iaW4t eSArPSBncHJfc3dpdGNoLm8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wdi9lbXVsLWludi1v cC5jIGIveGVuL2FyY2gveDg2L3B2L2VtdWwtaW52LW9wLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uNmE3MzFjNjA0OQotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNo L3g4Ni9wdi9lbXVsLWludi1vcC5jCkBAIC0wLDAgKzEsMTIzIEBACisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisgKiBhcmNoL3g4Ni9wdi9lbXVsLWludi1vcC5jCisgKgorICogRW11bGF0ZSBpbnZh bGlkIG9wIGZvciBQViBndWVzdHMKKyAqCisgKiBNb2RpZmljYXRpb25zIHRvIExpbnV4IG9yaWdp bmFsIGFyZSBjb3B5cmlnaHQgKGMpIDIwMDItMjAwNCwgSyBBIEZyYXNlcgorICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICog R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+CisjaW5j bHVkZSA8eGVuL2V2ZW50Lmg+CisjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgorI2luY2x1 ZGUgPHhlbi9pb2NhcC5oPgorI2luY2x1ZGUgPHhlbi9zcGlubG9jay5oPgorI2luY2x1ZGUgPHhl bi90cmFjZS5oPgorCisjaW5jbHVkZSA8YXNtL2FwaWMuaD4KKyNpbmNsdWRlIDxhc20vZGVidWdy ZWcuaD4KKyNpbmNsdWRlIDxhc20vaHBldC5oPgorI2luY2x1ZGUgPGFzbS9oeXBlcmNhbGwuaD4K KyNpbmNsdWRlIDxhc20vbWMxNDY4MThydGMuaD4KKyNpbmNsdWRlIDxhc20vcDJtLmg+CisjaW5j bHVkZSA8YXNtL3B2L3RyYXBzLmg+CisjaW5jbHVkZSA8YXNtL3NoYXJlZC5oPgorI2luY2x1ZGUg PGFzbS90cmFwcy5oPgorI2luY2x1ZGUgPGFzbS94ODZfZW11bGF0ZS5oPgorCisjaW5jbHVkZSA8 eHNtL3hzbS5oPgorCisjaW5jbHVkZSAiZW11bGF0ZS5oIgorCitpbnQgcHZfZW11bGF0ZV9pbnZh bGlkX3JkdHNjcChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKK3sKKyAgICBjaGFyIG9wY29k ZVszXTsKKyAgICB1bnNpZ25lZCBsb25nIGVpcCwgcmM7CisgICAgc3RydWN0IHZjcHUgKnYgPSBj dXJyZW50OworCisgICAgZWlwID0gcmVncy0+cmlwOworICAgIGlmICggKHJjID0gY29weV9mcm9t X3VzZXIob3Bjb2RlLCAoY2hhciAqKWVpcCwgc2l6ZW9mKG9wY29kZSkpKSAhPSAwICkKKyAgICB7 CisgICAgICAgIHB2X2luamVjdF9wYWdlX2ZhdWx0KDAsIGVpcCArIHNpemVvZihvcGNvZGUpIC0g cmMpOworICAgICAgICByZXR1cm4gRVhDUkVUX2ZhdWx0X2ZpeGVkOworICAgIH0KKyAgICBpZiAo IG1lbWNtcChvcGNvZGUsICJceGZceDFceGY5Iiwgc2l6ZW9mKG9wY29kZSkpICkKKyAgICAgICAg cmV0dXJuIDA7CisgICAgZWlwICs9IHNpemVvZihvcGNvZGUpOworICAgIHB2X3NvZnRfcmR0c2Mo diwgcmVncywgMSk7CisgICAgcHZfZW11bF9pbnN0cnVjdGlvbl9kb25lKHJlZ3MsIGVpcCk7Cisg ICAgcmV0dXJuIEVYQ1JFVF9mYXVsdF9maXhlZDsKK30KKworaW50IHB2X2VtdWxhdGVfZm9yY2Vk X2ludmFsaWRfb3Aoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCit7CisgICAgY2hhciBzaWdb NV0sIGluc3RyWzJdOworICAgIHVuc2lnbmVkIGxvbmcgZWlwLCByYzsKKyAgICBzdHJ1Y3QgY3B1 aWRfbGVhZiByZXM7CisKKyAgICBlaXAgPSByZWdzLT5yaXA7CisKKyAgICAvKiBDaGVjayBmb3Ig Zm9yY2VkIGVtdWxhdGlvbiBzaWduYXR1cmU6IHVkMiA7IC5hc2NpaSAieGVuIi4gKi8KKyAgICBp ZiAoIChyYyA9IGNvcHlfZnJvbV91c2VyKHNpZywgKGNoYXIgKillaXAsIHNpemVvZihzaWcpKSkg IT0gMCApCisgICAgeworICAgICAgICBwdl9pbmplY3RfcGFnZV9mYXVsdCgwLCBlaXAgKyBzaXpl b2Yoc2lnKSAtIHJjKTsKKyAgICAgICAgcmV0dXJuIEVYQ1JFVF9mYXVsdF9maXhlZDsKKyAgICB9 CisgICAgaWYgKCBtZW1jbXAoc2lnLCAiXHhmXHhieGVuIiwgc2l6ZW9mKHNpZykpICkKKyAgICAg ICAgcmV0dXJuIDA7CisgICAgZWlwICs9IHNpemVvZihzaWcpOworCisgICAgLyogV2Ugb25seSBl bXVsYXRlIENQVUlELiAqLworICAgIGlmICggKCByYyA9IGNvcHlfZnJvbV91c2VyKGluc3RyLCAo Y2hhciAqKWVpcCwgc2l6ZW9mKGluc3RyKSkpICE9IDAgKQorICAgIHsKKyAgICAgICAgcHZfaW5q ZWN0X3BhZ2VfZmF1bHQoMCwgZWlwICsgc2l6ZW9mKGluc3RyKSAtIHJjKTsKKyAgICAgICAgcmV0 dXJuIEVYQ1JFVF9mYXVsdF9maXhlZDsKKyAgICB9CisgICAgaWYgKCBtZW1jbXAoaW5zdHIsICJc eGZceGEyIiwgc2l6ZW9mKGluc3RyKSkgKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIElm IGNwdWlkIGZhdWx0aW5nIGlzIGVuYWJsZWQgYW5kIENQTD4wIGluamVjdCBhICNHUCBpbiBwbGFj ZSBvZiAjVUQuICovCisgICAgaWYgKCBjdXJyZW50LT5hcmNoLmNwdWlkX2ZhdWx0aW5nICYmICFn dWVzdF9rZXJuZWxfbW9kZShjdXJyZW50LCByZWdzKSApCisgICAgeworICAgICAgICByZWdzLT5y aXAgPSBlaXA7CisgICAgICAgIHB2X2luamVjdF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwg cmVncy0+ZXJyb3JfY29kZSk7CisgICAgICAgIHJldHVybiBFWENSRVRfZmF1bHRfZml4ZWQ7Cisg ICAgfQorCisgICAgZWlwICs9IHNpemVvZihpbnN0cik7CisKKyAgICBndWVzdF9jcHVpZChjdXJy ZW50LCByZWdzLT5lYXgsIHJlZ3MtPmVjeCwgJnJlcyk7CisKKyAgICByZWdzLT5yYXggPSByZXMu YTsKKyAgICByZWdzLT5yYnggPSByZXMuYjsKKyAgICByZWdzLT5yY3ggPSByZXMuYzsKKyAgICBy ZWdzLT5yZHggPSByZXMuZDsKKworICAgIHB2X2VtdWxfaW5zdHJ1Y3Rpb25fZG9uZShyZWdzLCBl aXApOworCisgICAgdHJhY2VfdHJhcF9vbmVfYWRkcihUUkNfUFZfRk9SQ0VEX0lOVkFMSURfT1As IHJlZ3MtPnJpcCk7CisKKyAgICByZXR1cm4gRVhDUkVUX2ZhdWx0X2ZpeGVkOworfQorCisvKgor ICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgor ICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9k ZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90cmFwcy5jIGIv eGVuL2FyY2gveDg2L3RyYXBzLmMKaW5kZXggN2I3ODFmMTdkYi4uZmYyNWY2NzlmNSAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L3RyYXBzLmMKKysrIGIveGVuL2FyY2gveDg2L3RyYXBzLmMKQEAg LTk2OCw3NyArOTY4LDYgQEAgdm9pZCBjcHVpZF9oeXBlcnZpc29yX2xlYXZlcyhjb25zdCBzdHJ1 Y3QgdmNwdSAqdiwgdWludDMyX3QgbGVhZiwKICAgICB9CiB9CiAKLXN0YXRpYyBpbnQgZW11bGF0 ZV9pbnZhbGlkX3JkdHNjcChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKLXsKLSAgICBjaGFy IG9wY29kZVszXTsKLSAgICB1bnNpZ25lZCBsb25nIGVpcCwgcmM7Ci0gICAgc3RydWN0IHZjcHUg KnYgPSBjdXJyZW50OwotCi0gICAgZWlwID0gcmVncy0+cmlwOwotICAgIGlmICggKHJjID0gY29w eV9mcm9tX3VzZXIob3Bjb2RlLCAoY2hhciAqKWVpcCwgc2l6ZW9mKG9wY29kZSkpKSAhPSAwICkK LSAgICB7Ci0gICAgICAgIHB2X2luamVjdF9wYWdlX2ZhdWx0KDAsIGVpcCArIHNpemVvZihvcGNv ZGUpIC0gcmMpOwotICAgICAgICByZXR1cm4gRVhDUkVUX2ZhdWx0X2ZpeGVkOwotICAgIH0KLSAg ICBpZiAoIG1lbWNtcChvcGNvZGUsICJceGZceDFceGY5Iiwgc2l6ZW9mKG9wY29kZSkpICkKLSAg ICAgICAgcmV0dXJuIDA7Ci0gICAgZWlwICs9IHNpemVvZihvcGNvZGUpOwotICAgIHB2X3NvZnRf cmR0c2ModiwgcmVncywgMSk7Ci0gICAgcHZfZW11bF9pbnN0cnVjdGlvbl9kb25lKHJlZ3MsIGVp cCk7Ci0gICAgcmV0dXJuIEVYQ1JFVF9mYXVsdF9maXhlZDsKLX0KLQotc3RhdGljIGludCBlbXVs YXRlX2ZvcmNlZF9pbnZhbGlkX29wKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQotewotICAg IGNoYXIgc2lnWzVdLCBpbnN0clsyXTsKLSAgICB1bnNpZ25lZCBsb25nIGVpcCwgcmM7Ci0gICAg c3RydWN0IGNwdWlkX2xlYWYgcmVzOwotCi0gICAgZWlwID0gcmVncy0+cmlwOwotCi0gICAgLyog Q2hlY2sgZm9yIGZvcmNlZCBlbXVsYXRpb24gc2lnbmF0dXJlOiB1ZDIgOyAuYXNjaWkgInhlbiIu ICovCi0gICAgaWYgKCAocmMgPSBjb3B5X2Zyb21fdXNlcihzaWcsIChjaGFyICopZWlwLCBzaXpl b2Yoc2lnKSkpICE9IDAgKQotICAgIHsKLSAgICAgICAgcHZfaW5qZWN0X3BhZ2VfZmF1bHQoMCwg ZWlwICsgc2l6ZW9mKHNpZykgLSByYyk7Ci0gICAgICAgIHJldHVybiBFWENSRVRfZmF1bHRfZml4 ZWQ7Ci0gICAgfQotICAgIGlmICggbWVtY21wKHNpZywgIlx4Zlx4YnhlbiIsIHNpemVvZihzaWcp KSApCi0gICAgICAgIHJldHVybiAwOwotICAgIGVpcCArPSBzaXplb2Yoc2lnKTsKLQotICAgIC8q IFdlIG9ubHkgZW11bGF0ZSBDUFVJRC4gKi8KLSAgICBpZiAoICggcmMgPSBjb3B5X2Zyb21fdXNl cihpbnN0ciwgKGNoYXIgKillaXAsIHNpemVvZihpbnN0cikpKSAhPSAwICkKLSAgICB7Ci0gICAg ICAgIHB2X2luamVjdF9wYWdlX2ZhdWx0KDAsIGVpcCArIHNpemVvZihpbnN0cikgLSByYyk7Ci0g ICAgICAgIHJldHVybiBFWENSRVRfZmF1bHRfZml4ZWQ7Ci0gICAgfQotICAgIGlmICggbWVtY21w KGluc3RyLCAiXHhmXHhhMiIsIHNpemVvZihpbnN0cikpICkKLSAgICAgICAgcmV0dXJuIDA7Ci0K LSAgICAvKiBJZiBjcHVpZCBmYXVsdGluZyBpcyBlbmFibGVkIGFuZCBDUEw+MCBpbmplY3QgYSAj R1AgaW4gcGxhY2Ugb2YgI1VELiAqLwotICAgIGlmICggY3VycmVudC0+YXJjaC5jcHVpZF9mYXVs dGluZyAmJiAhZ3Vlc3Rfa2VybmVsX21vZGUoY3VycmVudCwgcmVncykgKQotICAgIHsKLSAgICAg ICAgcmVncy0+cmlwID0gZWlwOwotICAgICAgICBwdl9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBf Z3BfZmF1bHQsIHJlZ3MtPmVycm9yX2NvZGUpOwotICAgICAgICByZXR1cm4gRVhDUkVUX2ZhdWx0 X2ZpeGVkOwotICAgIH0KLQotICAgIGVpcCArPSBzaXplb2YoaW5zdHIpOwotCi0gICAgZ3Vlc3Rf Y3B1aWQoY3VycmVudCwgcmVncy0+ZWF4LCByZWdzLT5lY3gsICZyZXMpOwotCi0gICAgcmVncy0+ cmF4ID0gcmVzLmE7Ci0gICAgcmVncy0+cmJ4ID0gcmVzLmI7Ci0gICAgcmVncy0+cmN4ID0gcmVz LmM7Ci0gICAgcmVncy0+cmR4ID0gcmVzLmQ7Ci0KLSAgICBwdl9lbXVsX2luc3RydWN0aW9uX2Rv bmUocmVncywgZWlwKTsKLQotICAgIHRyYWNlX3RyYXBfb25lX2FkZHIoVFJDX1BWX0ZPUkNFRF9J TlZBTElEX09QLCByZWdzLT5yaXApOwotCi0gICAgcmV0dXJuIEVYQ1JFVF9mYXVsdF9maXhlZDsK LX0KLQogdm9pZCBkb19pbnZhbGlkX29wKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogewog ICAgIGNvbnN0IHN0cnVjdCBidWdfZnJhbWUgKmJ1ZyA9IE5VTEw7CkBAIC0xMDUzLDggKzk4Miw4 IEBAIHZvaWQgZG9faW52YWxpZF9vcChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKIAogICAg IGlmICggbGlrZWx5KGd1ZXN0X21vZGUocmVncykpICkKICAgICB7Ci0gICAgICAgIGlmICggIWVt dWxhdGVfaW52YWxpZF9yZHRzY3AocmVncykgJiYKLSAgICAgICAgICAgICAhZW11bGF0ZV9mb3Jj ZWRfaW52YWxpZF9vcChyZWdzKSApCisgICAgICAgIGlmICggIXB2X2VtdWxhdGVfaW52YWxpZF9y ZHRzY3AocmVncykgJiYKKyAgICAgICAgICAgICAhcHZfZW11bGF0ZV9mb3JjZWRfaW52YWxpZF9v cChyZWdzKSApCiAgICAgICAgICAgICBwdl9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfaW52YWxp ZF9vcCwgWDg2X0VWRU5UX05PX0VDKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcHYvdHJhcHMuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYv cHYvdHJhcHMuaAppbmRleCAzZjNiYWI0ZDhjLi5hNGFmNjllNDg2IDEwMDY0NAotLS0gYS94ZW4v aW5jbHVkZS9hc20teDg2L3B2L3RyYXBzLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wdi90 cmFwcy5oCkBAIC0yNywxMSArMjcsMTUgQEAKIAogaW50IHB2X2VtdWxhdGVfcHJpdmlsZWdlZF9v cChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncyk7CiB2b2lkIHB2X2VtdWxhdGVfZ2F0ZV9vcChz dHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncyk7CitpbnQgcHZfZW11bGF0ZV9pbnZhbGlkX3JkdHNj cChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncyk7CitpbnQgcHZfZW11bGF0ZV9mb3JjZWRfaW52 YWxpZF9vcChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncyk7CiAKICNlbHNlICAvKiAhQ09ORklH X1BWICovCiAKIGludCBwdl9lbXVsYXRlX3ByaXZpbGVnZWRfb3Aoc3RydWN0IGNwdV91c2VyX3Jl Z3MgKnJlZ3MpIHsgcmV0dXJuIDA7IH0KIHZvaWQgcHZfZW11bGF0ZV9nYXRlX29wKHN0cnVjdCBj cHVfdXNlcl9yZWdzICpyZWdzKSB7fQoraW50IHB2X2VtdWxhdGVfaW52YWxpZF9yZHRzY3Aoc3Ry dWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpIHsgcmV0dXJuIDA7IH0KK2ludCBwdl9lbXVsYXRlX2Zv cmNlZF9pbnZhbGlkX29wKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKSB7IHJldHVybiAwOyB9 CiAKICNlbmRpZiAvKiBDT05GSUdfUFYgKi8KIAotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==