From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [RFC XEN PATCH 03/16] xen/x86: add a hypercall XENPF_pmem_add to report host pmem regions Date: Fri, 9 Dec 2016 17:02:09 -0500 Message-ID: <20161209220208.GC21093@localhost.localdomain> References: <20161010003235.4213-1-haozhong.zhang@intel.com> <20161010003235.4213-4-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-4-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: Andrew Cooper , Daniel De Graaf , Xiao Guangrong , Jan Beulich , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBPY3QgMTAsIDIwMTYgYXQgMDg6MzI6MjJBTSArMDgwMCwgSGFvemhvbmcgWmhhbmcg d3JvdGU6Cj4gWGVuIGh5cGVydmlzb3IgZG9lcyBub3QgaW5jbHVkZSBhIHBtZW0gZHJpdmVyLiBJ bnN0ZWFkLCBpdCByZWxpZXMgb24gdGhlCj4gcG1lbSBkcml2ZXIgaW4gRG9tMCB0byByZXBvcnQg dGhlIFBGTiByYW5nZXMgb2YgdGhlIGVudGlyZSBwbWVtIHJlZ2lvbiwKPiBpdHMgcmVzZXJ2ZWQg YXJlYSBhbmQgZGF0YSBhcmVhIHZpYSBYRU5QRl9wbWVtX2FkZC4gVGhlIHJlc2VydmVkIGFyZWEg aXMKPiB1c2VkIGJ5IFhlbiBoeXBlcnZpc29yIHRvIHBsYWNlIHRoZSBmcmFtZSB0YWJsZSBhbmQg TTJQIHRhYmxlLCBhbmQgaXMKPiBkaXNhbGxvd2VkIHRvIGJlIGFjY2Vzc2VkIGZyb20gRG9tMCBv bmNlIGl0J3MgcmVwb3J0ZWQuCj4gCj4gU2lnbmVkLW9mZi1ieTogSGFvemhvbmcgWmhhbmcgPGhh b3pob25nLnpoYW5nQGludGVsLmNvbT4KPiAtLS0KPiBDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNo QHN1c2UuY29tPgo+IENjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29t Pgo+IENjOiBEYW5pZWwgRGUgR3JhYWYgPGRnZGVncmFAdHljaG8ubnNhLmdvdj4KPiAtLS0KPiAg eGVuL2FyY2gveDg2L01ha2VmaWxlICAgICAgICAgICAgIHwgICAxICsKPiAgeGVuL2FyY2gveDg2 L3BsYXRmb3JtX2h5cGVyY2FsbC5jIHwgICA3ICsrCj4gIHhlbi9hcmNoL3g4Ni9wbWVtLmMgICAg ICAgICAgICAgICB8IDE2MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ ICB4ZW4vYXJjaC94ODYveDg2XzY0L21tLmMgICAgICAgICAgfCAgNTQgKysrKysrKysrKysrKwo+ ICB4ZW4vaW5jbHVkZS9hc20teDg2L21tLmggICAgICAgICAgfCAgIDQgKwo+ICB4ZW4vaW5jbHVk ZS9wdWJsaWMvcGxhdGZvcm0uaCAgICAgfCAgMTQgKysrKwo+ICB4ZW4vaW5jbHVkZS94ZW4vcG1l bS5oICAgICAgICAgICAgfCAgMzEgKysrKysrKysKPiAgeGVuL3hzbS9mbGFzay9ob29rcy5jICAg ICAgICAgICAgIHwgICAxICsKPiAgOCBmaWxlcyBjaGFuZ2VkLCAyNzMgaW5zZXJ0aW9ucygrKQo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gveDg2L3BtZW0uYwo+ICBjcmVhdGUgbW9kZSAx MDA2NDQgeGVuL2luY2x1ZGUveGVuL3BtZW0uaAo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvTWFrZWZpbGUgYi94ZW4vYXJjaC94ODYvTWFrZWZpbGUKPiBpbmRleCA5MzE5MTdkLi45Y2Yy ZGExIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZQo+ICsrKyBiL3hlbi9hcmNo L3g4Ni9NYWtlZmlsZQo+IEBAIC02Nyw2ICs2Nyw3IEBAIG9iai0kKENPTkZJR19UQk9PVCkgKz0g dGJvb3Qubwo+ICBvYmoteSArPSBocGV0Lm8KPiAgb2JqLXkgKz0gdm1fZXZlbnQubwo+ICBvYmot eSArPSB4c3RhdGUubwo+ICtvYmoteSArPSBwbWVtLm8KCklmIHBvc3NpYmxlIHBsZWFzZSBrZWVw IHRoaXMgYWxwaGFiZXRpY2FsLiBBbHNvIEkgd29uZGVyIGlmIGl0IG1ha2VzCnNlbnNlIHRvIGhh dmUgQ09ORklHX1BNRU0gb3Igc3VjaD8KCj4gIAo+ICB4ODZfZW11bGF0ZS5vOiB4ODZfZW11bGF0 ZS94ODZfZW11bGF0ZS5jIHg4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgKPiAgCj4gZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9wbGF0Zm9ybV9oeXBlcmNhbGwuYyBiL3hlbi9hcmNoL3g4Ni9wbGF0 Zm9ybV9oeXBlcmNhbGwuYwo+IGluZGV4IDA4NzllMTkuLmM0N2VlYTQgMTAwNjQ0Cj4gLS0tIGEv eGVuL2FyY2gveDg2L3BsYXRmb3JtX2h5cGVyY2FsbC5jCj4gKysrIGIveGVuL2FyY2gveDg2L3Bs YXRmb3JtX2h5cGVyY2FsbC5jCj4gQEAgLTI0LDYgKzI0LDcgQEAKPiAgI2luY2x1ZGUgPHhlbi9w bXN0YXQuaD4KPiAgI2luY2x1ZGUgPHhlbi9pcnEuaD4KPiAgI2luY2x1ZGUgPHhlbi9zeW1ib2xz Lmg+Cj4gKyNpbmNsdWRlIDx4ZW4vcG1lbS5oPgo+ICAjaW5jbHVkZSA8YXNtL2N1cnJlbnQuaD4K PiAgI2luY2x1ZGUgPHB1YmxpYy9wbGF0Zm9ybS5oPgo+ICAjaW5jbHVkZSA8YWNwaS9jcHVmcmVx L3Byb2Nlc3Nvcl9wZXJmLmg+Cj4gQEAgLTgyMiw2ICs4MjMsMTIgQEAgcmV0X3QgZG9fcGxhdGZv cm1fb3AoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fcGxhdGZvcm1fb3BfdCkgdV94ZW5wZl9v cCkKPiAgICAgIH0KPiAgICAgIGJyZWFrOwo+ICAKPiArICAgIGNhc2UgWEVOUEZfcG1lbV9hZGQ6 CgpNaXNzaW5nIGNhbGwgdG8gcmV0ID0geHNtX3Jlc291cmNlX3BsdWdfY29yZShYU01fSE9PSyk7 Cm9yIHNvbWV0aGluZyBzaW1pbGFyIC4KCj4gKyAgICAgICAgcmV0ID0gcG1lbV9hZGQob3AtPnUu cG1lbV9hZGQuc3Bmbiwgb3AtPnUucG1lbV9hZGQuZXBmbiwKPiArICAgICAgICAgICAgICAgICAg ICAgICBvcC0+dS5wbWVtX2FkZC5yc3Zfc3Bmbiwgb3AtPnUucG1lbV9hZGQucnN2X2VwZm4sCj4g KyAgICAgICAgICAgICAgICAgICAgICAgb3AtPnUucG1lbV9hZGQuZGF0YV9zcGZuLCBvcC0+dS5w bWVtX2FkZC5kYXRhX2VwZm4pOwo+ICsgICAgICAgIGJyZWFrOwo+ICsKPiAgICAgIGRlZmF1bHQ6 Cj4gICAgICAgICAgcmV0ID0gLUVOT1NZUzsKPiAgICAgICAgICBicmVhazsKPiBkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L3BtZW0uYyBiL3hlbi9hcmNoL3g4Ni9wbWVtLmMKPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjcwMzU4ZWQKPiAtLS0gL2Rldi9udWxsCj4gKysr IGIveGVuL2FyY2gveDg2L3BtZW0uYwo+IEBAIC0wLDAgKzEsMTYxIEBACj4gKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKPiArICogYXJjaC94ODYvcG1lbS5jCj4gKyAqCj4gKyAqIENvcHlyaWdodCAo YykgMjAxNiwgSW50ZWwgQ29ycG9yYXRpb24uCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAq IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Cj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCgpIbSwgcGxlYXNlIGNvbnN1bHQgSW50ZWwgbGF3eWVycyB3aXRoIHdoYXQg JyhhdCB5b3VyIG9wdGlvbiknIHdoYXQgb3RoZXIKbGF0ZXIgdmVyc2lvbnMgdGhleSBhcmUgY29t Zm9ydGFibGUgd2l0aC4KCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Cj4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAq Cj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCj4gKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCj4gKyAqCj4gKyAqIEF1dGhvcjogSGFv emhvbmcgWmhhbmcgPGhhb3pob25nLnpoYW5nQGludGVsLmNvbT4KPiArICovCj4gKwo+ICsjaW5j bHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgo+ICsjaW5jbHVkZSA8eGVuL2xpc3QuaD4KPiArI2lu Y2x1ZGUgPHhlbi9zcGlubG9jay5oPgo+ICsjaW5jbHVkZSA8eGVuL3BtZW0uaD4KClNpbmNlIHRo aXMgaXMgYSBuZXcgZmlsZSBjb3VsZCBJIGFzayB5b3Ugc29ydCB0aGVzZSBhbHBoYWJldGljYWxs eT8KCj4gKyNpbmNsdWRlIDx4ZW4vaW9jYXAuaD4KPiArI2luY2x1ZGUgPGFzbS14ODYvbW0uaD4K PiArCj4gKy8qCj4gKyAqIEFsbCBwbWVtIHJlZ2lvbnMgcmVwb3J0ZWQgZnJvbSBEb20wIGFyZSBs aW5rZWQgaW4gcG1lbV9saXN0LCB3aGljaAo+ICsgKiBpcyBwcm9lY3RlZCBieSBwbWVtX2xpc3Rf bG9jay4gSXRzIGVudHJpZXMgYXJlIG9mIHR5cGUgc3RydWN0IHBtZW0KCnByb3RlY3RlZAo+ICsg KiBhbmQgc29ydGVkIGluY3JlbWVudGFsbHkgYnkgZmllbGQgc3BhLgo+ICsgKi8KPiArc3RhdGlj IERFRklORV9TUElOTE9DSyhwbWVtX2xpc3RfbG9jayk7Cj4gK3N0YXRpYyBMSVNUX0hFQUQocG1l bV9saXN0KTsKPiArCj4gK3N0cnVjdCBwbWVtIHsKPiArICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlu azsgICAvKiBsaW5rIHRvIHBtZW1fbGlzdCAqLwo+ICsgICAgdW5zaWduZWQgbG9uZyBzcGZuOyAg ICAgIC8qIHN0YXJ0IFBGTiBvZiB0aGUgd2hvbGUgcG1lbSByZWdpb24gKi8KPiArICAgIHVuc2ln bmVkIGxvbmcgZXBmbjsgICAgICAvKiBlbmQgUEZOIG9mIHRoZSB3aG9sZSBwbWVtIHJlZ2lvbiAq Lwo+ICsgICAgdW5zaWduZWQgbG9uZyByc3Zfc3BmbjsgIC8qIHN0YXJ0IFBGTiBvZiB0aGUgcmVz ZXJ2ZWQgYXJlYSAqLwo+ICsgICAgdW5zaWduZWQgbG9uZyByc3ZfZXBmbjsgIC8qIGVuZCBQRk4g b2YgdGhlIHJlc2VydmVkIGFyZWEgKi8KPiArICAgIHVuc2lnbmVkIGxvbmcgZGF0YV9zcGZuOyAv KiBzdGFydCBQRk4gb2YgdGhlIGRhdGEgYXJlYSAqLwo+ICsgICAgdW5zaWduZWQgbG9uZyBkYXRh X2VwZm47IC8qIGVuZCBQRk4gb2YgdGhlIGRhdGEgYXJlYSAqLwoKV2h5IG5vdCBqdXN0OgpzdHJ1 Y3QgcG1lbSB7CglzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7CglzdHJ1Y3QgeGVucGZfcG1lbV9hZGQg cG1lbTsKfQoKb3Igc3VjaD8KCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IGlzX2luY2x1ZGVkKHVu c2lnbmVkIGxvbmcgczEsIHVuc2lnbmVkIGxvbmcgZTEsCgpib29sPwo+ICsgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgczIsIHVuc2lnbmVkIGxvbmcgZTIpCj4gK3sKPiArICAg IHJldHVybiBzMSA8PSBzMiAmJiBzMiA8IGUyICYmIGUyIDw9IGUxOwoKSXMgdGhlIHMyIDwgZTIg bmVjZXNzYXJ5PwoKPiArfQo+ICsKPiArc3RhdGljIGludCBpc19vdmVybGFwZWQodW5zaWduZWQg bG9uZyBzMSwgdW5zaWduZWQgbG9uZyBlMSwKCm92ZXJsYXBwZWQgYW5kIHBlcmhhcHMgYm9vbD8K Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgczIsIHVuc2lnbmVkIGxv bmcgZTIpCj4gK3sKPiArICAgIHJldHVybiAoczEgPD0gczIgJiYgczIgPCBlMSkgfHwgKHMyIDwg czEgJiYgczEgPCBlMik7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY2hlY2tfcmVzZXJ2ZWRfc2l6 ZSh1bnNpZ25lZCBsb25nIHJzdl9tZm5zLCB1bnNpZ25lZCBsb25nIHRvdGFsX21mbnMpCgpib29s Pwo+ICt7Cj4gKyAgICByZXR1cm4gcnN2X21mbnMgPj0KPiArICAgICAgICAoKHNpemVvZihzdHJ1 Y3QgcGFnZV9pbmZvKSAqIHRvdGFsX21mbnMpID4+IFBBR0VfU0hJRlQpICsKPiArICAgICAgICAo KHNpemVvZigqbWFjaGluZV90b19waHlzX21hcHBpbmcpICogdG90YWxfbWZucykgPj4gUEFHRV9T SElGVCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgcG1lbV9hZGRfY2hlY2sodW5zaWduZWQgbG9u ZyBzcGZuLCB1bnNpZ25lZCBsb25nIGVwZm4sCgpib29sPwo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgcnN2X3NwZm4sIHVuc2lnbmVkIGxvbmcgcnN2X2VwZm4sCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhX3NwZm4sIHVuc2ln bmVkIGxvbmcgZGF0YV9lcGZuKQo+ICt7Cj4gKyAgICBpZiAoIHNwZm4gPj0gZXBmbiB8fCByc3Zf c3BmbiA+PSByc3ZfZXBmbiB8fCBkYXRhX3NwZm4gPj0gZGF0YV9lcGZuICkKPiArICAgICAgICBy ZXR1cm4gMDsKCkhtLCBJIHRoaW5rIGl0IG91Z2h0IHRvIGJlIHBvc3NpYmxlIHRvIGhhdmUgbm8g cnN2IGFyZWEuLj8KCj4gKwo+ICsgICAgaWYgKCAhaXNfaW5jbHVkZWQoc3BmbiwgZXBmbiwgcnN2 X3NwZm4sIHJzdl9lcGZuKSB8fAo+ICsgICAgICAgICAhaXNfaW5jbHVkZWQoc3BmbiwgZXBmbiwg ZGF0YV9zcGZuLCBkYXRhX2VwZm4pICkKPiArICAgICAgICByZXR1cm4gMDsKPiArCj4gKyAgICBp ZiAoIGlzX292ZXJsYXBlZChyc3Zfc3BmbiwgcnN2X2VwZm4sIGRhdGFfc3BmbiwgZGF0YV9lcGZu KSApCj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAgaWYgKCAhY2hlY2tfcmVzZXJ2ZWRf c2l6ZShyc3ZfZXBmbiAtIHJzdl9zcGZuLCBlcGZuIC0gc3BmbikgKQo+ICsgICAgICAgIHJldHVy biAwOwo+ICsKPiArICAgIHJldHVybiAxOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHBtZW1fbGlz dF9hZGQodW5zaWduZWQgbG9uZyBzcGZuLCB1bnNpZ25lZCBsb25nIGVwZm4sCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHJzdl9zcGZuLCB1bnNpZ25lZCBsb25nIHJz dl9lcGZuLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhX3Nw Zm4sIHVuc2lnbmVkIGxvbmcgZGF0YV9lcGZuKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgbGlzdF9oZWFk ICpjdXI7Cj4gKyAgICBzdHJ1Y3QgcG1lbSAqbmV3X3BtZW07Cj4gKyAgICBpbnQgcmV0ID0gMDsK PiArCj4gKyAgICBzcGluX2xvY2soJnBtZW1fbGlzdF9sb2NrKTsKPiArCj4gKyAgICBsaXN0X2Zv cl9lYWNoX3ByZXYoY3VyLCAmcG1lbV9saXN0KQo+ICsgICAgewo+ICsgICAgICAgIHN0cnVjdCBw bWVtICpjdXJfcG1lbSA9IGxpc3RfZW50cnkoY3VyLCBzdHJ1Y3QgcG1lbSwgbGluayk7Cj4gKyAg ICAgICAgdW5zaWduZWQgbG9uZyBjdXJfc3BmbiA9IGN1cl9wbWVtLT5zcGZuOwo+ICsgICAgICAg IHVuc2lnbmVkIGxvbmcgY3VyX2VwZm4gPSBjdXJfcG1lbS0+ZXBmbjsKPiArCj4gKyAgICAgICAg aWYgKCAoY3VyX3NwZm4gPD0gc3BmbiAmJiBzcGZuIDwgY3VyX2VwZm4pIHx8Cj4gKyAgICAgICAg ICAgICAoc3BmbiA8PSBjdXJfc3BmbiAmJiBjdXJfc3BmbiA8IGVwZm4pICkKPiArICAgICAgICB7 Cj4gKyAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7Cj4gKyAgICAgICAgICAgIGdvdG8gb3V0Owo+ ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgaWYgKCBjdXJfc3BmbiA8IHNwZm4gKQo+ICsgICAg ICAgICAgICBicmVhazsKPiArICAgIH0KPiArCj4gKyAgICBuZXdfcG1lbSA9IHhtYWxsb2Moc3Ry dWN0IHBtZW0pOwo+ICsgICAgaWYgKCAhbmV3X3BtZW0gKQo+ICsgICAgewo+ICsgICAgICAgIHJl dCA9IC1FTk9NRU07Cj4gKyAgICAgICAgZ290byBvdXQ7Cj4gKyAgICB9Cj4gKyAgICBuZXdfcG1l bS0+c3BmbiAgICAgID0gc3BmbjsKPiArICAgIG5ld19wbWVtLT5lcGZuICAgICAgPSBlcGZuOwo+ ICsgICAgbmV3X3BtZW0tPnJzdl9zcGZuICA9IHJzdl9zcGZuOwo+ICsgICAgbmV3X3BtZW0tPnJz dl9lcGZuICA9IHJzdl9lcGZuOwo+ICsgICAgbmV3X3BtZW0tPmRhdGFfc3BmbiA9IGRhdGFfc3Bm bjsKPiArICAgIG5ld19wbWVtLT5kYXRhX2VwZm4gPSBkYXRhX2VwZm47Cj4gKyAgICBsaXN0X2Fk ZCgmbmV3X3BtZW0tPmxpbmssIGN1cik7Cj4gKwo+ICsgb3V0Ogo+ICsgICAgc3Bpbl91bmxvY2so JnBtZW1fbGlzdF9sb2NrKTsKPiArICAgIHJldHVybiByZXQ7Cj4gK30KPiArCj4gK2ludCBwbWVt X2FkZCh1bnNpZ25lZCBsb25nIHNwZm4sIHVuc2lnbmVkIGxvbmcgZXBmbiwKPiArICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgcnN2X3NwZm4sIHVuc2lnbmVkIGxvbmcgcnN2X2VwZm4sCj4gKyAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGFfc3BmbiwgdW5zaWduZWQgbG9uZyBkYXRhX2Vw Zm4pCj4gK3sKPiArICAgIGludCByZXQ7Cj4gKwo+ICsgICAgaWYgKCAhcG1lbV9hZGRfY2hlY2so c3BmbiwgZXBmbiwgcnN2X3NwZm4sIHJzdl9lcGZuLCBkYXRhX3NwZm4sIGRhdGFfZXBmbikgKQo+ ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsKPiArICAgIHJldCA9IHBtZW1fc2V0dXAoc3Bm biwgZXBmbiwgcnN2X3NwZm4sIHJzdl9lcGZuLCBkYXRhX3NwZm4sIGRhdGFfZXBmbik7Cj4gKyAg ICBpZiAoIHJldCApCj4gKyAgICAgICAgZ290byBvdXQ7Cj4gKwo+ICsgICAgcmV0ID0gaW9tZW1f ZGVueV9hY2Nlc3MoY3VycmVudC0+ZG9tYWluLCByc3Zfc3BmbiwgcnN2X2VwZm4pOwo+ICsgICAg aWYgKCByZXQgKQo+ICsgICAgICAgIGdvdG8gb3V0Owo+ICsKPiArICAgIHJldCA9IHBtZW1fbGlz dF9hZGQoc3BmbiwgZXBmbiwgcnN2X3NwZm4sIHJzdl9lcGZuLCBkYXRhX3NwZm4sIGRhdGFfZXBm bik7Cj4gKyAgICBpZiAoIHJldCApCj4gKyAgICAgICAgZ290byBvdXQ7Cj4gKwo+ICsgICAgcHJp bnRrKFhFTkxPR19JTkZPCj4gKyAgICAgICAgICAgInBtZW06IHBmbnMgICAgIDB4JWx4IC0gMHgl bHhcbiIKPiArICAgICAgICAgICAiICAgICAgcmVzZXJ2ZWQgMHglbHggLSAweCVseFxuIgo+ICsg ICAgICAgICAgICIgICAgICBkYXRhICAgICAweCVseCAtIDB4JWx4XG4iLAo+ICsgICAgICAgICAg IHNwZm4sIGVwZm4sIHJzdl9zcGZuLCByc3ZfZXBmbiwgZGF0YV9zcGZuLCBkYXRhX2VwZm4pOwo+ ICsKPiArIG91dDoKPiArICAgIHJldHVybiByZXQ7Cj4gK30KPiBkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L3g4Nl82NC9tbS5jIGIveGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jCj4gaW5kZXggNWMw ZjUyNy4uYjFmOTJmNiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYveDg2XzY0L21tLmMKPiAr KysgYi94ZW4vYXJjaC94ODYveDg2XzY0L21tLmMKPiBAQCAtMTQ3NCw2ICsxNDc0LDYwIEBAIGRl c3Ryb3lfZnJhbWV0YWJsZToKPiAgICAgIHJldHVybiByZXQ7Cj4gIH0KPiAgCj4gK2ludCBwbWVt X3NldHVwKHVuc2lnbmVkIGxvbmcgc3BmbiwgdW5zaWduZWQgbG9uZyBlcGZuLAo+ICsgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIHJzdl9zcGZuLCB1bnNpZ25lZCBsb25nIHJzdl9lcGZuLAo+ ICsgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGFfc3BmbiwgdW5zaWduZWQgbG9uZyBk YXRhX2VwZm4pCj4gK3sKPiArICAgIHVuc2lnbmVkIG9sZF9tYXggPSBtYXhfcGFnZSwgb2xkX3Rv dGFsID0gdG90YWxfcGFnZXM7Cj4gKyAgICBzdHJ1Y3QgbWVtX2hvdGFkZF9pbmZvIGluZm8gPQo+ ICsgICAgICAgIHsgLnNwZm4gPSBzcGZuLCAuZXBmbiA9IGVwZm4sIC5jdXIgPSBzcGZuIH07Cj4g KyAgICBzdHJ1Y3QgbWVtX2hvdGFkZF9pbmZvIHJzdl9pbmZvID0KPiArICAgICAgICB7IC5zcGZu ID0gcnN2X3NwZm4sIC5lcGZuID0gcnN2X2VwZm4sIC5jdXIgPSByc3Zfc3BmbiB9Owo+ICsgICAg aW50IHJldDsKPiArICAgIHVuc2lnbmVkIGxvbmcgaTsKPiArICAgIHN0cnVjdCBwYWdlX2luZm8g KnBnOwo+ICsKPiArICAgIGlmICggIW1lbV9ob3RhZGRfY2hlY2soc3BmbiwgZXBmbikgKQo+ICsg ICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsKPiArICAgIHJldCA9IGV4dGVuZF9mcmFtZV90YWJs ZSgmaW5mbywgJnJzdl9pbmZvKTsKCkFhaCwgdGhhdCBpcyB3aHkgeW91IG5lZWRlZCB0aGlzIGV4 dHJhIHBpZWNlLgoKPiArICAgIGlmICggcmV0ICkKPiArICAgICAgICBnb3RvIGRlc3Ryb3lfZnJh bWV0YWJsZTsKPiArCj4gKyAgICBpZiAoIG1heF9wYWdlIDwgZXBmbiApCj4gKyAgICB7Cj4gKyAg ICAgICAgbWF4X3BhZ2UgPSBlcGZuOwo+ICsgICAgICAgIG1heF9wZHggPSBwZm5fdG9fcGR4KG1h eF9wYWdlIC0gMSkgKyAxOwo+ICsgICAgfQo+ICsgICAgdG90YWxfcGFnZXMgKz0gZXBmbiAtIHNw Zm47Cj4gKwo+ICsgICAgc2V0X3BkeF9yYW5nZShzcGZuLCBlcGZuKTsKPiArICAgIHJldCA9IHNl dHVwX20ycF90YWJsZSgmaW5mbywgJnJzdl9pbmZvKTsKPiArICAgIGlmICggcmV0ICkKPiArICAg ICAgICBnb3RvIGRlc3Ryb3lfbTJwOwo+ICsKPiArICAgIHNoYXJlX2hvdGFkZF9tMnBfdGFibGUo JmluZm8pOwo+ICsKPiArICAgIGZvciAoIGkgPSBzcGZuOyBpIDwgZXBmbjsgaSsrICkKPiArICAg IHsKPiArICAgICAgICBwZyA9IG1mbl90b19wYWdlKGkpOwo+ICsgICAgICAgIHBnLT5jb3VudF9p bmZvID0gKHJzdl9zcGZuIDw9IGkgJiYgaSA8IHJzdl9pbmZvLmN1cikgPwo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgUEdDX3N0YXRlX2ludXNlIDogUEdDX3N0YXRlX2ZyZWU7Cj4gKyAgICB9 Cj4gKwoKV2hhdCBhYm91dCBpb21tdV9tYXBfcGFnZSBjYWxscyB0byBtYWtlIGl0IHBvc3NpYmxl IGZvciBkb20wIHRvCmRvIERNQSBvcGVyYXRpb25zIHRvIHRoaXMgYXJlYT8KCj4gKyAgICByZXR1 cm4gMDsKPiArCj4gK2Rlc3Ryb3lfbTJwOgo+ICsgICAgZGVzdHJveV9tMnBfbWFwcGluZygmaW5m byk7Cj4gKyAgICBtYXhfcGFnZSA9IG9sZF9tYXg7Cj4gKyAgICB0b3RhbF9wYWdlcyA9IG9sZF90 b3RhbDsKPiArICAgIG1heF9wZHggPSBwZm5fdG9fcGR4KG1heF9wYWdlIC0gMSkgKyAxOwo+ICtk ZXN0cm95X2ZyYW1ldGFibGU6Cj4gKyAgICBjbGVhbnVwX2ZyYW1lX3RhYmxlKCZpbmZvKTsKPiAr Cj4gKyAgICByZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICAjaW5jbHVkZSAiY29tcGF0L21tLmMiCj4g IAo+ICAvKgo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L21tLmggYi94ZW4vaW5j bHVkZS9hc20teDg2L21tLmgKPiBpbmRleCBiNzgxNDk1Li5lMzFmMWM4IDEwMDY0NAo+IC0tLSBh L3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0u aAo+IEBAIC01OTcsNCArNTk3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgbW1fcndsb2NrIHsKPiAgCj4g IGV4dGVybiBjb25zdCBjaGFyIHplcm9fcGFnZVtdOwo+ICAKPiAraW50IHBtZW1fc2V0dXAodW5z aWduZWQgbG9uZyBzcGZuLCB1bnNpZ25lZCBsb25nIGVwZm4sCj4gKyAgICAgICAgICAgICAgIHVu c2lnbmVkIGxvbmcgcnN2X3NwZm4sIHVuc2lnbmVkIGxvbmcgcnN2X2VwZm4sCj4gKyAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YV9zcGZuLCB1bnNpZ25lZCBsb25nIGRhdGFfZXBmbik7 Cj4gKwo+ICAjZW5kaWYgLyogX19BU01fWDg2X01NX0hfXyAqLwo+IGRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS9wdWJsaWMvcGxhdGZvcm0uaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9wbGF0Zm9ybS5o Cj4gaW5kZXggMWU2YTZjZS4uYzdlN2NjZSAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS9wdWJs aWMvcGxhdGZvcm0uaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9wbGF0Zm9ybS5oCj4gQEAg LTYwOCw2ICs2MDgsMTkgQEAgc3RydWN0IHhlbnBmX3N5bWRhdGEgewo+ICB0eXBlZGVmIHN0cnVj dCB4ZW5wZl9zeW1kYXRhIHhlbnBmX3N5bWRhdGFfdDsKPiAgREVGSU5FX1hFTl9HVUVTVF9IQU5E TEUoeGVucGZfc3ltZGF0YV90KTsKPiAgCj4gKyNkZWZpbmUgWEVOUEZfcG1lbV9hZGQgICAgIDY0 Cj4gK3N0cnVjdCB4ZW5wZl9wbWVtX2FkZCB7Cj4gKyAgICAvKiBJTiB2YXJpYWJsZXMgKi8KPiAr ICAgIHVpbnQ2NF90IHNwZm47ICAgICAgLyogc3RhcnQgUEZOIG9mIHRoZSB3aG9sZSBwbWVtIHJl Z2lvbiAqLwo+ICsgICAgdWludDY0X3QgZXBmbjsgICAgICAvKiBlbmQgUEZOIG9mIHRoZSB3aG9s ZSBwbWVtIHJlZ2lvbiAqLwo+ICsgICAgdWludDY0X3QgcnN2X3NwZm47ICAvKiBzdGFydCBQRk4g b2YgdGhlIHJlc2VydmVkIGFyZWEgd2l0aGluIHRoZSByZWdpb24gKi8KPiArICAgIHVpbnQ2NF90 IHJzdl9lcGZuOyAgLyogZW5kIFBGTiBvZiB0aGUgcmVzZXJ2ZWQgYXJlYSB3aXRoaW4gdGhlIHJl Z2lvbiAqLwoKQ291bGQgeW91IGluY2x1ZGUgKHBlcmhhcHMgYWJvdmUgdGhlIGh5cGVyY2FsbCkg YW4gZXhwbGFuYXRpb24Kd2hhdCAncmVzZXJ2ZWQnIGFuZCAnZGF0YScgaXM/IEFuZCBjYW4gdGhl c2UgdmFsdWVzIGJlIHplcm8/IFNheSBzcGZuID09CmRhdGFfc3BmbiAgYW5kIGVwZm4gPT0gZGF0 YV9lcGZuPwoKPiArICAgIHVpbnQ2NF90IGRhdGFfc3BmbjsgLyogc3RhcnQgUEZOIG9mIHRoZSBk YXRhIGFyZWEgd2l0aGluIHRoZSByZWdpb24gKi8KPiArICAgIHVpbnQ2NF90IGRhdGFfZXBmbjsg LyogZW5kIFBGTiBvZiB0aGUgZGF0YSBhcmVhIHdpdGhpbiB0aGUgcmVnaW9uICovCj4gK307Cj4g K3R5cGVkZWYgc3RydWN0IHhlbnBmX3BtZW1fYWRkIHhlbnBmX3BtZW1fYWRkX3Q7Cj4gK0RFRklO RV9YRU5fR1VFU1RfSEFORExFKHhlbnBmX3BtZW1fYWRkX3QpOwo+ICsKPiAgLyoKPiAgICogYCBl bnVtIG5lZ19lcnJub3ZhbAo+ICAgKiBgIEhZUEVSVklTT1JfcGxhdGZvcm1fb3AoY29uc3Qgc3Ry dWN0IHhlbl9wbGF0Zm9ybV9vcCopOwo+IEBAIC02MzgsNiArNjUxLDcgQEAgc3RydWN0IHhlbl9w bGF0Zm9ybV9vcCB7Cj4gICAgICAgICAgc3RydWN0IHhlbnBmX2NvcmVfcGFya2luZyAgICAgIGNv cmVfcGFya2luZzsKPiAgICAgICAgICBzdHJ1Y3QgeGVucGZfcmVzb3VyY2Vfb3AgICAgICAgcmVz b3VyY2Vfb3A7Cj4gICAgICAgICAgc3RydWN0IHhlbnBmX3N5bWRhdGEgICAgICAgICAgIHN5bWRh dGE7Cj4gKyAgICAgICAgc3RydWN0IHhlbnBmX3BtZW1fYWRkICAgICAgICAgIHBtZW1fYWRkOwo+ ICAgICAgICAgIHVpbnQ4X3QgICAgICAgICAgICAgICAgICAgICAgICBwYWRbMTI4XTsKPiAgICAg IH0gdTsKPiAgfTsKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3BtZW0uaCBiL3hlbi9p bmNsdWRlL3hlbi9wbWVtLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAu LmE2NzBhYjgKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIveGVuL2luY2x1ZGUveGVuL3BtZW0uaAo+ IEBAIC0wLDAgKzEsMzEgQEAKPiArLyoKPiArICogeGVuL2luY2x1ZGUveGVuL3BtZW0uaAo+ICsg Kgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTYsIEludGVsIENvcnBvcmF0aW9uLgo+ICsgKgo+ICsg KiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+ICsgKiAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKVGhpcyAnKGF0IHlvdXIgb3B0aW9uKScg aXMgZm9yIEludGVsIGxhd3llcnMgdG8gZGVjaWRlIG9uLiBDb3VsZCB5b3UKbWFrZSBzdXJlIHlv dSBpbmNsdWRlIHdoYXQgdmVyc2lvbiB0aGV5IHdvdWxkIGJlIGNvbWZvcnRhYmxlIHdpdGg/Cgo+ ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+ICsgKiBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo+ ICsgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+Lgo+ICsgKgo+ICsgKiBBdXRob3I6IEhhb3pob25nIFpoYW5nIDxoYW96 aG9uZy56aGFuZ0BpbnRlbC5jb20+Cj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX1hFTl9QTUVNX0hf Xwo+ICsjZGVmaW5lIF9fWEVOX1BNRU1fSF9fCj4gKwo+ICsjaW5jbHVkZSA8eGVuL3R5cGVzLmg+ Cj4gKwo+ICtpbnQgcG1lbV9hZGQodW5zaWduZWQgbG9uZyBzcGZuLCB1bnNpZ25lZCBsb25nIGVw Zm4sCj4gKyAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHJzdl9zcGZuLCB1bnNpZ25lZCBsb25n IHJzdl9lcGZuLAo+ICsgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhX3NwZm4sIHVuc2ln bmVkIGxvbmcgZGF0YV9lcGZuKTsKPiArCj4gKyNlbmRpZiAvKiBfX1hFTl9QTUVNX0hfXyAqLwo+ IGRpZmYgLS1naXQgYS94ZW4veHNtL2ZsYXNrL2hvb2tzLmMgYi94ZW4veHNtL2ZsYXNrL2hvb2tz LmMKPiBpbmRleCAxNzdjMTFmLi45NDhhMTYxIDEwMDY0NAo+IC0tLSBhL3hlbi94c20vZmxhc2sv aG9va3MuYwo+ICsrKyBiL3hlbi94c20vZmxhc2svaG9va3MuYwo+IEBAIC0xMzYwLDYgKzEzNjAs NyBAQCBzdGF0aWMgaW50IGZsYXNrX3BsYXRmb3JtX29wKHVpbnQzMl90IG9wKQo+ICAgICAgY2Fz ZSBYRU5QRl9jcHVfb2ZmbGluZToKPiAgICAgIGNhc2UgWEVOUEZfY3B1X2hvdGFkZDoKPiAgICAg IGNhc2UgWEVOUEZfbWVtX2hvdGFkZDoKPiArICAgIGNhc2UgWEVOUEZfcG1lbV9hZGQ6CgpUaGFu a3MgZm9yIGxvb2tpbmcgYXQgWFNNLCBidXQgSSB0aGluayB5b3UgbWlzc2VkIHRoZSBjb21tZW50 IGFib3ZlOgoKLyogVGhlc2Ugb3BlcmF0aW9ucyBoYXZlIHRoZWlyIG93biBYU00gaG9va3MgKi8K CndoaWNoIG1lYW5zIHRoYXQgcGxhdGZvcm1faHlwZXJjYWxsLmMgc2hvdWxkIGhhdmUgYW4gY2Fs bCB0bwp4c21fcmVzb3VyY2VfcGx1Z19jb3JlKFhTTV9IT09LKSBjYWxsLiBPciBzb21ldGhpbmcg ZXF1aXZhbGFudC4KCj4gICAgICAgICAgcmV0dXJuIDA7Cj4gICNlbmRpZgo+ICAKPiAtLSAKPiAy LjEwLjEKPiAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IFhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKPiBYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwo+ IGh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=