From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [RFC XEN PATCH 13/16] tools/libxl: add support to map host pmem device to guests Date: Fri, 27 Jan 2017 17:06:04 -0500 Message-ID: <20170127220603.GI18581@localhost.localdomain> References: <20161010003235.4213-1-haozhong.zhang@intel.com> <20161010003235.4213-14-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-14-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 , Wei Liu , Ian Jackson , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBPY3QgMTAsIDIwMTYgYXQgMDg6MzI6MzJBTSArMDgwMCwgSGFvemhvbmcgWmhhbmcg d3JvdGU6Cj4gV2UgY2FuIG1hcCBob3N0IHBtZW0gZGV2aWNlcyBvciBmaWxlcyBvbiBwbWVtIGRl dmljZXMgdG8gZ3Vlc3RzLiBUaGlzCj4gcGF0Y2ggYWRkcyBzdXBwb3J0IHRvIG1hcCBwbWVtIGRl dmljZXMuIFRoZSBpbXBsZW1lbnRhdGlvbiByZWxpZXMgb24gdGhlCj4gTGludXggcG1lbSBkcml2 ZXIsIHNvIGl0IGN1cnJlbnRseSBmdW5jdGlvbnMgb25seSB3aGVuIGxpYnhsIGlzIGNvbXBpbGVk CgpQZXJoYXBzIHNheSB3aGVuIHRoZSBwbWVtIGRyaXZlciB3YXMgaW50cm9kdWNlZCBhbmQgYWxz byB3aGF0IENPTkZJRwpvcHRpb24gdG8gdXNlIHRvIGVuYWJsZSBpdD8KPiBmb3IgTGludXguCj4g Cj4gU2lnbmVkLW9mZi1ieTogSGFvemhvbmcgWmhhbmcgPGhhb3pob25nLnpoYW5nQGludGVsLmNv bT4KPiAtLS0KPiBDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+Cj4g Q2M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Cj4gLS0tCj4gIHRvb2xzL2xpYnhsL01h a2VmaWxlICAgICAgIHwgICAyICstCj4gIHRvb2xzL2xpYnhsL2xpYnhsX252ZGltbS5jIHwgMjEw ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICB0b29scy9s aWJ4bC9saWJ4bF9udmRpbW0uaCB8ICA0NSArKysrKysrKysrCj4gIDMgZmlsZXMgY2hhbmdlZCwg MjU2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRv b2xzL2xpYnhsL2xpYnhsX252ZGltbS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9saWJ4 bC9saWJ4bF9udmRpbW0uaAo+IAo+IGRpZmYgLS1naXQgYS90b29scy9saWJ4bC9NYWtlZmlsZSBi L3Rvb2xzL2xpYnhsL01ha2VmaWxlCj4gaW5kZXggYTkwNDkyNy4uZWNjOWFlMSAxMDA2NDQKPiAt LS0gYS90b29scy9saWJ4bC9NYWtlZmlsZQo+ICsrKyBiL3Rvb2xzL2xpYnhsL01ha2VmaWxlCj4g QEAgLTEwNiw3ICsxMDYsNyBAQCBpZmVxICgkKENPTkZJR19OZXRCU0QpLHkpCj4gIExJQlhMX09C SlMteSArPSBsaWJ4bF9uZXRic2Qubwo+ICBlbHNlCj4gIGlmZXEgKCQoQ09ORklHX0xpbnV4KSx5 KQo+IC1MSUJYTF9PQkpTLXkgKz0gbGlieGxfbGludXgubwo+ICtMSUJYTF9PQkpTLXkgKz0gbGli eGxfbGludXgubyBsaWJ4bF9udmRpbW0ubwo+ICBlbHNlCj4gIGlmZXEgKCQoQ09ORklHX0ZyZWVC U0QpLHkpCj4gIExJQlhMX09CSlMteSArPSBsaWJ4bF9mcmVlYnNkLm8KPiBkaWZmIC0tZ2l0IGEv dG9vbHMvbGlieGwvbGlieGxfbnZkaW1tLmMgYi90b29scy9saWJ4bC9saWJ4bF9udmRpbW0uYwo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uN2JjYmFhZgo+IC0tLSAvZGV2 L251bGwKPiArKysgYi90b29scy9saWJ4bC9saWJ4bF9udmRpbW0uYwo+IEBAIC0wLDAgKzEsMjEw IEBACj4gKy8qCj4gKyAqIHRvb2xzL2xpYnhsL2xpYnhsX252ZGltbS5jCj4gKyAqCj4gKyAqIENv cHlyaWdodCAoYykgMjAxNiwgSW50ZWwgQ29ycG9yYXRpb24uCgoyMDE3IG5vdy4KPiArICoKPiAr ICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKCkxHUEwgcGxl YXNlLiBsaWJ4bCB1c2VzIHRoYXQgbGljZW5zZS4KCj4gKyAqIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Cj4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAq Cj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCj4gKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCj4gKyAqCj4gKyAqIEF1dGhvcjogSGFv emhvbmcgWmhhbmcgPGhhb3pob25nLnpoYW5nQGludGVsLmNvbT4KPiArICovCj4gKwo+ICsjaW5j bHVkZSA8c3RkbGliLmg+Cj4gKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KPiArI2luY2x1ZGUgPHN5 cy9zdGF0Lmg+Cj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4KPiArI2luY2x1ZGUgPGVycm5vLmg+Cj4g KyNpbmNsdWRlIDxzdGRpbnQuaD4KPiArCj4gKyNpbmNsdWRlICJsaWJ4bF9pbnRlcm5hbC5oIgo+ ICsjaW5jbHVkZSAibGlieGxfYXJjaC5oIgo+ICsjaW5jbHVkZSAibGlieGxfbnZkaW1tLmgiCj4g Kwo+ICsjaW5jbHVkZSA8eGNfZG9tLmg+Cj4gKwo+ICsjZGVmaW5lIEJMS19ERVZJQ0VfUk9PVCAi L3N5cy9kZXYvYmxvY2siCj4gKwo+ICtzdGF0aWMgaW50IG52ZGltbV9zeXNmc19yZWFkKGxpYnhs X19nYyAqZ2MsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1h am9yLCB1bnNpZ25lZCBpbnQgbWlub3IsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciAqbmFtZSwgdm9pZCAqKmRhdGFfcikKPiArewo+ICsgICAgY2hhciAqcGF0aCA9 IGxpYnhsX19zcHJpbnRmKGdjLCBCTEtfREVWSUNFX1JPT1QiLyV1OiV1L2RldmljZS8lcyIsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFqb3IsIG1pbm9yLCBuYW1lKTsKPiAr ICAgIHJldHVybiBsaWJ4bF9fcmVhZF9zeXNmc19maWxlX2NvbnRlbnRzKGdjLCBwYXRoLCBkYXRh X3IsIE5VTEwpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG52ZGltbV9nZXRfc3BhKGxpYnhsX19n YyAqZ2MsIHVuc2lnbmVkIGludCBtYWpvciwgdW5zaWduZWQgaW50IG1pbm9yLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICpzcGFfcikKPiArewo+ICsgICAgdm9pZCAqZGF0 YTsKPiArICAgIGludCByZXQgPSBudmRpbW1fc3lzZnNfcmVhZChnYywgbWFqb3IsIG1pbm9yLCAi cmVzb3VyY2UiLCAmZGF0YSk7Cj4gKwo+ICsgICAgaWYgKCByZXQgKQo+ICsgICAgICAgIHJldHVy biByZXQ7Cj4gKwo+ICsgICAgKnNwYV9yID0gc3RydG9sbChkYXRhLCBOVUxMLCAwKTsKPiArICAg IHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG52ZGltbV9nZXRfc2l6ZShsaWJ4bF9f Z2MgKmdjLCB1bnNpZ25lZCBpbnQgbWFqb3IsIHVuc2lnbmVkIGludCBtaW5vciwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgKnNpemVfcikKPiArewo+ICsgICAgdm9pZCAq ZGF0YTsKPiArICAgIGludCByZXQgPSBudmRpbW1fc3lzZnNfcmVhZChnYywgbWFqb3IsIG1pbm9y LCAic2l6ZSIsICZkYXRhKTsKPiArCj4gKyAgICBpZiAoIHJldCApCj4gKyAgICAgICAgcmV0dXJu IHJldDsKPiArCj4gKyAgICAqc2l6ZV9yID0gc3RydG9sbChkYXRhLCBOVUxMLCAwKTsKPiArCj4g KyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBhZGRfcGFnZXMobGlieGxfX2dj ICpnYywgdWludDMyX3QgZG9taWQsCj4gKyAgICAgICAgICAgICAgICAgICAgIHhlbl9wZm5fdCBt Zm4sIHhlbl9wZm5fdCBncGZuLCB1bnNpZ25lZCBsb25nIG5yX21mbnMpCj4gK3sKPiArICAgIHVu c2lnbmVkIGludCBucjsKPiArICAgIGludCByZXQgPSAwOwo+ICsKPiArICAgIHdoaWxlICggbnJf bWZucyApCj4gKyAgICB7Cj4gKyAgICAgICAgbnIgPSBtaW4obnJfbWZucywgKHVuc2lnbmVkIGxv bmcpIFVJTlRfTUFYKTsKTm8gbmVlZCBmb3Igc3BhY2UgICAgICAgICAgICAgICAgICAgICAgICAg ICBeLSBoZXJlLgo+ICsKPiArICAgICAgICByZXQgPSB4Y19kb21haW5fcG9wdWxhdGVfcG1lbW1h cChDVFgtPnhjaCwgZG9taWQsIG1mbiwgZ3BmbiwgbnIpOwo+ICsgICAgICAgIGlmICggcmV0ICkK PiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIExPRyhFUlJPUiwgImZhaWxlZCB0byBtYXAgcG1l bSBwYWdlcywgIgo+ICsgICAgICAgICAgICAgICAgIm1mbiAweCUiIFBSSXg2NCIsIGdwZm4gMHgl IiBQUkl4NjQgIiwgbnJfbWZucyAldSwgZXJyICVkIiwKPiArICAgICAgICAgICAgICAgIG1mbiwg Z3BmbiwgbnIsIHJldCk7Cj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgIH0KPiArCj4g KyAgICAgICAgbnJfbWZucyAtPSBucjsKPiArICAgICAgICBtZm4gKz0gbnI7Cj4gKyAgICAgICAg Z3BmbiArPSBucjsKPiArICAgIH0KPiArCj4gKyAgICByZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtz dGF0aWMgaW50IGFkZF9maWxlKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLCBpbnQgZmQs Cj4gKyAgICAgICAgICAgICAgICAgICAgeGVuX3Bmbl90IG1mbiwgeGVuX3Bmbl90IGdwZm4sIHVu c2lnbmVkIGxvbmcgbnJfbWZucykKPiArewo+ICsgICAgcmV0dXJuIC1FSU5WQUw7CgpIZWhlaGVo ZS4uCj4gK30KPiArCj4gK2ludCBsaWJ4bF9udmRpbW1fYWRkX2RldmljZShsaWJ4bF9fZ2MgKmdj LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZG9taWQsIGNvbnN0IGNo YXIgKnBhdGgsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBndWVzdF9z cGEsIHVpbnQ2NF90IGd1ZXN0X3NpemUpCj4gK3sKPiArICAgIGludCBmZDsKPiArICAgIHN0cnVj dCBzdGF0IHN0Owo+ICsgICAgdW5zaWduZWQgaW50IG1ham9yLCBtaW5vcjsKPiArICAgIHVpbnQ2 NF90IGhvc3Rfc3BhLCBob3N0X3NpemU7Cj4gKyAgICB4ZW5fcGZuX3QgbWZuLCBncGZuOwo+ICsg ICAgdW5zaWduZWQgbG9uZyBucl9ncGZuczsKPiArICAgIGludCByZXQ7Cj4gKwo+ICsgICAgaWYg KCAoZ3Vlc3Rfc3BhICYgflhDX1BBR0VfTUFTSykgfHwgKGd1ZXN0X3NpemUgJiB+WENfUEFHRV9N QVNLKSApCj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CgpUaGF0IGlzIHRoZSB3cm9uZyByZXR1 cm4gdmFsdWUuIFRoZSBsaWJ4bCBmdW5jdGlvbnMgcmV0dXJuIGVudW0KbGlieGxfZXJyb3IKClBs ZWFzZSB1c2UgdGhvc2UgdGhyb3VnaG91dCB0aGUgY29kZS4KPiArCj4gKyAgICBmZCA9IG9wZW4o cGF0aCwgT19SRE9OTFkpOwo+ICsgICAgaWYgKCBmZCA8IDAgKQo+ICsgICAgewo+ICsgICAgICAg IExPRyhFUlJPUiwgImZhaWxlZCB0byBvcGVuIGZpbGUgJXMgKGVycjogJWQpIiwgcGF0aCwgZXJy bm8pOwo+ICsgICAgICAgIHJldHVybiAtRUlPOwo+ICsgICAgfQo+ICsKPiArICAgIHJldCA9IGZz dGF0KGZkLCAmc3QpOwo+ICsgICAgaWYgKCByZXQgKQo+ICsgICAgewo+ICsgICAgICAgIExPRyhF UlJPUiwgImZhaWxlZCB0byBnZXQgc3RhdHVzIG9mIGZpbGUgJXMgKGVycjogJWQpIiwKPiArICAg ICAgICAgICAgcGF0aCwgZXJybm8pOwo+ICsgICAgICAgIGdvdG8gb3V0Owo+ICsgICAgfQo+ICsK PiArICAgIHN3aXRjaCAoIHN0LnN0X21vZGUgJiBTX0lGTVQgKQo+ICsgICAgewo+ICsgICAgY2Fz ZSBTX0lGQkxLOgo+ICsgICAgICAgIG1ham9yID0gbWFqb3Ioc3Quc3RfcmRldik7Cj4gKyAgICAg ICAgbWlub3IgPSBtaW5vcihzdC5zdF9yZGV2KTsKPiArICAgICAgICBicmVhazsKPiArCj4gKyAg ICBjYXNlIFNfSUZSRUc6Cj4gKyAgICAgICAgbWFqb3IgPSBtYWpvcihzdC5zdF9kZXYpOwo+ICsg ICAgICAgIG1pbm9yID0gbWlub3Ioc3Quc3RfZGV2KTsKPiArICAgICAgICBicmVhazsKPiArCj4g KyAgICBkZWZhdWx0Ogo+ICsgICAgICAgIExPRyhFUlJPUiwgIiVzIGlzIG5laXRoZXIgYSBibG9j ayBkZXZpY2Ugbm9yIGEgcmVndWxhciBmaWxlIiwgcGF0aCk7Cj4gKyAgICAgICAgcmV0ID0gLUVJ TlZBTDsKPiArICAgICAgICBnb3RvIG91dDsKPiArICAgIH0KPiArCj4gKyAgICByZXQgPSBudmRp bW1fZ2V0X3NwYShnYywgbWFqb3IsIG1pbm9yLCAmaG9zdF9zcGEpOwo+ICsgICAgaWYgKCByZXQg KQo+ICsgICAgewo+ICsgICAgICAgIExPRyhFUlJPUiwgImZhaWxlZCB0byBnZXQgU1BBIG9mIGRl dmljZSAldToldSIsIG1ham9yLCBtaW5vcik7Cj4gKyAgICAgICAgZ290byBvdXQ7Cj4gKyAgICB9 Cj4gKyAgICBlbHNlIGlmICggaG9zdF9zcGEgJiB+WENfUEFHRV9NQVNLICkKPiArICAgIHsKPiAr ICAgICAgICByZXQgPSAtRUlOVkFMOwo+ICsgICAgICAgIGdvdG8gb3V0Owo+ICsgICAgfQo+ICsK PiArICAgIHJldCA9IG52ZGltbV9nZXRfc2l6ZShnYywgbWFqb3IsIG1pbm9yLCAmaG9zdF9zaXpl KTsKPiArICAgIGlmICggcmV0ICkKPiArICAgIHsKPiArICAgICAgICBMT0coRVJST1IsICJmYWls ZWQgdG8gZ2V0IHNpemUgb2YgZGV2aWNlICV1OiV1IiwgbWFqb3IsIG1pbm9yKTsKPiArICAgICAg ICBnb3RvIG91dDsKPiArICAgIH0KPiArICAgIGVsc2UgaWYgKCBndWVzdF9zaXplID4gaG9zdF9z aXplICkKPiArICAgIHsKPiArICAgICAgICBMT0coRVJST1IsICJ2TlZESU1NIHNpemUgJSIgUFJJ dTY0ICIgZXhwaXJlcyBOVkRJTU0gc2l6ZSAlIiBQUkl1NjQsCgpleHBpcmVzPyBsYXJnZXI/Cj4g KyAgICAgICAgICAgIGd1ZXN0X3NpemUsIGhvc3Rfc2l6ZSk7Cj4gKyAgICAgICAgcmV0ID0gLUVJ TlZBTDsKPiArICAgICAgICBnb3RvIG91dDsKPiArICAgIH0KPiArCj4gKyAgICBtZm4gPSBob3N0 X3NwYSA+PiBYQ19QQUdFX1NISUZUOwo+ICsgICAgZ3BmbiA9IGd1ZXN0X3NwYSA+PiBYQ19QQUdF X1NISUZUOwo+ICsgICAgbnJfZ3BmbnMgPSBndWVzdF9zaXplID4+IFhDX1BBR0VfU0hJRlQ7Cj4g Kwo+ICsgICAgc3dpdGNoICggc3Quc3RfbW9kZSAmIFNfSUZNVCApCj4gKyAgICB7Cj4gKyAgICBj YXNlIFNfSUZCTEs6Cj4gKyAgICAgICAgcmV0ID0gYWRkX3BhZ2VzKGdjLCBkb21pZCwgbWZuLCBn cGZuLCBucl9ncGZucyk7CgpZb3Ugd2lsbCBuZWVkIHRvIGNoYW5nZSB0aGUgcmV0dXJuIHZhbHVl Lgo+ICsgICAgICAgIGJyZWFrOwo+ICsKPiArICAgIGNhc2UgU19JRlJFRzoKPiArICAgICAgICBy ZXQgPSBhZGRfZmlsZShnYywgZG9taWQsIGZkLCBtZm4sIGdwZm4sIG5yX2dwZm5zKTsKCkRpdHRv IGhlcmUuCj4gKyAgICAgICAgYnJlYWs7Cj4gKwo+ICsgICAgZGVmYXVsdDoKPiArICAgICAgICBM T0coRVJST1IsICIlcyBpcyBuZWl0aGVyIGEgYmxvY2sgZGV2aWNlIG5vciBhIHJlZ3VsYXIgZmls ZSIsIHBhdGgpOwo+ICsgICAgICAgIHJldCA9IC1FSU5WQUw7Cj4gKyAgICB9Cj4gKwo+ICsgb3V0 Ogo+ICsgICAgY2xvc2UoZmQpOwo+ICsgICAgcmV0dXJuIHJldDsKPiArfQo+ICsKPiArLyoKPiAr ICogTG9jYWwgdmFyaWFibGVzOgo+ICsgKiBtb2RlOiBDCj4gKyAqIGMtYmFzaWMtb2Zmc2V0OiA0 Cj4gKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAo+ICsgKiBFbmQ6Cj4gKyAqLwo+IGRpZmYgLS1n aXQgYS90b29scy9saWJ4bC9saWJ4bF9udmRpbW0uaCBiL3Rvb2xzL2xpYnhsL2xpYnhsX252ZGlt bS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi40ZGUyZmIyCj4gLS0t IC9kZXYvbnVsbAo+ICsrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX252ZGltbS5oCgpXaHkgbm90IGFk ZCBpdCBpbiBsaWJ4bC5oPwoKKEFsb25nIHdpdGggdGhlIExJQlhMX0hBVkVfTlZESU1NIGFuZCBz dWNoPykKCj4gQEAgLTAsMCArMSw0NSBAQAo+ICsvKgo+ICsgKiB0b29scy9saWJ4bC9saWJ4bF9u dmRpbW0uaAo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTYsIEludGVsIENvcnBvcmF0aW9u LgoKTm93IDIwMTcKPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKCkFu ZCBwbGVhc2UgcmVsaWNlbnNlIGl0IHVuZGVyIExHUEwKCj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gKyAqIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsg KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCj4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCj4gKyAqIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCj4gKyAq Cj4gKyAqIEF1dGhvcjogSGFvemhvbmcgWmhhbmcgPGhhb3pob25nLnpoYW5nQGludGVsLmNvbT4K PiArICovCj4gKwo+ICsjaWZuZGVmIExJQlhMX05WRElNTV9ICj4gKyNkZWZpbmUgTElCWExfTlZE SU1NX0gKPiArCj4gKyNpbmNsdWRlIDxzdGRpbnQuaD4KPiArI2luY2x1ZGUgImxpYnhsX2ludGVy bmFsLmgiCj4gKwo+ICsjaWYgZGVmaW5lZChfX2xpbnV4X18pCj4gKwo+ICtpbnQgbGlieGxfbnZk aW1tX2FkZF9kZXZpY2UobGlieGxfX2djICpnYywKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQzMl90IGRvbWlkLCBjb25zdCBjaGFyICpwYXRoLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDY0X3Qgc3BhLCB1aW50NjRfdCBsZW5ndGgpOwo+ICsKPiArI2Vsc2UK PiArCj4gK2ludCBsaWJ4bF9udmRpbW1fYWRkX2RldmljZShsaWJ4bF9fZ2MgKmdjLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZG9taWQsIGNvbnN0IGNoYXIgKnBhdGgs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBzcGEsIHVpbnQ2NF90IGxl bmd0aCkKPiArewo+ICsgICAgcmV0dXJuIC1FSU5WQUw7Cj4gK30KPiArCj4gKyNlbmRpZiAvKiBf X2xpbnV4X18gKi8KPiArCj4gKyNlbmRpZiAvKiAhTElCWExfTlZESU1NX0ggKi8KPiAtLSAKPiAy LjEwLjEKPiAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IFhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKPiBYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwo+ IGh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=