From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [RFC XEN PATCH 04/16] xen/x86: add XENMEM_populate_pmemmap to map host pmem pages to guest Date: Fri, 9 Dec 2016 17:22:12 -0500 Message-ID: <20161209222211.GD21093@localhost.localdomain> References: <20161010003235.4213-1-haozhong.zhang@intel.com> <20161010003235.4213-5-haozhong.zhang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20161010003235.4213-5-haozhong.zhang@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Haozhong Zhang Cc: Xiao Guangrong , Andrew Cooper , Ian Jackson , xen-devel@lists.xen.org, Jan Beulich , Wei Liu List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBPY3QgMTAsIDIwMTYgYXQgMDg6MzI6MjNBTSArMDgwMCwgSGFvemhvbmcgWmhhbmcg d3JvdGU6Cj4gWEVOTUVNX3BvcHVsYXRlX3BtZW1tYXAgaXMgdXNlZCBieSB0b29sc3RhY2sgdG8g bWFwIGdpdmVuIGhvc3QgcG1lbSBwYWdlcwo+IHRvIGdpdmVuIGd1ZXN0IHBhZ2VzLiBPbmx5IHBh Z2VzIGluIHRoZSBkYXRhIGFyZWEgb2YgYSBwbWVtIHJlZ2lvbiBhcmUKPiBhbGxvd2VkIHRvIGJl IG1hcHBlZCB0byBndWVzdC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBIYW96aG9uZyBaaGFuZyA8aGFv emhvbmcuemhhbmdAaW50ZWwuY29tPgo+IC0tLQo+IENjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tz b25AZXUuY2l0cml4LmNvbT4KPiBDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KPiBD YzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgo+IENjOiBBbmRyZXcgQ29vcGVyIDxh bmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgo+IC0tLQo+ICB0b29scy9saWJ4Yy9pbmNsdWRlL3hl bmN0cmwuaCB8ICAgOCArKysKPiAgdG9vbHMvbGlieGMveGNfZG9tYWluLmMgICAgICAgfCAgMTQg KysrKysKPiAgeGVuL2FyY2gveDg2L3BtZW0uYyAgICAgICAgICAgfCAxMjMgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIHhlbi9jb21tb24vZG9tYWluLmMgICAg ICAgICAgIHwgICAzICsrCj4gIHhlbi9jb21tb24vbWVtb3J5LmMgICAgICAgICAgIHwgIDMxICsr KysrKysrKysrCj4gIHhlbi9pbmNsdWRlL3B1YmxpYy9tZW1vcnkuaCAgIHwgIDE0ICsrKystCj4g IHhlbi9pbmNsdWRlL3hlbi9wbWVtLmggICAgICAgIHwgIDEwICsrKysKPiAgeGVuL2luY2x1ZGUv eGVuL3NjaGVkLmggICAgICAgfCAgIDMgKysKPiAgOCBmaWxlcyBjaGFuZ2VkLCAyMDUgaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQo+IAo+IGRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9pbmNs dWRlL3hlbmN0cmwuaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCj4gaW5kZXggMmM4 MzU0NC4uNDZjNzFmYyAxMDA2NDQKPiAtLS0gYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwu aAo+ICsrKyBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCj4gQEAgLTI3MTAsNiArMjcx MCwxNCBAQCBpbnQgeGNfbGl2ZXBhdGNoX3JldmVydCh4Y19pbnRlcmZhY2UgKnhjaCwgY2hhciAq bmFtZSwgdWludDMyX3QgdGltZW91dCk7Cj4gIGludCB4Y19saXZlcGF0Y2hfdW5sb2FkKHhjX2lu dGVyZmFjZSAqeGNoLCBjaGFyICpuYW1lLCB1aW50MzJfdCB0aW1lb3V0KTsKPiAgaW50IHhjX2xp dmVwYXRjaF9yZXBsYWNlKHhjX2ludGVyZmFjZSAqeGNoLCBjaGFyICpuYW1lLCB1aW50MzJfdCB0 aW1lb3V0KTsKPiAgCj4gKy8qKgo+ICsgKiBNYXAgaG9zdCBwbWVtIHBhZ2VzIGF0IFBGTnMgQG1m biB+IChAbWZuICsgQG5yX21mbnMgLSAxKSB0bwo+ICsgKiBndWVzdCBwaHlzaWNhbCBwYWdlcyBh dCBndWVzdCBQRk5zIEBncGZuIH4gKEBncGZuICsgQG5yX21mbnMgLSAxKQo+ICsgKi8KPiAraW50 IHhjX2RvbWFpbl9wb3B1bGF0ZV9wbWVtbWFwKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBk b21pZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhlbl9wZm5fdCBtZm4sIHhl bl9wZm5fdCBncGZuLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IG5yX21mbnMpOwo+ICsKPiAgLyogQ29tcGF0IHNoaW1zICovCj4gICNpbmNsdWRlICJ4ZW5j dHJsX2NvbXBhdC5oIgo+ICAKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfZG9tYWluLmMg Yi90b29scy9saWJ4Yy94Y19kb21haW4uYwo+IGluZGV4IDI5NmI4NTIuLjgxYTkwYTEgMTAwNjQ0 Cj4gLS0tIGEvdG9vbHMvbGlieGMveGNfZG9tYWluLmMKPiArKysgYi90b29scy9saWJ4Yy94Y19k b21haW4uYwo+IEBAIC0yNTIwLDYgKzI1MjAsMjAgQEAgaW50IHhjX2RvbWFpbl9zb2Z0X3Jlc2V0 KHhjX2ludGVyZmFjZSAqeGNoLAo+ICAgICAgZG9tY3RsLmRvbWFpbiA9IChkb21pZF90KWRvbWlk Owo+ICAgICAgcmV0dXJuIGRvX2RvbWN0bCh4Y2gsICZkb21jdGwpOwo+ICB9Cj4gKwo+ICtpbnQg eGNfZG9tYWluX3BvcHVsYXRlX3BtZW1tYXAoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRv bWlkLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGVuX3Bmbl90IG1mbiwgeGVu X3Bmbl90IGdwZm4sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgbnJfbWZucykKPiArewo+ICsgICAgc3RydWN0IHhlbl9wbWVtbWFwIHBtZW1tYXAgPSB7Cj4g KyAgICAgICAgLmRvbWlkICAgPSBkb21pZCwKPiArICAgICAgICAubWZuICAgICA9IG1mbiwKPiAr ICAgICAgICAuZ3BmbiAgICA9IGdwZm4sCj4gKyAgICAgICAgLm5yX21mbnMgPSBucl9tZm5zLAo+ ICsgICAgfTsKPiArICAgIHJldHVybiBkb19tZW1vcnlfb3AoeGNoLCBYRU5NRU1fcG9wdWxhdGVf cG1lbW1hcCwgJnBtZW1tYXAsIHNpemVvZihwbWVtbWFwKSk7Cj4gK30KPiArCj4gIC8qCj4gICAq IExvY2FsIHZhcmlhYmxlczoKPiAgICogbW9kZTogQwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvcG1lbS5jIGIveGVuL2FyY2gveDg2L3BtZW0uYwo+IGluZGV4IDcwMzU4ZWQuLmU0ZGM2ODUg MTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L3BtZW0uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9w bWVtLmMKPiBAQCAtMjQsNiArMjQsOSBAQAo+ICAjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+Cj4g ICNpbmNsdWRlIDx4ZW4vcG1lbS5oPgo+ICAjaW5jbHVkZSA8eGVuL2lvY2FwLmg+Cj4gKyNpbmNs dWRlIDx4ZW4vc2NoZWQuaD4KPiArI2luY2x1ZGUgPHhlbi9ldmVudC5oPgo+ICsjaW5jbHVkZSA8 eGVuL3BhZ2luZy5oPgo+ICAjaW5jbHVkZSA8YXNtLXg4Ni9tbS5oPgo+ICAKPiAgLyoKPiBAQCAt NjMsNiArNjYsNDggQEAgc3RhdGljIGludCBjaGVja19yZXNlcnZlZF9zaXplKHVuc2lnbmVkIGxv bmcgcnN2X21mbnMsIHVuc2lnbmVkIGxvbmcgdG90YWxfbWZucykKPiAgICAgICAgICAoKHNpemVv ZigqbWFjaGluZV90b19waHlzX21hcHBpbmcpICogdG90YWxfbWZucykgPj4gUEFHRV9TSElGVCk7 Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQgaXNfZGF0YV9tZm4odW5zaWduZWQgbG9uZyBtZm4pCgpi b29sCj4gK3sKPiArICAgIHN0cnVjdCBsaXN0X2hlYWQgKmN1cjsKPiArICAgIGludCBkYXRhID0g MDsKPiArCj4gKyAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBtZW1fbGlzdF9sb2NrKSk7Cj4g Kwo+ICsgICAgbGlzdF9mb3JfZWFjaChjdXIsICZwbWVtX2xpc3QpCj4gKyAgICB7Cj4gKyAgICAg ICAgc3RydWN0IHBtZW0gKnBtZW0gPSBsaXN0X2VudHJ5KGN1ciwgc3RydWN0IHBtZW0sIGxpbmsp Owo+ICsKPiArICAgICAgICBpZiAoIHBtZW0tPmRhdGFfc3BmbiA8PSBtZm4gJiYgbWZuIDwgcG1l bS0+ZGF0YV9lcGZuICkKCllvdSBtYXkgd2FudCB0byBjaGFuZ2UgdGhlIGZpcnN0IGNvbmRpdGlv bmFsIHRvIGhhdmUgJ21mbicgb24gdGhlIGxlZnQKc2lkZS4gQW5kIHBlcmhhcHMgY2hhbmdlICdt Zm4nIHRvICdwZm4nIGFzIHRoYXQgaXMgd2hhdCB5b3VyIHN0cnVjdHVyZQppcyBjYWxsZWQ/CgpC dXQgLi4uIG1heWJlIHRoZSAjMyBwYXRjaCB0aGF0IGludHJvZHVjZXMgWEVOUEZfcG1lbV9hZGQg c2hvdWxkCnVzZSAnZGF0YV9zbWZuJywgJ2RhdGFfZW1mbicgYW5kIHNvIG9uPwoKPiArICAgICAg ICB7Cj4gKyAgICAgICAgICAgIGRhdGEgPSAxOwo+ICsgICAgICAgICAgICBicmVhazsKPiArICAg ICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIGRhdGE7Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQgcG1lbV9wYWdlX3ZhbGlkKHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UsIHN0cnVjdCBkb21h aW4gKmQpCgpib29sCj4gK3sKPiArICAgIC8qIG9ubHkgZGF0YSBhcmVhIGNhbiBiZSBtYXBwZWQg dG8gZ3Vlc3QgKi8KPiArICAgIGlmICggIWlzX2RhdGFfbWZuKHBhZ2VfdG9fbWZuKHBhZ2UpKSAp Cj4gKyAgICB7Cj4gKyAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcsICJwbWVtOiBtZm4gMHgl bHggaXMgbm90IGEgcG1lbSBkYXRhIHBhZ2VcbiIsCj4gKyAgICAgICAgICAgICAgICBwYWdlX3Rv X21mbihwYWdlKSk7Cj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICB9Cj4gKwo+ICsgICAgLyog aW51c2Uvb2ZmbGluZWQvb2ZmbGluaW5nIHBtZW0gcGFnZSBjYW5ub3QgYmUgbWFwcGVkIHRvIGd1 ZXN0ICovCj4gKyAgICBpZiAoICFwYWdlX3N0YXRlX2lzKHBhZ2UsIGZyZWUpICkKPiArICAgIHsK PiArICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgInBtZW06IGludmFsaWQgcGFnZSBzdGF0 ZSBvZiBtZm4gMHglbHg6IDB4JWx4XG4iLAo+ICsgICAgICAgICAgICAgICAgcGFnZV90b19tZm4o cGFnZSksIHBhZ2UtPmNvdW50X2luZm8gJiBQR0Nfc3RhdGUpOwo+ICsgICAgICAgIHJldHVybiAw Owo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiAxOwo+ICt9Cj4gKwo+ICBzdGF0aWMgaW50IHBt ZW1fYWRkX2NoZWNrKHVuc2lnbmVkIGxvbmcgc3BmbiwgdW5zaWduZWQgbG9uZyBlcGZuLAo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcnN2X3NwZm4sIHVuc2lnbmVk IGxvbmcgcnN2X2VwZm4sCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyBkYXRhX3NwZm4sIHVuc2lnbmVkIGxvbmcgZGF0YV9lcGZuKQo+IEBAIC0xNTksMyArMjA0LDgx IEBAIGludCBwbWVtX2FkZCh1bnNpZ25lZCBsb25nIHNwZm4sIHVuc2lnbmVkIGxvbmcgZXBmbiwK PiAgIG91dDoKPiAgICAgIHJldHVybiByZXQ7Cj4gIH0KPiArCj4gK3N0YXRpYyBpbnQgcG1lbV9h c3NpZ25fcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZywgdW5zaWduZWQgaW50IG9yZGVyKQo+ICt7Cj4gKyAg ICBpbnQgcmMgPSAwOwo+ICsgICAgdW5zaWduZWQgbG9uZyBpOwo+ICsKPiArICAgIHNwaW5fbG9j aygmZC0+cG1lbV9sb2NrKTsKPiArCj4gKyAgICBpZiAoIHVubGlrZWx5KGQtPmlzX2R5aW5nKSAp Cj4gKyAgICB7Cj4gKyAgICAgICAgcmMgPSAtRUlOVkFMOwo+ICsgICAgICAgIGdvdG8gb3V0Owo+ ICsgICAgfQo+ICsKPiArICAgIGZvciAoIGkgPSAwOyBpIDwgKDEgPDwgb3JkZXIpOyBpKysgKQo+ ICsgICAgewo+ICsgICAgICAgIEFTU0VSVChwYWdlX2dldF9vd25lcigmcGdbaV0pID09IE5VTEwp Owo+ICsgICAgICAgIEFTU0VSVCgocGdbaV0uY291bnRfaW5mbyAmIH4oUEdDX2FsbG9jYXRlZCB8 IDEpKSA9PSAwKTsKPiArICAgICAgICBwYWdlX3NldF9vd25lcigmcGdbaV0sIGQpOwo+ICsgICAg ICAgIHNtcF93bWIoKTsKCldoeSBoZXJlPyBXaHkgbm90IGFmdGVyIHRoZSBjb3VudF9pbmZvIGlz IHNldD8KCj4gKyAgICAgICAgcGdbaV0uY291bnRfaW5mbyA9IFBHQ19hbGxvY2F0ZWQgfCAxOwo+ ICsgICAgICAgIHBhZ2VfbGlzdF9hZGRfdGFpbCgmcGdbaV0sICZkLT5wbWVtX3BhZ2VfbGlzdCk7 Cj4gKyAgICB9Cj4gKwo+ICsgb3V0Ogo+ICsgICAgc3Bpbl91bmxvY2soJmQtPnBtZW1fbG9jayk7 Cj4gKyAgICByZXR1cm4gcmM7Cj4gK30KPiArCj4gK2ludCBwbWVtX3BvcHVsYXRlKHN0cnVjdCB4 ZW5fcG1lbW1hcF9hcmdzICphcmdzKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gYXJn cy0+ZG9tYWluOwo+ICsgICAgdW5zaWduZWQgbG9uZyBpLCBtZm4sIGdwZm47Cj4gKyAgICBzdHJ1 Y3QgcGFnZV9pbmZvICpwYWdlOwo+ICsgICAgaW50IHJjID0gMDsKPiArCj4gKyAgICBpZiAoICFo YXNfaHZtX2NvbnRhaW5lcl9kb21haW4oZCkgfHwgIXBhZ2luZ19tb2RlX3RyYW5zbGF0ZShkKSAp Cj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsgICAgZm9yICggaSA9IGFyZ3MtPm5y X2RvbmUsIG1mbiA9IGFyZ3MtPm1mbiArIGksIGdwZm4gPSBhcmdzLT5ncGZuICsgaTsKPiArICAg ICAgICAgIGkgPCBhcmdzLT5ucl9tZm5zOwo+ICsgICAgICAgICAgaSsrLCBtZm4rKywgZ3Bmbisr ICkKPiArICAgIHsKPiArICAgICAgICBpZiAoIGkgIT0gYXJncy0+bnJfZG9uZSAmJiBoeXBlcmNh bGxfcHJlZW1wdF9jaGVjaygpICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIGFyZ3MtPnBy ZWVtcHRlZCA9IDE7Cj4gKyAgICAgICAgICAgIGdvdG8gb3V0Owo+ICsgICAgICAgIH0KPiArCj4g KyAgICAgICAgcGFnZSA9IG1mbl90b19wYWdlKG1mbik7Cj4gKwo+ICsgICAgICAgIHNwaW5fbG9j aygmcG1lbV9saXN0X2xvY2spOwo+ICsgICAgICAgIGlmICggIXBtZW1fcGFnZV92YWxpZChwYWdl LCBkKSApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywg InBtZW06IE1GTiAweCVseCBub3QgYSB2YWxpZCBwbWVtIHBhZ2VcbiIsIG1mbik7Cj4gKyAgICAg ICAgICAgIHNwaW5fdW5sb2NrKCZwbWVtX2xpc3RfbG9jayk7Cj4gKyAgICAgICAgICAgIHJjID0g LUVJTlZBTDsKPiArICAgICAgICAgICAgZ290byBvdXQ7Cj4gKyAgICAgICAgfQo+ICsgICAgICAg IHBhZ2UtPmNvdW50X2luZm8gPSBQR0Nfc3RhdGVfaW51c2U7CgpObyB0ZXN0X2FuZF9zZXRfYml0 ID8KCj4gKyAgICAgICAgc3Bpbl91bmxvY2soJnBtZW1fbGlzdF9sb2NrKTsKPiArCj4gKyAgICAg ICAgcGFnZS0+dS5pbnVzZS50eXBlX2luZm8gPSAwOwo+ICsKPiArICAgICAgICBndWVzdF9waHlz bWFwX2FkZF9wYWdlKGQsIF9nZm4oZ3BmbiksIF9tZm4obWZuKSwgMCk7Cj4gKyAgICAgICAgaWYg KCBwbWVtX2Fzc2lnbl9wYWdlcyhkLCBwYWdlLCAwKSApCj4gKyAgICAgICAgewo+ICsgICAgICAg ICAgICBndWVzdF9waHlzbWFwX3JlbW92ZV9wYWdlKGQsIF9nZm4oZ3BmbiksIF9tZm4obWZuKSwg MCk7CgpEb24ndCB5b3UgYWxzbyBuZWVkIHRvIGRvIHNvbWV0aGluZyBhYm91dCBQR0Nfc3RhdGVf aW51c2UgPwo+ICsgICAgICAgICAgICByYyA9IC1FRkFVTFQ7Cj4gKyAgICAgICAgICAgIGdvdG8g b3V0Owo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyBvdXQ6Cj4gKyAgICBhcmdzLT5ucl9k b25lID0gaTsKPiArICAgIHJldHVybiByYzsKPiArfQo+IGRpZmYgLS1naXQgYS94ZW4vY29tbW9u L2RvbWFpbi5jIGIveGVuL2NvbW1vbi9kb21haW4uYwo+IGluZGV4IDNhYmFjYTkuLjgxOTI1NDgg MTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi9kb21haW4uYwo+ICsrKyBiL3hlbi9jb21tb24vZG9t YWluLmMKPiBAQCAtMjg4LDYgKzI4OCw5IEBAIHN0cnVjdCBkb21haW4gKmRvbWFpbl9jcmVhdGUo ZG9taWRfdCBkb21pZCwgdW5zaWduZWQgaW50IGRvbWNyX2ZsYWdzLAo+ICAgICAgSU5JVF9QQUdF X0xJU1RfSEVBRCgmZC0+cGFnZV9saXN0KTsKPiAgICAgIElOSVRfUEFHRV9MSVNUX0hFQUQoJmQt PnhlbnBhZ2VfbGlzdCk7Cj4gIAo+ICsgICAgc3Bpbl9sb2NrX2luaXRfcHJvZihkLCBwbWVtX2xv Y2spOwo+ICsgICAgSU5JVF9QQUdFX0xJU1RfSEVBRCgmZC0+cG1lbV9wYWdlX2xpc3QpOwo+ICsK PiAgICAgIHNwaW5fbG9ja19pbml0KCZkLT5ub2RlX2FmZmluaXR5X2xvY2spOwo+ICAgICAgZC0+ bm9kZV9hZmZpbml0eSA9IE5PREVfTUFTS19BTEw7Cj4gICAgICBkLT5hdXRvX25vZGVfYWZmaW5p dHkgPSAxOwo+IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL21lbW9yeS5jIGIveGVuL2NvbW1vbi9t ZW1vcnkuYwo+IGluZGV4IDIxNzk3Y2EuLjA5Y2IxYzkgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1v bi9tZW1vcnkuYwo+ICsrKyBiL3hlbi9jb21tb24vbWVtb3J5LmMKPiBAQCAtMjQsNiArMjQsNyBA QAo+ICAjaW5jbHVkZSA8eGVuL251bWEuaD4KPiAgI2luY2x1ZGUgPHhlbi9tZW1fYWNjZXNzLmg+ Cj4gICNpbmNsdWRlIDx4ZW4vdHJhY2UuaD4KPiArI2luY2x1ZGUgPHhlbi9wbWVtLmg+Cj4gICNp bmNsdWRlIDxhc20vY3VycmVudC5oPgo+ICAjaW5jbHVkZSA8YXNtL2hhcmRpcnEuaD4KPiAgI2lu Y2x1ZGUgPGFzbS9wMm0uaD4KPiBAQCAtMTMyOSw2ICsxMzMwLDM2IEBAIGxvbmcgZG9fbWVtb3J5 X29wKHVuc2lnbmVkIGxvbmcgY21kLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZykK PiAgICAgIH0KPiAgI2VuZGlmCj4gIAo+ICsgICAgY2FzZSBYRU5NRU1fcG9wdWxhdGVfcG1lbW1h cDoKPiArICAgIHsKPiArICAgICAgICBzdHJ1Y3QgeGVuX3BtZW1tYXAgcG1lbW1hcDsKPiArICAg ICAgICBzdHJ1Y3QgeGVuX3BtZW1tYXBfYXJncyBhcmdzOwo+ICsKPiArICAgICAgICBpZiAoIGNv cHlfZnJvbV9ndWVzdCgmcG1lbW1hcCwgYXJnLCAxKSApCj4gKyAgICAgICAgICAgIHJldHVybiAt RUZBVUxUOwo+ICsKPiArICAgICAgICBkID0gcmN1X2xvY2tfZG9tYWluX2J5X2FueV9pZChwbWVt bWFwLmRvbWlkKTsKPiArICAgICAgICBpZiAoICFkICkKPiArICAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7Cj4gKwo+ICsgICAgICAgIGFyZ3MuZG9tYWluID0gZDsKPiArICAgICAgICBhcmdzLm1m biA9IHBtZW1tYXAubWZuOwo+ICsgICAgICAgIGFyZ3MuZ3BmbiA9IHBtZW1tYXAuZ3BmbjsKPiAr ICAgICAgICBhcmdzLm5yX21mbnMgPSBwbWVtbWFwLm5yX21mbnM7Cj4gKyAgICAgICAgYXJncy5u cl9kb25lID0gc3RhcnRfZXh0ZW50Owo+ICsgICAgICAgIGFyZ3MucHJlZW1wdGVkID0gMDsKPiAr Cj4gKyAgICAgICAgcmMgPSBwbWVtX3BvcHVsYXRlKCZhcmdzKTsKPiArICAgICAgICByY3VfdW5s b2NrX2RvbWFpbihkKTsKPiArCj4gKyAgICAgICAgaWYgKCAhcmMgJiYgYXJncy5wcmVlbXB0ZWQg KQoKTmljZSEgR2xhZCB0byBzZWUgdGhhdCBwcmVlbXB0aW9uIGlzIHRoZXJlIQoKPiArICAgICAg ICAgICAgcmV0dXJuIGh5cGVyY2FsbF9jcmVhdGVfY29udGludWF0aW9uKAo+ICsgICAgICAgICAg ICAgICAgX19IWVBFUlZJU09SX21lbW9yeV9vcCwgImxoIiwKPiArICAgICAgICAgICAgICAgIG9w IHwgKGFyZ3MubnJfZG9uZSA8PCBNRU1PUF9FWFRFTlRfU0hJRlQpLCBhcmcpOwo+ICsKPiArICAg ICAgICBicmVhazsKPiArICAgIH0KPiArCj4gICAgICBkZWZhdWx0Ogo+ICAgICAgICAgIHJjID0g YXJjaF9tZW1vcnlfb3AoY21kLCBhcmcpOwo+ICAgICAgICAgIGJyZWFrOwoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs Cg==