From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lan Tianyu Subject: [RFC PATCH V2 14/26] X86/vvtd: Process interrupt remapping request Date: Thu, 18 May 2017 01:34:44 -0400 Message-ID: <1495085696-10819-15-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 , kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, jbeulich@suse.com, Chao Gao List-Id: xen-devel@lists.xenproject.org RnJvbTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KCldoZW4gYSByZW1hcHBpbmcgaW50 ZXJydXB0IHJlcXVlc3QgYXJyaXZlcywgcmVtYXBwaW5nIGhhcmR3YXJlIGNvbXB1dGVzIHRoZQpp bnRlcnJ1cHRfaW5kZXggcGVyIHRoZSBhbGdvcml0aG0gZGVzY3JpYmVkIGluIFZURCBzcGVjCiJJ bnRlcnJ1cHQgUmVtYXBwaW5nIFRhYmxlIiwgaW50ZXJwcmV0cyB0aGUgSVJURSBhbmQgZ2VuZXJh dGVzIGEgcmVtYXBwZWQKaW50ZXJydXB0IHJlcXVlc3QuCgpUaGlzIHBhdGNoIGludHJvZHVjZXMg dmlvbW11X2hhbmRsZV9pcnFfcmVxdWVzdCgpIHRvIGVtdWxhdGUgdGhlIHByb2Nlc3MgaG93CnJl bWFwcGluZyBoYXJkd2FyZSBoYW5kbGVzIGEgcmVtYXBwaW5nIGludGVycnVwdCByZXF1ZXN0LgoK U2lnbmVkLW9mZi1ieTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KU2lnbmVkLW9mZi1i eTogTGFuIFRpYW55dSA8dGlhbnl1LmxhbkBpbnRlbC5jb20+Ci0tLQogeGVuL2FyY2gveDg2L2h2 bS92dnRkLmMgICAgICAgICAgICAgfCAyNzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuaCB8ICAyMSArKysKIHhl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC92dGQuaCAgIHwgICA2ICsKIDMgZmlsZXMgY2hhbmdl ZCwgMzA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvaHZtL3Z2dGQuYyBiL3hlbi9hcmNoL3g4Ni9odm0vdnZ0ZC5jCmluZGV4IGI2ZmQzNGIu LmM5OTNhMTUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdnZ0ZC5jCisrKyBiL3hlbi9h cmNoL3g4Ni9odm0vdnZ0ZC5jCkBAIC0yMywxMiArMjMsMTcgQEAKICNpbmNsdWRlIDx4ZW4vdHlw ZXMuaD4KICNpbmNsdWRlIDx4ZW4vdmlvbW11Lmg+CiAjaW5jbHVkZSA8eGVuL3htYWxsb2MuaD4K KyNpbmNsdWRlIDxhc20vYXBpYy5oPgogI2luY2x1ZGUgPGFzbS9jdXJyZW50Lmg+CisjaW5jbHVk ZSA8YXNtL2V2ZW50Lmg+CiAjaW5jbHVkZSA8YXNtL2h2bS9kb21haW4uaD4KKyNpbmNsdWRlIDxh c20vaW9fYXBpYy5oPgogI2luY2x1ZGUgPGFzbS9wYWdlLmg+CisjaW5jbHVkZSA8YXNtL3AybS5o PgogI2luY2x1ZGUgPHB1YmxpYy92aW9tbXUuaD4KIAogI2luY2x1ZGUgIi4uLy4uLy4uL2RyaXZl cnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmgiCisjaW5jbHVkZSAiLi4vLi4vLi4vZHJpdmVycy9w YXNzdGhyb3VnaC92dGQvdnRkLmgiCiAKIHN0cnVjdCBodm1faHdfdnZ0ZF9yZWdzIHsKICAgICB1 aW50OF90IGRhdGFbMTAyNF07CkBAIC0zOCw2ICs0Myw5IEBAIHN0cnVjdCBodm1faHdfdnZ0ZF9y ZWdzIHsKICNkZWZpbmUgVklPTU1VX1NUQVRVU19JUlFfUkVNQVBQSU5HX0VOQUJMRUQgICAgICgx IDw8IDApCiAjZGVmaW5lIFZJT01NVV9TVEFUVVNfRE1BX1JFTUFQUElOR19FTkFCTEVEICAgICAo MSA8PCAxKQogCisjZGVmaW5lIHZ2dGRfaXJxX3JlbWFwcGluZ19lbmFibGVkKHZ2dGQpIFwKKyAg ICAgICAgICAgICh2dnRkLT5zdGF0dXMgJiBWSU9NTVVfU1RBVFVTX0lSUV9SRU1BUFBJTkdfRU5B QkxFRCkKKwogc3RydWN0IHZ2dGQgewogICAgIC8qIFZJT01NVV9TVEFUVVNfWFhYX1JFTUFQUElO R19FTkFCTEVEICovCiAgICAgaW50IHN0YXR1czsKQEAgLTEyMCw2ICsxMjgsMTQwIEBAIHN0YXRp YyBpbmxpbmUgdWludDhfdCB2dnRkX2dldF9yZWdfYnl0ZShzdHJ1Y3QgdnZ0ZCAqdnRkLCB1aW50 MzJfdCByZWcpCiAgICAgdnZ0ZF9zZXRfcmVnKHZ2dGQsIChyZWcpICsgNCwgKHZhbCkgPj4gMzIp OyBcCiB9IHdoaWxlKDApCiAKK3N0YXRpYyBpbnQgbWFwX2d1ZXN0X3BhZ2Uoc3RydWN0IGRvbWFp biAqZCwgdWludDY0X3QgZ2ZuLCB2b2lkICoqdmlydCkKK3sKKyAgICBzdHJ1Y3QgcGFnZV9pbmZv ICpwOworCisgICAgcCA9IGdldF9wYWdlX2Zyb21fZ2ZuKGQsIGdmbiwgTlVMTCwgUDJNX0FMTE9D KTsKKyAgICBpZiAoICFwICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBpZiAoICFn ZXRfcGFnZV90eXBlKHAsIFBHVF93cml0YWJsZV9wYWdlKSApCisgICAgeworICAgICAgICBwdXRf cGFnZShwKTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgKnZpcnQgPSBf X21hcF9kb21haW5fcGFnZV9nbG9iYWwocCk7CisgICAgaWYgKCAhKnZpcnQgKQorICAgIHsKKyAg ICAgICAgcHV0X3BhZ2VfYW5kX3R5cGUocCk7CisgICAgICAgIHJldHVybiAtRU5PTUVNOworICAg IH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdW5tYXBfZ3Vlc3RfcGFnZSh2b2lk ICp2aXJ0KQoreworICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7CisKKyAgICBpZiAoICF2aXJ0 ICkKKyAgICAgICAgcmV0dXJuOworCisgICAgdmlydCA9ICh2b2lkICopKCh1bnNpZ25lZCBsb25n KXZpcnQgJiBQQUdFX01BU0spOworICAgIHBhZ2UgPSBtZm5fdG9fcGFnZShkb21haW5fcGFnZV9t YXBfdG9fbWZuKHZpcnQpKTsKKworICAgIHVubWFwX2RvbWFpbl9wYWdlX2dsb2JhbCh2aXJ0KTsK KyAgICBwdXRfcGFnZV9hbmRfdHlwZShwYWdlKTsKK30KKworc3RhdGljIHZvaWQgdnZ0ZF9pbmpf aXJxKAorICAgIHN0cnVjdCB2bGFwaWMgKnRhcmdldCwKKyAgICB1aW50OF90IHZlY3RvciwKKyAg ICB1aW50OF90IHRyaWdfbW9kZSwKKyAgICB1aW50OF90IGRlbGl2ZXJ5X21vZGUpCit7CisgICAg VlZURF9ERUJVRyhWVlREX0RCR19JTkZPLCAiZGVzdD12JWQsIGRlbGl2ZXJ5X21vZGU9JXggdmVj dG9yPSVkICIKKyAgICAgICAgICAgICAgICJ0cmlnX21vZGU9JWQuIiwKKyAgICAgICAgICAgICAg IHZsYXBpY192Y3B1KHRhcmdldCktPnZjcHVfaWQsIGRlbGl2ZXJ5X21vZGUsCisgICAgICAgICAg ICAgICB2ZWN0b3IsIHRyaWdfbW9kZSk7CisKKyAgICBBU1NFUlQoKGRlbGl2ZXJ5X21vZGUgPT0g ZGVzdF9GaXhlZCkgfHwKKyAgICAgICAgICAgKGRlbGl2ZXJ5X21vZGUgPT0gZGVzdF9Mb3dlc3RQ cmlvKSk7CisKKyAgICB2bGFwaWNfc2V0X2lycSh0YXJnZXQsIHZlY3RvciwgdHJpZ19tb2RlKTsK K30KKworc3RhdGljIGludCB2dnRkX2RlbGl2ZXJ5KAorICAgIHN0cnVjdCBkb21haW4gKmQsIGlu dCB2ZWN0b3IsCisgICAgdWludDMyX3QgZGVzdCwgdWludDhfdCBkZXN0X21vZGUsCisgICAgdWlu dDhfdCBkZWxpdmVyeV9tb2RlLCB1aW50OF90IHRyaWdfbW9kZSkKK3sKKyAgICBzdHJ1Y3Qgdmxh cGljICp0YXJnZXQ7CisgICAgc3RydWN0IHZjcHUgKnY7CisKKyAgICBzd2l0Y2ggKCBkZWxpdmVy eV9tb2RlICkKKyAgICB7CisgICAgY2FzZSBkZXN0X0xvd2VzdFByaW86CisgICAgICAgIHRhcmdl dCA9IHZsYXBpY19sb3dlc3RfcHJpbyhkLCBOVUxMLCAwLCBkZXN0LCBkZXN0X21vZGUpOworICAg ICAgICBpZiAoIHRhcmdldCAhPSBOVUxMICkKKyAgICAgICAgeworICAgICAgICAgICAgdnZ0ZF9p bmpfaXJxKHRhcmdldCwgdmVjdG9yLCB0cmlnX21vZGUsIGRlbGl2ZXJ5X21vZGUpOworICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgVlZURF9ERUJVRyhWVlREX0RCR19JTkZP LCAibnVsbCByb3VuZCByb2JpbjogdmVjdG9yPSUwMnhcbiIsIHZlY3Rvcik7CisgICAgICAgIGJy ZWFrOworCisgICAgY2FzZSBkZXN0X0ZpeGVkOgorICAgICAgICBmb3JfZWFjaF92Y3B1ICggZCwg diApCisgICAgICAgICAgICBpZiAoIHZsYXBpY19tYXRjaF9kZXN0KHZjcHVfdmxhcGljKHYpLCBO VUxMLCAwLCBkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X21v ZGUpICkKKyAgICAgICAgICAgICAgICB2dnRkX2lual9pcnEodmNwdV92bGFwaWModiksIHZlY3Rv ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ19tb2RlLCBkZWxpdmVyeV9tb2Rl KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIGRlc3RfTk1JOgorICAgICAgICBmb3JfZWFj aF92Y3B1ICggZCwgdiApCisgICAgICAgICAgICBpZiAoIHZsYXBpY19tYXRjaF9kZXN0KHZjcHVf dmxhcGljKHYpLCBOVUxMLCAwLCBkZXN0LCBkZXN0X21vZGUpCisgICAgICAgICAgICAgICAgICYm ICF0ZXN0X2FuZF9zZXRfYm9vbCh2LT5ubWlfcGVuZGluZykgKQorICAgICAgICAgICAgICAgIHZj cHVfa2ljayh2KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBwcmlu dGsoWEVOTE9HX0dfV0FSTklORworICAgICAgICAgICAgICAgIiVwdjogVW5zdXBwb3J0ZWQgVlRE IGRlbGl2ZXJ5IG1vZGUgJWQgZm9yIERvbSVkXG4iLAorICAgICAgICAgICAgICAgY3VycmVudCwg ZGVsaXZlcnlfbW9kZSwgZC0+ZG9tYWluX2lkKTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cisg ICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBpcnFfcmVtYXBwaW5n X3JlcXVlc3RfaW5kZXgoc3RydWN0IGlycV9yZW1hcHBpbmdfcmVxdWVzdCAqaXJxKQoreworICAg IGlmICggaXJxLT50eXBlID09IFZJT01NVV9SRVFVRVNUX0lSUV9NU0kgKQorICAgIHsKKyAgICAg ICAgc3RydWN0IG1zaV9tc2dfcmVtYXBfZW50cnkgbXNpX21zZyA9IHsgeyBpcnEtPm1zZy5tc2ku YWRkciB9LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpcnEtPm1zZy5tc2kuZGF0YSB9OworCisgICAgICAgIHJldHVybiBNU0lfUkVNQVBfRU5UUllf SU5ERVgobXNpX21zZyk7CisgICAgfQorICAgIGVsc2UgaWYgKCBpcnEtPnR5cGUgPT0gVklPTU1V X1JFUVVFU1RfSVJRX0FQSUMgKQorICAgIHsKKyAgICAgICAgc3RydWN0IElPX0FQSUNfcm91dGVf cmVtYXBfZW50cnkgcmVtYXBfcnRlID0geyB7IGlycS0+bXNnLnJ0ZSB9IH07CisKKyAgICAgICAg cmV0dXJuIElPQVBJQ19SRU1BUF9FTlRSWV9JTkRFWChyZW1hcF9ydGUpOworICAgIH0KKyAgICBC VUcoKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSB1aW50MzJfdCBpcnRlX2Rl c3Qoc3RydWN0IHZ2dGQgKnZ2dGQsIHVpbnQzMl90IGRlc3QpCit7CisgICAgdWludDY0X3QgaXJ0 YTsKKworICAgIHZ2dGRfZ2V0X3JlZ19xdWFkKHZ2dGQsIERNQVJfSVJUQV9SRUcsIGlydGEpOwor ICAgIC8qIEluIHhBUElDIG1vZGUsIG9ubHkgOC1iaXRzKFsxNTo4XSkgYXJlIHZhbGlkICovCisg ICAgcmV0dXJuIERNQV9JUlRBX0VJTUUoaXJ0YSkgPyBkZXN0IDogTUFTS19FWFRSKGRlc3QsIElS VEVfeEFQSUNfREVTVF9NQVNLKTsKK30KKworc3RhdGljIGludCB2dnRkX3JlY29yZF9mYXVsdChz dHJ1Y3QgdnZ0ZCAqdnZ0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGly cV9yZW1hcHBpbmdfcmVxdWVzdCAqaXJxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgcmVhc29uKQoreworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgaW50IHZ2dGRfaGFuZGxl X2djbWRfc2lydHAoc3RydWN0IHZ2dGQgKnZ2dGQsIHVpbnQzMl90IHZhbCkKIHsKICAgICB1aW50 NjRfdCBpcnRhOwpAQCAtMjY5LDYgKzQxMSwxNDAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBodm1f bW1pb19vcHMgdnZ0ZF9tbWlvX29wcyA9IHsKICAgICAud3JpdGUgPSB2dnRkX3dyaXRlCiB9Owog CitzdGF0aWMgYm9vbCBpcl9zaWRfdmFsaWQoc3RydWN0IGlyZW1hcF9lbnRyeSAqaXJ0ZSwgdWlu dDMyX3Qgc291cmNlX2lkKQoreworICAgIHJldHVybiBUUlVFOworfQorCisvKgorICogQHJlY29y ZF9mYXVsdDogYSBmbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgd2UgbmVlZCByZWNvcmRpbmcgYSBm YXVsdAorICogd2hlbiBhIGZhdWx0IGhhcHBlbnMgZHVyaW5nIGZldGNoaW5nIHZJUlRFLiAoMSBt ZWFucyByZWNvcmRpbmcgaXQsCisgKiAwIG1lYW5zIGlnbm9yaW5nIHRoZSBmYXVsdCkuIHJlY29y ZF9mYXVsdCA9IDAgaXMgdXNlZCBpbiBwYXJzaW5nCisgKiBwcm9jZXNzIGluIHdoaWNoIG9ubHkg dGhlIGVuY29kZWQgYXR0cmlidXRlcyBpcyBjYXJlZC4KKyAqLworc3RhdGljIGludCB2dnRkX2dl dF9lbnRyeShzdHJ1Y3QgdnZ0ZCAqdnZ0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGlycV9yZW1hcHBpbmdfcmVxdWVzdCAqaXJxLAorICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgaXJlbWFwX2VudHJ5ICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBi b29sIHJlY29yZF9mYXVsdCkKK3sKKyAgICBpbnQgcmV0OworICAgIHVpbnQzMl90IGVudHJ5ID0g aXJxX3JlbWFwcGluZ19yZXF1ZXN0X2luZGV4KGlycSk7CisgICAgc3RydWN0IGlyZW1hcF9lbnRy eSAgKmlydGUsICppcnRfcGFnZTsKKworICAgIFZWVERfREVCVUcoVlZURF9EQkdfVFJBTlMsICJp bnRlcnByZXQgYSByZXF1ZXN0IHdpdGggaW5kZXggJXgiLCBlbnRyeSk7CisKKyAgICBpZiAoIGVu dHJ5ID4gdnZ0ZC0+aXJ0X21heF9lbnRyeSApCisgICAgeworICAgICAgICByZXQgPSBWVERfRlJf SVJfSU5ERVhfT1ZFUjsKKyAgICAgICAgZ290byBoYW5kbGVfZmF1bHQ7CisgICAgfQorCisgICAg cmV0ID0gbWFwX2d1ZXN0X3BhZ2UodnZ0ZC0+ZG9tYWluLCB2dnRkLT5pcnQgKyAoZW50cnkgPj4g SVJFTUFQX0VOVFJZX09SREVSKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCoqKSZp cnRfcGFnZSk7CisgICAgaWYgKCByZXQgKQorICAgIHsKKyAgICAgICAgcmV0ID0gVlREX0ZSX0lS X1JPT1RfSU5WQUw7CisgICAgICAgIGdvdG8gaGFuZGxlX2ZhdWx0OworICAgIH0KKworICAgIGly dGUgPSBpcnRfcGFnZSArIChlbnRyeSAlICgxIDw8IElSRU1BUF9FTlRSWV9PUkRFUikpOworICAg IGRlc3QtPnZhbCA9IGlydGUtPnZhbDsKKyAgICBpZiAoICFxaW52YWxfcHJlc2VudCgqaXJ0ZSkg KQorICAgIHsKKyAgICAgICAgcmV0ID0gVlREX0ZSX0lSX0VOVFJZX1A7CisgICAgICAgIGdvdG8g dW5tYXBfaGFuZGxlX2ZhdWx0OworICAgIH0KKworICAgIC8qIENoZWNrIHJlc2VydmVkIGJpdHMg Ki8KKyAgICBpZiAoIChpcnRlLT5yZW1hcC5yZXNfMSB8fCBpcnRlLT5yZW1hcC5yZXNfMiB8fCBp cnRlLT5yZW1hcC5yZXNfMyB8fAorICAgICAgICAgIGlydGUtPnJlbWFwLnJlc180KSApCisgICAg eworICAgICAgICByZXQgPSBWVERfRlJfSVJfSVJURV9SU1ZEOworICAgICAgICBnb3RvIHVubWFw X2hhbmRsZV9mYXVsdDsKKyAgICB9CisKKyAgICBpZiAoIWlyX3NpZF92YWxpZChpcnRlLCBpcnEt PnNvdXJjZV9pZCkpCisgICAgeworICAgICAgICByZXQgPSBWVERfRlJfSVJfU0lEX0VSUjsKKyAg ICAgICAgZ290byB1bm1hcF9oYW5kbGVfZmF1bHQ7CisgICAgfQorICAgIHVubWFwX2d1ZXN0X3Bh Z2UoaXJ0X3BhZ2UpOworICAgIHJldHVybiAwOworCisgdW5tYXBfaGFuZGxlX2ZhdWx0OgorICAg IHVubWFwX2d1ZXN0X3BhZ2UoaXJ0X3BhZ2UpOworIGhhbmRsZV9mYXVsdDoKKyAgICBpZiAoICFy ZWNvcmRfZmF1bHQgKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgc3dpdGNoICggcmV0ICkK KyAgICB7CisgICAgY2FzZSBWVERfRlJfSVJfU0lEX0VSUjoKKyAgICBjYXNlIFZURF9GUl9JUl9J UlRFX1JTVkQ6CisgICAgY2FzZSBWVERfRlJfSVJfRU5UUllfUDoKKyAgICAgICAgaWYgKCBxaW52 YWxfZmF1bHRfZGlzYWJsZSgqaXJ0ZSkgKQorICAgICAgICAgICAgYnJlYWs7CisgICAgLyogZmFs bCB0aHJvdWdoICovCisgICAgY2FzZSBWVERfRlJfSVJfSU5ERVhfT1ZFUjoKKyAgICBjYXNlIFZU RF9GUl9JUl9ST09UX0lOVkFMOgorICAgICAgICB2dnRkX3JlY29yZF9mYXVsdCh2dnRkLCBpcnEs IHJldCk7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgZ2RwcmludGso WEVOTE9HX0dfSU5GTywgIkNhbid0IGhhbmRsZSBWVC1kIGZhdWx0ICV4XG4iLCByZXQpOworICAg IH0KKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IHZ2dGRfaXJxX3JlcXVlc3Rfc2Fu aXR5X2NoZWNrKHN0cnVjdCB2dnRkICp2dnRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgaXJxX3JlbWFwcGluZ19yZXF1ZXN0ICppcnEpCit7CisgICAg aWYgKCBpcnEtPnR5cGUgPT0gVklPTU1VX1JFUVVFU1RfSVJRX0FQSUMgKQorICAgIHsKKyAgICAg ICAgc3RydWN0IElPX0FQSUNfcm91dGVfcmVtYXBfZW50cnkgcnRlID0geyB7IGlycS0+bXNnLnJ0 ZSB9IH07CisKKyAgICAgICAgQVNTRVJUKHJ0ZS5mb3JtYXQpOworICAgICAgICByZXR1cm4gKCFy dGUucmVzZXJ2ZWQpID8gMCA6IFZURF9GUl9JUl9SRVFfUlNWRDsKKyAgICB9CisgICAgZWxzZSBp ZiAoIGlycS0+dHlwZSA9PSBWSU9NTVVfUkVRVUVTVF9JUlFfTVNJICkKKyAgICB7CisgICAgICAg IHN0cnVjdCBtc2lfbXNnX3JlbWFwX2VudHJ5IG1zaV9tc2cgPSB7IHsgaXJxLT5tc2cubXNpLmFk ZHIgfSB9OworCisgICAgICAgIEFTU0VSVChtc2lfbXNnLmFkZHJlc3NfbG8uZm9ybWF0KTsKKyAg ICAgICAgQVNTRVJUKG1zaV9tc2cuYWRkcmVzc19sby5hZGRyX2lkX3ZhbCA9PSAweGZlZSk7Cisg ICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBCVUcoKTsKKyAgICByZXR1cm4gMDsKK30KKwor c3RhdGljIGludCB2dnRkX2hhbmRsZV9pcnFfcmVxdWVzdChzdHJ1Y3QgZG9tYWluICpkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXJxX3JlbWFwcGluZ19yZXF1 ZXN0ICppcnEpCit7CisgICAgc3RydWN0IGlyZW1hcF9lbnRyeSBpcnRlOworICAgIGludCByZXQ7 CisgICAgc3RydWN0IHZ2dGQgKnZ2dGQgPSBkb21haW5fdnZ0ZChkKTsKKworICAgIGlmICggIXZ2 dGQgfHwgIXZ2dGRfaXJxX3JlbWFwcGluZ19lbmFibGVkKHZ2dGQpICkKKyAgICAgICAgcmV0dXJu IC1FSU5WQUw7CisKKyAgICByZXQgPSB2dnRkX2lycV9yZXF1ZXN0X3Nhbml0eV9jaGVjayh2dnRk LCBpcnEpOworICAgIGlmICggcmV0ICkKKyAgICB7CisgICAgICAgIHZ2dGRfcmVjb3JkX2ZhdWx0 KHZ2dGQsIGlycSwgcmV0KTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICBpZiAo ICF2dnRkX2dldF9lbnRyeSh2dnRkLCBpcnEsICZpcnRlLCB0cnVlKSApCisgICAgeworICAgICAg ICB2dnRkX2RlbGl2ZXJ5KHZ2dGQtPmRvbWFpbiwgaXJ0ZS5yZW1hcC52ZWN0b3IsCisgICAgICAg ICAgICAgICAgICAgICAgaXJ0ZV9kZXN0KHZ2dGQsIGlydGUucmVtYXAuZHN0KSwgaXJ0ZS5yZW1h cC5kbSwKKyAgICAgICAgICAgICAgICAgICAgICBpcnRlLnJlbWFwLmRsbSwgaXJ0ZS5yZW1hcC50 bSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gLUVGQVVMVDsKK30KKwog c3RhdGljIHZvaWQgdnZ0ZF9yZXNldChzdHJ1Y3QgdnZ0ZCAqdnZ0ZCwgdWludDY0X3QgY2FwYWJp bGl0eSkKIHsKICAgICB1aW50NjRfdCBjYXAsIGVjYXA7CkBAIC0zNjIsNyArNjM4LDggQEAgc3Rh dGljIGludCB2dnRkX2Rlc3Ryb3koc3RydWN0IHZpb21tdSAqdmlvbW11KQogc3RydWN0IHZpb21t dV9vcHMgdnZ0ZF9odm1fdm14X29wcyA9IHsKICAgICAucXVlcnlfY2FwcyA9IHZ2dGRfcXVlcnlf Y2FwcywKICAgICAuY3JlYXRlID0gdnZ0ZF9jcmVhdGUsCi0gICAgLmRlc3Ryb3kgPSB2dnRkX2Rl c3Ryb3kKKyAgICAuZGVzdHJveSA9IHZ2dGRfZGVzdHJveSwKKyAgICAuaGFuZGxlX2lycV9yZXF1 ZXN0ID0gdnZ0ZF9oYW5kbGVfaXJxX3JlcXVlc3QKIH07CiAKIHN0YXRpYyBpbnQgdnZ0ZF9yZWdp c3Rlcih2b2lkKQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11 LmggYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuaAppbmRleCBmZDA0MGQwLi4x YzUzZDIyIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuaAor KysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuaApAQCAtMjQ3LDYgKzI0Nywy MSBAQAogI2RlZmluZSBkbWFfZnJjZF9zb3VyY2VfaWQoYykgKGMgJiAweGZmZmYpCiAjZGVmaW5l IGRtYV9mcmNkX3BhZ2VfYWRkcihkKSAoZCAmICgoKHU2NCktMSkgPDwgMTIpKSAvKiBsb3cgNjQg Yml0ICovCiAKK2VudW0gVlREX0ZBVUxUX1RZUEUKK3sKKyAgICAvKiBJbnRlcnJ1cHQgcmVtYXBw aW5nIHRyYW5zaXRpb24gZmF1bHRzICovCisgICAgVlREX0ZSX0lSX1JFUV9SU1ZEID0gMHgyMCwg ICAvKiBPbmUgb3IgbW9yZSBJUiByZXF1ZXN0IHJlc2VydmVkCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKiBmaWVsZHMgc2V0ICovCisgICAgVlREX0ZSX0lSX0lOREVYX09WRVIg PSAweDIxLCAvKiBJbmRleCB2YWx1ZSBncmVhdGVyIHRoYW4gbWF4ICovCisgICAgVlREX0ZSX0lS X0VOVFJZX1AgPSAweDIyLCAgICAvKiBQcmVzZW50IChQKSBub3Qgc2V0IGluIElSVEUgKi8KKyAg ICBWVERfRlJfSVJfUk9PVF9JTlZBTCA9IDB4MjMsIC8qIElSIFJvb3QgdGFibGUgaW52YWxpZCAq LworICAgIFZURF9GUl9JUl9JUlRFX1JTVkQgPSAweDI0LCAgLyogSVJURSBSc3ZkIGZpZWxkIG5v bi16ZXJvIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFByZXNlbnQg ZmxhZyBzZXQgKi8KKyAgICBWVERfRlJfSVJfUkVRX0NPTVBBVCA9IDB4MjUsIC8qIEVuY291bnRl cmVkIGNvbXBhdGlibGUgSVIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJl cXVlc3Qgd2hpbGUgZGlzYWJsZWQgKi8KKyAgICBWVERfRlJfSVJfU0lEX0VSUiA9IDB4MjYsICAg IC8qIEludmFsaWQgU291cmNlLUlEICovCit9OworCiAvKgogICogMDogUHJlc2VudAogICogMS0x MTogUmVzZXJ2ZWQKQEAgLTM4Nyw2ICs0MDIsMTIgQEAgc3RydWN0IGlyZW1hcF9lbnRyeSB7CiB9 OwogCiAvKgorICogV2hlbiBWVC1kIGRvZXNuJ3QgZW5hYmxlIEV4dGVuZGVkIEludGVycnVwdCBN b2RlLiBIYXJkd2FyZSBvbmx5IGludGVycHJldHMKKyAqIG9ubHkgOC1iaXRzIChbMTU6OF0pIG9m IERlc3RpbmF0aW9uLUlEIGZpZWxkIGluIHRoZSBJUlRFcy4KKyAqLworI2RlZmluZSBJUlRFX3hB UElDX0RFU1RfTUFTSyAweGZmMDAKKworLyoKICAqIFBvc3RlZC1pbnRlcnJ1cHQgZGVzY3JpcHRv ciBhZGRyZXNzIGlzIDY0IGJpdHMgd2l0aCA2NC1ieXRlIGFsaWduZWQsIG9ubHkKICAqIHRoZSB1 cHBlciAyNiBiaXRzIG9mIGxlc3Qgc2lnbmlmaWNpYW50IDMyIGJpdHMgaXMgYXZhaWxhYmxlLgog ICovCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvdnRkLmggYi94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvdnRkLmgKaW5kZXggYmI4ODg5Zi4uMTAzMmI0NiAxMDA2 NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3Z0ZC5oCisrKyBiL3hlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC92dGQuaApAQCAtNDcsNiArNDcsOCBAQCBzdHJ1Y3QgSU9fQVBJ Q19yb3V0ZV9yZW1hcF9lbnRyeSB7CiAgICAgfTsKIH07CiAKKyNkZWZpbmUgSU9BUElDX1JFTUFQ X0VOVFJZX0lOREVYKHgpICgoeC5pbmRleF8xNSA8PCAxNSkgKyB4LmluZGV4XzBfMTQpCisKIHN0 cnVjdCBtc2lfbXNnX3JlbWFwX2VudHJ5IHsKICAgICB1bmlvbiB7CiAgICAgICAgIHUzMiB2YWw7 CkBAIC02NSw0ICs2Nyw4IEBAIHN0cnVjdCBtc2lfbXNnX3JlbWFwX2VudHJ5IHsKICAgICB1MzIJ ZGF0YTsJCS8qIG1zaSBtZXNzYWdlIGRhdGEgKi8KIH07CiAKKyNkZWZpbmUgTVNJX1JFTUFQX0VO VFJZX0lOREVYKHgpICgoeC5hZGRyZXNzX2xvLmluZGV4XzE1IDw8IDE1KSArIFwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB4LmFkZHJlc3NfbG8uaW5kZXhfMF8xNCArIFwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeC5hZGRyZXNzX2xvLlNIViA/ICh1aW50 MTZfdCl4LmRhdGEgOiAwKSkKKwogI2VuZGlmIC8vIF9WVERfSF8KLS0gCjEuOC4zLjEKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK