From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v2 5/5] x86/iommu: add PVH support to the inclusive options Date: Wed, 1 Aug 2018 11:27:44 +0000 Message-ID: <3f3da35161f44583ac2911bb999bbf3d@AMSPEX02CL03.citrite.net> References: <20180801110340.67695-1-roger.pau@citrix.com> <20180801110340.67695-6-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fkpIE-0005yc-LK for xen-devel@lists.xenproject.org; Wed, 01 Aug 2018 11:27:50 +0000 In-Reply-To: <20180801110340.67695-6-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: 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+IENjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFi ZWxsaW5pQGtlcm5lbC5vcmc+OyBXZWkgTGl1DQo+IDx3ZWkubGl1MkBjaXRyaXguY29tPjsgR2Vv cmdlIER1bmxhcCA8R2VvcmdlLkR1bmxhcEBjaXRyaXguY29tPjsNCj4gQW5kcmV3IENvb3BlciA8 QW5kcmV3LkNvb3BlcjNAY2l0cml4LmNvbT47IElhbiBKYWNrc29uDQo+IDxJYW4uSmFja3NvbkBj aXRyaXguY29tPjsgVGltIChYZW4ub3JnKSA8dGltQHhlbi5vcmc+OyBKdWxpZW4gR3JhbGwNCj4g PGp1bGllbi5ncmFsbEBhcm0uY29tPjsgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPjsg Um9nZXIgUGF1DQo+IE1vbm5lIDxyb2dlci5wYXVAY2l0cml4LmNvbT4NCj4gU3ViamVjdDogW1hl bi1kZXZlbF0gW1BBVENIIHYyIDUvNV0geDg2L2lvbW11OiBhZGQgUFZIIHN1cHBvcnQgdG8gdGhl DQo+IGluY2x1c2l2ZSBvcHRpb25zDQo+IA0KPiBTZXZlcmFsIHBlb3BsZSBoYXZlIHJlcG9ydGVk IGhhcmR3YXJlIGlzc3VlcyAobWFsZnVuY3Rpb25pbmcgVVNCDQo+IGNvbnRyb2xsZXJzKSBkdWUg dG8gaW9tbXUgcGFnZSBmYXVsdHMgb24gSW50ZWwgaGFyZHdhcmUuIFRob3NlIGZhdWx0cw0KPiBh cmUgY2F1c2VkIGJ5IG1pc3NpbmcgUk1SUiAoVlRkKSBlbnRyaWVzIGluIHRoZSBBQ1BJIHRhYmxl cy4gVGhvc2UgY2FuDQo+IGJlIHdvcmtlZCBhcm91bmQgb24gVlRkIGhhcmR3YXJlIGJ5IG1hbnVh bGx5IGFkZGluZyBSTVJSIGVudHJpZXMgb24NCj4gdGhlIGNvbW1hbmQgbGluZSwgdGhpcyBpcyBo b3dldmVyIGxpbWl0ZWQgdG8gSW50ZWwgaGFyZHdhcmUgYW5kIHF1aXRlDQo+IGN1bWJlcnNvbWUg dG8gZG8uDQo+IA0KPiBJbiBvcmRlciB0byBzb2x2ZSB0aG9zZSBpc3N1ZXMgYWRkIGEgbmV3IGRv bTAtaW9tbXU9cmVzZXJ2ZWQgb3B0aW9uDQo+IHRoYXQgaWRlbnRpdHkgbWFwcyBhbGwgcmVnaW9u cyBtYXJrZWQgYXMgcmVzZXJ2ZWQgaW4gdGhlIG1lbW9yeSBtYXAuDQo+IE5vdGUgdGhhdCByZWdp b25zIHVzZWQgYnkgZGV2aWNlcyBlbXVsYXRlZCBieSBYZW4gKExBUElDLCBJTy1BUElDIG9yDQo+ IFBDSWUgTUNGRyByZWdpb25zKSBhcmUgc3BlY2lmaWNhbGx5IGF2b2lkZWQuIE5vdGUgdGhhdCB0 aGlzIG9wdGlvbiBpcw0KPiBhdmFpbGFibGUgdG8gYSBQVkggRG9tMCAoYXMgb3Bwb3NlZCB0byB0 aGUgaW5jbHVzaXZlIG9wdGlvbiB3aGljaCBvbmx5DQo+IHdvcmtzIGZvciBQViBEb20wKS4NCj4g DQo+IFNpZ25lZC1vZmYtYnk6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29t Pg0KPiAtLS0NCj4gQ2hhbmdlcyBzaW5jZSB2MToNCj4gIC0gSW50cm9kdWNlIGEgbmV3IHJlc2Vy dmVkIG9wdGlvbiBpbnN0ZWFkIG9mIGFidXNpbmcgdGhlIGluY2x1c2l2ZQ0KPiAgICBvcHRpb24u DQo+ICAtIFVzZSB0aGUgc2FtZSBoZWxwZXIgZnVuY3Rpb24gZm9yIFBWIGFuZCBQVkggaW4gb3Jk ZXIgdG8gZGVjaWRlIGlmIGENCj4gICAgcGFnZSBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGRvbWFp biBwYWdlIHRhYmxlcy4NCj4gIC0gVXNlIHRoZSBkYXRhIGluc2lkZSBvZiB0aGUgZG9tYWluIHN0 cnVjdCB0byBkZXRlY3Qgb3ZlcmxhcHMgd2l0aA0KPiAgICBlbXVsYXRlZCBNTUlPIHJlZ2lvbnMu DQo+IC0tLQ0KPiBDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4N Cj4gQ2M6IEdlb3JnZSBEdW5sYXAgPEdlb3JnZS5EdW5sYXBAZXUuY2l0cml4LmNvbT4NCj4gQ2M6 IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPg0KPiBDYzogSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPg0KPiBDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxA YXJtLmNvbT4NCj4gQ2M6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xl LmNvbT4NCj4gQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4N Cj4gQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPg0KPiBDYzogV2VpIExpdSA8d2VpLmxpdTJA Y2l0cml4LmNvbT4NCj4gLS0tDQo+ICBkb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93 biB8ICA5ICsrKw0KPiAgeGVuL2FyY2gveDg2L2h2bS9pby5jICAgICAgICAgICAgICAgfCAgNSAr Kw0KPiAgeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyAgICAgfCAgMyArDQo+ICB4ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYyB8IDg4ICsrKysrKysrKysrKysrKysrKysr Ky0tLS0tLQ0KPiAtLQ0KPiAgeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaW8uaCAgICAgICAgfCAg MyArDQo+ICB4ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaCAgICAgICAgICAgICB8ICAyICstDQo+ICA2 IGZpbGVzIGNoYW5nZWQsIDg2IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQ0KPiANCj4g ZGlmZiAtLWdpdCBhL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duIGIvZG9jcy9t aXNjL3hlbi0NCj4gY29tbWFuZC1saW5lLm1hcmtkb3duDQo+IGluZGV4IDMwZDk3MGJjMmUuLjUy NmE5NmZmYzUgMTAwNjQ0DQo+IC0tLSBhL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtk b3duDQo+ICsrKyBiL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duDQo+IEBAIC0x MjQxLDYgKzEyNDEsMTUgQEAgZGV0ZWN0aW9uIG9mIHN5c3RlbXMga25vd24gdG8gbWlzYmVoYXZl IHVwb24NCj4gYWNjZXNzZXMgdG8gdGhhdCBwb3J0Lg0KPiAgPj4gYXBwbGljYWJsZSB0byBhIFBW IGRvbTAuIEFsc28gbm90ZSB0aGF0IGlmIGBzdHJpY3RgIG1vZGUgaXMgZW5hYmxlZA0KPiAgPj4g dGhlbiBjb252ZW50aW9uYWwgUkFNIHBhZ2VzIG5vdCBhc3NpZ25lZCB0byBkb20wIHdpbGwgbm90 IGJlIG1hcHBlZC4NCj4gDQo+ICs+IGByZXNlcnZlZGANCj4gKw0KPiArPiBEZWZhdWx0OiBgdHJ1 ZWAgb24gSW50ZWwgaGFyZHdhcmUsIGBmYWxzZWAgb3RoZXJ3aXNlDQo+ICsNCj4gKz4+IFVzZSB0 aGlzIHRvIHdvcmsgYXJvdW5kIGZpcm13YXJlIGlzc3VlcyBwcm92aWRpbmcgaW5jb3JyZWN0IFJN UlIgb3INCj4gSVZNRA0KPiArPj4gZW50cmllcy4gUmF0aGVyIHRoYW4gb25seSBtYXBwaW5nIFJB TSBwYWdlcyBmb3IgSU9NTVUgYWNjZXNzZXMgZm9yDQo+IERvbTAsDQo+ICs+PiBhbGwgbWVtb3J5 IHJlZ2lvbnMgbWFya2VkIGFzIHJlc2VydmVkIGluIHRoZSBtZW1vcnkgbWFwIHRoYXQgZG9uJ3QN Cj4gb3ZlcmxhcA0KPiArPj4gd2l0aCBhbnkgTU1JTyByZWdpb24gZnJvbSBlbXVsYXRlZCBkZXZp Y2VzIHdpbGwgYmUgaWRlbnRpdHkgbWFwcGVkLg0KPiArDQo+ICAjIyMgaW9tbXVcX2RldlxfaW90 bGJcX3RpbWVvdXQNCj4gID4gYD0gPGludGVnZXI+YA0KPiANCj4gZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9odm0vaW8uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaW8uYw0KPiBpbmRleCBiZjRkODc0 OGQzLi41ZTAxYzMzODkwIDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2lvLmMNCj4g KysrIGIveGVuL2FyY2gveDg2L2h2bS9pby5jDQo+IEBAIC00MDQsNiArNDA0LDExIEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgaHZtX21tY2ZnDQo+ICp2cGNpX21tY2ZnX2ZpbmQoY29uc3Qgc3RydWN0 IGRvbWFpbiAqZCwNCj4gICAgICByZXR1cm4gTlVMTDsNCj4gIH0NCj4gDQo+ICtib29sIHZwY2lf bW1jZmdfYWRkcmVzcyhjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCBwYWRkcl90IGFkZHIpDQo+ICt7 DQo+ICsgICAgcmV0dXJuIHZwY2lfbW1jZmdfZmluZChkLCBhZGRyKTsNCj4gK30NCj4gKw0KPiAg c3RhdGljIHVuc2lnbmVkIGludCB2cGNpX21tY2ZnX2RlY29kZV9hZGRyKGNvbnN0IHN0cnVjdCBo dm1fbW1jZmcNCj4gKm1tY2ZnLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBhZGRyX3QgYWRkciwgcGNpX3NiZGZfdCAqc2JkZikNCj4gIHsNCj4gZGlmZiAt LWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMNCj4gYi94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9pb21tdS5jDQo+IGluZGV4IDY2MTFlMTNjYzIuLmEzZWI3YzViN2YgMTAwNjQ0 DQo+IC0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMNCj4gKysrIGIveGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYw0KPiBAQCAtNzUsNiArNzUsNyBAQCBjdXN0b21fcGFy YW0oImRvbTAtaW9tbXUiLA0KPiBwYXJzZV9kb20wX2lvbW11X3BhcmFtKTsNCj4gIGJvb2wgX19o d2RvbV9pbml0ZGF0YSBpb21tdV9kb20wX3N0cmljdDsNCj4gIGJvb2wgX19yZWFkX21vc3RseSBp b21tdV9kb20wX3Bhc3N0aHJvdWdoOw0KPiAgaW50OF90IF9faHdkb21faW5pdGRhdGEgaW9tbXVf ZG9tMF9pbmNsdXNpdmUgPSAtMTsNCj4gK2ludDhfdCBfX2h3ZG9tX2luaXRkYXRhIGlvbW11X2Rv bTBfcmVzZXJ2ZWQgPSAtMTsNCj4gDQo+ICBERUZJTkVfUEVSX0NQVShib29sX3QsIGlvbW11X2Rv bnRfZmx1c2hfaW90bGIpOw0KPiANCj4gQEAgLTE2MSw2ICsxNjIsOCBAQCBzdGF0aWMgaW50IF9f aW5pdCBwYXJzZV9kb20wX2lvbW11X3BhcmFtKGNvbnN0DQo+IGNoYXIgKnMpDQo+ICAgICAgICAg ICAgICBpb21tdV9kb20wX3N0cmljdCA9ICF2YWw7DQo+ICAgICAgICAgIGVsc2UgaWYgKCAhc3Ry bmNtcChzLCAiaW5jbHVzaXZlIiwgc3MgLSBzKSApDQo+ICAgICAgICAgICAgICBpb21tdV9kb20w X2luY2x1c2l2ZSA9IHZhbDsNCj4gKyAgICAgICAgZWxzZSBpZiAoICFzdHJuY21wKHMsICJyZXNl cnZlZCIsIHNzIC0gcykgKQ0KPiArICAgICAgICAgICAgaW9tbXVfZG9tMF9yZXNlcnZlZCA9IHZh bDsNCj4gICAgICAgICAgZWxzZQ0KPiAgICAgICAgICAgICAgcmMgPSAtRUlOVkFMOw0KPiANCj4g ZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jDQo+IGIveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11LmMNCj4gaW5kZXggYmY2ZWRmNGMwNC4uNjZj NWNjMjhlZCAxMDA2NDQNCj4gLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11 LmMNCj4gKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11LmMNCj4gQEAgLTIw LDYgKzIwLDcgQEANCj4gICNpbmNsdWRlIDx4ZW4vc29mdGlycS5oPg0KPiAgI2luY2x1ZGUgPHhz bS94c20uaD4NCj4gDQo+ICsjaW5jbHVkZSA8YXNtL2h2bS9pby5oPg0KPiAgI2luY2x1ZGUgPGFz bS9zZXR1cC5oPg0KPiANCj4gIHZvaWQgaW9tbXVfdXBkYXRlX2lyZV9mcm9tX2FwaWMoDQo+IEBA IC0xMzQsMTUgKzEzNSw3NSBAQCB2b2lkIGFyY2hfaW9tbXVfZG9tYWluX2Rlc3Ryb3koc3RydWN0 IGRvbWFpbg0KPiAqZCkNCj4gIHsNCj4gIH0NCj4gDQo+ICtzdGF0aWMgYm9vbCBfX2h3ZG9tX2lu aXQgaW9tbXVfbWFwKGNvbnN0IHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkDQo+IGxvbmcgcGZu LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1h eF9wZm4pDQo+ICt7DQo+ICsgICAgdW5zaWduZWQgaW50IGk7DQo+ICsNCj4gKyAgICAvKg0KPiAr ICAgICAqIElnbm9yZSBhbnkgYWRkcmVzcyBiZWxvdyAxTUIsIHRoYXQncyBhbHJlYWR5IGlkZW50 aXR5IG1hcHBlZCBieSB0aGUNCj4gKyAgICAgKiBkb21haW4gYnVpbGRlciBmb3IgSFZNLg0KPiAr ICAgICAqLw0KPiArICAgIGlmICggaXNfaHZtX2RvbWFpbihkKSAmJiBwZm4gPCBQRk5fRE9XTihN QigxKSkgKQ0KPiArICAgICAgICByZXR1cm4gZmFsc2U7DQo+ICsNCj4gKyAgICAvKg0KPiArICAg ICAqIElmIGRvbTAtc3RyaWN0IG1vZGUgaXMgZW5hYmxlZCB0aGVuIGV4Y2x1ZGUgY29udmVudGlv bmFsIFJBTSBhbmQgbGV0DQo+IHRoZQ0KPiArICAgICAqIGNvbW1vbiBjb2RlIG1hcCBkb20wJ3Mg cGFnZXMuDQoNClByb2JhYmx5IG91Z2h0IHRvIGFtZW5kIHRoZSBhYm92ZSBjb21tZW50IG5vdyB0 aGF0IHRoZSB0ZXN0IGJlbG93IGlzIG5vdCBzaW1wbHkgZm9yIGlvbW11X2RvbTBfc3RyaWN0LCBi dXQgYWxzbyBmb3IgaXNfaHZtX2RvbWFpbigpIG5vdy4NCg0KICBQYXVsDQoNCj4gKyAgICAgKi8N Cj4gKyAgICBpZiAoIHBhZ2VfaXNfcmFtX3R5cGUocGZuLCBSQU1fVFlQRV9DT05WRU5USU9OQUwp ICYmDQo+ICsgICAgICAgICAoaW9tbXVfZG9tMF9zdHJpY3QgfHwgaXNfaHZtX2RvbWFpbihkKSkg KQ0KPiArICAgICAgICByZXR1cm4gZmFsc2U7DQo+ICsgICAgaWYgKCBwYWdlX2lzX3JhbV90eXBl KHBmbiwgUkFNX1RZUEVfUkVTRVJWRUQpICYmDQo+ICsgICAgICAgICAoIWlvbW11X2RvbTBfcmVz ZXJ2ZWQgfHwgIWlvbW11X2RvbTBfaW5jbHVzaXZlKSApDQo+ICsgICAgICAgIHJldHVybiBmYWxz ZTsNCj4gKyAgICBpZiAoICFwYWdlX2lzX3JhbV90eXBlKHBmbiwgUkFNX1RZUEVfVU5VU0FCTEUp ICYmDQo+ICsgICAgICAgICAhcGFnZV9pc19yYW1fdHlwZShwZm4sIFJBTV9UWVBFX1JFU0VSVkVE KSAmJg0KPiArICAgICAgICAgIXBhZ2VfaXNfcmFtX3R5cGUocGZuLCBSQU1fVFlQRV9DT05WRU5U SU9OQUwpICYmDQo+ICsgICAgICAgICAoIWlvbW11X2RvbTBfaW5jbHVzaXZlIHx8IHBmbiA+IG1h eF9wZm4pICkNCj4gKyAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiArDQo+ICsgICAgLyogQ2hlY2sg dGhhdCBpdCBkb2Vzbid0IG92ZXJsYXAgd2l0aCB0aGUgTEFQSUMgKi8NCj4gKyAgICBpZiAoIGhh c192bGFwaWMoZCkgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgY29uc3Qgc3RydWN0IHZjcHUgKnY7 DQo+ICsNCj4gKyAgICAgICAgZm9yX2VhY2hfdmNwdShkLCB2KQ0KPiArICAgICAgICAgICAgaWYg KCBwZm4gPT0gUEZOX0RPV04odmxhcGljX2Jhc2VfYWRkcmVzcyh2Y3B1X3ZsYXBpYyh2KSkpICkN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQo+ICsgICAgfQ0KPiArICAgIC8qIC4u LiBvciB0aGUgSU8tQVBJQyAqLw0KPiArICAgIGZvciAoIGkgPSAwOyBoYXNfdmlvYXBpYyhkKSAm JiBpIDwgZC0+YXJjaC5odm1fZG9tYWluLm5yX3Zpb2FwaWNzOyBpKysgKQ0KPiArICAgICAgICBp ZiAoIHBmbiA9PSBQRk5fRE9XTihkb21haW5fdmlvYXBpYyhkLCBpKS0+YmFzZV9hZGRyZXNzKSAp DQo+ICsgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQo+ICsgICAgLyoNCj4gKyAgICAgKiAuLi4g b3IgdGhlIFBDSWUgTUNGRyByZWdpb25zLg0KPiArICAgICAqIFRPRE86IHJ1bnRpbWUgYWRkZWQg TU1DRkcgcmVnaW9ucyBhcmUgbm90IGNoZWNrZWQgdG8gbWFrZSBzdXJlDQo+IHRoZXkNCj4gKyAg ICAgKiBkb24ndCBvdmVybGFwIHdpdGggYWxyZWFkeSBtYXBwZWQgcmVnaW9ucywgdGh1cyBwcmV2 ZW50aW5nIHRyYXBwaW5nLg0KPiArICAgICAqLw0KPiArICAgIGlmICggaGFzX3ZwY2koZCkgJiYg dnBjaV9tbWNmZ19hZGRyZXNzKGQsIHBmbiA8PCBQQUdFX1NISUZUKSApDQo+ICsgICAgICAgIHJl dHVybiBmYWxzZTsNCj4gKw0KPiArICAgIHJldHVybiB0cnVlOw0KPiArfQ0KPiArDQo+ICB2b2lk IF9faHdkb21faW5pdCBhcmNoX2lvbW11X2h3ZG9tX2luaXQoc3RydWN0IGRvbWFpbiAqZCkNCj4g IHsNCj4gICAgICB1bnNpZ25lZCBsb25nIGksIHRvcCwgbWF4X3BmbjsNCj4gDQo+ICsgICAgaWYg KCBpb21tdV9kb20wX3Bhc3N0aHJvdWdoICkNCj4gKyAgICAgICAgcmV0dXJuOw0KPiArDQo+ICAg ICAgQlVHX09OKCFpc19oYXJkd2FyZV9kb21haW4oZCkpOw0KPiANCj4gLSAgICAvKiBTZXQgdGhl IGRlZmF1bHQgdmFsdWUgb2YgaW5jbHVzaXZlIGRlcGVuZGluZyBvbiB0aGUgaGFyZHdhcmUuICov DQo+ICsgICAgLyoNCj4gKyAgICAgKiBTZXQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgaW5jbHVzaXZl IGFuZCByZXNlcnZlZCBkZXBlbmRpbmcgb24gdGhlDQo+ICsgICAgICogaGFyZHdhcmUuDQo+ICsg ICAgICovDQo+ICAgICAgaWYgKCBpb21tdV9kb20wX2luY2x1c2l2ZSA9PSAtMSApDQo+ICAgICAg ICAgIGlvbW11X2RvbTBfaW5jbHVzaXZlID0gYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yID09DQo+ IFg4Nl9WRU5ET1JfSU5URUw7DQo+ICsgICAgaWYgKCBpb21tdV9kb20wX3Jlc2VydmVkID09IC0x ICkNCj4gKyAgICAgICAgaW9tbXVfZG9tMF9yZXNlcnZlZCA9IGJvb3RfY3B1X2RhdGEueDg2X3Zl bmRvciA9PQ0KPiBYODZfVkVORE9SX0lOVEVMOw0KPiANCj4gICAgICBtYXhfcGZuID0gKEdCKDQp ID4+IFBBR0VfU0hJRlQpIC0gMTsNCj4gICAgICB0b3AgPSBtYXgobWF4X3BkeCwgcGZuX3RvX3Bk eChtYXhfcGZuKSArIDEpOw0KPiBAQCAtMTUwLDcgKzIxMSw2IEBAIHZvaWQgX19od2RvbV9pbml0 IGFyY2hfaW9tbXVfaHdkb21faW5pdChzdHJ1Y3QNCj4gZG9tYWluICpkKQ0KPiAgICAgIGZvciAo IGkgPSAwOyBpIDwgdG9wOyBpKysgKQ0KPiAgICAgIHsNCj4gICAgICAgICAgdW5zaWduZWQgbG9u ZyBwZm4gPSBwZHhfdG9fcGZuKGkpOw0KPiAtICAgICAgICBib29sIG1hcDsNCj4gICAgICAgICAg aW50IHJjOw0KPiANCj4gICAgICAgICAgLyoNCj4gQEAgLTE1OSwyNyArMjE5LDkgQEAgdm9pZCBf X2h3ZG9tX2luaXQgYXJjaF9pb21tdV9od2RvbV9pbml0KHN0cnVjdA0KPiBkb21haW4gKmQpDQo+ ICAgICAgICAgICAqIHJlZ2lvbnMuIFdoZW4gc2V0LCB0aGUgaW5jbHVzaXZlIG1hcHBpbmcgYWRk aXRpb25hbGx5IG1hcHMgaW4NCj4gICAgICAgICAgICogZXZlcnkgcGZuIHVwIHRvIDRHQiBleGNl cHQgdGhvc2UgdGhhdCBmYWxsIGluIHVudXNhYmxlIHJhbmdlcy4NCj4gICAgICAgICAgICovDQo+ IC0gICAgICAgIGlmICggcGZuID4gbWF4X3BmbiAmJiAhbWZuX3ZhbGlkKF9tZm4ocGZuKSkgKQ0K PiAtICAgICAgICAgICAgY29udGludWU7DQo+IC0NCj4gLSAgICAgICAgaWYgKCBpb21tdV9kb20w X2luY2x1c2l2ZSAmJiBwZm4gPD0gbWF4X3BmbiApDQo+IC0gICAgICAgICAgICBtYXAgPSAhcGFn ZV9pc19yYW1fdHlwZShwZm4sIFJBTV9UWVBFX1VOVVNBQkxFKTsNCj4gLSAgICAgICAgZWxzZQ0K PiAtICAgICAgICAgICAgbWFwID0gcGFnZV9pc19yYW1fdHlwZShwZm4sIFJBTV9UWVBFX0NPTlZF TlRJT05BTCk7DQo+IC0NCj4gLSAgICAgICAgaWYgKCAhbWFwICkNCj4gLSAgICAgICAgICAgIGNv bnRpbnVlOw0KPiAtDQo+IC0gICAgICAgIC8qIEV4Y2x1ZGUgWGVuIGJpdHMgKi8NCj4gLSAgICAg ICAgaWYgKCB4ZW5faW5fcmFuZ2UocGZuKSApDQo+IC0gICAgICAgICAgICBjb250aW51ZTsNCj4g LQ0KPiAtICAgICAgICAvKg0KPiAtICAgICAgICAgKiBJZiBkb20wLXN0cmljdCBtb2RlIGlzIGVu YWJsZWQgdGhlbiBleGNsdWRlIGNvbnZlbnRpb25hbCBSQU0NCj4gLSAgICAgICAgICogYW5kIGxl dCB0aGUgY29tbW9uIGNvZGUgbWFwIGRvbTAncyBwYWdlcy4NCj4gLSAgICAgICAgICovDQo+IC0g ICAgICAgIGlmICggaW9tbXVfZG9tMF9zdHJpY3QgJiYNCj4gLSAgICAgICAgICAgICBwYWdlX2lz X3JhbV90eXBlKHBmbiwgUkFNX1RZUEVfQ09OVkVOVElPTkFMKSApDQo+ICsgICAgICAgIGlmICgg KHBmbiA+IG1heF9wZm4gJiYgIW1mbl92YWxpZChfbWZuKHBmbikpKSB8fA0KPiArICAgICAgICAg ICAgIC8qIEV4Y2x1ZGUgWGVuIGJpdHMgKi8NCj4gKyAgICAgICAgICAgICB4ZW5faW5fcmFuZ2Uo cGZuKSB8fCAhaW9tbXVfbWFwKGQsIHBmbiwgbWF4X3BmbikgKQ0KPiAgICAgICAgICAgICAgY29u dGludWU7DQo+IA0KPiAgICAgICAgICByYyA9IGlvbW11X21hcF9wYWdlKGQsIHBmbiwgcGZuLA0K PiBJT01NVUZfcmVhZGFibGV8SU9NTVVGX3dyaXRhYmxlKTsNCj4gZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL2FzbS14ODYvaHZtL2lvLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pby5oDQo+ IGluZGV4IGU2YjZlZDBiOTIuLjhjY2E0NTZiNTUgMTAwNjQ0DQo+IC0tLSBhL3hlbi9pbmNsdWRl L2FzbS14ODYvaHZtL2lvLmgNCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaW8uaA0K PiBAQCAtMTgwLDYgKzE4MCw5IEBAIGludCByZWdpc3Rlcl92cGNpX21tY2ZnX2hhbmRsZXIoc3Ry dWN0IGRvbWFpbiAqZCwNCj4gcGFkZHJfdCBhZGRyLA0KPiAgLyogRGVzdHJveSB0cmFja2VkIE1N Q0ZHIGFyZWFzLiAqLw0KPiAgdm9pZCBkZXN0cm95X3ZwY2lfbW1jZmcoc3RydWN0IGRvbWFpbiAq ZCk7DQo+IA0KPiArLyogQ2hlY2sgaWYgYW4gYWRkcmVzcyBpcyBiZXR3ZWVuIGEgTU1DRkcgcmVn aW9uIGZvciBhIGRvbWFpbi4gKi8NCj4gK2Jvb2wgdnBjaV9tbWNmZ19hZGRyZXNzKGNvbnN0IHN0 cnVjdCBkb21haW4gKmQsIHBhZGRyX3QgYWRkcik7DQo+ICsNCj4gICNlbmRpZiAvKiBfX0FTTV9Y ODZfSFZNX0lPX0hfXyAqLw0KPiANCj4gDQo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4v aW9tbXUuaCBiL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oDQo+IGluZGV4IDk5ZTViODljMGYuLmZl ZDFiMWVhN2EgMTAwNjQ0DQo+IC0tLSBhL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oDQo+ICsrKyBi L3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oDQo+IEBAIC0zNyw3ICszNyw3IEBAIGV4dGVybiBib29s X3QgaW9tbXVfZGVidWc7DQo+ICBleHRlcm4gYm9vbF90IGFtZF9pb21tdV9wZXJkZXZfaW50cmVt YXA7DQo+IA0KPiAgZXh0ZXJuIGJvb2wgaW9tbXVfZG9tMF9zdHJpY3QsIGlvbW11X2RvbTBfcGFz c3Rocm91Z2g7DQo+IC1leHRlcm4gaW50OF90IGlvbW11X2RvbTBfaW5jbHVzaXZlOw0KPiArZXh0 ZXJuIGludDhfdCBpb21tdV9kb20wX2luY2x1c2l2ZSwgaW9tbXVfZG9tMF9yZXNlcnZlZDsNCj4g DQo+ICBleHRlcm4gdW5zaWduZWQgaW50IGlvbW11X2Rldl9pb3RsYl90aW1lb3V0Ow0KPiANCj4g LS0NCj4gMi4xOC4wDQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18NCj4gWGVuLWRldmVsIG1haWxpbmcgbGlzdA0KPiBYZW4tZGV2ZWxAbGlz dHMueGVucHJvamVjdC5vcmcNCj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu L2xpc3RpbmZvL3hlbi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJv amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hl bi1kZXZlbA==