From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH 2/2] x86/hvm/viridian: Enable APIC assist enlightenment Date: Tue, 15 Mar 2016 19:18:08 -0400 Message-ID: <20160315231808.GC29285@char.us.oracle.com> References: <1458058456-7345-1-git-send-email-paul.durrant@citrix.com> <1458058456-7345-3-git-send-email-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1afyEI-0002UQ-C8 for xen-devel@lists.xenproject.org; Tue, 15 Mar 2016 23:18:22 +0000 Content-Disposition: inline In-Reply-To: <1458058456-7345-3-git-send-email-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Paul Durrant Cc: Wei Liu , Stefano Stabellini , Andrew Cooper , Ian Jackson , Jan Beulich , xen-devel@lists.xenproject.org, Keir Fraser List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBNYXIgMTUsIDIwMTYgYXQgMDQ6MTQ6MTZQTSArMDAwMCwgUGF1bCBEdXJyYW50IHdy b3RlOgo+IFRoaXMgcGF0Y2ggYWRkcyBjb2RlIHRvIGVuYWJsZSB0aGUgQVBJQyBhc3Npc3QgZW5s aWdodGVubWVudCB3aGljaCwKPiB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIG1lYW5zIHRoYXQg dGhlIGd1ZXN0IGNhbiBhdm9pZCBhbiBFT0kgb2YKPiB0aGUgbG9jYWwgQVBJQyBhbmQgdGhlcmVi eSBhdm9pZCBhIFZNRVhJVC4KCkkgbm90aWNlZCB5b3UgZGVsZXRlZCB0aGUgY29tbWVudCBoYXZp bmcgdGhlIHNwZWMuCgpXb3VsZCBpdCBiZSBiZXR0ZXIgaWY6CgoxKSBJdCB3YXMgaW4gdGhlIGdp dCBjb21taXQgZGVzY3JpcHRpb24uCjIpIEFzIHBhcnQgb2YgdGhlIGRvY3MgZGlyZWN0b3J5PwoK T2ggYW5kIHRoZSBsaW5rIGlzIGJyb2tlbi4gQW4gdGhlIGxpbmsgaXQgcG9pbnRzIHRvIGlzCmJy b2tlbiB0b28uCgpTbyBubyBzcGVjIGZvciB0aGlzLCBlaD8KCgoKPiAKPiBVc2Ugb2YgdGhlIGVu bGlnaHRlbm1lbnQgYnkgdGhlIGh5cGVydmlzb3IgaXMgdW5kZXIgY29udHJvbCBvZiB0aGUKPiB0 b29sc3RhY2suCj4gCj4gU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRA Y2l0cml4LmNvbT4KPiBDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+ Cj4gQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFuby5zdGFiZWxsaW5pQGV1LmNpdHJpeC5j b20+Cj4gQ2M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Cj4gQ2M6IEtlaXIgRnJhc2Vy IDxrZWlyQHhlbi5vcmc+Cj4gQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KPiBD YzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KPiAtLS0KPiAgZG9j cy9tYW4veGwuY2ZnLnBvZC41ICAgICAgICAgICAgICB8ICA4ICsrKysrKwo+ICB0b29scy9saWJ4 bC9saWJ4bF9kb20uYyAgICAgICAgICAgIHwgIDMgKysKPiAgdG9vbHMvbGlieGwvbGlieGxfdHlw ZXMuaWRsICAgICAgICB8ICAxICsKPiAgeGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi5jICAgICAg ICB8IDU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCj4gIHhlbi9hcmNo L3g4Ni9odm0vdmxhcGljLmMgICAgICAgICAgfCA1OCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tCj4gIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZpcmlkaWFuLmggfCAgNSAr KysrCj4gIHhlbi9pbmNsdWRlL3B1YmxpYy9odm0vcGFyYW1zLmggICAgfCAgNyArKysrLQo+ICA3 IGZpbGVzIGNoYW5nZWQsIDEyNCBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKPiAKPiBk aWZmIC0tZ2l0IGEvZG9jcy9tYW4veGwuY2ZnLnBvZC41IGIvZG9jcy9tYW4veGwuY2ZnLnBvZC41 Cj4gaW5kZXggNTZiMTExNy4uNDlhY2RhNyAxMDA2NDQKPiAtLS0gYS9kb2NzL21hbi94bC5jZmcu cG9kLjUKPiArKysgYi9kb2NzL21hbi94bC5jZmcucG9kLjUKPiBAQCAtMTQ4NCw2ICsxNDg0LDE0 IEBAIFRoaXMgc2V0IGluY29ycG9yYXRlcyB1c2Ugb2YgaHlwZXJjYWxscyBmb3IgcmVtb3RlIFRM QiBmbHVzaGluZy4KPiAgVGhpcyBlbmxpZ2h0ZW5tZW50IG1heSBpbXByb3ZlIHBlcmZvcm1hbmNl IG9mIFdpbmRvd3MgZ3Vlc3RzIHJ1bm5pbmcKPiAgb24gaG9zdHMgd2l0aCBoaWdoZXIgbGV2ZWxz IG9mIChwaHlzaWNhbCkgQ1BVIGNvbnRlbnRpb24uCj4gIAo+ICs9aXRlbSBCPGFwaWNfYXNzaXN0 Pgo+ICsKPiArVGhpcyBzZXQgaW5jb3Jwb3JhdGVzIHVzZSBvZiB0aGUgQVBJQyBhc3Npc3QgcGFn ZSB0byBhdm9pZCBFT0kgb2YKCldoYXQgc2V0PyBPcHRpb24/Cgo+ICt0aGUgbG9jYWwgQVBJQy4K PiArVGhpcyBlbmxpZ2h0ZW5tZW50IG1heSBpbXByb3ZlIHBlcmZvcm1hbmNlIG9mIFdpbmRvd3Mg Z3Vlc3RzLAoKbWF5PyBIb3cgZG9lcyB0aGlzIHNxdWFyZSB3aXRoIEludGVsIHZBUElDPwpDb3Vs ZCB5b3UgbWVudGlvbiB0aGF0IGhlcmU/IE9yIGluIHRoZSBjb21taXQgZGVzY3JpcHRpb24/CgpB bmQgY2FuIG5vbi1XaW5kb3dzIGd1ZXN0cyB1c2UgaXQgdG9vPwpPciBpcyB0aGlzIHBhcnRpY3Vs YXIgZm9yIFdpbmRvd3MgZ3Vlc3RzPyBJRiBzbyB3aGljaCBvbmVzPwoKPiArcGFydGljdWxhcmx5 IHRob3NlIHJ1bm5pbmcgUFYgZHJpdmVycyB0aGF0IG1ha2UgdXNlIG9mIHBlci12Y3B1Cj4gK2V2 ZW50IGNoYW5uZWwgdXBjYWxsIHZlY3RvcnMuCgpXaGF0IGtpbmQgb2YgUFYgZHJpdmVycz8gQW55 Ym9keT8KCj4gKwo+ICA9aXRlbSBCPGRlZmF1bHRzPgo+ICAKPiAgVGhpcyBpcyBhIHNwZWNpYWwg dmFsdWUgdGhhdCBlbmFibGVzIHRoZSBkZWZhdWx0IHNldCBvZiBncm91cHMsIHdoaWNoCj4gZGlm ZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2RvbS5jIGIvdG9vbHMvbGlieGwvbGlieGxfZG9t LmMKPiBpbmRleCBiODI1Yjk4Li5lZTc1YWQxIDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2xpYnhsL2xp YnhsX2RvbS5jCj4gKysrIGIvdG9vbHMvbGlieGwvbGlieGxfZG9tLmMKPiBAQCAtMjUzLDYgKzI1 Myw5IEBAIHN0YXRpYyBpbnQgaHZtX3NldF92aXJpZGlhbl9mZWF0dXJlcyhsaWJ4bF9fZ2MgKmdj LCB1aW50MzJfdCBkb21pZCwKPiAgICAgIGlmIChsaWJ4bF9iaXRtYXBfdGVzdCgmZW5saWdodGVu bWVudHMsIExJQlhMX1ZJUklESUFOX0VOTElHSFRFTk1FTlRfSENBTExfUkVNT1RFX1RMQl9GTFVT SCkpCj4gICAgICAgICAgbWFzayB8PSBIVk1QVl9oY2FsbF9yZW1vdGVfdGxiX2ZsdXNoOwo+ICAK PiArICAgIGlmIChsaWJ4bF9iaXRtYXBfdGVzdCgmZW5saWdodGVubWVudHMsIExJQlhMX1ZJUklE SUFOX0VOTElHSFRFTk1FTlRfQVBJQ19BU1NJU1QpKQo+ICsgICAgICAgIG1hc2sgfD0gSFZNUFZf YXBpY19hc3Npc3Q7Cj4gKwo+ICAgICAgaWYgKG1hc2sgIT0gMCAmJgo+ICAgICAgICAgIHhjX2h2 bV9wYXJhbV9zZXQoQ1RYLT54Y2gsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICBkb21pZCwK PiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsIGIvdG9vbHMvbGlieGwv bGlieGxfdHlwZXMuaWRsCj4gaW5kZXggNjMyYzAwOS4uZTNiZTk1NyAxMDA2NDQKPiAtLS0gYS90 b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKPiArKysgYi90b29scy9saWJ4bC9saWJ4bF90eXBl cy5pZGwKPiBAQCAtMjIxLDYgKzIyMSw3IEBAIGxpYnhsX3ZpcmlkaWFuX2VubGlnaHRlbm1lbnQg PSBFbnVtZXJhdGlvbigidmlyaWRpYW5fZW5saWdodGVubWVudCIsIFsKPiAgICAgICgyLCAidGlt ZV9yZWZfY291bnQiKSwKPiAgICAgICgzLCAicmVmZXJlbmNlX3RzYyIpLAo+ICAgICAgKDQsICJo Y2FsbF9yZW1vdGVfdGxiX2ZsdXNoIiksCj4gKyAgICAoNSwgImFwaWNfYXNzaXN0IiksCj4gICAg ICBdKQo+ICAKPiAgbGlieGxfaGR0eXBlID0gRW51bWVyYXRpb24oImhkdHlwZSIsIFsKPiBkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi5jIGIveGVuL2FyY2gveDg2L2h2bS92 aXJpZGlhbi5jCj4gaW5kZXggYzc3OTI5MC4uMWY3MzY5MSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJj aC94ODYvaHZtL3ZpcmlkaWFuLmMKPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMK PiBAQCAtMjIxLDE2ICsyMjEsNiBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplX2FwaWNfYXNzaXN0 KHN0cnVjdCB2Y3B1ICp2KQo+ICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSA9IGdldF9wYWdl X2Zyb21fZ2ZuKGQsIGdtZm4sIE5VTEwsIFAyTV9BTExPQyk7Cj4gICAgICB2b2lkICp2YTsKPiAg Cj4gLSAgICAvKgo+IC0gICAgICogV2UgZG9uJ3QgeWV0IG1ha2UgdXNlIG9mIHRoZSBBUElDIGFz c2lzdCBwYWdlIGJ1dCBieSBzZXR0aW5nCj4gLSAgICAgKiB0aGUgQ1BVSUQzQV9NU1JfQVBJQ19B Q0NFU1MgYml0IGluIENQVUlEIGxlYWYgNDAwMDAwMDMgd2UgYXJlIGR1dHkKPiAtICAgICAqIGJv dW5kIHRvIHN1cHBvcnQgdGhlIE1TUi4gV2UgdGhlcmVmb3JlIGRvIGp1c3QgZW5vdWdoIHRvIGtl ZXAgd2luZG93cwo+IC0gICAgICogaGFwcHkuCj4gLSAgICAgKgo+IC0gICAgICogU2VlIGh0dHA6 Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9mZjUzODY1NyUyOFZTLjg1JTI5LmFz cHggZm9yCj4gLSAgICAgKiBkZXRhaWxzIG9mIGhvdyBXaW5kb3dzIHVzZXMgdGhlIHBhZ2UuCj4g LSAgICAgKi8KPiAtCj4gICAgICBpZiAoICFwYWdlICkKPiAgICAgICAgICByZXR1cm47Cj4gIAo+ IEBAIC0yNTEsNiArMjQxLDU1IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVfYXBpY19hc3Npc3Qo c3RydWN0IHZjcHUgKnYpCj4gIAo+ICAgICAgdi0+YXJjaC5odm1fdmNwdS52aXJpZGlhbi5hcGlj X2Fzc2lzdC5wYWdlID0gcGFnZTsKPiAgICAgIHYtPmFyY2guaHZtX3ZjcHUudmlyaWRpYW4uYXBp Y19hc3Npc3QudmEgPSB2YTsKPiArICAgIHYtPmFyY2guaHZtX3ZjcHUudmlyaWRpYW4uYXBpY19h c3Npc3QudmVjdG9yID0gLTE7Cj4gK30KPiArCj4gK3ZvaWQgdmlyaWRpYW5fc3RhcnRfYXBpY19h c3Npc3Qoc3RydWN0IHZjcHUgKnYsIGludCB2ZWN0b3IpCj4gK3sKPiArICAgIHZvaWQgKnZhID0g di0+YXJjaC5odm1fdmNwdS52aXJpZGlhbi5hcGljX2Fzc2lzdC52YTsKPiArCj4gKyAgICBpZiAo ICEodmlyaWRpYW5fZmVhdHVyZV9tYXNrKHYtPmRvbWFpbikgJiBIVk1QVl9hcGljX2Fzc2lzdCkg fHwKPiArICAgICAgICAgIXZhICkKPiArICAgICAgICByZXR1cm47Cj4gKwo+ICsgICAgLyoKPiAr ICAgICAqIElmIHRoZXJlIGlzIGFscmVhZHkgYW4gYXNzaXN0IHBlbmRpbmcgdGhlbiBzb21ldGhp bmcgaGFzIGdvbmUKPiArICAgICAqIHdyb25nIGFuZCB0aGUgVk0gd2lsbCBtb3N0IGxpa2VseSBo YW5nIHNvIGZvcmNlIGEgY3Jhc2ggbm93Cj4gKyAgICAgKiB0byBtYWtlIHRoZSBwcm9ibGVtIGNs ZWFyLgo+ICsgICAgICovCj4gKyAgICBpZiAodi0+YXJjaC5odm1fdmNwdS52aXJpZGlhbi5hcGlj X2Fzc2lzdC52ZWN0b3IgPj0gMCkKCkkgdGhpbmsgeW91IG5lZWQgc3BhY2VzIHNwcmlua2xlZCBo ZXJlLgoKPiArICAgICAgICBkb21haW5fY3Jhc2godi0+ZG9tYWluKTsKPiArCj4gKyAgICB2LT5h cmNoLmh2bV92Y3B1LnZpcmlkaWFuLmFwaWNfYXNzaXN0LnZlY3RvciA9IHZlY3RvcjsKPiArICAg ICoodWludDMyX3QgKil2YSB8PSAxdTsKCk9oIG15LiBXaGF0IGRvZXMgdGhhdCBkbz8gV2h5IG5v dCAweEJBREYwMEQKSXMgdGhhdCBwcmVzY3JpcGVkIGluIHRoZSBzcGVjPwoKVGhhdCBsb29rcyBx dWl0ZSB1bmhlYWx0aHkgdG8gZG8uCgo+ICt9Cj4gKwo+ICtib29sX3QgdmlyaWRpYW5fY29tcGxl dGVfYXBpY19hc3Npc3Qoc3RydWN0IHZjcHUgKnYsIGludCAqdmVjdG9yKQo+ICt7Cj4gKyAgICB2 b2lkICp2YSA9IHYtPmFyY2guaHZtX3ZjcHUudmlyaWRpYW4uYXBpY19hc3Npc3QudmE7Cj4gKwo+ ICsgICAgaWYgKCAhKHZpcmlkaWFuX2ZlYXR1cmVfbWFzayh2LT5kb21haW4pICYgSFZNUFZfYXBp Y19hc3Npc3QpIHx8Cj4gKyAgICAgICAgICF2YSApCj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKwo+ ICsgICAgaWYgKCAqKHVpbnQzMl90ICopdmEgJiAxICkKCklzIHRoYXQgcmVhbGx5IHBhcnQgb2Yg dGhlIHNwZWM/Cgo+ICsgICAgICAgIHJldHVybiAwOyAvKiBJbnRlcnJ1cHQgbm90IHlldCBwcm9j ZXNzZWQgYnkgdGhlIGd1ZXN0ICovCj4gKwo+ICsgICAgKnZlY3RvciA9IHYtPmFyY2guaHZtX3Zj cHUudmlyaWRpYW4uYXBpY19hc3Npc3QudmVjdG9yOwo+ICsgICAgdi0+YXJjaC5odm1fdmNwdS52 aXJpZGlhbi5hcGljX2Fzc2lzdC52ZWN0b3IgPSAtMTsKCkNvdWxkIHlvdSBleHBsYWluIHRoYXQg Yml0IHBsZWFzZT8gV2h5IHRoZSByZXNldCBvZiB0aGUgdmVjdG9yPwpNYXliZSBpdCBiZWNvbWVz IGNsZWFyIGxhdGVyIG9uLgoKL21lIGdydW1ibGVzIGFib3V0IG5vdCBzcGVjLgoKPiArICAgIHJl dHVybiAxOwo+ICt9Cj4gKwo+ICt2b2lkIHZpcmlkaWFuX2Fib3J0X2FwaWNfYXNzaXN0KHN0cnVj dCB2Y3B1ICp2KQo+ICt7Cj4gKyAgICB2b2lkICp2YSA9IHYtPmFyY2guaHZtX3ZjcHUudmlyaWRp YW4uYXBpY19hc3Npc3QudmE7Cj4gKwo+ICsgICAgaWYgKCAhKHZpcmlkaWFuX2ZlYXR1cmVfbWFz ayh2LT5kb21haW4pICYgSFZNUFZfYXBpY19hc3Npc3QpIHx8Cj4gKyAgICAgICAgICF2YSApCj4g KyAgICAgICAgcmV0dXJuOwoKVGhpcyBpcyB0aGUgdGhpcmQgdGltZSBJIHNlZSB0aGF0LiBQZXJo YXBzIHlvdSBjYW4gbWFrZSBhIGZ1bmN0aW9uCm91dCBvZiBpdC4KCj4gKwo+ICsgICAgKih1aW50 MzJfdCAqKXZhICY9IH4xdTsKPiArICAgIHYtPmFyY2guaHZtX3ZjcHUudmlyaWRpYW4uYXBpY19h c3Npc3QudmVjdG9yID0gLTE7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHRlYXJkb3duX2FwaWNf YXNzaXN0KHN0cnVjdCB2Y3B1ICp2KQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3Zs YXBpYy5jIGIveGVuL2FyY2gveDg2L2h2bS92bGFwaWMuYwo+IGluZGV4IDAxYTg0MzAuLmFhYzQy NjMgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bGFwaWMuYwo+ICsrKyBiL3hlbi9h cmNoL3g4Ni9odm0vdmxhcGljLmMKPiBAQCAtMzgsNiArMzgsNyBAQAo+ICAjaW5jbHVkZSA8YXNt L2h2bS9zdXBwb3J0Lmg+Cj4gICNpbmNsdWRlIDxhc20vaHZtL3ZteC92bXguaD4KPiAgI2luY2x1 ZGUgPGFzbS9odm0vbmVzdGVkaHZtLmg+Cj4gKyNpbmNsdWRlIDxhc20vaHZtL3ZpcmlkaWFuLmg+ Cj4gICNpbmNsdWRlIDxwdWJsaWMvaHZtL2lvcmVxLmg+Cj4gICNpbmNsdWRlIDxwdWJsaWMvaHZt L3BhcmFtcy5oPgo+ICAKPiBAQCAtOTUsNiArOTYsMTggQEAgc3RhdGljIGludCB2bGFwaWNfZmlu ZF9oaWdoZXN0X3ZlY3Rvcihjb25zdCB2b2lkICpiaXRtYXApCj4gICAgICByZXR1cm4gKGZscyh3 b3JkW3dvcmRfb2Zmc2V0KjRdKSAtIDEpICsgKHdvcmRfb2Zmc2V0ICogMzIpOwo+ICB9Cj4gIAo+ ICtzdGF0aWMgaW50IHZsYXBpY19maW5kX2xvd2VzdF92ZWN0b3IoY29uc3Qgdm9pZCAqYml0bWFw KQo+ICt7Cj4gKyAgICBjb25zdCB1aW50MzJfdCAqd29yZCA9IGJpdG1hcDsKPiArICAgIHVuc2ln bmVkIGludCB3b3JkX29mZnNldDsKPiArCj4gKyAgICAvKiBXb3JrIGZvcndhcmRzIHRocm91Z2gg dGhlIGJpdG1hcCAoZmlyc3QgMzItYml0IHdvcmQgaW4gZXZlcnkgZm91cikuICovCgpXb3VsZCBp dCBiZSBlYXNpZXIgc2FpZDoKCk9wZXJhdGUgb24gY2h1bmtzIG9mIDQgYnl0ZXM/Cgo+ICsgICAg Zm9yICggd29yZF9vZmZzZXQgPSAwOyB3b3JkX29mZnNldCA8IE5SX1ZFQ1RPUlMgLyAzMjsgd29y ZF9vZmZzZXQrKykKPiArICAgICAgICBpZiAoIHdvcmRbd29yZF9vZmZzZXQgKiA0XSApCj4gKyAg ICAgICAgICAgIHJldHVybiAoZmZzKHdvcmRbd29yZF9vZmZzZXQgKiA0XSkgLSAxKSArICh3b3Jk X29mZnNldCAqIDMyKTsKPiArCj4gKyAgICByZXR1cm4gLTE7Cj4gK30KPiAgCj4gIC8qCj4gICAq IElSUi1zcGVjaWZpYyBiaXRtYXAgdXBkYXRlICYgc2VhcmNoIHJvdXRpbmVzLgo+IEBAIC0xMTU3 LDcgKzExNzAsNyBAQCBpbnQgdmxhcGljX3ZpcnR1YWxfaW50cl9kZWxpdmVyeV9lbmFibGVkKHZv aWQpCj4gIGludCB2bGFwaWNfaGFzX3BlbmRpbmdfaXJxKHN0cnVjdCB2Y3B1ICp2KQo+ICB7Cj4g ICAgICBzdHJ1Y3QgdmxhcGljICp2bGFwaWMgPSB2Y3B1X3ZsYXBpYyh2KTsKPiAtICAgIGludCBp cnIsIGlzcjsKPiArICAgIGludCBpcnIsIHZlY3RvciwgaXNyOwoKdmVjdG9yID0gLTE/Cgo+ICAK PiAgICAgIGlmICggIXZsYXBpY19lbmFibGVkKHZsYXBpYykgKQo+ICAgICAgICAgIHJldHVybiAt MTsKPiBAQCAtMTE3MCwxMCArMTE4MywyNyBAQCBpbnQgdmxhcGljX2hhc19wZW5kaW5nX2lycShz dHJ1Y3QgdmNwdSAqdikKPiAgICAgICAgICAgIW5lc3RlZGh2bV92Y3B1X2luX2d1ZXN0bW9kZSh2 KSApCj4gICAgICAgICAgcmV0dXJuIGlycjsKPiAgCj4gKyAgICAvKgo+ICsgICAgICogSWYgQVBJ QyBhc3Npc3Qgd2FzIHVzZWQgdGhlbiB0aGVyZSBtYXkgaGF2ZSBiZWVuIG5vIEVPSSBzbwo+ICsg ICAgICogd2UgbmVlZCB0byBjbGVhciB0aGUgcmVxdWlzaXRlIGJpdCBmcm9tIHRoZSBJU1IgaGVy ZSwgYmVmb3JlCj4gKyAgICAgKiBjb21wYXJpbmcgd2l0aCB0aGUgSVJSLgo+ICsgICAgICovCj4g KyAgICBpZiAoIHZpcmlkaWFuX2NvbXBsZXRlX2FwaWNfYXNzaXN0KHYsICZ2ZWN0b3IpICYmCj4g KyAgICAgICAgIHZlY3RvciAhPSAtMSApCj4gKyAgICAgICAgdmxhcGljX2NsZWFyX3ZlY3Rvcih2 ZWN0b3IsICZ2bGFwaWMtPnJlZ3MtPmRhdGFbQVBJQ19JU1JdKTsKPiArCj4gICAgICBpc3IgPSB2 bGFwaWNfZmluZF9oaWdoZXN0X2lzcih2bGFwaWMpOwo+ICAgICAgaXNyID0gKGlzciAhPSAtMSkg PyBpc3IgOiAwOwo+ICAgICAgaWYgKCAoaXNyICYgMHhmMCkgPj0gKGlyciAmIDB4ZjApICkKPiAr ICAgIHsKPiArICAgICAgICAvKgo+ICsgICAgICAgICAqIFRoZXJlJ3MgYWxyZWFkeSBhIGhpZ2hl ciBwcmlvcml0eSB2ZWN0b3IgcGVuZGluZyBzbwo+ICsgICAgICAgICAqIHdlIG5lZWQgdG8gYWJv cnQgYW55IHByZXZpb3VzIEFQSUMgYXNzaXN0IHRvIGVuc3VyZSB0aGVyZQo+ICsgICAgICAgICAq IGlzIGFuIEVPSS4KPiArICAgICAgICAgKi8KPiArICAgICAgICB2aXJpZGlhbl9hYm9ydF9hcGlj X2Fzc2lzdCh2KTsKPiAgICAgICAgICByZXR1cm4gLTE7Cj4gKyAgICB9Cj4gIAo+ICAgICAgcmV0 dXJuIGlycjsKPiAgfQo+IEBAIC0xMTgxLDEzICsxMjExLDI5IEBAIGludCB2bGFwaWNfaGFzX3Bl bmRpbmdfaXJxKHN0cnVjdCB2Y3B1ICp2KQo+ICBpbnQgdmxhcGljX2Fja19wZW5kaW5nX2lycShz dHJ1Y3QgdmNwdSAqdiwgaW50IHZlY3RvciwgYm9vbF90IGZvcmNlX2FjaykKPiAgewo+ICAgICAg c3RydWN0IHZsYXBpYyAqdmxhcGljID0gdmNwdV92bGFwaWModik7Cj4gKyAgICBpbnQgaXNyOwo+ ICAKPiAtICAgIGlmICggZm9yY2VfYWNrIHx8ICF2bGFwaWNfdmlydHVhbF9pbnRyX2RlbGl2ZXJ5 X2VuYWJsZWQoKSApCj4gLSAgICB7Cj4gLSAgICAgICAgdmxhcGljX3NldF92ZWN0b3IodmVjdG9y LCAmdmxhcGljLT5yZWdzLT5kYXRhW0FQSUNfSVNSXSk7Cj4gLSAgICAgICAgdmxhcGljX2NsZWFy X2lycih2ZWN0b3IsIHZsYXBpYyk7Cj4gLSAgICB9Cj4gKyAgICBpZiAoICFmb3JjZV9hY2sgJiYK PiArICAgICAgICAgdmxhcGljX3ZpcnR1YWxfaW50cl9kZWxpdmVyeV9lbmFibGVkKCkgKQo+ICsg ICAgICAgIHJldHVybiAxOwo+ICsKPiArICAgIGlmICggdmxhcGljX3Rlc3RfdmVjdG9yKHZlY3Rv ciwgJnZsYXBpYy0+cmVncy0+ZGF0YVtBUElDX1RNUl0pICkKPiArICAgICAgICBnb3RvIGRvbmU7 Cj4gKwo+ICsgICAgaXNyID0gdmxhcGljX2ZpbmRfbG93ZXN0X3ZlY3RvcigmdmxhcGljLT5yZWdz LT5kYXRhW0FQSUNfSVNSXSk7Cj4gKyAgICBpZiAoIGlzciA+PSAwICYmIGlzciA8IHZlY3RvciAp Cj4gKyAgICAgICAgZ290byBkb25lOwo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBUaGlzIHZlY3Rv ciBpcyBlZGdlIHRyaWdnZXJlZCBhbmQgdGhlcmUgYXJlIG5vIGxvd2VyIHByaW9yaXR5Cj4gKyAg ICAgKiB2ZWN0b3JzIHBlbmRpbmcsIHNvIHdlIGNhbiB1c2UgQVBJQyBhc3Npc3QgdG8gYXZvaWQg ZXhpdGluZwo+ICsgICAgICogZm9yIEVPSS4KPiArICAgICAqLwo+ICsgICAgdmlyaWRpYW5fc3Rh cnRfYXBpY19hc3Npc3QodiwgdmVjdG9yKTsKPiAgCj4gK2RvbmU6Cj4gKyAgICB2bGFwaWNfc2V0 X3ZlY3Rvcih2ZWN0b3IsICZ2bGFwaWMtPnJlZ3MtPmRhdGFbQVBJQ19JU1JdKTsKPiArICAgIHZs YXBpY19jbGVhcl9pcnIodmVjdG9yLCB2bGFwaWMpOwo+ICAgICAgcmV0dXJuIDE7Cj4gIH0KPiAg Cj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZpcmlkaWFuLmggYi94ZW4v aW5jbHVkZS9hc20teDg2L2h2bS92aXJpZGlhbi5oCj4gaW5kZXggYzYwYzExMy4uNjU4ZDQ2YSAx MDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92aXJpZGlhbi5oCj4gKysrIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmlyaWRpYW4uaAo+IEBAIC0yNSw2ICsyNSw3IEBAIHN0 cnVjdCB2aXJpZGlhbl92Y3B1Cj4gICAgICAgICAgdW5pb24gdmlyaWRpYW5fYXBpY19hc3Npc3Qg bXNyOwo+ICAgICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7Cj4gICAgICAgICAgdm9pZCAq dmE7Cj4gKyAgICAgICAgaW50IHZlY3RvcjsKPiAgICAgIH0gYXBpY19hc3Npc3Q7Cj4gICAgICBj cHVtYXNrX3Zhcl90IGZsdXNoX2NwdW1hc2s7Cj4gIH07Cj4gQEAgLTEyNSw2ICsxMjYsMTAgQEAg dm9pZCB2aXJpZGlhbl90aW1lX3JlZl9jb3VudF90aGF3KHN0cnVjdCBkb21haW4gKmQpOwo+ICBp bnQgdmlyaWRpYW5fdmNwdV9pbml0KHN0cnVjdCB2Y3B1ICp2KTsKPiAgdm9pZCB2aXJpZGlhbl92 Y3B1X2RlaW5pdChzdHJ1Y3QgdmNwdSAqdik7Cj4gIAo+ICt2b2lkIHZpcmlkaWFuX3N0YXJ0X2Fw aWNfYXNzaXN0KHN0cnVjdCB2Y3B1ICp2LCBpbnQgdmVjdG9yKTsKPiArYm9vbF90IHZpcmlkaWFu X2NvbXBsZXRlX2FwaWNfYXNzaXN0KHN0cnVjdCB2Y3B1ICp2LCBpbnQgKnZlY3Rvcik7Cj4gK3Zv aWQgdmlyaWRpYW5fYWJvcnRfYXBpY19hc3Npc3Qoc3RydWN0IHZjcHUgKnYpOwo+ICsKPiAgI2Vu ZGlmIC8qIF9fQVNNX1g4Nl9IVk1fVklSSURJQU5fSF9fICovCj4gIAo+ICAvKgo+IGRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL3BhcmFtcy5oIGIveGVuL2luY2x1ZGUvcHVibGlj L2h2bS9wYXJhbXMuaAo+IGluZGV4IDczZDQ3MTguLmU2OWM3MmMgMTAwNjQ0Cj4gLS0tIGEveGVu L2luY2x1ZGUvcHVibGljL2h2bS9wYXJhbXMuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9o dm0vcGFyYW1zLmgKPiBAQCAtMTE1LDEyICsxMTUsMTcgQEAKPiAgI2RlZmluZSBfSFZNUFZfaGNh bGxfcmVtb3RlX3RsYl9mbHVzaCA0Cj4gICNkZWZpbmUgSFZNUFZfaGNhbGxfcmVtb3RlX3RsYl9m bHVzaCAoMSA8PCBfSFZNUFZfaGNhbGxfcmVtb3RlX3RsYl9mbHVzaCkKPiAgCj4gKy8qIFVzZSBB UElDIGFzc2lzdCAqLwo+ICsjZGVmaW5lIF9IVk1QVl9hcGljX2Fzc2lzdCA1Cj4gKyNkZWZpbmUg SFZNUFZfYXBpY19hc3Npc3QgKDEgPDwgX0hWTVBWX2FwaWNfYXNzaXN0KQo+ICsKPiAgI2RlZmlu ZSBIVk1QVl9mZWF0dXJlX21hc2sgXAo+ICAgICAgICAgIChIVk1QVl9iYXNlX2ZyZXEgfCBcCj4g ICAgICAgICAgIEhWTVBWX25vX2ZyZXEgfCBcCj4gICAgICAgICAgIEhWTVBWX3RpbWVfcmVmX2Nv dW50IHwgXAo+ICAgICAgICAgICBIVk1QVl9yZWZlcmVuY2VfdHNjIHwgXAo+IC0gICAgICAgICBI Vk1QVl9oY2FsbF9yZW1vdGVfdGxiX2ZsdXNoKQo+ICsgICAgICAgICBIVk1QVl9oY2FsbF9yZW1v dGVfdGxiX2ZsdXNoIHwgXAo+ICsgICAgICAgICBIVk1QVl9hcGljX2Fzc2lzdCkKPiAgCj4gICNl bmRpZgo+ICAKPiAtLSAKPiAyLjEuNAo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCj4gWGVuLWRldmVsIG1haWxpbmcgbGlzdAo+IFhlbi1kZXZl bEBsaXN0cy54ZW4ub3JnCj4gaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1k ZXZlbAo=