From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 4/9] x86/pv: Implement pv_hypercall() in C Date: Mon, 18 Jul 2016 10:51:40 +0100 Message-ID: <1468835505-7278-5-git-send-email-andrew.cooper3@citrix.com> References: <1468835505-7278-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: <1468835505-7278-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: Andrew Cooper , Jan Beulich List-Id: xen-devel@lists.xenproject.org SW4gYSBzaW1pbGFyIHN0eWxlIHRvIGh2bV9kb19oeXBlcmNhbGwoKS4gIFRoZSBDIHZlcnNpb24g aXMgZmFyIGVhc2llciB0bwp1bmRlcnN0YW5kIGFuZCBlZGl0IHRoYW4gdGhlIGFzc2VtYmx5IHZl cnNpb25zLgoKVGhlcmUgYXJlIGEgZmV3IHNtYWxsIGRpZmZlcmVuY2VzIGhvd2V2ZXIuICBUaGUg cmVnaXN0ZXIgY2xvYmJlcmluZyB2YWx1ZXMKaGF2ZSBjaGFuZ2VkICh0byBtYXRjaCB0aGUgSFZN IHNpZGUpLCBhbmQgaW4gcGFydGljdWxhciBjbG9iYmVyIHRoZSB1cHBlcgozMmJpdHMgb2YgNjRi aXQgYXJndW1lbnRzLiAgVGhlIGh5cGVyY2FsbCBhbmQgcGVyZm9ybWFuY2UgY291bnRlciByZWNv cmQgYXJlCnJlb3JkZXJlZCB0byBpbmNyZWFzZSBjb2RlIHNoYXJpbmcgYmV0d2VlbiB0aGUgMzJi aXQgYW5kIDY0Yml0IGNhc2VzLgoKVGhlIHNvbGUgY2FsbGVycyBvZiBfX3RyYWNlX2h5cGVyY2Fs bF9lbnRyeSgpIHdlcmUgdGhlIGFzc2VtYmx5IGNvZGUuICBHaXZlbgp0aGUgbmV3IEMgbGF5b3V0 LCBpdCBpcyBtb3JlIGNvbnZlbmllbnQgdG8gZm9sZCBfX3RyYWNlX2h5cGVyY2FsbF9lbnRyeSgp IGludG8KcHZfaHlwZXJjYWxsKCksIGFuZCBjYWxsIF9fdHJhY2VfaHlwZXJjYWxsKCkgZGlyZWN0 bHkuCgpGaW5hbGx5LCBwdl9oeXBlcmNhbGwoKSB3aWxsIHRyZWF0IGEgTlVMTCBoeXBlcmNhbGwg ZnVuY3Rpb24gcG9pbnRlciBhcwotRU5PU1lTLCBhbGxvd2luZyBmdXJ0aGVyIGNsZWFudXAuCgpT aWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgot LS0KQ0M6IEphbiBCZXVsaWNoIDxKQmV1bGljaEBzdXNlLmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYv aHlwZXJjYWxsLmMgICAgICAgICAgIHwgMTE1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIHhlbi9hcmNoL3g4Ni90cmFjZS5jICAgICAgICAgICAgICAgfCAgMjcgLS0tLS0t LS0tCiB4ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMgIHwgICAxIC0KIHhlbi9hcmNo L3g4Ni94ODZfNjQvY29tcGF0L2VudHJ5LlMgfCAgNjggKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQog eGVuL2FyY2gveDg2L3g4Nl82NC9lbnRyeS5TICAgICAgICB8ICA2MCArLS0tLS0tLS0tLS0tLS0t LS0tCiA1IGZpbGVzIGNoYW5nZWQsIDExOSBpbnNlcnRpb25zKCspLCAxNTIgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h5cGVyY2FsbC5jIGIveGVuL2FyY2gveDg2L2h5 cGVyY2FsbC5jCmluZGV4IDRiNDJmODYuLjJkYzc4N2UgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9oeXBlcmNhbGwuYworKysgYi94ZW4vYXJjaC94ODYvaHlwZXJjYWxsLmMKQEAgLTE3LDcgKzE3 LDkgQEAKICAqIENvcHlyaWdodCAoYykgMjAxNSwyMDE2IENpdHJpeCBTeXN0ZW1zIEx0ZC4KICAq LwogCisjaW5jbHVkZSA8eGVuL2NvbXBpbGVyLmg+CiAjaW5jbHVkZSA8eGVuL2h5cGVyY2FsbC5o PgorI2luY2x1ZGUgPHhlbi90cmFjZS5oPgogCiAjZGVmaW5lIEFSR1MoeCwgbikgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCiAgICAgWyBfX0hZUEVSVklTT1JfICMjIHggXSA9IChuKQpA QCAtMTExLDYgKzExMywxMTkgQEAgY29uc3QgdWludDhfdCBjb21wYXRfaHlwZXJjYWxsX2FyZ3Nf dGFibGVbTlJfaHlwZXJjYWxsc10gPQogCiAjdW5kZWYgQVJHUwogCitsb25nIHB2X2h5cGVyY2Fs bChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKK3sKKyAgICBzdHJ1Y3QgdmNwdSAqY3VyciA9 IGN1cnJlbnQ7CisjaWZuZGVmIE5ERUJVRworICAgIHVuc2lnbmVkIGxvbmcgb2xkX3JpcCA9IHJl Z3MtPnJpcDsKKyNlbmRpZgorICAgIGxvbmcgcmV0OworICAgIHVpbnQzMl90IGVheCA9IHJlZ3Mt PmVheDsKKworICAgIEFTU0VSVChjdXJyLT5hcmNoLmZsYWdzICYgVEZfa2VybmVsX21vZGUpOwor CisgICAgaWYgKCAoZWF4ID49IE5SX2h5cGVyY2FsbHMpIHx8ICFoeXBlcmNhbGxfdGFibGVbZWF4 XSApCisgICAgICAgICByZXR1cm4gLUVOT1NZUzsKKworICAgIGlmICggIWlzX3B2XzMyYml0X3Zj cHUoY3VycikgKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbG9uZyByZGkgPSByZWdzLT5yZGk7 CisgICAgICAgIHVuc2lnbmVkIGxvbmcgcnNpID0gcmVncy0+cnNpOworICAgICAgICB1bnNpZ25l ZCBsb25nIHJkeCA9IHJlZ3MtPnJkeDsKKyAgICAgICAgdW5zaWduZWQgbG9uZyByMTAgPSByZWdz LT5yMTA7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgcjggPSByZWdzLT5yODsKKyAgICAgICAgdW5z aWduZWQgbG9uZyByOSA9IHJlZ3MtPnI5OworCisjaWZuZGVmIE5ERUJVRworICAgICAgICAvKiBE ZWxpYmVyYXRlbHkgY29ycnVwdCBwYXJhbWV0ZXIgcmVncyBub3QgdXNlZCBieSB0aGlzIGh5cGVy Y2FsbC4gKi8KKyAgICAgICAgc3dpdGNoICggaHlwZXJjYWxsX2FyZ3NfdGFibGVbZWF4XSApCisg ICAgICAgIHsKKyAgICAgICAgY2FzZSAwOiByZGkgPSAweGRlYWRiZWVmZGVhZGYwMGRVTDsKKyAg ICAgICAgY2FzZSAxOiByc2kgPSAweGRlYWRiZWVmZGVhZGYwMGRVTDsKKyAgICAgICAgY2FzZSAy OiByZHggPSAweGRlYWRiZWVmZGVhZGYwMGRVTDsKKyAgICAgICAgY2FzZSAzOiByMTAgPSAweGRl YWRiZWVmZGVhZGYwMGRVTDsKKyAgICAgICAgY2FzZSA0OiByOCA9IDB4ZGVhZGJlZWZkZWFkZjAw ZFVMOworICAgICAgICBjYXNlIDU6IHI5ID0gMHhkZWFkYmVlZmRlYWRmMDBkVUw7CisgICAgICAg IH0KKyNlbmRpZgorICAgICAgICBpZiAoIHVubGlrZWx5KHRiX2luaXRfZG9uZSkgKQorICAgICAg ICB7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGFyZ3NbNl0gPSB7IHJkaSwgcnNpLCByZHgs IHIxMCwgcjgsIHI5IH07CisKKyAgICAgICAgICAgIF9fdHJhY2VfaHlwZXJjYWxsKFRSQ19QVl9I WVBFUkNBTExfVjIsIGVheCwgYXJncyk7CisgICAgICAgIH0KKworICAgICAgICByZXQgPSBoeXBl cmNhbGxfdGFibGVbZWF4XShyZGksIHJzaSwgcmR4LCByMTAsIHI4LCByOSk7CisKKyNpZm5kZWYg TkRFQlVHCisgICAgICAgIGlmICggcmVncy0+cmlwID09IG9sZF9yaXAgKQorICAgICAgICB7Cisg ICAgICAgICAgICAvKiBEZWxpYmVyYXRlbHkgY29ycnVwdCBwYXJhbWV0ZXIgcmVncyB1c2VkIGJ5 IHRoaXMgaHlwZXJjYWxsLiAqLworICAgICAgICAgICAgc3dpdGNoICggaHlwZXJjYWxsX2FyZ3Nf dGFibGVbZWF4XSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICBjYXNlIDY6IHJlZ3MtPnI5 ICA9IDB4ZGVhZGJlZWZkZWFkZjAwZFVMOworICAgICAgICAgICAgY2FzZSA1OiByZWdzLT5yOCAg PSAweGRlYWRiZWVmZGVhZGYwMGRVTDsKKyAgICAgICAgICAgIGNhc2UgNDogcmVncy0+cjEwID0g MHhkZWFkYmVlZmRlYWRmMDBkVUw7CisgICAgICAgICAgICBjYXNlIDM6IHJlZ3MtPmVkeCA9IDB4 ZGVhZGJlZWZkZWFkZjAwZFVMOworICAgICAgICAgICAgY2FzZSAyOiByZWdzLT5lc2kgPSAweGRl YWRiZWVmZGVhZGYwMGRVTDsKKyAgICAgICAgICAgIGNhc2UgMTogcmVncy0+ZWRpID0gMHhkZWFk YmVlZmRlYWRmMDBkVUw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0K KyAgICBlbHNlCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgZWJ4ID0gcmVncy0+X2VieDsK KyAgICAgICAgdW5zaWduZWQgaW50IGVjeCA9IHJlZ3MtPl9lY3g7CisgICAgICAgIHVuc2lnbmVk IGludCBlZHggPSByZWdzLT5fZWR4OworICAgICAgICB1bnNpZ25lZCBpbnQgZXNpID0gcmVncy0+ X2VzaTsKKyAgICAgICAgdW5zaWduZWQgaW50IGVkaSA9IHJlZ3MtPl9lZGk7CisgICAgICAgIHVu c2lnbmVkIGludCBlYnAgPSByZWdzLT5fZWJwOworCisjaWZuZGVmIE5ERUJVRworICAgICAgICAv KiBEZWxpYmVyYXRlbHkgY29ycnVwdCBwYXJhbWV0ZXIgcmVncyBub3QgdXNlZCBieSB0aGlzIGh5 cGVyY2FsbC4gKi8KKyAgICAgICAgc3dpdGNoICggY29tcGF0X2h5cGVyY2FsbF9hcmdzX3RhYmxl W2VheF0gKQorICAgICAgICB7CisgICAgICAgIGNhc2UgMDogZWJ4ID0gMHhkZWFkZjAwZDsKKyAg ICAgICAgY2FzZSAxOiBlY3ggPSAweGRlYWRmMDBkOworICAgICAgICBjYXNlIDI6IGVkeCA9IDB4 ZGVhZGYwMGQ7CisgICAgICAgIGNhc2UgMzogZXNpID0gMHhkZWFkZjAwZDsKKyAgICAgICAgY2Fz ZSA0OiBlZGkgPSAweGRlYWRmMDBkOworICAgICAgICBjYXNlIDU6IGVicCA9IDB4ZGVhZGYwMGQ7 CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmICggdW5saWtlbHkodGJfaW5pdF9kb25l KSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYXJnc1s2XSA9IHsgZWJ4 LCBlY3gsIGVkeCwgZXNpLCBlZGksIGVicCB9OworCisgICAgICAgICAgICBfX3RyYWNlX2h5cGVy Y2FsbChUUkNfUFZfSFlQRVJDQUxMX1YyLCBlYXgsIGFyZ3MpOworICAgICAgICB9CisKKyAgICAg ICAgcmV0ID0gY29tcGF0X2h5cGVyY2FsbF90YWJsZVtlYXhdKGVieCwgZWN4LCBlZHgsIGVzaSwg ZWRpLCBlYnApOworCisjaWZuZGVmIE5ERUJVRworICAgICAgICBpZiAoIHJlZ3MtPnJpcCA9PSBv bGRfcmlwICkKKyAgICAgICAgeworICAgICAgICAgICAgLyogRGVsaWJlcmF0ZWx5IGNvcnJ1cHQg cGFyYW1ldGVyIHJlZ3MgdXNlZCBieSB0aGlzIGh5cGVyY2FsbC4gKi8KKyAgICAgICAgICAgIHN3 aXRjaCAoIGNvbXBhdF9oeXBlcmNhbGxfYXJnc190YWJsZVtlYXhdICkKKyAgICAgICAgICAgIHsK KyAgICAgICAgICAgIGNhc2UgNjogcmVncy0+ZWJwID0gMHhkZWFkZjAwZDsKKyAgICAgICAgICAg IGNhc2UgNTogcmVncy0+ZWRpID0gMHhkZWFkZjAwZDsKKyAgICAgICAgICAgIGNhc2UgNDogcmVn cy0+ZXNpID0gMHhkZWFkZjAwZDsKKyAgICAgICAgICAgIGNhc2UgMzogcmVncy0+ZWR4ID0gMHhk ZWFkZjAwZDsKKyAgICAgICAgICAgIGNhc2UgMjogcmVncy0+ZWN4ID0gMHhkZWFkZjAwZDsKKyAg ICAgICAgICAgIGNhc2UgMTogcmVncy0+ZWJ4ID0gMHhkZWFkZjAwZDsKKyAgICAgICAgICAgIH0K KyAgICAgICAgfQorI2VuZGlmCisgICAgfQorCisgICAgcGVyZmNfaW5jcihoeXBlcmNhbGxzKTsK KworICAgIHJldHVybiByZXQ7Cit9CisKIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBtb2Rl OiBDCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvdHJhY2UuYyBiL3hlbi9hcmNoL3g4Ni90cmFj ZS5jCmluZGV4IGJkODU5NmMuLmYxMWIzMDkgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni90cmFj ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni90cmFjZS5jCkBAIC02LDMzICs2LDYgQEAKICNpbmNsdWRl IDx4ZW4vc2NoZWQuaD4KICNpbmNsdWRlIDx4ZW4vdHJhY2UuaD4KIAotdm9pZCBfX3RyYWNlX2h5 cGVyY2FsbF9lbnRyeSh2b2lkKQotewotICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzID0g Z3Vlc3RfY3B1X3VzZXJfcmVncygpOwotICAgIHVuc2lnbmVkIGxvbmcgYXJnc1s2XTsKLQotICAg IGlmICggaXNfcHZfMzJiaXRfdmNwdShjdXJyZW50KSApCi0gICAgewotICAgICAgICBhcmdzWzBd ID0gcmVncy0+ZWJ4OwotICAgICAgICBhcmdzWzFdID0gcmVncy0+ZWN4OwotICAgICAgICBhcmdz WzJdID0gcmVncy0+ZWR4OwotICAgICAgICBhcmdzWzNdID0gcmVncy0+ZXNpOwotICAgICAgICBh cmdzWzRdID0gcmVncy0+ZWRpOwotICAgICAgICBhcmdzWzVdID0gcmVncy0+ZWJwOwotICAgIH0K LSAgICBlbHNlCi0gICAgewotICAgICAgICBhcmdzWzBdID0gcmVncy0+cmRpOwotICAgICAgICBh cmdzWzFdID0gcmVncy0+cnNpOwotICAgICAgICBhcmdzWzJdID0gcmVncy0+cmR4OwotICAgICAg ICBhcmdzWzNdID0gcmVncy0+cjEwOwotICAgICAgICBhcmdzWzRdID0gcmVncy0+cjg7Ci0gICAg ICAgIGFyZ3NbNV0gPSByZWdzLT5yOTsKLSAgICB9Ci0KLSAgICBfX3RyYWNlX2h5cGVyY2FsbChU UkNfUFZfSFlQRVJDQUxMX1YyLCByZWdzLT5lYXgsIGFyZ3MpOwotfQotCiB2b2lkIF9fdHJhY2Vf cHZfdHJhcChpbnQgdHJhcG5yLCB1bnNpZ25lZCBsb25nIGVpcCwKICAgICAgICAgICAgICAgICAg ICAgIGludCB1c2VfZXJyb3JfY29kZSwgdW5zaWduZWQgZXJyb3JfY29kZSkKIHsKZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvYXNtLW9mZnNldHMuYyBiL3hlbi9hcmNoL3g4Ni94ODZf NjQvYXNtLW9mZnNldHMuYwppbmRleCAwNWQyYjg1Li42NDkwNWM2IDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl82NC9h c20tb2Zmc2V0cy5jCkBAIC0xNTMsNyArMTUzLDYgQEAgdm9pZCBfX2R1bW15X18odm9pZCkKICAg ICBCTEFOSygpOwogCiAjaWZkZWYgQ09ORklHX1BFUkZfQ09VTlRFUlMKLSAgICBERUZJTkUoQVNN X1BFUkZDX2h5cGVyY2FsbHMsIFBFUkZDX2h5cGVyY2FsbHMpOwogICAgIERFRklORShBU01fUEVS RkNfZXhjZXB0aW9ucywgUEVSRkNfZXhjZXB0aW9ucyk7CiAgICAgQkxBTksoKTsKICNlbmRpZgpk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl82NC9jb21wYXQvZW50cnkuUyBiL3hlbi9hcmNo L3g4Ni94ODZfNjQvY29tcGF0L2VudHJ5LlMKaW5kZXggMWE4ZTA4NS4uNTIxYWY0OCAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L3g4Nl82NC9jb21wYXQvZW50cnkuUworKysgYi94ZW4vYXJjaC94 ODYveDg2XzY0L2NvbXBhdC9lbnRyeS5TCkBAIC0yNSw3MCArMjUsMTAgQEAgVU5MSUtFTFlfU1RB UlQobmUsIG1zaV9jaGVjaykKICAgICAgICAgTE9BRF9DX0NMT0JCRVJFRCBjb21wYXQ9MSBheD0w CiBVTkxJS0VMWV9FTkQobXNpX2NoZWNrKQogCi0gICAgICAgIG1vdmwgIFVSRUdTX3JheCglcnNw KSwlZWF4CiAgICAgICAgIEdFVF9DVVJSRU5UKGJ4KQogCi0gICAgICAgIGNtcGwgICROUl9oeXBl cmNhbGxzLCVlYXgKLSAgICAgICAgamFlICAgY29tcGF0X2JhZF9oeXBlcmNhbGwKLSNpZm5kZWYg TkRFQlVHCi0gICAgICAgIC8qIERlbGliZXJhdGVseSBjb3JydXB0IHBhcmFtZXRlciByZWdzIG5v dCB1c2VkIGJ5IHRoaXMgaHlwZXJjYWxsLiAqLwotICAgICAgICBwdXNocSBVUkVHU19yYngoJXJz cCk7IHB1c2hxICVyY3g7IHB1c2hxICVyZHg7IHB1c2hxICVyc2k7IHB1c2hxICVyZGkKLSAgICAg ICAgcHVzaHEgVVJFR1NfcmJwKzUqOCglcnNwKQotICAgICAgICBsZWFxICBjb21wYXRfaHlwZXJj YWxsX2FyZ3NfdGFibGUoJXJpcCksJXIxMAotICAgICAgICBtb3ZsICAkNiwlZWN4Ci0gICAgICAg IHN1YmIgICglcjEwLCVyYXgsMSksJWNsCi0gICAgICAgIG1vdnEgICVyc3AsJXJkaQotICAgICAg ICBtb3ZsICAkMHhERUFEQkVFRiwlZWF4Ci0gICAgICAgIHJlcCAgIHN0b3NxCi0gICAgICAgIHBv cHEgICVyOCA7IHBvcHEgICVyOSA7IHhjaGdsICVyOGQsJXI5ZCAvKiBBcmdzIDUmNjogemVybyBl eHRlbmQgKi8KLSAgICAgICAgcG9wcSAgJXJkeDsgcG9wcSAgJXJjeDsgeGNoZ2wgJWVkeCwlZWN4 IC8qIEFyZ3MgMyY0OiB6ZXJvIGV4dGVuZCAqLwotICAgICAgICBwb3BxICAlcmRpOyBwb3BxICAl cnNpOyB4Y2hnbCAlZWRpLCVlc2kgLyogQXJncyAxJjI6IHplcm8gZXh0ZW5kICovCi0gICAgICAg IG1vdmwgIFVSRUdTX3JheCglcnNwKSwlZWF4Ci0gICAgICAgIHB1c2hxICVyYXgKLSAgICAgICAg cHVzaHEgVVJFR1NfcmlwKzgoJXJzcCkKLSNkZWZpbmUgU0hBRE9XX0JZVEVTIDE2IC8qIFNoYWRv dyBFSVAgKyBzaGFkb3cgaHlwZXJjYWxsICMgKi8KLSNlbHNlCi0gICAgICAgIC8qIFJlbG9jYXRl IGFyZ3VtZW50IHJlZ2lzdGVycyBhbmQgemVyby1leHRlbmQgdG8gNjQgYml0cy4gKi8KLSAgICAg ICAgeGNoZ2wgJWVjeCwlZXNpICAgICAgICAgICAgICAvKiBBcmcgMiwgQXJnIDQgKi8KLSAgICAg ICAgbW92bCAgJWVkeCwlZWR4ICAgICAgICAgICAgICAvKiBBcmcgMyAgICAgICAgKi8KLSAgICAg ICAgbW92bCAgJWVkaSwlcjhkICAgICAgICAgICAgICAvKiBBcmcgNSAgICAgICAgKi8KLSAgICAg ICAgbW92bCAgJWVicCwlcjlkICAgICAgICAgICAgICAvKiBBcmcgNiAgICAgICAgKi8KLSAgICAg ICAgbW92bCAgVVJFR1NfcmJ4KCVyc3ApLCVlZGkgICAvKiBBcmcgMSAgICAgICAgKi8KLSNkZWZp bmUgU0hBRE9XX0JZVEVTIDAgIC8qIE5vIG9uLXN0YWNrIHNoYWRvdyBzdGF0ZSAqLwotI2VuZGlm Ci0gICAgICAgIGNtcGIgICQwLHRiX2luaXRfZG9uZSglcmlwKQotVU5MSUtFTFlfU1RBUlQobmUs IGNvbXBhdF90cmFjZSkKLSAgICAgICAgY2FsbCAgX190cmFjZV9oeXBlcmNhbGxfZW50cnkKLSAg ICAgICAgLyogUmVzdG9yZSB0aGUgcmVnaXN0ZXJzIHRoYXQgX190cmFjZV9oeXBlcmNhbGxfZW50 cnkgY2xvYmJlcmVkLiAqLwotICAgICAgICBtb3ZsICBVUkVHU19yYXgrU0hBRE9XX0JZVEVTKCVy c3ApLCVlYXggICAvKiBIeXBlcmNhbGwgIyAgKi8KLSAgICAgICAgbW92bCAgVVJFR1NfcmJ4K1NI QURPV19CWVRFUyglcnNwKSwlZWRpICAgLyogQXJnIDEgICAgICAgICovCi0gICAgICAgIG1vdmwg IFVSRUdTX3JjeCtTSEFET1dfQllURVMoJXJzcCksJWVzaSAgIC8qIEFyZyAyICAgICAgICAqLwot ICAgICAgICBtb3ZsICBVUkVHU19yZHgrU0hBRE9XX0JZVEVTKCVyc3ApLCVlZHggICAvKiBBcmcg MyAgICAgICAgKi8KLSAgICAgICAgbW92bCAgVVJFR1NfcnNpK1NIQURPV19CWVRFUyglcnNwKSwl ZWN4ICAgLyogQXJnIDQgICAgICAgICovCi0gICAgICAgIG1vdmwgIFVSRUdTX3JkaStTSEFET1df QllURVMoJXJzcCksJXI4ZCAgIC8qIEFyZyA1ICAgICAgICAqLwotICAgICAgICBtb3ZsICBVUkVH U19yYnArU0hBRE9XX0JZVEVTKCVyc3ApLCVyOWQgICAvKiBBcmcgNiAgICAgICAgKi8KLSN1bmRl ZiBTSEFET1dfQllURVMKLVVOTElLRUxZX0VORChjb21wYXRfdHJhY2UpCi0gICAgICAgIGxlYXEg IGNvbXBhdF9oeXBlcmNhbGxfdGFibGUoJXJpcCksJXIxMAotICAgICAgICBQRVJGQ19JTkNSKGh5 cGVyY2FsbHMsICVyYXgsICVyYngpCi0gICAgICAgIGNhbGxxICooJXIxMCwlcmF4LDgpCi0jaWZu ZGVmIE5ERUJVRwotICAgICAgICAvKiBEZWxpYmVyYXRlbHkgY29ycnVwdCBwYXJhbWV0ZXIgcmVn cyB1c2VkIGJ5IHRoaXMgaHlwZXJjYWxsLiAqLwotICAgICAgICBwb3BxICAlcjEwICAgICAgICAg IyBTaGFkb3cgUklQCi0gICAgICAgIGNtcHEgICVyMTAsVVJFR1NfcmlwKzgoJXJzcCkKLSAgICAg ICAgcG9wcSAgJXJjeCAgICAgICAgICMgU2hhZG93IGh5cGVyY2FsbCBpbmRleAotICAgICAgICBq bmUgICBjb21wYXRfc2tpcF9jbG9iYmVyIC8qIElmIFJJUCBoYXMgY2hhbmdlZCB0aGVuIGRvbid0 IGNsb2JiZXIuICovCi0gICAgICAgIGxlYXEgIGNvbXBhdF9oeXBlcmNhbGxfYXJnc190YWJsZSgl cmlwKSwlcjEwCi0gICAgICAgIG1vdmIgICglcjEwLCVyY3gsMSksJWNsCi0gICAgICAgIG1vdmwg ICQweERFQURCRUVGLCVyMTBkCi0gICAgICAgIHRlc3RiICVjbCwlY2w7IGp6IGNvbXBhdF9za2lw X2Nsb2JiZXI7IG1vdmwgJXIxMGQsVVJFR1NfcmJ4KCVyc3ApCi0gICAgICAgIGNtcGIgICQyLCAl Y2w7IGpiIGNvbXBhdF9za2lwX2Nsb2JiZXI7IG1vdmwgJXIxMGQsVVJFR1NfcmN4KCVyc3ApCi0g ICAgICAgIGNtcGIgICQzLCAlY2w7IGpiIGNvbXBhdF9za2lwX2Nsb2JiZXI7IG1vdmwgJXIxMGQs VVJFR1NfcmR4KCVyc3ApCi0gICAgICAgIGNtcGIgICQ0LCAlY2w7IGpiIGNvbXBhdF9za2lwX2Ns b2JiZXI7IG1vdmwgJXIxMGQsVVJFR1NfcnNpKCVyc3ApCi0gICAgICAgIGNtcGIgICQ1LCAlY2w7 IGpiIGNvbXBhdF9za2lwX2Nsb2JiZXI7IG1vdmwgJXIxMGQsVVJFR1NfcmRpKCVyc3ApCi0gICAg ICAgIGNtcGIgICQ2LCAlY2w7IGpiIGNvbXBhdF9za2lwX2Nsb2JiZXI7IG1vdmwgJXIxMGQsVVJF R1NfcmJwKCVyc3ApCi1jb21wYXRfc2tpcF9jbG9iYmVyOgotI2VuZGlmCisgICAgICAgIG1vdiAg ICVyc3AsICVyZGkKKyAgICAgICAgY2FsbCAgcHZfaHlwZXJjYWxsCiAgICAgICAgIG1vdmwgICVl YXgsVVJFR1NfcmF4KCVyc3ApICAgICAgICMgc2F2ZSB0aGUgcmV0dXJuIHZhbHVlCiAKIC8qICVy Yng6IHN0cnVjdCB2Y3B1ICovCkBAIC0xNjcsMTAgKzEwNyw2IEBAIGNvbXBhdF9wcm9jZXNzX3Ry YXA6CiAgICAgICAgIGNhbGwgIGNvbXBhdF9jcmVhdGVfYm91bmNlX2ZyYW1lCiAgICAgICAgIGpt cCAgIGNvbXBhdF90ZXN0X2FsbF9ldmVudHMKIAotY29tcGF0X2JhZF9oeXBlcmNhbGw6Ci0gICAg ICAgIG1vdmwgJC1FTk9TWVMsVVJFR1NfcmF4KCVyc3ApCi0gICAgICAgIGptcCAgY29tcGF0X3Rl c3RfYWxsX2V2ZW50cwotCiAvKiAlcmJ4OiBzdHJ1Y3QgdmNwdSwgaW50ZXJydXB0cyBkaXNhYmxl ZCAqLwogRU5UUlkoY29tcGF0X3Jlc3RvcmVfYWxsX2d1ZXN0KQogICAgICAgICBBU1NFUlRfSU5U RVJSVVBUU19ESVNBQkxFRApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl82NC9lbnRyeS5T IGIveGVuL2FyY2gveDg2L3g4Nl82NC9lbnRyeS5TCmluZGV4IDVjNjYwNmIuLjFhN2Y4YjcgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvZW50cnkuUworKysgYi94ZW4vYXJjaC94ODYv eDg2XzY0L2VudHJ5LlMKQEAgLTEwMSw2MCArMTAxLDggQEAgRU5UUlkobHN0YXJfZW50ZXIpCiAg ICAgICAgIHRlc3RiICRURl9rZXJuZWxfbW9kZSxWQ1BVX3RocmVhZF9mbGFncyglcmJ4KQogICAg ICAgICBqeiAgICBzd2l0Y2hfdG9fa2VybmVsCiAKLS8qaHlwZXJjYWxsOiovCi0gICAgICAgIG1v dnEgICVyMTAsJXJjeAotICAgICAgICBjbXBxICAkTlJfaHlwZXJjYWxscywlcmF4Ci0gICAgICAg IGphZSAgIGJhZF9oeXBlcmNhbGwKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIC8qIERlbGliZXJh dGVseSBjb3JydXB0IHBhcmFtZXRlciByZWdzIG5vdCB1c2VkIGJ5IHRoaXMgaHlwZXJjYWxsLiAq LwotICAgICAgICBwdXNocSAlcmRpOyBwdXNocSAlcnNpOyBwdXNocSAlcmR4OyBwdXNocSAlcmN4 OyBwdXNocSAlcjggOyBwdXNocSAlcjkgCi0gICAgICAgIGxlYXEgIGh5cGVyY2FsbF9hcmdzX3Rh YmxlKCVyaXApLCVyMTAKLSAgICAgICAgbW92cSAgJDYsJXJjeAotICAgICAgICBzdWIgICAoJXIx MCwlcmF4LDEpLCVjbAotICAgICAgICBtb3ZxICAlcnNwLCVyZGkKLSAgICAgICAgbW92bCAgJDB4 REVBREJFRUYsJWVheAotICAgICAgICByZXAgICBzdG9zcQotICAgICAgICBwb3BxICAlcjkgOyBw b3BxICAlcjggOyBwb3BxICAlcmN4OyBwb3BxICAlcmR4OyBwb3BxICAlcnNpOyBwb3BxICAlcmRp Ci0gICAgICAgIG1vdnEgIFVSRUdTX3JheCglcnNwKSwlcmF4Ci0gICAgICAgIHB1c2hxICVyYXgK LSAgICAgICAgcHVzaHEgVVJFR1NfcmlwKzgoJXJzcCkKLSNkZWZpbmUgU0hBRE9XX0JZVEVTIDE2 IC8qIFNoYWRvdyBFSVAgKyBzaGFkb3cgaHlwZXJjYWxsICMgKi8KLSNlbHNlCi0jZGVmaW5lIFNI QURPV19CWVRFUyAwICAvKiBObyBvbi1zdGFjayBzaGFkb3cgc3RhdGUgKi8KLSNlbmRpZgotICAg ICAgICBjbXBiICAkMCx0Yl9pbml0X2RvbmUoJXJpcCkKLVVOTElLRUxZX1NUQVJUKG5lLCB0cmFj ZSkKLSAgICAgICAgY2FsbCAgX190cmFjZV9oeXBlcmNhbGxfZW50cnkKLSAgICAgICAgLyogUmVz dG9yZSB0aGUgcmVnaXN0ZXJzIHRoYXQgX190cmFjZV9oeXBlcmNhbGxfZW50cnkgY2xvYmJlcmVk LiAqLwotICAgICAgICBtb3ZxICBVUkVHU19yYXgrU0hBRE9XX0JZVEVTKCVyc3ApLCVyYXggICAv KiBIeXBlcmNhbGwgIyAgKi8KLSAgICAgICAgbW92cSAgVVJFR1NfcmRpK1NIQURPV19CWVRFUygl cnNwKSwlcmRpICAgLyogQXJnIDEgICAgICAgICovCi0gICAgICAgIG1vdnEgIFVSRUdTX3JzaStT SEFET1dfQllURVMoJXJzcCksJXJzaSAgIC8qIEFyZyAyICAgICAgICAqLwotICAgICAgICBtb3Zx ICBVUkVHU19yZHgrU0hBRE9XX0JZVEVTKCVyc3ApLCVyZHggICAvKiBBcmcgMyAgICAgICAgKi8K LSAgICAgICAgbW92cSAgVVJFR1NfcjEwK1NIQURPV19CWVRFUyglcnNwKSwlcmN4ICAgLyogQXJn IDQgICAgICAgICovCi0gICAgICAgIG1vdnEgIFVSRUdTX3I4ICtTSEFET1dfQllURVMoJXJzcCks JXI4ICAgIC8qIEFyZyA1ICAgICAgICAqLwotICAgICAgICBtb3ZxICBVUkVHU19yOSArU0hBRE9X X0JZVEVTKCVyc3ApLCVyOSAgICAvKiBBcmcgNiAgICAgICAgKi8KLSN1bmRlZiBTSEFET1dfQllU RVMKLVVOTElLRUxZX0VORCh0cmFjZSkKLSAgICAgICAgbGVhcSAgaHlwZXJjYWxsX3RhYmxlKCVy aXApLCVyMTAKLSAgICAgICAgUEVSRkNfSU5DUihoeXBlcmNhbGxzLCAlcmF4LCAlcmJ4KQotICAg ICAgICBjYWxscSAqKCVyMTAsJXJheCw4KQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLyogRGVs aWJlcmF0ZWx5IGNvcnJ1cHQgcGFyYW1ldGVyIHJlZ3MgdXNlZCBieSB0aGlzIGh5cGVyY2FsbC4g Ki8KLSAgICAgICAgcG9wcSAgJXIxMCAgICAgICAgICMgU2hhZG93IFJJUAotICAgICAgICBjbXBx ICAlcjEwLFVSRUdTX3JpcCs4KCVyc3ApCi0gICAgICAgIHBvcHEgICVyY3ggICAgICAgICAjIFNo YWRvdyBoeXBlcmNhbGwgaW5kZXgKLSAgICAgICAgam5lICAgc2tpcF9jbG9iYmVyIC8qIElmIFJJ UCBoYXMgY2hhbmdlZCB0aGVuIGRvbid0IGNsb2JiZXIuICovCi0gICAgICAgIGxlYXEgIGh5cGVy Y2FsbF9hcmdzX3RhYmxlKCVyaXApLCVyMTAKLSAgICAgICAgbW92YiAgKCVyMTAsJXJjeCwxKSwl Y2wKLSAgICAgICAgbW92bCAgJDB4REVBREJFRUYsJXIxMGQKLSAgICAgICAgY21wYiAgJDEsJWNs OyBqYiBza2lwX2Nsb2JiZXI7IG1vdnEgJXIxMCxVUkVHU19yZGkoJXJzcCkKLSAgICAgICAgY21w YiAgJDIsJWNsOyBqYiBza2lwX2Nsb2JiZXI7IG1vdnEgJXIxMCxVUkVHU19yc2koJXJzcCkKLSAg ICAgICAgY21wYiAgJDMsJWNsOyBqYiBza2lwX2Nsb2JiZXI7IG1vdnEgJXIxMCxVUkVHU19yZHgo JXJzcCkKLSAgICAgICAgY21wYiAgJDQsJWNsOyBqYiBza2lwX2Nsb2JiZXI7IG1vdnEgJXIxMCxV UkVHU19yMTAoJXJzcCkKLSAgICAgICAgY21wYiAgJDUsJWNsOyBqYiBza2lwX2Nsb2JiZXI7IG1v dnEgJXIxMCxVUkVHU19yOCglcnNwKQotICAgICAgICBjbXBiICAkNiwlY2w7IGpiIHNraXBfY2xv YmJlcjsgbW92cSAlcjEwLFVSRUdTX3I5KCVyc3ApCi1za2lwX2Nsb2JiZXI6Ci0jZW5kaWYKKyAg ICAgICAgbW92ICAgJXJzcCwgJXJkaQorICAgICAgICBjYWxsICBwdl9oeXBlcmNhbGwKICAgICAg ICAgbW92cSAgJXJheCxVUkVHU19yYXgoJXJzcCkgICAgICAgIyBzYXZlIHRoZSByZXR1cm4gdmFs dWUKIAogLyogJXJieDogc3RydWN0IHZjcHUgKi8KQEAgLTIzMSwxMCArMTc5LDYgQEAgcHJvY2Vz c190cmFwOgogICAgICAgICBjYWxsIGNyZWF0ZV9ib3VuY2VfZnJhbWUKICAgICAgICAgam1wICB0 ZXN0X2FsbF9ldmVudHMKIAotYmFkX2h5cGVyY2FsbDoKLSAgICAgICAgbW92cSAkLUVOT1NZUyxV UkVHU19yYXgoJXJzcCkKLSAgICAgICAgam1wICB0ZXN0X2FsbF9ldmVudHMKLQogRU5UUlkoc3lz ZW50ZXJfZW50cnkpCiAgICAgICAgIHN0aQogICAgICAgICBwdXNocSAkRkxBVF9VU0VSX1NTCi0t IAoyLjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Clhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9s aXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=