From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: [PATCH v4 11/28] x86/vvtd: Process interrupt remapping request Date: Fri, 17 Nov 2017 14:22:18 +0800 Message-ID: <1510899755-40237-12-git-send-email-chao.gao@intel.com> References: <1510899755-40237-1-git-send-email-chao.gao@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1510899755-40237-1-git-send-email-chao.gao@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 , Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Ian Jackson , Tim Deegan , Jan Beulich , Andrew Cooper , Chao Gao , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org V2hlbiBhIHJlbWFwcGluZyBpbnRlcnJ1cHQgcmVxdWVzdCBhcnJpdmVzLCByZW1hcHBpbmcgaGFy ZHdhcmUgY29tcHV0ZXMgdGhlCmludGVycnVwdF9pbmRleCBwZXIgdGhlIGFsZ29yaXRobSBkZXNj cmliZWQgaW4gVlREIHNwZWMKIkludGVycnVwdCBSZW1hcHBpbmcgVGFibGUiLCBpbnRlcnByZXRz IHRoZSBJUlRFIGFuZCBnZW5lcmF0ZXMgYSByZW1hcHBlZAppbnRlcnJ1cHQgcmVxdWVzdC4KClRo aXMgcGF0Y2ggaW50cm9kdWNlcyB2aW9tbXVfaGFuZGxlX2lycV9yZXF1ZXN0KCkgdG8gZW11bGF0 ZSB0aGUgcHJvY2VzcyBob3cKcmVtYXBwaW5nIGhhcmR3YXJlIGhhbmRsZXMgYSByZW1hcHBpbmcg aW50ZXJydXB0IHJlcXVlc3QuIFRoaXMgcGF0Y2gKYWxzbyBpbnRyb2R1Y2VzIGEgY291bnRlciBp bmZsaWdodF9pbnRyLCB3aGljaCBpcyB1c2VkIHRvIGNvdW50IHRoZSBudW1iZXIKb2YgaW50ZXJy dXB0IGFyZSBiZWluZyBoYW5kbGVkLiBUaGUgcmVhc29uIHdoeSB3ZSBzaG91bGQgaGF2ZSB0aGlz CmNvdW50ZXIgaXMgVlQtZCBoYXJkd2FyZSBzaG91bGQgZHJhaW4gaW4tZmxpZ2h0IGludGVycnVw cyBiZWZvcmUgc2V0dGluZwpmbGFncyB0byBzaG93IHRoYXQgc29tZSBvcGVyYXRpb25zIGFyZSBj b21wbGV0ZWQuIFRoZXNlIG9wZXJhdGlvbnMKaW5jbHVkZSBlbmFibGluZyBpbnRlcnJ1cHQgcmVt YXBwaW5nIGFuZCBwZXJmb3JtaW5nIGEga2luZCBvZiBpbnZhbGlkYXRpb24KcmVxdWVzdHMuIElu IHZ2dGQsIHdlIGFsc28gdHJ5IHRvIGRyYWluIGluLWZsaWdodCBpbnRlcnJ1cHRzIGJ5IHdhaXRp bmcKdGhlIGluZmxpZ2h0X2ludHIgaXMgZGVjcmVhc2VkIHRvIDAuCgpTaWduZWQtb2ZmLWJ5OiBD aGFvIEdhbyA8Y2hhby5nYW9AaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBMYW4gVGlhbnl1IDx0 aWFueXUubGFuQGludGVsLmNvbT4KCi0tLQp2NDoKIC0gdXNlICIjZGVmaW5lIiB0byBkZWZpbmUg aW50ZXJydXB0IHJlbWFwcGluZyB0cmFuc2l0aW9uIGZhdWx0cwogcmF0aGVyIHRoYW4gdXNpbmcg YW4gZW51bQogLSB1c2Ugc3dpdGNoLWNhc2UgcmF0aGVyIHRoYW4gaWYtZWxzZSBpbiBpcnFfcmVt YXBwaW5nX3JlcXVlc3RfaW5kZXgoKQogYW5kIHZ2dGRfaXJxX3JlcXVlc3Rfc2FuaXR5X2NoZWNr KCkKIC0gaW50cm9kdWNlIGEgY291bnRlciBpbmZsaWdodF9pbnRyCgp2MzoKIC0gRW5jb2RlIG1h cF9ndWVzdF9wYWdlKCkncyBlcnJvciBpbnRvIHZvaWQqIHRvIGF2b2lkIHVzaW5nIGFub3RoZXIg cGFyYW1ldGVyCi0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmggfCAgMTUg KysrCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvdnZ0ZC5jICB8IDIxOSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMjM0IGluc2VydGlv bnMoKykKCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuaCBi L3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5oCmluZGV4IDljNTlhZWIuLjgyZWRk MmEgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5oCisrKyBi L3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5oCkBAIC0yMTYsNiArMjE2LDE1IEBA CiAjZGVmaW5lIGRtYV9mcmNkX3NvdXJjZV9pZChjKSAoYyAmIDB4ZmZmZikKICNkZWZpbmUgZG1h X2ZyY2RfcGFnZV9hZGRyKGQpIChkICYgKCgodTY0KS0xKSA8PCAxMikpIC8qIGxvdyA2NCBiaXQg Ki8KIAorLyogSW50ZXJydXB0IHJlbWFwcGluZyB0cmFuc2l0aW9uIGZhdWx0cyAqLworI2RlZmlu ZSBWVERfRlJfSVJfUkVRX1JTVkQgICAgICAweDIwCisjZGVmaW5lIFZURF9GUl9JUl9JTkRFWF9P VkVSICAgIDB4MjEKKyNkZWZpbmUgVlREX0ZSX0lSX0VOVFJZX1AgICAgICAgMHgyMgorI2RlZmlu ZSBWVERfRlJfSVJfUk9PVF9JTlZBTCAgICAweDIzCisjZGVmaW5lIFZURF9GUl9JUl9JUlRFX1JT VkQgICAgIDB4MjQKKyNkZWZpbmUgVlREX0ZSX0lSX1JFUV9DT01QQVQgICAgMHgyNQorI2RlZmlu ZSBWVERfRlJfSVJfU0lEX0VSUiAgICAgICAweDI2CisKIC8qCiAgKiAwOiBQcmVzZW50CiAgKiAx LTExOiBSZXNlcnZlZApAQCAtMzU2LDYgKzM2NSwxMiBAQCBzdHJ1Y3QgaXJlbWFwX2VudHJ5IHsK IH07CiAKIC8qCisgKiBXaGVuIFZULWQgZG9lc24ndCBlbmFibGUgZXh0ZW5kZWQgaW50ZXJydXB0 IG1vZGUsIGhhcmR3YXJlIGludGVycHJldHMKKyAqIDgtYml0cyAoWzE1OjhdKSBvZiBEZXN0aW5h dGlvbi1JRCBmaWVsZCBpbiB0aGUgSVJURXMuCisgKi8KKyNkZWZpbmUgSVJURV94QVBJQ19ERVNU X01BU0sgMHhmZjAwCisKKy8qCiAgKiBQb3N0ZWQtaW50ZXJydXB0IGRlc2NyaXB0b3IgYWRkcmVz cyBpcyA2NCBiaXRzIHdpdGggNjQtYnl0ZSBhbGlnbmVkLCBvbmx5CiAgKiB0aGUgdXBwZXIgMjYg Yml0cyBvZiBsZXN0IHNpZ25pZmljaWFudCAzMiBiaXRzIGlzIGF2YWlsYWJsZS4KICAqLwpkaWZm IC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3Z2dGQuYyBiL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL3Z0ZC92dnRkLmMKaW5kZXggMDZlNTIyYS4uOTI3ZTcxNSAxMDA2NDQKLS0t IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3Z2dGQuYworKysgYi94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC92dGQvdnZ0ZC5jCkBAIC0yMiwxMSArMjIsMTUgQEAKICNpbmNsdWRlIDx4ZW4v dHlwZXMuaD4KICNpbmNsdWRlIDx4ZW4vdmlvbW11Lmg+CiAjaW5jbHVkZSA8eGVuL3htYWxsb2Mu aD4KKyNpbmNsdWRlIDxhc20vYXBpYy5oPgogI2luY2x1ZGUgPGFzbS9jdXJyZW50Lmg+CisjaW5j bHVkZSA8YXNtL2V2ZW50Lmg+CisjaW5jbHVkZSA8YXNtL2lvX2FwaWMuaD4KICNpbmNsdWRlIDxh c20vaHZtL2RvbWFpbi5oPgogI2luY2x1ZGUgPGFzbS9wMm0uaD4KIAogI2luY2x1ZGUgImlvbW11 LmgiCisjaW5jbHVkZSAidnRkLmgiCiAKIC8qIFN1cHBvcnRlZCBjYXBhYmlsaXRpZXMgYnkgdnZ0 ZCAqLwogI2RlZmluZSBWVlREX01BWF9DQVBTIFZJT01NVV9DQVBfSVJRX1JFTUFQUElORwpAQCAt NTIsNiArNTYsOCBAQCBzdHJ1Y3QgdnZ0ZCB7CiAgICAgdWludDY0X3QgYmFzZV9hZGRyOwogICAg IC8qIFBvaW50IGJhY2sgdG8gdGhlIG93bmVyIGRvbWFpbiAqLwogICAgIHN0cnVjdCBkb21haW4g KmRvbWFpbjsKKyAgICAvKiAjIG9mIGluLWZsaWdodCBpbnRlcnJ1cHRzICovCisgICAgYXRvbWlj X3QgaW5mbGlnaHRfaW50cjsKIAogICAgIHN0cnVjdCBodm1faHdfdnZ0ZCBodzsKICAgICB2b2lk ICppcnRfYmFzZTsKQEAgLTE4MSw2ICsxODcsMTA5IEBAIHN0YXRpYyB2b2lkIHVubWFwX2d1ZXN0 X3BhZ2VzKHZvaWQgKnZhLCB1aW50MzJfdCBucikKICAgICAgICAgcHV0X3BhZ2VfYW5kX3R5cGUo bWZuX3RvX3BhZ2UobWZuW2ldKSk7CiB9CiAKK3N0YXRpYyBpbnQgdnZ0ZF9kZWxpdmVyeShzdHJ1 Y3QgZG9tYWluICpkLCB1aW50OF90IHZlY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50MzJfdCBkZXN0LCBib29sIGRlc3RfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50OF90IGRlbGl2ZXJ5X21vZGUsIHVpbnQ4X3QgdHJpZ19tb2RlKQoreworICAgIHN0cnVjdCB2 bGFwaWMgKnRhcmdldDsKKyAgICBzdHJ1Y3QgdmNwdSAqdjsKKworICAgIHN3aXRjaCAoIGRlbGl2 ZXJ5X21vZGUgKQorICAgIHsKKyAgICBjYXNlIGRlc3RfTG93ZXN0UHJpbzoKKyAgICAgICAgdGFy Z2V0ID0gdmxhcGljX2xvd2VzdF9wcmlvKGQsIE5VTEwsIDAsIGRlc3QsIGRlc3RfbW9kZSk7Cisg ICAgICAgIGlmICggdGFyZ2V0ICE9IE5VTEwgKQorICAgICAgICB7CisgICAgICAgICAgICB2dnRk X2RlYnVnKCJkJWQ6IGRlc3Q9diVkIGRsbT0leCB2ZWN0b3I9JWQgdHJpZ19tb2RlPSVkXG4iLAor ICAgICAgICAgICAgICAgICAgICAgICB2bGFwaWNfZG9tYWluKHRhcmdldCktPmRvbWFpbl9pZCwK KyAgICAgICAgICAgICAgICAgICAgICAgdmxhcGljX3ZjcHUodGFyZ2V0KS0+dmNwdV9pZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfbW9kZSwgdmVjdG9yLCB0cmlnX21vZGUpOwor ICAgICAgICAgICAgdmxhcGljX3NldF9pcnEodGFyZ2V0LCB2ZWN0b3IsIHRyaWdfbW9kZSk7Cisg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICB2dnRkX2RlYnVnKCJkJWQ6IG51 bGwgcm91bmQgcm9iaW46IHZlY3Rvcj0lMDJ4XG4iLAorICAgICAgICAgICAgICAgICAgIGQtPmRv bWFpbl9pZCwgdmVjdG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIGRlc3RfRml4ZWQ6 CisgICAgICAgIGZvcl9lYWNoX3ZjcHUgKCBkLCB2ICkKKyAgICAgICAgICAgIGlmICggdmxhcGlj X21hdGNoX2Rlc3QodmNwdV92bGFwaWModiksIE5VTEwsIDAsIGRlc3QsIGRlc3RfbW9kZSkgKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZ2dGRfZGVidWcoImQlZDogZGVzdD12JWQg ZGxtPSV4IHZlY3Rvcj0lZCB0cmlnX21vZGU9JWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICB2LT5kb21haW4tPmRvbWFpbl9pZCwgdi0+dmNwdV9pZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRlbGl2ZXJ5X21vZGUsIHZlY3RvciwgdHJpZ19tb2RlKTsKKyAgICAgICAgICAg ICAgICB2bGFwaWNfc2V0X2lycSh2Y3B1X3ZsYXBpYyh2KSwgdmVjdG9yLCB0cmlnX21vZGUpOwor ICAgICAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgZGVzdF9OTUk6CisgICAg ICAgIGZvcl9lYWNoX3ZjcHUgKCBkLCB2ICkKKyAgICAgICAgICAgIGlmICggdmxhcGljX21hdGNo X2Rlc3QodmNwdV92bGFwaWModiksIE5VTEwsIDAsIGRlc3QsIGRlc3RfbW9kZSkgJiYKKyAgICAg ICAgICAgICAgICAgIXRlc3RfYW5kX3NldF9ib29sKHYtPm5taV9wZW5kaW5nKSApCisgICAgICAg ICAgICAgICAgdmNwdV9raWNrKHYpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6Cisg ICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiVW5zdXBwb3J0ZWQgVlREIGRlbGl2ZXJ5 IG1vZGUgJWRcbiIsCisgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X21vZGUpOworICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyogQ29tcHV0aW5n IHRoZSBJUlRFIGluZGV4IGZvciBhIGdpdmVuIGludGVycnVwdCByZXF1ZXN0LiBXaGVuIHN1Y2Nl c3MsIHJldHVybgorICogMCBhbmQgc2V0IGluZGV4IHRvIHJlZmVyZW5jZSB0aGUgY29ycmVzcG9u ZGluZyBJUlRFLiBPdGhlcndpc2UsIHJldHVybiA8IDAsCisgKiBpLmUuIC0xIHdoZW4gdGhlIGly cSByZXF1ZXN0IGlzbid0IGFuIHJlbWFwcGluZyBmb3JtYXQuCisgKi8KK3N0YXRpYyBpbnQgaXJx X3JlbWFwcGluZ19yZXF1ZXN0X2luZGV4KAorICAgIGNvbnN0IHN0cnVjdCBhcmNoX2lycV9yZW1h cHBpbmdfcmVxdWVzdCAqaXJxLCB1aW50MzJfdCAqaW5kZXgpCit7CisgICAgc3dpdGNoICggaXJx LT50eXBlICkKKyAgICB7CisgICAgY2FzZSBWSU9NTVVfUkVRVUVTVF9JUlFfTVNJOgorICAgIHsK KyAgICAgICAgc3RydWN0IG1zaV9tc2dfcmVtYXBfZW50cnkgbXNpX21zZyA9CisgICAgICAgIHsK KyAgICAgICAgICAgIC5hZGRyZXNzX2xvID0geyAudmFsID0gaXJxLT5tc2cubXNpLmFkZHIgfSwK KyAgICAgICAgICAgIC5kYXRhID0gaXJxLT5tc2cubXNpLmRhdGEsCisgICAgICAgIH07CisKKyAg ICAgICAgaWYgKCAhbXNpX21zZy5hZGRyZXNzX2xvLmZvcm1hdCApCisgICAgICAgICAgICByZXR1 cm4gLTE7CisKKyAgICAgICAgKmluZGV4ID0gKG1zaV9tc2cuYWRkcmVzc19sby5pbmRleF8xNSA8 PCAxNSkgKworICAgICAgICAgICAgICAgIG1zaV9tc2cuYWRkcmVzc19sby5pbmRleF8wXzE0Owor ICAgICAgICBpZiAoIG1zaV9tc2cuYWRkcmVzc19sby5TSFYgKQorICAgICAgICAgICAgKmluZGV4 ICs9ICh1aW50MTZfdCltc2lfbXNnLmRhdGE7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg IGNhc2UgVklPTU1VX1JFUVVFU1RfSVJRX0FQSUM6CisgICAgeworICAgICAgICBzdHJ1Y3QgSU9f QVBJQ19yb3V0ZV9yZW1hcF9lbnRyeSByZW1hcF9ydGUgPSB7IC52YWwgPSBpcnEtPm1zZy5ydGUg fTsKKworICAgICAgICBpZiAoICFyZW1hcF9ydGUuZm9ybWF0ICkKKyAgICAgICAgICAgIHJldHVy biAtMTsKKworICAgICAgICAqaW5kZXggPSAocmVtYXBfcnRlLmluZGV4XzE1IDw8IDE1KSArIHJl bWFwX3J0ZS5pbmRleF8wXzE0OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0 OgorICAgICAgICBBU1NFUlRfVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsK K30KKworc3RhdGljIGlubGluZSB1aW50MzJfdCBpcnRlX2Rlc3Qoc3RydWN0IHZ2dGQgKnZ2dGQs IHVpbnQzMl90IGRlc3QpCit7CisgICAgLyogSW4geEFQSUMgbW9kZSwgb25seSA4LWJpdHMoWzE1 OjhdKSBhcmUgdmFsaWQgKi8KKyAgICByZXR1cm4gdnZ0ZC0+aHcuZWltX2VuYWJsZWQgPyBkZXN0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogTUFTS19FWFRSKGRlc3QsIElSVEVf eEFQSUNfREVTVF9NQVNLKTsKK30KKwogc3RhdGljIHZvaWQgd3JpdGVfZ2NtZF9pcmUoc3RydWN0 IHZ2dGQgKnZ2dGQsIHVpbnQzMl90IHZhbCkKIHsKICAgICBib29sIHNldCA9IHZhbCAmIERNQV9H Q01EX0lSRTsKQEAgLTMyMyw2ICs0MzIsMTE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaHZtX21t aW9fb3BzIHZ2dGRfbW1pb19vcHMgPSB7CiAgICAgLndyaXRlID0gdnZ0ZF93cml0ZQogfTsKIAor c3RhdGljIHZvaWQgdnZ0ZF9oYW5kbGVfZmF1bHQoc3RydWN0IHZ2dGQgKnZ2dGQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYXJjaF9pcnFfcmVtYXBwaW5nX3Jl cXVlc3QgKmlycSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpcmVtYXBf ZW50cnkgKmlydGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg ZmF1bHQpCit7CisgICAgc3dpdGNoICggZmF1bHQgKQorICAgIHsKKyAgICBjYXNlIFZURF9GUl9J Ul9TSURfRVJSOgorICAgIGNhc2UgVlREX0ZSX0lSX0lSVEVfUlNWRDoKKyAgICBjYXNlIFZURF9G Ul9JUl9FTlRSWV9QOgorICAgICAgICBpZiAoIHFpbnZhbF9mYXVsdF9kaXNhYmxlKCppcnRlKSAp CisgICAgICAgICAgICBicmVhazsKKyAgICAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICBjYXNlIFZU RF9GUl9JUl9SRVFfUlNWRDoKKyAgICBjYXNlIFZURF9GUl9JUl9JTkRFWF9PVkVSOgorICAgIGNh c2UgVlREX0ZSX0lSX1JPT1RfSU5WQUw6CisgICAgICAgIC8qIFRPRE86IGhhbmRsZSBmYXVsdCAo ZS5nLiByZWNvcmQgYW5kIHJlcG9ydCB0aGlzIGZhdWx0IHRvIFZNICovCisgICAgICAgIGJyZWFr OworCisgICAgZGVmYXVsdDoKKyAgICAgICAgdnZ0ZF9kZWJ1ZygiZCVkIGNhbid0IGhhbmRsZSBW VC1kIGZhdWx0ICV4XG4iLCB2dnRkLT5kb21haW4tPmRvbWFpbl9pZCwKKyAgICAgICAgICAgICAg ICAgICBmYXVsdCk7CisgICAgfQorICAgIHJldHVybjsKK30KKworc3RhdGljIGJvb2wgdnZ0ZF9p cnFfcmVxdWVzdF9zYW5pdHlfY2hlY2soY29uc3Qgc3RydWN0IHZ2dGQgKnZ2dGQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBhcmNoX2lycV9yZW1hcHBp bmdfcmVxdWVzdCAqaXJxKQoreworICAgIHN3aXRjaCAoIGlycS0+dHlwZSApCisgICAgeworICAg IGNhc2UgVklPTU1VX1JFUVVFU1RfSVJRX0FQSUM6CisgICAgeworICAgICAgICBzdHJ1Y3QgSU9f QVBJQ19yb3V0ZV9yZW1hcF9lbnRyeSBydGUgPSB7IC52YWwgPSBpcnEtPm1zZy5ydGUgfTsKKwor ICAgICAgICByZXR1cm4gIXJ0ZS5yZXNlcnZlZDsKKyAgICB9CisKKyAgICBjYXNlIFZJT01NVV9S RVFVRVNUX0lSUV9NU0k6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIEFTU0VS VF9VTlJFQUNIQUJMRSgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGludCB2dnRk X2dldF9lbnRyeShzdHJ1Y3QgdnZ0ZCAqdnZ0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IGFyY2hfaXJxX3JlbWFwcGluZ19yZXF1ZXN0ICppcnEsCisgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBpcmVtYXBfZW50cnkgKmRlc3QpCit7CisgICAgdWludDMy X3QgZW50cnk7CisgICAgc3RydWN0IGlyZW1hcF9lbnRyeSBpcnRlOworICAgIGludCByZXQgPSBp cnFfcmVtYXBwaW5nX3JlcXVlc3RfaW5kZXgoaXJxLCAmZW50cnkpOworCisgICAgQVNTRVJUKCFy ZXQpOworCisgICAgdnZ0ZF9kZWJ1ZygiZCVkOiBpbnRlcnByZXQgYSByZXF1ZXN0IHdpdGggaW5k ZXggJXhcbiIsCisgICAgICAgICAgICAgICB2dnRkLT5kb21haW4tPmRvbWFpbl9pZCwgZW50cnkp OworCisgICAgaWYgKCAhdnZ0ZF9pcnFfcmVxdWVzdF9zYW5pdHlfY2hlY2sodnZ0ZCwgaXJxKSAp CisgICAgICAgIHJldHVybiBWVERfRlJfSVJfUkVRX1JTVkQ7CisgICAgZWxzZSBpZiAoIGVudHJ5 ID4gdnZ0ZC0+aHcuaXJ0X21heF9lbnRyeSApCisgICAgICAgIHJldHVybiBWVERfRlJfSVJfSU5E RVhfT1ZFUjsKKyAgICBlbHNlIGlmICggIXZ2dGQtPmlydF9iYXNlICkKKyAgICAgICAgcmV0dXJu IFZURF9GUl9JUl9ST09UX0lOVkFMOworCisgICAgaXJ0ZSA9ICgoc3RydWN0IGlyZW1hcF9lbnRy eSopdnZ0ZC0+aXJ0X2Jhc2UpW2VudHJ5XTsKKworICAgIGlmICggIXFpbnZhbF9wcmVzZW50KGly dGUpICkKKyAgICAgICAgcmV0ID0gVlREX0ZSX0lSX0VOVFJZX1A7CisgICAgZWxzZSBpZiAoIChp cnRlLnJlbWFwLnJlc18xIHx8IGlydGUucmVtYXAucmVzXzIgfHwgaXJ0ZS5yZW1hcC5yZXNfMyB8 fAorICAgICAgICAgICAgICAgaXJ0ZS5yZW1hcC5yZXNfNCkgKQorICAgICAgICByZXQgPSBWVERf RlJfSVJfSVJURV9SU1ZEOworCisgICAgLyogRklYTUU6IFdlIGRvbid0IGNoZWNrIGFnYWluc3Qg dGhlIHNvdXJjZSBJRCAqLworCisgICAgZGVzdC0+dmFsID0gaXJ0ZS52YWw7CisKKyAgICByZXR1 cm4gcmV0OworfQorCitzdGF0aWMgaW50IHZ2dGRfaGFuZGxlX2lycV9yZXF1ZXN0KGNvbnN0IHN0 cnVjdCBkb21haW4gKmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCBhcmNoX2lycV9yZW1hcHBpbmdfcmVxdWVzdCAqaXJxKQoreworICAgIHN0cnVjdCBp cmVtYXBfZW50cnkgaXJ0ZTsKKyAgICBpbnQgcmV0OworICAgIHN0cnVjdCB2dnRkICp2dnRkID0g ZG9tYWluX3Z2dGQoZCk7CisKKyAgICBpZiAoICF2dnRkIHx8ICF2dnRkLT5ody5pbnRyZW1hcF9l bmFibGVkICkKKyAgICAgICAgcmV0dXJuIC1FTk9ERVY7CisKKyAgICBhdG9taWNfaW5jKCZ2dnRk LT5pbmZsaWdodF9pbnRyKTsKKyAgICByZXQgPSB2dnRkX2dldF9lbnRyeSh2dnRkLCBpcnEsICZp cnRlKTsKKyAgICBpZiAoIHJldCApCisgICAgeworICAgICAgICB2dnRkX2hhbmRsZV9mYXVsdCh2 dnRkLCBpcnEsICZpcnRlLCByZXQpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBy ZXQgPSB2dnRkX2RlbGl2ZXJ5KHZ2dGQtPmRvbWFpbiwgaXJ0ZS5yZW1hcC52ZWN0b3IsCisgICAg ICAgICAgICAgICAgICAgICAgICBpcnRlX2Rlc3QodnZ0ZCwgaXJ0ZS5yZW1hcC5kc3QpLAorICAg ICAgICAgICAgICAgICAgICAgICAgaXJ0ZS5yZW1hcC5kbSwgaXJ0ZS5yZW1hcC5kbG0sCisgICAg ICAgICAgICAgICAgICAgICAgICBpcnRlLnJlbWFwLnRtKTsKKworIG91dDoKKyAgICBhdG9taWNf ZGVjKCZ2dnRkLT5pbmZsaWdodF9pbnRyKTsKKyAgICByZXR1cm4gcmV0OworfQorCiBzdGF0aWMg dm9pZCB2dnRkX3Jlc2V0KHN0cnVjdCB2dnRkICp2dnRkKQogewogICAgIHVpbnQ2NF90IGNhcCA9 IGNhcF9zZXRfbnVtX2ZhdWx0X3JlZ3MoVlZURF9GUkNEX05VTSkKQEAgLTM4NCw2ICs2MDIsNyBA QCBzdGF0aWMgaW50IHZ2dGRfZGVzdHJveShzdHJ1Y3QgdmlvbW11ICp2aW9tbXUpCiBzdGF0aWMg Y29uc3Qgc3RydWN0IHZpb21tdV9vcHMgdnZ0ZF9odm1fdm14X29wcyA9IHsKICAgICAuY3JlYXRl ID0gdnZ0ZF9jcmVhdGUsCiAgICAgLmRlc3Ryb3kgPSB2dnRkX2Rlc3Ryb3ksCisgICAgLmhhbmRs ZV9pcnFfcmVxdWVzdCA9IHZ2dGRfaGFuZGxlX2lycV9yZXF1ZXN0LAogfTsKIAogUkVHSVNURVJf VklPTU1VKHZ2dGRfaHZtX3ZteF9vcHMpOwotLSAKMS44LjMuMQoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=