From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v2 3/5] iommu: make iommu_inclusive_mapping a suboption of dom0-iommu Date: Wed, 1 Aug 2018 11:21:57 +0000 Message-ID: <064102f1845a4a128ed63b308d15e9ab@AMSPEX02CL03.citrite.net> References: <20180801110340.67695-1-roger.pau@citrix.com> <20180801110340.67695-4-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fkpCb-0005jJ-4V for xen-devel@lists.xenproject.org; Wed, 01 Aug 2018 11:22:01 +0000 In-Reply-To: <20180801110340.67695-4-roger.pau@citrix.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: "xen-devel@lists.xenproject.org" Cc: Kevin Tian , Stefano Stabellini , Wei Liu , Andrew Cooper , "Tim (Xen.org)" , George Dunlap , Julien Grall , Jan Beulich , Ian Jackson , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBYZW4tZGV2ZWwgW21haWx0bzp4 ZW4tZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24gQmVoYWxmDQo+IE9mIFJv Z2VyIFBhdSBNb25uZQ0KPiBTZW50OiAwMSBBdWd1c3QgMjAxOCAxMjowNA0KPiBUbzogeGVuLWRl dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IENjOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGlu dGVsLmNvbT47IFN0ZWZhbm8gU3RhYmVsbGluaQ0KPiA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz47 IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+OyBHZW9yZ2UgRHVubGFwDQo+IDxHZW9yZ2Uu RHVubGFwQGNpdHJpeC5jb20+OyBBbmRyZXcgQ29vcGVyDQo+IDxBbmRyZXcuQ29vcGVyM0BjaXRy aXguY29tPjsgSWFuIEphY2tzb24gPElhbi5KYWNrc29uQGNpdHJpeC5jb20+OyBUaW0NCj4gKFhl bi5vcmcpIDx0aW1AeGVuLm9yZz47IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+ OyBKYW4gQmV1bGljaA0KPiA8amJldWxpY2hAc3VzZS5jb20+OyBSb2dlciBQYXUgTW9ubmUgPHJv Z2VyLnBhdUBjaXRyaXguY29tPg0KPiBTdWJqZWN0OiBbWGVuLWRldmVsXSBbUEFUQ0ggdjIgMy81 XSBpb21tdTogbWFrZQ0KPiBpb21tdV9pbmNsdXNpdmVfbWFwcGluZyBhIHN1Ym9wdGlvbiBvZiBk b20wLWlvbW11DQo+IA0KPiBJbnRyb2R1Y2UgYSBuZXcgZG9tMC1pb21tdT1pbmNsdXNpdmUgZ2Vu ZXJpYyBvcHRpb24gdGhhdCBzdXBlcnNlZGVzDQo+IGlvbW11X2luY2x1c2l2ZV9tYXBwaW5nLiBU aGUgcHJldmNpb3VzIGJlaGF2aW91ciBpcyBwcmVzZXJ2ZWQgYW5kIHRoZQ0KDQpzL3ByZXZjaW91 cy9wcmV2aW91cw0KDQo+IG9wdGlvbiBzaG91bGQgb25seSBiZSBlbmFibGVkIGJ5IGRlZmF1bHQg b24gSW50ZWwgaGFyZHdhcmUuDQo+IA0KPiBObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZC4N Cj4gDQo+IFNpZ25lZC1vZmYtYnk6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXgu Y29tPg0KDQpPdGhlcndpc2UgTEdUTS4NCg0KUmV2aWV3ZWQtYnk6IFBhdWwgRHVycmFudCA8cGF1 bC5kdXJyYW50QGNpdHJpeC5jb20+DQoNCj4gLS0tDQo+IENoYW5nZXMgc2luY2UgdjE6DQo+ICAt IFVzZSBkb20wLWlvbW11IGluc3RlYWQgb2YgdGhlIGlvbW11IG9wdGlvbi4NCj4gIC0gT25seSBl bmFibGUgYnkgZGVmYXVsdCBvbiBJbnRlbCBoYXJkd2FyZS4NCj4gLS0tDQo+IENjOiBBbmRyZXcg Q29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPg0KPiBDYzogR2VvcmdlIER1bmxhcCA8 R2VvcmdlLkR1bmxhcEBldS5jaXRyaXguY29tPg0KPiBDYzogSWFuIEphY2tzb24gPGlhbi5qYWNr c29uQGV1LmNpdHJpeC5jb20+DQo+IENjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+ DQo+IENjOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPg0KPiBDYzogS29ucmFk IFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPg0KPiBDYzogU3RlZmFubyBT dGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPg0KPiBDYzogVGltIERlZWdhbiA8dGlt QHhlbi5vcmc+DQo+IENjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPg0KPiBDYzogS2V2 aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+DQo+IC0tLQ0KPiAgZG9jcy9taXNjL3hlbi1j b21tYW5kLWxpbmUubWFya2Rvd24gICB8IDE0ICsrKysrKysNCj4gIHhlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL2FybS9pb21tdS5jICAgfCAgNCArKw0KPiAgeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv aW9tbXUuYyAgICAgICB8ICA1ICsrKw0KPiAgeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2V4 dGVybi5oICB8ICAyIC0NCj4gIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jICAg fCAgNiAtLS0NCj4gIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC94ODYvdnRkLmMgfCA1OCAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAgeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2 L2lvbW11LmMgICB8IDYwDQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgeGVuL2lu Y2x1ZGUveGVuL2lvbW11LmggICAgICAgICAgICAgICB8ICAyICsNCj4gIDggZmlsZXMgY2hhbmdl ZCwgODYgaW5zZXJ0aW9ucygrKSwgNjUgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEv ZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24gYi9kb2NzL21pc2MveGVuLQ0KPiBj b21tYW5kLWxpbmUubWFya2Rvd24NCj4gaW5kZXggYTJhMDdjYzZjOC4uMzBkOTcwYmMyZSAxMDA2 NDQNCj4gLS0tIGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24NCj4gKysrIGIv ZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24NCj4gQEAgLTEyMzAsNiArMTIzMCwx NyBAQCBkZXRlY3Rpb24gb2Ygc3lzdGVtcyBrbm93biB0byBtaXNiZWhhdmUgdXBvbg0KPiBhY2Nl c3NlcyB0byB0aGF0IHBvcnQuDQo+ICA+PiBDb250cm9scyB3aGV0aGVyIHRvIHNldHVwIERNQSBy ZW1hcHBpbmdzIGZvciBhbGwgdGhlIGhvc3QgUkFNIGV4Y2VwdA0KPiByZWdpb25zDQo+ICA+PiBp biB1c2UgYnkgWGVuLg0KPiANCj4gKz4gYGluY2x1c2l2ZWANCj4gKw0KPiArPiBEZWZhdWx0OiBg dHJ1ZWAgb24gSW50ZWwgaGFyZHdhcmUsIGBmYWxzZWAgb3RoZXJ3aXNlDQo+ICsNCj4gKz4+IFVz ZSB0aGlzIHRvIHdvcmsgYXJvdW5kIGZpcm13YXJlIGlzc3VlcyBwcm92aWRpbmcgaW5jb3JyZWN0 IFJNUlIgb3INCj4gSVZNRA0KPiArPj4gZW50cmllcy4gUmF0aGVyIHRoYW4gb25seSBtYXBwaW5n IFJBTSBwYWdlcyBmb3IgSU9NTVUgYWNjZXNzZXMgZm9yDQo+IERvbTAsDQo+ICs+PiB3aXRoIHRo aXMgb3B0aW9uIGFsbCBwYWdlcyB1cCB0byA0R0IsIG5vdCBtYXJrZWQgYXMgdW51c2FibGUgaW4g dGhlIEU4MjANCj4gKz4+IHRhYmxlLCB3aWxsIGdldCBhIG1hcHBpbmcgZXN0YWJsaXNoZWQuIE5v dGUgdGhhdCB0aGlzIG9wdGlvbiBpcyBvbmx5DQo+ICs+PiBhcHBsaWNhYmxlIHRvIGEgUFYgZG9t MC4gQWxzbyBub3RlIHRoYXQgaWYgYHN0cmljdGAgbW9kZSBpcyBlbmFibGVkDQo+ICs+PiB0aGVu IGNvbnZlbnRpb25hbCBSQU0gcGFnZXMgbm90IGFzc2lnbmVkIHRvIGRvbTAgd2lsbCBub3QgYmUg bWFwcGVkLg0KPiArDQo+ICAjIyMgaW9tbXVcX2RldlxfaW90bGJcX3RpbWVvdXQNCj4gID4gYD0g PGludGVnZXI+YA0KPiANCj4gQEAgLTEyNDIsNiArMTI1Myw5IEBAIHdhaXQgZGVzY3JpcHRvciB0 aW1lZCBvdXQnLCB0cnkgaW5jcmVhc2luZyB0aGlzIHZhbHVlLg0KPiAgIyMjIGlvbW11XF9pbmNs dXNpdmVcX21hcHBpbmcgKFZULWQpDQo+ICA+IGA9IDxib29sZWFuPmANCj4gDQo+ICsqKldBUk5J Tkc6IFRoaXMgY29tbWFuZCBsaW5lIG9wdGlvbiBpcyBkZXByZWNhdGVkLCBhbmQgc3VwZXJzZWRl ZCBieQ0KPiArX2RvbTAtaW9tbXU9aW5jbHVzaXZlXyAtIHVzaW5nIGJvdGggb3B0aW9ucyBpbiBj b21iaW5hdGlvbiBpcw0KPiB1bmRlZmluZWQuKioNCj4gKw0KPiAgPiBEZWZhdWx0OiBgdHJ1ZWAN Cj4gDQo+ICBVc2UgdGhpcyB0byB3b3JrIGFyb3VuZCBmaXJtd2FyZSBpc3N1ZXMgcHJvdmlkaW5n IGluY29ycmVjdCBSTVJSIGVudHJpZXMuDQo+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC9hcm0vaW9tbXUuYw0KPiBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9pb21t dS5jDQo+IGluZGV4IDk1YjFhYmI5NzIuLjMyNTk5N2IxOWYgMTAwNjQ0DQo+IC0tLSBhL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9pb21tdS5jDQo+ICsrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL2FybS9pb21tdS5jDQo+IEBAIC03MywzICs3Myw3IEBAIGludCBhcmNoX2lvbW11X3Bv cHVsYXRlX3BhZ2VfdGFibGUoc3RydWN0IGRvbWFpbg0KPiAqZCkNCj4gICAgICAvKiBUaGUgSU9N TVUgc2hhcmVzIHRoZSBwMm0gd2l0aCB0aGUgQ1BVICovDQo+ICAgICAgcmV0dXJuIC1FTk9TWVM7 DQo+ICB9DQo+ICsNCj4gK3ZvaWQgX19od2RvbV9pbml0IGFyY2hfaW9tbXVfaHdkb21faW5pdChz dHJ1Y3QgZG9tYWluICpkKQ0KPiArew0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvaW9tbXUuYw0KPiBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMN Cj4gaW5kZXggODhlMjNiYmQwNC4uNjYxMWUxM2NjMiAxMDA2NDQNCj4gLS0tIGEveGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvaW9tbXUuYw0KPiArKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9p b21tdS5jDQo+IEBAIC03NCw2ICs3NCw3IEBAIGJvb2xfdCBfX3JlYWRfbW9zdGx5IGFtZF9pb21t dV9wZXJkZXZfaW50cmVtYXANCj4gPSAxOw0KPiAgY3VzdG9tX3BhcmFtKCJkb20wLWlvbW11Iiwg cGFyc2VfZG9tMF9pb21tdV9wYXJhbSk7DQo+ICBib29sIF9faHdkb21faW5pdGRhdGEgaW9tbXVf ZG9tMF9zdHJpY3Q7DQo+ICBib29sIF9fcmVhZF9tb3N0bHkgaW9tbXVfZG9tMF9wYXNzdGhyb3Vn aDsNCj4gK2ludDhfdCBfX2h3ZG9tX2luaXRkYXRhIGlvbW11X2RvbTBfaW5jbHVzaXZlID0gLTE7 DQo+IA0KPiAgREVGSU5FX1BFUl9DUFUoYm9vbF90LCBpb21tdV9kb250X2ZsdXNoX2lvdGxiKTsN Cj4gDQo+IEBAIC0xNTgsNiArMTU5LDggQEAgc3RhdGljIGludCBfX2luaXQgcGFyc2VfZG9tMF9p b21tdV9wYXJhbShjb25zdA0KPiBjaGFyICpzKQ0KPiAgICAgICAgICAgICAgaW9tbXVfZG9tMF9z dHJpY3QgPSB2YWw7DQo+ICAgICAgICAgIGVsc2UgaWYgKCAhc3RybmNtcChzLCAicmVsYXhlZCIs IHNzIC0gcykgKQ0KPiAgICAgICAgICAgICAgaW9tbXVfZG9tMF9zdHJpY3QgPSAhdmFsOw0KPiAr ICAgICAgICBlbHNlIGlmICggIXN0cm5jbXAocywgImluY2x1c2l2ZSIsIHNzIC0gcykgKQ0KPiAr ICAgICAgICAgICAgaW9tbXVfZG9tMF9pbmNsdXNpdmUgPSB2YWw7DQo+ICAgICAgICAgIGVsc2UN Cj4gICAgICAgICAgICAgIHJjID0gLUVJTlZBTDsNCj4gDQo+IEBAIC0yNDAsNiArMjQzLDggQEAg dm9pZCBfX2h3ZG9tX2luaXQgaW9tbXVfaHdkb21faW5pdChzdHJ1Y3QNCj4gZG9tYWluICpkKQ0K PiAgICAgIH0NCj4gDQo+ICAgICAgaGQtPnBsYXRmb3JtX29wcy0+aHdkb21faW5pdChkKTsNCj4g Kw0KPiArICAgIGFyY2hfaW9tbXVfaHdkb21faW5pdChkKTsNCj4gIH0NCj4gDQo+ICB2b2lkIGlv bW11X3RlYXJkb3duKHN0cnVjdCBkb21haW4gKmQpDQo+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC92dGQvZXh0ZXJuLmgNCj4gYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92 dGQvZXh0ZXJuLmgNCj4gaW5kZXggZmI3ZWRmYWVmOS4uOTFjYWRjNjAyZSAxMDA2NDQNCj4gLS0t IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2V4dGVybi5oDQo+ICsrKyBiL3hlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9leHRlcm4uaA0KPiBAQCAtOTksNiArOTksNCBAQCB2b2lkIHBj aV92dGRfcXVpcmsoY29uc3Qgc3RydWN0IHBjaV9kZXYgKik7DQo+ICBib29sX3QgcGxhdGZvcm1f c3VwcG9ydHNfaW50cmVtYXAodm9pZCk7DQo+ICBib29sX3QgcGxhdGZvcm1fc3VwcG9ydHNfeDJh cGljKHZvaWQpOw0KPiANCj4gLXZvaWQgdnRkX3NldF9od2RvbV9tYXBwaW5nKHN0cnVjdCBkb21h aW4gKmQpOw0KPiAtDQo+ICAjZW5kaWYgLy8gX1ZURF9FWFRFUk5fSF8NCj4gZGlmZiAtLWdpdCBh L3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jDQo+IGIveGVuL2RyaXZlcnMvcGFz c3Rocm91Z2gvdnRkL2lvbW11LmMNCj4gaW5kZXggOGFjNzc0MjE1Yi4uYzg4MGIwY2UyMSAxMDA2 NDQNCj4gLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMNCj4gKysrIGIv eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMNCj4gQEAgLTEzMDQsMTIgKzEzMDQs NiBAQCBzdGF0aWMgdm9pZCBfX2h3ZG9tX2luaXQNCj4gaW50ZWxfaW9tbXVfaHdkb21faW5pdChz dHJ1Y3QgZG9tYWluICpkKQ0KPiAgew0KPiAgICAgIHN0cnVjdCBhY3BpX2RyaGRfdW5pdCAqZHJo ZDsNCj4gDQo+IC0gICAgaWYgKCAhaW9tbXVfZG9tMF9wYXNzdGhyb3VnaCAmJiBpc19wdl9kb21h aW4oZCkgKQ0KPiAtICAgIHsNCj4gLSAgICAgICAgLyogU2V0IHVwIDE6MSBwYWdlIHRhYmxlIGZv ciBoYXJkd2FyZSBkb21haW4uICovDQo+IC0gICAgICAgIHZ0ZF9zZXRfaHdkb21fbWFwcGluZyhk KTsNCj4gLSAgICB9DQo+IC0NCj4gICAgICBzZXR1cF9od2RvbV9wY2lfZGV2aWNlcyhkLCBzZXR1 cF9od2RvbV9kZXZpY2UpOw0KPiAgICAgIHNldHVwX2h3ZG9tX3JtcnIoZCk7DQo+IA0KPiBkaWZm IC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3g4Ni92dGQuYw0KPiBiL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC94ODYvdnRkLmMNCj4gaW5kZXggMDBhOTg5MTAwNS4uMjAz MjMwNTFkMCAxMDA2NDQNCj4gLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3g4Ni92 dGQuYw0KPiArKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQveDg2L3Z0ZC5jDQo+IEBA IC0yNSw3ICsyNSw2IEBADQo+ICAjaW5jbHVkZSA8eGVuL2lycS5oPg0KPiAgI2luY2x1ZGUgPHhl bi9udW1hLmg+DQo+ICAjaW5jbHVkZSA8YXNtL2ZpeG1hcC5oPg0KPiAtI2luY2x1ZGUgPGFzbS9z ZXR1cC5oPg0KPiAgI2luY2x1ZGUgIi4uL2lvbW11LmgiDQo+ICAjaW5jbHVkZSAiLi4vZG1hci5o Ig0KPiAgI2luY2x1ZGUgIi4uL3Z0ZC5oIg0KPiBAQCAtMzUsOCArMzQsNyBAQA0KPiAgICogaW9t bXVfaW5jbHVzaXZlX21hcHBpbmc6IHdoZW4gc2V0LCBhbGwgbWVtb3J5IGJlbG93IDRHQiBpcyBp bmNsdWRlZCBpbg0KPiBkb20wDQo+ICAgKiAxOjEgaW9tbXUgbWFwcGluZ3MgZXhjZXB0IHhlbiBh bmQgdW51c2FibGUgcmVnaW9ucy4NCj4gICAqLw0KPiAtc3RhdGljIGJvb2xfdCBfX2h3ZG9tX2lu aXRkYXRhIGlvbW11X2luY2x1c2l2ZV9tYXBwaW5nID0gMTsNCj4gLWJvb2xlYW5fcGFyYW0oImlv bW11X2luY2x1c2l2ZV9tYXBwaW5nIiwgaW9tbXVfaW5jbHVzaXZlX21hcHBpbmcpOw0KPiArYm9v bGVhbl9wYXJhbSgiaW9tbXVfaW5jbHVzaXZlX21hcHBpbmciLCBpb21tdV9kb20wX2luY2x1c2l2 ZSk7DQo+IA0KPiAgdm9pZCAqbWFwX3Z0ZF9kb21haW5fcGFnZSh1NjQgbWFkZHIpDQo+ICB7DQo+ IEBAIC0xMDgsNTcgKzEwNiwzIEBAIHZvaWQgaHZtX2RwY2lfaXNhaXJxX2VvaShzdHJ1Y3QgZG9t YWluICpkLA0KPiB1bnNpZ25lZCBpbnQgaXNhaXJxKQ0KPiAgICAgIHNwaW5fdW5sb2NrKCZkLT5l dmVudF9sb2NrKTsNCj4gIH0NCj4gDQo+IC12b2lkIF9faHdkb21faW5pdCB2dGRfc2V0X2h3ZG9t X21hcHBpbmcoc3RydWN0IGRvbWFpbiAqZCkNCj4gLXsNCj4gLSAgICB1bnNpZ25lZCBsb25nIGks IHRvcCwgbWF4X3BmbjsNCj4gLQ0KPiAtICAgIEJVR19PTighaXNfaGFyZHdhcmVfZG9tYWluKGQp KTsNCj4gLQ0KPiAtICAgIG1heF9wZm4gPSAoR0IoNCkgPj4gUEFHRV9TSElGVCkgLSAxOw0KPiAt ICAgIHRvcCA9IG1heChtYXhfcGR4LCBwZm5fdG9fcGR4KG1heF9wZm4pICsgMSk7DQo+IC0NCj4g LSAgICBmb3IgKCBpID0gMDsgaSA8IHRvcDsgaSsrICkNCj4gLSAgICB7DQo+IC0gICAgICAgIHVu c2lnbmVkIGxvbmcgcGZuID0gcGR4X3RvX3BmbihpKTsNCj4gLSAgICAgICAgYm9vbCBtYXA7DQo+ IC0gICAgICAgIGludCByYzsNCj4gLQ0KPiAtICAgICAgICAvKg0KPiAtICAgICAgICAgKiBTZXQg dXAgMToxIG1hcHBpbmcgZm9yIGRvbTAuIERlZmF1bHQgdG8gaW5jbHVkZSBvbmx5DQo+IC0gICAg ICAgICAqIGNvbnZlbnRpb25hbCBSQU0gYXJlYXMgYW5kIGxldCBSTVJScyBpbmNsdWRlIG5lZWRl ZCByZXNlcnZlZA0KPiAtICAgICAgICAgKiByZWdpb25zLiBXaGVuIHNldCwgdGhlIGluY2x1c2l2 ZSBtYXBwaW5nIGFkZGl0aW9uYWxseSBtYXBzIGluDQo+IC0gICAgICAgICAqIGV2ZXJ5IHBmbiB1 cCB0byA0R0IgZXhjZXB0IHRob3NlIHRoYXQgZmFsbCBpbiB1bnVzYWJsZSByYW5nZXMuDQo+IC0g ICAgICAgICAqLw0KPiAtICAgICAgICBpZiAoIHBmbiA+IG1heF9wZm4gJiYgIW1mbl92YWxpZChf bWZuKHBmbikpICkNCj4gLSAgICAgICAgICAgIGNvbnRpbnVlOw0KPiAtDQo+IC0gICAgICAgIGlm ICggaW9tbXVfaW5jbHVzaXZlX21hcHBpbmcgJiYgcGZuIDw9IG1heF9wZm4gKQ0KPiAtICAgICAg ICAgICAgbWFwID0gIXBhZ2VfaXNfcmFtX3R5cGUocGZuLCBSQU1fVFlQRV9VTlVTQUJMRSk7DQo+ IC0gICAgICAgIGVsc2UNCj4gLSAgICAgICAgICAgIG1hcCA9IHBhZ2VfaXNfcmFtX3R5cGUocGZu LCBSQU1fVFlQRV9DT05WRU5USU9OQUwpOw0KPiAtDQo+IC0gICAgICAgIGlmICggIW1hcCApDQo+ IC0gICAgICAgICAgICBjb250aW51ZTsNCj4gLQ0KPiAtICAgICAgICAvKiBFeGNsdWRlIFhlbiBi aXRzICovDQo+IC0gICAgICAgIGlmICggeGVuX2luX3JhbmdlKHBmbikgKQ0KPiAtICAgICAgICAg ICAgY29udGludWU7DQo+IC0NCj4gLSAgICAgICAgLyoNCj4gLSAgICAgICAgICogSWYgZG9tMC1z dHJpY3QgbW9kZSBpcyBlbmFibGVkIHRoZW4gZXhjbHVkZSBjb252ZW50aW9uYWwgUkFNDQo+IC0g ICAgICAgICAqIGFuZCBsZXQgdGhlIGNvbW1vbiBjb2RlIG1hcCBkb20wJ3MgcGFnZXMuDQo+IC0g ICAgICAgICAqLw0KPiAtICAgICAgICBpZiAoIGlvbW11X2RvbTBfc3RyaWN0ICYmDQo+IC0gICAg ICAgICAgICAgcGFnZV9pc19yYW1fdHlwZShwZm4sIFJBTV9UWVBFX0NPTlZFTlRJT05BTCkgKQ0K PiAtICAgICAgICAgICAgY29udGludWU7DQo+IC0NCj4gLSAgICAgICAgcmMgPSBpb21tdV9tYXBf cGFnZShkLCBwZm4sIHBmbiwNCj4gSU9NTVVGX3JlYWRhYmxlfElPTU1VRl93cml0YWJsZSk7DQo+ IC0gICAgICAgIGlmICggcmMgKQ0KPiAtICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19XQVJOSU5H IFZURFBSRUZJWCAiIGQlZDogSU9NTVUgbWFwcGluZyBmYWlsZWQ6DQo+ICVkXG4iLA0KPiAtICAg ICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgcmMpOw0KPiAtDQo+IC0gICAgICAgIGlmICgh KGkgJiAweGZmZmZmKSkNCj4gLSAgICAgICAgICAgIHByb2Nlc3NfcGVuZGluZ19zb2Z0aXJxcygp Ow0KPiAtICAgIH0NCj4gLX0NCj4gLQ0KPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Ro cm91Z2gveDg2L2lvbW11LmMNCj4gYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUu Yw0KPiBpbmRleCA2ODE4MmFmZDkxLi5iZjZlZGY0YzA0IDEwMDY0NA0KPiAtLS0gYS94ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYw0KPiArKysgYi94ZW4vZHJpdmVycy9wYXNzdGhy b3VnaC94ODYvaW9tbXUuYw0KPiBAQCAtMjAsNiArMjAsOCBAQA0KPiAgI2luY2x1ZGUgPHhlbi9z b2Z0aXJxLmg+DQo+ICAjaW5jbHVkZSA8eHNtL3hzbS5oPg0KPiANCj4gKyNpbmNsdWRlIDxhc20v c2V0dXAuaD4NCj4gKw0KPiAgdm9pZCBpb21tdV91cGRhdGVfaXJlX2Zyb21fYXBpYygNCj4gICAg ICB1bnNpZ25lZCBpbnQgYXBpYywgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50IHZhbHVl KQ0KPiAgew0KPiBAQCAtMTMyLDYgKzEzNCw2NCBAQCB2b2lkIGFyY2hfaW9tbXVfZG9tYWluX2Rl c3Ryb3koc3RydWN0IGRvbWFpbg0KPiAqZCkNCj4gIHsNCj4gIH0NCj4gDQo+ICt2b2lkIF9faHdk b21faW5pdCBhcmNoX2lvbW11X2h3ZG9tX2luaXQoc3RydWN0IGRvbWFpbiAqZCkNCj4gK3sNCj4g KyAgICB1bnNpZ25lZCBsb25nIGksIHRvcCwgbWF4X3BmbjsNCj4gKw0KPiArICAgIEJVR19PTigh aXNfaGFyZHdhcmVfZG9tYWluKGQpKTsNCj4gKw0KPiArICAgIC8qIFNldCB0aGUgZGVmYXVsdCB2 YWx1ZSBvZiBpbmNsdXNpdmUgZGVwZW5kaW5nIG9uIHRoZSBoYXJkd2FyZS4gKi8NCj4gKyAgICBp ZiAoIGlvbW11X2RvbTBfaW5jbHVzaXZlID09IC0xICkNCj4gKyAgICAgICAgaW9tbXVfZG9tMF9p bmNsdXNpdmUgPSBib290X2NwdV9kYXRhLng4Nl92ZW5kb3IgPT0NCj4gWDg2X1ZFTkRPUl9JTlRF TDsNCj4gKw0KPiArICAgIG1heF9wZm4gPSAoR0IoNCkgPj4gUEFHRV9TSElGVCkgLSAxOw0KPiAr ICAgIHRvcCA9IG1heChtYXhfcGR4LCBwZm5fdG9fcGR4KG1heF9wZm4pICsgMSk7DQo+ICsNCj4g KyAgICBmb3IgKCBpID0gMDsgaSA8IHRvcDsgaSsrICkNCj4gKyAgICB7DQo+ICsgICAgICAgIHVu c2lnbmVkIGxvbmcgcGZuID0gcGR4X3RvX3BmbihpKTsNCj4gKyAgICAgICAgYm9vbCBtYXA7DQo+ ICsgICAgICAgIGludCByYzsNCj4gKw0KPiArICAgICAgICAvKg0KPiArICAgICAgICAgKiBTZXQg dXAgMToxIG1hcHBpbmcgZm9yIGRvbTAuIERlZmF1bHQgdG8gaW5jbHVkZSBvbmx5DQo+ICsgICAg ICAgICAqIGNvbnZlbnRpb25hbCBSQU0gYXJlYXMgYW5kIGxldCBSTVJScyBpbmNsdWRlIG5lZWRl ZCByZXNlcnZlZA0KPiArICAgICAgICAgKiByZWdpb25zLiBXaGVuIHNldCwgdGhlIGluY2x1c2l2 ZSBtYXBwaW5nIGFkZGl0aW9uYWxseSBtYXBzIGluDQo+ICsgICAgICAgICAqIGV2ZXJ5IHBmbiB1 cCB0byA0R0IgZXhjZXB0IHRob3NlIHRoYXQgZmFsbCBpbiB1bnVzYWJsZSByYW5nZXMuDQo+ICsg ICAgICAgICAqLw0KPiArICAgICAgICBpZiAoIHBmbiA+IG1heF9wZm4gJiYgIW1mbl92YWxpZChf bWZuKHBmbikpICkNCj4gKyAgICAgICAgICAgIGNvbnRpbnVlOw0KPiArDQo+ICsgICAgICAgIGlm ICggaW9tbXVfZG9tMF9pbmNsdXNpdmUgJiYgcGZuIDw9IG1heF9wZm4gKQ0KPiArICAgICAgICAg ICAgbWFwID0gIXBhZ2VfaXNfcmFtX3R5cGUocGZuLCBSQU1fVFlQRV9VTlVTQUJMRSk7DQo+ICsg ICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAgIG1hcCA9IHBhZ2VfaXNfcmFtX3R5cGUocGZuLCBS QU1fVFlQRV9DT05WRU5USU9OQUwpOw0KPiArDQo+ICsgICAgICAgIGlmICggIW1hcCApDQo+ICsg ICAgICAgICAgICBjb250aW51ZTsNCj4gKw0KPiArICAgICAgICAvKiBFeGNsdWRlIFhlbiBiaXRz ICovDQo+ICsgICAgICAgIGlmICggeGVuX2luX3JhbmdlKHBmbikgKQ0KPiArICAgICAgICAgICAg Y29udGludWU7DQo+ICsNCj4gKyAgICAgICAgLyoNCj4gKyAgICAgICAgICogSWYgZG9tMC1zdHJp Y3QgbW9kZSBpcyBlbmFibGVkIHRoZW4gZXhjbHVkZSBjb252ZW50aW9uYWwgUkFNDQo+ICsgICAg ICAgICAqIGFuZCBsZXQgdGhlIGNvbW1vbiBjb2RlIG1hcCBkb20wJ3MgcGFnZXMuDQo+ICsgICAg ICAgICAqLw0KPiArICAgICAgICBpZiAoIGlvbW11X2RvbTBfc3RyaWN0ICYmDQo+ICsgICAgICAg ICAgICAgcGFnZV9pc19yYW1fdHlwZShwZm4sIFJBTV9UWVBFX0NPTlZFTlRJT05BTCkgKQ0KPiAr ICAgICAgICAgICAgY29udGludWU7DQo+ICsNCj4gKyAgICAgICAgcmMgPSBpb21tdV9tYXBfcGFn ZShkLCBwZm4sIHBmbiwNCj4gSU9NTVVGX3JlYWRhYmxlfElPTU1VRl93cml0YWJsZSk7DQo+ICsg ICAgICAgIGlmICggcmMgKQ0KPiArICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19XQVJOSU5HICIg ZCVkOiBJT01NVSBtYXBwaW5nIGZhaWxlZDogJWRcbiIsDQo+ICsgICAgICAgICAgICAgICAgICAg ZC0+ZG9tYWluX2lkLCByYyk7DQo+ICsNCj4gKyAgICAgICAgaWYgKCEoaSAmIDB4ZmZmZmYpKQ0K PiArICAgICAgICAgICAgcHJvY2Vzc19wZW5kaW5nX3NvZnRpcnFzKCk7DQo+ICsgICAgfQ0KPiAr fQ0KPiArDQo+ICAvKg0KPiAgICogTG9jYWwgdmFyaWFibGVzOg0KPiAgICogbW9kZTogQw0KPiBk aWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2lvbW11LmggYi94ZW4vaW5jbHVkZS94ZW4vaW9t bXUuaA0KPiBpbmRleCBjMGM2OTc1YWM0Li45OWU1Yjg5YzBmIDEwMDY0NA0KPiAtLS0gYS94ZW4v aW5jbHVkZS94ZW4vaW9tbXUuaA0KPiArKysgYi94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaA0KPiBA QCAtMzcsNiArMzcsNyBAQCBleHRlcm4gYm9vbF90IGlvbW11X2RlYnVnOw0KPiAgZXh0ZXJuIGJv b2xfdCBhbWRfaW9tbXVfcGVyZGV2X2ludHJlbWFwOw0KPiANCj4gIGV4dGVybiBib29sIGlvbW11 X2RvbTBfc3RyaWN0LCBpb21tdV9kb20wX3Bhc3N0aHJvdWdoOw0KPiArZXh0ZXJuIGludDhfdCBp b21tdV9kb20wX2luY2x1c2l2ZTsNCj4gDQo+ICBleHRlcm4gdW5zaWduZWQgaW50IGlvbW11X2Rl dl9pb3RsYl90aW1lb3V0Ow0KPiANCj4gQEAgLTUxLDYgKzUyLDcgQEAgdm9pZCBhcmNoX2lvbW11 X2RvbWFpbl9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQpOw0KPiAgaW50IGFyY2hfaW9tbXVfZG9t YWluX2luaXQoc3RydWN0IGRvbWFpbiAqZCk7DQo+ICBpbnQgYXJjaF9pb21tdV9wb3B1bGF0ZV9w YWdlX3RhYmxlKHN0cnVjdCBkb21haW4gKmQpOw0KPiAgdm9pZCBhcmNoX2lvbW11X2NoZWNrX2F1 dG90cmFuc2xhdGVkX2h3ZG9tKHN0cnVjdCBkb21haW4gKmQpOw0KPiArdm9pZCBhcmNoX2lvbW11 X2h3ZG9tX2luaXQoc3RydWN0IGRvbWFpbiAqZCk7DQo+IA0KPiAgaW50IGlvbW11X2NvbnN0cnVj dChzdHJ1Y3QgZG9tYWluICpkKTsNCj4gDQo+IC0tDQo+IDIuMTguMA0KPiANCj4gDQo+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IFhlbi1kZXZlbCBt YWlsaW5nIGxpc3QNCj4gWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IGh0dHBzOi8v bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWwNCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=