From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau =?iso-8859-1?Q?Monn=E9?= Subject: Re: [PATCH V3 15/29] x86/vvtd: Process interrupt remapping request Date: Thu, 19 Oct 2017 15:26:30 +0100 Message-ID: <20171019142630.itzer53evzrx6tyn@dhcp-3-128.uk.xensource.com> References: <1506049330-11196-1-git-send-email-tianyu.lan@intel.com> <1506049330-11196-16-git-send-email-tianyu.lan@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1506049330-11196-16-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: Lan Tianyu Cc: tim@xen.org, kevin.tian@intel.com, sstabellini@kernel.org, wei.liu2@citrix.com, konrad.wilk@oracle.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, xen-devel@lists.xen.org, jbeulich@suse.com, Chao Gao List-Id: xen-devel@lists.xenproject.org T24gVGh1LCBTZXAgMjEsIDIwMTcgYXQgMTE6MDE6NTZQTSAtMDQwMCwgTGFuIFRpYW55dSB3cm90 ZToKPiBGcm9tOiBDaGFvIEdhbyA8Y2hhby5nYW9AaW50ZWwuY29tPgo+IAo+IFdoZW4gYSByZW1h cHBpbmcgaW50ZXJydXB0IHJlcXVlc3QgYXJyaXZlcywgcmVtYXBwaW5nIGhhcmR3YXJlIGNvbXB1 dGVzIHRoZQo+IGludGVycnVwdF9pbmRleCBwZXIgdGhlIGFsZ29yaXRobSBkZXNjcmliZWQgaW4g VlREIHNwZWMKPiAiSW50ZXJydXB0IFJlbWFwcGluZyBUYWJsZSIsIGludGVycHJldHMgdGhlIElS VEUgYW5kIGdlbmVyYXRlcyBhIHJlbWFwcGVkCj4gaW50ZXJydXB0IHJlcXVlc3QuCj4gCj4gVGhp cyBwYXRjaCBpbnRyb2R1Y2VzIHZpb21tdV9oYW5kbGVfaXJxX3JlcXVlc3QoKSB0byBlbXVsYXRl IHRoZSBwcm9jZXNzIGhvdwo+IHJlbWFwcGluZyBoYXJkd2FyZSBoYW5kbGVzIGEgcmVtYXBwaW5n IGludGVycnVwdCByZXF1ZXN0Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IENoYW8gR2FvIDxjaGFvLmdh b0BpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogTGFuIFRpYW55dSA8dGlhbnl1LmxhbkBpbnRl bC5jb20+Cj4gCj4gLS0tCj4gdjM6Cj4gIC0gRW5jb2RlIG1hcF9ndWVzdF9wYWdlKCkncyBlcnJv ciBpbnRvIHZvaWQqIHRvIGF2b2lkIHVzaW5nIGFub3RoZXIgcGFyYW1ldGVyCj4gLS0tCj4gIHhl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5oIHwgIDIxICsrKwo+ICB4ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC92dGQvdnZ0ZC5jICB8IDI2NCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAyODQgaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9t bXUuaCBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5oCj4gaW5kZXggNzAzNzI2 Zi4uNzkwMzg0ZiAxMDA2NDQKPiAtLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9t bXUuaAo+ICsrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5oCj4gQEAgLTIx OCw2ICsyMTgsMjEgQEAKPiAgI2RlZmluZSBkbWFfZnJjZF9zb3VyY2VfaWQoYykgKGMgJiAweGZm ZmYpCj4gICNkZWZpbmUgZG1hX2ZyY2RfcGFnZV9hZGRyKGQpIChkICYgKCgodTY0KS0xKSA8PCAx MikpIC8qIGxvdyA2NCBiaXQgKi8KPiAgCj4gK2VudW0gVlREX0ZBVUxUX1RZUEUKPiArewo+ICsg ICAgLyogSW50ZXJydXB0IHJlbWFwcGluZyB0cmFuc2l0aW9uIGZhdWx0cyAqLwo+ICsgICAgVlRE X0ZSX0lSX1JFUV9SU1ZEICAgICAgPSAweDIwLCAvKiBPbmUgb3IgbW9yZSBJUiByZXF1ZXN0IHJl c2VydmVkCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGZpZWxkcyBz ZXQgKi8KPiArICAgIFZURF9GUl9JUl9JTkRFWF9PVkVSICAgID0gMHgyMSwgLyogSW5kZXggdmFs dWUgZ3JlYXRlciB0aGFuIG1heCAqLwo+ICsgICAgVlREX0ZSX0lSX0VOVFJZX1AgICAgICAgPSAw eDIyLCAvKiBQcmVzZW50IChQKSBub3Qgc2V0IGluIElSVEUgKi8KPiArICAgIFZURF9GUl9JUl9S T09UX0lOVkFMICAgID0gMHgyMywgLyogSVIgUm9vdCB0YWJsZSBpbnZhbGlkICovCj4gKyAgICBW VERfRlJfSVJfSVJURV9SU1ZEICAgICA9IDB4MjQsIC8qIElSVEUgUnN2ZCBmaWVsZCBub24temVy byB3aXRoCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFByZXNlbnQg ZmxhZyBzZXQgKi8KPiArICAgIFZURF9GUl9JUl9SRVFfQ09NUEFUICAgID0gMHgyNSwgLyogRW5j b3VudGVyZWQgY29tcGF0aWJsZSBJUgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKiByZXF1ZXN0IHdoaWxlIGRpc2FibGVkICovCj4gKyAgICBWVERfRlJfSVJfU0lEX0VS UiAgICAgICA9IDB4MjYsIC8qIEludmFsaWQgU291cmNlLUlEICovCj4gK307CgpXaHkgZG9lcyB0 aGlzIG5lZWQgdG8gYmUgYW4gZW51bT8gUGx1cyBlbnVtIHR5cGUgbmFtZXMgc2hvdWxkIG5vdCBi ZQphbGwgaW4gdXBwZXJjYXNlLgoKSW4gYW55IGNhc2UsIEkgd291bGQganVzdCB1c2UgZGVmaW5l cywgbGlrZSBpdCdzIGRvbmUgZm9yIGFsbCBvdGhlcgp2YWx1ZXMgaW4gdGhlIGZpbGUuCgo+ICsK PiAgLyoKPiAgICogMDogUHJlc2VudAo+ICAgKiAxLTExOiBSZXNlcnZlZAo+IEBAIC0zNTgsNiAr MzczLDEyIEBAIHN0cnVjdCBpcmVtYXBfZW50cnkgewo+ICB9Owo+ICAKPiAgLyoKPiArICogV2hl biBWVC1kIGRvZXNuJ3QgZW5hYmxlIEV4dGVuZGVkIEludGVycnVwdCBNb2RlLiBIYXJkd2FyZSBv bmx5IGludGVycHJldHMKPiArICogb25seSA4LWJpdHMgKFsxNTo4XSkgb2YgRGVzdGluYXRpb24t SUQgZmllbGQgaW4gdGhlIElSVEVzLgo+ICsgKi8KPiArI2RlZmluZSBJUlRFX3hBUElDX0RFU1Rf TUFTSyAweGZmMDAKPiArCj4gKy8qCj4gICAqIFBvc3RlZC1pbnRlcnJ1cHQgZGVzY3JpcHRvciBh ZGRyZXNzIGlzIDY0IGJpdHMgd2l0aCA2NC1ieXRlIGFsaWduZWQsIG9ubHkKPiAgICogdGhlIHVw cGVyIDI2IGJpdHMgb2YgbGVzdCBzaWduaWZpY2lhbnQgMzIgYml0cyBpcyBhdmFpbGFibGUuCj4g ICAqLwo+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvdnZ0ZC5jIGIv eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3Z2dGQuYwo+IGluZGV4IGEwZjYzZTkuLjkwYzAw ZjUgMTAwNjQ0Cj4gLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3Z2dGQuYwo+ICsr KyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC92dnRkLmMKPiBAQCAtMjMsMTEgKzIzLDE3 IEBACj4gICNpbmNsdWRlIDx4ZW4vdHlwZXMuaD4KPiAgI2luY2x1ZGUgPHhlbi92aW9tbXUuaD4K PiAgI2luY2x1ZGUgPHhlbi94bWFsbG9jLmg+Cj4gKyNpbmNsdWRlIDxhc20vYXBpYy5oPgo+ICAj aW5jbHVkZSA8YXNtL2N1cnJlbnQuaD4KPiArI2luY2x1ZGUgPGFzbS9ldmVudC5oPgo+ICAjaW5j bHVkZSA8YXNtL2h2bS9kb21haW4uaD4KPiArI2luY2x1ZGUgPGFzbS9pb19hcGljLmg+Cj4gICNp bmNsdWRlIDxhc20vcGFnZS5oPgo+ICsjaW5jbHVkZSA8YXNtL3AybS5oPgo+ICsjaW5jbHVkZSA8 YXNtL3Zpb21tdS5oPgo+ICAKPiAgI2luY2x1ZGUgImlvbW11LmgiCj4gKyNpbmNsdWRlICJ2dGQu aCIKPiAgCj4gIC8qIFN1cHBvcnRlZCBjYXBhYmlsaXRpZXMgYnkgdnZ0ZCAqLwo+ICB1bnNpZ25l ZCBpbnQgdnZ0ZF9jYXBzID0gVklPTU1VX0NBUF9JUlFfUkVNQVBQSU5HOwo+IEBAIC0xMTEsNiAr MTE3LDEzMiBAQCBzdGF0aWMgaW5saW5lIHVpbnQ2NF90IHZ2dGRfZ2V0X3JlZ19xdWFkKHN0cnVj dCB2dnRkICp2dGQsIHVpbnQzMl90IHJlZykKPiAgICAgIHJldHVybiB2dGQtPnJlZ3MtPmRhdGE2 NFtyZWcvc2l6ZW9mKHVpbnQ2NF90KV07Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkKiBtYXBfZ3Vl c3RfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1aW50NjRfdCBnZm4pCgpnZm5fdCBzZWVtcyBsaWtl IGEgYmV0dGVyIHR5cGUgdGhlbiB1aW50NjRfdC4KCj4gK3sKPiArICAgIHN0cnVjdCBwYWdlX2lu Zm8gKnA7Cj4gKyAgICB2b2lkICpyZXQ7Cj4gKwo+ICsgICAgcCA9IGdldF9wYWdlX2Zyb21fZ2Zu KGQsIGdmbiwgTlVMTCwgUDJNX0FMTE9DKTsKCllvdSBjYW4gZG8gdGhlIGluaXRpYWxpemF0aW9u IG9mIHAgYXQgZGVjbGFyYXRpb24uCgo+ICsgICAgaWYgKCAhcCApCj4gKyAgICAgICAgcmV0dXJu IEVSUl9QVFIoLUVJTlZBTCk7Cj4gKwo+ICsgICAgaWYgKCAhZ2V0X3BhZ2VfdHlwZShwLCBQR1Rf d3JpdGFibGVfcGFnZSkgKQo+ICsgICAgewo+ICsgICAgICAgIHB1dF9wYWdlKHApOwo+ICsgICAg ICAgIHJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ICsgICAgfQo+ICsKPiArICAgIHJldCA9IF9f bWFwX2RvbWFpbl9wYWdlX2dsb2JhbChwKTsKPiArICAgIGlmICggIXJldCApCj4gKyAgICB7Cj4g KyAgICAgICAgcHV0X3BhZ2VfYW5kX3R5cGUocCk7Cj4gKyAgICAgICAgcmV0dXJuIEVSUl9QVFIo LUVOT01FTSk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgdW5tYXBfZ3Vlc3RfcGFnZSh2b2lkICp2aXJ0KQo+ICt7Cj4gKyAgICBzdHJ1Y3Qg cGFnZV9pbmZvICpwYWdlOwo+ICsKPiArICAgIEFTU0VSVCgodW5zaWduZWQgbG9uZyl2aXJ0ICYg UEFHRV9NQVNLKTsKCkknbSBub3Qgc3VyZSBJIGdldCB0aGUgcG9pbnQgb2YgdGhlIGNoZWNrIGFi b3ZlLgoKPiArICAgIHBhZ2UgPSBtZm5fdG9fcGFnZShkb21haW5fcGFnZV9tYXBfdG9fbWZuKHZp cnQpKTsKPiArCj4gKyAgICB1bm1hcF9kb21haW5fcGFnZV9nbG9iYWwodmlydCk7Cj4gKyAgICBw dXRfcGFnZV9hbmRfdHlwZShwYWdlKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdnZ0ZF9pbmpf aXJxKHN0cnVjdCB2bGFwaWMgKnRhcmdldCwgdWludDhfdCB2ZWN0b3IsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50OF90IHRyaWdfbW9kZSwgdWludDhfdCBkZWxpdmVyeV9tb2RlKQo+ ICt7Cj4gKyAgICB2dnRkX2RlYnVnKCJkZXN0PXYlZCwgZGVsaXZlcnlfbW9kZT0leCB2ZWN0b3I9 JWQgdHJpZ19tb2RlPSVkXG4iLAo+ICsgICAgICAgICAgICAgICB2bGFwaWNfdmNwdSh0YXJnZXQp LT52Y3B1X2lkLCBkZWxpdmVyeV9tb2RlLCB2ZWN0b3IsIHRyaWdfbW9kZSk7Cj4gKwo+ICsgICAg QVNTRVJUKChkZWxpdmVyeV9tb2RlID09IGRlc3RfRml4ZWQpIHx8Cj4gKyAgICAgICAgICAgKGRl bGl2ZXJ5X21vZGUgPT0gZGVzdF9Mb3dlc3RQcmlvKSk7Cj4gKwo+ICsgICAgdmxhcGljX3NldF9p cnEodGFyZ2V0LCB2ZWN0b3IsIHRyaWdfbW9kZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdnZ0 ZF9kZWxpdmVyeShzdHJ1Y3QgZG9tYWluICpkLCB1aW50OF90IHZlY3RvciwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90IGRlc3QsIHVpbnQ4X3QgZGVzdF9tb2RlLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBkZWxpdmVyeV9tb2RlLCB1aW50OF90IHRyaWdf bW9kZSkKPiArewo+ICsgICAgc3RydWN0IHZsYXBpYyAqdGFyZ2V0Owo+ICsgICAgc3RydWN0IHZj cHUgKnY7Cj4gKwo+ICsgICAgc3dpdGNoICggZGVsaXZlcnlfbW9kZSApCj4gKyAgICB7Cj4gKyAg ICBjYXNlIGRlc3RfTG93ZXN0UHJpbzoKPiArICAgICAgICB0YXJnZXQgPSB2bGFwaWNfbG93ZXN0 X3ByaW8oZCwgTlVMTCwgMCwgZGVzdCwgZGVzdF9tb2RlKTsKPiArICAgICAgICBpZiAoIHRhcmdl dCAhPSBOVUxMICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIHZ2dGRfaW5qX2lycSh0YXJn ZXQsIHZlY3RvciwgdHJpZ19tb2RlLCBkZWxpdmVyeV9tb2RlKTsKPiArICAgICAgICAgICAgYnJl YWs7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIHZ2dGRfZGVidWcoIm51bGwgcm91bmQgcm9iaW46 IHZlY3Rvcj0lMDJ4XG4iLCB2ZWN0b3IpOwo+ICsgICAgICAgIGJyZWFrOwo+ICsKPiArICAgIGNh c2UgZGVzdF9GaXhlZDoKPiArICAgICAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiApCj4gKyAgICAg ICAgICAgIGlmICggdmxhcGljX21hdGNoX2Rlc3QodmNwdV92bGFwaWModiksIE5VTEwsIDAsIGRl c3QsIGRlc3RfbW9kZSkgKQo+ICsgICAgICAgICAgICAgICAgdnZ0ZF9pbmpfaXJxKHZjcHVfdmxh cGljKHYpLCB2ZWN0b3IsIHRyaWdfbW9kZSwgZGVsaXZlcnlfbW9kZSk7Cj4gKyAgICAgICAgYnJl YWs7Cj4gKwo+ICsgICAgY2FzZSBkZXN0X05NSToKPiArICAgICAgICBmb3JfZWFjaF92Y3B1ICgg ZCwgdiApCj4gKyAgICAgICAgICAgIGlmICggdmxhcGljX21hdGNoX2Rlc3QodmNwdV92bGFwaWMo diksIE5VTEwsIDAsIGRlc3QsIGRlc3RfbW9kZSkgJiYKPiArICAgICAgICAgICAgICAgICAhdGVz dF9hbmRfc2V0X2Jvb2wodi0+bm1pX3BlbmRpbmcpICkKPiArICAgICAgICAgICAgICAgIHZjcHVf a2ljayh2KTsKPiArICAgICAgICBicmVhazsKPiArCj4gKyAgICBkZWZhdWx0Ogo+ICsgICAgICAg IGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiVW5zdXBwb3J0ZWQgVlREIGRlbGl2ZXJ5IG1vZGUg JWRcbiIsCj4gKyAgICAgICAgICAgICAgICAgZGVsaXZlcnlfbW9kZSk7Cj4gKyAgICAgICAgcmV0 dXJuIC1FSU5WQUw7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyB1aW50MzJfdCBpcnFfcmVtYXBwaW5nX3JlcXVlc3RfaW5kZXgoCj4gKyAgICBjb25zdCBz dHJ1Y3QgYXJjaF9pcnFfcmVtYXBwaW5nX3JlcXVlc3QgKmlycSkKPiArewo+ICsgICAgaWYgKCBp cnEtPnR5cGUgPT0gVklPTU1VX1JFUVVFU1RfSVJRX01TSSApCj4gKyAgICB7Cj4gKyAgICAgICAg dWludDMyX3QgaW5kZXg7Cj4gKyAgICAgICAgc3RydWN0IG1zaV9tc2dfcmVtYXBfZW50cnkgbXNp X21zZyA9Cj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICAuYWRkcmVzc19sbyA9IHsgLnZhbCA9 IGlycS0+bXNnLm1zaS5hZGRyIH0sCj4gKyAgICAgICAgICAgIC5kYXRhID0gaXJxLT5tc2cubXNp LmRhdGEsCj4gKyAgICAgICAgfTsKPiArCj4gKyAgICAgICAgaW5kZXggPSAobXNpX21zZy5hZGRy ZXNzX2xvLmluZGV4XzE1IDw8IDE1KSArCj4gKyAgICAgICAgICAgICAgICBtc2lfbXNnLmFkZHJl c3NfbG8uaW5kZXhfMF8xNDsKPiArICAgICAgICBpZiAoIG1zaV9tc2cuYWRkcmVzc19sby5TSFYg KQo+ICsgICAgICAgICAgICBpbmRleCArPSAodWludDE2X3QpbXNpX21zZy5kYXRhOwo+ICsKPiAr ICAgICAgICByZXR1cm4gaW5kZXg7Cj4gKyAgICB9Cj4gKyAgICBlbHNlIGlmICggaXJxLT50eXBl ID09IFZJT01NVV9SRVFVRVNUX0lSUV9BUElDICkKPiArICAgIHsKPiArICAgICAgICBzdHJ1Y3Qg SU9fQVBJQ19yb3V0ZV9yZW1hcF9lbnRyeSByZW1hcF9ydGUgPSB7IC52YWwgPSBpcnEtPm1zZy5y dGUgfTsKPiArCj4gKyAgICAgICAgcmV0dXJuIChyZW1hcF9ydGUuaW5kZXhfMTUgPDwgMTUpICsg cmVtYXBfcnRlLmluZGV4XzBfMTQ7Cj4gKyAgICB9CgpJTUhPIGEgc3dpdGNoIHdpdGggYSBzaW5n bGUgcmV0dXJuIHdvdWxkIGJlIGJldHRlciBoZXJlOgoKdWludDMyX3QgaW5kZXggPSAwOwoKc3dp dGNoICggaXJxLT50eXBlICkKewpjYXNlIC4uLjoKICAgIGluZGV4ID0gLi4uOwogICAgYnJlYWs7 Cn0KCnJldHVybiBpbmRleDsKCj4gKyAgICBBU1NFUlRfVU5SRUFDSEFCTEUoKTsKPiArCj4gKyAg ICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB1aW50MzJfdCBpcnRlX2Rlc3Qo c3RydWN0IHZ2dGQgKnZ2dGQsIHVpbnQzMl90IGRlc3QpCj4gK3sKPiArICAgIC8qIEluIHhBUElD IG1vZGUsIG9ubHkgOC1iaXRzKFsxNTo4XSkgYXJlIHZhbGlkICovCj4gKyAgICByZXR1cm4gdnZ0 ZC0+c3RhdHVzLmVpbV9lbmFibGVkID8gZGVzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA6IE1BU0tfRVhUUihkZXN0LCBJUlRFX3hBUElDX0RFU1RfTUFTSyk7CgpJdCdz IGVhc2llciB0byByZWFkIHN0eWxlIHdpc2UuCgo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZCB2dnRk X2hhbmRsZV9nY21kX2lyZShzdHJ1Y3QgdnZ0ZCAqdnZ0ZCwgdWludDMyX3QgdmFsKQo+ICB7Cj4g ICAgICB2dnRkX2luZm8oIiVzYWJsZSBJbnRlcnJ1cHQgUmVtYXBwaW5nIiwKPiBAQCAtMjU1LDYg KzM4NywxMzUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBodm1fbW1pb19vcHMgdnZ0ZF9tbWlvX29w cyA9IHsKPiAgICAgIC53cml0ZSA9IHZ2dGRfd3JpdGUKPiAgfTsKPiAgCj4gK3N0YXRpYyB2b2lk IHZ2dGRfaGFuZGxlX2ZhdWx0KHN0cnVjdCB2dnRkICp2dnRkLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgYXJjaF9pcnFfcmVtYXBwaW5nX3JlcXVlc3QgKmlycSwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlyZW1hcF9lbnRyeSAqaXJ0ZSwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZhdWx0LAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlY29yZF9mYXVsdCkKPiArewo+ICsg ICBpZiAoICFyZWNvcmRfZmF1bHQgKQo+ICsgICAgICAgIHJldHVybjsKPiArCj4gKyAgICBzd2l0 Y2ggKCBmYXVsdCApCj4gKyAgICB7Cj4gKyAgICBjYXNlIFZURF9GUl9JUl9TSURfRVJSOgo+ICsg ICAgY2FzZSBWVERfRlJfSVJfSVJURV9SU1ZEOgo+ICsgICAgY2FzZSBWVERfRlJfSVJfRU5UUllf UDoKPiArICAgICAgICBpZiAoIHFpbnZhbF9mYXVsdF9kaXNhYmxlKCppcnRlKSApCj4gKyAgICAg ICAgICAgIGJyZWFrOwo+ICsgICAgLyogZmFsbCB0aHJvdWdoICovCj4gKyAgICBjYXNlIFZURF9G Ul9JUl9JTkRFWF9PVkVSOgo+ICsgICAgY2FzZSBWVERfRlJfSVJfUk9PVF9JTlZBTDoKPiArICAg ICAgICAvKiBUT0RPOiBoYW5kbGUgZmF1bHQgKGUuZy4gcmVjb3JkIGFuZCByZXBvcnQgdGhpcyBm YXVsdCB0byBWTSAqLwo+ICsgICAgICAgIGJyZWFrOwo+ICsKPiArICAgIGRlZmF1bHQ6Cj4gKyAg ICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sICJDYW4ndCBoYW5kbGUgVlQtZCBmYXVsdCAleFxu IiwgZmF1bHQpOwoKWW91IGFscmVhZHkgZGVmaW5lZCBzb21lIHZ2dGQgc3BlY2lmaWMgZGVidWcg aGVscGVycywgd2h5IGFyZSB0aG9zZQpub3QgdXNlZCBoZXJlPyBnZHByaW50ayAoYXMgdGhlICdk JyBkZW5vdGVzKSBpcyBvbmx5IGZvciBkZWJ1ZwpwdXJwb3Nlcy4KCj4gKyAgICB9Cj4gKyAgICBy ZXR1cm47Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIHZ2dGRfaXJxX3JlcXVlc3Rfc2FuaXR5X2No ZWNrKGNvbnN0IHN0cnVjdCB2dnRkICp2dnRkLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgYXJjaF9pcnFfcmVtYXBwaW5nX3JlcXVlc3QgKmlycSkK PiArewo+ICsgICAgaWYgKCBpcnEtPnR5cGUgPT0gVklPTU1VX1JFUVVFU1RfSVJRX0FQSUMgKQo+ ICsgICAgewo+ICsgICAgICAgIHN0cnVjdCBJT19BUElDX3JvdXRlX3JlbWFwX2VudHJ5IHJ0ZSA9 IHsgLnZhbCA9IGlycS0+bXNnLnJ0ZSB9Owo+ICsKPiArICAgICAgICBBU1NFUlQocnRlLmZvcm1h dCk7CgpJcyBpdCBmaW5lIHRvIEFTU0VSVCBoZXJlPyBDYW4ndCB0aGUgZ3Vlc3Qgc2V0IHJ0ZS5m b3JtYXQgdG8gd2hhdGV2ZXIKaXQgd2FudHM/Cgo+ICsgICAgICAgIHJldHVybiAhIXJ0ZS5yZXNl cnZlZDsKPiArICAgIH0KPiArICAgIGVsc2UgaWYgKCBpcnEtPnR5cGUgPT0gVklPTU1VX1JFUVVF U1RfSVJRX01TSSApCj4gKyAgICB7Cj4gKyAgICAgICAgc3RydWN0IG1zaV9tc2dfcmVtYXBfZW50 cnkgbXNpX21zZyA9Cj4gKyAgICAgICAgeyAuYWRkcmVzc19sbyA9IHsgLnZhbCA9IGlycS0+bXNn Lm1zaS5hZGRyIH0gfTsKPiArCj4gKyAgICAgICAgQVNTRVJUKG1zaV9tc2cuYWRkcmVzc19sby5m b3JtYXQpOwo+ICsgICAgICAgIHJldHVybiAwOwo+ICsgICAgfQo+ICsgICAgQVNTRVJUX1VOUkVB Q0hBQkxFKCk7CgpBZ2FpbiBJIHRoaW5rIGEgc3dpdGNoIHdvdWxkIGJlIGJldHRlciBoZXJlLgoK PiArCj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArLyoKPiArICogJ3JlY29yZF9mYXVsdCcg aXMgYSBmbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgd2UgbmVlZCByZWNvcmRpbmcgYSBmYXVsdAo+ ICsgKiBhbmQgbm90aWZ5aW5nIGd1ZXN0IHdoZW4gYSBmYXVsdCBoYXBwZW5zIGR1cmluZyBmZXRj aGluZyB2SVJURS4KPiArICovCj4gK3N0YXRpYyBpbnQgdnZ0ZF9nZXRfZW50cnkoc3RydWN0IHZ2 dGQgKnZ2dGQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFyY2hfaXJxX3Jl bWFwcGluZ19yZXF1ZXN0ICppcnEsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGlyZW1hcF9lbnRyeSAqZGVzdCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJl Y29yZF9mYXVsdCkKPiArewo+ICsgICAgdWludDMyX3QgZW50cnkgPSBpcnFfcmVtYXBwaW5nX3Jl cXVlc3RfaW5kZXgoaXJxKTsKPiArICAgIHN0cnVjdCBpcmVtYXBfZW50cnkgICppcnRlLCAqaXJ0 X3BhZ2U7Cj4gKwo+ICsgICAgdnZ0ZF9kZWJ1ZygiaW50ZXJwcmV0IGEgcmVxdWVzdCB3aXRoIGlu ZGV4ICV4XG4iLCBlbnRyeSk7Cj4gKwo+ICsgICAgaWYgKCB2dnRkX2lycV9yZXF1ZXN0X3Nhbml0 eV9jaGVjayh2dnRkLCBpcnEpICkKPiArICAgIHsKPiArICAgICAgICB2dnRkX2hhbmRsZV9mYXVs dCh2dnRkLCBpcnEsIE5VTEwsIFZURF9GUl9JUl9SRVFfUlNWRCwgcmVjb3JkX2ZhdWx0KTsKPiAr ICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoIGVudHJ5ID4g dnZ0ZC0+c3RhdHVzLmlydF9tYXhfZW50cnkgKQo+ICsgICAgewo+ICsgICAgICAgIHZ2dGRfaGFu ZGxlX2ZhdWx0KHZ2dGQsIGlycSwgTlVMTCwgVlREX0ZSX0lSX0lOREVYX09WRVIsIHJlY29yZF9m YXVsdCk7Cj4gKyAgICAgICAgcmV0dXJuIC1FQUNDRVM7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaXJ0 X3BhZ2UgPSBtYXBfZ3Vlc3RfcGFnZSh2dnRkLT5kb21haW4sCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZ2dGQtPnN0YXR1cy5pcnQgKyAoZW50cnkgPj4gSVJFTUFQX0VOVFJZX09S REVSKSk7CgpTaW5jZSBBRkFJQ1QgeW91IGhhdmUgdG8gcmVhZCB0aGlzIHBhZ2UocykgZXZlcnkg dGltZSBhbiBpbnRlcnJ1cHQKbmVlZHMgdG8gYmUgZGVsaXZlcmVkLCB3b3VsZG4ndCBpdCBtYWtl IHNlbnNlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zCnRvIGhhdmUgdGhlIHBhZ2UgcGVybWFuZW50 bHkgbWFwcGVkPwoKV2hhdCdzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwYWdlcyB0aGF0IGNhbiBi ZSB1c2VkIGhlcmU/Cgo+ICsgICAgaWYgKCBJU19FUlIoaXJ0X3BhZ2UpICkKPiArICAgIHsKPiAr ICAgICAgICB2dnRkX2hhbmRsZV9mYXVsdCh2dnRkLCBpcnEsIE5VTEwsIFZURF9GUl9JUl9ST09U X0lOVkFMLCByZWNvcmRfZmF1bHQpOwo+ICsgICAgICAgIHJldHVybiBQVFJfRVJSKGlydF9wYWdl KTsKPiArICAgIH0KPiArCj4gKyAgICBpcnRlID0gaXJ0X3BhZ2UgKyAoZW50cnkgJSAoMSA8PCBJ UkVNQVBfRU5UUllfT1JERVIpKTsKPiArICAgIGRlc3QtPnZhbCA9IGlydGUtPnZhbDsKCk5vdCB0 aGF0IGl0IG1hdHRlcnMgbXVjaCwgYnV0IGZvciBjb2hlcmVuY3kgcmVhc29ucyBJIHdvdWxkIG9u bHkgc2V0CmRlc3QtPnZhbCBhZnRlciBhbGwgdGhlIGNoZWNrcyBoYXZlIGJlZW4gcGVyZm9ybWVk LgoKPiArICAgIGlmICggIXFpbnZhbF9wcmVzZW50KCppcnRlKSApCj4gKyAgICB7Cj4gKyAgICAg ICAgdnZ0ZF9oYW5kbGVfZmF1bHQodnZ0ZCwgaXJxLCBOVUxMLCBWVERfRlJfSVJfRU5UUllfUCwg cmVjb3JkX2ZhdWx0KTsKPiArICAgICAgICB1bm1hcF9ndWVzdF9wYWdlKGlydF9wYWdlKTsKPiAr ICAgICAgICByZXR1cm4gLUVOT0VOVDsKPiArICAgIH0KPiArCj4gKyAgICAvKiBDaGVjayByZXNl cnZlZCBiaXRzICovCj4gKyAgICBpZiAoIChpcnRlLT5yZW1hcC5yZXNfMSB8fCBpcnRlLT5yZW1h cC5yZXNfMiB8fCBpcnRlLT5yZW1hcC5yZXNfMyB8fAo+ICsgICAgICAgICAgaXJ0ZS0+cmVtYXAu cmVzXzQpICkKPiArICAgIHsKPiArICAgICAgICB2dnRkX2hhbmRsZV9mYXVsdCh2dnRkLCBpcnEs IE5VTEwsIFZURF9GUl9JUl9JUlRFX1JTVkQsIHJlY29yZF9mYXVsdCk7Cj4gKyAgICAgICAgdW5t YXBfZ3Vlc3RfcGFnZShpcnRfcGFnZSk7Cj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gKyAg ICB9Cj4gKwo+ICsgICAgLyogRklYTUU6IFdlIGRvbid0IGNoZWNrIGFnYWluc3QgdGhlIHNvdXJj ZSBJRCAqLwo+ICsgICAgdW5tYXBfZ3Vlc3RfcGFnZShpcnRfcGFnZSk7Cj4gKwo+ICsgICAgcmV0 dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdnZ0ZF9oYW5kbGVfaXJxX3JlcXVlc3Qoc3Ry dWN0IGRvbWFpbiAqZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgYXJjaF9pcnFfcmVtYXBwaW5nX3JlcXVlc3QgKmlycSkKPiArewo+ICsgICAgc3RydWN0IGly ZW1hcF9lbnRyeSBpcnRlOwo+ICsgICAgaW50IHJldDsKPiArICAgIHN0cnVjdCB2dnRkICp2dnRk ID0gZG9tYWluX3Z2dGQoZCk7Cj4gKwo+ICsgICAgaWYgKCAhdnZ0ZCB8fCAhdnZ0ZC0+c3RhdHVz LmludHJlbWFwX2VuYWJsZWQgKQo+ICsgICAgICAgIHJldHVybiAtRU5PREVWOwo+ICsKPiArICAg IHJldCA9IHZ2dGRfZ2V0X2VudHJ5KHZ2dGQsIGlycSwgJmlydGUsIHRydWUpOwo+ICsgICAgaWYg KCByZXQgKQo+ICsgICAgICAgIHJldHVybiByZXQ7Cj4gKwo+ICsgICAgcmV0dXJuIHZ2dGRfZGVs aXZlcnkodnZ0ZC0+ZG9tYWluLCBpcnRlLnJlbWFwLnZlY3RvciwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgIGlydGVfZGVzdCh2dnRkLCBpcnRlLnJlbWFwLmRzdCksCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICBpcnRlLnJlbWFwLmRtLCBpcnRlLnJlbWFwLmRsbSwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgIGlydGUucmVtYXAudG0pOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZCB2 dnRkX3Jlc2V0KHN0cnVjdCB2dnRkICp2dnRkLCB1aW50NjRfdCBjYXBhYmlsaXR5KQo+ICB7Cj4g ICAgICB1aW50NjRfdCBjYXAgPSBjYXBfc2V0X251bV9mYXVsdF9yZWdzKDFVTEwpIHwKPiBAQCAt MzI0LDcgKzU4NSw4IEBAIHN0YXRpYyBpbnQgdnZ0ZF9kZXN0cm95KHN0cnVjdCB2aW9tbXUgKnZp b21tdSkKPiAgCj4gIHN0cnVjdCB2aW9tbXVfb3BzIHZ2dGRfaHZtX3ZteF9vcHMgPSB7Cj4gICAg ICAuY3JlYXRlID0gdnZ0ZF9jcmVhdGUsCj4gLSAgICAuZGVzdHJveSA9IHZ2dGRfZGVzdHJveQo+ ICsgICAgLmRlc3Ryb3kgPSB2dnRkX2Rlc3Ryb3ksCj4gKyAgICAuaGFuZGxlX2lycV9yZXF1ZXN0 ID0gdnZ0ZF9oYW5kbGVfaXJxX3JlcXVlc3QKCllvdSBjYW4gYWRkIGEgJywnIGF0IHRoZSBlbmQs IHNvIHRoYXQgZnVydGhlciBhZGRpdGlvbnMgZG9uJ3QgbmVlZCB0bwpjaGFuZ2UgdHdvIGxpbmVz IChhbmQgdGhlIHNhbWUgc2hvdWxkIGJlIGRvbmUgd2l0aCB2dnRkX2Rlc3Ryb3kpLgoKVGhhbmtz LCBSb2dlci4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Clhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9s aXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=