From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lan Tianyu Subject: [RFC PATCH V2 24/26] x86/vvtd: Add queued invalidation (QI) support Date: Thu, 18 May 2017 01:34:54 -0400 Message-ID: <1495085696-10819-25-git-send-email-tianyu.lan@intel.com> References: <1495085696-10819-1-git-send-email-tianyu.lan@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1495085696-10819-1-git-send-email-tianyu.lan@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Lan Tianyu , andrew.cooper3@citrix.com, kevin.tian@intel.com, jbeulich@suse.com, Chao Gao List-Id: xen-devel@lists.xenproject.org RnJvbTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KClF1ZXVlZCBJbnZhbGlkYXRpb24g SW50ZXJmYWNlIGlzIGFuIGV4cGFuZGVkIGludmFsaWRhdGlvbiBpbnRlcmZhY2Ugd2l0aApleHRl bmRlZCBjYXBhYmlsaXRpZXMuIEhhcmR3YXJlIGltcGxlbWVudGF0aW9ucyByZXBvcnQgc3VwcG9y dCBmb3IgcXVldWVkCmludmFsaWRhdGlvbiBpbnRlcmZhY2UgdGhyb3VnaCB0aGUgRXh0ZW5kZWQg Q2FwYWJpbGl0eSBSZWdpc3Rlci4gVGhlIHF1ZXVlZAppbnZhbGlkYXRpb24gaW50ZXJmYWNlIHVz ZXMgYW4gSW52YWxpZGF0aW9uIFF1ZXVlIChJUSksIHdoaWNoIGlzIGEgY2lyY3VsYXIKYnVmZmVy IGluIHN5c3RlbSBtZW1vcnkuIFNvZnR3YXJlIHN1Ym1pdHMgY29tbWFuZHMgYnkgd3JpdGluZyBJ bnZhbGlkYXRpb24KRGVzY3JpcHRvcnMgdG8gdGhlIElRLgoKSW4gdGhpcyBwYXRjaCwgYSBuZXcg ZnVuY3Rpb24gdmlvbW11X3Byb2Nlc3NfaXEoKSBpcyB1c2VkIGZvciBlbXVsYXRpbmcgaG93Cmhh cmR3YXJlIGhhbmRsZXMgaW52YWxpZGF0aW9uIHJlcXVlc3RzIHRocm91Z2ggUUkuCgpTaWduZWQt b2ZmLWJ5OiBDaGFvIEdhbyA8Y2hhby5nYW9AaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBMYW4g VGlhbnl1IDx0aWFueXUubGFuQGludGVsLmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvaHZtL3Z2dGQu YyAgICAgICAgICAgICB8IDI0NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5oIHwgIDI5ICsrKystCiAyIGZpbGVz IGNoYW5nZWQsIDI3MiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L2h2bS92dnRkLmMgYi94ZW4vYXJjaC94ODYvaHZtL3Z2dGQuYwppbmRleCBh NzQxNDUyLi5jZTI1YTc3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3Z2dGQuYworKysg Yi94ZW4vYXJjaC94ODYvaHZtL3Z2dGQuYwpAQCAtNDI3LDYgKzQyNywxODUgQEAgc3RhdGljIGlu dCB2dnRkX3JlY29yZF9mYXVsdChzdHJ1Y3QgdnZ0ZCAqdnZ0ZCwKICAgICByZXR1cm4gWDg2RU1V TF9PS0FZOwogfQogCisvKgorICogUHJvY2VzcyBhIGludmFsaWRhdGlvbiBkZXNjcmlwdG9yLiBD dXJyZW50bHksIG9ubHkgVHdvIHR5cGVzIGRlc2NyaXB0b3JzLAorICogSW50ZXJydXB0IEVudHJ5 IENhY2hlIGludmFsaWRhdGlvbiBkZXNjcml0b3IgYW5kIEludmFsaWRhdGlvbiBXYWl0CisgKiBE ZXNjcmlwdG9yIGFyZSBoYW5kbGVkLgorICogQHZ2dGQ6IHRoZSB2aXJ0dWFsIHZ0ZCBpbnN0YW5j ZQorICogQGk6IHRoZSBpbmRleCBvZiB0aGUgaW52YWxpZGF0aW9uIGRlc2NyaXB0b3IgdG8gYmUg cHJvY2Vzc2VkCisgKgorICogSWYgc3VjY2VzcyByZXR1cm4gMCwgb3IgcmV0dXJuIC0xIHdoZW4g ZmFpbHVyZS4KKyAqLworc3RhdGljIGludCBwcm9jZXNzX2lxZShzdHJ1Y3QgdnZ0ZCAqdnZ0ZCwg aW50IGkpCit7CisgICAgdWludDY0X3QgaXFhLCBhZGRyOworICAgIHN0cnVjdCBxaW52YWxfZW50 cnkgKnFpbnZhbF9wYWdlOworICAgIHZvaWQgKnBnOworICAgIGludCByZXQ7CisKKyAgICB2dnRk X2dldF9yZWdfcXVhZCh2dnRkLCBETUFSX0lRQV9SRUcsIGlxYSk7CisgICAgcmV0ID0gbWFwX2d1 ZXN0X3BhZ2UodnZ0ZC0+ZG9tYWluLCBETUFfSVFBX0FERFIoaXFhKT4+UEFHRV9TSElGVCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAodm9pZCoqKSZxaW52YWxfcGFnZSk7CisgICAgaWYgKCBy ZXQgKQorICAgIHsKKyAgICAgICAgZ2RwcmludGsoWEVOTE9HX0VSUiwgIkNhbid0IG1hcCBndWVz dCBJUlQgKHJjICVkKSIsIHJldCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBz d2l0Y2ggKCBxaW52YWxfcGFnZVtpXS5xLmludl93YWl0X2RzYy5sby50eXBlICkKKyAgICB7Cisg ICAgY2FzZSBUWVBFX0lOVkFMX1dBSVQ6CisgICAgICAgIGlmICggcWludmFsX3BhZ2VbaV0ucS5p bnZfd2FpdF9kc2MubG8uc3cgKQorICAgICAgICB7CisgICAgICAgICAgICBhZGRyID0gKHFpbnZh bF9wYWdlW2ldLnEuaW52X3dhaXRfZHNjLmhpLnNhZGRyIDw8IDIpOworICAgICAgICAgICAgcmV0 ID0gbWFwX2d1ZXN0X3BhZ2UodnZ0ZC0+ZG9tYWluLCBhZGRyID4+IFBBR0VfU0hJRlQsICZwZyk7 CisgICAgICAgICAgICBpZiAoIHJldCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg Z2RwcmludGsoWEVOTE9HX0VSUiwgIkNhbid0IG1hcCBndWVzdCBtZW1vcnkgdG8gaW5mb3JtIGd1 ZXN0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiSVdDIGNvbXBsZXRpb24gKHJjICVkKSIs IHJldCk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICoodWludDMyX3QgKikoKHVpbnQ2NF90KXBnICsgKGFkZHIgJiB+UEFHRV9NQVNLKSkg PQorICAgICAgICAgICAgICAgIHFpbnZhbF9wYWdlW2ldLnEuaW52X3dhaXRfZHNjLmxvLnNkYXRh OworICAgICAgICAgICAgdW5tYXBfZ3Vlc3RfcGFnZShwZyk7CisgICAgICAgIH0KKworICAgICAg ICAvKgorICAgICAgICAgKiBUaGUgZm9sbG93aW5nIGNvZGUgZ2VuZXJhdGVzIGFuIGludmFsaWRh dGlvbiBjb21wbGV0aW9uIGV2ZW50CisgICAgICAgICAqIGluZGljYXRpbmcgdGhlIGludmFsaWRh dGlvbiB3YWl0IGRlc2NyaXB0b3IgY29tcGxldGlvbi4gTm90ZSB0aGF0CisgICAgICAgICAqIHRo ZSBmb2xsb3dpbmcgY29kZSBmcmFnbWVudCBpcyBub3QgdGVzdGVkIHByb3Blcmx5LgorICAgICAg ICAgKi8KKyAgICAgICAgaWYgKCBxaW52YWxfcGFnZVtpXS5xLmludl93YWl0X2RzYy5sby5pZmxh ZyApCisgICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQzMl90IGllX2RhdGEsIGllX2FkZHI7Cisg ICAgICAgICAgICBpZiAoICF2dnRkX3Rlc3RfYW5kX3NldF9iaXQodnZ0ZCwgRE1BUl9JQ1NfUkVH LCBETUFfSUNTX0lXQ19CSVQpICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBfX3Z2 dGRfc2V0X2JpdCh2dnRkLCBETUFSX0lFQ1RMX1JFRywgRE1BX0lFQ1RMX0lQX0JJVCk7CisgICAg ICAgICAgICAgICAgaWYgKCAhdnZ0ZF90ZXN0X2JpdCh2dnRkLCBETUFSX0lFQ1RMX1JFRywgRE1B X0lFQ1RMX0lNX0JJVCkgKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg aWVfZGF0YSA9IHZ2dGRfZ2V0X3JlZyh2dnRkLCBETUFSX0lFREFUQV9SRUcpOworICAgICAgICAg ICAgICAgICAgICBpZV9hZGRyID0gdnZ0ZF9nZXRfcmVnKHZ2dGQsIERNQVJfSUVBRERSX1JFRyk7 CisgICAgICAgICAgICAgICAgICAgIHZ2dGRfZ2VuZXJhdGVfaW50ZXJydXB0KHZ2dGQsIGllX2Fk ZHIsIGllX2RhdGEpOworICAgICAgICAgICAgICAgICAgICBfX3Z2dGRfY2xlYXJfYml0KHZ2dGQs IERNQVJfSUVDVExfUkVHLCBETUFfSUVDVExfSVBfQklUKTsKKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFRZUEVf SU5WQUxfSUVDOgorICAgICAgICAvKgorICAgICAgICAgKiBDdXJyZW50bHksIG5vIGNhY2hlIGlz IHByZXNlcnZlZCBpbiBoeXBlcnZpc29yLiBPbmx5IG5lZWQgdG8gdXBkYXRlCisgICAgICAgICAq IHBJUlRFcyB3aGljaCBhcmUgbW9kaWZpZWQgaW4gYmluZGluZyBwcm9jZXNzLgorICAgICAgICAg Ki8KKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBnb3RvIGVycm9yOwor ICAgIH0KKworICAgIHVubWFwX2d1ZXN0X3BhZ2UoKHZvaWQqKXFpbnZhbF9wYWdlKTsKKyAgICBy ZXR1cm4gMDsKKworZXJyb3I6CisgICAgdW5tYXBfZ3Vlc3RfcGFnZSgodm9pZCopcWludmFsX3Bh Z2UpOworICAgIGdkcHJpbnRrKFhFTkxPR19FUlIsICJJbnRlcm5hbCBlcnJvciBpbiBRdWV1ZSBJ bnZhbGlkYXRpb24uXG4iKTsKKyAgICBkb21haW5fY3Jhc2godnZ0ZC0+ZG9tYWluKTsKKyAgICBy ZXR1cm4gLTE7Cit9CisKKy8qCisgKiBJbnZhbGlkYXRlIGFsbCB0aGUgZGVzY3JpcHRvcnMgaW4g SW52YWxpZGF0aW9uIFF1ZXVlLgorICovCitzdGF0aWMgdm9pZCB2dnRkX3Byb2Nlc3NfaXEoc3Ry dWN0IHZ2dGQgKnZ2dGQpCit7CisgICAgdWludDY0X3QgaXFoLCBpcXQsIGlxYSwgbWF4X2VudHJ5 LCBpOworICAgIGludCByZXQgPSAwOworCisgICAgLyoKKyAgICAgKiBObyBuZXcgZGVzY3JpcHRv ciBpcyBmZXRjaGVkIGZyb20gdGhlIEludmFsaWRhdGlvbiBRdWV1ZSB1bnRpbAorICAgICAqIHNv ZnR3YXJlIGNsZWFycyB0aGUgSVFFIGZpZWxkIGluIHRoZSBGYXVsdCBTdGF0dXMgUmVnaXN0ZXIK KyAgICAgKi8KKyAgICBpZiAoIHZ2dGRfdGVzdF9iaXQodnZ0ZCwgRE1BUl9GU1RTX1JFRywgRE1B X0ZTVFNfSVFFX0JJVCkgKQorICAgICAgICByZXR1cm47CisKKyAgICB2dnRkX2dldF9yZWdfcXVh ZCh2dnRkLCBETUFSX0lRSF9SRUcsIGlxaCk7CisgICAgdnZ0ZF9nZXRfcmVnX3F1YWQodnZ0ZCwg RE1BUl9JUVRfUkVHLCBpcXQpOworICAgIHZ2dGRfZ2V0X3JlZ19xdWFkKHZ2dGQsIERNQVJfSVFB X1JFRywgaXFhKTsKKworICAgIG1heF9lbnRyeSA9IERNQV9JUUFfRU5UUllfUEVSX1BBR0UgPDwg RE1BX0lRQV9RUyhpcWEpOworICAgIGlxaCA9IERNQV9JUUhfUUgoaXFoKTsKKyAgICBpcXQgPSBE TUFfSVFUX1FUKGlxdCk7CisKKyAgICBBU1NFUlQoaXF0IDwgbWF4X2VudHJ5KTsKKyAgICBpZiAo IGlxaCA9PSBpcXQgKQorICAgICAgICByZXR1cm47CisKKyAgICBpID0gaXFoOworICAgIHdoaWxl ICggaSAhPSBpcXQgKQorICAgIHsKKyAgICAgICAgcmV0ID0gcHJvY2Vzc19pcWUodnZ0ZCwgaSk7 CisgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBlbHNlCisg ICAgICAgICAgICBpID0gKGkgKyAxKSAlIG1heF9lbnRyeTsKKyAgICAgICAgdnZ0ZF9zZXRfcmVn X3F1YWQodnZ0ZCwgRE1BUl9JUUhfUkVHLCBpIDw8IERNQV9JUUhfUUhfU0hJRlQpOworICAgIH0K KworICAgIC8qCisgICAgICogV2hlbiBJUUUgc2V0LCBJUUggcmVmZXJlbmNlcyB0aGUgZGVzcmlw dG9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXJyb3IuCisgICAgICovCisgICAgaWYgKCByZXQgKQor ICAgICAgICB2dnRkX3JlcG9ydF9ub25fcmVjb3ZlcmFibGVfZmF1bHQodnZ0ZCwgRE1BX0ZTVFNf SVFFX0JJVCk7Cit9CisKK3N0YXRpYyBpbnQgdnZ0ZF93cml0ZV9pcXQoc3RydWN0IHZ2dGQgKnZ2 dGQsIHVuc2lnbmVkIGxvbmcgdmFsKQoreworICAgIHVpbnQ2NF90IGlxYTsKKworICAgIGlmICgg dmFsICYgRE1BX0lRVF9SU1ZEICkKKyAgICB7CisgICAgICAgIFZWVERfREVCVUcoVlZURF9EQkdf UlcsICJBdHRlbXB0IHRvIHNldCByZXNlcnZlZCBiaXRzIGluICIKKyAgICAgICAgICAgICAgICAg ICAiSW52YWxpZGF0aW9uIFF1ZXVlIFRhaWwuIik7CisgICAgICAgIHJldHVybiBYODZFTVVMX09L QVk7CisgICAgfQorCisgICAgdnZ0ZF9nZXRfcmVnX3F1YWQodnZ0ZCwgRE1BUl9JUUFfUkVHLCBp cWEpOworICAgIGlmICggRE1BX0lRVF9RVCh2YWwpID49IERNQV9JUUFfRU5UUllfUEVSX1BBR0Ug PDwgRE1BX0lRQV9RUyhpcWEpICkKKyAgICB7CisgICAgICAgIFZWVERfREVCVUcoVlZURF9EQkdf UlcsICJJUVQ6IFZhbHVlICVseCBleGNlZWRlZCBzdXBwb3J0ZWQgbWF4ICIKKyAgICAgICAgICAg ICAgICAgICAiaW5kZXguIiwgdmFsKTsKKyAgICAgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKKyAg ICB9CisKKyAgICB2dnRkX3NldF9yZWdfcXVhZCh2dnRkLCBETUFSX0lRVF9SRUcsIHZhbCk7Cisg ICAgdnZ0ZF9wcm9jZXNzX2lxKHZ2dGQpOworICAgIHJldHVybiBYODZFTVVMX09LQVk7Cit9CisK K3N0YXRpYyBpbnQgdnZ0ZF93cml0ZV9pcWEoc3RydWN0IHZ2dGQgKnZ2dGQsIHVuc2lnbmVkIGxv bmcgdmFsKQoreworICAgIGlmICggdmFsICYgRE1BX0lRQV9SU1ZEICkKKyAgICB7CisgICAgICAg IFZWVERfREVCVUcoVlZURF9EQkdfUlcsICJBdHRlbXB0IHRvIHNldCByZXNlcnZlZCBiaXRzIGlu ICIKKyAgICAgICAgICAgICAgICAgICAiSW52YWxpZGF0aW9uIFF1ZXVlIEFkZHJlc3MuIik7Cisg ICAgICAgIHJldHVybiBYODZFTVVMX09LQVk7CisgICAgfQorCisgICAgdnZ0ZF9zZXRfcmVnX3F1 YWQodnZ0ZCwgRE1BUl9JUUFfUkVHLCB2YWwpOworICAgIHJldHVybiBYODZFTVVMX09LQVk7Cit9 CisKK3N0YXRpYyBpbnQgdnZ0ZF93cml0ZV9pY3Moc3RydWN0IHZ2dGQgKnZ2dGQsIHVpbnQzMl90 IHZhbCkKK3sKKyAgICBpZiAoIHZhbCAmIERNQV9JQ1NfSVdDICkKKyAgICB7CisgICAgICAgIF9f dnZ0ZF9jbGVhcl9iaXQodnZ0ZCwgRE1BUl9JQ1NfUkVHLCBETUFfSUNTX0lXQ19CSVQpOworICAg ICAgICAvKldoZW4gSVdDIGZpZWxkIGlzIGNsZWFyZWQsIHRoZSBJUCBmaWVsZCBuZWVkcyB0byBi ZSBjbGVhcmVkICovCisgICAgICAgIF9fdnZ0ZF9jbGVhcl9iaXQodnZ0ZCwgRE1BUl9JRUNUTF9S RUcsIERNQV9JRUNUTF9JUF9CSVQpOworICAgIH0KKyAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwor fQorCiBzdGF0aWMgaW50IHZ2dGRfd3JpdGVfZnJjZDMoc3RydWN0IHZ2dGQgKnZ2dGQsIHVpbnQz Ml90IHZhbCkKIHsKICAgICAvKiBXcml0aW5nIGEgMSBtZWFucyBjbGVhciBmYXVsdCAqLwpAQCAt NDM4LDYgKzYxNywyOSBAQCBzdGF0aWMgaW50IHZ2dGRfd3JpdGVfZnJjZDMoc3RydWN0IHZ2dGQg KnZ2dGQsIHVpbnQzMl90IHZhbCkKICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwogfQogCitzdGF0 aWMgaW50IHZ2dGRfd3JpdGVfaWVjdGwoc3RydWN0IHZ2dGQgKnZ2dGQsIHVpbnQzMl90IHZhbCkK K3sKKyAgICAvKgorICAgICAqIE9ubHkgRE1BX0lFQ1RMX0lNIGJpdCBpcyB3cml0YWJsZS4gR2Vu ZXJhdGUgcGVuZGluZyBldmVudCB3aGVuIHVubWFzay4KKyAgICAgKi8KKyAgICBpZiAoICEodmFs ICYgRE1BX0lFQ1RMX0lNKSApCisgICAgeworICAgICAgICAvKiBDbGVhciBJTSBhbmQgY2xlYXIg SVAgKi8KKyAgICAgICAgX192dnRkX2NsZWFyX2JpdCh2dnRkLCBETUFSX0lFQ1RMX1JFRywgRE1B X0lFQ1RMX0lNX0JJVCk7CisgICAgICAgIGlmICggdnZ0ZF90ZXN0X2FuZF9jbGVhcl9iaXQodnZ0 ZCwgRE1BUl9JRUNUTF9SRUcsIERNQV9JRUNUTF9JUF9CSVQpICkKKyAgICAgICAgeworICAgICAg ICAgICAgdWludDMyX3QgaWVfZGF0YSwgaWVfYWRkcjsKKyAgICAgICAgICAgIGllX2RhdGEgPSB2 dnRkX2dldF9yZWcodnZ0ZCwgRE1BUl9JRURBVEFfUkVHKTsKKyAgICAgICAgICAgIGllX2FkZHIg PSB2dnRkX2dldF9yZWcodnZ0ZCwgRE1BUl9JRUFERFJfUkVHKTsKKyAgICAgICAgICAgIHZ2dGRf Z2VuZXJhdGVfaW50ZXJydXB0KHZ2dGQsIGllX2FkZHIsIGllX2RhdGEpOworICAgICAgICB9Cisg ICAgfQorICAgIGVsc2UKKyAgICAgICAgX192dnRkX3NldF9iaXQodnZ0ZCwgRE1BUl9JRUNUTF9S RUcsIERNQV9JRUNUTF9JTV9CSVQpOworCisgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKK30KKwog c3RhdGljIGludCB2dnRkX3dyaXRlX2ZlY3RsKHN0cnVjdCB2dnRkICp2dnRkLCB1aW50MzJfdCB2 YWwpCiB7CiAgICAgLyoKQEAgLTQ4MCw2ICs2ODIsMTAgQEAgc3RhdGljIGludCB2dnRkX3dyaXRl X2ZzdHMoc3RydWN0IHZ2dGQgKnZ2dGQsIHVpbnQzMl90IHZhbCkKICAgICBpZiAoICEoKHZ2dGRf Z2V0X3JlZyh2dnRkLCBETUFSX0ZTVFNfUkVHKSAmIERNQV9GU1RTX0ZBVUxUUykpICkKICAgICAg ICAgX192dnRkX2NsZWFyX2JpdCh2dnRkLCBETUFSX0ZFQ1RMX1JFRywgRE1BX0ZFQ1RMX0lQX0JJ VCk7CiAKKyAgICAvKiBDb250aW51ZSB0byBkZWFsIGludmFsaWRhdGlvbiB3aGVuIElRRSBpcyBj bGVhciAqLworICAgIGlmICggIXZ2dGRfdGVzdF9iaXQodnZ0ZCwgRE1BUl9GU1RTX1JFRywgRE1B X0ZTVFNfSVFFX0JJVCkgKQorICAgICAgICB2dnRkX3Byb2Nlc3NfaXEodnZ0ZCk7CisKICAgICBy ZXR1cm4gWDg2RU1VTF9PS0FZOwogfQogCkBAIC02NDAsNiArODQ2LDM2IEBAIHN0YXRpYyBpbnQg dnZ0ZF93cml0ZShzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyBhZGRyLAogICAgICAgICAg ICAgcmV0ID0gdnZ0ZF93cml0ZV9mcmNkMyh2dnRkLCB2YWwpOwogICAgICAgICAgICAgYnJlYWs7 CiAKKyAgICAgICAgY2FzZSBETUFSX0lFQ1RMX1JFRzoKKyAgICAgICAgICAgIHJldCA9IHZ2dGRf d3JpdGVfaWVjdGwodnZ0ZCwgdmFsKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh c2UgRE1BUl9JQ1NfUkVHOgorICAgICAgICAgICAgcmV0ID0gdnZ0ZF93cml0ZV9pY3ModnZ0ZCwg dmFsKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRE1BUl9JUVRfUkVHOgor ICAgICAgICAgICAgcmV0ID0gdnZ0ZF93cml0ZV9pcXQodnZ0ZCwgKHVpbnQzMl90KXZhbCk7Cisg ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIERNQVJfSVFBX1JFRzoKKyAgICAgICAg eworICAgICAgICAgICAgdWludDMyX3QgaXFhX2hpOworCisgICAgICAgICAgICBpcWFfaGkgPSB2 dnRkX2dldF9yZWcodnZ0ZCwgRE1BUl9JUUFfUkVHX0hJKTsKKyAgICAgICAgICAgIHJldCA9IHZ2 dGRfd3JpdGVfaXFhKHZ2dGQsICh1aW50MzJfdCl2YWwgfCAoKHVpbnQ2NF90KWlxYV9oaSA8PCAz MikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIERNQVJf SVFBX1JFR19ISToKKyAgICAgICAgeworICAgICAgICAgICAgdWludDMyX3QgaXFhX2xvOworCisg ICAgICAgICAgICBpcWFfbG8gPSB2dnRkX2dldF9yZWcodnZ0ZCwgRE1BUl9JUUFfUkVHKTsKKyAg ICAgICAgICAgIHJldCA9IHZ2dGRfd3JpdGVfaXFhKHZ2dGQsICh2YWwgPDwgMzIpIHwgaXFhX2xv KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBETUFSX0lF REFUQV9SRUc6CiAgICAgICAgIGNhc2UgRE1BUl9JRUFERFJfUkVHOgogICAgICAgICBjYXNlIERN QVJfSUVVQUREUl9SRUc6CkBAIC02NzAsNiArOTA2LDE0IEBAIHN0YXRpYyBpbnQgdnZ0ZF93cml0 ZShzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyBhZGRyLAogICAgICAgICAgICAgcmV0ID0g dnZ0ZF93cml0ZV9mcmNkMyh2dnRkLCB2YWwgPj4gMzIpOwogICAgICAgICAgICAgYnJlYWs7CiAK KyAgICAgICAgY2FzZSBETUFSX0lRVF9SRUc6CisgICAgICAgICAgICByZXQgPSB2dnRkX3dyaXRl X2lxdCh2dnRkLCB2YWwpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBETUFS X0lRQV9SRUc6CisgICAgICAgICAgICByZXQgPSB2dnRkX3dyaXRlX2lxYSh2dnRkLCB2YWwpOwor ICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldCA9 IFg4NkVNVUxfVU5IQU5ETEVBQkxFOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuaCBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL3Z0ZC9pb21tdS5oCmluZGV4IDU0NzRjNzIuLjEzNWM0Y2YgMTAwNjQ0Ci0tLSBhL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5oCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL3Z0ZC9pb21tdS5oCkBAIC0yMDcsNiArMjA3LDMyIEBACiAjZGVmaW5lIERNQV9JUlRBX1Mo dmFsKSAgICAgICAgICh2YWwgJiAweGYpCiAjZGVmaW5lIERNQV9JUlRBX1NJWkUodmFsKSAgICAg ICgxVUwgPDwgKERNQV9JUlRBX1ModmFsKSArIDEpKQogCisvKiBJUUhfUkVHICovCisjZGVmaW5l IERNQV9JUUhfUUhfU0hJRlQgICAgICAgIDQKKyNkZWZpbmUgRE1BX0lRSF9RSCh2YWwpICAgICAg ICAgKCh2YWwgPj4gNCkgJiAweDdmZmZVTEwpCisKKy8qIElRVF9SRUcgKi8KKyNkZWZpbmUgRE1B X0lRVF9RVF9TSElGVCAgICAgICAgNAorI2RlZmluZSBETUFfSVFUX1FUKHZhbCkgICAgICAgICAo KHZhbCA+PiA0KSAmIDB4N2ZmZlVMTCkKKyNkZWZpbmUgRE1BX0lRVF9SU1ZEICAgICAgICAgICAg MHhmZmZmZmZmZmZmZjgwMDA3VUxMCisKKy8qIElRQV9SRUcgKi8KKyNkZWZpbmUgRE1BX01HQVcg ICAgICAgICAgICAgICAgMzkgIC8qIE1heGltdW0gR3Vlc3QgQWRkcmVzcyBXaWR0aCAqLworI2Rl ZmluZSBETUFfSVFBX0FERFIodmFsKSAgICAgICAodmFsICYgfjB4ZmZmVUxMKQorI2RlZmluZSBE TUFfSVFBX1FTKHZhbCkgICAgICAgICAodmFsICYgMHg3KQorI2RlZmluZSBETUFfSVFBX0VOVFJZ X1BFUl9QQUdFICAoMSA8PCA4KQorI2RlZmluZSBETUFfSVFBX1JTVkQgICAgICAgICAgICAofigo MVVMTCA8PCBETUFfTUdBVykgLTEgKSB8IDB4ZmY4VUxMKQorCisvKiBJRUNUTF9SRUcgKi8KKyNk ZWZpbmUgRE1BX0lFQ1RMX0lNX0JJVCAzMQorI2RlZmluZSBETUFfSUVDVExfSU0gICAgICAgICAg ICAoMSA8PCBETUFfSUVDVExfSU1fQklUKQorI2RlZmluZSBETUFfSUVDVExfSVBfQklUIDMwCisj ZGVmaW5lIERNQV9JRUNUTF9JUCAoKCh1NjQpMSkgPDwgRE1BX0lFQ1RMX0lQX0JJVCkKKworLyog SUNTX1JFRyAqLworI2RlZmluZSBETUFfSUNTX0lXQ19CSVQgICAgICAgICAwCisjZGVmaW5lIERN QV9JQ1NfSVdDICAgICAgICAgICAgICgxIDw8IERNQV9JQ1NfSVdDX0JJVCkKKwogLyogUE1FTl9S RUcgKi8KICNkZWZpbmUgRE1BX1BNRU5fRVBNICAgICgoKHUzMikxKSA8PCAzMSkKICNkZWZpbmUg RE1BX1BNRU5fUFJTICAgICgoKHUzMikxKSA8PCAwKQpAQCAtMjQxLDcgKzI2Nyw4IEBACiAjZGVm aW5lIERNQV9GU1RTX1BQRiAoMVUgPDwgRE1BX0ZTVFNfUFBGX0JJVCkKICNkZWZpbmUgRE1BX0ZT VFNfQUZPICgxVSA8PCAyKQogI2RlZmluZSBETUFfRlNUU19BUEYgKDFVIDw8IDMpCi0jZGVmaW5l IERNQV9GU1RTX0lRRSAoMVUgPDwgNCkKKyNkZWZpbmUgRE1BX0ZTVFNfSVFFX0JJVCA0CisjZGVm aW5lIERNQV9GU1RTX0lRRSAoMVUgPDwgRE1BX0ZTVFNfSVFFX0JJVCkKICNkZWZpbmUgRE1BX0ZT VFNfSUNFICgxVSA8PCA1KQogI2RlZmluZSBETUFfRlNUU19JVEUgKDFVIDw8IDYpCiAjZGVmaW5l IERNQV9GU1RTX1BST19CSVQgNwotLSAKMS44LjMuMQoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=