From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH 2/2] x86/hvm/viridian: Enable APIC assist enlightenment Date: Wed, 16 Mar 2016 15:02:05 +0000 Message-ID: References: <1458058456-7345-1-git-send-email-paul.durrant@citrix.com> <1458058456-7345-3-git-send-email-paul.durrant@citrix.com> <20160315231808.GC29285@char.us.oracle.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 1agDaJ-0002Ut-6n for xen-devel@lists.xenproject.org; Wed, 16 Mar 2016 15:42:07 +0000 In-Reply-To: <20160315231808.GC29285@char.us.oracle.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Konrad Rzeszutek Wilk Cc: Wei Liu , Andrew Cooper , Stefano Stabellini , Jan Beulich , Ian Jackson , "xen-devel@lists.xenproject.org" , "Keir (Xen.org)" List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEtvbnJhZCBSemVzenV0ZWsgV2ls ayBbbWFpbHRvOmtvbnJhZC53aWxrQG9yYWNsZS5jb21dCj4gU2VudDogMTUgTWFyY2ggMjAxNiAy MzoxOAo+IFRvOiBQYXVsIER1cnJhbnQKPiBDYzogeGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu b3JnOyBXZWkgTGl1OyBTdGVmYW5vIFN0YWJlbGxpbmk7IEFuZHJldwo+IENvb3BlcjsgSWFuIEph Y2tzb247IEphbiBCZXVsaWNoOyBLZWlyIChYZW4ub3JnKQo+IFN1YmplY3Q6IFJlOiBbWGVuLWRl dmVsXSBbUEFUQ0ggMi8yXSB4ODYvaHZtL3ZpcmlkaWFuOiBFbmFibGUgQVBJQyBhc3Npc3QKPiBl bmxpZ2h0ZW5tZW50Cj4gCj4gT24gVHVlLCBNYXIgMTUsIDIwMTYgYXQgMDQ6MTQ6MTZQTSArMDAw MCwgUGF1bCBEdXJyYW50IHdyb3RlOgo+ID4gVGhpcyBwYXRjaCBhZGRzIGNvZGUgdG8gZW5hYmxl IHRoZSBBUElDIGFzc2lzdCBlbmxpZ2h0ZW5tZW50IHdoaWNoLAo+ID4gdW5kZXIgY2VydGFpbiBj b25kaXRpb25zLCBtZWFucyB0aGF0IHRoZSBndWVzdCBjYW4gYXZvaWQgYW4gRU9JIG9mCj4gPiB0 aGUgbG9jYWwgQVBJQyBhbmQgdGhlcmVieSBhdm9pZCBhIFZNRVhJVC4KPiAKPiBJIG5vdGljZWQg eW91IGRlbGV0ZWQgdGhlIGNvbW1lbnQgaGF2aW5nIHRoZSBzcGVjLgo+IAoKVGhhdCdzIGJlY2F1 c2UgTWljcm9zb2Z0IGtpbGxlZCB0aGUgbGluayBhbmQgSSBjb3VsZG4ndCBmaW5kIHRoZSBzcGVj IG9ubGluZSBhbnkgbW9yZS4gQnV0LCB0aGFua2Z1bGx5LCBJJ3ZlIG5vdyBmb3VuZCBpdCBhZ2Fp biBhbHRob3VnaCBpdCBoYXMgYWN0dWFsbHkgdGFrZW4gbWUgd2Vla3MgdG8gZG8gc28uCgo+IFdv dWxkIGl0IGJlIGJldHRlciBpZjoKPiAKPiAxKSBJdCB3YXMgaW4gdGhlIGdpdCBjb21taXQgZGVz Y3JpcHRpb24uCj4gMikgQXMgcGFydCBvZiB0aGUgZG9jcyBkaXJlY3Rvcnk/Cj4gCj4gT2ggYW5k IHRoZSBsaW5rIGlzIGJyb2tlbi4gQW4gdGhlIGxpbmsgaXQgcG9pbnRzIHRvIGlzCj4gYnJva2Vu IHRvby4KPiAKPiBTbyBubyBzcGVjIGZvciB0aGlzLCBlaD8KPiAKCk5vdyBJJ3ZlIGZvdW5kIGl0 IGFnYWluIEknbGwgcmVmZXJlbmNlIGl0LgoKPiAKPiAKPiA+Cj4gPiBVc2Ugb2YgdGhlIGVubGln aHRlbm1lbnQgYnkgdGhlIGh5cGVydmlzb3IgaXMgdW5kZXIgY29udHJvbCBvZiB0aGUKPiA+IHRv b2xzdGFjay4KPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFu dEBjaXRyaXguY29tPgo+ID4gQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXgu Y29tPgo+ID4gQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFuby5zdGFiZWxsaW5pQGV1LmNp dHJpeC5jb20+Cj4gPiBDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KPiA+IENjOiBL ZWlyIEZyYXNlciA8a2VpckB4ZW4ub3JnPgo+ID4gQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBz dXNlLmNvbT4KPiA+IENjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29t Pgo+ID4gLS0tCj4gPiAgZG9jcy9tYW4veGwuY2ZnLnBvZC41ICAgICAgICAgICAgICB8ICA4ICsr KysrKwo+ID4gIHRvb2xzL2xpYnhsL2xpYnhsX2RvbS5jICAgICAgICAgICAgfCAgMyArKwo+ID4g IHRvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbCAgICAgICAgfCAgMSArCj4gPiAgeGVuL2FyY2gv eDg2L2h2bS92aXJpZGlhbi5jICAgICAgICB8IDU5Cj4gKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0KPiA+ICB4ZW4vYXJjaC94ODYvaHZtL3ZsYXBpYy5jICAgICAgICAgIHwg NTgKPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCj4gPiAgeGVuL2luY2x1 ZGUvYXNtLXg4Ni9odm0vdmlyaWRpYW4uaCB8ICA1ICsrKysKPiA+ICB4ZW4vaW5jbHVkZS9wdWJs aWMvaHZtL3BhcmFtcy5oICAgIHwgIDcgKysrKy0KPiA+ICA3IGZpbGVzIGNoYW5nZWQsIDEyNCBp bnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZG9jcy9t YW4veGwuY2ZnLnBvZC41IGIvZG9jcy9tYW4veGwuY2ZnLnBvZC41Cj4gPiBpbmRleCA1NmIxMTE3 Li40OWFjZGE3IDEwMDY0NAo+ID4gLS0tIGEvZG9jcy9tYW4veGwuY2ZnLnBvZC41Cj4gPiArKysg Yi9kb2NzL21hbi94bC5jZmcucG9kLjUKPiA+IEBAIC0xNDg0LDYgKzE0ODQsMTQgQEAgVGhpcyBz ZXQgaW5jb3Jwb3JhdGVzIHVzZSBvZiBoeXBlcmNhbGxzIGZvcgo+IHJlbW90ZSBUTEIgZmx1c2hp bmcuCj4gPiAgVGhpcyBlbmxpZ2h0ZW5tZW50IG1heSBpbXByb3ZlIHBlcmZvcm1hbmNlIG9mIFdp bmRvd3MgZ3Vlc3RzIHJ1bm5pbmcKPiA+ICBvbiBob3N0cyB3aXRoIGhpZ2hlciBsZXZlbHMgb2Yg KHBoeXNpY2FsKSBDUFUgY29udGVudGlvbi4KPiA+Cj4gPiArPWl0ZW0gQjxhcGljX2Fzc2lzdD4K PiA+ICsKPiA+ICtUaGlzIHNldCBpbmNvcnBvcmF0ZXMgdXNlIG9mIHRoZSBBUElDIGFzc2lzdCBw YWdlIHRvIGF2b2lkIEVPSSBvZgo+IAo+IFdoYXQgc2V0PyBPcHRpb24/Cj4gCgpTZXQgb2Ygdmly aWRpYW4gZW5saWdodGVubWVudHMuIFJlYWQgdGhlIHByZS1hbWJsZSB0byB0aGUgc2VjdGlvbi4K Cj4gPiArdGhlIGxvY2FsIEFQSUMuCj4gPiArVGhpcyBlbmxpZ2h0ZW5tZW50IG1heSBpbXByb3Zl IHBlcmZvcm1hbmNlIG9mIFdpbmRvd3MgZ3Vlc3RzLAo+IAo+IG1heT8gSG93IGRvZXMgdGhpcyBz cXVhcmUgd2l0aCBJbnRlbCB2QVBJQz8KPiBDb3VsZCB5b3UgbWVudGlvbiB0aGF0IGhlcmU/IE9y IGluIHRoZSBjb21taXQgZGVzY3JpcHRpb24/Cj4gCgpZZXMsIEknbGwgbWVudGlvbiB0aGF0IGl0 J3MgY2xlYXJseSBzb21ld2hhdCBwb2ludGxlc3MgaWYgcG9zdGVkIGludGVycnVwdHMgYXJlIGlu IG9wZXJhdGlvbiBhbmQgdGhhdCBpdCBoYXMgbm8gZWZmZWN0IGluIHRoYXQgY2FzZS4KCj4gQW5k IGNhbiBub24tV2luZG93cyBndWVzdHMgdXNlIGl0IHRvbz8KCklmIHRoZXkgYWRoZXJlIHRvIHRo ZSB2aXJpZGlhbiBzcGVjLiwgeWVzLgoKPiBPciBpcyB0aGlzIHBhcnRpY3VsYXIgZm9yIFdpbmRv d3MgZ3Vlc3RzPyBJRiBzbyB3aGljaCBvbmVzPwo+IAo+ID4gK3BhcnRpY3VsYXJseSB0aG9zZSBy dW5uaW5nIFBWIGRyaXZlcnMgdGhhdCBtYWtlIHVzZSBvZiBwZXItdmNwdQo+ID4gK2V2ZW50IGNo YW5uZWwgdXBjYWxsIHZlY3RvcnMuCj4gCj4gV2hhdCBraW5kIG9mIFBWIGRyaXZlcnM/IEFueWJv ZHk/Cj4KCkFueWJvZHkncyBkcml2ZXJzIHRoYXQgY2FyZSB0byBtYWtlIHVzZSBvZiBGSUZPIGV2 ZW50IGNoYW5uZWxzIGFuZCB0aGF0IEhWTSBvcC4KIAo+ID4gKwo+ID4gID1pdGVtIEI8ZGVmYXVs dHM+Cj4gPgo+ID4gIFRoaXMgaXMgYSBzcGVjaWFsIHZhbHVlIHRoYXQgZW5hYmxlcyB0aGUgZGVm YXVsdCBzZXQgb2YgZ3JvdXBzLCB3aGljaAo+ID4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xp YnhsX2RvbS5jIGIvdG9vbHMvbGlieGwvbGlieGxfZG9tLmMKPiA+IGluZGV4IGI4MjViOTguLmVl NzVhZDEgMTAwNjQ0Cj4gPiAtLS0gYS90b29scy9saWJ4bC9saWJ4bF9kb20uYwo+ID4gKysrIGIv dG9vbHMvbGlieGwvbGlieGxfZG9tLmMKPiA+IEBAIC0yNTMsNiArMjUzLDkgQEAgc3RhdGljIGlu dCBodm1fc2V0X3ZpcmlkaWFuX2ZlYXR1cmVzKGxpYnhsX19nYyAqZ2MsCj4gdWludDMyX3QgZG9t aWQsCj4gPiAgICAgIGlmIChsaWJ4bF9iaXRtYXBfdGVzdCgmZW5saWdodGVubWVudHMsCj4gTElC WExfVklSSURJQU5fRU5MSUdIVEVOTUVOVF9IQ0FMTF9SRU1PVEVfVExCX0ZMVVNIKSkKPiA+ICAg ICAgICAgIG1hc2sgfD0gSFZNUFZfaGNhbGxfcmVtb3RlX3RsYl9mbHVzaDsKPiA+Cj4gPiArICAg IGlmIChsaWJ4bF9iaXRtYXBfdGVzdCgmZW5saWdodGVubWVudHMsCj4gTElCWExfVklSSURJQU5f RU5MSUdIVEVOTUVOVF9BUElDX0FTU0lTVCkpCj4gPiArICAgICAgICBtYXNrIHw9IEhWTVBWX2Fw aWNfYXNzaXN0Owo+ID4gKwo+ID4gICAgICBpZiAobWFzayAhPSAwICYmCj4gPiAgICAgICAgICB4 Y19odm1fcGFyYW1fc2V0KENUWC0+eGNoLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICBk b21pZCwKPiA+IGRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwgYi90b29s cy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKPiA+IGluZGV4IDYzMmMwMDkuLmUzYmU5NTcgMTAwNjQ0 Cj4gPiAtLS0gYS90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKPiA+ICsrKyBiL3Rvb2xzL2xp YnhsL2xpYnhsX3R5cGVzLmlkbAo+ID4gQEAgLTIyMSw2ICsyMjEsNyBAQCBsaWJ4bF92aXJpZGlh bl9lbmxpZ2h0ZW5tZW50ID0KPiBFbnVtZXJhdGlvbigidmlyaWRpYW5fZW5saWdodGVubWVudCIs IFsKPiA+ICAgICAgKDIsICJ0aW1lX3JlZl9jb3VudCIpLAo+ID4gICAgICAoMywgInJlZmVyZW5j ZV90c2MiKSwKPiA+ICAgICAgKDQsICJoY2FsbF9yZW1vdGVfdGxiX2ZsdXNoIiksCj4gPiArICAg ICg1LCAiYXBpY19hc3Npc3QiKSwKPiA+ICAgICAgXSkKPiA+Cj4gPiAgbGlieGxfaGR0eXBlID0g RW51bWVyYXRpb24oImhkdHlwZSIsIFsKPiA+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZt L3ZpcmlkaWFuLmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMKPiA+IGluZGV4IGM3Nzky OTAuLjFmNzM2OTEgMTAwNjQ0Cj4gPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMK PiA+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4uYwo+ID4gQEAgLTIyMSwxNiArMjIx LDYgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZV9hcGljX2Fzc2lzdChzdHJ1Y3QgdmNwdSAqdikK PiA+ICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSA9IGdldF9wYWdlX2Zyb21fZ2ZuKGQsIGdt Zm4sIE5VTEwsCj4gUDJNX0FMTE9DKTsKPiA+ICAgICAgdm9pZCAqdmE7Cj4gPgo+ID4gLSAgICAv Kgo+ID4gLSAgICAgKiBXZSBkb24ndCB5ZXQgbWFrZSB1c2Ugb2YgdGhlIEFQSUMgYXNzaXN0IHBh Z2UgYnV0IGJ5IHNldHRpbmcKPiA+IC0gICAgICogdGhlIENQVUlEM0FfTVNSX0FQSUNfQUNDRVNT IGJpdCBpbiBDUFVJRCBsZWFmIDQwMDAwMDAzIHdlIGFyZQo+IGR1dHkKPiA+IC0gICAgICogYm91 bmQgdG8gc3VwcG9ydCB0aGUgTVNSLiBXZSB0aGVyZWZvcmUgZG8ganVzdCBlbm91Z2ggdG8ga2Vl cAo+IHdpbmRvd3MKPiA+IC0gICAgICogaGFwcHkuCj4gPiAtICAgICAqCj4gPiAtICAgICAqIFNl ZSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLQo+IHVzL2xpYnJhcnkvZmY1Mzg2NTclMjhW Uy44NSUyOS5hc3B4IGZvcgo+ID4gLSAgICAgKiBkZXRhaWxzIG9mIGhvdyBXaW5kb3dzIHVzZXMg dGhlIHBhZ2UuCj4gPiAtICAgICAqLwo+ID4gLQo+ID4gICAgICBpZiAoICFwYWdlICkKPiA+ICAg ICAgICAgIHJldHVybjsKPiA+Cj4gPiBAQCAtMjUxLDYgKzI0MSw1NSBAQCBzdGF0aWMgdm9pZCBp bml0aWFsaXplX2FwaWNfYXNzaXN0KHN0cnVjdCB2Y3B1ICp2KQo+ID4KPiA+ICAgICAgdi0+YXJj aC5odm1fdmNwdS52aXJpZGlhbi5hcGljX2Fzc2lzdC5wYWdlID0gcGFnZTsKPiA+ICAgICAgdi0+ YXJjaC5odm1fdmNwdS52aXJpZGlhbi5hcGljX2Fzc2lzdC52YSA9IHZhOwo+ID4gKyAgICB2LT5h cmNoLmh2bV92Y3B1LnZpcmlkaWFuLmFwaWNfYXNzaXN0LnZlY3RvciA9IC0xOwo+ID4gK30KPiA+ ICsKPiA+ICt2b2lkIHZpcmlkaWFuX3N0YXJ0X2FwaWNfYXNzaXN0KHN0cnVjdCB2Y3B1ICp2LCBp bnQgdmVjdG9yKQo+ID4gK3sKPiA+ICsgICAgdm9pZCAqdmEgPSB2LT5hcmNoLmh2bV92Y3B1LnZp cmlkaWFuLmFwaWNfYXNzaXN0LnZhOwo+ID4gKwo+ID4gKyAgICBpZiAoICEodmlyaWRpYW5fZmVh dHVyZV9tYXNrKHYtPmRvbWFpbikgJiBIVk1QVl9hcGljX2Fzc2lzdCkgfHwKPiA+ICsgICAgICAg ICAhdmEgKQo+ID4gKyAgICAgICAgcmV0dXJuOwo+ID4gKwo+ID4gKyAgICAvKgo+ID4gKyAgICAg KiBJZiB0aGVyZSBpcyBhbHJlYWR5IGFuIGFzc2lzdCBwZW5kaW5nIHRoZW4gc29tZXRoaW5nIGhh cyBnb25lCj4gPiArICAgICAqIHdyb25nIGFuZCB0aGUgVk0gd2lsbCBtb3N0IGxpa2VseSBoYW5n IHNvIGZvcmNlIGEgY3Jhc2ggbm93Cj4gPiArICAgICAqIHRvIG1ha2UgdGhlIHByb2JsZW0gY2xl YXIuCj4gPiArICAgICAqLwo+ID4gKyAgICBpZiAodi0+YXJjaC5odm1fdmNwdS52aXJpZGlhbi5h cGljX2Fzc2lzdC52ZWN0b3IgPj0gMCkKPiAKPiBJIHRoaW5rIHlvdSBuZWVkIHNwYWNlcyBzcHJp bmtsZWQgaGVyZS4KPgoKSSBkbyBpbmRlZWQuCiAKPiA+ICsgICAgICAgIGRvbWFpbl9jcmFzaCh2 LT5kb21haW4pOwo+ID4gKwo+ID4gKyAgICB2LT5hcmNoLmh2bV92Y3B1LnZpcmlkaWFuLmFwaWNf YXNzaXN0LnZlY3RvciA9IHZlY3RvcjsKPiA+ICsgICAgKih1aW50MzJfdCAqKXZhIHw9IDF1Owo+ IAo+IE9oIG15LiBXaGF0IGRvZXMgdGhhdCBkbz8gV2h5IG5vdCAweEJBREYwMEQKPiBJcyB0aGF0 IHByZXNjcmlwZWQgaW4gdGhlIHNwZWM/CgpUaGUgTFNCIGlzIHRoZSBvbmx5IGJpdCB0aGF0IGhh cyBkZWZpbmVkIGZ1bmN0aW9uYWxpdHkuIFRoZSBuZXh0IDMxIGJpdHMgYXJlIHJlc2VydmVkIGFu ZCB0aGUgcmVzdCBvZiB0aGUgcGFnZSBpcyB1bmRlZmluZWQuCgo+IAo+IFRoYXQgbG9va3MgcXVp dGUgdW5oZWFsdGh5IHRvIGRvLgo+IAoKUmVhZGluZyB0aGUgc3BlYy4gYWdhaW4gSSBkbyBzZWUg dGhhdCB0aGUgcmVzZXJ2ZWQgYml0cyBhcmUgZGVmaW5lZCB0byBiZSB6ZXJvLCBzbyBpdCBsb29r cyBsaWtlIEkgY2FuIHVzZSA9IHJhdGhlciB0aGFuIHw9LgoKPiA+ICt9Cj4gPiArCj4gPiArYm9v bF90IHZpcmlkaWFuX2NvbXBsZXRlX2FwaWNfYXNzaXN0KHN0cnVjdCB2Y3B1ICp2LCBpbnQgKnZl Y3RvcikKPiA+ICt7Cj4gPiArICAgIHZvaWQgKnZhID0gdi0+YXJjaC5odm1fdmNwdS52aXJpZGlh bi5hcGljX2Fzc2lzdC52YTsKPiA+ICsKPiA+ICsgICAgaWYgKCAhKHZpcmlkaWFuX2ZlYXR1cmVf bWFzayh2LT5kb21haW4pICYgSFZNUFZfYXBpY19hc3Npc3QpIHx8Cj4gPiArICAgICAgICAgIXZh ICkKPiA+ICsgICAgICAgIHJldHVybiAwOwo+ID4gKwo+ID4gKyAgICBpZiAoICoodWludDMyX3Qg Kil2YSAmIDEgKQo+IAo+IElzIHRoYXQgcmVhbGx5IHBhcnQgb2YgdGhlIHNwZWM/Cj4gCgpZZXMu Cgo+ID4gKyAgICAgICAgcmV0dXJuIDA7IC8qIEludGVycnVwdCBub3QgeWV0IHByb2Nlc3NlZCBi eSB0aGUgZ3Vlc3QgKi8KPiA+ICsKPiA+ICsgICAgKnZlY3RvciA9IHYtPmFyY2guaHZtX3ZjcHUu dmlyaWRpYW4uYXBpY19hc3Npc3QudmVjdG9yOwo+ID4gKyAgICB2LT5hcmNoLmh2bV92Y3B1LnZp cmlkaWFuLmFwaWNfYXNzaXN0LnZlY3RvciA9IC0xOwo+IAo+IENvdWxkIHlvdSBleHBsYWluIHRo YXQgYml0IHBsZWFzZT8gV2h5IHRoZSByZXNldCBvZiB0aGUgdmVjdG9yPwo+IE1heWJlIGl0IGJl Y29tZXMgY2xlYXIgbGF0ZXIgb24uCj4gCj4gL21lIGdydW1ibGVzIGFib3V0IG5vdCBzcGVjLgo+ IAo+ID4gKyAgICByZXR1cm4gMTsKPiA+ICt9Cj4gPiArCj4gPiArdm9pZCB2aXJpZGlhbl9hYm9y dF9hcGljX2Fzc2lzdChzdHJ1Y3QgdmNwdSAqdikKPiA+ICt7Cj4gPiArICAgIHZvaWQgKnZhID0g di0+YXJjaC5odm1fdmNwdS52aXJpZGlhbi5hcGljX2Fzc2lzdC52YTsKPiA+ICsKPiA+ICsgICAg aWYgKCAhKHZpcmlkaWFuX2ZlYXR1cmVfbWFzayh2LT5kb21haW4pICYgSFZNUFZfYXBpY19hc3Np c3QpIHx8Cj4gPiArICAgICAgICAgIXZhICkKPiA+ICsgICAgICAgIHJldHVybjsKPiAKPiBUaGlz IGlzIHRoZSB0aGlyZCB0aW1lIEkgc2VlIHRoYXQuIFBlcmhhcHMgeW91IGNhbiBtYWtlIGEgZnVu Y3Rpb24KPiBvdXQgb2YgaXQuCj4gCgpZZXMsIG9yIG1heWJlIGEgbWFjcm8uCgo+ID4gKwo+ID4g KyAgICAqKHVpbnQzMl90ICopdmEgJj0gfjF1Owo+ID4gKyAgICB2LT5hcmNoLmh2bV92Y3B1LnZp cmlkaWFuLmFwaWNfYXNzaXN0LnZlY3RvciA9IC0xOwo+ID4gIH0KPiA+Cj4gPiAgc3RhdGljIHZv aWQgdGVhcmRvd25fYXBpY19hc3Npc3Qoc3RydWN0IHZjcHUgKnYpCj4gPiBkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L2h2bS92bGFwaWMuYyBiL3hlbi9hcmNoL3g4Ni9odm0vdmxhcGljLmMKPiA+ IGluZGV4IDAxYTg0MzAuLmFhYzQyNjMgMTAwNjQ0Cj4gPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZt L3ZsYXBpYy5jCj4gPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZsYXBpYy5jCj4gPiBAQCAtMzgs NiArMzgsNyBAQAo+ID4gICNpbmNsdWRlIDxhc20vaHZtL3N1cHBvcnQuaD4KPiA+ICAjaW5jbHVk ZSA8YXNtL2h2bS92bXgvdm14Lmg+Cj4gPiAgI2luY2x1ZGUgPGFzbS9odm0vbmVzdGVkaHZtLmg+ Cj4gPiArI2luY2x1ZGUgPGFzbS9odm0vdmlyaWRpYW4uaD4KPiA+ICAjaW5jbHVkZSA8cHVibGlj L2h2bS9pb3JlcS5oPgo+ID4gICNpbmNsdWRlIDxwdWJsaWMvaHZtL3BhcmFtcy5oPgo+ID4KPiA+ IEBAIC05NSw2ICs5NiwxOCBAQCBzdGF0aWMgaW50IHZsYXBpY19maW5kX2hpZ2hlc3RfdmVjdG9y KGNvbnN0IHZvaWQKPiAqYml0bWFwKQo+ID4gICAgICByZXR1cm4gKGZscyh3b3JkW3dvcmRfb2Zm c2V0KjRdKSAtIDEpICsgKHdvcmRfb2Zmc2V0ICogMzIpOwo+ID4gIH0KPiA+Cj4gPiArc3RhdGlj IGludCB2bGFwaWNfZmluZF9sb3dlc3RfdmVjdG9yKGNvbnN0IHZvaWQgKmJpdG1hcCkKPiA+ICt7 Cj4gPiArICAgIGNvbnN0IHVpbnQzMl90ICp3b3JkID0gYml0bWFwOwo+ID4gKyAgICB1bnNpZ25l ZCBpbnQgd29yZF9vZmZzZXQ7Cj4gPiArCj4gPiArICAgIC8qIFdvcmsgZm9yd2FyZHMgdGhyb3Vn aCB0aGUgYml0bWFwIChmaXJzdCAzMi1iaXQgd29yZCBpbiBldmVyeSBmb3VyKS4KPiAqLwo+IAo+ IFdvdWxkIGl0IGJlIGVhc2llciBzYWlkOgo+IAo+IE9wZXJhdGUgb24gY2h1bmtzIG9mIDQgYnl0 ZXM/Cj4gCgpJIHdhcyBhcGluZyB0aGUgY29tbWVudCBpbiB0aGUgJ2ZpbmQgaGlnaGVzdCcgZnVu Y3Rpb24uIEknbGwga2VlcCBpdCBhcyBpdCBpcyBmb3IgY29uc2lzdGVuY3kuCgo+ID4gKyAgICBm b3IgKCB3b3JkX29mZnNldCA9IDA7IHdvcmRfb2Zmc2V0IDwgTlJfVkVDVE9SUyAvIDMyOyB3b3Jk X29mZnNldCsrKQo+ID4gKyAgICAgICAgaWYgKCB3b3JkW3dvcmRfb2Zmc2V0ICogNF0gKQo+ID4g KyAgICAgICAgICAgIHJldHVybiAoZmZzKHdvcmRbd29yZF9vZmZzZXQgKiA0XSkgLSAxKSArICh3 b3JkX29mZnNldCAqIDMyKTsKPiA+ICsKPiA+ICsgICAgcmV0dXJuIC0xOwo+ID4gK30KPiA+Cj4g PiAgLyoKPiA+ICAgKiBJUlItc3BlY2lmaWMgYml0bWFwIHVwZGF0ZSAmIHNlYXJjaCByb3V0aW5l cy4KPiA+IEBAIC0xMTU3LDcgKzExNzAsNyBAQCBpbnQgdmxhcGljX3ZpcnR1YWxfaW50cl9kZWxp dmVyeV9lbmFibGVkKHZvaWQpCj4gPiAgaW50IHZsYXBpY19oYXNfcGVuZGluZ19pcnEoc3RydWN0 IHZjcHUgKnYpCj4gPiAgewo+ID4gICAgICBzdHJ1Y3QgdmxhcGljICp2bGFwaWMgPSB2Y3B1X3Zs YXBpYyh2KTsKPiA+IC0gICAgaW50IGlyciwgaXNyOwo+ID4gKyAgICBpbnQgaXJyLCB2ZWN0b3Is IGlzcjsKPiAKPiB2ZWN0b3IgPSAtMT8KPiAKCk5vIG5lZWQuIHZlY3RvciBpcyBub3QgY2hlY2tl ZCB1bmxlc3MgdmlyaWRpYW5fY29tcGxldGVfYXBpY19hc3Npc3QoKSByZXR1cm5zIDEsIGluIHdo aWNoIGNhc2UgaXQgaXMgZ3VhcmFudGVlZCB0byBiZSBzZXQuCgogIFBhdWwKCj4gPgo+ID4gICAg ICBpZiAoICF2bGFwaWNfZW5hYmxlZCh2bGFwaWMpICkKPiA+ICAgICAgICAgIHJldHVybiAtMTsK PiA+IEBAIC0xMTcwLDEwICsxMTgzLDI3IEBAIGludCB2bGFwaWNfaGFzX3BlbmRpbmdfaXJxKHN0 cnVjdCB2Y3B1ICp2KQo+ID4gICAgICAgICAgICFuZXN0ZWRodm1fdmNwdV9pbl9ndWVzdG1vZGUo dikgKQo+ID4gICAgICAgICAgcmV0dXJuIGlycjsKPiA+Cj4gPiArICAgIC8qCj4gPiArICAgICAq IElmIEFQSUMgYXNzaXN0IHdhcyB1c2VkIHRoZW4gdGhlcmUgbWF5IGhhdmUgYmVlbiBubyBFT0kg c28KPiA+ICsgICAgICogd2UgbmVlZCB0byBjbGVhciB0aGUgcmVxdWlzaXRlIGJpdCBmcm9tIHRo ZSBJU1IgaGVyZSwgYmVmb3JlCj4gPiArICAgICAqIGNvbXBhcmluZyB3aXRoIHRoZSBJUlIuCj4g PiArICAgICAqLwo+ID4gKyAgICBpZiAoIHZpcmlkaWFuX2NvbXBsZXRlX2FwaWNfYXNzaXN0KHYs ICZ2ZWN0b3IpICYmCj4gPiArICAgICAgICAgdmVjdG9yICE9IC0xICkKPiA+ICsgICAgICAgIHZs YXBpY19jbGVhcl92ZWN0b3IodmVjdG9yLCAmdmxhcGljLT5yZWdzLT5kYXRhW0FQSUNfSVNSXSk7 Cj4gPiArCj4gPiAgICAgIGlzciA9IHZsYXBpY19maW5kX2hpZ2hlc3RfaXNyKHZsYXBpYyk7Cj4g PiAgICAgIGlzciA9IChpc3IgIT0gLTEpID8gaXNyIDogMDsKPiA+ICAgICAgaWYgKCAoaXNyICYg MHhmMCkgPj0gKGlyciAmIDB4ZjApICkKPiA+ICsgICAgewo+ID4gKyAgICAgICAgLyoKPiA+ICsg ICAgICAgICAqIFRoZXJlJ3MgYWxyZWFkeSBhIGhpZ2hlciBwcmlvcml0eSB2ZWN0b3IgcGVuZGlu ZyBzbwo+ID4gKyAgICAgICAgICogd2UgbmVlZCB0byBhYm9ydCBhbnkgcHJldmlvdXMgQVBJQyBh c3Npc3QgdG8gZW5zdXJlIHRoZXJlCj4gPiArICAgICAgICAgKiBpcyBhbiBFT0kuCj4gPiArICAg ICAgICAgKi8KPiA+ICsgICAgICAgIHZpcmlkaWFuX2Fib3J0X2FwaWNfYXNzaXN0KHYpOwo+ID4g ICAgICAgICAgcmV0dXJuIC0xOwo+ID4gKyAgICB9Cj4gPgo+ID4gICAgICByZXR1cm4gaXJyOwo+ ID4gIH0KPiA+IEBAIC0xMTgxLDEzICsxMjExLDI5IEBAIGludCB2bGFwaWNfaGFzX3BlbmRpbmdf aXJxKHN0cnVjdCB2Y3B1ICp2KQo+ID4gIGludCB2bGFwaWNfYWNrX3BlbmRpbmdfaXJxKHN0cnVj dCB2Y3B1ICp2LCBpbnQgdmVjdG9yLCBib29sX3QgZm9yY2VfYWNrKQo+ID4gIHsKPiA+ICAgICAg c3RydWN0IHZsYXBpYyAqdmxhcGljID0gdmNwdV92bGFwaWModik7Cj4gPiArICAgIGludCBpc3I7 Cj4gPgo+ID4gLSAgICBpZiAoIGZvcmNlX2FjayB8fCAhdmxhcGljX3ZpcnR1YWxfaW50cl9kZWxp dmVyeV9lbmFibGVkKCkgKQo+ID4gLSAgICB7Cj4gPiAtICAgICAgICB2bGFwaWNfc2V0X3ZlY3Rv cih2ZWN0b3IsICZ2bGFwaWMtPnJlZ3MtPmRhdGFbQVBJQ19JU1JdKTsKPiA+IC0gICAgICAgIHZs YXBpY19jbGVhcl9pcnIodmVjdG9yLCB2bGFwaWMpOwo+ID4gLSAgICB9Cj4gPiArICAgIGlmICgg IWZvcmNlX2FjayAmJgo+ID4gKyAgICAgICAgIHZsYXBpY192aXJ0dWFsX2ludHJfZGVsaXZlcnlf ZW5hYmxlZCgpICkKPiA+ICsgICAgICAgIHJldHVybiAxOwo+ID4gKwo+ID4gKyAgICBpZiAoIHZs YXBpY190ZXN0X3ZlY3Rvcih2ZWN0b3IsICZ2bGFwaWMtPnJlZ3MtPmRhdGFbQVBJQ19UTVJdKSAp Cj4gPiArICAgICAgICBnb3RvIGRvbmU7Cj4gPiArCj4gPiArICAgIGlzciA9IHZsYXBpY19maW5k X2xvd2VzdF92ZWN0b3IoJnZsYXBpYy0+cmVncy0+ZGF0YVtBUElDX0lTUl0pOwo+ID4gKyAgICBp ZiAoIGlzciA+PSAwICYmIGlzciA8IHZlY3RvciApCj4gPiArICAgICAgICBnb3RvIGRvbmU7Cj4g PiArCj4gPiArICAgIC8qCj4gPiArICAgICAqIFRoaXMgdmVjdG9yIGlzIGVkZ2UgdHJpZ2dlcmVk IGFuZCB0aGVyZSBhcmUgbm8gbG93ZXIgcHJpb3JpdHkKPiA+ICsgICAgICogdmVjdG9ycyBwZW5k aW5nLCBzbyB3ZSBjYW4gdXNlIEFQSUMgYXNzaXN0IHRvIGF2b2lkIGV4aXRpbmcKPiA+ICsgICAg ICogZm9yIEVPSS4KPiA+ICsgICAgICovCj4gPiArICAgIHZpcmlkaWFuX3N0YXJ0X2FwaWNfYXNz aXN0KHYsIHZlY3Rvcik7Cj4gPgo+ID4gK2RvbmU6Cj4gPiArICAgIHZsYXBpY19zZXRfdmVjdG9y KHZlY3RvciwgJnZsYXBpYy0+cmVncy0+ZGF0YVtBUElDX0lTUl0pOwo+ID4gKyAgICB2bGFwaWNf Y2xlYXJfaXJyKHZlY3RvciwgdmxhcGljKTsKPiA+ICAgICAgcmV0dXJuIDE7Cj4gPiAgfQo+ID4K PiA+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92aXJpZGlhbi5oIGIveGVu L2luY2x1ZGUvYXNtLQo+IHg4Ni9odm0vdmlyaWRpYW4uaAo+ID4gaW5kZXggYzYwYzExMy4uNjU4 ZDQ2YSAxMDA2NDQKPiA+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZpcmlkaWFuLmgK PiA+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZpcmlkaWFuLmgKPiA+IEBAIC0yNSw2 ICsyNSw3IEBAIHN0cnVjdCB2aXJpZGlhbl92Y3B1Cj4gPiAgICAgICAgICB1bmlvbiB2aXJpZGlh bl9hcGljX2Fzc2lzdCBtc3I7Cj4gPiAgICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOwo+ ID4gICAgICAgICAgdm9pZCAqdmE7Cj4gPiArICAgICAgICBpbnQgdmVjdG9yOwo+ID4gICAgICB9 IGFwaWNfYXNzaXN0Owo+ID4gICAgICBjcHVtYXNrX3Zhcl90IGZsdXNoX2NwdW1hc2s7Cj4gPiAg fTsKPiA+IEBAIC0xMjUsNiArMTI2LDEwIEBAIHZvaWQgdmlyaWRpYW5fdGltZV9yZWZfY291bnRf dGhhdyhzdHJ1Y3QgZG9tYWluCj4gKmQpOwo+ID4gIGludCB2aXJpZGlhbl92Y3B1X2luaXQoc3Ry dWN0IHZjcHUgKnYpOwo+ID4gIHZvaWQgdmlyaWRpYW5fdmNwdV9kZWluaXQoc3RydWN0IHZjcHUg KnYpOwo+ID4KPiA+ICt2b2lkIHZpcmlkaWFuX3N0YXJ0X2FwaWNfYXNzaXN0KHN0cnVjdCB2Y3B1 ICp2LCBpbnQgdmVjdG9yKTsKPiA+ICtib29sX3QgdmlyaWRpYW5fY29tcGxldGVfYXBpY19hc3Np c3Qoc3RydWN0IHZjcHUgKnYsIGludCAqdmVjdG9yKTsKPiA+ICt2b2lkIHZpcmlkaWFuX2Fib3J0 X2FwaWNfYXNzaXN0KHN0cnVjdCB2Y3B1ICp2KTsKPiA+ICsKPiA+ICAjZW5kaWYgLyogX19BU01f WDg2X0hWTV9WSVJJRElBTl9IX18gKi8KPiA+Cj4gPiAgLyoKPiA+IGRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS9wdWJsaWMvaHZtL3BhcmFtcy5oCj4gYi94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL3Bh cmFtcy5oCj4gPiBpbmRleCA3M2Q0NzE4Li5lNjljNzJjIDEwMDY0NAo+ID4gLS0tIGEveGVuL2lu Y2x1ZGUvcHVibGljL2h2bS9wYXJhbXMuaAo+ID4gKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2h2 bS9wYXJhbXMuaAo+ID4gQEAgLTExNSwxMiArMTE1LDE3IEBACj4gPiAgI2RlZmluZSBfSFZNUFZf aGNhbGxfcmVtb3RlX3RsYl9mbHVzaCA0Cj4gPiAgI2RlZmluZSBIVk1QVl9oY2FsbF9yZW1vdGVf dGxiX2ZsdXNoICgxIDw8Cj4gX0hWTVBWX2hjYWxsX3JlbW90ZV90bGJfZmx1c2gpCj4gPgo+ID4g Ky8qIFVzZSBBUElDIGFzc2lzdCAqLwo+ID4gKyNkZWZpbmUgX0hWTVBWX2FwaWNfYXNzaXN0IDUK PiA+ICsjZGVmaW5lIEhWTVBWX2FwaWNfYXNzaXN0ICgxIDw8IF9IVk1QVl9hcGljX2Fzc2lzdCkK PiA+ICsKPiA+ICAjZGVmaW5lIEhWTVBWX2ZlYXR1cmVfbWFzayBcCj4gPiAgICAgICAgICAoSFZN UFZfYmFzZV9mcmVxIHwgXAo+ID4gICAgICAgICAgIEhWTVBWX25vX2ZyZXEgfCBcCj4gPiAgICAg ICAgICAgSFZNUFZfdGltZV9yZWZfY291bnQgfCBcCj4gPiAgICAgICAgICAgSFZNUFZfcmVmZXJl bmNlX3RzYyB8IFwKPiA+IC0gICAgICAgICBIVk1QVl9oY2FsbF9yZW1vdGVfdGxiX2ZsdXNoKQo+ ID4gKyAgICAgICAgIEhWTVBWX2hjYWxsX3JlbW90ZV90bGJfZmx1c2ggfCBcCj4gPiArICAgICAg ICAgSFZNUFZfYXBpY19hc3Npc3QpCj4gPgo+ID4gICNlbmRpZgo+ID4KPiA+IC0tCj4gPiAyLjEu NAo+ID4KPiA+Cj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+ID4gWGVuLWRldmVsIG1haWxpbmcgbGlzdAo+ID4gWGVuLWRldmVsQGxpc3RzLnhlbi5v cmcKPiA+IGh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK