From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [RFC XEN PATCH v4 12/41] tools/xl: add xl command 'pmem-list' Date: Thu, 7 Dec 2017 18:10:01 +0800 Message-ID: <20171207101030.22364-13-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 VGhlIG5ldyB4bCBjb21tYW5kICdwbWVtLWxpc3QnIGlzIHVzZWQgdG8gbGlzdCB0aGUgaW5mb3Jt YXRpb24gb2YgUE1FTQpyZWdpb25zLgoKU2lnbmVkLW9mZi1ieTogSGFvemhvbmcgWmhhbmcgPGhh b3pob25nLnpoYW5nQGludGVsLmNvbT4KLS0tCkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29v cGVyM0BjaXRyaXguY29tPgpDYzogR2VvcmdlIER1bmxhcCA8R2VvcmdlLkR1bmxhcEBldS5jaXRy aXguY29tPgpDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkNjOiBK YW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBLb25yYWQgUnplc3p1dGVrIFdpbGsg PGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxs aW5pQGtlcm5lbC5vcmc+CkNjOiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9yZz4KQ2M6IFdlaSBMaXUg PHdlaS5saXUyQGNpdHJpeC5jb20+Ci0tLQogdG9vbHMvbGlieGwvTWFrZWZpbGUgICAgICAgIHwg ICAyICstCiB0b29scy9saWJ4bC9saWJ4bC5oICAgICAgICAgfCAgMjAgKysrKysrKwogdG9vbHMv bGlieGwvbGlieGxfbnZkaW1tLmMgIHwgMTM4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiB0b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwgfCAgMTYgKysrKysK IHRvb2xzL3hsL01ha2VmaWxlICAgICAgICAgICB8ICAgMiArLQogdG9vbHMveGwveGwuaCAgICAg ICAgICAgICAgIHwgICAxICsKIHRvb2xzL3hsL3hsX2NtZHRhYmxlLmMgICAgICB8ICAgNiArKwog dG9vbHMveGwveGxfbnZkaW1tLmMgICAgICAgIHwgIDkyICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDI3NSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3hsL3hsX252ZGltbS5jCgpkaWZmIC0tZ2l0IGEv dG9vbHMvbGlieGwvTWFrZWZpbGUgYi90b29scy9saWJ4bC9NYWtlZmlsZQppbmRleCA1YTg2MWY3 MmNiLi5hNmYyZGJkMWNmIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9NYWtlZmlsZQorKysgYi90 b29scy9saWJ4bC9NYWtlZmlsZQpAQCAtMTM5LDcgKzEzOSw3IEBAIExJQlhMX09CSlMgPSBmbGV4 YXJyYXkubyBsaWJ4bC5vIGxpYnhsX2NyZWF0ZS5vIGxpYnhsX2RtLm8gbGlieGxfcGNpLm8gXAog CQkJbGlieGxfZG9tX3N1c3BlbmQubyBsaWJ4bF9kb21fc2F2ZS5vIGxpYnhsX3VzYi5vIFwKIAkJ CWxpYnhsX3Z0cG0ubyBsaWJ4bF9uaWMubyBsaWJ4bF9kaXNrLm8gbGlieGxfY29uc29sZS5vIFwK IAkJCWxpYnhsX2NwdXBvb2wubyBsaWJ4bF9tZW0ubyBsaWJ4bF9zY2hlZC5vIGxpYnhsX3RtZW0u byBcCi0JCQlsaWJ4bF85cGZzLm8gbGlieGxfZG9tYWluLm8gbGlieGxfdmRpc3BsLm8gXAorCQkJ bGlieGxfOXBmcy5vIGxpYnhsX2RvbWFpbi5vIGxpYnhsX3ZkaXNwbC5vIGxpYnhsX252ZGltbS5v IFwKICAgICAgICAgICAgICAgICAgICAgICAgICQoTElCWExfT0JKUy15KQogTElCWExfT0JKUyAr PSBsaWJ4bF9nZW5pZC5vCiBMSUJYTF9PQkpTICs9IF9saWJ4bF90eXBlcy5vIGxpYnhsX2ZsYXNr Lm8gX2xpYnhsX3R5cGVzX2ludGVybmFsLm8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhs LmggYi90b29scy9saWJ4bC9saWJ4bC5oCmluZGV4IDVlOWFlZDczOWQuLjljZTQ4N2U3OWYgMTAw NjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsLmgKKysrIGIvdG9vbHMvbGlieGwvbGlieGwuaApA QCAtMjMwNCw2ICsyMzA0LDI2IEBAIGludCBsaWJ4bF9wc3JfY2F0X2dldF9sM19pbmZvKGxpYnhs X2N0eCAqY3R4LCBsaWJ4bF9wc3JfY2F0X2luZm8gKippbmZvLAogdm9pZCBsaWJ4bF9wc3JfY2F0 X2luZm9fbGlzdF9mcmVlKGxpYnhsX3Bzcl9jYXRfaW5mbyAqbGlzdCwgaW50IG5yKTsKICNlbmRp ZgogCisvKiBOVkRJTU0gKi8KKworLyoKKyAqIEdldCBhIGxpc3Qgb2YgaW5mb3JtYXRpb24gb2Yg UE1FTSByZWdpb25zIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS4KKyAqCisgKiBQYXJhbWV0ZXJzOgor ICogIGN0eDogICAgICAgbGlieGwgY29udGVueHQKKyAqICB0eXBlOiAgICAgIHR5cGUgb2YgdGhl IFBNRU0gcmVnaW9ucworICogIHJlZ2lvbnNfcjogcmV0dXJuIHRoZSBpbmZvcm1hdGlvbiBsaXN0 IChvbmUgZW50cnkgcGVyIHJlZ2lvbikgb24gc3VjY2VzczsKKyAqICAgICAgICAgICAgIHRoZSBs aXN0IGlzIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBhbmQgc2hhbGwgYmUgZnJlZWQgYnkgY2FsbGVy cworICogIG5yX3I6ICAgICAgcmV0dXJuIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiByZWdpb25z X3Igb24gc3VjY2VzcworICoKKyAqIFJldHVybjoKKyAqICAwIG9uIHN1Y2Nlc3M7IG90aGVyd2lz ZSwgRVJST1JfKiwgYW5kIGxlYXZlIGVycm5vIHZhbGlkLgorICovCitpbnQgbGlieGxfbnZkaW1t X3BtZW1fZ2V0X3JlZ2lvbnMobGlieGxfY3R4ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlieGxfbnZkaW1tX3BtZW1fcmVnaW9uX3R5cGUgdHlwZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9udmRpbW1fcG1lbV9yZWdpb24gKipyZWdp b25zX3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpu cl9yKTsKKwogLyogbWlzYyAqLwogCiAvKiBFYWNoIG9mIHRoZXNlIHNldHMgb3IgY2xlYXJzIHRo ZSBmbGFnIGFjY29yZGluZyB0byB3aGV0aGVyIHRoZQpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwv bGlieGxfbnZkaW1tLmMgYi90b29scy9saWJ4bC9saWJ4bF9udmRpbW0uYwppbmRleCBlNjlkZTI5 YmIyLi43MGRhMThmMTFmIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9udmRpbW0uYwor KysgYi90b29scy9saWJ4bC9saWJ4bF9udmRpbW0uYwpAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAq IHRvb2xzL2xpYnhsL2xpYnhsX252ZGltbS5jCisgKgorICogPE9uZSBsaW5lIGRlc2NyaXB0aW9u IG9mIHRoZSBmaWxlIGFuZCB3aGF0IGl0IGRvZXM+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE3 ICBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z ZSwgdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorICovCisKKyNpbmNsdWRlIDx4ZW5jdHJsLmg+CisjaW5jbHVkZSA8eGVuLXRvb2xzL2xp YnMuaD4KKworI2luY2x1ZGUgImxpYnhsX2ludGVybmFsLmgiCisKKy8qCisgKiBDb252ZXJ0IHNp emVvZihsaWJ4bF9udmRpbW1fcG1lbV8qX3JlZ2lvbikgdG8KKyAqIHNpemVvZih4ZW5fc3lzY3Rs X252ZGltbV9wbWVtXypfcmVnaW9uX3QpLgorICoKKyAqIEluZGV4ZWQgYnkgTElCWExfTlZESU1N X1BNRU1fUkVHSU9OX1RZUEVfKi4KKyAqLworc3RhdGljIHNpemVfdCB4Y19wbWVtX3JlZ2lvbl9z dHJ1Y3Rfc2l6ZVtdID0geworICAgIFtMSUJYTF9OVkRJTU1fUE1FTV9SRUdJT05fVFlQRV9SQVdd ID0gc2l6ZW9mKGxpYnhsX252ZGltbV9wbWVtX3Jhd19yZWdpb24pLAorfTsKKworc3RhdGljIGlu dCBnZXRfeGNfcmVnaW9uX3R5cGUobGlieGxfbnZkaW1tX3BtZW1fcmVnaW9uX3R5cGUgdHlwZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICp4Y190eXBlX3IpCit7Cisg ICAgc3RhdGljIHVpbnQ4X3QgeGNfcmVnaW9uX3R5cGVzW10gPSB7CisgICAgICAgIFtMSUJYTF9O VkRJTU1fUE1FTV9SRUdJT05fVFlQRV9SQVddID0gUE1FTV9SRUdJT05fVFlQRV9SQVcsCisgICAg fTsKKyAgICBzdGF0aWMgdW5zaWduZWQgaW50IG5yX3R5cGVzID0KKyAgICAgICAgc2l6ZW9mKHhj X3JlZ2lvbl90eXBlcykgLyBzaXplb2YoeGNfcmVnaW9uX3R5cGVzWzBdKTsKKworICAgIGlmICh0 eXBlID49IG5yX3R5cGVzKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgICp4Y190eXBl X3IgPSB4Y19yZWdpb25fdHlwZXNbdHlwZV07CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGlj IHZvaWQgY29weV9mcm9tX3hjX3JlZ2lvbnMobGlieGxfbnZkaW1tX3BtZW1fcmVnaW9uICp0Z3Rf cmVnaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnNyY194Y19y ZWdpb25zLCB1aW50OF90IHhjX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgbnIpCit7CisgICAgc3RhdGljIHNpemVfdCBvZmZzZXQgPSBvZmZzZXRv ZihsaWJ4bF9udmRpbW1fcG1lbV9yZWdpb24sIHUpOworICAgIGxpYnhsX252ZGltbV9wbWVtX3Jl Z2lvbiAqdGd0ID0gdGd0X3JlZ2lvbnM7CisgICAgbGlieGxfbnZkaW1tX3BtZW1fcmVnaW9uICpl bmQgPSB0Z3RfcmVnaW9ucyArIG5yOworICAgIHZvaWQgKnNyYyA9IHNyY194Y19yZWdpb25zOwor ICAgIHNpemVfdCBzaXplID0geGNfcG1lbV9yZWdpb25fc3RydWN0X3NpemVbeGNfdHlwZV07CisK KyAgICBCVUlMRF9CVUdfT04oc2l6ZW9mKGxpYnhsX252ZGltbV9wbWVtX3Jhd19yZWdpb24pICE9 CisgICAgICAgICAgICAgICAgIHNpemVvZih4ZW5fc3lzY3RsX252ZGltbV9wbWVtX3Jhd19yZWdp b25fdCkpOworCisgICAgd2hpbGUgKHRndCA8IGVuZCkgeworICAgICAgICBtZW1jcHkoKHZvaWQg Kil0Z3QgKyBvZmZzZXQsIHNyYywgc2l6ZSk7CisgICAgICAgIHRndCArPSAxOworICAgICAgICBz cmMgKz0gc2l6ZTsKKyAgICB9Cit9CisKK2ludCBsaWJ4bF9udmRpbW1fcG1lbV9nZXRfcmVnaW9u cyhsaWJ4bF9jdHggKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4 bF9udmRpbW1fcG1lbV9yZWdpb25fdHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxpYnhsX252ZGltbV9wbWVtX3JlZ2lvbiAqKnJlZ2lvbnNfciwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKm5yX3IpCit7CisgICAgR0Nf SU5JVChjdHgpOworICAgIGxpYnhsX252ZGltbV9wbWVtX3JlZ2lvbiAqcmVnaW9uczsKKyAgICB1 aW50OF90IHhjX3R5cGU7CisgICAgdW5zaWduZWQgaW50IG5yOworICAgIHZvaWQgKnhjX3JlZ2lv bnM7CisgICAgaW50IHJjID0gMCwgZXJyOworCisgICAgZXJyID0gZ2V0X3hjX3JlZ2lvbl90eXBl KHR5cGUsICZ4Y190eXBlKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIExPR0UoRVJST1IsICJp bnZhbGlkIFBNRU0gcmVnaW9uIHR5cGUgJWQgcmVxdWlyZWQiLCB0eXBlKTsKKyAgICAgICAgcmMg PSBFUlJPUl9JTlZBTDsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgZXJyID0geGNf bnZkaW1tX3BtZW1fZ2V0X3JlZ2lvbnNfbnIoY3R4LT54Y2gsIHhjX3R5cGUsICZucik7CisgICAg aWYgKGVycikgeworICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CisgICAgICAgIGdvdG8gb3V0Owor ICAgIH0KKworICAgIGlmICghbnIpIHsKKyAgICAgICAgKm5yX3IgPSAwOworICAgICAgICBnb3Rv IG91dDsKKyAgICB9CisKKyAgICB4Y19yZWdpb25zID0gbGlieGxfX21hbGxvYyhnYywgbnIgKiB4 Y19wbWVtX3JlZ2lvbl9zdHJ1Y3Rfc2l6ZVt4Y190eXBlXSk7CisgICAgaWYgKCF4Y19yZWdpb25z KSB7CisgICAgICAgIExPR0UoRVJST1IsICJjYW5ub3QgYWxsb2NhdGUgeGMgYnVmZmVyIGZvciAl ZCByZWdpb25zIiwgbnIpOworICAgICAgICBlcnIgPSAtRU5PTUVNOworICAgICAgICByYyA9IEVS Uk9SX05PTUVNOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBlcnIgPSB4Y19udmRp bW1fcG1lbV9nZXRfcmVnaW9ucyhjdHgtPnhjaCwgeGNfdHlwZSwgeGNfcmVnaW9ucywgJm5yKTsK KyAgICBpZiAoZXJyKSB7CisgICAgICAgIExPR0UoRVJST1IsICJjYW5ub3QgZ2V0IGluZm9ybWF0 aW9uIG9mIFBNRU0gcmVnaW9ucyBvZiB0eXBlICVkLCBlcnIgJWQiLAorICAgICAgICAgICAgIHR5 cGUsIGVycik7CisgICAgICAgIHJjID0gRVJST1JfRkFJTDsKKyAgICAgICAgZ290byBvdXQ7Cisg ICAgfQorCisgICAgcmVnaW9ucyA9IGxpYnhsX19tYWxsb2MoTk9HQywgc2l6ZW9mKCpyZWdpb25z KSAqIG5yKTsKKyAgICBpZiAoIXJlZ2lvbnMpIHsKKyAgICAgICAgTE9HRShFUlJPUiwgImNhbm5v dCBhbGxvY2F0ZSByZXR1cm4gYnVmZmVyIGZvciAlZCByZWdpb25zIiwgbnIpOworICAgICAgICBl cnIgPSAtRU5PTUVNOworICAgICAgICByYyA9IEVSUk9SX05PTUVNOworICAgICAgICBnb3RvIG91 dDsKKyAgICB9CisgICAgY29weV9mcm9tX3hjX3JlZ2lvbnMocmVnaW9ucywgeGNfcmVnaW9ucywg eGNfdHlwZSwgbnIpOworCisgICAgKnJlZ2lvbnNfciA9IHJlZ2lvbnM7CisgICAgKm5yX3IgPSBu cjsKKworIG91dDoKKyAgICBHQ19GUkVFOworCisgICAgaWYgKHJjKQorICAgICAgICBlcnJubyA9 IC1lcnI7CisKKyAgICByZXR1cm4gcmM7Cit9CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4 bF90eXBlcy5pZGwgYi90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKaW5kZXggYTIzOTMyNDM0 MS4uMWM3Yjg5OThlOSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCisr KyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbApAQCAtMTA0MSwzICsxMDQxLDE5IEBAIGxp YnhsX3Bzcl9jYXRfaW5mbyA9IFN0cnVjdCgicHNyX2NhdF9pbmZvIiwgWwogICAgICgiY2JtX2xl biIsIHVpbnQzMiksCiAgICAgKCJjZHBfZW5hYmxlZCIsIGJvb2wpLAogICAgIF0pCisKK2xpYnhs X252ZGltbV9wbWVtX3JlZ2lvbl90eXBlID0gRW51bWVyYXRpb24oIm52ZGltbV9wbWVtX3JlZ2lv bl90eXBlIiwgWworICAgICgwLCAiUkFXIiksCisgICAgXSkKKworbGlieGxfbnZkaW1tX3BtZW1f cmF3X3JlZ2lvbiA9IFN0cnVjdCgibnZkaW1tX3BtZW1fcmF3X3JlZ2lvbiIsIFsKKyAgICAoInNt Zm4iLCB1aW50NjQpLAorICAgICgiZW1mbiIsIHVpbnQ2NCksCisgICAgKCJweG0iLCB1aW50MzIp LAorICAgIF0pCisKK2xpYnhsX252ZGltbV9wbWVtX3JlZ2lvbiA9IFN0cnVjdCgibnZkaW1tX3Bt ZW1fcmVnaW9uIiwgWworICAgICgidSIsIEtleWVkVW5pb24oTm9uZSwgbGlieGxfbnZkaW1tX3Bt ZW1fcmVnaW9uX3R5cGUsICJ0eXBlIiwKKyAgICAgICAgICAgICAgICAgICAgIFsoInJhdyIsIGxp YnhsX252ZGltbV9wbWVtX3Jhd19yZWdpb24pLAorICAgICAgICAgICAgICAgICAgICAgXSkpLAor ICAgIF0pCmRpZmYgLS1naXQgYS90b29scy94bC9NYWtlZmlsZSBiL3Rvb2xzL3hsL01ha2VmaWxl CmluZGV4IGE1MTE3YWIzZmIuLjBjMzc0YjNjMmEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL01ha2Vm aWxlCisrKyBiL3Rvb2xzL3hsL01ha2VmaWxlCkBAIC0yMiw3ICsyMiw3IEBAIFhMX09CSlMgKz0g eGxfdnRwbS5vIHhsX2Jsb2NrLm8geGxfbmljLm8geGxfdXNiLm8KIFhMX09CSlMgKz0geGxfc2No ZWQubyB4bF9wY2kubyB4bF92Y3B1Lm8geGxfY2Ryb20ubyB4bF9tZW0ubwogWExfT0JKUyArPSB4 bF9pbmZvLm8geGxfY29uc29sZS5vIHhsX21pc2MubwogWExfT0JKUyArPSB4bF92bWNvbnRyb2wu byB4bF9zYXZlcmVzdG9yZS5vIHhsX21pZ3JhdGUubwotWExfT0JKUyArPSB4bF92ZGlzcGwubwor WExfT0JKUyArPSB4bF92ZGlzcGwubyB4bF9udmRpbW0ubwogCiAkKFhMX09CSlMpOiBDRkxBR1Mg Kz0gJChDRkxBR1NfbGlieGVudG9vbGxvZykKICQoWExfT0JKUyk6IENGTEFHUyArPSAkKENGTEFH U19YTCkKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsLmggYi90b29scy94bC94bC5oCmluZGV4IDZi NjBkMWRiNTAuLjkzNTlhM2Q5YzcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hsLmgKKysrIGIvdG9v bHMveGwveGwuaApAQCAtMjEwLDYgKzIxMCw3IEBAIGludCBtYWluX3Bzcl9jYXRfY2JtX3NldChp bnQgYXJnYywgY2hhciAqKmFyZ3YpOwogaW50IG1haW5fcHNyX2NhdF9zaG93KGludCBhcmdjLCBj aGFyICoqYXJndik7CiAjZW5kaWYKIGludCBtYWluX3FlbXVfbW9uaXRvcl9jb21tYW5kKGludCBh cmdjLCBjaGFyICoqYXJndik7CitpbnQgbWFpbl9wbWVtX2xpc3QoaW50IGFyZ2MsIGNoYXIgKiph cmd2KTsKIAogdm9pZCBoZWxwKGNvbnN0IGNoYXIgKmNvbW1hbmQpOwogCmRpZmYgLS1naXQgYS90 b29scy94bC94bF9jbWR0YWJsZS5jIGIvdG9vbHMveGwveGxfY21kdGFibGUuYwppbmRleCA1NTQ2 Y2Y2NmU3Li5mNTI1Y2FmY2RmIDEwMDY0NAotLS0gYS90b29scy94bC94bF9jbWR0YWJsZS5jCisr KyBiL3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMKQEAgLTYxNiw2ICs2MTYsMTIgQEAgc3RydWN0IGNt ZF9zcGVjIGNtZF90YWJsZVtdID0gewogICAgICAgIklzc3VlIGEgcWVtdSBtb25pdG9yIGNvbW1h bmQgdG8gdGhlIGRldmljZSBtb2RlbCBvZiBhIGRvbWFpbiIsCiAgICAgICAiPERvbWFpbj4gPENv bW1hbmQ+IiwKICAgICB9LAorICAgIHsgInBtZW0tbGlzdCIsCisgICAgICAmbWFpbl9wbWVtX2xp c3QsIDAsIDAsCisgICAgICAiTGlzdCBQTUVNIHJlZ2lvbnMgb2Ygc3BlY2lmaWVkIHR5cGVzLCBv ciBhbGwgUE1FTSByZWdpb25zIGlmIG5vIHR5cGUgaXMgc3BlY2lmaWVkIiwKKyAgICAgICJbb3B0 aW9uc10iLAorICAgICAgIi1yLCAtLXJhdyAgIExpc3QgUE1FTSByZWdpb25zIGRldGVjdGVkIGJ5 IFhlbiBoeXBlcnZpc29yXG4iCisgICAgfSwKIH07CiAKIGludCBjbWR0YWJsZV9sZW4gPSBzaXpl b2YoY21kX3RhYmxlKS9zaXplb2Yoc3RydWN0IGNtZF9zcGVjKTsKZGlmZiAtLWdpdCBhL3Rvb2xz L3hsL3hsX252ZGltbS5jIGIvdG9vbHMveGwveGxfbnZkaW1tLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uNzk5Yzc2ZTRjMgotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xz L3hsL3hsX252ZGltbS5jCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiB0b29scy94bC94bF9udmRp bW0uYworICoKKyAqIDxPbmUgbGluZSBkZXNjcmlwdGlvbiBvZiB0aGUgZmlsZSBhbmQgd2hhdCBp dCBkb2VzPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNyAgSW50ZWwgQ29ycG9yYXRpb24KKyAq CisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UsIHZlcnNpb24gMiwgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8 ZXJybm8uaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1 ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSA8bGlieGwuaD4KKworI2luY2x1ZGUgInhsLmgiCisj aW5jbHVkZSAieGxfdXRpbHMuaCIKKwordHlwZWRlZiB2b2lkICgqc2hvd19yZWdpb25fZm5fdCko bGlieGxfbnZkaW1tX3BtZW1fcmVnaW9uICpyZWdpb24sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgaWR4KTsKKworc3RhdGljIHZvaWQgc2hvd19yYXdfcmVn aW9uKGxpYnhsX252ZGltbV9wbWVtX3JlZ2lvbiAqcmVnaW9uLCB1bnNpZ25lZCBpbnQgaWR4KQor eworICAgIGxpYnhsX252ZGltbV9wbWVtX3Jhd19yZWdpb24gKnJhdyA9ICZyZWdpb24tPnUucmF3 OworCisgICAgcHJpbnRmKCIgJXU6IG1mbiAweCVseCAtIDB4JWx4LCBweG0gJXVcbiIsCisgICAg ICAgICAgIGlkeCwgcmF3LT5zbWZuLCByYXctPmVtZm4sIHJhdy0+cHhtKTsKK30KKworc3RhdGlj IHNob3dfcmVnaW9uX2ZuX3Qgc2hvd19yZWdpb25fZm5bXSA9IHsKKyAgICBbTElCWExfTlZESU1N X1BNRU1fUkVHSU9OX1RZUEVfUkFXXSA9IHNob3dfcmF3X3JlZ2lvbiwKK307CisKK3N0YXRpYyBp bnQgbGlzdF9yZWdpb25zKGxpYnhsX252ZGltbV9wbWVtX3JlZ2lvbl90eXBlIHR5cGUpCit7Cisg ICAgaW50IHJjOworICAgIGxpYnhsX252ZGltbV9wbWVtX3JlZ2lvbiAqcmVnaW9ucyA9IE5VTEw7 CisgICAgdW5zaWduZWQgaW50IG5yLCBpOworCisgICAgcmMgPSBsaWJ4bF9udmRpbW1fcG1lbV9n ZXRfcmVnaW9ucyhjdHgsIHR5cGUsICZyZWdpb25zLCAmbnIpOworICAgIGlmIChyYyB8fCAhbnIp CisgICAgICAgIGdvdG8gb3V0OworCisgICAgcHJpbnRmKCJMaXN0IG9mICVzIFBNRU0gcmVnaW9u czpcbiIsCisgICAgICAgICAgIGxpYnhsX252ZGltbV9wbWVtX3JlZ2lvbl90eXBlX3RvX3N0cmlu Zyh0eXBlKSk7CisgICAgZm9yIChpID0gMDsgaSA8IG5yOyBpKyspCisgICAgICAgIHNob3dfcmVn aW9uX2ZuW3R5cGVdKCZyZWdpb25zW2ldLCBpKTsKKworIG91dDoKKyAgICBpZiAocmVnaW9ucykK KyAgICAgICAgZnJlZShyZWdpb25zKTsKKworICAgIGlmIChyYykKKyAgICAgICAgZnByaW50Zihz dGRlcnIsICJFcnJvcjogcG1lbS1saXN0IGZhaWxlZDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7 CisKKyAgICByZXR1cm4gcmM7Cit9CisKK2ludCBtYWluX3BtZW1fbGlzdChpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCit7CisgICAgc3RhdGljIHN0cnVjdCBvcHRpb24gb3B0c1tdID0geworICAgICAg ICB7ICJyYXciLCAwLCAwLCAncicgfSwKKyAgICAgICAgQ09NTU9OX0xPTkdfT1BUUworICAgIH07 CisKKyAgICBib29sIGFsbCA9IHRydWUsIHJhdyA9IGZhbHNlOworICAgIGludCBvcHQsIHJldCA9 IDA7CisKKyAgICBTV0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAiciIsIG9wdHMsICJwbWVtLWxpc3Qi LCAwKSB7CisgICAgY2FzZSAncic6CisgICAgICAgIGFsbCA9IGZhbHNlOworICAgICAgICByYXcg PSB0cnVlOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoYWxsIHx8IHJhdykKKyAg ICAgICAgcmV0ID0gbGlzdF9yZWdpb25zKExJQlhMX05WRElNTV9QTUVNX1JFR0lPTl9UWVBFX1JB Vyk7CisKKyAgICByZXR1cm4gcmV0OworfQotLSAKMi4xNS4xCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t YWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==