From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v2 14/17] x86emul: abstract out XCRn accesses Date: Thu, 14 Sep 2017 09:20:13 -0600 Message-ID: <59BABA4D020000780017B3F6@prv-mh.provo.novell.com> References: <59BAB38A020000780017B34E@prv-mh.provo.novell.com> <59BAB38A020000780017B34E@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dsVwD-0004Wx-3P for xen-devel@lists.xenproject.org; Thu, 14 Sep 2017 15:20:21 +0000 In-Reply-To: <59BAB38A020000780017B34E@prv-mh.provo.novell.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel Cc: George Dunlap , Andrew Cooper List-Id: xen-devel@lists.xenproject.org VXNlIGhvb2tzLCBqdXN0IGxpa2UgZG9uZSBmb3Igb3RoZXIgc3BlY2lhbCBwdXJwb3NlIHJlZ2lz dGVycy4KClRoaXMgaW5jbHVkZXMgbW92aW5nIFhDUjAgY2hlY2tzIGZyb20gaHZtZW11bF9nZXRf ZnB1KCkgdG8gdGhlIGVtdWxhdG9yCml0c2VsZiBhcyB3ZWxsIGFzIGFkZGluZyBzdXBwb3J0IGZv ciBYR0VUQlYgZW11bGF0aW9uLgoKRm9yIG5vdyBmdXp6ZXIgcmVhZHMgd2lsbCBvYnRhaW4gdGhl IHJlYWwgdmFsdWVzIChtaW51cyB0aGUgZnV6emluZyBvZgp0aGUgaG9vayBwb2ludGVyIGl0c2Vs ZikuCgpTaWduZWQtb2ZmLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQp2 MjogUmUtYmFzZS4KCi0tLSBhL3Rvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL2Z1 enotZW11bC5jCisrKyBiL3Rvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL2Z1enot ZW11bC5jCkBAIC00MzUsNiArNDM1LDggQEAgc3RhdGljIGludCBmdXp6X3dyaXRlX2NyKAogICAg IHJldHVybiBYODZFTVVMX09LQVk7CiB9CiAKKyNkZWZpbmUgZnV6el9yZWFkX3hjciBlbXVsX3Rl c3RfcmVhZF94Y3IKKwogZW51bSB7CiAgICAgTVNSSV9JQTMyX1NZU0VOVEVSX0NTLAogICAgIE1T UklfSUEzMl9TWVNFTlRFUl9FU1AsCkBAIC01NTMsNiArNTU1LDcgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCB4ODZfZW11bGF0ZV9vcHMgYWxsXwogICAgIFNFVCh3cml0ZV9pbyksCiAgICAgU0VUKHJl YWRfY3IpLAogICAgIFNFVCh3cml0ZV9jciksCisgICAgU0VUKHJlYWRfeGNyKSwKICAgICBTRVQo cmVhZF9tc3IpLAogICAgIFNFVCh3cml0ZV9tc3IpLAogICAgIFNFVCh3YmludmQpLApAQCAtNjYx LDYgKzY2NCw3IEBAIGVudW0gewogICAgIEhPT0tfd3JpdGVfY3IsCiAgICAgSE9PS19yZWFkX2Ry LAogICAgIEhPT0tfd3JpdGVfZHIsCisgICAgSE9PS19yZWFkX3hjciwKICAgICBIT09LX3JlYWRf bXNyLAogICAgIEhPT0tfd3JpdGVfbXNyLAogICAgIEhPT0tfd2JpbnZkLApAQCAtNzA1LDYgKzcw OSw3IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVfaG9va3Moc3RydWN0IHg4Nl9lbXUKICAgICBNQVlC RV9ESVNBQkxFX0hPT0sod3JpdGVfaW8pOwogICAgIE1BWUJFX0RJU0FCTEVfSE9PSyhyZWFkX2Ny KTsKICAgICBNQVlCRV9ESVNBQkxFX0hPT0sod3JpdGVfY3IpOworICAgIE1BWUJFX0RJU0FCTEVf SE9PSyhyZWFkX3hjcik7CiAgICAgTUFZQkVfRElTQUJMRV9IT09LKHJlYWRfbXNyKTsKICAgICBN QVlCRV9ESVNBQkxFX0hPT0sod3JpdGVfbXNyKTsKICAgICBNQVlCRV9ESVNBQkxFX0hPT0sod2Jp bnZkKTsKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3Rlc3RfeDg2X2VtdWxhdG9yLmMK KysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3Rlc3RfeDg2X2VtdWxhdG9yLmMKQEAgLTM2 OCw2ICszNjgsNyBAQCBzdGF0aWMgc3RydWN0IHg4Nl9lbXVsYXRlX29wcyBlbXVsb3BzID0KICAg ICAucmVhZF9zZWdtZW50ID0gcmVhZF9zZWdtZW50LAogICAgIC5jcHVpZCAgICAgID0gZW11bF90 ZXN0X2NwdWlkLAogICAgIC5yZWFkX2NyICAgID0gZW11bF90ZXN0X3JlYWRfY3IsCisgICAgLnJl YWRfeGNyICAgPSBlbXVsX3Rlc3RfcmVhZF94Y3IsCiAgICAgLnJlYWRfbXNyICAgPSByZWFkX21z ciwKICAgICAuZ2V0X2ZwdSAgICA9IGVtdWxfdGVzdF9nZXRfZnB1LAogICAgIC5wdXRfZnB1ICAg ID0gZW11bF90ZXN0X3B1dF9mcHUsCi0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci94ODZf ZW11bGF0ZS5jCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci94ODZfZW11bGF0ZS5jCkBA IC0xMjAsNiArMTIwLDE5IEBAIGludCBlbXVsX3Rlc3RfcmVhZF9jcigKICAgICByZXR1cm4gWDg2 RU1VTF9VTkhBTkRMRUFCTEU7CiB9CiAKK2ludCBlbXVsX3Rlc3RfcmVhZF94Y3IoCisgICAgdW5z aWduZWQgaW50IHJlZywKKyAgICB1aW50NjRfdCAqdmFsLAorICAgIHN0cnVjdCB4ODZfZW11bGF0 ZV9jdHh0ICpjdHh0KQoreworICAgIHVpbnQzMl90IGxvLCBoaTsKKworICAgIGFzbSAoICJ4Z2V0 YnYiIDogIj1hIiAobG8pLCAiPWQiIChoaSkgOiAiYyIgKHJlZykgKTsKKyAgICAqdmFsID0gbG8g fCAoKHVpbnQ2NF90KWhpIDw8IDMyKTsKKworICAgIHJldHVybiBYODZFTVVMX09LQVk7Cit9CisK IGludCBlbXVsX3Rlc3RfZ2V0X2ZwdSgKICAgICB2b2lkICgqZXhjZXB0aW9uX2NhbGxiYWNrKSh2 b2lkICosIHN0cnVjdCBjcHVfdXNlcl9yZWdzICopLAogICAgIHZvaWQgKmV4Y2VwdGlvbl9jYWxs YmFja19hcmcsCi0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci94ODZfZW11bGF0ZS5oCisr KyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci94ODZfZW11bGF0ZS5oCkBAIC0yMTUsNiArMjE1 LDExIEBAIGludCBlbXVsX3Rlc3RfcmVhZF9jcigKICAgICB1bnNpZ25lZCBsb25nICp2YWwsCiAg ICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpOwogCitpbnQgZW11bF90ZXN0X3JlYWRf eGNyKAorICAgIHVuc2lnbmVkIGludCByZWcsCisgICAgdWludDY0X3QgKnZhbCwKKyAgICBzdHJ1 Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCk7CisKIGludCBlbXVsX3Rlc3RfZ2V0X2ZwdSgKICAg ICB2b2lkICgqZXhjZXB0aW9uX2NhbGxiYWNrKSh2b2lkICosIHN0cnVjdCBjcHVfdXNlcl9yZWdz ICopLAogICAgIHZvaWQgKmV4Y2VwdGlvbl9jYWxsYmFja19hcmcsCi0tLSBhL3hlbi9hcmNoL3g4 Ni9odm0vZW11bGF0ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCkBAIC0xNjU1 LDYgKzE2NTUsNDkgQEAgc3RhdGljIGludCBodm1lbXVsX3dyaXRlX2NyKAogICAgIHJldHVybiBy YzsKIH0KIAorc3RhdGljIGludCBodm1lbXVsX3JlYWRfeGNyKAorICAgIHVuc2lnbmVkIGludCBy ZWcsCisgICAgdWludDY0X3QgKnZhbCwKKyAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4 dCkKK3sKKyAgICB1aW50MzJfdCBsbywgaGk7CisKKyAgICBzd2l0Y2ggKCByZWcgKQorICAgIHsK KyAgICBjYXNlIDA6CisgICAgICAgICp2YWwgPSBjdXJyZW50LT5hcmNoLnhjcjA7CisgICAgICAg IHJldHVybiBYODZFTVVMX09LQVk7CisKKyAgICBjYXNlIDE6CisgICAgICAgIGlmICggIWNwdV9o YXNfeGdldGJ2MSApCisgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7Cisg ICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFg4NkVNVUxfVU5I QU5ETEVBQkxFOworICAgIH0KKworICAgIGFzbSAoICIuYnl0ZSAweDBmLDB4MDEsMHhkMCIgLyog eGdldGJ2ICovCisgICAgICAgICAgOiAiPWEiIChsbyksICI9ZCIgKGhpKSA6ICJjIiAocmVnKSAp OworICAgICp2YWwgPSBsbyB8ICgodWludDY0X3QpaGkgPDwgMzIpOworICAgIEhWTVRSQUNFX0xP TkdfMkQoWENSX1JFQUQsIHJlZywgVFJDX1BBUl9MT05HKCp2YWwpKTsKKworICAgIHJldHVybiBY ODZFTVVMX09LQVk7Cit9CisKK3N0YXRpYyBpbnQgaHZtZW11bF93cml0ZV94Y3IoCisgICAgdW5z aWduZWQgaW50IHJlZywKKyAgICB1aW50NjRfdCB2YWwsCisgICAgc3RydWN0IHg4Nl9lbXVsYXRl X2N0eHQgKmN0eHQpCit7CisgICAgSFZNVFJBQ0VfTE9OR18yRChYQ1JfV1JJVEUsIHJlZywgVFJD X1BBUl9MT05HKHZhbCkpOworICAgIGlmICggbGlrZWx5KGhhbmRsZV94c2V0YnYocmVnLCB2YWwp ID09IDApICkKKyAgICAgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKKworICAgIHg4Nl9lbXVsX2h3 X2V4Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwLCBjdHh0KTsKKyAgICByZXR1cm4gWDg2RU1VTF9F WENFUFRJT047Cit9CisKIHN0YXRpYyBpbnQgaHZtZW11bF9yZWFkX21zcigKICAgICB1bnNpZ25l ZCBpbnQgcmVnLAogICAgIHVpbnQ2NF90ICp2YWwsCkBAIC0xNzAzLDIyICsxNzQ2LDYgQEAgc3Rh dGljIGludCBodm1lbXVsX2dldF9mcHUoCiB7CiAgICAgc3RydWN0IHZjcHUgKmN1cnIgPSBjdXJy ZW50OwogCi0gICAgc3dpdGNoICggdHlwZSApCi0gICAgewotICAgIGNhc2UgWDg2RU1VTF9GUFVf ZnB1OgotICAgIGNhc2UgWDg2RU1VTF9GUFVfd2FpdDoKLSAgICBjYXNlIFg4NkVNVUxfRlBVX21t eDoKLSAgICBjYXNlIFg4NkVNVUxfRlBVX3htbToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBY ODZFTVVMX0ZQVV95bW06Ci0gICAgICAgIGlmICggIShjdXJyLT5hcmNoLnhjcjAgJiBYU1RBVEVf U1NFKSB8fAotICAgICAgICAgICAgICEoY3Vyci0+YXJjaC54Y3IwICYgWFNUQVRFX1lNTSkgKQot ICAgICAgICAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOwotICAgICAgICBicmVhazsK LSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7Ci0gICAg fQotCiAgICAgaWYgKCAhY3Vyci0+ZnB1X2RpcnRpZWQgKQogICAgICAgICBodm1fZnVuY3MuZnB1 X2RpcnR5X2ludGVyY2VwdCgpOwogICAgIGVsc2UgaWYgKCB0eXBlID09IFg4NkVNVUxfRlBVX2Zw dSApCkBAIC0xOTAyLDYgKzE5MjksOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRl X29wcyBodm1fCiAgICAgLndyaXRlX2lvICAgICAgPSBodm1lbXVsX3dyaXRlX2lvLAogICAgIC5y ZWFkX2NyICAgICAgID0gaHZtZW11bF9yZWFkX2NyLAogICAgIC53cml0ZV9jciAgICAgID0gaHZt ZW11bF93cml0ZV9jciwKKyAgICAucmVhZF94Y3IgICAgICA9IGh2bWVtdWxfcmVhZF94Y3IsCisg ICAgLndyaXRlX3hjciAgICAgPSBodm1lbXVsX3dyaXRlX3hjciwKICAgICAucmVhZF9tc3IgICAg ICA9IGh2bWVtdWxfcmVhZF9tc3IsCiAgICAgLndyaXRlX21zciAgICAgPSBodm1lbXVsX3dyaXRl X21zciwKICAgICAud2JpbnZkICAgICAgICA9IGh2bWVtdWxfd2JpbnZkLApAQCAtMTkyNyw2ICsx OTU2LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMgaHZtXwogICAgIC53 cml0ZV9pbyAgICAgID0gaHZtZW11bF93cml0ZV9pb19kaXNjYXJkLAogICAgIC5yZWFkX2NyICAg ICAgID0gaHZtZW11bF9yZWFkX2NyLAogICAgIC53cml0ZV9jciAgICAgID0gaHZtZW11bF93cml0 ZV9jciwKKyAgICAucmVhZF94Y3IgICAgICA9IGh2bWVtdWxfcmVhZF94Y3IsCisgICAgLndyaXRl X3hjciAgICAgPSBodm1lbXVsX3dyaXRlX3hjciwKICAgICAucmVhZF9tc3IgICAgICA9IGh2bWVt dWxfcmVhZF9tc3IsCiAgICAgLndyaXRlX21zciAgICAgPSBodm1lbXVsX3dyaXRlX21zcl9kaXNj YXJkLAogICAgIC53YmludmQgICAgICAgID0gaHZtZW11bF93YmludmRfZGlzY2FyZCwKLS0tIGEv eGVuL2FyY2gveDg2L3B2L2VtdWwtcHJpdi1vcC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wdi9lbXVs LXByaXYtb3AuYwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPGFzbS9zaGFyZWQuaD4KICNp bmNsdWRlIDxhc20vdHJhcHMuaD4KICNpbmNsdWRlIDxhc20veDg2X2VtdWxhdGUuaD4KKyNpbmNs dWRlIDxhc20veHN0YXRlLmg+CiAKICNpbmNsdWRlIDx4c20veHNtLmg+CiAKQEAgLTgxNyw2ICs4 MTgsMTYgQEAgc3RhdGljIGludCB3cml0ZV9kcih1bnNpZ25lZCBpbnQgcmVnLCB1bgogICAgICAg ICAgICA/IFg4NkVNVUxfT0tBWSA6IFg4NkVNVUxfVU5IQU5ETEVBQkxFOwogfQogCitzdGF0aWMg aW50IHdyaXRlX3hjcih1bnNpZ25lZCBpbnQgcmVnLCB1aW50NjRfdCB2YWwsCisgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKK3sKKyAgICBpZiAoIGxp a2VseShoYW5kbGVfeHNldGJ2KHJlZywgdmFsKSA9PSAwKSApCisgICAgICAgIHJldHVybiBYODZF TVVMX09LQVk7CisKKyAgICB4ODZfZW11bF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCwg Y3R4dCk7CisgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOworfQorCiBzdGF0aWMgaW5saW5l IHVpbnQ2NF90IGd1ZXN0X21pc2NfZW5hYmxlKHVpbnQ2NF90IHZhbCkKIHsKICAgICB2YWwgJj0g fihNU1JfSUEzMl9NSVNDX0VOQUJMRV9QRVJGX0FWQUlMIHwKQEAgLTEzMjksNiArMTM0MCw3IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzIHByaXYKICAgICAud3JpdGVfY3Ig ICAgICAgICAgICA9IHdyaXRlX2NyLAogICAgIC5yZWFkX2RyICAgICAgICAgICAgID0gcmVhZF9k ciwKICAgICAud3JpdGVfZHIgICAgICAgICAgICA9IHdyaXRlX2RyLAorICAgIC53cml0ZV94Y3Ig ICAgICAgICAgID0gd3JpdGVfeGNyLAogICAgIC5yZWFkX21zciAgICAgICAgICAgID0gcmVhZF9t c3IsCiAgICAgLndyaXRlX21zciAgICAgICAgICAgPSB3cml0ZV9tc3IsCiAgICAgLmNwdWlkICAg ICAgICAgICAgICAgPSBwdl9lbXVsX2NwdWlkLAotLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxh dGUveDg2X2VtdWxhdGUuYworKysgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxh dGUuYwpAQCAtMTExNywxMCArMTExNywyNyBAQCBzdGF0aWMgaW50IF9nZXRfZnB1KAogICAgIHN0 cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LAogICAgIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0 ZV9vcHMgKm9wcykKIHsKKyAgICB1aW50NjRfdCB4Y3IwOwogICAgIGludCByYzsKIAogICAgIGZh aWxfaWYoIW9wcy0+Z2V0X2ZwdSk7CiAgICAgQVNTRVJUKHR5cGUgIT0gWDg2RU1VTF9GUFVfbm9u ZSk7CisKKyAgICBpZiAoIHR5cGUgPCBYODZFTVVMX0ZQVV95bW0gfHwgIW9wcy0+cmVhZF94Y3Ig fHwKKyAgICAgICAgIG9wcy0+cmVhZF94Y3IoMCwgJnhjcjAsIGN0eHQpICE9IFg4NkVNVUxfT0tB WSApCisgICAgICAgIHhjcjAgPSAwOworCisgICAgc3dpdGNoICggdHlwZSApCisgICAgeworICAg IGNhc2UgWDg2RU1VTF9GUFVfeW1tOgorICAgICAgICBpZiAoICEoeGNyMCAmIFhTVEFURV9TU0Up IHx8ICEoeGNyMCAmIFhTVEFURV9ZTU0pICkKKyAgICAgICAgICAgIHJldHVybiBYODZFTVVMX1VO SEFORExFQUJMRTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVh azsKKyAgICB9CisKICAgICByYyA9IG9wcy0+Z2V0X2ZwdShmcHVfaGFuZGxlX2V4Y2VwdGlvbiwg ZmljLCB0eXBlLCBjdHh0KTsKIAogICAgIGlmICggcmMgPT0gWDg2RU1VTF9PS0FZICkKQEAgLTE2 NDgsNyArMTY2NSw4IEBAIGluX3Byb3Rtb2RlKAogI2RlZmluZSBFQlggMwogCiBzdGF0aWMgYm9v bCB2Y3B1X2hhcygKLSAgICB1bnNpZ25lZCBpbnQgZWF4LAorICAgIHVuc2lnbmVkIGludCBsZWFm LAorICAgIHVuc2lnbmVkIGludCBzdWJsZWFmLAogICAgIHVuc2lnbmVkIGludCByZWcsCiAgICAg dW5zaWduZWQgaW50IGJpdCwKICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwKQEAg LTE2NTgsNyArMTY3Niw3IEBAIHN0YXRpYyBib29sIHZjcHVfaGFzKAogICAgIGludCByYyA9IFg4 NkVNVUxfT0tBWTsKIAogICAgIGZhaWxfaWYoIW9wcy0+Y3B1aWQpOwotICAgIHJjID0gb3BzLT5j cHVpZChlYXgsIDAsICZyZXMsIGN0eHQpOworICAgIHJjID0gb3BzLT5jcHVpZChsZWFmLCBzdWJs ZWFmLCAmcmVzLCBjdHh0KTsKICAgICBpZiAoIHJjID09IFg4NkVNVUxfT0tBWSApCiAgICAgewog ICAgICAgICBzd2l0Y2ggKCByZWcgKQpAQCAtMTY3Nyw1MyArMTY5NSw1NiBAQCBzdGF0aWMgYm9v bCB2Y3B1X2hhcygKICAgICByZXR1cm4gcmMgPT0gWDg2RU1VTF9PS0FZOwogfQogCi0jZGVmaW5l IHZjcHVfaGFzX2ZwdSgpICAgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgRURYLCAgMCwgY3R4 dCwgb3BzKQotI2RlZmluZSB2Y3B1X2hhc19zZXAoKSAgICAgICAgIHZjcHVfaGFzKCAgICAgICAg IDEsIEVEWCwgMTEsIGN0eHQsIG9wcykKLSNkZWZpbmUgdmNwdV9oYXNfY3g4KCkgICAgICAgICB2 Y3B1X2hhcyggICAgICAgICAxLCBFRFgsICA4LCBjdHh0LCBvcHMpCi0jZGVmaW5lIHZjcHVfaGFz X2Ntb3YoKSAgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgRURYLCAxNSwgY3R4dCwgb3BzKQot I2RlZmluZSB2Y3B1X2hhc19jbGZsdXNoKCkgICAgIHZjcHVfaGFzKCAgICAgICAgIDEsIEVEWCwg MTksIGN0eHQsIG9wcykKLSNkZWZpbmUgdmNwdV9oYXNfbW14KCkgICAgICAgICB2Y3B1X2hhcygg ICAgICAgICAxLCBFRFgsIDIzLCBjdHh0LCBvcHMpCi0jZGVmaW5lIHZjcHVfaGFzX3NzZSgpICAg ICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgRURYLCAyNSwgY3R4dCwgb3BzKQotI2RlZmluZSB2 Y3B1X2hhc19zc2UyKCkgICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDEsIEVEWCwgMjYsIGN0eHQs IG9wcykKLSNkZWZpbmUgdmNwdV9oYXNfc3NlMygpICAgICAgICB2Y3B1X2hhcyggICAgICAgICAx LCBFQ1gsICAwLCBjdHh0LCBvcHMpCi0jZGVmaW5lIHZjcHVfaGFzX3BjbG11bHFkcSgpICAgdmNw dV9oYXMoICAgICAgICAgMSwgRUNYLCAgMSwgY3R4dCwgb3BzKQotI2RlZmluZSB2Y3B1X2hhc19z c3NlMygpICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDEsIEVDWCwgIDksIGN0eHQsIG9wcykKLSNk ZWZpbmUgdmNwdV9oYXNfZm1hKCkgICAgICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBFQ1gsIDEy LCBjdHh0LCBvcHMpCi0jZGVmaW5lIHZjcHVfaGFzX2N4MTYoKSAgICAgICAgdmNwdV9oYXMoICAg ICAgICAgMSwgRUNYLCAxMywgY3R4dCwgb3BzKQotI2RlZmluZSB2Y3B1X2hhc19zc2U0XzEoKSAg ICAgIHZjcHVfaGFzKCAgICAgICAgIDEsIEVDWCwgMTksIGN0eHQsIG9wcykKLSNkZWZpbmUgdmNw dV9oYXNfc3NlNF8yKCkgICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBFQ1gsIDIwLCBjdHh0LCBv cHMpCi0jZGVmaW5lIHZjcHVfaGFzX21vdmJlKCkgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwg RUNYLCAyMiwgY3R4dCwgb3BzKQotI2RlZmluZSB2Y3B1X2hhc19wb3BjbnQoKSAgICAgIHZjcHVf aGFzKCAgICAgICAgIDEsIEVDWCwgMjMsIGN0eHQsIG9wcykKLSNkZWZpbmUgdmNwdV9oYXNfYWVz bmkoKSAgICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBFQ1gsIDI1LCBjdHh0LCBvcHMpCi0jZGVm aW5lIHZjcHVfaGFzX2F2eCgpICAgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgRUNYLCAyOCwg Y3R4dCwgb3BzKQotI2RlZmluZSB2Y3B1X2hhc19mMTZjKCkgICAgICAgIHZjcHVfaGFzKCAgICAg ICAgIDEsIEVDWCwgMjksIGN0eHQsIG9wcykKLSNkZWZpbmUgdmNwdV9oYXNfcmRyYW5kKCkgICAg ICB2Y3B1X2hhcyggICAgICAgICAxLCBFQ1gsIDMwLCBjdHh0LCBvcHMpCi0jZGVmaW5lIHZjcHVf aGFzX21teGV4dCgpICAgICAodmNwdV9oYXMoMHg4MDAwMDAwMSwgRURYLCAyMiwgY3R4dCwgb3Bz KSB8fCBcCisjZGVmaW5lIFggMCAvKiBKdXN0IGZvciBkb2N1bWVudGF0aW9uIHB1cnBvc2VzLiAq LworCisjZGVmaW5lIHZjcHVfaGFzX2ZwdSgpICAgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwg WCwgRURYLCAgMCwgY3R4dCwgb3BzKQorI2RlZmluZSB2Y3B1X2hhc19zZXAoKSAgICAgICAgIHZj cHVfaGFzKCAgICAgICAgIDEsIFgsIEVEWCwgMTEsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9o YXNfY3g4KCkgICAgICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBYLCBFRFgsICA4LCBjdHh0LCBv cHMpCisjZGVmaW5lIHZjcHVfaGFzX2Ntb3YoKSAgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwg WCwgRURYLCAxNSwgY3R4dCwgb3BzKQorI2RlZmluZSB2Y3B1X2hhc19jbGZsdXNoKCkgICAgIHZj cHVfaGFzKCAgICAgICAgIDEsIFgsIEVEWCwgMTksIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9o YXNfbW14KCkgICAgICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBYLCBFRFgsIDIzLCBjdHh0LCBv cHMpCisjZGVmaW5lIHZjcHVfaGFzX3NzZSgpICAgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwg WCwgRURYLCAyNSwgY3R4dCwgb3BzKQorI2RlZmluZSB2Y3B1X2hhc19zc2UyKCkgICAgICAgIHZj cHVfaGFzKCAgICAgICAgIDEsIFgsIEVEWCwgMjYsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9o YXNfc3NlMygpICAgICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBYLCBFQ1gsICAwLCBjdHh0LCBv cHMpCisjZGVmaW5lIHZjcHVfaGFzX3BjbG11bHFkcSgpICAgdmNwdV9oYXMoICAgICAgICAgMSwg WCwgRUNYLCAgMSwgY3R4dCwgb3BzKQorI2RlZmluZSB2Y3B1X2hhc19zc3NlMygpICAgICAgIHZj cHVfaGFzKCAgICAgICAgIDEsIFgsIEVDWCwgIDksIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9o YXNfZm1hKCkgICAgICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBYLCBFQ1gsIDEyLCBjdHh0LCBv cHMpCisjZGVmaW5lIHZjcHVfaGFzX2N4MTYoKSAgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwg WCwgRUNYLCAxMywgY3R4dCwgb3BzKQorI2RlZmluZSB2Y3B1X2hhc19zc2U0XzEoKSAgICAgIHZj cHVfaGFzKCAgICAgICAgIDEsIFgsIEVDWCwgMTksIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9o YXNfc3NlNF8yKCkgICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBYLCBFQ1gsIDIwLCBjdHh0LCBv cHMpCisjZGVmaW5lIHZjcHVfaGFzX21vdmJlKCkgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwg WCwgRUNYLCAyMiwgY3R4dCwgb3BzKQorI2RlZmluZSB2Y3B1X2hhc19wb3BjbnQoKSAgICAgIHZj cHVfaGFzKCAgICAgICAgIDEsIFgsIEVDWCwgMjMsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9o YXNfYWVzbmkoKSAgICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBYLCBFQ1gsIDI1LCBjdHh0LCBv cHMpCisjZGVmaW5lIHZjcHVfaGFzX2F2eCgpICAgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwg WCwgRUNYLCAyOCwgY3R4dCwgb3BzKQorI2RlZmluZSB2Y3B1X2hhc19mMTZjKCkgICAgICAgIHZj cHVfaGFzKCAgICAgICAgIDEsIFgsIEVDWCwgMjksIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9o YXNfcmRyYW5kKCkgICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBYLCBFQ1gsIDMwLCBjdHh0LCBv cHMpCisjZGVmaW5lIHZjcHVfaGFzX21teGV4dCgpICAgICAodmNwdV9oYXMoMHg4MDAwMDAwMSwg WCwgRURYLCAyMiwgY3R4dCwgb3BzKSB8fCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdmNwdV9oYXNfc3NlKCkpCi0jZGVmaW5lIHZjcHVfaGFzXzNkbm93X2V4dCgpICAgdmNwdV9o YXMoMHg4MDAwMDAwMSwgRURYLCAzMCwgY3R4dCwgb3BzKQotI2RlZmluZSB2Y3B1X2hhc18zZG5v dygpICAgICAgIHZjcHVfaGFzKDB4ODAwMDAwMDEsIEVEWCwgMzEsIGN0eHQsIG9wcykKLSNkZWZp bmUgdmNwdV9oYXNfbGFoZl9sbSgpICAgICB2Y3B1X2hhcygweDgwMDAwMDAxLCBFQ1gsICAwLCBj dHh0LCBvcHMpCi0jZGVmaW5lIHZjcHVfaGFzX2NyOF9sZWdhY3koKSAgdmNwdV9oYXMoMHg4MDAw MDAwMSwgRUNYLCAgNCwgY3R4dCwgb3BzKQotI2RlZmluZSB2Y3B1X2hhc19semNudCgpICAgICAg IHZjcHVfaGFzKDB4ODAwMDAwMDEsIEVDWCwgIDUsIGN0eHQsIG9wcykKLSNkZWZpbmUgdmNwdV9o YXNfc3NlNGEoKSAgICAgICB2Y3B1X2hhcygweDgwMDAwMDAxLCBFQ1gsICA2LCBjdHh0LCBvcHMp Ci0jZGVmaW5lIHZjcHVfaGFzX21pc2FsaWduc3NlKCkgdmNwdV9oYXMoMHg4MDAwMDAwMSwgRUNY LCAgNywgY3R4dCwgb3BzKQotI2RlZmluZSB2Y3B1X2hhc194b3AoKSAgICAgICAgIHZjcHVfaGFz KDB4ODAwMDAwMDEsIEVDWCwgMTIsIGN0eHQsIG9wcykKLSNkZWZpbmUgdmNwdV9oYXNfZm1hNCgp ICAgICAgICB2Y3B1X2hhcygweDgwMDAwMDAxLCBFQ1gsIDE2LCBjdHh0LCBvcHMpCi0jZGVmaW5l IHZjcHVfaGFzX3RibSgpICAgICAgICAgdmNwdV9oYXMoMHg4MDAwMDAwMSwgRUNYLCAyMSwgY3R4 dCwgb3BzKQotI2RlZmluZSB2Y3B1X2hhc19ibWkxKCkgICAgICAgIHZjcHVfaGFzKCAgICAgICAg IDcsIEVCWCwgIDMsIGN0eHQsIG9wcykKLSNkZWZpbmUgdmNwdV9oYXNfaGxlKCkgICAgICAgICB2 Y3B1X2hhcyggICAgICAgICA3LCBFQlgsICA0LCBjdHh0LCBvcHMpCi0jZGVmaW5lIHZjcHVfaGFz X2F2eDIoKSAgICAgICAgdmNwdV9oYXMoICAgICAgICAgNywgRUJYLCAgNSwgY3R4dCwgb3BzKQot I2RlZmluZSB2Y3B1X2hhc19ibWkyKCkgICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDcsIEVCWCwg IDgsIGN0eHQsIG9wcykKLSNkZWZpbmUgdmNwdV9oYXNfcnRtKCkgICAgICAgICB2Y3B1X2hhcygg ICAgICAgICA3LCBFQlgsIDExLCBjdHh0LCBvcHMpCi0jZGVmaW5lIHZjcHVfaGFzX21weCgpICAg ICAgICAgdmNwdV9oYXMoICAgICAgICAgNywgRUJYLCAxNCwgY3R4dCwgb3BzKQotI2RlZmluZSB2 Y3B1X2hhc19yZHNlZWQoKSAgICAgIHZjcHVfaGFzKCAgICAgICAgIDcsIEVCWCwgMTgsIGN0eHQs IG9wcykKLSNkZWZpbmUgdmNwdV9oYXNfYWR4KCkgICAgICAgICB2Y3B1X2hhcyggICAgICAgICA3 LCBFQlgsIDE5LCBjdHh0LCBvcHMpCi0jZGVmaW5lIHZjcHVfaGFzX3NtYXAoKSAgICAgICAgdmNw dV9oYXMoICAgICAgICAgNywgRUJYLCAyMCwgY3R4dCwgb3BzKQotI2RlZmluZSB2Y3B1X2hhc19j bGZsdXNob3B0KCkgIHZjcHVfaGFzKCAgICAgICAgIDcsIEVCWCwgMjMsIGN0eHQsIG9wcykKLSNk ZWZpbmUgdmNwdV9oYXNfY2x3YigpICAgICAgICB2Y3B1X2hhcyggICAgICAgICA3LCBFQlgsIDI0 LCBjdHh0LCBvcHMpCi0jZGVmaW5lIHZjcHVfaGFzX3NoYSgpICAgICAgICAgdmNwdV9oYXMoICAg ICAgICAgNywgRUJYLCAyOSwgY3R4dCwgb3BzKQotI2RlZmluZSB2Y3B1X2hhc19yZHBpZCgpICAg ICAgIHZjcHVfaGFzKCAgICAgICAgIDcsIEVDWCwgMjIsIGN0eHQsIG9wcykKLSNkZWZpbmUgdmNw dV9oYXNfY2x6ZXJvKCkgICAgICB2Y3B1X2hhcygweDgwMDAwMDA4LCBFQlgsICAwLCBjdHh0LCBv cHMpCisjZGVmaW5lIHZjcHVfaGFzXzNkbm93X2V4dCgpICAgdmNwdV9oYXMoMHg4MDAwMDAwMSwg WCwgRURYLCAzMCwgY3R4dCwgb3BzKQorI2RlZmluZSB2Y3B1X2hhc18zZG5vdygpICAgICAgIHZj cHVfaGFzKDB4ODAwMDAwMDEsIFgsIEVEWCwgMzEsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9o YXNfbGFoZl9sbSgpICAgICB2Y3B1X2hhcygweDgwMDAwMDAxLCBYLCBFQ1gsICAwLCBjdHh0LCBv cHMpCisjZGVmaW5lIHZjcHVfaGFzX2NyOF9sZWdhY3koKSAgdmNwdV9oYXMoMHg4MDAwMDAwMSwg WCwgRUNYLCAgNCwgY3R4dCwgb3BzKQorI2RlZmluZSB2Y3B1X2hhc19semNudCgpICAgICAgIHZj cHVfaGFzKDB4ODAwMDAwMDEsIFgsIEVDWCwgIDUsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9o YXNfc3NlNGEoKSAgICAgICB2Y3B1X2hhcygweDgwMDAwMDAxLCBYLCBFQ1gsICA2LCBjdHh0LCBv cHMpCisjZGVmaW5lIHZjcHVfaGFzX21pc2FsaWduc3NlKCkgdmNwdV9oYXMoMHg4MDAwMDAwMSwg WCwgRUNYLCAgNywgY3R4dCwgb3BzKQorI2RlZmluZSB2Y3B1X2hhc194b3AoKSAgICAgICAgIHZj cHVfaGFzKDB4ODAwMDAwMDEsIFgsIEVDWCwgMTIsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9o YXNfZm1hNCgpICAgICAgICB2Y3B1X2hhcygweDgwMDAwMDAxLCBYLCBFQ1gsIDE2LCBjdHh0LCBv cHMpCisjZGVmaW5lIHZjcHVfaGFzX3RibSgpICAgICAgICAgdmNwdV9oYXMoMHg4MDAwMDAwMSwg WCwgRUNYLCAyMSwgY3R4dCwgb3BzKQorI2RlZmluZSB2Y3B1X2hhc19ibWkxKCkgICAgICAgIHZj cHVfaGFzKCAgICAgICAgIDcsIDAsIEVCWCwgIDMsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9o YXNfaGxlKCkgICAgICAgICB2Y3B1X2hhcyggICAgICAgICA3LCAwLCBFQlgsICA0LCBjdHh0LCBv cHMpCisjZGVmaW5lIHZjcHVfaGFzX2F2eDIoKSAgICAgICAgdmNwdV9oYXMoICAgICAgICAgNywg MCwgRUJYLCAgNSwgY3R4dCwgb3BzKQorI2RlZmluZSB2Y3B1X2hhc19ibWkyKCkgICAgICAgIHZj cHVfaGFzKCAgICAgICAgIDcsIDAsIEVCWCwgIDgsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9o YXNfcnRtKCkgICAgICAgICB2Y3B1X2hhcyggICAgICAgICA3LCAwLCBFQlgsIDExLCBjdHh0LCBv cHMpCisjZGVmaW5lIHZjcHVfaGFzX21weCgpICAgICAgICAgdmNwdV9oYXMoICAgICAgICAgNywg MCwgRUJYLCAxNCwgY3R4dCwgb3BzKQorI2RlZmluZSB2Y3B1X2hhc19yZHNlZWQoKSAgICAgIHZj cHVfaGFzKCAgICAgICAgIDcsIDAsIEVCWCwgMTgsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9o YXNfYWR4KCkgICAgICAgICB2Y3B1X2hhcyggICAgICAgICA3LCAwLCBFQlgsIDE5LCBjdHh0LCBv cHMpCisjZGVmaW5lIHZjcHVfaGFzX3NtYXAoKSAgICAgICAgdmNwdV9oYXMoICAgICAgICAgNywg MCwgRUJYLCAyMCwgY3R4dCwgb3BzKQorI2RlZmluZSB2Y3B1X2hhc19jbGZsdXNob3B0KCkgIHZj cHVfaGFzKCAgICAgICAgIDcsIDAsIEVCWCwgMjMsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9o YXNfY2x3YigpICAgICAgICB2Y3B1X2hhcyggICAgICAgICA3LCAwLCBFQlgsIDI0LCBjdHh0LCBv cHMpCisjZGVmaW5lIHZjcHVfaGFzX3NoYSgpICAgICAgICAgdmNwdV9oYXMoICAgICAgICAgNywg MCwgRUJYLCAyOSwgY3R4dCwgb3BzKQorI2RlZmluZSB2Y3B1X2hhc19yZHBpZCgpICAgICAgIHZj cHVfaGFzKCAgICAgICAgIDcsIDAsIEVDWCwgMjIsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9o YXNfeGdldGJ2MSgpICAgICB2Y3B1X2hhcyggICAgICAgMHhkLCAxLCBFQVgsICAyLCBjdHh0LCBv cHMpCisjZGVmaW5lIHZjcHVfaGFzX2NsemVybygpICAgICAgdmNwdV9oYXMoMHg4MDAwMDAwOCwg WCwgRUJYLCAgMCwgY3R4dCwgb3BzKQogCiAjZGVmaW5lIHZjcHVfbXVzdF9oYXZlKGZlYXQpIFwK ICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoIXZjcHVfaGFzXyMjZmVhdCgpLCBFWENfVUQpCkBA IC01MTU4LDE4ICs1MTc5LDMzIEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgICAgIF9yZWdz LmVmbGFncyB8PSBYODZfRUZMQUdTX0FDOwogICAgICAgICAgICAgYnJlYWs7CiAKLSNpZmRlZiBf X1hFTl9fCi0gICAgICAgIGNhc2UgMHhkMTogLyogeHNldGJ2ICovCisgICAgICAgIGNhc2UgMHhk MDogLyogeGdldGJ2ICovCiAgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYodmV4LnBm eCwgRVhDX1VEKTsKLSAgICAgICAgICAgIGlmICggIW9wcy0+cmVhZF9jciB8fCBvcHMtPnJlYWRf Y3IoNCwgJmNyNCwgY3R4dCkgIT0gWDg2RU1VTF9PS0FZICkKKyAgICAgICAgICAgIGlmICggIW9w cy0+cmVhZF9jciB8fCAhb3BzLT5yZWFkX3hjciB8fAorICAgICAgICAgICAgICAgICBvcHMtPnJl YWRfY3IoNCwgJmNyNCwgY3R4dCkgIT0gWDg2RU1VTF9PS0FZICkKICAgICAgICAgICAgICAgICBj cjQgPSAwOwogICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCEoY3I0ICYgWDg2X0NS NF9PU1hTQVZFKSwgRVhDX1VEKTsKLSAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZigh bW9kZV9yaW5nMCgpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxl X3hzZXRidihfcmVncy5lY3gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBfcmVncy5lYXggfCAoX3JlZ3MucmR4IDw8IDMyKSksCisgICAgICAgICAgICBn ZW5lcmF0ZV9leGNlcHRpb25faWYoX3JlZ3MuZWN4ID4gKHZjcHVfaGFzX3hnZXRidjEoKSA/IDEg OiAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENfR1AsIDApOworICAg ICAgICAgICAgcmMgPSBvcHMtPnJlYWRfeGNyKF9yZWdzLmVjeCwgJm1zcl92YWwsIGN0eHQpOwor ICAgICAgICAgICAgaWYgKCByYyAhPSBYODZFTVVMX09LQVkgKQorICAgICAgICAgICAgICAgIGdv dG8gZG9uZTsKKyAgICAgICAgICAgIF9yZWdzLnIoYXgpID0gKHVpbnQzMl90KW1zcl92YWw7Cisg ICAgICAgICAgICBfcmVncy5yKGR4KSA9IG1zcl92YWwgPj4gMzI7CisgICAgICAgICAgICBicmVh azsKKworICAgICAgICBjYXNlIDB4ZDE6IC8qIHhzZXRidiAqLworICAgICAgICAgICAgZ2VuZXJh dGVfZXhjZXB0aW9uX2lmKHZleC5wZngsIEVYQ19VRCk7CisgICAgICAgICAgICBpZiAoICFvcHMt PnJlYWRfY3IgfHwgIW9wcy0+d3JpdGVfeGNyIHx8CisgICAgICAgICAgICAgICAgIG9wcy0+cmVh ZF9jcig0LCAmY3I0LCBjdHh0KSAhPSBYODZFTVVMX09LQVkgKQorICAgICAgICAgICAgICAgIGNy NCA9IDA7CisgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoIShjcjQgJiBYODZfQ1I0 X09TWFNBVkUpLCBFWENfVUQpOworICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCFt b2RlX3JpbmcwKCkgfHwgX3JlZ3MuZWN4LCBFWENfR1AsIDApOworICAgICAgICAgICAgcmMgPSBv cHMtPndyaXRlX3hjcihfcmVncy5lY3gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF9yZWdzLmVheCB8ICgodWludDY0X3QpX3JlZ3MuZWR4IDw8IDMyKSwgY3R4dCk7CisgICAgICAg ICAgICBpZiAoIHJjICE9IFg4NkVNVUxfT0tBWSApCisgICAgICAgICAgICAgICAgZ290byBkb25l OwogICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKIAogICAgICAgICBjYXNlIDB4ZDQ6IC8qIHZt ZnVuYyAqLwogICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKHZleC5wZngsIEVYQ19V RCk7Ci0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oCisrKyBiL3hl bi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oCkBAIC0zNzMsNiArMzczLDI0IEBA IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMKICAgICAgICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQg KmN0eHQpOwogCiAgICAgLyoKKyAgICAgKiByZWFkX3hjcjogUmVhZCBmcm9tIGV4dGVuZGVkIGNv bnRyb2wgcmVnaXN0ZXIuCisgICAgICogIEByZWc6ICAgW0lOIF0gUmVnaXN0ZXIgdG8gcmVhZC4K KyAgICAgKi8KKyAgICBpbnQgKCpyZWFkX3hjcikoCisgICAgICAgIHVuc2lnbmVkIGludCByZWcs CisgICAgICAgIHVpbnQ2NF90ICp2YWwsCisgICAgICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0 ICpjdHh0KTsKKworICAgIC8qCisgICAgICogd3JpdGVfeGNyOiBXcml0ZSB0byBleHRlbmRlZCBj b250cm9sIHJlZ2lzdGVyLgorICAgICAqICBAcmVnOiAgIFtJTiBdIFJlZ2lzdGVyIHRvIHdyaXRl LgorICAgICAqLworICAgIGludCAoKndyaXRlX3hjcikoCisgICAgICAgIHVuc2lnbmVkIGludCBy ZWcsCisgICAgICAgIHVpbnQ2NF90IHZhbCwKKyAgICAgICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0 eHQgKmN0eHQpOworCisgICAgLyoKICAgICAgKiByZWFkX21zcjogUmVhZCBmcm9tIG1vZGVsLXNw ZWNpZmljIHJlZ2lzdGVyLgogICAgICAqICBAcmVnOiAgIFtJTiBdIFJlZ2lzdGVyIHRvIHJlYWQu CiAgICAgICovCi0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3RyYWNlLmgKKysrIGIveGVu L2luY2x1ZGUvYXNtLXg4Ni9odm0vdHJhY2UuaApAQCAtMzMsNiArMzMsOCBAQAogI2RlZmluZSBE T19UUkNfSFZNX0NSX1dSSVRFNjQgIERFRkFVTFRfSFZNX1JFR0FDQ0VTUwogI2RlZmluZSBET19U UkNfSFZNX0RSX1JFQUQgICAgIERFRkFVTFRfSFZNX1JFR0FDQ0VTUwogI2RlZmluZSBET19UUkNf SFZNX0RSX1dSSVRFICAgIERFRkFVTFRfSFZNX1JFR0FDQ0VTUworI2RlZmluZSBET19UUkNfSFZN X1hDUl9SRUFENjQgIERFRkFVTFRfSFZNX1JFR0FDQ0VTUworI2RlZmluZSBET19UUkNfSFZNX1hD Ul9XUklURTY0IERFRkFVTFRfSFZNX1JFR0FDQ0VTUwogI2RlZmluZSBET19UUkNfSFZNX01TUl9S RUFEICAgIERFRkFVTFRfSFZNX1JFR0FDQ0VTUwogI2RlZmluZSBET19UUkNfSFZNX01TUl9XUklU RSAgIERFRkFVTFRfSFZNX1JFR0FDQ0VTUwogI2RlZmluZSBET19UUkNfSFZNX1JEVFNDICAgICAg IERFRkFVTFRfSFZNX1JFR0FDQ0VTUwotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3g4Ni1kZWZu cy5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYveDg2LWRlZm5zLmgKQEAgLTY2LDQgKzY2LDI4 IEBACiAjZGVmaW5lIFg4Nl9DUjRfU01BUCAgICAgICAweDAwMjAwMDAwIC8qIGVuYWJsZSBTTUFQ ICovCiAjZGVmaW5lIFg4Nl9DUjRfUEtFICAgICAgICAweDAwNDAwMDAwIC8qIGVuYWJsZSBQS0Ug Ki8KIAorLyoKKyAqIFhTVEFURSBjb21wb25lbnQgZmxhZ3MgaW4gWENSMAorICovCisjZGVmaW5l IF9YU1RBVEVfRlAgICAgICAgICAgICAgICAgMAorI2RlZmluZSBYU1RBVEVfRlAgICAgICAgICAg ICAgICAgICgxVUxMIDw8IF9YU1RBVEVfRlApCisjZGVmaW5lIF9YU1RBVEVfU1NFICAgICAgICAg ICAgICAgMQorI2RlZmluZSBYU1RBVEVfU1NFICAgICAgICAgICAgICAgICgxVUxMIDw8IF9YU1RB VEVfU1NFKQorI2RlZmluZSBfWFNUQVRFX1lNTSAgICAgICAgICAgICAgIDIKKyNkZWZpbmUgWFNU QVRFX1lNTSAgICAgICAgICAgICAgICAoMVVMTCA8PCBfWFNUQVRFX1lNTSkKKyNkZWZpbmUgX1hT VEFURV9CTkRSRUdTICAgICAgICAgICAzCisjZGVmaW5lIFhTVEFURV9CTkRSRUdTICAgICAgICAg ICAgKDFVTEwgPDwgX1hTVEFURV9CTkRSRUdTKQorI2RlZmluZSBfWFNUQVRFX0JORENTUiAgICAg ICAgICAgIDQKKyNkZWZpbmUgWFNUQVRFX0JORENTUiAgICAgICAgICAgICAoMVVMTCA8PCBfWFNU QVRFX0JORENTUikKKyNkZWZpbmUgX1hTVEFURV9PUE1BU0sgICAgICAgICAgICA1CisjZGVmaW5l IFhTVEFURV9PUE1BU0sgICAgICAgICAgICAgKDFVTEwgPDwgX1hTVEFURV9PUE1BU0spCisjZGVm aW5lIF9YU1RBVEVfWk1NICAgICAgICAgICAgICAgNgorI2RlZmluZSBYU1RBVEVfWk1NICAgICAg ICAgICAgICAgICgxVUxMIDw8IF9YU1RBVEVfWk1NKQorI2RlZmluZSBfWFNUQVRFX0hJX1pNTSAg ICAgICAgICAgIDcKKyNkZWZpbmUgWFNUQVRFX0hJX1pNTSAgICAgICAgICAgICAoMVVMTCA8PCBf WFNUQVRFX0hJX1pNTSkKKyNkZWZpbmUgX1hTVEFURV9QS1JVICAgICAgICAgICAgICA5CisjZGVm aW5lIFhTVEFURV9QS1JVICAgICAgICAgICAgICAgKDFVTEwgPDwgX1hTVEFURV9QS1JVKQorI2Rl ZmluZSBfWFNUQVRFX0xXUCAgICAgICAgICAgICAgIDYyCisjZGVmaW5lIFhTVEFURV9MV1AgICAg ICAgICAgICAgICAgKDFVTEwgPDwgX1hTVEFURV9MV1ApCisKICNlbmRpZgkvKiBfX1hFTl9YODZf REVGTlNfSF9fICovCi0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYveHN0YXRlLmgKKysrIGIveGVu L2luY2x1ZGUvYXNtLXg4Ni94c3RhdGUuaApAQCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVkZSA8 eGVuL3NjaGVkLmg+CiAjaW5jbHVkZSA8YXNtL2NwdWZlYXR1cmUuaD4KKyNpbmNsdWRlIDxhc20v eDg2LWRlZm5zLmg+CiAKICNkZWZpbmUgRkNXX0RFRkFVTFQgICAgICAgICAgICAgICAweDAzN2YK ICNkZWZpbmUgRkNXX1JFU0VUICAgICAgICAgICAgICAgICAweDAwNDAKQEAgLTI4LDI3ICsyOSw2 IEBAIGV4dGVybiB1aW50MzJfdCBteGNzcl9tYXNrOwogI2RlZmluZSBYU0FWRV9IRFJfT0ZGU0VU ICAgICAgICAgIEZYU0FWRV9TSVpFCiAjZGVmaW5lIFhTVEFURV9BUkVBX01JTl9TSVpFICAgICAg KEZYU0FWRV9TSVpFICsgWFNBVkVfSERSX1NJWkUpCiAKLSNkZWZpbmUgX1hTVEFURV9GUCAgICAg ICAgICAgICAgICAwCi0jZGVmaW5lIFhTVEFURV9GUCAgICAgICAgICAgICAgICAgKDFVTEwgPDwg X1hTVEFURV9GUCkKLSNkZWZpbmUgX1hTVEFURV9TU0UgICAgICAgICAgICAgICAxCi0jZGVmaW5l IFhTVEFURV9TU0UgICAgICAgICAgICAgICAgKDFVTEwgPDwgX1hTVEFURV9TU0UpCi0jZGVmaW5l IF9YU1RBVEVfWU1NICAgICAgICAgICAgICAgMgotI2RlZmluZSBYU1RBVEVfWU1NICAgICAgICAg ICAgICAgICgxVUxMIDw8IF9YU1RBVEVfWU1NKQotI2RlZmluZSBfWFNUQVRFX0JORFJFR1MgICAg ICAgICAgIDMKLSNkZWZpbmUgWFNUQVRFX0JORFJFR1MgICAgICAgICAgICAoMVVMTCA8PCBfWFNU QVRFX0JORFJFR1MpCi0jZGVmaW5lIF9YU1RBVEVfQk5EQ1NSICAgICAgICAgICAgNAotI2RlZmlu ZSBYU1RBVEVfQk5EQ1NSICAgICAgICAgICAgICgxVUxMIDw8IF9YU1RBVEVfQk5EQ1NSKQotI2Rl ZmluZSBfWFNUQVRFX09QTUFTSyAgICAgICAgICAgIDUKLSNkZWZpbmUgWFNUQVRFX09QTUFTSyAg ICAgICAgICAgICAoMVVMTCA8PCBfWFNUQVRFX09QTUFTSykKLSNkZWZpbmUgX1hTVEFURV9aTU0g ICAgICAgICAgICAgICA2Ci0jZGVmaW5lIFhTVEFURV9aTU0gICAgICAgICAgICAgICAgKDFVTEwg PDwgX1hTVEFURV9aTU0pCi0jZGVmaW5lIF9YU1RBVEVfSElfWk1NICAgICAgICAgICAgNwotI2Rl ZmluZSBYU1RBVEVfSElfWk1NICAgICAgICAgICAgICgxVUxMIDw8IF9YU1RBVEVfSElfWk1NKQot I2RlZmluZSBfWFNUQVRFX1BLUlUgICAgICAgICAgICAgIDkKLSNkZWZpbmUgWFNUQVRFX1BLUlUg ICAgICAgICAgICAgICAoMVVMTCA8PCBfWFNUQVRFX1BLUlUpCi0jZGVmaW5lIF9YU1RBVEVfTFdQ ICAgICAgICAgICAgICAgNjIKLSNkZWZpbmUgWFNUQVRFX0xXUCAgICAgICAgICAgICAgICAoMVVM TCA8PCBfWFNUQVRFX0xXUCkKLQogI2RlZmluZSBYU1RBVEVfRlBfU1NFICAoWFNUQVRFX0ZQIHwg WFNUQVRFX1NTRSkKICNkZWZpbmUgWENOVFhUX01BU0sgICAgKFhTVEFURV9GUCB8IFhTVEFURV9T U0UgfCBYU1RBVEVfWU1NIHwgWFNUQVRFX09QTUFTSyB8IFwKICAgICAgICAgICAgICAgICAgICAg ICAgIFhTVEFURV9aTU0gfCBYU1RBVEVfSElfWk1NIHwgWFNUQVRFX05PTkxBWlkpCi0tLSBhL3hl bi9pbmNsdWRlL3B1YmxpYy90cmFjZS5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy90cmFjZS5o CkBAIC0yMzUsNiArMjM1LDggQEAKICNkZWZpbmUgVFJDX0hWTV9UUkFQICAgICAgICAgICAgIChU UkNfSFZNX0hBTkRMRVIgKyAweDIzKQogI2RlZmluZSBUUkNfSFZNX1RSQVBfREVCVUcgICAgICAg KFRSQ19IVk1fSEFORExFUiArIDB4MjQpCiAjZGVmaW5lIFRSQ19IVk1fVkxBUElDICAgICAgICAg ICAoVFJDX0hWTV9IQU5ETEVSICsgMHgyNSkKKyNkZWZpbmUgVFJDX0hWTV9YQ1JfUkVBRDY0ICAg ICAgKFRSQ19IVk1fSEFORExFUiArIFRSQ182NF9GTEFHICsgMHgyNikKKyNkZWZpbmUgVFJDX0hW TV9YQ1JfV1JJVEU2NCAgICAgKFRSQ19IVk1fSEFORExFUiArIFRSQ182NF9GTEFHICsgMHgyNykK IAogI2RlZmluZSBUUkNfSFZNX0lPUE9SVF9XUklURSAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgy MTYpCiAjZGVmaW5lIFRSQ19IVk1fSU9NRU1fV1JJVEUgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAw eDIxNykKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xp c3RzLnhlbi5vcmcveGVuLWRldmVsCg==