From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [RFC XEN PATCH v4 15/41] xen/pmem: add XEN_SYSCTL_nvdimm_pmem_setup to setup management PMEM region Date: Thu, 7 Dec 2017 18:10:04 +0800 Message-ID: <20171207101030.22364-16-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 QWRkIGEgY29tbWFuZCBYRU5fU1lTQ1RMX252ZGltbV9wbWVtX3NldHVwIHRvIGh5cGVyY2FsbApY RU5fU1lTQ1RMX252ZGltbV9vcCB0byBzZXR1cCB0aGUgZnJhbWUgdGFibGUgYW5kIE0yUCB0YWJs ZSBvZiBhIFBNRU0KcmVnaW9uLiBUaGlzIGNvbW1hbmQgaXMgY3VycmVudGx5IHVzZWQgdG8gc2V0 dXAgdGhlIG1hbmFnZW1lbnQgUE1FTQpyZWdpb24gd2hpY2ggaXMgdXNlZCB0byBzdG9yZSB0aGUg ZnJhbWUgdGFibGUgYW5kIE0yUCB0YWJsZSBvZiBvdGhlcgpQTUVNIHJlZ2lvbnMgYW5kIGl0c2Vs Zi4gVGhlIG1hbmFnZW1lbnQgUE1FTSByZWdpb24gc2hvdWxkIG5vdCBiZQptYXBwZWQgdG8gZ3Vl c3QuCgpQTUVNIHBhZ2VzIGFyZSBub3QgYWRkZWQgaW4gYW55IFhlbiBvciBkb21haW4gaGVhcHMu IEEgbmV3IGZsYWcKUEdDX3BtZW1fcGFnZSBpcyB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgYSBw YWdlIGlzIGZyb20gUE1FTSBhbmQKYXZvaWQgcmV0dXJuaW5nIFBNRU0gcGFnZXMgdG8gaGVhcHMu CgpTaWduZWQtb2ZmLWJ5OiBIYW96aG9uZyBaaGFuZyA8aGFvemhvbmcuemhhbmdAaW50ZWwuY29t PgotLS0KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDYzogV2Vp IExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29w ZXIzQGNpdHJpeC5jb20+CkNjOiBHZW9yZ2UgRHVubGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJp eC5jb20+CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBLb25yYWQgUnpl c3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CkNjOiBTdGVmYW5vIFN0YWJlbGxp bmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CkNjOiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9yZz4K LS0tCiB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCB8ICAxNiArKysrKwogdG9vbHMvbGli eGMveGNfbWlzYy5jICAgICAgICAgfCAgMzMgKysrKysrKysrKwogeGVuL2FyY2gveDg2L21tLmMg ICAgICAgICAgICAgfCAgIDMgKy0KIHhlbi9hcmNoL3g4Ni94ODZfNjQvbW0uYyAgICAgIHwgIDcy ICsrKysrKysrKysrKysrKysrKysrKwogeGVuL2NvbW1vbi9wbWVtLmMgICAgICAgICAgICAgfCAx NDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vaW5jbHVk ZS9hc20teDg2L21tLmggICAgICB8ICAxMCArKy0KIHhlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwu aCAgIHwgIDE4ICsrKysrKwogeGVuL2luY2x1ZGUveGVuL3BtZW0uaCAgICAgICAgfCAgIDggKysr CiA4IGZpbGVzIGNoYW5nZWQsIDMwMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oIGIvdG9vbHMvbGlieGMvaW5j bHVkZS94ZW5jdHJsLmgKaW5kZXggZTBhZGFkMWNmOC4uOTM1ODg1ZDZhNyAxMDA2NDQKLS0tIGEv dG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKKysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94 ZW5jdHJsLmgKQEAgLTI2NDAsNiArMjY0MCwyMiBAQCBpbnQgeGNfbnZkaW1tX3BtZW1fZ2V0X3Jl Z2lvbnNfbnIoeGNfaW50ZXJmYWNlICp4Y2gsCiBpbnQgeGNfbnZkaW1tX3BtZW1fZ2V0X3JlZ2lv bnMoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQ4X3QgdHlwZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2b2lkICpidWZmZXIsIHVpbnQzMl90ICpucik7CiAKKy8qCisgKiBTZXR1cCB0 aGUgc3BlY2lmaWVkIFBNRU0gcGFnZXMgZm9yIG1hbmFnZW1lbnQgdXNhZ2UuIElmIHN1Y2Nlc3Ms CisgKiB0aGVzZSBQTUVNIHBhZ2VzIGNhbiBiZSB1c2VkIHRvIHN0b3JlIHRoZSBmcmFtZXRhYmxl IGFuZCBNMlAgdGFibGUKKyAqIG9mIGl0c2VsZiBhbmQgb3RoZXIgUE1FTSBwYWdlcy4gVGhlc2Ug bWFuYWdlbWVudCBQTUVNIHBhZ2VzIHdpbGwKKyAqIG5ldmVyIGJlIG1hcHBlZCB0byBndWVzdC4K KyAqCisgKiBQYXJhbWV0ZXJzOgorICogIHhjaDogICAgICAgIHhjIGludGVyZmFjZSBoYW5kbGUK KyAqICBzbWZuLCBlbWZuOiB0aGUgc3RhcnQgYW5kIGVuZCBNRk4gb2YgdGhlIFBNRU0gcmVnaW9u CisgKgorICogUmV0dXJuOgorICogIE9uIHN1Y2Nlc3MsIHJldHVybiAwLiBPdGhlcndpc2UsIHJl dHVybiBhIG5vbi16ZXJvIGVycm9yIGNvZGUuCisgKi8KK2ludCB4Y19udmRpbW1fcG1lbV9zZXR1 cF9tZ210KHhjX2ludGVyZmFjZSAqeGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgbG9uZyBzbWZuLCB1bnNpZ25lZCBsb25nIGVtZm4pOworCiAvKiBDb21wYXQgc2hp bXMgKi8KICNpbmNsdWRlICJ4ZW5jdHJsX2NvbXBhdC5oIgogCmRpZmYgLS1naXQgYS90b29scy9s aWJ4Yy94Y19taXNjLmMgYi90b29scy9saWJ4Yy94Y19taXNjLmMKaW5kZXggMTFiZWZhNDQ0Zi4u ZDZiMzA1MzRkMiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfbWlzYy5jCisrKyBiL3Rvb2xz L2xpYnhjL3hjX21pc2MuYwpAQCAtOTczLDYgKzk3MywzOSBAQCBvdXQ6CiAgICAgcmV0dXJuIHJj OwogfQogCitzdGF0aWMgdm9pZCB4Y19udmRpbW1fcG1lbV9zZXR1cF9jb21tb24oc3RydWN0IHhl bl9zeXNjdGwgKnN5c2N0bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBsb25nIHNtZm4sIHVuc2lnbmVkIGxvbmcgZW1mbiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1nbXRfc21mbiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1nbXRfZW1m bikKK3sKKyAgICBzdHJ1Y3QgeGVuX3N5c2N0bF9udmRpbW1fb3AgKm52ZGltbSA9ICZzeXNjdGwt PnUubnZkaW1tOworICAgIHhlbl9zeXNjdGxfbnZkaW1tX3BtZW1fc2V0dXBfdCAqc2V0dXAgPSAm bnZkaW1tLT51LnBtZW1fc2V0dXA7CisKKyAgICBzeXNjdGwtPmNtZCA9IFhFTl9TWVNDVExfbnZk aW1tX29wOworICAgIG52ZGltbS0+Y21kID0gWEVOX1NZU0NUTF9udmRpbW1fcG1lbV9zZXR1cDsK KyAgICBudmRpbW0tPmVyciA9IDA7CisgICAgc2V0dXAtPnNtZm4gPSBzbWZuOworICAgIHNldHVw LT5lbWZuID0gZW1mbjsKKyAgICBzZXR1cC0+bWdtdF9zbWZuID0gbWdtdF9zbWZuOworICAgIHNl dHVwLT5tZ210X2VtZm4gPSBtZ210X2VtZm47Cit9CisKK2ludCB4Y19udmRpbW1fcG1lbV9zZXR1 cF9tZ210KHhjX2ludGVyZmFjZSAqeGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgbG9uZyBzbWZuLCB1bnNpZ25lZCBsb25nIGVtZm4pCit7CisgICAgREVDTEFSRV9T WVNDVEw7CisgICAgaW50IHJjOworCisgICAgeGNfbnZkaW1tX3BtZW1fc2V0dXBfY29tbW9uKCZz eXNjdGwsIHNtZm4sIGVtZm4sIHNtZm4sIGVtZm4pOworICAgIHN5c2N0bC51Lm52ZGltbS51LnBt ZW1fc2V0dXAudHlwZSA9IFBNRU1fUkVHSU9OX1RZUEVfTUdNVDsKKworICAgIHJjID0gZG9fc3lz Y3RsKHhjaCwgJnN5c2N0bCk7CisgICAgaWYgKCByYyAmJiBzeXNjdGwudS5udmRpbW0uZXJyICkK KyAgICAgICAgcmMgPSAtc3lzY3RsLnUubnZkaW1tLmVycjsKKworICAgIHJldHVybiByYzsKK30K KwogLyoKICAqIExvY2FsIHZhcmlhYmxlczoKICAqIG1vZGU6IEMKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gveDg2L21tLmMKaW5kZXggYjIwNDZjYTJmMC4uOWEyMjRj ZjFiYiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tLmMKKysrIGIveGVuL2FyY2gveDg2L21t LmMKQEAgLTIzMDYsNyArMjMwNiw4IEBAIHZvaWQgcHV0X3BhZ2Uoc3RydWN0IHBhZ2VfaW5mbyAq cGFnZSkKIAogICAgIGlmICggdW5saWtlbHkoKG54ICYgUEdDX2NvdW50X21hc2spID09IDApICkK ICAgICB7Ci0gICAgICAgIGlmICggY2xlYW51cF9wYWdlX2NhY2hlYXR0cihwYWdlKSA9PSAwICkK KyAgICAgICAgaWYgKCAhaXNfcG1lbV9wYWdlKHBhZ2UpIC8qIFBNRU0gcGFnZSBpcyBub3QgYWxs b2NhdGVkIGZyb20gWGVuIGhlYXAuICovCisgICAgICAgICAgICAgJiYgY2xlYW51cF9wYWdlX2Nh Y2hlYXR0cihwYWdlKSA9PSAwICkKICAgICAgICAgICAgIGZyZWVfZG9taGVhcF9wYWdlKHBhZ2Up OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvbW0uYyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQv bW0uYwppbmRleCAzNmRjYjNmMWNiLi43YmQyYzlhOWFmIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYveDg2XzY0L21tLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jCkBAIC0xNTM1LDYg KzE1MzUsNzggQEAgaW50IG1lbW9yeV9hZGQodW5zaWduZWQgbG9uZyBzcGZuLCB1bnNpZ25lZCBs b25nIGVwZm4sIHVuc2lnbmVkIGludCBweG0pCiAgICAgcmV0dXJuIHJldDsKIH0KIAorI2lmZGVm IENPTkZJR19OVkRJTU1fUE1FTQorCitzdGF0aWMgdm9pZCBwbWVtX2luaXRfZnJhbWVfdGFibGUo dW5zaWduZWQgbG9uZyBzbWZuLCB1bnNpZ25lZCBsb25nIGVtZm4pCit7CisgICAgc3RydWN0IHBh Z2VfaW5mbyAqcGFnZSA9IG1mbl90b19wYWdlKHNtZm4pLCAqZXBhZ2UgPSBtZm5fdG9fcGFnZShl bWZuKTsKKworICAgIHdoaWxlICggcGFnZSA8IGVwYWdlICkKKyAgICB7CisgICAgICAgIHBhZ2Ut PmNvdW50X2luZm8gPSBQR0Nfc3RhdGVfZnJlZSB8IFBHQ19wbWVtX3BhZ2U7CisgICAgICAgIHBh Z2UrKzsKKyAgICB9Cit9CisKKy8qKgorICogSW5pdGlhbGl6ZSBmcmFtZXRhYmxlIGFuZCBNMlAg Zm9yIHRoZSBzcGVjaWZpZWQgUE1FTSByZWdpb24uCisgKgorICogUGFyYW1ldGVyczoKKyAqICBz bWZuLCBlbWZuOiB0aGUgc3RhcnQgYW5kIGVuZCBNRk4gb2YgdGhlIFBNRU0gcmVnaW9uCisgKiAg bWdtdF9zbWZuLAorICogIG1nbXRfZW1mbjogIHRoZSBzdGFydCBhbmQgZW5kIE1GTiBvZiB0aGUg UE1FTSByZWdpb24gdXNlZCB0byBzdG9yZQorICogICAgICAgICAgICAgIHRoZSBmcmFtZSB0YWJs ZSBhbmQgTTJQIHRhYmxlIG9mIGFib3ZlIFBNRU0gcmVnaW9uLiBJZgorICogICAgICAgICAgICAg IEBzbWZuIC0gQGVtZm4gaXMgZ29pbmcgdG8gYmUgbWFwcGVkIHRvIGd1ZXN0LCBpdCBzaG91bGQK KyAqICAgICAgICAgICAgICBub3Qgb3ZlcmxhcCB3aXRoIEBtZ210X3NtZm4gLSBAbWdtdF9lbWZu LiBJZiBAc21mbiAtIEBlbWZuCisgKiAgICAgICAgICAgICAgaXMgZ29pbmcgdG8gYmUgdXNlZCBm b3IgbWFuYWdlbWVudCBwdXJwb3NlLCBpdCBzaG91bGQKKyAqICAgICAgICAgICAgICBiZSBpZGVu dGljYWwgdG8gQG1nbXRfc21mbiAtIEBtZ250X2VtZm4uCisgKiAgdXNlZF9tZ210X21mbnM6IHJl dHVybiB0aGUgbnVtYmVyIG9mIHBhZ2VzIHVzZWQgaW4gQG1nbXRfc21mbiAtIEBtZ210X2VtZm4K KyAqCisgKiBSZXR1cm46CisgKiAgT24gc3VjY2VzcywgcmV0dXJuIDAuIE90aGVyd2lzZSwgcmV0 dXJuIGEgbm9uLXplcm8gZXJyb3IgY29kZS4KKyAqLworaW50IHBtZW1fYXJjaF9zZXR1cCh1bnNp Z25lZCBsb25nIHNtZm4sIHVuc2lnbmVkIGxvbmcgZW1mbiwgdW5zaWduZWQgaW50IHB4bSwKKyAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZ210X3NtZm4sIHVuc2lnbmVkIGxvbmcg bWdtdF9lbWZuLAorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICp1c2VkX21nbXRf bWZucykKK3sKKyAgICBzdHJ1Y3QgbWVtX2hvdGFkZF9pbmZvIGluZm8gPQorICAgICAgICB7IC5z cGZuID0gc21mbiwgLmVwZm4gPSBlbWZuLCAuY3VyID0gc21mbiB9OworICAgIHN0cnVjdCBtZW1f aG90YWRkX2luZm8gbWdtdF9pbmZvID0KKyAgICAgICAgeyAuc3BmbiA9IG1nbXRfc21mbiwgLmVw Zm4gPSBtZ210X2VtZm4sIC5jdXIgPSBtZ210X3NtZm4gfTsKKyAgICBzdHJ1Y3QgbWVtX2hvdGFk ZF9hbGxvYyBhbGxvYyA9CisgICAgeworICAgICAgICAuYWxsb2NfbWZucyA9IGFsbG9jX2hvdGFk ZF9tZm4sCisgICAgICAgIC5vcGFxdWUgICAgID0gJm1nbXRfaW5mbworICAgIH07CisgICAgYm9v bCBpc19tZ210ID0gKG1nbXRfc21mbiA9PSBzbWZuICYmIG1nbXRfZW1mbiA9PSBlbWZuKTsKKyAg ICBpbnQgcmM7CisKKyAgICBpZiAoIG1nbXRfc21mbiA9PSBtZm5feChJTlZBTElEX01GTikgfHwg bWdtdF9lbWZuID09IG1mbl94KElOVkFMSURfTUZOKSB8fAorICAgICAgICAgbWdtdF9zbWZuID49 IG1nbXRfZW1mbiApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgaWYgKCAhaXNfbWdt dCAmJgorICAgICAgICAgKChzbWZuID49IG1nbXRfc21mbiAmJiBzbWZuIDwgbWdtdF9lbWZuKSB8 fAorICAgICAgICAgIChlbWZuID4gbWdtdF9zbWZuICYmIGVtZm4gPD0gbWdtdF9lbWZuKSkgKQor ICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIHJjID0gbWVtb3J5X2FkZF9jb21tb24oJmlu Zm8sIHB4bSwgZmFsc2UsICZhbGxvYyk7CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiBy YzsKKworICAgIHBtZW1faW5pdF9mcmFtZV90YWJsZShzbWZuLCBlbWZuKTsKKworICAgIGlmICgg IWlzX21nbXQgKQorICAgICAgICBzaGFyZV9ob3RhZGRfbTJwX3RhYmxlKCZpbmZvKTsKKworICAg IGlmICggdXNlZF9tZ210X21mbnMgKQorICAgICAgICAqdXNlZF9tZ210X21mbnMgPSBtZ210X2lu Zm8uY3VyIC0gbWdtdF9pbmZvLnNwZm47CisKKyAgICByZXR1cm4gMDsKK30KKworI2VuZGlmIC8q IENPTkZJR19OVkRJTU1fUE1FTSAqLworCiAjaW5jbHVkZSAiY29tcGF0L21tLmMiCiAKIC8qCmRp ZmYgLS1naXQgYS94ZW4vY29tbW9uL3BtZW0uYyBiL3hlbi9jb21tb24vcG1lbS5jCmluZGV4IDBh ZmMxNTczYzYuLjkzNmNmMTQyM2YgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vcG1lbS5jCisrKyBi L3hlbi9jb21tb24vcG1lbS5jCkBAIC0zMSw2ICszMSwxNSBAQAogc3RhdGljIExJU1RfSEVBRChw bWVtX3Jhd19yZWdpb25zKTsKIHN0YXRpYyB1bnNpZ25lZCBpbnQgbnJfcmF3X3JlZ2lvbnM7CiAK Ky8qCisgKiBBbGwgUE1FTSByZWdpb25zIHJlc2VydmVkIGZvciBtYW5hZ2VtZW50IHB1cnBvc2Ug YXJlIGxpbmtlZCB0byB0aGlzCisgKiBsaXN0LiBBbGwgb2YgdGhlbSBtdXN0IGJlIGNvdmVyZWQg Ynkgb25lIG9yIG11bHRpcGxlIFBNRU0gcmVnaW9ucworICogaW4gbGlzdCBwbWVtX3Jhd19yZWdp b25zLgorICovCitzdGF0aWMgTElTVF9IRUFEKHBtZW1fbWdtdF9yZWdpb25zKTsKK3N0YXRpYyBE RUZJTkVfU1BJTkxPQ0socG1lbV9tZ210X2xvY2spOworc3RhdGljIHVuc2lnbmVkIGludCBucl9t Z210X3JlZ2lvbnM7CisKIHN0cnVjdCBwbWVtIHsKICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7 IC8qIGxpbmsgdG8gb25lIG9mIFBNRU0gcmVnaW9uIGxpc3QgKi8KICAgICB1bnNpZ25lZCBsb25n IHNtZm47ICAgIC8qIHN0YXJ0IE1GTiBvZiB0aGUgUE1FTSByZWdpb24gKi8KQEAgLTQwLDYgKzQ5 LDEwIEBAIHN0cnVjdCBwbWVtIHsKICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIHVuc2ln bmVkIGludCBweG07IC8qIHByb3hpbWl0eSBkb21haW4gb2YgdGhlIFBNRU0gcmVnaW9uICovCiAg ICAgICAgIH0gcmF3OworCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1bnNpZ25lZCBs b25nIHVzZWQ7IC8qICMgb2YgdXNlZCBwYWdlcyBpbiBNR01UIFBNRU0gcmVnaW9uICovCisgICAg ICAgIH0gbWdtdDsKICAgICB9IHU7CiB9OwogCkBAIC05OSw2ICsxMTIsMTggQEAgc3RhdGljIGlu dCBwbWVtX2xpc3RfYWRkKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCiAgICAgcmV0dXJuIDA7CiB9 CiAKKy8qKgorICogRGVsZXRlIHRoZSBzcGVjaWZpZWQgZW50cnkgZnJvbSB0aGUgbGlzdCB0byB3 aGljaCBpdCdzIGN1cnJlbnRseSBsaW5rZWQuCisgKgorICogUGFyYW1ldGVyczoKKyAqICBlbnRy eTogdGhlIGVudHJ5IHRvIGJlIGRlbGV0ZWQKKyAqLworc3RhdGljIHZvaWQgcG1lbV9saXN0X2Rl bChzdHJ1Y3QgcG1lbSAqZW50cnkpCit7CisgICAgbGlzdF9kZWwoJmVudHJ5LT5saW5rKTsKKyAg ICB4ZnJlZShlbnRyeSk7Cit9CisKIHN0YXRpYyBpbnQgcG1lbV9nZXRfcmVnaW9uc19ucih4ZW5f c3lzY3RsX252ZGltbV9wbWVtX3JlZ2lvbnNfbnJfdCAqcmVnaW9uc19ucikKIHsKICAgICBpbnQg cmMgPSAwOwpAQCAtMTc3LDYgKzIwMiwxMTQgQEAgc3RhdGljIGludCBwbWVtX2dldF9yZWdpb25z KHhlbl9zeXNjdGxfbnZkaW1tX3BtZW1fcmVnaW9uc190ICpyZWdpb25zKQogICAgIHJldHVybiBy YzsKIH0KIAorc3RhdGljIGJvb2wgY2hlY2tfbWdtdF9zaXplKHVuc2lnbmVkIGxvbmcgbWdtdF9t Zm5zLCB1bnNpZ25lZCBsb25nIHRvdGFsX21mbnMpCit7CisgICAgcmV0dXJuIG1nbXRfbWZucyA+ PQorICAgICAgICAoKHNpemVvZihzdHJ1Y3QgcGFnZV9pbmZvKSAqIHRvdGFsX21mbnMpID4+IFBB R0VfU0hJRlQpICsKKyAgICAgICAgKChzaXplb2YoKm1hY2hpbmVfdG9fcGh5c19tYXBwaW5nKSAq IHRvdGFsX21mbnMpID4+IFBBR0VfU0hJRlQpOworfQorCitzdGF0aWMgYm9vbCBjaGVja19hZGRy ZXNzX2FuZF9weG0odW5zaWduZWQgbG9uZyBzbWZuLCB1bnNpZ25lZCBsb25nIGVtZm4sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpyZXRfcHhtKQorewor ICAgIHN0cnVjdCBsaXN0X2hlYWQgKmN1cjsKKyAgICBsb25nIHB4bSA9IC0xOworCisgICAgbGlz dF9mb3JfZWFjaChjdXIsICZwbWVtX3Jhd19yZWdpb25zKQorICAgIHsKKyAgICAgICAgc3RydWN0 IHBtZW0gKnJhdyA9IGxpc3RfZW50cnkoY3VyLCBzdHJ1Y3QgcG1lbSwgbGluayk7CisgICAgICAg IHVuc2lnbmVkIGxvbmcgcmF3X3NtZm4gPSByYXctPnNtZm4sIHJhd19lbWZuID0gcmF3LT5lbWZu OworCisgICAgICAgIGlmICggIWNoZWNrX292ZXJsYXAoc21mbiwgZW1mbiwgcmF3X3NtZm4sIHJh d19lbWZuKSApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIHNtZm4gPCBy YXdfc21mbiApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKCBweG0g IT0gLTEgJiYgcHhtICE9IHJhdy0+dS5yYXcucHhtICkKKyAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKKyAgICAgICAgcHhtID0gcmF3LT51LnJhdy5weG07CisKKyAgICAgICAgc21mbiA9IG1pbihl bWZuLCByYXdfZW1mbik7CisgICAgICAgIGlmICggc21mbiA9PSBlbWZuICkKKyAgICAgICAgICAg IGJyZWFrOworICAgIH0KKworICAgICpyZXRfcHhtID0gcHhtOworCisgICAgcmV0dXJuIHNtZm4g PT0gZW1mbjsKK30KKworc3RhdGljIGludCBwbWVtX3NldHVwX21nbXQodW5zaWduZWQgbG9uZyBz bWZuLCB1bnNpZ25lZCBsb25nIGVtZm4pCit7CisgICAgc3RydWN0IHBtZW0gKm1nbXQ7CisgICAg dW5zaWduZWQgbG9uZyB1c2VkX21nbXRfbWZuczsKKyAgICB1bnNpZ25lZCBpbnQgcHhtOworICAg IGludCByYzsKKworICAgIGlmICggc21mbiA9PSBtZm5feChJTlZBTElEX01GTikgfHwgZW1mbiA9 PSBtZm5feChJTlZBTElEX01GTikgfHwKKyAgICAgICAgIHNtZm4gPj0gZW1mbiApCisgICAgICAg IHJldHVybiAtRUlOVkFMOworCisgICAgLyoKKyAgICAgKiBSZXF1aXJlIHRoZSBQTUVNIHJlZ2lv biBpbiBvbmUgcHJveGltaXR5IGRvbWFpbiwgaW4gb3JkZXIgdG8KKyAgICAgKiBhdm9pZCB0aGUg ZXJyb3IgcmVjb3ZlcnkgZnJvbSBtdWx0aXBsZSBjYWxscyB0byBwbWVtX2FyY2hfc2V0dXAoKQor ICAgICAqIHdoaWNoIGlzIG5vdCByZXZlcnRpYmxlLgorICAgICAqLworICAgIGlmICggIWNoZWNr X2FkZHJlc3NfYW5kX3B4bShzbWZuLCBlbWZuLCAmcHhtKSApCisgICAgICAgIHJldHVybiAtRUlO VkFMOworCisgICAgaWYgKCAhY2hlY2tfbWdtdF9zaXplKGVtZm4gLSBzbWZuLCBlbWZuIC0gc21m bikgKQorICAgICAgICByZXR1cm4gLUVOT1NQQzsKKworICAgIHNwaW5fbG9jaygmcG1lbV9tZ210 X2xvY2spOworCisgICAgcmMgPSBwbWVtX2xpc3RfYWRkKCZwbWVtX21nbXRfcmVnaW9ucywgc21m biwgZW1mbiwgJm1nbXQpOworICAgIGlmICggcmMgKQorICAgICAgICBnb3RvIG91dDsKKworICAg IHJjID0gcG1lbV9hcmNoX3NldHVwKHNtZm4sIGVtZm4sIHB4bSwgc21mbiwgZW1mbiwgJnVzZWRf bWdtdF9tZm5zKTsKKyAgICBpZiAoIHJjICkKKyAgICB7CisgICAgICAgIHBtZW1fbGlzdF9kZWwo bWdtdCk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIG1nbXQtPnUubWdtdC51c2Vk ID0gdXNlZF9tZ210X21mbnM7CisgICAgbnJfbWdtdF9yZWdpb25zKys7CisKKyBvdXQ6CisgICAg c3Bpbl91bmxvY2soJnBtZW1fbWdtdF9sb2NrKTsKKworICAgIHJldHVybiByYzsKK30KKworc3Rh dGljIGludCBwbWVtX3NldHVwKHVuc2lnbmVkIGxvbmcgc21mbiwgdW5zaWduZWQgbG9uZyBlbWZu LAorICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWdtdF9zbWZuLCB1bnNpZ25l ZCBsb25nIG1nbXRfZW1mbiwKKyAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdHlw ZSkKK3sKKyAgICBpbnQgcmM7CisKKyAgICBzd2l0Y2ggKCB0eXBlICkKKyAgICB7CisgICAgY2Fz ZSBQTUVNX1JFR0lPTl9UWVBFX01HTVQ6CisgICAgICAgIGlmICggc21mbiAhPSBtZ210X3NtZm4g fHwgZW1mbiAhPSBtZ210X2VtZm4gKQorICAgICAgICB7CisgICAgICAgICAgICByYyA9IC1FSU5W QUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJjID0gcG1lbV9z ZXR1cF9tZ210KHNtZm4sIGVtZm4pOworCisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoK KyAgICAgICAgcmMgPSAtRUlOVkFMOworICAgIH0KKworICAgIHJldHVybiByYzsKK30KKwogLyoq CiAgKiBSZWdpc3RlciBhIHBtZW0gcmVnaW9uIHRvIFhlbi4KICAqCkBAIC0yMjYsNiArMzU5LDE1 IEBAIGludCBwbWVtX2RvX3N5c2N0bChzdHJ1Y3QgeGVuX3N5c2N0bF9udmRpbW1fb3AgKm52ZGlt bSkKICAgICAgICAgcmMgPSBwbWVtX2dldF9yZWdpb25zKCZudmRpbW0tPnUucG1lbV9yZWdpb25z KTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFhFTl9TWVNDVExfbnZkaW1tX3BtZW1fc2V0 dXA6CisgICAgeworICAgICAgICBzdHJ1Y3QgeGVuX3N5c2N0bF9udmRpbW1fcG1lbV9zZXR1cCAq c2V0dXAgPSAmbnZkaW1tLT51LnBtZW1fc2V0dXA7CisgICAgICAgIHJjID0gcG1lbV9zZXR1cChz ZXR1cC0+c21mbiwgc2V0dXAtPmVtZm4sCisgICAgICAgICAgICAgICAgICAgICAgICBzZXR1cC0+ bWdtdF9zbWZuLCBzZXR1cC0+bWdtdF9lbWZuLAorICAgICAgICAgICAgICAgICAgICAgICAgc2V0 dXAtPnR5cGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBkZWZhdWx0OgogICAgICAg ICByYyA9IC1FTk9TWVM7CiAgICAgfQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9t bS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oCmluZGV4IDgzNjI2MDg1ZTAuLjE5NDcyZTMy NGYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAorKysgYi94ZW4vaW5jbHVk ZS9hc20teDg2L21tLmgKQEAgLTI1Niw5ICsyNTYsMTEgQEAgc3RydWN0IHBhZ2VfaW5mbwogI2Rl ZmluZSBQR0Nfc3RhdGVfb2ZmbGluZWQgUEdfbWFzaygyLCA5KQogI2RlZmluZSBQR0Nfc3RhdGVf ZnJlZSAgICBQR19tYXNrKDMsIDkpCiAjZGVmaW5lIHBhZ2Vfc3RhdGVfaXMocGcsIHN0KSAoKChw ZyktPmNvdW50X2luZm8mUEdDX3N0YXRlKSA9PSBQR0Nfc3RhdGVfIyNzdCkKKy8qIFBhZ2UgaXMg ZnJvbSBQTUVNPyAqLworI2RlZmluZSBQR0NfcG1lbV9wYWdlICAgICBQR19tYXNrKDEsIDEwKQog CiAgLyogQ291bnQgb2YgcmVmZXJlbmNlcyB0byB0aGlzIGZyYW1lLiAqLwotI2RlZmluZSBQR0Nf Y291bnRfd2lkdGggICBQR19zaGlmdCg5KQorI2RlZmluZSBQR0NfY291bnRfd2lkdGggICBQR19z aGlmdCgxMCkKICNkZWZpbmUgUEdDX2NvdW50X21hc2sgICAgKCgxVUw8PFBHQ19jb3VudF93aWR0 aCktMSkKIAogLyoKQEAgLTI3NSw2ICsyNzcsMTIgQEAgc3RydWN0IHBhZ2VfaW5mbwogICAgICgo KChtZm4pIDw8IFBBR0VfU0hJRlQpID49IF9fcGEoJl9zdGV4dCkpICYmICBcCiAgICAgICgoKG1m bikgPDwgUEFHRV9TSElGVCkgPD0gX19wYSgmX18yTV9yd2RhdGFfZW5kKSkpCiAKKyNpZmRlZiBD T05GSUdfTlZESU1NX1BNRU0KKyNkZWZpbmUgaXNfcG1lbV9wYWdlKHBhZ2UpICgocGFnZSktPmNv dW50X2luZm8gJiBQR0NfcG1lbV9wYWdlKQorI2Vsc2UKKyNkZWZpbmUgaXNfcG1lbV9wYWdlKHBh Z2UpIGZhbHNlCisjZW5kaWYKKwogI2RlZmluZSBQUnR5cGVfaW5mbyAiMDE2bHgiLyogc2hvdWxk IG9ubHkgYmUgdXNlZCBmb3IgcHJpbnRrJ3MgKi8KIAogLyogVGhlIG51bWJlciBvZiBvdXQtb2Yt c3luYyBzaGFkb3dzIHdlIGFsbG93IHBlciB2Y3B1IChwcmltZSwgcGxlYXNlKSAqLwpkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oIGIveGVuL2luY2x1ZGUvcHVibGljL3N5 c2N0bC5oCmluZGV4IDliMmE2NWZjYjkuLjdjODg5Y2FkNTggMTAwNjQ0Ci0tLSBhL3hlbi9pbmNs dWRlL3B1YmxpYy9zeXNjdGwuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgKQEAg LTEwNTEsNiArMTA1MSw3IEBAIHN0cnVjdCB4ZW5fc3lzY3RsX3NldF9wYXJhbWV0ZXIgewogCiAv KiBUeXBlcyBvZiBQTUVNIHJlZ2lvbnMgKi8KICNkZWZpbmUgUE1FTV9SRUdJT05fVFlQRV9SQVcg ICAgICAgIDAgLyogUE1FTSByZWdpb25zIGRldGVjdGVkIGJ5IFhlbiAqLworI2RlZmluZSBQTUVN X1JFR0lPTl9UWVBFX01HTVQgICAgICAgMSAvKiBQTUVNIHJlZ2lvbnMgZm9yIG1hbmFnZW1lbnQg dXNhZ2UgKi8KIAogLyogUE1FTV9SRUdJT05fVFlQRV9SQVcgKi8KIHN0cnVjdCB4ZW5fc3lzY3Rs X252ZGltbV9wbWVtX3Jhd19yZWdpb24gewpAQCAtMTA4NSwxNCArMTA4NiwzMSBAQCBzdHJ1Y3Qg eGVuX3N5c2N0bF9udmRpbW1fcG1lbV9yZWdpb25zIHsKIHR5cGVkZWYgc3RydWN0IHhlbl9zeXNj dGxfbnZkaW1tX3BtZW1fcmVnaW9ucyB4ZW5fc3lzY3RsX252ZGltbV9wbWVtX3JlZ2lvbnNfdDsK IERFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9zeXNjdGxfbnZkaW1tX3BtZW1fcmVnaW9uc190 KTsKIAorLyogWEVOX1NZU0NUTF9udmRpbW1fcG1lbV9zZXR1cCAqLworc3RydWN0IHhlbl9zeXNj dGxfbnZkaW1tX3BtZW1fc2V0dXAgeworICAgIC8qIElOIHZhcmlhYmxlcyAqLworICAgIHVpbnQ2 NF90IHNtZm47ICAgICAgLyogc3RhcnQgTUZOIG9mIHRoZSBQTUVNIHJlZ2lvbiAqLworICAgIHVp bnQ2NF90IGVtZm47ICAgICAgLyogZW5kIE1GTiBvZiB0aGUgUE1FTSByZWdpb24gKi8KKyAgICB1 aW50NjRfdCBtZ210X3NtZm47CisgICAgdWludDY0X3QgbWdtdF9lbWZuOyAvKiBzdGFydCBhbmQg ZW5kIE1GTiBvZiBQTUVNIHBhZ2VzIHVzZWQgdG8gbWFuYWdlICovCisgICAgICAgICAgICAgICAg ICAgICAgICAvKiBhYm92ZSBQTUVNIHJlZ2lvbi4gSWYgdGhlIGFib3ZlIFBNRU0gcmVnaW9uIGlz ICovCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBhIG1hbmFnZW1lbnQgcmVnaW9uLCBtZ210 X3tzLGV9bWZuIGlzIHJlcXVpcmVkICovCisgICAgICAgICAgICAgICAgICAgICAgICAvKiB0byBi ZSBpZGVudGljYWwgdG8ge3MsZX1tZm4uICovCisgICAgdWludDhfdCAgdHlwZTsgICAgICAvKiBP bmx5IFBNRU1fUkVHSU9OX1RZUEVfTUdNVCBpcyBzdXBwb3J0ZWQgbm93ICovCit9OwordHlwZWRl ZiBzdHJ1Y3QgeGVuX3N5c2N0bF9udmRpbW1fcG1lbV9zZXR1cCB4ZW5fc3lzY3RsX252ZGltbV9w bWVtX3NldHVwX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fc3lzY3RsX252ZGltbV9w bWVtX3NldHVwX3QpOworCiBzdHJ1Y3QgeGVuX3N5c2N0bF9udmRpbW1fb3AgewogICAgIHVpbnQz Ml90IGNtZDsgLyogSU46IFhFTl9TWVNDVExfbnZkaW1tXyo7IG5vbmUgaXMgaW1wbGVtZW50ZWQg eWV0LiAqLwogI2RlZmluZSBYRU5fU1lTQ1RMX252ZGltbV9wbWVtX2dldF9yZWdpb25zX25yICAg ICAwCiAjZGVmaW5lIFhFTl9TWVNDVExfbnZkaW1tX3BtZW1fZ2V0X3JlZ2lvbnMgICAgICAgIDEK KyNkZWZpbmUgWEVOX1NZU0NUTF9udmRpbW1fcG1lbV9zZXR1cCAgICAgICAgICAgICAgMgogICAg IHVpbnQzMl90IGVycjsgLyogT1VUOiBlcnJvciBjb2RlICovCiAgICAgdW5pb24gewogICAgICAg ICB4ZW5fc3lzY3RsX252ZGltbV9wbWVtX3JlZ2lvbnNfbnJfdCBwbWVtX3JlZ2lvbnNfbnI7CiAg ICAgICAgIHhlbl9zeXNjdGxfbnZkaW1tX3BtZW1fcmVnaW9uc190IHBtZW1fcmVnaW9uczsKKyAg ICAgICAgeGVuX3N5c2N0bF9udmRpbW1fcG1lbV9zZXR1cF90IHBtZW1fc2V0dXA7CiAgICAgfSB1 OwogfTsKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3BtZW0uaCBiL3hlbi9pbmNsdWRl L3hlbi9wbWVtLmgKaW5kZXggOTIyYjEyZjU3MC4uOTMyM2Q2NzlhNiAxMDA2NDQKLS0tIGEveGVu L2luY2x1ZGUveGVuL3BtZW0uaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vcG1lbS5oCkBAIC0yOSw2 ICsyOSw5IEBAIGludCBwbWVtX2RvX3N5c2N0bChzdHJ1Y3QgeGVuX3N5c2N0bF9udmRpbW1fb3Ag Km52ZGltbSk7CiAjaWZkZWYgQ09ORklHX1g4NgogCiBpbnQgcG1lbV9kb20wX3NldHVwX3Blcm1p c3Npb24oc3RydWN0IGRvbWFpbiAqZCk7CitpbnQgcG1lbV9hcmNoX3NldHVwKHVuc2lnbmVkIGxv bmcgc21mbiwgdW5zaWduZWQgbG9uZyBlbWZuLCB1bnNpZ25lZCBpbnQgcHhtLAorICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1nbXRfc21mbiwgdW5zaWduZWQgbG9uZyBtZ210X2Vt Zm4sCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKnVzZWRfbWdtdF9tZm5zKTsK IAogI2Vsc2UgLyogIUNPTkZJR19YODYgKi8KIApAQCAtMzcsNiArNDAsMTEgQEAgc3RhdGljIGlu bGluZSBpbnQgcG1lbV9kb20wX3NldHVwX3Blcm1pc3Npb24oLi4uKQogICAgIHJldHVybiAtRU5P U1lTOwogfQogCitzdGF0aWMgaW5saW5lIGludCBwbWVtX2FyY2hfc2V0dXAoLi4uKQoreworICAg IHJldHVybiAtRU5PU1lTOworfQorCiAjZW5kaWYgLyogQ09ORklHX1g4NiAqLwogCiAjZW5kaWYg LyogQ09ORklHX05WRElNTV9QTUVNICovCi0tIAoyLjE1LjEKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h aWxtYW4vbGlzdGluZm8veGVuLWRldmVs