From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v4 08/20] x86emul: abstract out XCRn accesses Date: Wed, 28 Feb 2018 06:03:30 -0700 Message-ID: <5A96B6B202000078001ACBCD@prv-mh.provo.novell.com> References: <5A96B3B902000078001ACB6D@prv-mh.provo.novell.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 1er1OR-0001yo-J0 for xen-devel@lists.xenproject.org; Wed, 28 Feb 2018 13:03:35 +0000 In-Reply-To: <5A96B3B902000078001ACB6D@prv-mh.provo.novell.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel Cc: George Dunlap , Andrew Cooper , Paul Durrant List-Id: xen-devel@lists.xenproject.org VXNlIGhvb2tzLCBqdXN0IGxpa2UgZG9uZSBmb3Igb3RoZXIgc3BlY2lhbCBwdXJwb3NlIHJlZ2lz dGVycy4KClRoaXMgaW5jbHVkZXMgbW92aW5nIFhDUjAgY2hlY2tzIGZyb20gaHZtZW11bF9nZXRf ZnB1KCkgdG8gdGhlIGVtdWxhdG9yCml0c2VsZiBhcyB3ZWxsIGFzIGFkZGluZyBzdXBwb3J0IGZv ciBYR0VUQlYgZW11bGF0aW9uLgoKRm9yIG5vdyBmdXp6ZXIgcmVhZHMgd2lsbCBvYnRhaW4gdGhl IHJlYWwgdmFsdWVzIChtaW51cyB0aGUgZnV6emluZyBvZgp0aGUgaG9vayBwb2ludGVyIGl0c2Vs ZikuCgpTaWduZWQtb2ZmLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+ClJldmll d2VkLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgotLS0KdjQ6IEhh dmUgaHZtZW11bF9yZWFkX3hjcigpIHJhaXNlIGFuIGV4Y2VwdGlvbiBpbnN0ZWFkIG9mIHJldHVy bmluZwogICAgWDg2RU1VTF9VTkhBTkRMRUFCTEUgZm9yIGludmFsaWQgaW5kZXhlcy4gSW50cm9k dWNlIHhnZXRidigpIGFuZCBhZGQKICAgIHZvbGF0aWxlIHRvIHRoZSBhc20oKSBtb3ZlZCB0aGVy ZS4gU3BsaXQgb3V0IF9YU1RBVEVfKiBtb3ZlbWVudC4KdjI6IFJlLWJhc2UuCgotLS0gYS90b29s cy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6LWVtdWwuYworKysgYi90b29scy9m dXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6LWVtdWwuYwpAQCAtNDU4LDYgKzQ1OCw4 IEBAIHN0YXRpYyBpbnQgZnV6el93cml0ZV9jcigKICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwog fQogCisjZGVmaW5lIGZ1enpfcmVhZF94Y3IgZW11bF90ZXN0X3JlYWRfeGNyCisKIGVudW0gewog ICAgIE1TUklfSUEzMl9TWVNFTlRFUl9DUywKICAgICBNU1JJX0lBMzJfU1lTRU5URVJfRVNQLApA QCAtNTc2LDYgKzU3OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzIGFs bF8KICAgICBTRVQod3JpdGVfaW8pLAogICAgIFNFVChyZWFkX2NyKSwKICAgICBTRVQod3JpdGVf Y3IpLAorICAgIFNFVChyZWFkX3hjciksCiAgICAgU0VUKHJlYWRfbXNyKSwKICAgICBTRVQod3Jp dGVfbXNyKSwKICAgICBTRVQod2JpbnZkKSwKQEAgLTY4NCw2ICs2ODcsNyBAQCBlbnVtIHsKICAg ICBIT09LX3dyaXRlX2NyLAogICAgIEhPT0tfcmVhZF9kciwKICAgICBIT09LX3dyaXRlX2RyLAor ICAgIEhPT0tfcmVhZF94Y3IsCiAgICAgSE9PS19yZWFkX21zciwKICAgICBIT09LX3dyaXRlX21z ciwKICAgICBIT09LX3diaW52ZCwKQEAgLTcyOCw2ICs3MzIsNyBAQCBzdGF0aWMgdm9pZCBkaXNh YmxlX2hvb2tzKHN0cnVjdCB4ODZfZW11CiAgICAgTUFZQkVfRElTQUJMRV9IT09LKHdyaXRlX2lv KTsKICAgICBNQVlCRV9ESVNBQkxFX0hPT0socmVhZF9jcik7CiAgICAgTUFZQkVfRElTQUJMRV9I T09LKHdyaXRlX2NyKTsKKyAgICBNQVlCRV9ESVNBQkxFX0hPT0socmVhZF94Y3IpOwogICAgIE1B WUJFX0RJU0FCTEVfSE9PSyhyZWFkX21zcik7CiAgICAgTUFZQkVfRElTQUJMRV9IT09LKHdyaXRl X21zcik7CiAgICAgTUFZQkVfRElTQUJMRV9IT09LKHdiaW52ZCk7Ci0tLSBhL3Rvb2xzL3Rlc3Rz L3g4Nl9lbXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRvci5jCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9l bXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRvci5jCkBAIC0zNzEsNiArMzcxLDcgQEAgc3RhdGljIHN0 cnVjdCB4ODZfZW11bGF0ZV9vcHMgZW11bG9wcyA9CiAgICAgLnJlYWRfc2VnbWVudCA9IHJlYWRf c2VnbWVudCwKICAgICAuY3B1aWQgICAgICA9IGVtdWxfdGVzdF9jcHVpZCwKICAgICAucmVhZF9j ciAgICA9IGVtdWxfdGVzdF9yZWFkX2NyLAorICAgIC5yZWFkX3hjciAgID0gZW11bF90ZXN0X3Jl YWRfeGNyLAogICAgIC5yZWFkX21zciAgID0gcmVhZF9tc3IsCiAgICAgLmdldF9mcHUgICAgPSBl bXVsX3Rlc3RfZ2V0X2ZwdSwKICAgICAucHV0X2ZwdSAgICA9IGVtdWxfdGVzdF9wdXRfZnB1LAot LS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IveDg2LWVtdWxhdGUuYworKysgYi90b29scy90 ZXN0cy94ODZfZW11bGF0b3IveDg2LWVtdWxhdGUuYwpAQCAtMTE5LDYgKzExOSwxOSBAQCBpbnQg ZW11bF90ZXN0X3JlYWRfY3IoCiAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOwogfQog CitpbnQgZW11bF90ZXN0X3JlYWRfeGNyKAorICAgIHVuc2lnbmVkIGludCByZWcsCisgICAgdWlu dDY0X3QgKnZhbCwKKyAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKK3sKKyAgICB1 aW50MzJfdCBsbywgaGk7CisKKyAgICBhc20gKCAieGdldGJ2IiA6ICI9YSIgKGxvKSwgIj1kIiAo aGkpIDogImMiIChyZWcpICk7CisgICAgKnZhbCA9IGxvIHwgKCh1aW50NjRfdCloaSA8PCAzMik7 CisKKyAgICByZXR1cm4gWDg2RU1VTF9PS0FZOworfQorCiBpbnQgZW11bF90ZXN0X2dldF9mcHUo CiAgICAgdm9pZCAoKmV4Y2VwdGlvbl9jYWxsYmFjaykodm9pZCAqLCBzdHJ1Y3QgY3B1X3VzZXJf cmVncyAqKSwKICAgICB2b2lkICpleGNlcHRpb25fY2FsbGJhY2tfYXJnLAotLS0gYS90b29scy90 ZXN0cy94ODZfZW11bGF0b3IveDg2LWVtdWxhdGUuaAorKysgYi90b29scy90ZXN0cy94ODZfZW11 bGF0b3IveDg2LWVtdWxhdGUuaApAQCAtMjIwLDYgKzIyMCwxMSBAQCBpbnQgZW11bF90ZXN0X3Jl YWRfY3IoCiAgICAgdW5zaWduZWQgbG9uZyAqdmFsLAogICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9j dHh0ICpjdHh0KTsKIAoraW50IGVtdWxfdGVzdF9yZWFkX3hjcigKKyAgICB1bnNpZ25lZCBpbnQg cmVnLAorICAgIHVpbnQ2NF90ICp2YWwsCisgICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0 eHQpOworCiBpbnQgZW11bF90ZXN0X2dldF9mcHUoCiAgICAgdm9pZCAoKmV4Y2VwdGlvbl9jYWxs YmFjaykodm9pZCAqLCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqKSwKICAgICB2b2lkICpleGNlcHRp b25fY2FsbGJhY2tfYXJnLAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYworKysgYi94 ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYwpAQCAtMTgyNiw2ICsxODI2LDQ1IEBAIHN0YXRpYyBp bnQgaHZtZW11bF93cml0ZV9jcigKICAgICByZXR1cm4gcmM7CiB9CiAKK3N0YXRpYyBpbnQgaHZt ZW11bF9yZWFkX3hjcigKKyAgICB1bnNpZ25lZCBpbnQgcmVnLAorICAgIHVpbnQ2NF90ICp2YWws CisgICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCit7CisgICAgc3dpdGNoICggcmVn ICkKKyAgICB7CisgICAgY2FzZSAwOgorICAgICAgICAqdmFsID0gY3VycmVudC0+YXJjaC54Y3Iw OworICAgICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOworCisgICAgY2FzZSAxOgorICAgICAgICBp ZiAoIGNwdV9oYXNfeGdldGJ2MSApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLyogZmFs bCB0aHJvdWdoICovCisgICAgZGVmYXVsdDoKKyAgICAgICAgeDg2X2VtdWxfaHdfZXhjZXB0aW9u KFRSQVBfZ3BfZmF1bHQsIDAsIGN0eHQpOworICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJ T047CisgICAgfQorCisgICAgKnZhbCA9IHhnZXRidihyZWcpOworICAgIEhWTVRSQUNFX0xPTkdf MkQoWENSX1JFQUQsIHJlZywgVFJDX1BBUl9MT05HKCp2YWwpKTsKKworICAgIHJldHVybiBYODZF TVVMX09LQVk7Cit9CisKK3N0YXRpYyBpbnQgaHZtZW11bF93cml0ZV94Y3IoCisgICAgdW5zaWdu ZWQgaW50IHJlZywKKyAgICB1aW50NjRfdCB2YWwsCisgICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0 eHQgKmN0eHQpCit7CisgICAgSFZNVFJBQ0VfTE9OR18yRChYQ1JfV1JJVEUsIHJlZywgVFJDX1BB Ul9MT05HKHZhbCkpOworICAgIGlmICggbGlrZWx5KGhhbmRsZV94c2V0YnYocmVnLCB2YWwpID09 IDApICkKKyAgICAgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKKworICAgIHg4Nl9lbXVsX2h3X2V4 Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwLCBjdHh0KTsKKyAgICByZXR1cm4gWDg2RU1VTF9FWENF UFRJT047Cit9CisKIHN0YXRpYyBpbnQgaHZtZW11bF9yZWFkX21zcigKICAgICB1bnNpZ25lZCBp bnQgcmVnLAogICAgIHVpbnQ2NF90ICp2YWwsCkBAIC0xODc0LDIyICsxOTEzLDYgQEAgc3RhdGlj IGludCBodm1lbXVsX2dldF9mcHUoCiB7CiAgICAgc3RydWN0IHZjcHUgKmN1cnIgPSBjdXJyZW50 OwogCi0gICAgc3dpdGNoICggdHlwZSApCi0gICAgewotICAgIGNhc2UgWDg2RU1VTF9GUFVfZnB1 OgotICAgIGNhc2UgWDg2RU1VTF9GUFVfd2FpdDoKLSAgICBjYXNlIFg4NkVNVUxfRlBVX21teDoK LSAgICBjYXNlIFg4NkVNVUxfRlBVX3htbToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBYODZF TVVMX0ZQVV95bW06Ci0gICAgICAgIGlmICggIShjdXJyLT5hcmNoLnhjcjAgJiBYODZfWENSMF9T U0UpIHx8Ci0gICAgICAgICAgICAgIShjdXJyLT5hcmNoLnhjcjAgJiBYODZfWENSMF9ZTU0pICkK LSAgICAgICAgICAgIHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKLSAgICAgICAgYnJlYWs7 Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOwotICAg IH0KLQogICAgIGlmICggIWN1cnItPmZwdV9kaXJ0aWVkICkKICAgICAgICAgaHZtX2Z1bmNzLmZw dV9kaXJ0eV9pbnRlcmNlcHQoKTsKICAgICBlbHNlIGlmICggdHlwZSA9PSBYODZFTVVMX0ZQVV9m cHUgKQpAQCAtMjA3Myw2ICsyMDk2LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0 ZV9vcHMgaHZtXwogICAgIC53cml0ZV9pbyAgICAgID0gaHZtZW11bF93cml0ZV9pbywKICAgICAu cmVhZF9jciAgICAgICA9IGh2bWVtdWxfcmVhZF9jciwKICAgICAud3JpdGVfY3IgICAgICA9IGh2 bWVtdWxfd3JpdGVfY3IsCisgICAgLnJlYWRfeGNyICAgICAgPSBodm1lbXVsX3JlYWRfeGNyLAor ICAgIC53cml0ZV94Y3IgICAgID0gaHZtZW11bF93cml0ZV94Y3IsCiAgICAgLnJlYWRfbXNyICAg ICAgPSBodm1lbXVsX3JlYWRfbXNyLAogICAgIC53cml0ZV9tc3IgICAgID0gaHZtZW11bF93cml0 ZV9tc3IsCiAgICAgLndiaW52ZCAgICAgICAgPSBodm1lbXVsX3diaW52ZCwKQEAgLTIwOTgsNiAr MjEyMyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzIGh2bV8KICAgICAu d3JpdGVfaW8gICAgICA9IGh2bWVtdWxfd3JpdGVfaW9fZGlzY2FyZCwKICAgICAucmVhZF9jciAg ICAgICA9IGh2bWVtdWxfcmVhZF9jciwKICAgICAud3JpdGVfY3IgICAgICA9IGh2bWVtdWxfd3Jp dGVfY3IsCisgICAgLnJlYWRfeGNyICAgICAgPSBodm1lbXVsX3JlYWRfeGNyLAorICAgIC53cml0 ZV94Y3IgICAgID0gaHZtZW11bF93cml0ZV94Y3IsCiAgICAgLnJlYWRfbXNyICAgICAgPSBodm1l bXVsX3JlYWRfbXNyLAogICAgIC53cml0ZV9tc3IgICAgID0gaHZtZW11bF93cml0ZV9tc3JfZGlz Y2FyZCwKICAgICAud2JpbnZkICAgICAgICA9IGh2bWVtdWxfd2JpbnZkX2Rpc2NhcmQsCi0tLSBh L3hlbi9hcmNoL3g4Ni9wdi9lbXVsLXByaXYtb3AuYworKysgYi94ZW4vYXJjaC94ODYvcHYvZW11 bC1wcml2LW9wLmMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDxhc20vc2hhcmVkLmg+CiAj aW5jbHVkZSA8YXNtL3RyYXBzLmg+CiAjaW5jbHVkZSA8YXNtL3g4Nl9lbXVsYXRlLmg+CisjaW5j bHVkZSA8YXNtL3hzdGF0ZS5oPgogCiAjaW5jbHVkZSA8eHNtL3hzbS5oPgogCkBAIC04MjQsNiAr ODI1LDE2IEBAIHN0YXRpYyBpbnQgd3JpdGVfZHIodW5zaWduZWQgaW50IHJlZywgdW4KICAgICAg ICAgICAgPyBYODZFTVVMX09LQVkgOiBYODZFTVVMX1VOSEFORExFQUJMRTsKIH0KIAorc3RhdGlj IGludCB3cml0ZV94Y3IodW5zaWduZWQgaW50IHJlZywgdWludDY0X3QgdmFsLAorICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCit7CisgICAgaWYgKCBs aWtlbHkoaGFuZGxlX3hzZXRidihyZWcsIHZhbCkgPT0gMCkgKQorICAgICAgICByZXR1cm4gWDg2 RU1VTF9PS0FZOworCisgICAgeDg2X2VtdWxfaHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDAs IGN0eHQpOworICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKK30KKwogc3RhdGljIGlubGlu ZSB1aW50NjRfdCBndWVzdF9taXNjX2VuYWJsZSh1aW50NjRfdCB2YWwpCiB7CiAgICAgdmFsICY9 IH4oTVNSX0lBMzJfTUlTQ19FTkFCTEVfUEVSRl9BVkFJTCB8CkBAIC0xMzE3LDYgKzEzMjgsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29wcyBwcml2CiAgICAgLndyaXRlX2Ny ICAgICAgICAgICAgPSB3cml0ZV9jciwKICAgICAucmVhZF9kciAgICAgICAgICAgICA9IHJlYWRf ZHIsCiAgICAgLndyaXRlX2RyICAgICAgICAgICAgPSB3cml0ZV9kciwKKyAgICAud3JpdGVfeGNy ICAgICAgICAgICA9IHdyaXRlX3hjciwKICAgICAucmVhZF9tc3IgICAgICAgICAgICA9IHJlYWRf bXNyLAogICAgIC53cml0ZV9tc3IgICAgICAgICAgID0gd3JpdGVfbXNyLAogICAgIC5jcHVpZCAg ICAgICAgICAgICAgID0gcHZfZW11bF9jcHVpZCwKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVs YXRlL3g4Nl9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVs YXRlLmMKQEAgLTExMTQsMTAgKzExMTQsMzAgQEAgc3RhdGljIGludCBfZ2V0X2ZwdSgKICAgICBz dHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwKICAgICBjb25zdCBzdHJ1Y3QgeDg2X2VtdWxh dGVfb3BzICpvcHMpCiB7CisgICAgdWludDY0X3QgeGNyMDsKICAgICBpbnQgcmM7CiAKICAgICBm YWlsX2lmKCFvcHMtPmdldF9mcHUpOwogICAgIEFTU0VSVCh0eXBlICE9IFg4NkVNVUxfRlBVX25v bmUpOworCisgICAgaWYgKCB0eXBlIDwgWDg2RU1VTF9GUFVfeW1tIHx8ICFvcHMtPnJlYWRfeGNy IHx8CisgICAgICAgICBvcHMtPnJlYWRfeGNyKDAsICZ4Y3IwLCBjdHh0KSAhPSBYODZFTVVMX09L QVkgKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFjdHh0LT5ldmVudF9wZW5kaW5nKTsKKyAgICAg ICAgeGNyMCA9IDA7CisgICAgfQorCisgICAgc3dpdGNoICggdHlwZSApCisgICAgeworICAgIGNh c2UgWDg2RU1VTF9GUFVfeW1tOgorICAgICAgICBpZiAoICEoeGNyMCAmIFg4Nl9YQ1IwX1NTRSkg fHwgISh4Y3IwICYgWDg2X1hDUjBfWU1NKSApCisgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9V TkhBTkRMRUFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJl YWs7CisgICAgfQorCiAgICAgcmMgPSBvcHMtPmdldF9mcHUoZnB1X2hhbmRsZV9leGNlcHRpb24s IGZpYywgdHlwZSwgY3R4dCk7CiAKICAgICBpZiAoIHJjID09IFg4NkVNVUxfT0tBWSApCkBAIC0x NjQ1LDcgKzE2NjUsOCBAQCBpbl9wcm90bW9kZSgKICNkZWZpbmUgRUJYIDMKIAogc3RhdGljIGJv b2wgdmNwdV9oYXMoCi0gICAgdW5zaWduZWQgaW50IGVheCwKKyAgICB1bnNpZ25lZCBpbnQgbGVh ZiwKKyAgICB1bnNpZ25lZCBpbnQgc3VibGVhZiwKICAgICB1bnNpZ25lZCBpbnQgcmVnLAogICAg IHVuc2lnbmVkIGludCBiaXQsCiAgICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQsCkBA IC0xNjU1LDcgKzE2NzYsNyBAQCBzdGF0aWMgYm9vbCB2Y3B1X2hhcygKICAgICBpbnQgcmMgPSBY ODZFTVVMX09LQVk7CiAKICAgICBmYWlsX2lmKCFvcHMtPmNwdWlkKTsKLSAgICByYyA9IG9wcy0+ Y3B1aWQoZWF4LCAwLCAmcmVzLCBjdHh0KTsKKyAgICByYyA9IG9wcy0+Y3B1aWQobGVhZiwgc3Vi bGVhZiwgJnJlcywgY3R4dCk7CiAgICAgaWYgKCByYyA9PSBYODZFTVVMX09LQVkgKQogICAgIHsK ICAgICAgICAgc3dpdGNoICggcmVnICkKQEAgLTE2NzQsNTMgKzE2OTUsNTYgQEAgc3RhdGljIGJv b2wgdmNwdV9oYXMoCiAgICAgcmV0dXJuIHJjID09IFg4NkVNVUxfT0tBWTsKIH0KIAotI2RlZmlu ZSB2Y3B1X2hhc19mcHUoKSAgICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDEsIEVEWCwgIDAsIGN0 eHQsIG9wcykKLSNkZWZpbmUgdmNwdV9oYXNfc2VwKCkgICAgICAgICB2Y3B1X2hhcyggICAgICAg ICAxLCBFRFgsIDExLCBjdHh0LCBvcHMpCi0jZGVmaW5lIHZjcHVfaGFzX2N4OCgpICAgICAgICAg dmNwdV9oYXMoICAgICAgICAgMSwgRURYLCAgOCwgY3R4dCwgb3BzKQotI2RlZmluZSB2Y3B1X2hh c19jbW92KCkgICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDEsIEVEWCwgMTUsIGN0eHQsIG9wcykK LSNkZWZpbmUgdmNwdV9oYXNfY2xmbHVzaCgpICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBFRFgs IDE5LCBjdHh0LCBvcHMpCi0jZGVmaW5lIHZjcHVfaGFzX21teCgpICAgICAgICAgdmNwdV9oYXMo ICAgICAgICAgMSwgRURYLCAyMywgY3R4dCwgb3BzKQotI2RlZmluZSB2Y3B1X2hhc19zc2UoKSAg ICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDEsIEVEWCwgMjUsIGN0eHQsIG9wcykKLSNkZWZpbmUg dmNwdV9oYXNfc3NlMigpICAgICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBFRFgsIDI2LCBjdHh0 LCBvcHMpCi0jZGVmaW5lIHZjcHVfaGFzX3NzZTMoKSAgICAgICAgdmNwdV9oYXMoICAgICAgICAg MSwgRUNYLCAgMCwgY3R4dCwgb3BzKQotI2RlZmluZSB2Y3B1X2hhc19wY2xtdWxxZHEoKSAgIHZj cHVfaGFzKCAgICAgICAgIDEsIEVDWCwgIDEsIGN0eHQsIG9wcykKLSNkZWZpbmUgdmNwdV9oYXNf c3NzZTMoKSAgICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBFQ1gsICA5LCBjdHh0LCBvcHMpCi0j ZGVmaW5lIHZjcHVfaGFzX2ZtYSgpICAgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgRUNYLCAx MiwgY3R4dCwgb3BzKQotI2RlZmluZSB2Y3B1X2hhc19jeDE2KCkgICAgICAgIHZjcHVfaGFzKCAg ICAgICAgIDEsIEVDWCwgMTMsIGN0eHQsIG9wcykKLSNkZWZpbmUgdmNwdV9oYXNfc3NlNF8xKCkg ICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBFQ1gsIDE5LCBjdHh0LCBvcHMpCi0jZGVmaW5lIHZj cHVfaGFzX3NzZTRfMigpICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgRUNYLCAyMCwgY3R4dCwg b3BzKQotI2RlZmluZSB2Y3B1X2hhc19tb3ZiZSgpICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDEs IEVDWCwgMjIsIGN0eHQsIG9wcykKLSNkZWZpbmUgdmNwdV9oYXNfcG9wY250KCkgICAgICB2Y3B1 X2hhcyggICAgICAgICAxLCBFQ1gsIDIzLCBjdHh0LCBvcHMpCi0jZGVmaW5lIHZjcHVfaGFzX2Fl c25pKCkgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgRUNYLCAyNSwgY3R4dCwgb3BzKQotI2Rl ZmluZSB2Y3B1X2hhc19hdngoKSAgICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDEsIEVDWCwgMjgs IGN0eHQsIG9wcykKLSNkZWZpbmUgdmNwdV9oYXNfZjE2YygpICAgICAgICB2Y3B1X2hhcyggICAg ICAgICAxLCBFQ1gsIDI5LCBjdHh0LCBvcHMpCi0jZGVmaW5lIHZjcHVfaGFzX3JkcmFuZCgpICAg ICAgdmNwdV9oYXMoICAgICAgICAgMSwgRUNYLCAzMCwgY3R4dCwgb3BzKQotI2RlZmluZSB2Y3B1 X2hhc19tbXhleHQoKSAgICAgKHZjcHVfaGFzKDB4ODAwMDAwMDEsIEVEWCwgMjIsIGN0eHQsIG9w cykgfHwgXAorI2RlZmluZSBYIDAgLyogSnVzdCBmb3IgZG9jdW1lbnRhdGlvbiBwdXJwb3Nlcy4g Ki8KKworI2RlZmluZSB2Y3B1X2hhc19mcHUoKSAgICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDEs IFgsIEVEWCwgIDAsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9oYXNfc2VwKCkgICAgICAgICB2 Y3B1X2hhcyggICAgICAgICAxLCBYLCBFRFgsIDExLCBjdHh0LCBvcHMpCisjZGVmaW5lIHZjcHVf aGFzX2N4OCgpICAgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgWCwgRURYLCAgOCwgY3R4dCwg b3BzKQorI2RlZmluZSB2Y3B1X2hhc19jbW92KCkgICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDEs IFgsIEVEWCwgMTUsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9oYXNfY2xmbHVzaCgpICAgICB2 Y3B1X2hhcyggICAgICAgICAxLCBYLCBFRFgsIDE5LCBjdHh0LCBvcHMpCisjZGVmaW5lIHZjcHVf aGFzX21teCgpICAgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgWCwgRURYLCAyMywgY3R4dCwg b3BzKQorI2RlZmluZSB2Y3B1X2hhc19zc2UoKSAgICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDEs IFgsIEVEWCwgMjUsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9oYXNfc3NlMigpICAgICAgICB2 Y3B1X2hhcyggICAgICAgICAxLCBYLCBFRFgsIDI2LCBjdHh0LCBvcHMpCisjZGVmaW5lIHZjcHVf aGFzX3NzZTMoKSAgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgWCwgRUNYLCAgMCwgY3R4dCwg b3BzKQorI2RlZmluZSB2Y3B1X2hhc19wY2xtdWxxZHEoKSAgIHZjcHVfaGFzKCAgICAgICAgIDEs IFgsIEVDWCwgIDEsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9oYXNfc3NzZTMoKSAgICAgICB2 Y3B1X2hhcyggICAgICAgICAxLCBYLCBFQ1gsICA5LCBjdHh0LCBvcHMpCisjZGVmaW5lIHZjcHVf aGFzX2ZtYSgpICAgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgWCwgRUNYLCAxMiwgY3R4dCwg b3BzKQorI2RlZmluZSB2Y3B1X2hhc19jeDE2KCkgICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDEs IFgsIEVDWCwgMTMsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9oYXNfc3NlNF8xKCkgICAgICB2 Y3B1X2hhcyggICAgICAgICAxLCBYLCBFQ1gsIDE5LCBjdHh0LCBvcHMpCisjZGVmaW5lIHZjcHVf aGFzX3NzZTRfMigpICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgWCwgRUNYLCAyMCwgY3R4dCwg b3BzKQorI2RlZmluZSB2Y3B1X2hhc19tb3ZiZSgpICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDEs IFgsIEVDWCwgMjIsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9oYXNfcG9wY250KCkgICAgICB2 Y3B1X2hhcyggICAgICAgICAxLCBYLCBFQ1gsIDIzLCBjdHh0LCBvcHMpCisjZGVmaW5lIHZjcHVf aGFzX2Flc25pKCkgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgWCwgRUNYLCAyNSwgY3R4dCwg b3BzKQorI2RlZmluZSB2Y3B1X2hhc19hdngoKSAgICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDEs IFgsIEVDWCwgMjgsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9oYXNfZjE2YygpICAgICAgICB2 Y3B1X2hhcyggICAgICAgICAxLCBYLCBFQ1gsIDI5LCBjdHh0LCBvcHMpCisjZGVmaW5lIHZjcHVf aGFzX3JkcmFuZCgpICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgWCwgRUNYLCAzMCwgY3R4dCwg b3BzKQorI2RlZmluZSB2Y3B1X2hhc19tbXhleHQoKSAgICAgKHZjcHVfaGFzKDB4ODAwMDAwMDEs IFgsIEVEWCwgMjIsIGN0eHQsIG9wcykgfHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZjcHVfaGFzX3NzZSgpKQotI2RlZmluZSB2Y3B1X2hhc18zZG5vd19leHQoKSAgIHZjcHVf aGFzKDB4ODAwMDAwMDEsIEVEWCwgMzAsIGN0eHQsIG9wcykKLSNkZWZpbmUgdmNwdV9oYXNfM2Ru b3coKSAgICAgICB2Y3B1X2hhcygweDgwMDAwMDAxLCBFRFgsIDMxLCBjdHh0LCBvcHMpCi0jZGVm aW5lIHZjcHVfaGFzX2xhaGZfbG0oKSAgICAgdmNwdV9oYXMoMHg4MDAwMDAwMSwgRUNYLCAgMCwg Y3R4dCwgb3BzKQotI2RlZmluZSB2Y3B1X2hhc19jcjhfbGVnYWN5KCkgIHZjcHVfaGFzKDB4ODAw MDAwMDEsIEVDWCwgIDQsIGN0eHQsIG9wcykKLSNkZWZpbmUgdmNwdV9oYXNfbHpjbnQoKSAgICAg ICB2Y3B1X2hhcygweDgwMDAwMDAxLCBFQ1gsICA1LCBjdHh0LCBvcHMpCi0jZGVmaW5lIHZjcHVf aGFzX3NzZTRhKCkgICAgICAgdmNwdV9oYXMoMHg4MDAwMDAwMSwgRUNYLCAgNiwgY3R4dCwgb3Bz KQotI2RlZmluZSB2Y3B1X2hhc19taXNhbGlnbnNzZSgpIHZjcHVfaGFzKDB4ODAwMDAwMDEsIEVD WCwgIDcsIGN0eHQsIG9wcykKLSNkZWZpbmUgdmNwdV9oYXNfeG9wKCkgICAgICAgICB2Y3B1X2hh cygweDgwMDAwMDAxLCBFQ1gsIDEyLCBjdHh0LCBvcHMpCi0jZGVmaW5lIHZjcHVfaGFzX2ZtYTQo KSAgICAgICAgdmNwdV9oYXMoMHg4MDAwMDAwMSwgRUNYLCAxNiwgY3R4dCwgb3BzKQotI2RlZmlu ZSB2Y3B1X2hhc190Ym0oKSAgICAgICAgIHZjcHVfaGFzKDB4ODAwMDAwMDEsIEVDWCwgMjEsIGN0 eHQsIG9wcykKLSNkZWZpbmUgdmNwdV9oYXNfYm1pMSgpICAgICAgICB2Y3B1X2hhcyggICAgICAg ICA3LCBFQlgsICAzLCBjdHh0LCBvcHMpCi0jZGVmaW5lIHZjcHVfaGFzX2hsZSgpICAgICAgICAg dmNwdV9oYXMoICAgICAgICAgNywgRUJYLCAgNCwgY3R4dCwgb3BzKQotI2RlZmluZSB2Y3B1X2hh c19hdngyKCkgICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDcsIEVCWCwgIDUsIGN0eHQsIG9wcykK LSNkZWZpbmUgdmNwdV9oYXNfYm1pMigpICAgICAgICB2Y3B1X2hhcyggICAgICAgICA3LCBFQlgs ICA4LCBjdHh0LCBvcHMpCi0jZGVmaW5lIHZjcHVfaGFzX3J0bSgpICAgICAgICAgdmNwdV9oYXMo ICAgICAgICAgNywgRUJYLCAxMSwgY3R4dCwgb3BzKQotI2RlZmluZSB2Y3B1X2hhc19tcHgoKSAg ICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDcsIEVCWCwgMTQsIGN0eHQsIG9wcykKLSNkZWZpbmUg dmNwdV9oYXNfcmRzZWVkKCkgICAgICB2Y3B1X2hhcyggICAgICAgICA3LCBFQlgsIDE4LCBjdHh0 LCBvcHMpCi0jZGVmaW5lIHZjcHVfaGFzX2FkeCgpICAgICAgICAgdmNwdV9oYXMoICAgICAgICAg NywgRUJYLCAxOSwgY3R4dCwgb3BzKQotI2RlZmluZSB2Y3B1X2hhc19zbWFwKCkgICAgICAgIHZj cHVfaGFzKCAgICAgICAgIDcsIEVCWCwgMjAsIGN0eHQsIG9wcykKLSNkZWZpbmUgdmNwdV9oYXNf Y2xmbHVzaG9wdCgpICB2Y3B1X2hhcyggICAgICAgICA3LCBFQlgsIDIzLCBjdHh0LCBvcHMpCi0j ZGVmaW5lIHZjcHVfaGFzX2Nsd2IoKSAgICAgICAgdmNwdV9oYXMoICAgICAgICAgNywgRUJYLCAy NCwgY3R4dCwgb3BzKQotI2RlZmluZSB2Y3B1X2hhc19zaGEoKSAgICAgICAgIHZjcHVfaGFzKCAg ICAgICAgIDcsIEVCWCwgMjksIGN0eHQsIG9wcykKLSNkZWZpbmUgdmNwdV9oYXNfcmRwaWQoKSAg ICAgICB2Y3B1X2hhcyggICAgICAgICA3LCBFQ1gsIDIyLCBjdHh0LCBvcHMpCi0jZGVmaW5lIHZj cHVfaGFzX2NsemVybygpICAgICAgdmNwdV9oYXMoMHg4MDAwMDAwOCwgRUJYLCAgMCwgY3R4dCwg b3BzKQorI2RlZmluZSB2Y3B1X2hhc18zZG5vd19leHQoKSAgIHZjcHVfaGFzKDB4ODAwMDAwMDEs IFgsIEVEWCwgMzAsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9oYXNfM2Rub3coKSAgICAgICB2 Y3B1X2hhcygweDgwMDAwMDAxLCBYLCBFRFgsIDMxLCBjdHh0LCBvcHMpCisjZGVmaW5lIHZjcHVf aGFzX2xhaGZfbG0oKSAgICAgdmNwdV9oYXMoMHg4MDAwMDAwMSwgWCwgRUNYLCAgMCwgY3R4dCwg b3BzKQorI2RlZmluZSB2Y3B1X2hhc19jcjhfbGVnYWN5KCkgIHZjcHVfaGFzKDB4ODAwMDAwMDEs IFgsIEVDWCwgIDQsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9oYXNfbHpjbnQoKSAgICAgICB2 Y3B1X2hhcygweDgwMDAwMDAxLCBYLCBFQ1gsICA1LCBjdHh0LCBvcHMpCisjZGVmaW5lIHZjcHVf aGFzX3NzZTRhKCkgICAgICAgdmNwdV9oYXMoMHg4MDAwMDAwMSwgWCwgRUNYLCAgNiwgY3R4dCwg b3BzKQorI2RlZmluZSB2Y3B1X2hhc19taXNhbGlnbnNzZSgpIHZjcHVfaGFzKDB4ODAwMDAwMDEs IFgsIEVDWCwgIDcsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9oYXNfeG9wKCkgICAgICAgICB2 Y3B1X2hhcygweDgwMDAwMDAxLCBYLCBFQ1gsIDEyLCBjdHh0LCBvcHMpCisjZGVmaW5lIHZjcHVf aGFzX2ZtYTQoKSAgICAgICAgdmNwdV9oYXMoMHg4MDAwMDAwMSwgWCwgRUNYLCAxNiwgY3R4dCwg b3BzKQorI2RlZmluZSB2Y3B1X2hhc190Ym0oKSAgICAgICAgIHZjcHVfaGFzKDB4ODAwMDAwMDEs IFgsIEVDWCwgMjEsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9oYXNfYm1pMSgpICAgICAgICB2 Y3B1X2hhcyggICAgICAgICA3LCAwLCBFQlgsICAzLCBjdHh0LCBvcHMpCisjZGVmaW5lIHZjcHVf aGFzX2hsZSgpICAgICAgICAgdmNwdV9oYXMoICAgICAgICAgNywgMCwgRUJYLCAgNCwgY3R4dCwg b3BzKQorI2RlZmluZSB2Y3B1X2hhc19hdngyKCkgICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDcs IDAsIEVCWCwgIDUsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9oYXNfYm1pMigpICAgICAgICB2 Y3B1X2hhcyggICAgICAgICA3LCAwLCBFQlgsICA4LCBjdHh0LCBvcHMpCisjZGVmaW5lIHZjcHVf aGFzX3J0bSgpICAgICAgICAgdmNwdV9oYXMoICAgICAgICAgNywgMCwgRUJYLCAxMSwgY3R4dCwg b3BzKQorI2RlZmluZSB2Y3B1X2hhc19tcHgoKSAgICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDcs IDAsIEVCWCwgMTQsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9oYXNfcmRzZWVkKCkgICAgICB2 Y3B1X2hhcyggICAgICAgICA3LCAwLCBFQlgsIDE4LCBjdHh0LCBvcHMpCisjZGVmaW5lIHZjcHVf aGFzX2FkeCgpICAgICAgICAgdmNwdV9oYXMoICAgICAgICAgNywgMCwgRUJYLCAxOSwgY3R4dCwg b3BzKQorI2RlZmluZSB2Y3B1X2hhc19zbWFwKCkgICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDcs IDAsIEVCWCwgMjAsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9oYXNfY2xmbHVzaG9wdCgpICB2 Y3B1X2hhcyggICAgICAgICA3LCAwLCBFQlgsIDIzLCBjdHh0LCBvcHMpCisjZGVmaW5lIHZjcHVf aGFzX2Nsd2IoKSAgICAgICAgdmNwdV9oYXMoICAgICAgICAgNywgMCwgRUJYLCAyNCwgY3R4dCwg b3BzKQorI2RlZmluZSB2Y3B1X2hhc19zaGEoKSAgICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDcs IDAsIEVCWCwgMjksIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9oYXNfcmRwaWQoKSAgICAgICB2 Y3B1X2hhcyggICAgICAgICA3LCAwLCBFQ1gsIDIyLCBjdHh0LCBvcHMpCisjZGVmaW5lIHZjcHVf aGFzX3hnZXRidjEoKSAgICAgdmNwdV9oYXMoICAgICAgIDB4ZCwgMSwgRUFYLCAgMiwgY3R4dCwg b3BzKQorI2RlZmluZSB2Y3B1X2hhc19jbHplcm8oKSAgICAgIHZjcHVfaGFzKDB4ODAwMDAwMDgs IFgsIEVCWCwgIDAsIGN0eHQsIG9wcykKIAogI2RlZmluZSB2Y3B1X211c3RfaGF2ZShmZWF0KSBc CiAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCF2Y3B1X2hhc18jI2ZlYXQoKSwgRVhDX1VEKQpA QCAtNTE3OCwxOCArNTIwMiwzMyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgICAgICBfcmVn cy5lZmxhZ3MgfD0gWDg2X0VGTEFHU19BQzsKICAgICAgICAgICAgIGJyZWFrOwogCi0jaWZkZWYg X19YRU5fXwotICAgICAgICBjYXNlIDB4ZDE6IC8qIHhzZXRidiAqLworICAgICAgICBjYXNlIDB4 ZDA6IC8qIHhnZXRidiAqLwogICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKHZleC5w ZngsIEVYQ19VRCk7Ci0gICAgICAgICAgICBpZiAoICFvcHMtPnJlYWRfY3IgfHwgb3BzLT5yZWFk X2NyKDQsICZjcjQsIGN0eHQpICE9IFg4NkVNVUxfT0tBWSApCisgICAgICAgICAgICBpZiAoICFv cHMtPnJlYWRfY3IgfHwgIW9wcy0+cmVhZF94Y3IgfHwKKyAgICAgICAgICAgICAgICAgb3BzLT5y ZWFkX2NyKDQsICZjcjQsIGN0eHQpICE9IFg4NkVNVUxfT0tBWSApCiAgICAgICAgICAgICAgICAg Y3I0ID0gMDsKICAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighKGNyNCAmIFg4Nl9D UjRfT1NYU0FWRSksIEVYQ19VRCk7Ci0gICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYo IW1vZGVfcmluZzAoKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRs ZV94c2V0YnYoX3JlZ3MuZWN4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgX3JlZ3MuZWF4IHwgKF9yZWdzLnJkeCA8PCAzMikpLAorICAgICAgICAgICAg Z2VuZXJhdGVfZXhjZXB0aW9uX2lmKF9yZWdzLmVjeCA+ICh2Y3B1X2hhc194Z2V0YnYxKCkgPyAx IDogMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDX0dQLCAwKTsKKyAg ICAgICAgICAgIHJjID0gb3BzLT5yZWFkX3hjcihfcmVncy5lY3gsICZtc3JfdmFsLCBjdHh0KTsK KyAgICAgICAgICAgIGlmICggcmMgIT0gWDg2RU1VTF9PS0FZICkKKyAgICAgICAgICAgICAgICBn b3RvIGRvbmU7CisgICAgICAgICAgICBfcmVncy5yKGF4KSA9ICh1aW50MzJfdCltc3JfdmFsOwor ICAgICAgICAgICAgX3JlZ3MucihkeCkgPSBtc3JfdmFsID4+IDMyOworICAgICAgICAgICAgYnJl YWs7CisKKyAgICAgICAgY2FzZSAweGQxOiAvKiB4c2V0YnYgKi8KKyAgICAgICAgICAgIGdlbmVy YXRlX2V4Y2VwdGlvbl9pZih2ZXgucGZ4LCBFWENfVUQpOworICAgICAgICAgICAgaWYgKCAhb3Bz LT5yZWFkX2NyIHx8ICFvcHMtPndyaXRlX3hjciB8fAorICAgICAgICAgICAgICAgICBvcHMtPnJl YWRfY3IoNCwgJmNyNCwgY3R4dCkgIT0gWDg2RU1VTF9PS0FZICkKKyAgICAgICAgICAgICAgICBj cjQgPSAwOworICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCEoY3I0ICYgWDg2X0NS NF9PU1hTQVZFKSwgRVhDX1VEKTsKKyAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZigh bW9kZV9yaW5nMCgpIHx8IF9yZWdzLmVjeCwgRVhDX0dQLCAwKTsKKyAgICAgICAgICAgIHJjID0g b3BzLT53cml0ZV94Y3IoX3JlZ3MuZWN4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBfcmVncy5lYXggfCAoKHVpbnQ2NF90KV9yZWdzLmVkeCA8PCAzMiksIGN0eHQpOworICAgICAg ICAgICAgaWYgKCByYyAhPSBYODZFTVVMX09LQVkgKQorICAgICAgICAgICAgICAgIGdvdG8gZG9u ZTsKICAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCiAKICAgICAgICAgY2FzZSAweGQ0OiAvKiB2 bWZ1bmMgKi8KICAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZih2ZXgucGZ4LCBFWENf VUQpOwotLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaAorKysgYi94 ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaApAQCAtMzk4LDYgKzM5OCwyNCBA QCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzCiAgICAgICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0 ICpjdHh0KTsKIAogICAgIC8qCisgICAgICogcmVhZF94Y3I6IFJlYWQgZnJvbSBleHRlbmRlZCBj b250cm9sIHJlZ2lzdGVyLgorICAgICAqICBAcmVnOiAgIFtJTiBdIFJlZ2lzdGVyIHRvIHJlYWQu CisgICAgICovCisgICAgaW50ICgqcmVhZF94Y3IpKAorICAgICAgICB1bnNpZ25lZCBpbnQgcmVn LAorICAgICAgICB1aW50NjRfdCAqdmFsLAorICAgICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4 dCAqY3R4dCk7CisKKyAgICAvKgorICAgICAqIHdyaXRlX3hjcjogV3JpdGUgdG8gZXh0ZW5kZWQg Y29udHJvbCByZWdpc3Rlci4KKyAgICAgKiAgQHJlZzogICBbSU4gXSBSZWdpc3RlciB0byB3cml0 ZS4KKyAgICAgKi8KKyAgICBpbnQgKCp3cml0ZV94Y3IpKAorICAgICAgICB1bnNpZ25lZCBpbnQg cmVnLAorICAgICAgICB1aW50NjRfdCB2YWwsCisgICAgICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9j dHh0ICpjdHh0KTsKKworICAgIC8qCiAgICAgICogcmVhZF9tc3I6IFJlYWQgZnJvbSBtb2RlbC1z cGVjaWZpYyByZWdpc3Rlci4KICAgICAgKiAgQHJlZzogICBbSU4gXSBSZWdpc3RlciB0byByZWFk LgogICAgICAqLwotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS90cmFjZS5oCisrKyBiL3hl bi9pbmNsdWRlL2FzbS14ODYvaHZtL3RyYWNlLmgKQEAgLTMzLDYgKzMzLDggQEAKICNkZWZpbmUg RE9fVFJDX0hWTV9DUl9XUklURTY0ICBERUZBVUxUX0hWTV9SRUdBQ0NFU1MKICNkZWZpbmUgRE9f VFJDX0hWTV9EUl9SRUFEICAgICBERUZBVUxUX0hWTV9SRUdBQ0NFU1MKICNkZWZpbmUgRE9fVFJD X0hWTV9EUl9XUklURSAgICBERUZBVUxUX0hWTV9SRUdBQ0NFU1MKKyNkZWZpbmUgRE9fVFJDX0hW TV9YQ1JfUkVBRDY0ICBERUZBVUxUX0hWTV9SRUdBQ0NFU1MKKyNkZWZpbmUgRE9fVFJDX0hWTV9Y Q1JfV1JJVEU2NCBERUZBVUxUX0hWTV9SRUdBQ0NFU1MKICNkZWZpbmUgRE9fVFJDX0hWTV9NU1Jf UkVBRCAgICBERUZBVUxUX0hWTV9SRUdBQ0NFU1MKICNkZWZpbmUgRE9fVFJDX0hWTV9NU1JfV1JJ VEUgICBERUZBVUxUX0hWTV9SRUdBQ0NFU1MKICNkZWZpbmUgRE9fVFJDX0hWTV9SRFRTQyAgICAg ICBERUZBVUxUX0hWTV9SRUdBQ0NFU1MKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni94c3RhdGUu aAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3hzdGF0ZS5oCkBAIC0xMDksNiArMTA5LDE3IEBA IGludCB4c3RhdGVfYWxsb2Nfc2F2ZV9hcmVhKHN0cnVjdCB2Y3B1ICoKIHZvaWQgeHN0YXRlX2lu aXQoc3RydWN0IGNwdWluZm9feDg2ICpjKTsKIHVuc2lnbmVkIGludCB4c3RhdGVfY3R4dF9zaXpl KHU2NCB4Y3IwKTsKIAorc3RhdGljIGlubGluZSB1aW50NjRfdCB4Z2V0YnYodW5zaWduZWQgaW50 IGluZGV4KQoreworICAgIHVpbnQzMl90IGxvLCBoaTsKKworICAgIEFTU0VSVChpbmRleCk7IC8q IGdldF94Y3IwKCkgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4gKi8KKyAgICBhc20gdm9sYXRpbGUg KCAiLmJ5dGUgMHgwZiwweDAxLDB4ZDAiIC8qIHhnZXRidiAqLworICAgICAgICAgICAgICAgICAg IDogIj1hIiAobG8pLCAiPWQiIChoaSkgOiAiYyIgKGluZGV4KSApOworCisgICAgcmV0dXJuIGxv IHwgKCh1aW50NjRfdCloaSA8PCAzMik7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCB4c3RhdGVf YWxsKGNvbnN0IHN0cnVjdCB2Y3B1ICp2KQogewogICAgIC8qCi0tLSBhL3hlbi9pbmNsdWRlL3B1 YmxpYy90cmFjZS5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy90cmFjZS5oCkBAIC0yMzUsNiAr MjM1LDggQEAKICNkZWZpbmUgVFJDX0hWTV9UUkFQICAgICAgICAgICAgIChUUkNfSFZNX0hBTkRM RVIgKyAweDIzKQogI2RlZmluZSBUUkNfSFZNX1RSQVBfREVCVUcgICAgICAgKFRSQ19IVk1fSEFO RExFUiArIDB4MjQpCiAjZGVmaW5lIFRSQ19IVk1fVkxBUElDICAgICAgICAgICAoVFJDX0hWTV9I QU5ETEVSICsgMHgyNSkKKyNkZWZpbmUgVFJDX0hWTV9YQ1JfUkVBRDY0ICAgICAgKFRSQ19IVk1f SEFORExFUiArIFRSQ182NF9GTEFHICsgMHgyNikKKyNkZWZpbmUgVFJDX0hWTV9YQ1JfV1JJVEU2 NCAgICAgKFRSQ19IVk1fSEFORExFUiArIFRSQ182NF9GTEFHICsgMHgyNykKIAogI2RlZmluZSBU UkNfSFZNX0lPUE9SVF9XUklURSAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgyMTYpCiAjZGVmaW5l IFRSQ19IVk1fSU9NRU1fV1JJVEUgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDIxNykKCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54 ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==