From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v2 REPOST 12/12] x86/hvm/ioreq: add a new mappable resource type... Date: Fri, 25 Aug 2017 09:46:48 +0000 Message-ID: <0dfc8ba4732d415d853246f9cc130acc@AMSPEX02CL03.citrite.net> References: <20170822145107.6877-1-paul.durrant@citrix.com> <20170822145107.6877-13-paul.durrant@citrix.com> <20170825093229.ovlfy3syp3ji2uaq@dhcp-3-128.uk.xensource.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 1dlBCV-0006XJ-Mj for xen-devel@lists.xenproject.org; Fri, 25 Aug 2017 09:46:51 +0000 In-Reply-To: <20170825093229.ovlfy3syp3ji2uaq@dhcp-3-128.uk.xensource.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: Roger Pau Monne Cc: Stefano Stabellini , Wei Liu , Andrew Cooper , "Tim (Xen.org)" , George Dunlap , Jan Beulich , Ian Jackson , "xen-devel@lists.xenproject.org" List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IFJvZ2VyIFBhdSBNb25uZQo+IFNl bnQ6IDI1IEF1Z3VzdCAyMDE3IDEwOjMyCj4gVG86IFBhdWwgRHVycmFudCA8UGF1bC5EdXJyYW50 QGNpdHJpeC5jb20+Cj4gQ2M6IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZzsgU3RlZmFu byBTdGFiZWxsaW5pCj4gPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+OyBXZWkgTGl1IDx3ZWkubGl1 MkBjaXRyaXguY29tPjsgR2VvcmdlIER1bmxhcAo+IDxHZW9yZ2UuRHVubGFwQGNpdHJpeC5jb20+ OyBBbmRyZXcgQ29vcGVyCj4gPEFuZHJldy5Db29wZXIzQGNpdHJpeC5jb20+OyBJYW4gSmFja3Nv biA8SWFuLkphY2tzb25AY2l0cml4LmNvbT47IFRpbQo+IChYZW4ub3JnKSA8dGltQHhlbi5vcmc+ OyBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Cj4gU3ViamVjdDogUmU6IFtYZW4tZGV2 ZWxdIFtQQVRDSCB2MiBSRVBPU1QgMTIvMTJdIHg4Ni9odm0vaW9yZXE6IGFkZCBhCj4gbmV3IG1h cHBhYmxlIHJlc291cmNlIHR5cGUuLi4KPiAKPiBPbiBUdWUsIEF1ZyAyMiwgMjAxNyBhdCAwMzo1 MTowNlBNICswMTAwLCBQYXVsIER1cnJhbnQgd3JvdGU6Cj4gPiAuLi4gWEVOTUVNX3Jlc291cmNl X2lvcmVxX3NlcnZlcgo+ID4KPiA+IFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBhIG5ldyBy ZXNvdXJjZSB0eXBlIHRoYXQgY2FuIGJlIG1hcHBlZCB1c2luZwo+ID4gdGhlIFhFTk1FTV9hY3F1 aXJlX3Jlc291cmNlIG1lbW9yeSBvcC4KPiA+Cj4gPiBJZiBhbiBlbXVsYXRvciBtYWtlcyB1c2Ug b2YgdGhpcyByZXNvdXJjZSB0eXBlIHRoZW4sIGluc3RlYWQgb2YgbWFwcGluZwo+ID4gZ2Zucywg dGhlIElPUkVRIHNlcnZlciB3aWxsIGFsbG9jYXRlIHBhZ2VzIGZyb20gdGhlIGhlYXAuIFRoZXNl IHBhZ2VzCj4gPiB3aWxsIG5ldmVyIGJlIHByZXNlbnQgaW4gdGhlIFAyTSBvZiB0aGUgZ3Vlc3Qg YXQgYW55IHBvaW50IGFuZCBzbyBhcmUKPiA+IG5vdCB2dWxuZXJhYmxlIHRvIGFueSBkaXJlY3Qg YXR0YWNrIGJ5IHRoZSBndWVzdC4gVGhleSBhcmUgb25seSBldmVyCj4gPiBhY2Nlc3NpYmxlIGJ5 IFhlbiBhbmQgYW55IGRvbWFpbiB0aGF0IGhhcyBtYXBwaW5nIHByaXZpbGVnZSBvdmVyIHRoZQo+ ID4gZ3Vlc3QgKHdoaWNoIG1heSBvciBtYXkgbm90IGJlIGxpbWl0ZWQgdG8gdGhlIGRvbWFpbiBy dW5uaW5nIHRoZQo+IGVtdWxhdG9yKS4KPiA+Cj4gPiBOT1RFOiBVc2Ugb2YgdGhlIG5ldyByZXNv dXJjZSB0eXBlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdXNlIG9mCj4gPiAgICAgICBYRU5fRE1P UF9nZXRfaW9yZXFfc2VydmVyX2luZm8gdW5sZXNzIHRoZSBYRU5fRE1PUF9ub19nZm5zCj4gZmxh ZyBpcwo+ID4gICAgICAgc2V0Lgo+ID4KPiA+IFNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFudCA8 cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Cj4gPiAtLS0KPiA+IENjOiBKYW4gQmV1bGljaCA8amJl dWxpY2hAc3VzZS5jb20+Cj4gPiBDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0 cml4LmNvbT4KPiA+IENjOiBHZW9yZ2UgRHVubGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5j b20+Cj4gPiBDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+Cj4gPiBD YzogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgo+ID4gQ2M6 IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KPiA+IENjOiBUaW0g RGVlZ2FuIDx0aW1AeGVuLm9yZz4KPiA+IENjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29t Pgo+ID4gLS0tCj4gPiAgeGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jICAgICAgICB8IDEzNgo+ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ICB4ZW4vYXJjaC94ODYv bW0uYyAgICAgICAgICAgICAgIHwgIDI3ICsrKysrKysrCj4gPiAgeGVuL2luY2x1ZGUvYXNtLXg4 Ni9odm0vaW9yZXEuaCB8ICAgMiArCj4gPiAgeGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5o ICB8ICAgNCArKwo+ID4gIHhlbi9pbmNsdWRlL3B1YmxpYy9tZW1vcnkuaCAgICAgfCAgIDMgKwo+ ID4gIDUgZmlsZXMgY2hhbmdlZCwgMTcyIGluc2VydGlvbnMoKykKPiA+Cj4gPiBkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jIGIveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCj4g PiBpbmRleCA3OTVjMTk4Zjk1Li45ZTY4MzhkYWI2IDEwMDY0NAo+ID4gLS0tIGEveGVuL2FyY2gv eDg2L2h2bS9pb3JlcS5jCj4gPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKPiA+IEBA IC0yMzEsNiArMjMxLDE1IEBAIHN0YXRpYyBpbnQgaHZtX21hcF9pb3JlcV9nZm4oc3RydWN0Cj4g aHZtX2lvcmVxX3NlcnZlciAqcywgYm9vbCBidWYpCj4gPiAgICAgIHN0cnVjdCBodm1faW9yZXFf cGFnZSAqaW9ycCA9IGJ1ZiA/ICZzLT5idWZpb3JlcSA6ICZzLT5pb3JlcTsKPiA+ICAgICAgaW50 IHJjOwo+ID4KPiA+ICsgICAgaWYgKCBpb3JwLT5wYWdlICkKPiA+ICsgICAgewo+ID4gKyAgICAg ICAgLyogTWFrZSBzdXJlIHRoZSBwYWdlIGhhcyBub3QgYmVlbiBhbGxvY2F0ZWQgKi8KPiA+ICsg ICAgICAgIGlmICggZ2ZuX2VxKGlvcnAtPmdmbiwgSU5WQUxJRF9HRk4pICkKPiA+ICsgICAgICAg ICAgICByZXR1cm4gLUVQRVJNOwo+ID4gKwo+ID4gKyAgICAgICAgcmV0dXJuIDA7Cj4gCj4gRUVY SVNUPyAoU2VlIGNvbW1lbnQgYmVsb3csIHdoaWNoIEkgdGhpbmsgYWxzbyBhcHBsaWVzIGhlcmUp Lgo+IAo+ID4gKyAgICB9Cj4gPiArCj4gPiAgICAgIGlmICggZC0+aXNfZHlpbmcgKQo+ID4gICAg ICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPgo+ID4gQEAgLTI1Myw2ICsyNjIsNjAgQEAgc3RhdGlj IGludCBodm1fbWFwX2lvcmVxX2dmbihzdHJ1Y3QKPiBodm1faW9yZXFfc2VydmVyICpzLCBib29s IGJ1ZikKPiA+ICAgICAgcmV0dXJuIHJjOwo+ID4gIH0KPiA+Cj4gPiArc3RhdGljIGludCBodm1f YWxsb2NfaW9yZXFfbWZuKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLCBib29sIGJ1ZikKPiA+ ICt7Cj4gPiArICAgIHN0cnVjdCBkb21haW4gKmN1cnJkID0gY3VycmVudC0+ZG9tYWluOwo+ID4g KyAgICBzdHJ1Y3QgaHZtX2lvcmVxX3BhZ2UgKmlvcnAgPSBidWYgPyAmcy0+YnVmaW9yZXEgOiAm cy0+aW9yZXE7Cj4gPiArCj4gPiArICAgIGlmICggaW9ycC0+cGFnZSApCj4gPiArICAgIHsKPiA+ ICsgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGUgcGFnZSBoYXMgbm90IGJlZW4gbWFwcGVkICovCj4g PiArICAgICAgICBpZiAoICFnZm5fZXEoaW9ycC0+Z2ZuLCBJTlZBTElEX0dGTikgKQo+ID4gKyAg ICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4gPiArCj4gPiArICAgICAgICByZXR1cm4gMDsKPiAK PiBTaG91bGRuJ3QgdGhpcyByZXR1cm4gRUVYSVNUPyBQYWdlIGhhcyBhbHJlYWR5IGJlZW4gYWxs b2NhdGVkIGJ5IGEKPiBwcmV2aW91cyBjYWxsIEFGQUlDVCwgYW5kIGl0IHNlZW1zIGxpa2UgYSBw b3NzaWJsZSBlcnJvci9taXNiZWhhdmlvcgo+IHRvIHRyeSB0byBkbyBpdCB0d2ljZS4KPiAKClRo ZSBjaGVja3MgYXJlIHRoZXJlIHRvIHByZXZlbnQgYSBjYWxsZXIgZnJvbSB0cnlpbmcgdG8gbWl4 IHRoZSBsZWdhY3kgYW5kIG5ldyBtZXRob2RzIG9mIG1hcHBpbmcgaW9yZXEgc2VydmVyIHBhZ2Vz IHNvIEVQRVJNIChpLmUuICdvcGVyYXRpb24gbm90IHBlcm1pdHRlZCcpIHNlZW1zIGxpa2UgdGhl IGNvcnJlY3QgZXJyb3IuIEkgYWdyZWUgdGhhdCBpdCdzIG5vdCBvYnZpb3VzLCBhdCB0aGlzIGlu bmVyIGxldmVsLCB0aGF0IEkgZG8gdGhpbmsgdGhpcyBpcyByaWdodC4gSSdtIG9wZW4gdG8gZGVi YXRlIGFib3V0IHRoaXMgdGhvdWdoLgoKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICAvKgo+ID4g KyAgICAgKiBBbGxvY2F0ZWQgSU9SRVEgc2VydmVyIHBhZ2VzIGFyZSBhc3NpZ25lZCB0byB0aGUg ZW11bGF0aW5nCj4gPiArICAgICAqIGRvbWFpbiwgbm90IHRoZSB0YXJnZXQgZG9tYWluLiBUaGlz IGlzIGJlY2F1c2UgdGhlIGVtdWxhdG9yIGlzCj4gPiArICAgICAqIGxpa2VseSB0byBiZSBkZXN0 cm95ZWQgYWZ0ZXIgdGhlIHRhcmdldCBkb21haW4gaGFzIGJlZW4gdG9ybgo+ID4gKyAgICAgKiBk b3duLCBhbmQgd2UgbXVzdCB1c2UgTUVNRl9ub19yZWZjb3VudCBvdGhlcndpc2UgcGFnZQo+IGFs bG9jYXRpb24KPiA+ICsgICAgICogY291bGQgZmFpbCBpZiB0aGUgZW11bGF0aW5nIGRvbWFpbiBo YXMgYWxyZWFkeSByZWFjaGVkIGl0cwo+ID4gKyAgICAgKiBtYXhpbXVtIGFsbG9jYXRpb24uCj4g PiArICAgICAqLwo+ID4gKyAgICBpb3JwLT5wYWdlID0gYWxsb2NfZG9taGVhcF9wYWdlKGN1cnJk LCBNRU1GX25vX3JlZmNvdW50KTsKPiAKPiBJIGRvbid0IHJlYWxseSBsaWtlIHRoZSBmYWN0IHRo YXQgdGhlIHBhZ2UgaXMgbm90IGFjY291bnRlZCBmb3IgYW55Cj4gZG9tYWluLCBidXQgSSBjYW4g c2VlIHRoZSBwb2ludCBpbiBkb2luZyBpdCBsaWtlIHRoYXQgKHdoaWNoIHlvdQo+IGFyZ3VtZW50 IGluIHRoZSBjb21tZW50KS4KPiAKPiBJSVJDIHRoZXJlIHdoZXJlIHRhbGtzIGFib3V0IHRpZ2h0 ZW5pbmcgdGhlIGFjY291bnRpbmcgb2YgbWVtb3J5Cj4gcGFnZXMsIHNvIHRoYXQgaWRlYWxseSBl dmVyeXRoaW5nIHdvdWxkIGJlIGFjY291bnRlZCBmb3IgaW4gdGhlIG1lbW9yeQo+IGFzc2lnbmVk IHRvIHRoZSBkb21haW4uCj4gCj4gSnVzdCBzb21lIHJhbmRvbSB0aHJvdWdoLCBidXQgY291bGQg dGhlIHRvb2xzdGFjayBzZXQgYXNpZGUgc29tZQo+IG1lbW9yeSBwYWdlcyAoaWU6IG5vdCBtYXAg dGhlbSBpbnRvIHRoZSBkb21haW4gcDJtKSwgdGhhdCBjb3VsZCB0aGVuCj4gYmUgdXNlZCBieSB0 aGlzPyAobm90IGFza2luZyB5b3UgdG8gZG8gdGhpcyBoZXJlKQo+IAo+IEFuZCBob3cgbWFueSBw YWdlcyBhcmUgd2UgZXhwZWN0aW5nIHRvIHVzZSBmb3IgZWFjaCBkb21haW4/IEkgYXNzdW1lCj4g dGhlIG51bWJlciB3aWxsIGJlIHF1aXRlIGxvdy4KPiAKClllcywgSSBhZ3JlZSB0aGUgdXNlIG9u IE1FTUZfbm9fcmVmY291bnQgaXMgbm90IGlkZWFsIGFuZCB5b3UgZG8gaGlnaGxpZ2h0IGFuIGlz c3VlOiBJIGRvbid0IHRoaW5rIHRoZXJlIGlzIGN1cnJlbnRseSBhbiB1cHBlciBsaW1pdCBvbiB0 aGUgbnVtYmVyIG9mIGlvcmVxIHNlcnZlcnMgc28gYW4gZW11bGF0aW5nIGRvbWFpbiBjb3VsZCBl eGhhdXN0IG1lbW9yeSB1c2luZyB0aGUgbmV3IHNjaGVtZS4gSSdsbCBuZWVkIHRvIGludHJvZHVj ZSBhIGxpbWl0IHRvIGF2b2lkIHRoYXQuCgo+ID4gKyAgICBpZiAoICFpb3JwLT5wYWdlICkKPiA+ ICsgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4gKwo+ID4gKyAgICBnZXRfcGFnZShpb3JwLT5w YWdlLCBjdXJyZCk7Cj4gCj4gRG8geW91IHJlYWxseSBuZWVkIHRoaXMgZ2V0X3BhZ2U/IChwYWdl IGlzIGFscmVhZHkgYXNzaWduZWQgdG8gY3VycmQpLgo+IAoKSG1tLiBJIHRob3VnaHQgTUVNRl9u b19yZWZjb3VudCBtb2RpZmllZCB0aGF0IGJlaGF2aW91ciwgYnV0IEkgbWF5IGhhdmUgZ290IGNv bmZ1c2VkIHdpdGggTUVNRl9ub19vd25lci4KCj4gPiArCj4gPiArICAgIGlvcnAtPnZhID0gX19t YXBfZG9tYWluX3BhZ2VfZ2xvYmFsKGlvcnAtPnBhZ2UpOwo+ID4gKyAgICBpZiAoICFpb3JwLT52 YSApCj4gPiArICAgIHsKPiA+ICsgICAgICAgIHB1dF9wYWdlKGlvcnAtPnBhZ2UpOwo+ID4gKyAg ICAgICAgaW9ycC0+cGFnZSA9IE5VTEw7Cj4gPiArICAgICAgICByZXR1cm4gLUVOT01FTTsKPiA+ ICsgICAgfQo+ID4gKwo+ID4gKyAgICBjbGVhcl9wYWdlKGlvcnAtPnZhKTsKPiA+ICsgICAgcmV0 dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIGh2bV9mcmVlX2lvcmVxX21mbihz dHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywgYm9vbCBidWYpCj4gPiArewo+ID4gKyAgICBzdHJ1 Y3QgaHZtX2lvcmVxX3BhZ2UgKmlvcnAgPSBidWYgPyAmcy0+YnVmaW9yZXEgOiAmcy0+aW9yZXE7 Cj4gPiArCj4gPiArICAgIGlmICggIWlvcnAtPnBhZ2UgKQo+ID4gKyAgICAgICAgcmV0dXJuOwo+ ID4gKwo+ID4gKyAgICB1bm1hcF9kb21haW5fcGFnZV9nbG9iYWwoaW9ycC0+dmEpOwo+ID4gKyAg ICBpb3JwLT52YSA9IE5VTEw7Cj4gPiArCj4gPiArICAgIHB1dF9wYWdlKGlvcnAtPnBhZ2UpOwo+ ID4gKyAgICBpb3JwLT5wYWdlID0gTlVMTDsKPiA+ICt9Cj4gPiArCj4gPiAgYm9vbCBpc19pb3Jl cV9zZXJ2ZXJfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBjb25zdCBzdHJ1Y3QgcGFnZV9pbmZvCj4g KnBhZ2UpCj4gPiAgewo+ID4gICAgICBjb25zdCBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsK PiA+IEBAIC00NTcsNiArNTIwLDI3IEBAIHN0YXRpYyB2b2lkCj4gaHZtX2lvcmVxX3NlcnZlcl91 bm1hcF9wYWdlcyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcykKPiA+ICAgICAgaHZtX3VubWFw X2lvcmVxX2dmbihzLCBmYWxzZSk7Cj4gPiAgfQo+ID4KPiA+ICtzdGF0aWMgaW50IGh2bV9pb3Jl cV9zZXJ2ZXJfYWxsb2NfcGFnZXMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMpCj4gPiArewo+ ID4gKyAgICBpbnQgcmMgPSAtRU5PTUVNOwo+ID4gKwo+ID4gKyAgICByYyA9IGh2bV9hbGxvY19p b3JlcV9tZm4ocywgZmFsc2UpOwo+ID4gKwo+ID4gKyAgICBpZiAoICFyYyAmJiAocy0+YnVmaW9y ZXFfaGFuZGxpbmcgIT0gSFZNX0lPUkVRU1JWX0JVRklPUkVRX09GRikgKQo+ID4gKyAgICAgICAg cmMgPSBodm1fYWxsb2NfaW9yZXFfbWZuKHMsIHRydWUpOwo+ID4gKwo+ID4gKyAgICBpZiAoIHJj ICkKPiA+ICsgICAgICAgIGh2bV9mcmVlX2lvcmVxX21mbihzLCBmYWxzZSk7Cj4gPiArCj4gPiAr ICAgIHJldHVybiByYzsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgaHZtX2lvcmVxX3Nl cnZlcl9mcmVlX3BhZ2VzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQo+ID4gK3sKPiA+ICsg ICAgaHZtX2ZyZWVfaW9yZXFfbWZuKHMsIHRydWUpOwo+ID4gKyAgICBodm1fZnJlZV9pb3JlcV9t Zm4ocywgZmFsc2UpOwo+ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMgdm9pZCBodm1faW9yZXFfc2Vy dmVyX2ZyZWVfcmFuZ2VzZXRzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyCj4gKnMpCj4gPiAgewo+ ID4gICAgICB1bnNpZ25lZCBpbnQgaTsKPiA+IEBAIC01ODMsNyArNjY3LDE4IEBAIHN0YXRpYyBp bnQgaHZtX2lvcmVxX3NlcnZlcl9pbml0KHN0cnVjdAo+IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCj4g Pgo+ID4gICBmYWlsX2FkZDoKPiA+ICAgICAgaHZtX2lvcmVxX3NlcnZlcl9yZW1vdmVfYWxsX3Zj cHVzKHMpOwo+ID4gKwo+ID4gKyAgICAvKgo+ID4gKyAgICAgKiBOT1RFOiBJdCBpcyBzYWZlIHRv IGNhbGwgYm90aCBodm1faW9yZXFfc2VydmVyX3VubWFwX3BhZ2VzKCkgYW5kCj4gPiArICAgICAq ICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZnJlZV9wYWdlcygpIGluIHRoYXQgb3JkZXIuCj4gPiAr ICAgICAqICAgICAgIFRoaXMgaXMgYmVjYXVzZSB0aGUgZm9ybWVyIHdpbGwgZG8gbm90aGluZyBp ZiB0aGUgcGFnZXMKPiA+ICsgICAgICogICAgICAgYXJlIG5vdCBtYXBwZWQsIGxlYXZpbmcgdGhl IHBhZ2UgdG8gYmUgZnJlZWQgYnkgdGhlIGxhdHRlci4KPiA+ICsgICAgICogICAgICAgSG93ZXZl ciBpZiB0aGUgcGFnZXMgYXJlIG1hcHBlZCB0aGVuIHRoZSBmb3JtZXIgd2lsbCBzZXQKPiA+ICsg ICAgICogICAgICAgdGhlIHBhZ2VfaW5mbyBwb2ludGVyIHRvIE5VTEwsIG1lYW5pbmcgdGhlIGxh dHRlciB3aWxsIGRvCj4gPiArICAgICAqICAgICAgIG5vdGhpbmcuCj4gPiArICAgICAqLwo+ID4g ICAgICBodm1faW9yZXFfc2VydmVyX3VubWFwX3BhZ2VzKHMpOwo+ID4gKyAgICBodm1faW9yZXFf c2VydmVyX2ZyZWVfcGFnZXMocyk7Cj4gPgo+ID4gICAgICByZXR1cm4gcmM7Cj4gPiAgfQo+ID4g QEAgLTU5Myw2ICs2ODgsNyBAQCBzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2RlaW5pdChz dHJ1Y3QKPiBodm1faW9yZXFfc2VydmVyICpzKQo+ID4gICAgICBBU1NFUlQoIXMtPmVuYWJsZWQp Owo+ID4gICAgICBodm1faW9yZXFfc2VydmVyX3JlbW92ZV9hbGxfdmNwdXMocyk7Cj4gPiAgICAg IGh2bV9pb3JlcV9zZXJ2ZXJfdW5tYXBfcGFnZXMocyk7Cj4gPiArICAgIGh2bV9pb3JlcV9zZXJ2 ZXJfZnJlZV9wYWdlcyhzKTsKPiA+ICAgICAgaHZtX2lvcmVxX3NlcnZlcl9mcmVlX3Jhbmdlc2V0 cyhzKTsKPiA+ICB9Cj4gPgo+ID4gQEAgLTc0NSw2ICs4NDEsOSBAQCBpbnQgaHZtX2dldF9pb3Jl cV9zZXJ2ZXJfaW5mbyhzdHJ1Y3QgZG9tYWluICpkLAo+IGlvc2VydmlkX3QgaWQsCj4gPiAgICAg ICAgICAgICAgcmMgPSBodm1faW9yZXFfc2VydmVyX21hcF9wYWdlcyhzKTsKPiA+ICAgICAgICAg ICAgICBpZiAoIHJjICkKPiA+ICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiArCj4gPiArICAg ICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sICJkJWQgaW9yZXEgc2VydmVyICV1IHVzaW5n IGdmbnNcbiIsCj4gPiArICAgICAgICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCBzLT5pZCk7 Cj4gPiAgICAgICAgICB9Cj4gPgo+ID4gICAgICAgICAgaWYgKCBpb3JlcV9nZm4gKQo+ID4gQEAg LTc2Nyw2ICs4NjYsNDMgQEAgaW50IGh2bV9nZXRfaW9yZXFfc2VydmVyX2luZm8oc3RydWN0IGRv bWFpbiAqZCwKPiBpb3NlcnZpZF90IGlkLAo+ID4gICAgICByZXR1cm4gcmM7Cj4gPiAgfQo+ID4K PiA+ICttZm5fdCBodm1fZ2V0X2lvcmVxX3NlcnZlcl9mcmFtZShzdHJ1Y3QgZG9tYWluICpkLCBp b3NlcnZpZF90IGlkLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBpZHgpCj4gPiArewo+ID4gKyAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsK PiA+ICsgICAgbWZuX3QgbWZuID0gSU5WQUxJRF9NRk47Cj4gPiArCj4gPiArICAgIHNwaW5fbG9j a19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7Cj4gPiAr Cj4gPiArICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBzLAo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZW50cnkgKQo+ID4gKyAgICB7Cj4gPiArICAgICAg ICBpbnQgcmM7Cj4gPiArCj4gPiArICAgICAgICBpZiAoIHMgPT0gZC0+YXJjaC5odm1fZG9tYWlu LmRlZmF1bHRfaW9yZXFfc2VydmVyICkKPiA+ICsgICAgICAgICAgICBjb250aW51ZTsKPiAKPiBz LT5pc19kZWZhdWx0Cj4gCj4gPiArCj4gPiArICAgICAgICBpZiAoIHMtPmlkICE9IGlkICkKPiA+ ICsgICAgICAgICAgICBjb250aW51ZTsKPiA+ICsKPiA+ICsgICAgICAgIHJjID0gaHZtX2lvcmVx X3NlcnZlcl9hbGxvY19wYWdlcyhzKTsKPiA+ICsgICAgICAgIGlmICggcmMgKQo+ID4gKyAgICAg ICAgICAgIGJyZWFrOwo+ID4gKwo+ID4gKyAgICAgICAgaWYgKCBpZHggPT0gMCApCj4gPiArICAg ICAgICAgICAgbWZuID0gX21mbihwYWdlX3RvX21mbihzLT5idWZpb3JlcS5wYWdlKSk7Cj4gPiAr ICAgICAgICBlbHNlIGlmICggaWR4ID09IDEgKQo+ID4gKyAgICAgICAgICAgIG1mbiA9IF9tZm4o cGFnZV90b19tZm4ocy0+aW9yZXEucGFnZSkpOwo+ID4gKwo+ID4gKyAgICAgICAgYnJlYWs7Cj4g PiArICAgIH0KPiA+ICsKPiA+ICsgICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZkLT5hcmNoLmh2 bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spOwo+ID4gKwo+ID4gKyAgICByZXR1cm4gbWZuOwo+ ID4gK30KPiA+ICsKPiA+ICBpbnQgaHZtX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXIoc3Ry dWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgc3RhcnQsCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGVuZCkKPiA+IGRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvbW0uYyBiL3hlbi9hcmNoL3g4Ni9tbS5jCj4gPiBpbmRleCA0ZTg2 ZjBhMmFiLi4zZTg0NWFmMGU0IDEwMDY0NAo+ID4gLS0tIGEveGVuL2FyY2gveDg2L21tLmMKPiA+ ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS5jCj4gPiBAQCAtMTIyLDYgKzEyMiw3IEBACj4gPiAgI2lu Y2x1ZGUgPGFzbS9maXhtYXAuaD4KPiA+ICAjaW5jbHVkZSA8YXNtL2lvX2FwaWMuaD4KPiA+ICAj aW5jbHVkZSA8YXNtL3BjaS5oPgo+ID4gKyNpbmNsdWRlIDxhc20vaHZtL2lvcmVxLmg+Cj4gPgo+ ID4gIC8qIE1hcHBpbmcgb2YgdGhlIGZpeG1hcCBzcGFjZSBuZWVkZWQgZWFybHkuICovCj4gPiAg bDFfcGdlbnRyeV90IF9fc2VjdGlvbigiLmJzcy5wYWdlX2FsaWduZWQiKSBfX2FsaWduZWQoUEFH RV9TSVpFKQo+ID4gQEAgLTQ3NDQsNiArNDc0NSwyNyBAQCBzdGF0aWMgaW50IHhlbm1lbV9hY3F1 aXJlX2dyYW50X3RhYmxlKHN0cnVjdAo+IGRvbWFpbiAqZCwKPiA+ICAgICAgcmV0dXJuIDA7Cj4g PiAgfQo+ID4KPiA+ICtzdGF0aWMgaW50IHhlbm1lbV9hY3F1aXJlX2lvcmVxX3NlcnZlcihzdHJ1 Y3QgZG9tYWluICpkLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBpZCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIGZyYW1lLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnJfZnJhbWVzLAo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuX2xpc3RbXSkKPiAKPiBt Zm5fdCBtYXliZT8KCk5vLiBUaGUgbGlzdCBpcyBtYXBwZWQgaW4gc28gdXNlIG9mIHR5cGVzYWZl IHZhcmlhbnRzIGlzIG5vdCBhcHByb3ByaWF0ZS4KCj4gCj4gPiArewo+ID4gKyAgICB1bnNpZ25l ZCBpbnQgaTsKPiAKPiBFaXRoZXIgbnJfZnJhbWVzIHdhbnRzIHRvIGJlIHVuc2lnbmVkIGludCwg b3IgdGhpcyBuZWVkcyB0byBiZQo+IHVuc2lnbmVkIGxvbmcuCgpOb3Qgc3VyZSB3aGljaC4gSSds bCBjaGVjay4KCj4gCj4gPiArCj4gPiArICAgIGZvciAoIGkgPSAwOyBpIDwgbnJfZnJhbWVzOyBp KysgKQo+ID4gKyAgICB7Cj4gPiArICAgICAgICBtZm5fdCBtZm4gPSBodm1fZ2V0X2lvcmVxX3Nl cnZlcl9mcmFtZShkLCBpZCwgZnJhbWUgKyBpKTsKPiAKPiBIZXJlIHlvdSB1c2UgdW5zaWduZWQg bG9uZyBhcyB0aGUgbGFzdCBwYXJhbWV0ZXIgdG8KPiBodm1fZ2V0X2lvcmVxX3NlcnZlcl9mcmFt ZSwgd2hpbGUgdGhlIGZ1bmN0aW9uIHRha2VzIGFuIHVuc2lnbmVkIGludC4KCk9rLgoKVGhhbmtz LAoKICBQYXVsCgo+IAo+IFRoYW5rcywgUm9nZXIuCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBs aXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK