From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [RFC XEN PATCH 13/16] tools/libxl: add support to map host pmem device to guests Date: Mon, 10 Oct 2016 08:32:32 +0800 Message-ID: <20161010003235.4213-14-haozhong.zhang@intel.com> References: <20161010003235.4213-1-haozhong.zhang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20161010003235.4213-1-haozhong.zhang@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Haozhong Zhang , Wei Liu , Xiao Guangrong , Ian Jackson List-Id: xen-devel@lists.xenproject.org V2UgY2FuIG1hcCBob3N0IHBtZW0gZGV2aWNlcyBvciBmaWxlcyBvbiBwbWVtIGRldmljZXMgdG8g Z3Vlc3RzLiBUaGlzCnBhdGNoIGFkZHMgc3VwcG9ydCB0byBtYXAgcG1lbSBkZXZpY2VzLiBUaGUg aW1wbGVtZW50YXRpb24gcmVsaWVzIG9uIHRoZQpMaW51eCBwbWVtIGRyaXZlciwgc28gaXQgY3Vy cmVudGx5IGZ1bmN0aW9ucyBvbmx5IHdoZW4gbGlieGwgaXMgY29tcGlsZWQKZm9yIExpbnV4LgoK U2lnbmVkLW9mZi1ieTogSGFvemhvbmcgWmhhbmcgPGhhb3pob25nLnpoYW5nQGludGVsLmNvbT4K LS0tCkNjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IFdlaSBM aXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Ci0tLQogdG9vbHMvbGlieGwvTWFrZWZpbGUgICAgICAg fCAgIDIgKy0KIHRvb2xzL2xpYnhsL2xpYnhsX252ZGltbS5jIHwgMjEwICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdG9vbHMvbGlieGwvbGlieGxfbnZkaW1t LmggfCAgNDUgKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAyNTYgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2xpYnhsL2xpYnhsX252ZGlt bS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvbGlieGwvbGlieGxfbnZkaW1tLmgKCmRpZmYg LS1naXQgYS90b29scy9saWJ4bC9NYWtlZmlsZSBiL3Rvb2xzL2xpYnhsL01ha2VmaWxlCmluZGV4 IGE5MDQ5MjcuLmVjYzlhZTEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL01ha2VmaWxlCisrKyBi L3Rvb2xzL2xpYnhsL01ha2VmaWxlCkBAIC0xMDYsNyArMTA2LDcgQEAgaWZlcSAoJChDT05GSUdf TmV0QlNEKSx5KQogTElCWExfT0JKUy15ICs9IGxpYnhsX25ldGJzZC5vCiBlbHNlCiBpZmVxICgk KENPTkZJR19MaW51eCkseSkKLUxJQlhMX09CSlMteSArPSBsaWJ4bF9saW51eC5vCitMSUJYTF9P QkpTLXkgKz0gbGlieGxfbGludXgubyBsaWJ4bF9udmRpbW0ubwogZWxzZQogaWZlcSAoJChDT05G SUdfRnJlZUJTRCkseSkKIExJQlhMX09CSlMteSArPSBsaWJ4bF9mcmVlYnNkLm8KZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYnhsL2xpYnhsX252ZGltbS5jIGIvdG9vbHMvbGlieGwvbGlieGxfbnZkaW1t LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JjYmFhZgotLS0gL2Rldi9u dWxsCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX252ZGltbS5jCkBAIC0wLDAgKzEsMjEwIEBACisv KgorICogdG9vbHMvbGlieGwvbGlieGxfbnZkaW1tLmMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIw MTYsIEludGVsIENvcnBvcmF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0 aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg KgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K KyAqCisgKiBBdXRob3I6IEhhb3pob25nIFpoYW5nIDxoYW96aG9uZy56aGFuZ0BpbnRlbC5jb20+ CisgKi8KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lu Y2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8ZXJybm8u aD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUgImxpYnhsX2ludGVybmFsLmgiCisj aW5jbHVkZSAibGlieGxfYXJjaC5oIgorI2luY2x1ZGUgImxpYnhsX252ZGltbS5oIgorCisjaW5j bHVkZSA8eGNfZG9tLmg+CisKKyNkZWZpbmUgQkxLX0RFVklDRV9ST09UICIvc3lzL2Rldi9ibG9j ayIKKworc3RhdGljIGludCBudmRpbW1fc3lzZnNfcmVhZChsaWJ4bF9fZ2MgKmdjLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWFqb3IsIHVuc2lnbmVkIGludCBt aW5vciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgdm9p ZCAqKmRhdGFfcikKK3sKKyAgICBjaGFyICpwYXRoID0gbGlieGxfX3NwcmludGYoZ2MsIEJMS19E RVZJQ0VfUk9PVCIvJXU6JXUvZGV2aWNlLyVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWFqb3IsIG1pbm9yLCBuYW1lKTsKKyAgICByZXR1cm4gbGlieGxfX3JlYWRfc3lzZnNf ZmlsZV9jb250ZW50cyhnYywgcGF0aCwgZGF0YV9yLCBOVUxMKTsKK30KKworc3RhdGljIGludCBu dmRpbW1fZ2V0X3NwYShsaWJ4bF9fZ2MgKmdjLCB1bnNpZ25lZCBpbnQgbWFqb3IsIHVuc2lnbmVk IGludCBtaW5vciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgKnNwYV9yKQor eworICAgIHZvaWQgKmRhdGE7CisgICAgaW50IHJldCA9IG52ZGltbV9zeXNmc19yZWFkKGdjLCBt YWpvciwgbWlub3IsICJyZXNvdXJjZSIsICZkYXRhKTsKKworICAgIGlmICggcmV0ICkKKyAgICAg ICAgcmV0dXJuIHJldDsKKworICAgICpzcGFfciA9IHN0cnRvbGwoZGF0YSwgTlVMTCwgMCk7Cisg ICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbnZkaW1tX2dldF9zaXplKGxpYnhsX19nYyAq Z2MsIHVuc2lnbmVkIGludCBtYWpvciwgdW5zaWduZWQgaW50IG1pbm9yLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDY0X3QgKnNpemVfcikKK3sKKyAgICB2b2lkICpkYXRhOworICAg IGludCByZXQgPSBudmRpbW1fc3lzZnNfcmVhZChnYywgbWFqb3IsIG1pbm9yLCAic2l6ZSIsICZk YXRhKTsKKworICAgIGlmICggcmV0ICkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgICpzaXpl X3IgPSBzdHJ0b2xsKGRhdGEsIE5VTEwsIDApOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBpbnQgYWRkX3BhZ2VzKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAg ICAgICAgICAgICAgeGVuX3Bmbl90IG1mbiwgeGVuX3Bmbl90IGdwZm4sIHVuc2lnbmVkIGxvbmcg bnJfbWZucykKK3sKKyAgICB1bnNpZ25lZCBpbnQgbnI7CisgICAgaW50IHJldCA9IDA7CisKKyAg ICB3aGlsZSAoIG5yX21mbnMgKQorICAgIHsKKyAgICAgICAgbnIgPSBtaW4obnJfbWZucywgKHVu c2lnbmVkIGxvbmcpIFVJTlRfTUFYKTsKKworICAgICAgICByZXQgPSB4Y19kb21haW5fcG9wdWxh dGVfcG1lbW1hcChDVFgtPnhjaCwgZG9taWQsIG1mbiwgZ3BmbiwgbnIpOworICAgICAgICBpZiAo IHJldCApCisgICAgICAgIHsKKyAgICAgICAgICAgIExPRyhFUlJPUiwgImZhaWxlZCB0byBtYXAg cG1lbSBwYWdlcywgIgorICAgICAgICAgICAgICAgICJtZm4gMHglIiBQUkl4NjQiLCBncGZuIDB4 JSIgUFJJeDY0ICIsIG5yX21mbnMgJXUsIGVyciAlZCIsCisgICAgICAgICAgICAgICAgbWZuLCBn cGZuLCBuciwgcmV0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg bnJfbWZucyAtPSBucjsKKyAgICAgICAgbWZuICs9IG5yOworICAgICAgICBncGZuICs9IG5yOwor ICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYWRkX2ZpbGUobGlieGxf X2djICpnYywgdWludDMyX3QgZG9taWQsIGludCBmZCwKKyAgICAgICAgICAgICAgICAgICAgeGVu X3Bmbl90IG1mbiwgeGVuX3Bmbl90IGdwZm4sIHVuc2lnbmVkIGxvbmcgbnJfbWZucykKK3sKKyAg ICByZXR1cm4gLUVJTlZBTDsKK30KKworaW50IGxpYnhsX252ZGltbV9hZGRfZGV2aWNlKGxpYnhs X19nYyAqZ2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZG9taWQsIGNv bnN0IGNoYXIgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZ3Vl c3Rfc3BhLCB1aW50NjRfdCBndWVzdF9zaXplKQoreworICAgIGludCBmZDsKKyAgICBzdHJ1Y3Qg c3RhdCBzdDsKKyAgICB1bnNpZ25lZCBpbnQgbWFqb3IsIG1pbm9yOworICAgIHVpbnQ2NF90IGhv c3Rfc3BhLCBob3N0X3NpemU7CisgICAgeGVuX3Bmbl90IG1mbiwgZ3BmbjsKKyAgICB1bnNpZ25l ZCBsb25nIG5yX2dwZm5zOworICAgIGludCByZXQ7CisKKyAgICBpZiAoIChndWVzdF9zcGEgJiB+ WENfUEFHRV9NQVNLKSB8fCAoZ3Vlc3Rfc2l6ZSAmIH5YQ19QQUdFX01BU0spICkKKyAgICAgICAg cmV0dXJuIC1FSU5WQUw7CisKKyAgICBmZCA9IG9wZW4ocGF0aCwgT19SRE9OTFkpOworICAgIGlm ICggZmQgPCAwICkKKyAgICB7CisgICAgICAgIExPRyhFUlJPUiwgImZhaWxlZCB0byBvcGVuIGZp bGUgJXMgKGVycjogJWQpIiwgcGF0aCwgZXJybm8pOworICAgICAgICByZXR1cm4gLUVJTzsKKyAg ICB9CisKKyAgICByZXQgPSBmc3RhdChmZCwgJnN0KTsKKyAgICBpZiAoIHJldCApCisgICAgewor ICAgICAgICBMT0coRVJST1IsICJmYWlsZWQgdG8gZ2V0IHN0YXR1cyBvZiBmaWxlICVzIChlcnI6 ICVkKSIsCisgICAgICAgICAgICBwYXRoLCBlcnJubyk7CisgICAgICAgIGdvdG8gb3V0OworICAg IH0KKworICAgIHN3aXRjaCAoIHN0LnN0X21vZGUgJiBTX0lGTVQgKQorICAgIHsKKyAgICBjYXNl IFNfSUZCTEs6CisgICAgICAgIG1ham9yID0gbWFqb3Ioc3Quc3RfcmRldik7CisgICAgICAgIG1p bm9yID0gbWlub3Ioc3Quc3RfcmRldik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTX0lG UkVHOgorICAgICAgICBtYWpvciA9IG1ham9yKHN0LnN0X2Rldik7CisgICAgICAgIG1pbm9yID0g bWlub3Ioc3Quc3RfZGV2KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAg ICBMT0coRVJST1IsICIlcyBpcyBuZWl0aGVyIGEgYmxvY2sgZGV2aWNlIG5vciBhIHJlZ3VsYXIg ZmlsZSIsIHBhdGgpOworICAgICAgICByZXQgPSAtRUlOVkFMOworICAgICAgICBnb3RvIG91dDsK KyAgICB9CisKKyAgICByZXQgPSBudmRpbW1fZ2V0X3NwYShnYywgbWFqb3IsIG1pbm9yLCAmaG9z dF9zcGEpOworICAgIGlmICggcmV0ICkKKyAgICB7CisgICAgICAgIExPRyhFUlJPUiwgImZhaWxl ZCB0byBnZXQgU1BBIG9mIGRldmljZSAldToldSIsIG1ham9yLCBtaW5vcik7CisgICAgICAgIGdv dG8gb3V0OworICAgIH0KKyAgICBlbHNlIGlmICggaG9zdF9zcGEgJiB+WENfUEFHRV9NQVNLICkK KyAgICB7CisgICAgICAgIHJldCA9IC1FSU5WQUw7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0K KworICAgIHJldCA9IG52ZGltbV9nZXRfc2l6ZShnYywgbWFqb3IsIG1pbm9yLCAmaG9zdF9zaXpl KTsKKyAgICBpZiAoIHJldCApCisgICAgeworICAgICAgICBMT0coRVJST1IsICJmYWlsZWQgdG8g Z2V0IHNpemUgb2YgZGV2aWNlICV1OiV1IiwgbWFqb3IsIG1pbm9yKTsKKyAgICAgICAgZ290byBv dXQ7CisgICAgfQorICAgIGVsc2UgaWYgKCBndWVzdF9zaXplID4gaG9zdF9zaXplICkKKyAgICB7 CisgICAgICAgIExPRyhFUlJPUiwgInZOVkRJTU0gc2l6ZSAlIiBQUkl1NjQgIiBleHBpcmVzIE5W RElNTSBzaXplICUiIFBSSXU2NCwKKyAgICAgICAgICAgIGd1ZXN0X3NpemUsIGhvc3Rfc2l6ZSk7 CisgICAgICAgIHJldCA9IC1FSU5WQUw7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAg IG1mbiA9IGhvc3Rfc3BhID4+IFhDX1BBR0VfU0hJRlQ7CisgICAgZ3BmbiA9IGd1ZXN0X3NwYSA+ PiBYQ19QQUdFX1NISUZUOworICAgIG5yX2dwZm5zID0gZ3Vlc3Rfc2l6ZSA+PiBYQ19QQUdFX1NI SUZUOworCisgICAgc3dpdGNoICggc3Quc3RfbW9kZSAmIFNfSUZNVCApCisgICAgeworICAgIGNh c2UgU19JRkJMSzoKKyAgICAgICAgcmV0ID0gYWRkX3BhZ2VzKGdjLCBkb21pZCwgbWZuLCBncGZu LCBucl9ncGZucyk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTX0lGUkVHOgorICAgICAg ICByZXQgPSBhZGRfZmlsZShnYywgZG9taWQsIGZkLCBtZm4sIGdwZm4sIG5yX2dwZm5zKTsKKyAg ICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBMT0coRVJST1IsICIlcyBpcyBu ZWl0aGVyIGEgYmxvY2sgZGV2aWNlIG5vciBhIHJlZ3VsYXIgZmlsZSIsIHBhdGgpOworICAgICAg ICByZXQgPSAtRUlOVkFMOworICAgIH0KKworIG91dDoKKyAgICBjbG9zZShmZCk7CisgICAgcmV0 dXJuIHJldDsKK30KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMt YmFzaWMtb2Zmc2V0OiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpk aWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfbnZkaW1tLmggYi90b29scy9saWJ4bC9saWJ4 bF9udmRpbW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGUyZmIyCi0t LSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfbnZkaW1tLmgKQEAgLTAsMCArMSw0 NSBAQAorLyoKKyAqIHRvb2xzL2xpYnhsL2xpYnhsX252ZGltbS5oCisgKgorICogQ29weXJpZ2h0 IChjKSAyMDE2LCBJbnRlbCBDb3Jwb3JhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisgKgorICogQXV0aG9yOiBIYW96aG9uZyBaaGFuZyA8aGFvemhvbmcuemhhbmdAaW50 ZWwuY29tPgorICovCisKKyNpZm5kZWYgTElCWExfTlZESU1NX0gKKyNkZWZpbmUgTElCWExfTlZE SU1NX0gKKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgImxpYnhsX2ludGVybmFsLmgi CisKKyNpZiBkZWZpbmVkKF9fbGludXhfXykKKworaW50IGxpYnhsX252ZGltbV9hZGRfZGV2aWNl KGxpYnhsX19nYyAqZ2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZG9t aWQsIGNvbnN0IGNoYXIgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0 X3Qgc3BhLCB1aW50NjRfdCBsZW5ndGgpOworCisjZWxzZQorCitpbnQgbGlieGxfbnZkaW1tX2Fk ZF9kZXZpY2UobGlieGxfX2djICpnYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCBkb21pZCwgY29uc3QgY2hhciAqcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1aW50NjRfdCBzcGEsIHVpbnQ2NF90IGxlbmd0aCkKK3sKKyAgICByZXR1cm4gLUVJTlZBTDsK K30KKworI2VuZGlmIC8qIF9fbGludXhfXyAqLworCisjZW5kaWYgLyogIUxJQlhMX05WRElNTV9I ICovCi0tIAoyLjEwLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0 dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK