From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH 2/4] iommu: generalize iommu_inclusive_mapping Date: Tue, 31 Jul 2018 07:18:36 +0000 Message-ID: <49a6cf5a90074f56b4eb691c2bcf7a8a@AMSPEX02CL03.citrite.net> References: <20180727153149.25094-1-roger.pau@citrix.com> <20180727153149.25094-3-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 1fkOvY-00054D-Pu for xen-devel@lists.xenproject.org; Tue, 31 Jul 2018 07:18:40 +0000 In-Reply-To: <20180727153149.25094-3-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 Z2VyIFBhdSBNb25uZQ0KPiBTZW50OiAyNyBKdWx5IDIwMTggMTY6MzINCj4gVG86IHhlbi1kZXZl bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRl bC5jb20+OyBTdGVmYW5vIFN0YWJlbGxpbmkNCj4gPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+OyBX ZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPjsgR2VvcmdlIER1bmxhcA0KPiA8R2VvcmdlLkR1 bmxhcEBjaXRyaXguY29tPjsgQW5kcmV3IENvb3Blcg0KPiA8QW5kcmV3LkNvb3BlcjNAY2l0cml4 LmNvbT47IElhbiBKYWNrc29uIDxJYW4uSmFja3NvbkBjaXRyaXguY29tPjsgVGltDQo+IChYZW4u b3JnKSA8dGltQHhlbi5vcmc+OyBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPjsg SmFuIEJldWxpY2gNCj4gPGpiZXVsaWNoQHN1c2UuY29tPjsgUm9nZXIgUGF1IE1vbm5lIDxyb2dl ci5wYXVAY2l0cml4LmNvbT4NCj4gU3ViamVjdDogW1hlbi1kZXZlbF0gW1BBVENIIDIvNF0gaW9t bXU6IGdlbmVyYWxpemUNCj4gaW9tbXVfaW5jbHVzaXZlX21hcHBpbmcNCj4gDQo+IEludHJvZHVj ZSBhIG5ldyBpb21tdT1pbmNsdXNpdmUgZ2VuZXJpYyBvcHRpb24gdGhhdCBzdXBlcnNlZGVzDQo+ IGlvbW11X2luY2x1c2l2ZV9tYXBwaW5nLiBUaGlzIHNob3VsZCBiZSBhIG5vbi1mdW5jdGlvbmFs IGNoYW5nZSBvbg0KPiBJbnRlbCBoYXJkd2FyZSwgd2hpbGUgQU1EIGhhcmR3YXJlIHdpbGwgZ2Fp biB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5IG9mDQo+IG1hcHBpbmcgYWxtb3N0IGV2ZXJ5dGhpbmcg YmVsb3cgdGhlIDRHQiBib3VuZGFyeS4NCj4gDQo+IE5vdGUgdGhhdCBpcyBhIG5vb3AgZm9yIEFS TSBoYXJkd2FyZS4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2Vy LnBhdUBjaXRyaXguY29tPg0KPiAtLS0NCj4gQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29w ZXIzQGNpdHJpeC5jb20+DQo+IENjOiBHZW9yZ2UgRHVubGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNp dHJpeC5jb20+DQo+IENjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4N Cj4gQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4NCj4gQ2M6IEp1bGllbiBHcmFs bCA8anVsaWVuLmdyYWxsQGFybS5jb20+DQo+IENjOiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtv bnJhZC53aWxrQG9yYWNsZS5jb20+DQo+IENjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxs aW5pQGtlcm5lbC5vcmc+DQo+IENjOiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9yZz4NCj4gQ2M6IFdl aSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+DQo+IENjOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFu QGludGVsLmNvbT4NCj4gLS0tDQo+ICBkb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93 biAgIHwgMTQgKysrKysrDQo+ICB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vaW9tbXUuYyAg IHwgIDQgKysNCj4gIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMgICAgICAgfCAgNiAr KysNCj4gIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9leHRlcm4uaCAgfCAgMiAtDQo+ICB4 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYyAgIHwgIDYgLS0tDQo+ICB4ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC92dGQveDg2L3Z0ZC5jIHwgNjYgKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KPiAgeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11LmMgICB8IDcwDQo+ICsr KysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgeGVuL2luY2x1ZGUveGVuL2lvbW11LmggICAg ICAgICAgICAgICB8ICAyICsNCj4gIDggZmlsZXMgY2hhbmdlZCwgOTcgaW5zZXJ0aW9ucygrKSwg NzMgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZG9jcy9taXNjL3hlbi1jb21tYW5k LWxpbmUubWFya2Rvd24gYi9kb2NzL21pc2MveGVuLQ0KPiBjb21tYW5kLWxpbmUubWFya2Rvd24N Cj4gaW5kZXggNjViNDc1NDQxOC4uOTFhOGJmYzlhNiAxMDA2NDQNCj4gLS0tIGEvZG9jcy9taXNj L3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24NCj4gKysrIGIvZG9jcy9taXNjL3hlbi1jb21tYW5k LWxpbmUubWFya2Rvd24NCj4gQEAgLTExOTgsNiArMTE5OCwxNyBAQCBkZXRlY3Rpb24gb2Ygc3lz dGVtcyBrbm93biB0byBtaXNiZWhhdmUgdXBvbg0KPiBhY2Nlc3NlcyB0byB0aGF0IHBvcnQuDQo+ IA0KPiAgPj4gRW5hYmxlIElPTU1VIGRlYnVnZ2luZyBjb2RlIChpbXBsaWVzIGB2ZXJib3NlYCku DQo+IA0KPiArPiBgaW5jbHVzaXZlYA0KDQpUaGlzIGlzIGEgZG9tMCAob3IgaHdkb20pIHNwZWNp ZmljIHNldHRpbmcgc28gcGVyaGFwcyBkb20wLWluY2x1c2l2ZT8NCg0KQWN0dWFsbHkgdGhlIGRv bTAgaW9tbXUgb3B0aW9ucyBhcmUgc3RhcnRpbmcgdG8gZ2V0IHVud2llbGR5IGFzIHRoZXkgYXJl IGNvbmZsYXRlZCB3aXRoIHRoZSBnZW5lcmFsIGhvc3QgaW9tbXUgb3B0aW9ucyBzbyBJIHRoaW5r IGl0IG1heSBiZSB3b3J0aHdoaWxlIHNwbGl0dGluZyB0aGluZ3Mgb3V0IGludG8gYSBzZXBhcmF0 ZSAnZG9tMC1pb21tdT0nIHRvcCBsZXZlbCBwYXJhbWV0ZXIgYXQgdGhpcyBzdGFnZS4gKE15IHJl YXNvbnMgYXJlIHNsaWdodGx5IHNlbGZpc2ggYXMgSSBpbnRlbmQgdG8gYWRkIGFub3RoZXIgZG9t MCBpb21tdSBvcHRpb24gdG8gZ2l2ZSBpdCBqdXN0IHJlc2VydmVkIHJlZ2lvbnMsIHRvIGF2b2lk IHVubmVjZXNzYXJ5IHNldC11cCBpZiB3ZSBrbm93IGl0IHdpbGwgYmUgdXNpbmcgUFYtSU9NTVUp Lg0KDQpDaGVlcnMsDQoNCiAgUGF1bA0KDQo+ICsNCj4gKz4gRGVmYXVsdDogYHRydWVgDQo+ICsN Cj4gKz4+IFVzZSB0aGlzIHRvIHdvcmsgYXJvdW5kIGZpcm13YXJlIGlzc3VlcyBwcm92aWRpbmcg aW5jb3JyZWN0IFJNUlIgb3INCj4gSVZNRA0KPiArPj4gZW50cmllcy4gUmF0aGVyIHRoYW4gb25s eSBtYXBwaW5nIFJBTSBwYWdlcyBmb3IgSU9NTVUgYWNjZXNzZXMgZm9yDQo+IERvbTAsDQo+ICs+ PiB3aXRoIHRoaXMgb3B0aW9uIGFsbCBwYWdlcyB1cCB0byA0R0IsIG5vdCBtYXJrZWQgYXMgdW51 c2FibGUgaW4gdGhlIEU4MjANCj4gKz4+IHRhYmxlLCB3aWxsIGdldCBhIG1hcHBpbmcgZXN0YWJs aXNoZWQuIE5vdGUgdGhhdCB0aGlzIG9wdGlvbiBpcyBvbmx5DQo+ICs+PiBhcHBsaWNhYmxlIHRv IGEgUFYgZG9tMC4gQWxzbyBub3RlIHRoYXQgaWYgYGRvbTAtc3RyaWN0YCBtb2RlIGlzIGVuYWJs ZWQNCj4gKz4+IHRoZW4gY29udmVudGlvbmFsIFJBTSBwYWdlcyBub3QgYXNzaWduZWQgdG8gZG9t MCB3aWxsIG5vdCBiZSBtYXBwZWQuDQo+ICsNCj4gICMjIyBpb21tdVxfZGV2XF9pb3RsYlxfdGlt ZW91dA0KPiAgPiBgPSA8aW50ZWdlcj5gDQo+IA0KPiBAQCAtMTIxMiw2ICsxMjIzLDkgQEAgd2Fp dCBkZXNjcmlwdG9yIHRpbWVkIG91dCcsIHRyeSBpbmNyZWFzaW5nIHRoaXMgdmFsdWUuDQo+IA0K PiAgPiBEZWZhdWx0OiBgdHJ1ZWANCj4gDQo+ICsqKldBUk5JTkc6IFRoaXMgY29tbWFuZCBsaW5l IG9wdGlvbiBpcyBkZXByZWNhdGVkLCBhbmQgc3VwZXJzZWRlZCBieQ0KPiArX2lvbW11PWluY2x1 c2l2ZV8gLSB1c2luZyBib3RoIG9wdGlvbnMgaW4gY29tYmluYXRpb24gaXMgdW5kZWZpbmVkLioq DQo+ICsNCj4gIFVzZSB0aGlzIHRvIHdvcmsgYXJvdW5kIGZpcm13YXJlIGlzc3VlcyBwcm92aWRp bmcgaW5jb3JyZWN0IFJNUlIgZW50cmllcy4NCj4gIFJhdGhlciB0aGFuIG9ubHkgbWFwcGluZyBS QU0gcGFnZXMgZm9yIElPTU1VIGFjY2Vzc2VzIGZvciBEb20wLCB3aXRoDQo+IHRoaXMNCj4gIG9w dGlvbiBhbGwgcGFnZXMgdXAgdG8gNEdCLCBub3QgbWFya2VkIGFzIHVudXNhYmxlIGluIHRoZSBF ODIwIHRhYmxlLCB3aWxsDQo+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9h cm0vaW9tbXUuYw0KPiBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9pb21tdS5jDQo+IGlu ZGV4IDk1YjFhYmI5NzIuLjMyNTk5N2IxOWYgMTAwNjQ0DQo+IC0tLSBhL3hlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL2FybS9pb21tdS5jDQo+ICsrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2Fy bS9pb21tdS5jDQo+IEBAIC03MywzICs3Myw3IEBAIGludCBhcmNoX2lvbW11X3BvcHVsYXRlX3Bh Z2VfdGFibGUoc3RydWN0IGRvbWFpbg0KPiAqZCkNCj4gICAgICAvKiBUaGUgSU9NTVUgc2hhcmVz IHRoZSBwMm0gd2l0aCB0aGUgQ1BVICovDQo+ICAgICAgcmV0dXJuIC1FTk9TWVM7DQo+ICB9DQo+ ICsNCj4gK3ZvaWQgX19od2RvbV9pbml0IGFyY2hfaW9tbXVfaHdkb21faW5pdChzdHJ1Y3QgZG9t YWluICpkKQ0KPiArew0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvaW9tbXUuYw0KPiBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMNCj4gaW5kZXgg NzBkMjE4ZjkxMC4uM2YzYWE3MWIyYyAxMDA2NDQNCj4gLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Ro cm91Z2gvaW9tbXUuYw0KPiArKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jDQo+ IEBAIC00Nyw2ICs0Nyw5IEBAIGludGVnZXJfcGFyYW0oImlvbW11X2Rldl9pb3RsYl90aW1lb3V0 IiwNCj4gaW9tbXVfZGV2X2lvdGxiX3RpbWVvdXQpOw0KPiAgICogICBuby1pZ2Z4ICAgICAgICAg ICAgICAgICAgICBEaXNhYmxlIFZULWQgZm9yIElHRCBkZXZpY2VzIChpbnNlY3VyZSkNCj4gICAq ICAgbm8tYW1kLWlvbW11LXBlcmRldi1pbnRyZW1hcCBEb24ndCB1c2UgcGVyLWRldmljZSBpbnRl cnJ1cHQNCj4gcmVtYXBwaW5nDQo+ICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh YmxlcyAoaW5zZWN1cmUpDQo+ICsgKiAgIGluY2x1c2l2ZSAgICAgICAgICAgICAgICAgIE1hcCBh ZGRpdGlvbmFsIHJlZ2lvbnMgaW50byB0aGUgSU9NTVUgcGFnZQ0KPiArICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0YWJsZXMgaW4gb3JkZXIgdG8gd29ya2Fyb3VuZCBidWdzIGluIEFD UEkNCj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVzLg0KPiAgICovDQo+ ICBjdXN0b21fcGFyYW0oImlvbW11IiwgcGFyc2VfaW9tbXVfcGFyYW0pOw0KPiAgYm9vbF90IF9f aW5pdGRhdGEgaW9tbXVfZW5hYmxlID0gMTsNCj4gQEAgLTYwLDYgKzYzLDcgQEAgYm9vbF90IF9f cmVhZF9tb3N0bHkgaW9tbXVfcGFzc3Rocm91Z2g7DQo+ICBib29sX3QgX19yZWFkX21vc3RseSBp b21tdV9zbm9vcCA9IDE7DQo+ICBib29sX3QgX19yZWFkX21vc3RseSBpb21tdV9xaW52YWwgPSAx Ow0KPiAgYm9vbF90IF9fcmVhZF9tb3N0bHkgaW9tbXVfaW50cmVtYXAgPSAxOw0KPiArYm9vbCBf X2h3ZG9tX2luaXRkYXRhIGlvbW11X2luY2x1c2l2ZSA9IHRydWU7DQo+IA0KPiAgLyoNCj4gICAq IEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIFZULWQgcG9zdGVkIGludGVycnVwdHMs IGluIHNvbWUNCj4gZXh0cmVtZQ0KPiBAQCAtMjA4LDYgKzIxMiw4IEBAIHZvaWQgX19od2RvbV9p bml0IGlvbW11X2h3ZG9tX2luaXQoc3RydWN0DQo+IGRvbWFpbiAqZCkNCj4gICAgICB9DQo+IA0K PiAgICAgIGhkLT5wbGF0Zm9ybV9vcHMtPmh3ZG9tX2luaXQoZCk7DQo+ICsNCj4gKyAgICBhcmNo X2lvbW11X2h3ZG9tX2luaXQoZCk7DQo+ICB9DQo+IA0KPiAgdm9pZCBpb21tdV90ZWFyZG93bihz dHJ1Y3QgZG9tYWluICpkKQ0KPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv dnRkL2V4dGVybi5oDQo+IGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2V4dGVybi5oDQo+ IGluZGV4IGZiN2VkZmFlZjkuLjkxY2FkYzYwMmUgMTAwNjQ0DQo+IC0tLSBhL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL3Z0ZC9leHRlcm4uaA0KPiArKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC92dGQvZXh0ZXJuLmgNCj4gQEAgLTk5LDYgKzk5LDQgQEAgdm9pZCBwY2lfdnRkX3F1aXJrKGNv bnN0IHN0cnVjdCBwY2lfZGV2ICopOw0KPiAgYm9vbF90IHBsYXRmb3JtX3N1cHBvcnRzX2ludHJl bWFwKHZvaWQpOw0KPiAgYm9vbF90IHBsYXRmb3JtX3N1cHBvcnRzX3gyYXBpYyh2b2lkKTsNCj4g DQo+IC12b2lkIHZ0ZF9zZXRfaHdkb21fbWFwcGluZyhzdHJ1Y3QgZG9tYWluICpkKTsNCj4gLQ0K PiAgI2VuZGlmIC8vIF9WVERfRVhURVJOX0hfDQo+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC92dGQvaW9tbXUuYw0KPiBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9p b21tdS5jDQo+IGluZGV4IDE3MTAyNTY4MjMuLjU2OWVjNGFlYzIgMTAwNjQ0DQo+IC0tLSBhL3hl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jDQo+ICsrKyBiL3hlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL3Z0ZC9pb21tdS5jDQo+IEBAIC0xMzA0LDEyICsxMzA0LDYgQEAgc3RhdGljIHZv aWQgX19od2RvbV9pbml0DQo+IGludGVsX2lvbW11X2h3ZG9tX2luaXQoc3RydWN0IGRvbWFpbiAq ZCkNCj4gIHsNCj4gICAgICBzdHJ1Y3QgYWNwaV9kcmhkX3VuaXQgKmRyaGQ7DQo+IA0KPiAtICAg IGlmICggIWlvbW11X3Bhc3N0aHJvdWdoICYmIGlzX3B2X2RvbWFpbihkKSApDQo+IC0gICAgew0K PiAtICAgICAgICAvKiBTZXQgdXAgMToxIHBhZ2UgdGFibGUgZm9yIGhhcmR3YXJlIGRvbWFpbi4g Ki8NCj4gLSAgICAgICAgdnRkX3NldF9od2RvbV9tYXBwaW5nKGQpOw0KPiAtICAgIH0NCj4gLQ0K PiAgICAgIHNldHVwX2h3ZG9tX3BjaV9kZXZpY2VzKGQsIHNldHVwX2h3ZG9tX2RldmljZSk7DQo+ ICAgICAgc2V0dXBfaHdkb21fcm1ycihkKTsNCj4gDQo+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC92dGQveDg2L3Z0ZC5jDQo+IGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv dnRkL3g4Ni92dGQuYw0KPiBpbmRleCBjYzJiZmVhMTYyLi41NWQ3NGE5N2UyIDEwMDY0NA0KPiAt LS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQveDg2L3Z0ZC5jDQo+ICsrKyBiL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC94ODYvdnRkLmMNCj4gQEAgLTM1LDggKzM1LDcgQEANCj4g ICAqIGlvbW11X2luY2x1c2l2ZV9tYXBwaW5nOiB3aGVuIHNldCwgYWxsIG1lbW9yeSBiZWxvdyA0 R0IgaXMgaW5jbHVkZWQgaW4NCj4gZG9tMA0KPiAgICogMToxIGlvbW11IG1hcHBpbmdzIGV4Y2Vw dCB4ZW4gYW5kIHVudXNhYmxlIHJlZ2lvbnMuDQo+ICAgKi8NCj4gLXN0YXRpYyBib29sX3QgX19o d2RvbV9pbml0ZGF0YSBpb21tdV9pbmNsdXNpdmVfbWFwcGluZyA9IDE7DQo+IC1ib29sZWFuX3Bh cmFtKCJpb21tdV9pbmNsdXNpdmVfbWFwcGluZyIsIGlvbW11X2luY2x1c2l2ZV9tYXBwaW5nKTsN Cj4gK2Jvb2xlYW5fcGFyYW0oImlvbW11X2luY2x1c2l2ZV9tYXBwaW5nIiwgaW9tbXVfaW5jbHVz aXZlKTsNCj4gDQo+ICB2b2lkICptYXBfdnRkX2RvbWFpbl9wYWdlKHU2NCBtYWRkcikNCj4gIHsN Cj4gQEAgLTEwOCw2NiArMTA3LDMgQEAgdm9pZCBodm1fZHBjaV9pc2FpcnFfZW9pKHN0cnVjdCBk b21haW4gKmQsDQo+IHVuc2lnbmVkIGludCBpc2FpcnEpDQo+ICAgICAgc3Bpbl91bmxvY2soJmQt PmV2ZW50X2xvY2spOw0KPiAgfQ0KPiANCj4gLXZvaWQgX19od2RvbV9pbml0IHZ0ZF9zZXRfaHdk b21fbWFwcGluZyhzdHJ1Y3QgZG9tYWluICpkKQ0KPiAtew0KPiAtICAgIHVuc2lnbmVkIGxvbmcg aSwgaiwgdG1wLCB0b3AsIG1heF9wZm47DQo+IC0NCj4gLSAgICBCVUdfT04oIWlzX2hhcmR3YXJl X2RvbWFpbihkKSk7DQo+IC0NCj4gLSAgICBtYXhfcGZuID0gKEdCKDQpID4+IFBBR0VfU0hJRlQp IC0gMTsNCj4gLSAgICB0b3AgPSBtYXgobWF4X3BkeCwgcGZuX3RvX3BkeChtYXhfcGZuKSArIDEp Ow0KPiAtDQo+IC0gICAgZm9yICggaSA9IDA7IGkgPCB0b3A7IGkrKyApDQo+IC0gICAgew0KPiAt ICAgICAgICB1bnNpZ25lZCBsb25nIHBmbiA9IHBkeF90b19wZm4oaSk7DQo+IC0gICAgICAgIGJv b2wgbWFwOw0KPiAtICAgICAgICBpbnQgcmMgPSAwOw0KPiAtDQo+IC0gICAgICAgIC8qDQo+IC0g ICAgICAgICAqIFNldCB1cCAxOjEgbWFwcGluZyBmb3IgZG9tMC4gRGVmYXVsdCB0byBpbmNsdWRl IG9ubHkNCj4gLSAgICAgICAgICogY29udmVudGlvbmFsIFJBTSBhcmVhcyBhbmQgbGV0IFJNUlJz IGluY2x1ZGUgbmVlZGVkIHJlc2VydmVkDQo+IC0gICAgICAgICAqIHJlZ2lvbnMuIFdoZW4gc2V0 LCB0aGUgaW5jbHVzaXZlIG1hcHBpbmcgYWRkaXRpb25hbGx5IG1hcHMgaW4NCj4gLSAgICAgICAg ICogZXZlcnkgcGZuIHVwIHRvIDRHQiBleGNlcHQgdGhvc2UgdGhhdCBmYWxsIGluIHVudXNhYmxl IHJhbmdlcy4NCj4gLSAgICAgICAgICovDQo+IC0gICAgICAgIGlmICggcGZuID4gbWF4X3BmbiAm JiAhbWZuX3ZhbGlkKF9tZm4ocGZuKSkgKQ0KPiAtICAgICAgICAgICAgY29udGludWU7DQo+IC0N Cj4gLSAgICAgICAgaWYgKCBpb21tdV9pbmNsdXNpdmVfbWFwcGluZyAmJiBwZm4gPD0gbWF4X3Bm biApDQo+IC0gICAgICAgICAgICBtYXAgPSAhcGFnZV9pc19yYW1fdHlwZShwZm4sIFJBTV9UWVBF X1VOVVNBQkxFKTsNCj4gLSAgICAgICAgZWxzZQ0KPiAtICAgICAgICAgICAgbWFwID0gcGFnZV9p c19yYW1fdHlwZShwZm4sIFJBTV9UWVBFX0NPTlZFTlRJT05BTCk7DQo+IC0NCj4gLSAgICAgICAg aWYgKCAhbWFwICkNCj4gLSAgICAgICAgICAgIGNvbnRpbnVlOw0KPiAtDQo+IC0gICAgICAgIC8q IEV4Y2x1ZGUgWGVuIGJpdHMgKi8NCj4gLSAgICAgICAgaWYgKCB4ZW5faW5fcmFuZ2UocGZuKSAp DQo+IC0gICAgICAgICAgICBjb250aW51ZTsNCj4gLQ0KPiAtICAgICAgICAvKg0KPiAtICAgICAg ICAgKiBJZiBkb20wLXN0cmljdCBtb2RlIGlzIGVuYWJsZWQgdGhlbiBleGNsdWRlIGNvbnZlbnRp b25hbCBSQU0NCj4gLSAgICAgICAgICogYW5kIGxldCB0aGUgY29tbW9uIGNvZGUgbWFwIGRvbTAn cyBwYWdlcy4NCj4gLSAgICAgICAgICovDQo+IC0gICAgICAgIGlmICggaW9tbXVfZG9tMF9zdHJp Y3QgJiYNCj4gLSAgICAgICAgICAgICBwYWdlX2lzX3JhbV90eXBlKHBmbiwgUkFNX1RZUEVfQ09O VkVOVElPTkFMKSApDQo+IC0gICAgICAgICAgICBjb250aW51ZTsNCj4gLQ0KPiAtICAgICAgICB0 bXAgPSAxIDw8IChQQUdFX1NISUZUIC0gUEFHRV9TSElGVF80Syk7DQo+IC0gICAgICAgIGZvciAo IGogPSAwOyBqIDwgdG1wOyBqKysgKQ0KPiAtICAgICAgICB7DQo+IC0gICAgICAgICAgICBpbnQg cmV0ID0gaW9tbXVfbWFwX3BhZ2UoZCwgcGZuICogdG1wICsgaiwgcGZuICogdG1wICsgaiwNCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT01NVUZfcmVhZGFibGV8SU9N TVVGX3dyaXRhYmxlKTsNCj4gLQ0KPiAtICAgICAgICAgICAgaWYgKCAhcmMgKQ0KPiAtICAgICAg ICAgICAgICAgcmMgPSByZXQ7DQo+IC0gICAgICAgIH0NCj4gLQ0KPiAtICAgICAgICBpZiAoIHJj ICkNCj4gLSAgICAgICAgICAgIHByaW50ayhYRU5MT0dfV0FSTklORyBWVERQUkVGSVggIiBkJWQ6 IElPTU1VIG1hcHBpbmcgZmFpbGVkOg0KPiAlZFxuIiwNCj4gLSAgICAgICAgICAgICAgICAgICBk LT5kb21haW5faWQsIHJjKTsNCj4gLQ0KPiAtICAgICAgICBpZiAoIShpICYgKDB4ZmZmZmYgPj4g KFBBR0VfU0hJRlQgLSBQQUdFX1NISUZUXzRLKSkpKQ0KPiAtICAgICAgICAgICAgcHJvY2Vzc19w ZW5kaW5nX3NvZnRpcnFzKCk7DQo+IC0gICAgfQ0KPiAtfQ0KPiAtDQo+IGRpZmYgLS1naXQgYS94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYw0KPiBiL3hlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL3g4Ni9pb21tdS5jDQo+IGluZGV4IDY4MTgyYWZkOTEuLmJhMGJiZDlhMTUgMTAwNjQ0 DQo+IC0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jDQo+ICsrKyBiL3hl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jDQo+IEBAIC0yMCw2ICsyMCw4IEBADQo+ ICAjaW5jbHVkZSA8eGVuL3NvZnRpcnEuaD4NCj4gICNpbmNsdWRlIDx4c20veHNtLmg+DQo+IA0K PiArI2luY2x1ZGUgPGFzbS9zZXR1cC5oPg0KPiArDQo+ICB2b2lkIGlvbW11X3VwZGF0ZV9pcmVf ZnJvbV9hcGljKA0KPiAgICAgIHVuc2lnbmVkIGludCBhcGljLCB1bnNpZ25lZCBpbnQgcmVnLCB1 bnNpZ25lZCBpbnQgdmFsdWUpDQo+ICB7DQo+IEBAIC0xMzIsNiArMTM0LDc0IEBAIHZvaWQgYXJj aF9pb21tdV9kb21haW5fZGVzdHJveShzdHJ1Y3QgZG9tYWluDQo+ICpkKQ0KPiAgew0KPiAgfQ0K PiANCj4gK3ZvaWQgX19od2RvbV9pbml0IGFyY2hfaW9tbXVfaHdkb21faW5pdChzdHJ1Y3QgZG9t YWluICpkKQ0KPiArew0KPiArICAgIHVuc2lnbmVkIGxvbmcgaSwgaiwgdG1wLCB0b3AsIG1heF9w Zm47DQo+ICsNCj4gKyAgICBpZiAoIGlvbW11X3Bhc3N0aHJvdWdoIHx8ICFpc19wdl9kb21haW4o ZCkgKQ0KPiArICAgICAgICByZXR1cm47DQo+ICsNCj4gKyAgICBCVUdfT04oIWlzX2hhcmR3YXJl X2RvbWFpbihkKSk7DQo+ICsNCj4gKyAgICBtYXhfcGZuID0gKEdCKDQpID4+IFBBR0VfU0hJRlQp IC0gMTsNCj4gKyAgICB0b3AgPSBtYXgobWF4X3BkeCwgcGZuX3RvX3BkeChtYXhfcGZuKSArIDEp Ow0KPiArDQo+ICsgICAgZm9yICggaSA9IDA7IGkgPCB0b3A7IGkrKyApDQo+ICsgICAgew0KPiAr ICAgICAgICB1bnNpZ25lZCBsb25nIHBmbiA9IHBkeF90b19wZm4oaSk7DQo+ICsgICAgICAgIGJv b2wgbWFwOw0KPiArICAgICAgICBpbnQgcmMgPSAwOw0KPiArDQo+ICsgICAgICAgIC8qDQo+ICsg ICAgICAgICAqIFNldCB1cCAxOjEgbWFwcGluZyBmb3IgZG9tMC4gRGVmYXVsdCB0byBpbmNsdWRl IG9ubHkNCj4gKyAgICAgICAgICogY29udmVudGlvbmFsIFJBTSBhcmVhcyBhbmQgbGV0IFJNUlJz IGluY2x1ZGUgbmVlZGVkIHJlc2VydmVkDQo+ICsgICAgICAgICAqIHJlZ2lvbnMuIFdoZW4gc2V0 LCB0aGUgaW5jbHVzaXZlIG1hcHBpbmcgYWRkaXRpb25hbGx5IG1hcHMgaW4NCj4gKyAgICAgICAg ICogZXZlcnkgcGZuIHVwIHRvIDRHQiBleGNlcHQgdGhvc2UgdGhhdCBmYWxsIGluIHVudXNhYmxl IHJhbmdlcy4NCj4gKyAgICAgICAgICovDQo+ICsgICAgICAgIGlmICggcGZuID4gbWF4X3BmbiAm JiAhbWZuX3ZhbGlkKF9tZm4ocGZuKSkgKQ0KPiArICAgICAgICAgICAgY29udGludWU7DQo+ICsN Cj4gKyAgICAgICAgaWYgKCBpb21tdV9pbmNsdXNpdmUgJiYgcGZuIDw9IG1heF9wZm4gKQ0KPiAr ICAgICAgICAgICAgbWFwID0gIXBhZ2VfaXNfcmFtX3R5cGUocGZuLCBSQU1fVFlQRV9VTlVTQUJM RSk7DQo+ICsgICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAgIG1hcCA9IHBhZ2VfaXNfcmFtX3R5 cGUocGZuLCBSQU1fVFlQRV9DT05WRU5USU9OQUwpOw0KPiArDQo+ICsgICAgICAgIGlmICggIW1h cCApDQo+ICsgICAgICAgICAgICBjb250aW51ZTsNCj4gKw0KPiArICAgICAgICAvKiBFeGNsdWRl IFhlbiBiaXRzICovDQo+ICsgICAgICAgIGlmICggeGVuX2luX3JhbmdlKHBmbikgKQ0KPiArICAg ICAgICAgICAgY29udGludWU7DQo+ICsNCj4gKyAgICAgICAgLyoNCj4gKyAgICAgICAgICogSWYg ZG9tMC1zdHJpY3QgbW9kZSBpcyBlbmFibGVkIHRoZW4gZXhjbHVkZSBjb252ZW50aW9uYWwgUkFN DQo+ICsgICAgICAgICAqIGFuZCBsZXQgdGhlIGNvbW1vbiBjb2RlIG1hcCBkb20wJ3MgcGFnZXMu DQo+ICsgICAgICAgICAqLw0KPiArICAgICAgICBpZiAoIGlvbW11X2RvbTBfc3RyaWN0ICYmDQo+ ICsgICAgICAgICAgICAgcGFnZV9pc19yYW1fdHlwZShwZm4sIFJBTV9UWVBFX0NPTlZFTlRJT05B TCkgKQ0KPiArICAgICAgICAgICAgY29udGludWU7DQo+ICsNCj4gKyAgICAgICAgdG1wID0gMSA8 PCAoUEFHRV9TSElGVCAtIFBBR0VfU0hJRlRfNEspOw0KPiArICAgICAgICBmb3IgKCBqID0gMDsg aiA8IHRtcDsgaisrICkNCj4gKyAgICAgICAgew0KPiArICAgICAgICAgICAgaW50IHJldCA9IGlv bW11X21hcF9wYWdlKGQsIHBmbiAqIHRtcCArIGosIHBmbiAqIHRtcCArIGosDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9NTVVGX3JlYWRhYmxlfElPTU1VRl93cml0 YWJsZSk7DQo+ICsNCj4gKyAgICAgICAgICAgIGlmICggIXJjICkNCj4gKyAgICAgICAgICAgICAg IHJjID0gcmV0Ow0KPiArICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgaWYgKCByYyApDQo+ICsg ICAgICAgICAgICBwcmludGsoWEVOTE9HX1dBUk5JTkcgImQlZDogSU9NTVUgbWFwcGluZyBmYWls ZWQ6ICVkXG4iLA0KPiArICAgICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgcmMpOw0KPiAr DQo+ICsgICAgICAgIGlmICghKGkgJiAoMHhmZmZmZiA+PiAoUEFHRV9TSElGVCAtIFBBR0VfU0hJ RlRfNEspKSkpDQo+ICsgICAgICAgICAgICBwcm9jZXNzX3BlbmRpbmdfc29mdGlycXMoKTsNCj4g KyAgICB9DQo+ICsNCj4gKw0KPiArfQ0KPiArDQo+ICAvKg0KPiAgICogTG9jYWwgdmFyaWFibGVz Og0KPiAgICogbW9kZTogQw0KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2lvbW11Lmgg Yi94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaA0KPiBpbmRleCA2YjQyZTNiODc2Li43ODc1NjZhNGU3 IDEwMDY0NA0KPiAtLS0gYS94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaA0KPiArKysgYi94ZW4vaW5j bHVkZS94ZW4vaW9tbXUuaA0KPiBAQCAtMzUsNiArMzUsNyBAQCBleHRlcm4gYm9vbF90IGlvbW11 X3Nub29wLCBpb21tdV9xaW52YWwsDQo+IGlvbW11X2ludHJlbWFwLCBpb21tdV9pbnRwb3N0Ow0K PiAgZXh0ZXJuIGJvb2xfdCBpb21tdV9oYXBfcHRfc2hhcmU7DQo+ICBleHRlcm4gYm9vbF90IGlv bW11X2RlYnVnOw0KPiAgZXh0ZXJuIGJvb2xfdCBhbWRfaW9tbXVfcGVyZGV2X2ludHJlbWFwOw0K PiArZXh0ZXJuIGJvb2wgaW9tbXVfaW5jbHVzaXZlOw0KPiANCj4gIGV4dGVybiB1bnNpZ25lZCBp bnQgaW9tbXVfZGV2X2lvdGxiX3RpbWVvdXQ7DQo+IA0KPiBAQCAtNDksNiArNTAsNyBAQCB2b2lk IGFyY2hfaW9tbXVfZG9tYWluX2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAqZCk7DQo+ICBpbnQgYXJj aF9pb21tdV9kb21haW5faW5pdChzdHJ1Y3QgZG9tYWluICpkKTsNCj4gIGludCBhcmNoX2lvbW11 X3BvcHVsYXRlX3BhZ2VfdGFibGUoc3RydWN0IGRvbWFpbiAqZCk7DQo+ICB2b2lkIGFyY2hfaW9t bXVfY2hlY2tfYXV0b3RyYW5zbGF0ZWRfaHdkb20oc3RydWN0IGRvbWFpbiAqZCk7DQo+ICt2b2lk IGFyY2hfaW9tbXVfaHdkb21faW5pdChzdHJ1Y3QgZG9tYWluICpkKTsNCj4gDQo+ICBpbnQgaW9t bXVfY29uc3RydWN0KHN0cnVjdCBkb21haW4gKmQpOw0KPiANCj4gLS0NCj4gMi4xOC4wDQo+IA0K PiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4g WGVuLWRldmVsIG1haWxpbmcgbGlzdA0KPiBYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcN Cj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZl bA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==