From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [RFC XEN PATCH v4 11/41] xen/pmem: add XEN_SYSCTL_nvdimm_pmem_get_regions Date: Thu, 7 Dec 2017 18:10:00 +0800 Message-ID: <20171207101030.22364-12-haozhong.zhang@intel.com> References: <20171207101030.22364-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: <20171207101030.22364-1-haozhong.zhang@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Haozhong Zhang , Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Jan Beulich , Chao Peng , Dan Williams List-Id: xen-devel@lists.xenproject.org WEVOX1NZU0NUTF9udmRpbW1fcG1lbV9nZXRfcmVnaW9ucywgd2hpY2ggaXMgYSBjb21tYW5kIG9m IGh5cGVyY2FsbApYRU5fU1lTQ1RMX252ZGltbV9vcCwgaXMgdG8gZ2V0IGEgbGlzdCBvZiBQTUVN IHJlZ2lvbnMgb2Ygc3BlY2lmaWVkCnR5cGUgKHNlZSBQTUVNX1JFR0lPTl9UWVBFXyopLgoKU2ln bmVkLW9mZi1ieTogSGFvemhvbmcgWmhhbmcgPGhhb3pob25nLnpoYW5nQGludGVsLmNvbT4KLS0t CkNjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IFdlaSBMaXUg PHdlaS5saXUyQGNpdHJpeC5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0Bj aXRyaXguY29tPgpDYzogR2VvcmdlIER1bmxhcCA8R2VvcmdlLkR1bmxhcEBldS5jaXRyaXguY29t PgpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogS29ucmFkIFJ6ZXN6dXRl ayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxz c3RhYmVsbGluaUBrZXJuZWwub3JnPgpDYzogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+Ci0tLQog dG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggfCAxOCArKysrKysrKysrKysKIHRvb2xzL2xp YnhjL3hjX21pc2MuYyAgICAgICAgIHwgNjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiB4ZW4vY29tbW9uL3BtZW0uYyAgICAgICAgICAgICB8IDY3ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL3B1YmxpYy9zeXNj dGwuaCAgIHwgMjcgKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMTc0IGluc2Vy dGlvbnMoKykKCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCBiL3Rv b2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCmluZGV4IDE5NWZmNjk4NDYuLmUwYWRhZDFjZjgg MTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCisrKyBiL3Rvb2xzL2xp YnhjL2luY2x1ZGUveGVuY3RybC5oCkBAIC0yNjIyLDYgKzI2MjIsMjQgQEAgaW50IHhjX2RvbWFp bl9jYWNoZWZsdXNoKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKIGludCB4Y19u dmRpbW1fcG1lbV9nZXRfcmVnaW9uc19ucih4Y19pbnRlcmZhY2UgKnhjaCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IHR5cGUsIHVpbnQzMl90ICpucik7CiAKKy8q CisgKiBHZXQgYW4gYXJyYXkgb2YgaW5mb3JtYXRpb24gb2YgUE1FTSByZWdpb25zIG9mIHRoZSBz cGVjaWZpZWQgdHlwZS4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICogIHhjaDogICAgeGMgaW50ZXJm YWNlIGhhbmRsZQorICogIHR5cGU6ICAgdGhlIHR5cGUgb2YgUE1FTSByZWdpb25zLCBtdXN0IGJl IG9uZSBvZiBQTUVNX1JFR0lPTl9UWVBFXyoKKyAqICBidWZmZXI6IHRoZSBidWZmZXIgd2hlcmUg dGhlIGluZm9ybWF0aW9uIG9mIFBNRU0gcmVnaW9ucyBpcyByZXR1cm5lZCwKKyAqICAgICAgICAg IHRoZSBjYWxsZXIgc2hvdWxkIGFsbG9jYXRlIGVub3VnaCBtZW1vcnkgZm9yIGl0LgorICogIG5y IDogICAgSU46IHRoZSBtYXhpbXVtIG51bWJlciBvZiBQTUVNIHJlZ2lvbnMgdGhhdCBjYW4gYmUg cmV0dXJuZWQKKyAqICAgICAgICAgICAgICBpbiBAYnVmZmVyCisgKiAgICAgICAgICBPVVQ6IHRo ZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIFBNRU0gcmVnaW9ucyBpbiBAYnVmZmVyCisgKgor ICogUmV0dXJuOgorICogIE9uIHN1Y2Nlc3MsIHJldHVybiAwLiBPdGhlcndpc2UsIHJldHVybiBh IG5vbi16ZXJvIGVycm9yIGNvZGUuCisgKi8KK2ludCB4Y19udmRpbW1fcG1lbV9nZXRfcmVnaW9u cyh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDhfdCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZvaWQgKmJ1ZmZlciwgdWludDMyX3QgKm5yKTsKKwogLyogQ29tcGF0IHNoaW1z ICovCiAjaW5jbHVkZSAieGVuY3RybF9jb21wYXQuaCIKIApkaWZmIC0tZ2l0IGEvdG9vbHMvbGli eGMveGNfbWlzYy5jIGIvdG9vbHMvbGlieGMveGNfbWlzYy5jCmluZGV4IGEzYzZjZmUyZjYuLjEx YmVmYTQ0NGYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX21pc2MuYworKysgYi90b29scy9s aWJ4Yy94Y19taXNjLmMKQEAgLTkxMSw2ICs5MTEsNjggQEAgaW50IHhjX252ZGltbV9wbWVtX2dl dF9yZWdpb25zX25yKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50OF90IHR5cGUsIHVpbnQzMl90ICpu cikKICAgICByZXR1cm4gcmM7CiB9CiAKK2ludCB4Y19udmRpbW1fcG1lbV9nZXRfcmVnaW9ucyh4 Y19pbnRlcmZhY2UgKnhjaCwgdWludDhfdCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZvaWQgKmJ1ZmZlciwgdWludDMyX3QgKm5yKQoreworICAgIERFQ0xBUkVfU1lTQ1RM OworICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JPVU5DRShidWZmZXIsIDAsIFhDX0hZUEVSQ0FMTF9C VUZGRVJfQk9VTkNFX09VVCk7CisKKyAgICBzdHJ1Y3QgeGVuX3N5c2N0bF9udmRpbW1fb3AgKm52 ZGltbSA9ICZzeXNjdGwudS5udmRpbW07CisgICAgeGVuX3N5c2N0bF9udmRpbW1fcG1lbV9yZWdp b25zX3QgKnJlZ2lvbnMgPSAmbnZkaW1tLT51LnBtZW1fcmVnaW9uczsKKyAgICB1bnNpZ25lZCBp bnQgbWF4OworICAgIHVuc2lnbmVkIGxvbmcgc2l6ZTsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAo ICFidWZmZXIgfHwgIW5yICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBtYXggPSAq bnI7CisgICAgaWYgKCAhbWF4ICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBzd2l0Y2ggKCB0 eXBlICkKKyAgICB7CisgICAgY2FzZSBQTUVNX1JFR0lPTl9UWVBFX1JBVzoKKyAgICAgICAgc2l6 ZSA9IHNpemVvZih4ZW5fc3lzY3RsX252ZGltbV9wbWVtX3Jhd19yZWdpb25fdCkgKiBtYXg7Cisg ICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cisg ICAgfQorCisgICAgSFlQRVJDQUxMX0JPVU5DRV9TRVRfU0laRShidWZmZXIsIHNpemUpOworICAg IGlmICggeGNfaHlwZXJjYWxsX2JvdW5jZV9wcmUoeGNoLCBidWZmZXIpICkKKyAgICAgICAgcmV0 dXJuIC1FRkFVTFQ7CisKKyAgICBzeXNjdGwuY21kID0gWEVOX1NZU0NUTF9udmRpbW1fb3A7Cisg ICAgbnZkaW1tLT5jbWQgPSBYRU5fU1lTQ1RMX252ZGltbV9wbWVtX2dldF9yZWdpb25zOworICAg IG52ZGltbS0+ZXJyID0gMDsKKyAgICByZWdpb25zLT50eXBlID0gdHlwZTsKKyAgICByZWdpb25z LT5udW1fcmVnaW9ucyA9IG1heDsKKworICAgIHN3aXRjaCAoIHR5cGUgKQorICAgIHsKKyAgICBj YXNlIFBNRU1fUkVHSU9OX1RZUEVfUkFXOgorICAgICAgICBzZXRfeGVuX2d1ZXN0X2hhbmRsZShy ZWdpb25zLT51X2J1ZmZlci5yYXdfcmVnaW9ucywgYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7CisK KyAgICBkZWZhdWx0OgorICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgIGdvdG8gb3V0Owor ICAgIH0KKworICAgIHJjID0gZG9fc3lzY3RsKHhjaCwgJnN5c2N0bCk7CisgICAgaWYgKCAhcmMg KQorICAgICAgICAqbnIgPSByZWdpb25zLT5udW1fcmVnaW9uczsKKyAgICBlbHNlIGlmICggbnZk aW1tLT5lcnIgKQorICAgICAgICByYyA9IC1udmRpbW0tPmVycjsKKworb3V0OgorICAgIHhjX2h5 cGVyY2FsbF9ib3VuY2VfcG9zdCh4Y2gsIGJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmM7Cit9CisK IC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBtb2RlOiBDCmRpZmYgLS1naXQgYS94ZW4vY29t bW9uL3BtZW0uYyBiL3hlbi9jb21tb24vcG1lbS5jCmluZGV4IGIxOTZiMjU2YmIuLjBhZmMxNTcz YzYgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vcG1lbS5jCisrKyBiL3hlbi9jb21tb24vcG1lbS5j CkBAIC0yMiw2ICsyMiw4IEBACiAjaW5jbHVkZSA8eGVuL3BhZ2luZy5oPgogI2luY2x1ZGUgPHhl bi9wbWVtLmg+CiAKKyNpbmNsdWRlIDxhc20vZ3Vlc3RfYWNjZXNzLmg+CisKIC8qCiAgKiBBbGwg UE1FTSByZWdpb25zIHByZXNlbnRpbmcgaW4gTkZJVCBTUEEgcmFuZ2Ugc3RydWN0dXJlcyBhcmUg bGlua2VkCiAgKiBpbiB0aGlzIGxpc3QuCkBAIC0xMTQsNiArMTE2LDY3IEBAIHN0YXRpYyBpbnQg cG1lbV9nZXRfcmVnaW9uc19ucih4ZW5fc3lzY3RsX252ZGltbV9wbWVtX3JlZ2lvbnNfbnJfdCAq cmVnaW9uc19ucikKICAgICByZXR1cm4gcmM7CiB9CiAKK3N0YXRpYyBpbnQgcG1lbV9nZXRfcmF3 X3JlZ2lvbnMoCisgICAgWEVOX0dVRVNUX0hBTkRMRV82NCh4ZW5fc3lzY3RsX252ZGltbV9wbWVt X3Jhd19yZWdpb25fdCkgcmVnaW9ucywKKyAgICB1bnNpZ25lZCBpbnQgKm51bV9yZWdpb25zKQor eworICAgIHN0cnVjdCBsaXN0X2hlYWQgKmN1cjsKKyAgICB1bnNpZ25lZCBpbnQgbnIgPSAwLCBt YXggPSAqbnVtX3JlZ2lvbnM7CisgICAgeGVuX3N5c2N0bF9udmRpbW1fcG1lbV9yYXdfcmVnaW9u X3QgcmVnaW9uOworICAgIGludCByYyA9IDA7CisKKyAgICBpZiAoICFndWVzdF9oYW5kbGVfb2th eShyZWdpb25zLCBtYXggKiBzaXplb2YocmVnaW9uKSkgKQorICAgICAgICByZXR1cm4gLUVJTlZB TDsKKworICAgIGxpc3RfZm9yX2VhY2goY3VyLCAmcG1lbV9yYXdfcmVnaW9ucykKKyAgICB7Cisg ICAgICAgIHN0cnVjdCBwbWVtICpwbWVtID0gbGlzdF9lbnRyeShjdXIsIHN0cnVjdCBwbWVtLCBs aW5rKTsKKworICAgICAgICBpZiAoIG5yID49IG1heCApCisgICAgICAgICAgICBicmVhazsKKwor ICAgICAgICByZWdpb24uc21mbiA9IHBtZW0tPnNtZm47CisgICAgICAgIHJlZ2lvbi5lbWZuID0g cG1lbS0+ZW1mbjsKKyAgICAgICAgcmVnaW9uLnB4bSA9IHBtZW0tPnUucmF3LnB4bTsKKworICAg ICAgICBpZiAoIGNvcHlfdG9fZ3Vlc3Rfb2Zmc2V0KHJlZ2lvbnMsIG5yLCAmcmVnaW9uLCAxKSAp CisgICAgICAgIHsKKyAgICAgICAgICAgIHJjID0gLUVGQVVMVDsKKyAgICAgICAgICAgIGJyZWFr OworICAgICAgICB9CisKKyAgICAgICAgbnIrKzsKKyAgICB9CisKKyAgICAqbnVtX3JlZ2lvbnMg PSBucjsKKworICAgIHJldHVybiByYzsKK30KKworc3RhdGljIGludCBwbWVtX2dldF9yZWdpb25z KHhlbl9zeXNjdGxfbnZkaW1tX3BtZW1fcmVnaW9uc190ICpyZWdpb25zKQoreworICAgIHVuc2ln bmVkIGludCB0eXBlID0gcmVnaW9ucy0+dHlwZSwgbWF4ID0gcmVnaW9ucy0+bnVtX3JlZ2lvbnM7 CisgICAgaW50IHJjID0gMDsKKworICAgIGlmICggIW1heCApCisgICAgICAgIHJldHVybiAwOwor CisgICAgc3dpdGNoICggdHlwZSApCisgICAgeworICAgIGNhc2UgUE1FTV9SRUdJT05fVFlQRV9S QVc6CisgICAgICAgIHJjID0gcG1lbV9nZXRfcmF3X3JlZ2lvbnMocmVnaW9ucy0+dV9idWZmZXIu cmF3X3JlZ2lvbnMsICZtYXgpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAg ICAgIHJjID0gLUVJTlZBTDsKKyAgICB9CisKKyAgICBpZiAoICFyYyApCisgICAgICAgIHJlZ2lv bnMtPm51bV9yZWdpb25zID0gbWF4OworCisgICAgcmV0dXJuIHJjOworfQorCiAvKioKICAqIFJl Z2lzdGVyIGEgcG1lbSByZWdpb24gdG8gWGVuLgogICoKQEAgLTE1OSw2ICsyMjIsMTAgQEAgaW50 IHBtZW1fZG9fc3lzY3RsKHN0cnVjdCB4ZW5fc3lzY3RsX252ZGltbV9vcCAqbnZkaW1tKQogICAg ICAgICByYyA9IHBtZW1fZ2V0X3JlZ2lvbnNfbnIoJm52ZGltbS0+dS5wbWVtX3JlZ2lvbnNfbnIp OwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgWEVOX1NZU0NUTF9udmRpbW1fcG1lbV9nZXRf cmVnaW9uczoKKyAgICAgICAgcmMgPSBwbWVtX2dldF9yZWdpb25zKCZudmRpbW0tPnUucG1lbV9y ZWdpb25zKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBkZWZhdWx0OgogICAgICAgICByYyA9IC1F Tk9TWVM7CiAgICAgfQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oIGIv eGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oCmluZGV4IGMzYzk5MjIyNWEuLjliMmE2NWZjYjkg MTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaAorKysgYi94ZW4vaW5jbHVk ZS9wdWJsaWMvc3lzY3RsLmgKQEAgLTEwNTIsNiArMTA1MiwxNSBAQCBzdHJ1Y3QgeGVuX3N5c2N0 bF9zZXRfcGFyYW1ldGVyIHsKIC8qIFR5cGVzIG9mIFBNRU0gcmVnaW9ucyAqLwogI2RlZmluZSBQ TUVNX1JFR0lPTl9UWVBFX1JBVyAgICAgICAgMCAvKiBQTUVNIHJlZ2lvbnMgZGV0ZWN0ZWQgYnkg WGVuICovCiAKKy8qIFBNRU1fUkVHSU9OX1RZUEVfUkFXICovCitzdHJ1Y3QgeGVuX3N5c2N0bF9u dmRpbW1fcG1lbV9yYXdfcmVnaW9uIHsKKyAgICB1aW50NjRfdCBzbWZuOworICAgIHVpbnQ2NF90 IGVtZm47CisgICAgdWludDMyX3QgcHhtOworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxf bnZkaW1tX3BtZW1fcmF3X3JlZ2lvbiB4ZW5fc3lzY3RsX252ZGltbV9wbWVtX3Jhd19yZWdpb25f dDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9zeXNjdGxfbnZkaW1tX3BtZW1fcmF3X3Jl Z2lvbl90KTsKKwogLyogWEVOX1NZU0NUTF9udmRpbW1fcG1lbV9nZXRfcmVnaW9uc19uciAqLwog c3RydWN0IHhlbl9zeXNjdGxfbnZkaW1tX3BtZW1fcmVnaW9uc19uciB7CiAgICAgdWludDhfdCB0 eXBlOyAgICAgICAgIC8qIElOOiBvbmUgb2YgUE1FTV9SRUdJT05fVFlQRV8qICovCkBAIC0xMDYw LDEyICsxMDY5LDMwIEBAIHN0cnVjdCB4ZW5fc3lzY3RsX252ZGltbV9wbWVtX3JlZ2lvbnNfbnIg ewogdHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF9udmRpbW1fcG1lbV9yZWdpb25zX25yIHhlbl9z eXNjdGxfbnZkaW1tX3BtZW1fcmVnaW9uc19ucl90OwogREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUo eGVuX3N5c2N0bF9udmRpbW1fcG1lbV9yZWdpb25zX25yX3QpOwogCisvKiBYRU5fU1lTQ1RMX252 ZGltbV9wbWVtX2dldF9yZWdpb25zICovCitzdHJ1Y3QgeGVuX3N5c2N0bF9udmRpbW1fcG1lbV9y ZWdpb25zIHsKKyAgICB1aW50OF90IHR5cGU7ICAgICAgICAgLyogSU46IG9uZSBvZiBQTUVNX1JF R0lPTl9UWVBFXyogKi8KKyAgICB1aW50MzJfdCBudW1fcmVnaW9uczsgLyogSU46IHRoZSBtYXhp bXVtIG51bWJlciBvZiBlbnRyaWVzIHRoYXQgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm5lZCB2aWEgdGhlIGd1ZXN0IGhhbmRsZXIgaW4gQHVfYnVmZmVyCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9VVDogdGhlIGFjdHVhbCBudW1iZXIgb2YgZW50 cmllcyByZXR1cm5lZCB2aWEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUg Z3Vlc3QgaGFuZGxlciBpbiBAdV9idWZmZXIgKi8KKyAgICB1bmlvbiB7CisgICAgICAgIC8qIGlm IHR5cGUgPT0gUE1FTV9SRUdJT05fVFlQRV9SQVcgKi8KKyAgICAgICAgWEVOX0dVRVNUX0hBTkRM RV82NCh4ZW5fc3lzY3RsX252ZGltbV9wbWVtX3Jhd19yZWdpb25fdCkgcmF3X3JlZ2lvbnM7Cisg ICAgfSB1X2J1ZmZlcjsgICAgICAgICAgIC8qIElOOiB0aGUgZ3Vlc3QgaGFuZGxlciB3aGVyZSB0 aGUgZW50cmllcyBvZiBQTUVNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdp b25zIG9mIHRoZSB0eXBlIEB0eXBlIGFyZSByZXR1cm5lZCAqLworfTsKK3R5cGVkZWYgc3RydWN0 IHhlbl9zeXNjdGxfbnZkaW1tX3BtZW1fcmVnaW9ucyB4ZW5fc3lzY3RsX252ZGltbV9wbWVtX3Jl Z2lvbnNfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9zeXNjdGxfbnZkaW1tX3BtZW1f cmVnaW9uc190KTsKKwogc3RydWN0IHhlbl9zeXNjdGxfbnZkaW1tX29wIHsKICAgICB1aW50MzJf dCBjbWQ7IC8qIElOOiBYRU5fU1lTQ1RMX252ZGltbV8qOyBub25lIGlzIGltcGxlbWVudGVkIHll dC4gKi8KICNkZWZpbmUgWEVOX1NZU0NUTF9udmRpbW1fcG1lbV9nZXRfcmVnaW9uc19uciAgICAg MAorI2RlZmluZSBYRU5fU1lTQ1RMX252ZGltbV9wbWVtX2dldF9yZWdpb25zICAgICAgICAxCiAg ICAgdWludDMyX3QgZXJyOyAvKiBPVVQ6IGVycm9yIGNvZGUgKi8KICAgICB1bmlvbiB7CiAgICAg ICAgIHhlbl9zeXNjdGxfbnZkaW1tX3BtZW1fcmVnaW9uc19ucl90IHBtZW1fcmVnaW9uc19ucjsK KyAgICAgICAgeGVuX3N5c2N0bF9udmRpbW1fcG1lbV9yZWdpb25zX3QgcG1lbV9yZWdpb25zOwog ICAgIH0gdTsKIH07CiAKLS0gCjIuMTUuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0 aW5mby94ZW4tZGV2ZWw=