From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v5 03/14] x86emul: abstract out XCRn accesses Date: Thu, 15 Mar 2018 07:04:25 -0600 Message-ID: <5AAA7D6902000078001B225C@prv-mh.provo.novell.com> References: <5AAA7BAF02000078001B2242@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ewSYc-0001y1-6s for xen-devel@lists.xenproject.org; Thu, 15 Mar 2018 13:04:34 +0000 In-Reply-To: <5AAA7BAF02000078001B2242@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+Ci0tLQp2 NTogTW92ZSBpbmRleCB2YWxpZGF0aW9uIGludG8gaG9vayBmdW5jdGlvbnMuIEludHJvZHVjZQog ICAgeDg2ZW11bF97cmVhZCx3cml0ZX1feGNyKCkuCnY0OiBIYXZlIGh2bWVtdWxfcmVhZF94Y3Io KSByYWlzZSBhbiBleGNlcHRpb24gaW5zdGVhZCBvZiByZXR1cm5pbmcKICAgIFg4NkVNVUxfVU5I QU5ETEVBQkxFIGZvciBpbnZhbGlkIGluZGV4ZXMuIEludHJvZHVjZSB4Z2V0YnYoKSBhbmQgYWRk CiAgICB2b2xhdGlsZSB0byB0aGUgYXNtKCkgbW92ZWQgdGhlcmUuIFNwbGl0IG91dCBfWFNUQVRF XyogbW92ZW1lbnQuCnYyOiBSZS1iYXNlLgoKLS0tIGEvdG9vbHMvZnV6ei94ODZfaW5zdHJ1Y3Rp b25fZW11bGF0b3IvZnV6ei1lbXVsLmMKKysrIGIvdG9vbHMvZnV6ei94ODZfaW5zdHJ1Y3Rpb25f ZW11bGF0b3IvZnV6ei1lbXVsLmMKQEAgLTQ1OSw2ICs0NTksOCBAQCBzdGF0aWMgaW50IGZ1enpf d3JpdGVfY3IoCiAgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKIH0KIAorI2RlZmluZSBmdXp6X3Jl YWRfeGNyIGVtdWxfdGVzdF9yZWFkX3hjcgorCiBlbnVtIHsKICAgICBNU1JJX0lBMzJfU1lTRU5U RVJfQ1MsCiAgICAgTVNSSV9JQTMyX1NZU0VOVEVSX0VTUCwKQEAgLTU3Nyw2ICs1NzksNyBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29wcyBhbGxfCiAgICAgU0VUKHdyaXRlX2lv KSwKICAgICBTRVQocmVhZF9jciksCiAgICAgU0VUKHdyaXRlX2NyKSwKKyAgICBTRVQocmVhZF94 Y3IpLAogICAgIFNFVChyZWFkX21zciksCiAgICAgU0VUKHdyaXRlX21zciksCiAgICAgU0VUKHdi aW52ZCksCkBAIC02ODUsNiArNjg4LDcgQEAgZW51bSB7CiAgICAgSE9PS193cml0ZV9jciwKICAg ICBIT09LX3JlYWRfZHIsCiAgICAgSE9PS193cml0ZV9kciwKKyAgICBIT09LX3JlYWRfeGNyLAog ICAgIEhPT0tfcmVhZF9tc3IsCiAgICAgSE9PS193cml0ZV9tc3IsCiAgICAgSE9PS193YmludmQs CkBAIC03MjksNiArNzMzLDcgQEAgc3RhdGljIHZvaWQgZGlzYWJsZV9ob29rcyhzdHJ1Y3QgeDg2 X2VtdQogICAgIE1BWUJFX0RJU0FCTEVfSE9PSyh3cml0ZV9pbyk7CiAgICAgTUFZQkVfRElTQUJM RV9IT09LKHJlYWRfY3IpOwogICAgIE1BWUJFX0RJU0FCTEVfSE9PSyh3cml0ZV9jcik7CisgICAg TUFZQkVfRElTQUJMRV9IT09LKHJlYWRfeGNyKTsKICAgICBNQVlCRV9ESVNBQkxFX0hPT0socmVh ZF9tc3IpOwogICAgIE1BWUJFX0RJU0FCTEVfSE9PSyh3cml0ZV9tc3IpOwogICAgIE1BWUJFX0RJ U0FCTEVfSE9PSyh3YmludmQpOwotLS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IvdGVzdF94 ODZfZW11bGF0b3IuYworKysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3IvdGVzdF94ODZfZW11 bGF0b3IuYwpAQCAtMzcxLDYgKzM3MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3Bz IGVtdWxvcHMgPQogICAgIC5yZWFkX3NlZ21lbnQgPSByZWFkX3NlZ21lbnQsCiAgICAgLmNwdWlk ICAgICAgPSBlbXVsX3Rlc3RfY3B1aWQsCiAgICAgLnJlYWRfY3IgICAgPSBlbXVsX3Rlc3RfcmVh ZF9jciwKKyAgICAucmVhZF94Y3IgICA9IGVtdWxfdGVzdF9yZWFkX3hjciwKICAgICAucmVhZF9t c3IgICA9IHJlYWRfbXNyLAogICAgIC5nZXRfZnB1ICAgID0gZW11bF90ZXN0X2dldF9mcHUsCiAg ICAgLnB1dF9mcHUgICAgPSBlbXVsX3Rlc3RfcHV0X2ZwdSwKLS0tIGEvdG9vbHMvdGVzdHMveDg2 X2VtdWxhdG9yL3g4Ni1lbXVsYXRlLmMKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4 Ni1lbXVsYXRlLmMKQEAgLTE2Myw2ICsxNjMsMzUgQEAgaW50IGVtdWxfdGVzdF9yZWFkX2NyKAog ICAgIHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKIH0KIAoraW50IGVtdWxfdGVzdF9yZWFk X3hjcigKKyAgICB1bnNpZ25lZCBpbnQgcmVnLAorICAgIHVpbnQ2NF90ICp2YWwsCisgICAgc3Ry dWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCit7CisgICAgdWludDMyX3QgbG8sIGhpOworCisg ICAgQVNTRVJUKGNwdV9oYXNfeHNhdmUpOworCisgICAgc3dpdGNoICggcmVnICkKKyAgICB7Cisg ICAgY2FzZSAwOgorICAgICAgICBicmVhazsKKworICAgIGNhc2UgMToKKyAgICAgICAgaWYgKCBj cHVfaGFzX3hnZXRidjEgKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8qIGZhbGwgdGhy b3VnaCAqLworICAgIGRlZmF1bHQ6CisgICAgICAgIHg4Nl9lbXVsX2h3X2V4Y2VwdGlvbigxMyAv KiAjR1AgKi8sIDAsIGN0eHQpOworICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047Cisg ICAgfQorCisgICAgYXNtICggInhnZXRidiIgOiAiPWEiIChsbyksICI9ZCIgKGhpKSA6ICJjIiAo cmVnKSApOworICAgICp2YWwgPSBsbyB8ICgodWludDY0X3QpaGkgPDwgMzIpOworCisgICAgcmV0 dXJuIFg4NkVNVUxfT0tBWTsKK30KKwogaW50IGVtdWxfdGVzdF9nZXRfZnB1KAogICAgIHZvaWQg KCpleGNlcHRpb25fY2FsbGJhY2spKHZvaWQgKiwgc3RydWN0IGNwdV91c2VyX3JlZ3MgKiksCiAg ICAgdm9pZCAqZXhjZXB0aW9uX2NhbGxiYWNrX2FyZywKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2Vt dWxhdG9yL3g4Ni1lbXVsYXRlLmgKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4Ni1l bXVsYXRlLmgKQEAgLTE4Niw2ICsxODYsMTYgQEAgc3RhdGljIGlubGluZSB1aW50NjRfdCB4Z2V0 YnYodWludDMyX3QgeAogICAgIChyZXMuYiAmICgxVSA8PCA1KSkgIT0gMDsgXAogfSkKIAorI2Rl ZmluZSBjcHVfaGFzX3hnZXRidjEgKHsgXAorICAgIHN0cnVjdCBjcHVpZF9sZWFmIHJlczsgXAor ICAgIGVtdWxfdGVzdF9jcHVpZCgxLCAwLCAmcmVzLCBOVUxMKTsgXAorICAgIGlmICggIShyZXMu YyAmICgxVSA8PCAyNykpICkgXAorICAgICAgICByZXMuYSA9IDA7IFwKKyAgICBlbHNlIFwKKyAg ICAgICAgZW11bF90ZXN0X2NwdWlkKDB4ZCwgMSwgJnJlcywgTlVMTCk7IFwKKyAgICAocmVzLmEg JiAoMVUgPDwgMikpICE9IDA7IFwKK30pCisKICNkZWZpbmUgY3B1X2hhc19ibWkxICh7IFwKICAg ICBzdHJ1Y3QgY3B1aWRfbGVhZiByZXM7IFwKICAgICBlbXVsX3Rlc3RfY3B1aWQoNywgMCwgJnJl cywgTlVMTCk7IFwKQEAgLTI0Nyw2ICsyNTcsMTEgQEAgaW50IGVtdWxfdGVzdF9yZWFkX2NyKAog ICAgIHVuc2lnbmVkIGxvbmcgKnZhbCwKICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4 dCk7CiAKK2ludCBlbXVsX3Rlc3RfcmVhZF94Y3IoCisgICAgdW5zaWduZWQgaW50IHJlZywKKyAg ICB1aW50NjRfdCAqdmFsLAorICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KTsKKwog aW50IGVtdWxfdGVzdF9nZXRfZnB1KAogICAgIHZvaWQgKCpleGNlcHRpb25fY2FsbGJhY2spKHZv aWQgKiwgc3RydWN0IGNwdV91c2VyX3JlZ3MgKiksCiAgICAgdm9pZCAqZXhjZXB0aW9uX2NhbGxi YWNrX2FyZywKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gv eDg2L2h2bS9lbXVsYXRlLmMKQEAgLTE4MjYsNiArMTgyNiwyOSBAQCBzdGF0aWMgaW50IGh2bWVt dWxfd3JpdGVfY3IoCiAgICAgcmV0dXJuIHJjOwogfQogCitzdGF0aWMgaW50IGh2bWVtdWxfcmVh ZF94Y3IoCisgICAgdW5zaWduZWQgaW50IHJlZywKKyAgICB1aW50NjRfdCAqdmFsLAorICAgIHN0 cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQoreworICAgIGludCByYyA9IHg4NmVtdWxfcmVh ZF94Y3IocmVnLCB2YWwsIGN0eHQpOworCisgICAgaWYgKCByYyA9PSBYODZFTVVMX09LQVkgKQor ICAgICAgICBIVk1UUkFDRV9MT05HXzJEKFhDUl9SRUFELCByZWcsIFRSQ19QQVJfTE9ORygqdmFs KSk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgaHZtZW11bF93cml0ZV94Y3Io CisgICAgdW5zaWduZWQgaW50IHJlZywKKyAgICB1aW50NjRfdCB2YWwsCisgICAgc3RydWN0IHg4 Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCit7CisgICAgSFZNVFJBQ0VfTE9OR18yRChYQ1JfV1JJVEUs IHJlZywgVFJDX1BBUl9MT05HKHZhbCkpOworCisgICAgcmV0dXJuIHg4NmVtdWxfd3JpdGVfeGNy KHJlZywgdmFsLCBjdHh0KTsKK30KKwogc3RhdGljIGludCBodm1lbXVsX3JlYWRfbXNyKAogICAg IHVuc2lnbmVkIGludCByZWcsCiAgICAgdWludDY0X3QgKnZhbCwKQEAgLTE4NzQsMjIgKzE4OTcs NiBAQCBzdGF0aWMgaW50IGh2bWVtdWxfZ2V0X2ZwdSgKIHsKICAgICBzdHJ1Y3QgdmNwdSAqY3Vy ciA9IGN1cnJlbnQ7CiAKLSAgICBzd2l0Y2ggKCB0eXBlICkKLSAgICB7Ci0gICAgY2FzZSBYODZF TVVMX0ZQVV9mcHU6Ci0gICAgY2FzZSBYODZFTVVMX0ZQVV93YWl0OgotICAgIGNhc2UgWDg2RU1V TF9GUFVfbW14OgotICAgIGNhc2UgWDg2RU1VTF9GUFVfeG1tOgotICAgICAgICBicmVhazsKLSAg ICBjYXNlIFg4NkVNVUxfRlBVX3ltbToKLSAgICAgICAgaWYgKCAhKGN1cnItPmFyY2gueGNyMCAm IFg4Nl9YQ1IwX1NTRSkgfHwKLSAgICAgICAgICAgICAhKGN1cnItPmFyY2gueGNyMCAmIFg4Nl9Y Q1IwX1lNTSkgKQotICAgICAgICAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOwotICAg ICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRM RUFCTEU7Ci0gICAgfQotCiAgICAgaWYgKCAhY3Vyci0+ZnB1X2RpcnRpZWQgKQogICAgICAgICBo dm1fZnVuY3MuZnB1X2RpcnR5X2ludGVyY2VwdCgpOwogICAgIGVsc2UgaWYgKCB0eXBlID09IFg4 NkVNVUxfRlBVX2ZwdSApCkBAIC0yMDczLDYgKzIwODAsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IHg4Nl9lbXVsYXRlX29wcyBodm1fCiAgICAgLndyaXRlX2lvICAgICAgPSBodm1lbXVsX3dyaXRl X2lvLAogICAgIC5yZWFkX2NyICAgICAgID0gaHZtZW11bF9yZWFkX2NyLAogICAgIC53cml0ZV9j ciAgICAgID0gaHZtZW11bF93cml0ZV9jciwKKyAgICAucmVhZF94Y3IgICAgICA9IGh2bWVtdWxf cmVhZF94Y3IsCisgICAgLndyaXRlX3hjciAgICAgPSBodm1lbXVsX3dyaXRlX3hjciwKICAgICAu cmVhZF9tc3IgICAgICA9IGh2bWVtdWxfcmVhZF9tc3IsCiAgICAgLndyaXRlX21zciAgICAgPSBo dm1lbXVsX3dyaXRlX21zciwKICAgICAud2JpbnZkICAgICAgICA9IGh2bWVtdWxfd2JpbnZkLApA QCAtMjA5OCw2ICsyMTA3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMg aHZtXwogICAgIC53cml0ZV9pbyAgICAgID0gaHZtZW11bF93cml0ZV9pb19kaXNjYXJkLAogICAg IC5yZWFkX2NyICAgICAgID0gaHZtZW11bF9yZWFkX2NyLAogICAgIC53cml0ZV9jciAgICAgID0g aHZtZW11bF93cml0ZV9jciwKKyAgICAucmVhZF94Y3IgICAgICA9IGh2bWVtdWxfcmVhZF94Y3Is CisgICAgLndyaXRlX3hjciAgICAgPSBodm1lbXVsX3dyaXRlX3hjciwKICAgICAucmVhZF9tc3Ig ICAgICA9IGh2bWVtdWxfcmVhZF9tc3IsCiAgICAgLndyaXRlX21zciAgICAgPSBodm1lbXVsX3dy aXRlX21zcl9kaXNjYXJkLAogICAgIC53YmludmQgICAgICAgID0gaHZtZW11bF93YmludmRfZGlz Y2FyZCwKLS0tIGEveGVuL2FyY2gveDg2L3B2L2VtdWwtcHJpdi1vcC5jCisrKyBiL3hlbi9hcmNo L3g4Ni9wdi9lbXVsLXByaXYtb3AuYwpAQCAtMTMxNyw2ICsxMzE3LDcgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMgcHJpdgogICAgIC53cml0ZV9jciAgICAgICAgICAgID0g d3JpdGVfY3IsCiAgICAgLnJlYWRfZHIgICAgICAgICAgICAgPSByZWFkX2RyLAogICAgIC53cml0 ZV9kciAgICAgICAgICAgID0gd3JpdGVfZHIsCisgICAgLndyaXRlX3hjciAgICAgICAgICAgPSB4 ODZlbXVsX3dyaXRlX3hjciwKICAgICAucmVhZF9tc3IgICAgICAgICAgICA9IHJlYWRfbXNyLAog ICAgIC53cml0ZV9tc3IgICAgICAgICAgID0gd3JpdGVfbXNyLAogICAgIC5jcHVpZCAgICAgICAg ICAgICAgID0gcHZfZW11bF9jcHVpZCwKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4 Nl9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMK QEAgLTExMTQsMTAgKzExMTQsMzAgQEAgc3RhdGljIGludCBfZ2V0X2ZwdSgKICAgICBzdHJ1Y3Qg eDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwKICAgICBjb25zdCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3Bz ICpvcHMpCiB7CisgICAgdWludDY0X3QgeGNyMDsKICAgICBpbnQgcmM7CiAKICAgICBmYWlsX2lm KCFvcHMtPmdldF9mcHUpOwogICAgIEFTU0VSVCh0eXBlICE9IFg4NkVNVUxfRlBVX25vbmUpOwor CisgICAgaWYgKCB0eXBlIDwgWDg2RU1VTF9GUFVfeW1tIHx8ICFvcHMtPnJlYWRfeGNyIHx8Cisg ICAgICAgICBvcHMtPnJlYWRfeGNyKDAsICZ4Y3IwLCBjdHh0KSAhPSBYODZFTVVMX09LQVkgKQor ICAgIHsKKyAgICAgICAgQVNTRVJUKCFjdHh0LT5ldmVudF9wZW5kaW5nKTsKKyAgICAgICAgeGNy MCA9IDA7CisgICAgfQorCisgICAgc3dpdGNoICggdHlwZSApCisgICAgeworICAgIGNhc2UgWDg2 RU1VTF9GUFVfeW1tOgorICAgICAgICBpZiAoICEoeGNyMCAmIFg4Nl9YQ1IwX1NTRSkgfHwgISh4 Y3IwICYgWDg2X1hDUjBfWU1NKSApCisgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRM RUFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7Cisg ICAgfQorCiAgICAgcmMgPSBvcHMtPmdldF9mcHUoZnB1X2hhbmRsZV9leGNlcHRpb24sIGZpYywg dHlwZSwgY3R4dCk7CiAKICAgICBpZiAoIHJjID09IFg4NkVNVUxfT0tBWSApCkBAIC01MDA2LDE4 ICs1MDI2LDMxIEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgICAgIF9yZWdzLmVmbGFncyB8 PSBYODZfRUZMQUdTX0FDOwogICAgICAgICAgICAgYnJlYWs7CiAKLSNpZmRlZiBfX1hFTl9fCisg ICAgICAgIGNhc2UgMHhkMDogLyogeGdldGJ2ICovCisgICAgICAgICAgICBnZW5lcmF0ZV9leGNl cHRpb25faWYodmV4LnBmeCwgRVhDX1VEKTsKKyAgICAgICAgICAgIGlmICggIW9wcy0+cmVhZF9j ciB8fCAhb3BzLT5yZWFkX3hjciB8fAorICAgICAgICAgICAgICAgICBvcHMtPnJlYWRfY3IoNCwg JmNyNCwgY3R4dCkgIT0gWDg2RU1VTF9PS0FZICkKKyAgICAgICAgICAgICAgICBjcjQgPSAwOwor ICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCEoY3I0ICYgWDg2X0NSNF9PU1hTQVZF KSwgRVhDX1VEKTsKKyAgICAgICAgICAgIHJjID0gb3BzLT5yZWFkX3hjcihfcmVncy5lY3gsICZt c3JfdmFsLCBjdHh0KTsKKyAgICAgICAgICAgIGlmICggcmMgIT0gWDg2RU1VTF9PS0FZICkKKyAg ICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICBfcmVncy5yKGF4KSA9ICh1aW50 MzJfdCltc3JfdmFsOworICAgICAgICAgICAgX3JlZ3MucihkeCkgPSBtc3JfdmFsID4+IDMyOwor ICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSAweGQxOiAvKiB4c2V0YnYgKi8KICAg ICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZih2ZXgucGZ4LCBFWENfVUQpOwotICAgICAg ICAgICAgaWYgKCAhb3BzLT5yZWFkX2NyIHx8IG9wcy0+cmVhZF9jcig0LCAmY3I0LCBjdHh0KSAh PSBYODZFTVVMX09LQVkgKQorICAgICAgICAgICAgaWYgKCAhb3BzLT5yZWFkX2NyIHx8ICFvcHMt PndyaXRlX3hjciB8fAorICAgICAgICAgICAgICAgICBvcHMtPnJlYWRfY3IoNCwgJmNyNCwgY3R4 dCkgIT0gWDg2RU1VTF9PS0FZICkKICAgICAgICAgICAgICAgICBjcjQgPSAwOwogICAgICAgICAg ICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCEoY3I0ICYgWDg2X0NSNF9PU1hTQVZFKSwgRVhDX1VE KTsKLSAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighbW9kZV9yaW5nMCgpIHx8Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX3hzZXRidihfcmVncy5lY3gs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcmVncy5l YXggfCAoX3JlZ3MucmR4IDw8IDMyKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRVhDX0dQLCAwKTsKKyAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighbW9kZV9y aW5nMCgpLCBFWENfR1AsIDApOworICAgICAgICAgICAgcmMgPSBvcHMtPndyaXRlX3hjcihfcmVn cy5lY3gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9yZWdzLmVheCB8ICgodWlu dDY0X3QpX3JlZ3MuZWR4IDw8IDMyKSwgY3R4dCk7CisgICAgICAgICAgICBpZiAoIHJjICE9IFg4 NkVNVUxfT0tBWSApCisgICAgICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICAgICAgYnJl YWs7Ci0jZW5kaWYKIAogICAgICAgICBjYXNlIDB4ZDQ6IC8qIHZtZnVuYyAqLwogICAgICAgICAg ICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKHZleC5wZngsIEVYQ19VRCk7Ci0tLSBhL3hlbi9hcmNo L3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11 bGF0ZS94ODZfZW11bGF0ZS5oCkBAIC0zOTgsNiArMzk4LDI0IEBAIHN0cnVjdCB4ODZfZW11bGF0 ZV9vcHMKICAgICAgICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpOwogCiAgICAgLyoK KyAgICAgKiByZWFkX3hjcjogUmVhZCBmcm9tIGV4dGVuZGVkIGNvbnRyb2wgcmVnaXN0ZXIuCisg ICAgICogIEByZWc6ICAgW0lOIF0gUmVnaXN0ZXIgdG8gcmVhZC4KKyAgICAgKi8KKyAgICBpbnQg KCpyZWFkX3hjcikoCisgICAgICAgIHVuc2lnbmVkIGludCByZWcsCisgICAgICAgIHVpbnQ2NF90 ICp2YWwsCisgICAgICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KTsKKworICAgIC8q CisgICAgICogd3JpdGVfeGNyOiBXcml0ZSB0byBleHRlbmRlZCBjb250cm9sIHJlZ2lzdGVyLgor ICAgICAqICBAcmVnOiAgIFtJTiBdIFJlZ2lzdGVyIHRvIHdyaXRlLgorICAgICAqLworICAgIGlu dCAoKndyaXRlX3hjcikoCisgICAgICAgIHVuc2lnbmVkIGludCByZWcsCisgICAgICAgIHVpbnQ2 NF90IHZhbCwKKyAgICAgICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpOworCisgICAg LyoKICAgICAgKiByZWFkX21zcjogUmVhZCBmcm9tIG1vZGVsLXNwZWNpZmljIHJlZ2lzdGVyLgog ICAgICAqICBAcmVnOiAgIFtJTiBdIFJlZ2lzdGVyIHRvIHJlYWQuCiAgICAgICovCkBAIC02ODMs NiArNzAxLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB4ODZfZW11bGF0ZV9mcmVlX3N0YXQKIHZv aWQgeDg2X2VtdWxhdGVfZnJlZV9zdGF0ZShzdHJ1Y3QgeDg2X2VtdWxhdGVfc3RhdGUgKnN0YXRl KTsKICNlbmRpZgogCitpbnQgeDg2ZW11bF9yZWFkX3hjcih1bnNpZ25lZCBpbnQgcmVnLCB1aW50 NjRfdCAqdmFsLAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQg KmN0eHQpOworaW50IHg4NmVtdWxfd3JpdGVfeGNyKHVuc2lnbmVkIGludCByZWcsIHVpbnQ2NF90 IHZhbCwKKyAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4 dCk7CisKICNlbmRpZgogCiBzdGF0aWMgaW5saW5lIHZvaWQgeDg2X2VtdWxfaHdfZXhjZXB0aW9u KAotLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUuYworKysgYi94ZW4vYXJjaC94ODYveDg2 X2VtdWxhdGUuYwpAQCAtNDIsMyArNDIsNTAgQEAKIH0pCiAKICNpbmNsdWRlICJ4ODZfZW11bGF0 ZS94ODZfZW11bGF0ZS5jIgorCitpbnQgeDg2ZW11bF9yZWFkX3hjcih1bnNpZ25lZCBpbnQgcmVn LCB1aW50NjRfdCAqdmFsLAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHg4Nl9lbXVsYXRl X2N0eHQgKmN0eHQpCit7CisgICAgc3dpdGNoICggcmVnICkKKyAgICB7CisgICAgY2FzZSAwOgor ICAgICAgICAqdmFsID0gY3VycmVudC0+YXJjaC54Y3IwOworICAgICAgICByZXR1cm4gWDg2RU1V TF9PS0FZOworCisgICAgY2FzZSAxOgorICAgICAgICBpZiAoIGNwdV9oYXNfeGdldGJ2MSAmJiBj dXJyZW50LT5kb21haW4tPmFyY2guY3B1aWQtPnhzdGF0ZS54Z2V0YnYxICkKKyAgICAgICAgICAg IGJyZWFrOworICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICBkZWZhdWx0OgorICAgICAg ICB4ODZfZW11bF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCwgY3R4dCk7CisgICAgICAg IHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKKyAgICB9CisKKyAgICAqdmFsID0geGdldGJ2KHJl Zyk7CisKKyAgICByZXR1cm4gWDg2RU1VTF9PS0FZOworfQorCitpbnQgeDg2ZW11bF93cml0ZV94 Y3IodW5zaWduZWQgaW50IHJlZywgdWludDY0X3QgdmFsLAorICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQoreworICAgIHN3aXRjaCAoIHJlZyApCisg ICAgeworICAgIGNhc2UgMDoKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDE6CisgICAgICAg IGlmICggY3B1X2hhc194Z2V0YnYxICYmIGN1cnJlbnQtPmRvbWFpbi0+YXJjaC5jcHVpZC0+eHN0 YXRlLnhnZXRidjEgKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8qIGZhbGwgdGhyb3Vn aCAqLworICAgIGRlZmF1bHQ6CisgICAgZ3BfZmF1bHQ6CisgICAgICAgIHg4Nl9lbXVsX2h3X2V4 Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwLCBjdHh0KTsKKyAgICAgICAgcmV0dXJuIFg4NkVNVUxf RVhDRVBUSU9OOworICAgIH0KKworICAgIGlmICggdW5saWtlbHkoaGFuZGxlX3hzZXRidihyZWcs IHZhbCkgIT0gMCkgKQorICAgICAgICBnb3RvIGdwX2ZhdWx0OworCisgICAgcmV0dXJuIFg4NkVN VUxfT0tBWTsKK30KLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdHJhY2UuaAorKysgYi94 ZW4vaW5jbHVkZS9hc20teDg2L2h2bS90cmFjZS5oCkBAIC0zMyw2ICszMyw4IEBACiAjZGVmaW5l IERPX1RSQ19IVk1fQ1JfV1JJVEU2NCAgREVGQVVMVF9IVk1fUkVHQUNDRVNTCiAjZGVmaW5lIERP X1RSQ19IVk1fRFJfUkVBRCAgICAgREVGQVVMVF9IVk1fUkVHQUNDRVNTCiAjZGVmaW5lIERPX1RS Q19IVk1fRFJfV1JJVEUgICAgREVGQVVMVF9IVk1fUkVHQUNDRVNTCisjZGVmaW5lIERPX1RSQ19I Vk1fWENSX1JFQUQ2NCAgREVGQVVMVF9IVk1fUkVHQUNDRVNTCisjZGVmaW5lIERPX1RSQ19IVk1f WENSX1dSSVRFNjQgREVGQVVMVF9IVk1fUkVHQUNDRVNTCiAjZGVmaW5lIERPX1RSQ19IVk1fTVNS X1JFQUQgICAgREVGQVVMVF9IVk1fUkVHQUNDRVNTCiAjZGVmaW5lIERPX1RSQ19IVk1fTVNSX1dS SVRFICAgREVGQVVMVF9IVk1fUkVHQUNDRVNTCiAjZGVmaW5lIERPX1RSQ19IVk1fUkRUU0MgICAg ICAgREVGQVVMVF9IVk1fUkVHQUNDRVNTCi0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYveHN0YXRl LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni94c3RhdGUuaApAQCAtMTA5LDYgKzEwOSwxNyBA QCBpbnQgeHN0YXRlX2FsbG9jX3NhdmVfYXJlYShzdHJ1Y3QgdmNwdSAqCiB2b2lkIHhzdGF0ZV9p bml0KHN0cnVjdCBjcHVpbmZvX3g4NiAqYyk7CiB1bnNpZ25lZCBpbnQgeHN0YXRlX2N0eHRfc2l6 ZSh1NjQgeGNyMCk7CiAKK3N0YXRpYyBpbmxpbmUgdWludDY0X3QgeGdldGJ2KHVuc2lnbmVkIGlu dCBpbmRleCkKK3sKKyAgICB1aW50MzJfdCBsbywgaGk7CisKKyAgICBBU1NFUlQoaW5kZXgpOyAv KiBnZXRfeGNyMCgpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuICovCisgICAgYXNtIHZvbGF0aWxl ICggIi5ieXRlIDB4MGYsMHgwMSwweGQwIiAvKiB4Z2V0YnYgKi8KKyAgICAgICAgICAgICAgICAg ICA6ICI9YSIgKGxvKSwgIj1kIiAoaGkpIDogImMiIChpbmRleCkgKTsKKworICAgIHJldHVybiBs byB8ICgodWludDY0X3QpaGkgPDwgMzIpOworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgeHN0YXRl X2FsbChjb25zdCBzdHJ1Y3QgdmNwdSAqdikKIHsKICAgICAvKgotLS0gYS94ZW4vaW5jbHVkZS9w dWJsaWMvdHJhY2UuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvdHJhY2UuaApAQCAtMjM1LDYg KzIzNSw4IEBACiAjZGVmaW5lIFRSQ19IVk1fVFJBUCAgICAgICAgICAgICAoVFJDX0hWTV9IQU5E TEVSICsgMHgyMykKICNkZWZpbmUgVFJDX0hWTV9UUkFQX0RFQlVHICAgICAgIChUUkNfSFZNX0hB TkRMRVIgKyAweDI0KQogI2RlZmluZSBUUkNfSFZNX1ZMQVBJQyAgICAgICAgICAgKFRSQ19IVk1f SEFORExFUiArIDB4MjUpCisjZGVmaW5lIFRSQ19IVk1fWENSX1JFQUQ2NCAgICAgIChUUkNfSFZN X0hBTkRMRVIgKyBUUkNfNjRfRkxBRyArIDB4MjYpCisjZGVmaW5lIFRSQ19IVk1fWENSX1dSSVRF NjQgICAgIChUUkNfSFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxBRyArIDB4MjcpCiAKICNkZWZpbmUg VFJDX0hWTV9JT1BPUlRfV1JJVEUgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MjE2KQogI2RlZmlu ZSBUUkNfSFZNX0lPTUVNX1dSSVRFICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgyMTcpCgoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBt YWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMu eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=