From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [RFC XEN PATCH v2 04/15] xen/x86: add XEN_SYSCTL_nvdimm_pmem_setup to setup host pmem Date: Mon, 20 Mar 2017 08:09:38 +0800 Message-ID: <20170320000949.24675-5-haozhong.zhang@intel.com> References: <20170320000949.24675-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: <20170320000949.24675-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 , Andrew Cooper , Ian Jackson , Jan Beulich , Konrad Rzeszutek Wilk , Dan Williams , Daniel De Graaf List-Id: xen-devel@lists.xenproject.org WGVuIGh5cGVydmlzb3IgaXMgbm90IGF3YXJlIHdoaWNoIHBvcnRpb25zIG9mIHBtZW0gY2FuIGJl IHVzZWQgdG8Kc3RvcmUgdGhlIGZyYW1lIHRhYmxlIGFuZCBNMlAgdGFibGUgb2YgcG1lbS4gSW5z dGVhZCwgaXQgcHJvdmlkZXMKdXNlcnMgb3IgYWRtaW5zIGluIERvbTAgd2l0aCBhIHN5c2N0bCBY RU5fU1lTQ1RMX252ZGltbV9wbWVtX3NldHVwIHRvCnNwZWNpZnkgdGhlIGxvY2F0aW9uLgoKWEVO X1NZU0NUTF9udmRpbW1fcG1lbV9zZXR1cCByZWNlaXZlcyBmb3VyIGFyZ3VtZW50czogZGF0YV9z bWZuLApkYXRhX2VtZm4sIG1nbXRfc21mbiBhbmQgbWdtdF9lbWZuLgogLSBkYXRhX3NtZm4gYW5k IGRhdGFfZW1mbiBzcGVjaWZ5IHRoZSBzdGFydCBhbmQgZW5kIE1GTiBvZiBhIGhvc3QgcG1lbQog ICByZWdpb24gdGhhdCBjYW4gYmUgdXNlZCBieSBndWVzdC4KIC0gSWYgbmVpdGhlciBtZ210X3Nt Zm4gbm9yIG1nbXRfZW1mbiBpcyBJTlZBTElEX01GTiwgdGhlIGhvc3QgcG1lbQogICBwYWdlcyBm cm9tIG1nbXRfc21mbiB0byBtZ210X2VtZm4gd2lsbCBiZSB1c2VkIHRvIHN0b3JlIHRoZQogICBm cmFtZXRhYmxlIGFuZCBNMlAgdGFibGUgb2YgdGhlIHBtZW0gcmVnaW9uIGRhdGFfc21mbiB+IGRh dGFfZW1mbgogICBhbmQgaXRzZWxmLiBkYXRhX3NtZm4gfiBkYXRhX2VtZm4gYW5kIG1nbXRfc21m biB+IG1nbXRfZW1mbiBzaG91bGQKICAgbm90IG92ZXJsYXAgd2l0aCBlYWNoIG90aGVyLgogLSBJ ZiBlaXRoZXIgbWdtdF9zbWZuIG9yIG1nbXRfZW1mbiBpcyBJTlZBTElEX01GTiwgWGVuIGh5cGVy dmlzb3Igd2lsbAogICBzdG9yZSB0aGUgZnJhbWV0YWJsZSBhbmQgTTJQIHRhYmxlIG9mIHRoZSBw bWVtIHJlZ2lvbiBkYXRhX3NtZm4gfgogICBkYXRhX2VtZm4gaW4gdGhlIHJlZ3VsYXIgUkFNLgoK WEVOX1NZU0NUTF9udmRpbW1fcG1lbV9zZXR1cCBjdXJyZW50bHkgb25seSB3b3JrcyBvbiB4ODYs IGFuZCByZXR1cm5zCi1FTk9TWVMgb24gb3RoZXIgYXJjaGl0ZWN0dXJlcy4KClNpZ25lZC1vZmYt Ynk6IEhhb3pob25nIFpoYW5nIDxoYW96aG9uZy56aGFuZ0BpbnRlbC5jb20+Ci0tLQpDYzogRGFu aWVsIERlIEdyYWFmIDxkZ2RlZ3JhQHR5Y2hvLm5zYS5nb3Y+CkNjOiBJYW4gSmFja3NvbiA8aWFu LmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+ CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxh bmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgoKQ2hhbmdlcyBpbiB2MjoKICogQ29udmVydCBYRU5Q Rl9wbWVtX2FkZCBpbiB2MSB0byBYRU5fU1lTQ1RMX252ZGltbV9wbWVtX3NldHVwIGluIHYyLiB2 MiBwYXRjaAogICBzZXJpZXMgcmVsaWVzIG9uIHVzZXJzL2FkbWlucyBpbiBEb20wIGluc3RlYWQg b2YgRG9tMCBkcml2ZXIgdG8gaW5kaWNhdGUgdGhlCiAgIGxvY2F0aW9uIHRvIHN0b3JlIHRoZSBm cmFtZXRhYmxlIGFuZCBNMlAgb2YgcG1lbS4KICogU2VwYXJhdGUgdGhlIGFyY2hpdGVjdHVyZS1p bmRlcGVuZGVudCBhbmQgLWRlcGVuZCBjb2RlIHRvIHBtZW1fc2V0dXAgYW5kCiAgIHBtZW1fYXJj aF9zZXR1cC4gQ3VycmVudGx5LCBvbmx5IHBtZW1fYXJjaF9zZXR1cCBvbiB4ODYgaXMgaW1wbGVt ZW50ZWQsIHdoaWxlCiAgIGl0IHJldHVybnMgLUVOT1NZUyBvbiBvdGhlciBhcmNoaXRlY3R1cmVz LgogKiBBZGQgWFNNIGNoZWNrIGZvciBYRU5fU1lTQ1RMX252ZGltbV9wbWVtX3NldHVwLgotLS0K IHRvb2xzL2ZsYXNrL3BvbGljeS9tb2R1bGVzL2RvbTAudGUgIHwgICAyICstCiB0b29scy9saWJ4 Yy9pbmNsdWRlL3hlbmN0cmwuaCAgICAgICB8ICAxOSArKysrCiB0b29scy9saWJ4Yy94Y19taXNj LmMgICAgICAgICAgICAgICB8ICAxNyArKysrCiB0b29scy9taXNjL3hlbi1uZGN0bC5jICAgICAg ICAgICAgICB8ICAgMAogeGVuL2FyY2gveDg2L3N5c2N0bC5jICAgICAgICAgICAgICAgfCAgMjIg KysrKwogeGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jICAgICAgICAgICAgfCAxMTEgKysrKysrKysr KysrKysrKysrKysKIHhlbi9jb21tb24vcG1lbS5jICAgICAgICAgICAgICAgICAgIHwgMTk3ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvcHVibGljL3N5 c2N0bC5oICAgICAgICAgfCAgMjkgKysrKystCiB4ZW4vaW5jbHVkZS94ZW4vcG1lbS5oICAgICAg ICAgICAgICB8ICAxNCArKysKIHhlbi94c20vZmxhc2svaG9va3MuYyAgICAgICAgICAgICAgIHwg ICA0ICsKIHhlbi94c20vZmxhc2svcG9saWN5L2FjY2Vzc192ZWN0b3JzIHwgICAyICsKIDExIGZp bGVzIGNoYW5nZWQsIDQxNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHRvb2xzL21pc2MveGVuLW5kY3RsLmMKCmRpZmYgLS1naXQgYS90b29scy9mbGFz ay9wb2xpY3kvbW9kdWxlcy9kb20wLnRlIGIvdG9vbHMvZmxhc2svcG9saWN5L21vZHVsZXMvZG9t MC50ZQppbmRleCBkMGE0ZDkxYWMwLi5kMzFjNTE0NTUwIDEwMDY0NAotLS0gYS90b29scy9mbGFz ay9wb2xpY3kvbW9kdWxlcy9kb20wLnRlCisrKyBiL3Rvb2xzL2ZsYXNrL3BvbGljeS9tb2R1bGVz L2RvbTAudGUKQEAgLTE2LDcgKzE2LDcgQEAgYWxsb3cgZG9tMF90IHhlbl90OnhlbiB7CiBhbGxv dyBkb20wX3QgeGVuX3Q6eGVuMiB7CiAJcmVzb3VyY2Vfb3AgcHNyX2NtdF9vcCBwc3JfY2F0X29w IHBtdV9jdHJsIGdldF9zeW1ib2wKIAlnZXRfY3B1X2xldmVsbGluZ19jYXBzIGdldF9jcHVfZmVh dHVyZXNldCBsaXZlcGF0Y2hfb3AKLQlnY292X29wCisJZ2Nvdl9vcCBudmRpbW1fb3AKIH07CiAK ICMgQWxsb3cgZG9tMCB0byB1c2UgYWxsIFhFTlZFUl8gc3Vib3BzIHRoYXQgaGF2ZSBjaGVja3Mu CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCBiL3Rvb2xzL2xpYnhj L2luY2x1ZGUveGVuY3RybC5oCmluZGV4IGE0ODk4MWFiZWEuLmQ0ZTMwMDJjOWUgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCisrKyBiL3Rvb2xzL2xpYnhjL2luY2x1 ZGUveGVuY3RybC5oCkBAIC0yNTM0LDYgKzI1MzQsMjUgQEAgaW50IHhjX2xpdmVwYXRjaF9yZXBs YWNlKHhjX2ludGVyZmFjZSAqeGNoLCBjaGFyICpuYW1lLCB1aW50MzJfdCB0aW1lb3V0KTsKIGlu dCB4Y19kb21haW5fY2FjaGVmbHVzaCh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgeGVuX3Bmbl90IHN0YXJ0X3BmbiwgeGVuX3Bmbl90 IG5yX3BmbnMpOwogCisvKgorICogUXVlcnkgWGVuIGh5cGVydmlzb3IgdG8gcHJlcGFyZSBmb3Ig bWFwcGluZyBob3N0IHBtZW0gcGFnZXMuCisgKgorICogUGFyYW1ldGVyczoKKyAqICB4Y2g6ICAg ICAgIHhjIGludGVyZmFjZSBoYW5kbGVyCisgKiAgc21mbjogICAgICB0aGUgc3RhcnQgTUZOIG9m IHRoZSBob3N0IHBtZW0gcGFnZXMgdG8gYmUgbWFwcGVkCisgKiAgZW1mbjogICAgICB0aGUgZW5k IE1GTiBvZiB0aGUgaG9zdCBwbWVtIHBhZ2VzIHRvIGJlIG1hcHBlZAorICogIG1nbXRfc21mbjog SWYgbm90IElOVkFMSURfTUZOLCB0aGUgc3RhcnQgTUZOIG9mIGhvc3QgcG1lbSBwYWdlcyBmb3Ig bWFuYWdpbmcKKyAqICAgICAgICAgICAgIGFib3ZlIHBtZW0gcGFnZXMKKyAqICBtZ210X2VtZm46 IElmIG5vdCBJTlZBTElEX01GTiwgdGhlIGVuZCBNRk4gb2YgaG9zdCBwbWVtIHBhZ2VzIGZvciBt YW5hZ2luZworICogICAgICAgICAgICAgYWJvdmUgcG1lbSBwYWdlcworICoKKyAqIFJldHVybjoK KyAqICAwIG9uIHN1Y2Nlc3M7IG5vbi16ZXJvIGVycm9yIGNvZGUgb24gZmFpbHVyZXMuCisgKi8K K2ludCB4Y19udmRpbW1fcG1lbV9zZXR1cCh4Y19pbnRlcmZhY2UgKnhjaCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNtZm4sIHVuc2lnbmVkIGxvbmcgZW1mbiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1nbXRfc21mbiwgdW5zaWduZWQg bG9uZyBtZ210X2VtZm4pOworCiAvKiBDb21wYXQgc2hpbXMgKi8KICNpbmNsdWRlICJ4ZW5jdHJs X2NvbXBhdC5oIgogCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19taXNjLmMgYi90b29scy9s aWJ4Yy94Y19taXNjLmMKaW5kZXggODgwODRmZGUzMC4uMDM4NGY0NWI4ZSAxMDA2NDQKLS0tIGEv dG9vbHMvbGlieGMveGNfbWlzYy5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX21pc2MuYwpAQCAtODE3 LDYgKzgxNywyMyBAQCBpbnQgeGNfbGl2ZXBhdGNoX3JlcGxhY2UoeGNfaW50ZXJmYWNlICp4Y2gs IGNoYXIgKm5hbWUsIHVpbnQzMl90IHRpbWVvdXQpCiAgICAgcmV0dXJuIF94Y19saXZlcGF0Y2hf YWN0aW9uKHhjaCwgbmFtZSwgTElWRVBBVENIX0FDVElPTl9SRVBMQUNFLCB0aW1lb3V0KTsKIH0K IAoraW50IHhjX252ZGltbV9wbWVtX3NldHVwKHhjX2ludGVyZmFjZSAqeGNoLAorICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc21mbiwgdW5zaWduZWQgbG9uZyBlbWZuLAor ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWdtdF9zbWZuLCB1bnNpZ25l ZCBsb25nIG1nbXRfZW1mbikKK3sKKyAgICBERUNMQVJFX1NZU0NUTDsKKworICAgIHN5c2N0bC5j bWQgPSBYRU5fU1lTQ1RMX252ZGltbV9vcDsKKyAgICBzeXNjdGwudS5udmRpbW0uY21kID0gWEVO X1NZU0NUTF9udmRpbW1fcG1lbV9zZXR1cDsKKyAgICBzeXNjdGwudS5udmRpbW0ucGFkID0gMDsK KyAgICBzeXNjdGwudS5udmRpbW0udS5zZXR1cC5zbWZuID0gc21mbjsKKyAgICBzeXNjdGwudS5u dmRpbW0udS5zZXR1cC5lbWZuID0gZW1mbjsKKyAgICBzeXNjdGwudS5udmRpbW0udS5zZXR1cC5t Z210X3NtZm4gPSBtZ210X3NtZm47CisgICAgc3lzY3RsLnUubnZkaW1tLnUuc2V0dXAubWdtdF9l bWZuID0gbWdtdF9lbWZuOworCisgICAgcmV0dXJuIGRvX3N5c2N0bCh4Y2gsICZzeXNjdGwpOwor fQorCiAvKgogICogTG9jYWwgdmFyaWFibGVzOgogICogbW9kZTogQwpkaWZmIC0tZ2l0IGEvdG9v bHMvbWlzYy94ZW4tbmRjdGwuYyBiL3Rvb2xzL21pc2MveGVuLW5kY3RsLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMgpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L3N5c2N0bC5jIGIveGVuL2FyY2gveDg2L3N5c2N0bC5jCmluZGV4IDJmNzA1NmU4MTYu LjYyZjI5ODA4NDAgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9zeXNjdGwuYworKysgYi94ZW4v YXJjaC94ODYvc3lzY3RsLmMKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlIDx4ZW4vdHJhY2Uu aD4KICNpbmNsdWRlIDx4ZW4vY29uc29sZS5oPgogI2luY2x1ZGUgPHhlbi9pb2NhcC5oPgorI2lu Y2x1ZGUgPHhlbi9wbWVtLmg+CiAjaW5jbHVkZSA8YXNtL2lycS5oPgogI2luY2x1ZGUgPGFzbS9o dm0vaHZtLmg+CiAjaW5jbHVkZSA8YXNtL2h2bS9zdXBwb3J0Lmg+CkBAIC0yNTAsNiArMjUxLDI3 IEBAIGxvbmcgYXJjaF9kb19zeXNjdGwoCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorI2lmZGVm IENPTkZJR19QTUVNCisgICAgY2FzZSBYRU5fU1lTQ1RMX252ZGltbV9vcDoKKyAgICB7CisgICAg ICAgIHhlbl9zeXNjdGxfbnZkaW1tX3BtZW1fc2V0dXBfdCAqc2V0dXA7CisKKyAgICAgICAgc3dp dGNoICggc3lzY3RsLT51Lm52ZGltbS5jbWQgKQorICAgICAgICB7CisgICAgICAgIGNhc2UgWEVO X1NZU0NUTF9udmRpbW1fcG1lbV9zZXR1cDoKKyAgICAgICAgICAgIHNldHVwID0gJnN5c2N0bC0+ dS5udmRpbW0udS5zZXR1cDsKKyAgICAgICAgICAgIHJldCA9IHBtZW1fc2V0dXAoc2V0dXAtPnNt Zm4sIHNldHVwLT5lbWZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR1cC0+bWdt dF9zbWZuLCBzZXR1cC0+bWdtdF9lbWZuKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg IGRlZmF1bHQ6CisgICAgICAgICAgICByZXQgPSAtRU5PU1lTOworICAgICAgICB9CisKKyAgICAg ICAgYnJlYWs7CisgICAgfQorI2VuZGlmIC8qIENPTkZJR19QTUVNICovCisKICAgICBkZWZhdWx0 OgogICAgICAgICByZXQgPSAtRU5PU1lTOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni94ODZfNjQvbW0uYyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvbW0uYwppbmRleCAw ZjFjZWFjYzZhLi43N2Y1MWYzOTlhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveDg2XzY0L21t LmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jCkBAIC0yNyw2ICsyNyw3IEBAIGFzbSgi LmZpbGUgXCIiIF9fRklMRV9fICJcIiIpOwogI2luY2x1ZGUgPHhlbi9ndWVzdF9hY2Nlc3MuaD4K ICNpbmNsdWRlIDx4ZW4vaHlwZXJjYWxsLmg+CiAjaW5jbHVkZSA8eGVuL21lbV9hY2Nlc3MuaD4K KyNpbmNsdWRlIDx4ZW4vcG1lbS5oPgogI2luY2x1ZGUgPGFzbS9jdXJyZW50Lmg+CiAjaW5jbHVk ZSA8YXNtL2FzbV9kZWZucy5oPgogI2luY2x1ZGUgPGFzbS9wYWdlLmg+CkBAIC0xNTIyLDYgKzE1 MjMsMTE2IEBAIGRlc3Ryb3lfZnJhbWV0YWJsZToKICAgICByZXR1cm4gcmV0OwogfQogCisjaWZk ZWYgQ09ORklHX1BNRU0KKworc3RhdGljIHVuc2lnbmVkIGxvbmcgcG1lbV9hbGxvY19mcm9tX3Jh bShzdHJ1Y3QgbWVtX2hvdGFkZF9pbmZvICp1bnVzZWQpCit7CisgICAgdW5zaWduZWQgbG9uZyBt Zm4gPSBtZm5feChJTlZBTElEX01GTik7CisgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSA9IGFs bG9jX2RvbWhlYXBfcGFnZXMoTlVMTCwgUEFHRVRBQkxFX09SREVSLCAwKTsKKworICAgIGlmICgg cGFnZSApCisgICAgICAgIG1mbiA9IHBhZ2VfdG9fbWZuKHBhZ2UpOworCisgICAgcmV0dXJuIG1m bjsKK30KKworc3RhdGljIGludCBwbWVtX3NldHVwX20ycF90YWJsZShjb25zdCBzdHJ1Y3QgbWVt X2hvdGFkZF9pbmZvICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZm5z X2FsbG9jX2ZuX3QgYWxsb2NfZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBtZW1faG90YWRkX2luZm8gKmFsbG9jX2luZm8pCit7CisgICAgdW5zaWduZWQgbG9uZyBz bWZuID0gaW5mby0+c3BmbjsKKyAgICB1bnNpZ25lZCBsb25nIGVtZm4gPSBpbmZvLT5lcGZuOwor CisgICAgaWYgKCBtYXhfcGFnZSA8IGVtZm4gKQorICAgIHsKKyAgICAgICAgbWF4X3BhZ2UgPSBl bWZuOworICAgICAgICBtYXhfcGR4ID0gcGZuX3RvX3BkeChtYXhfcGFnZSAtIDEpICsgMTsKKyAg ICB9CisgICAgdG90YWxfcGFnZXMgKz0gZW1mbiAtIHNtZm47CisKKyAgICBzZXRfcGR4X3Jhbmdl KHNtZm4sIGVtZm4pOworCisgICAgcmV0dXJuIHNldHVwX20ycF90YWJsZShpbmZvLCBhbGxvY19m biwgYWxsb2NfaW5mbyk7Cit9CisKK2ludCBwbWVtX2FyY2hfc2V0dXAodW5zaWduZWQgbG9uZyBk YXRhX3NtZm4sIHVuc2lnbmVkIGxvbmcgZGF0YV9lbWZuLAorICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIG1nbXRfc21mbiwgdW5zaWduZWQgbG9uZyBtZ210X2VtZm4pCit7CisgICAg aW50IHJldDsKKyAgICB1bnNpZ25lZCBvbGRfbWF4X21nbXQgPSBtYXhfcGFnZSwgb2xkX3RvdGFs X21nbXQgPSB0b3RhbF9wYWdlczsKKyAgICB1bnNpZ25lZCBvbGRfbWF4X2RhdGEsIG9sZF90b3Rh bF9kYXRhOworICAgIGJvb2wgbWdtdF9pbl9wbWVtID0gKG1nbXRfc21mbiAhPSBtZm5feChJTlZB TElEX01GTikgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICBtZ210X2VtZm4gIT0gbWZuX3go SU5WQUxJRF9NRk4pKTsKKyAgICBtZm5zX2FsbG9jX2ZuX3QgYWxsb2NfZm4gPSBwbWVtX2FsbG9j X2Zyb21fcmFtOworICAgIHN0cnVjdCBtZW1faG90YWRkX2luZm8gKmFsbG9jX2luZm8gPSBOVUxM OworICAgIHN0cnVjdCBtZW1faG90YWRkX2luZm8gZGF0YV9pbmZvID0KKyAgICAgICAgeyAuc3Bm biA9IGRhdGFfc21mbiwgLmVwZm4gPSBkYXRhX2VtZm4sIC5jdXIgPSBkYXRhX3NtZm4gfTsKKyAg ICBzdHJ1Y3QgbWVtX2hvdGFkZF9pbmZvIG1nbXRfaW5mbyA9CisgICAgICAgIHsgLnNwZm4gPSBt Z210X3NtZm4sIC5lcGZuID0gbWdtdF9lbWZuLCAuY3VyID0gbWdtdF9zbWZuIH07CisKKyAgICBp ZiAoICFtZW1faG90YWRkX2NoZWNrKGRhdGFfc21mbiwgZGF0YV9lbWZuKSApCisgICAgICAgIHJl dHVybiAtRUlOVkFMOworCisgICAgaWYgKCBtZ210X2luX3BtZW0gKQorICAgIHsKKyAgICAgICAg aWYgKCAhbWVtX2hvdGFkZF9jaGVjayhtZ210X3NtZm4sIG1nbXRfZW1mbikgKQorICAgICAgICAg ICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICAgICAgYWxsb2NfZm4gPSBhbGxvY19ob3RhZGRfbWZu OworICAgICAgICBhbGxvY19pbmZvID0gJm1nbXRfaW5mbzsKKworICAgICAgICByZXQgPSBleHRl bmRfZnJhbWVfdGFibGUoJm1nbXRfaW5mbywgYWxsb2NfZm4sIGFsbG9jX2luZm8pOworICAgICAg ICBpZiAoIHJldCApCisgICAgICAgICAgICBnb3RvIGRlc3Ryb3lfZnJhbWV0YWJsZV9tZ210Owor CisgICAgICAgIHJldCA9IHBtZW1fc2V0dXBfbTJwX3RhYmxlKCZtZ210X2luZm8sIGFsbG9jX2Zu LCBhbGxvY19pbmZvKTsKKyAgICAgICAgaWYgKCByZXQgKQorICAgICAgICAgICAgZ290byBkZXN0 cm95X20ycF9tZ210OworICAgIH0KKworICAgIHJldCA9IGV4dGVuZF9mcmFtZV90YWJsZSgmZGF0 YV9pbmZvLCBhbGxvY19mbiwgYWxsb2NfaW5mbyk7CisgICAgaWYgKCByZXQgKQorICAgICAgICBn b3RvIGRlc3Ryb3lfZnJhbWV0YWJsZV9kYXRhOworCisgICAgb2xkX21heF9kYXRhID0gbWF4X3Bh Z2U7CisgICAgb2xkX3RvdGFsX2RhdGEgPSB0b3RhbF9wYWdlczsKKyAgICByZXQgPSBwbWVtX3Nl dHVwX20ycF90YWJsZSgmZGF0YV9pbmZvLCBhbGxvY19mbiwgYWxsb2NfaW5mbyk7CisgICAgaWYg KCByZXQgKQorICAgICAgICBnb3RvIGRlc3Ryb3lfbTJwX2RhdGE7CisKKyAgICBzaGFyZV9ob3Rh ZGRfbTJwX3RhYmxlKCZkYXRhX2luZm8pOworICAgIGlmICggbWdtdF9pbl9wbWVtICkKKyAgICAg ICAgc2hhcmVfaG90YWRkX20ycF90YWJsZSgmbWdtdF9pbmZvKTsKKworICAgIHJldHVybiAwOwor CitkZXN0cm95X20ycF9kYXRhOgorICAgIGRlc3Ryb3lfbTJwX21hcHBpbmcoJmRhdGFfaW5mbyk7 CisgICAgbWF4X3BhZ2UgPSBvbGRfbWF4X2RhdGE7CisgICAgdG90YWxfcGFnZXMgPSBvbGRfdG90 YWxfZGF0YTsKKyAgICBtYXhfcGR4ID0gcGZuX3RvX3BkeChtYXhfcGFnZSAtIDEpICsgMTsKKwor ZGVzdHJveV9mcmFtZXRhYmxlX2RhdGE6CisgICAgY2xlYW51cF9mcmFtZV90YWJsZSgmZGF0YV9p bmZvKTsKKworZGVzdHJveV9tMnBfbWdtdDoKKyAgICBpZiAoIG1nbXRfaW5fcG1lbSApCisgICAg eworICAgICAgICBkZXN0cm95X20ycF9tYXBwaW5nKCZtZ210X2luZm8pOworICAgICAgICBtYXhf cGFnZSA9IG9sZF9tYXhfbWdtdDsKKyAgICAgICAgdG90YWxfcGFnZXMgPSBvbGRfdG90YWxfbWdt dDsKKyAgICAgICAgbWF4X3BkeCA9IHBmbl90b19wZHgobWF4X3BhZ2UgLSAxKSArIDE7CisgICAg fQorCitkZXN0cm95X2ZyYW1ldGFibGVfbWdtdDoKKyAgICBpZiAoIG1nbXRfaW5fcG1lbSApCisg ICAgICAgIGNsZWFudXBfZnJhbWVfdGFibGUoJm1nbXRfaW5mbyk7CisKKyAgICByZXR1cm4gcmV0 OworfQorCisjZW5kaWYgLyogQ09ORklHX1BNRU0gKi8KKwogI2luY2x1ZGUgImNvbXBhdC9tbS5j IgogCiAvKgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9wbWVtLmMgYi94ZW4vY29tbW9uL3BtZW0u YwppbmRleCAzYzE1MGNmMWRkLi4wZTJkNjZmOTRjIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3Bt ZW0uYworKysgYi94ZW4vY29tbW9uL3BtZW0uYwpAQCAtMTgsNiArMTgsNyBAQAogCiAjaW5jbHVk ZSA8eGVuL2Vycm5vLmg+CiAjaW5jbHVkZSA8eGVuL2xpc3QuaD4KKyNpbmNsdWRlIDx4ZW4vbW0u aD4KICNpbmNsdWRlIDx4ZW4vcG1lbS5oPgogI2luY2x1ZGUgPHhlbi9zcGlubG9jay5oPgogCkBA IC0yOCwxMCArMjksMzMgQEAKIHN0YXRpYyBERUZJTkVfU1BJTkxPQ0socG1lbV9yZWdpb25zX2xv Y2spOwogc3RhdGljIExJU1RfSEVBRChwbWVtX3JlZ2lvbnMpOwogCisvKgorICogVHdvIHR5cGVz IG9mIHBtZW0gcmVnaW9ucyBhcmUgbGlua2VkIGluIHRoaXMgbGlzdCBhbmQgYXJlCisgKiBkaXN0 aW5ndWlzaGVkIGJ5IHRoZWlyIHJlYWR5IGZsYWdzLgorICogLSBEYXRhIHBtZW0gcmVnaW9ucyB0 aGF0IGNhbiBiZSBtYXBwZWQgdG8gZ3Vlc3QsIGFuZCB0aGVpciByZWFkeQorICogICBmbGFncyBh cmUgdHJ1ZS4KKyAqIC0gTWFuYWdlbWVudCBwbWVtIHJlZ2lvbnMgdGhhdCBhcmUgdXNlZCB0byBt YW5hZ2VtZW50IGRhdGEgcmVnaW9ucworICogICBhbmQgbmV2ZXIgbWFwcGVkIHRvIGd1ZXN0LCBh bmQgdGhlaXIgcmVhZHkgZmxhZ3MgYXJlIGZhbHNlLgorICoKKyAqIEFsbCByZWdpb25zIGxpbmtl ZCBpbiB0aGlzIGxpc3QgbXVzdCBiZSBjb3ZlcmVkIGJ5IG9uZSBvciBtdWx0aXBsZQorICogcmVn aW9ucyBpbiBsaXN0IHBtZW1fcmVnaW9ucyBhcyB3ZWxsLgorICovCitzdGF0aWMgREVGSU5FX1NQ SU5MT0NLKHBtZW1fZ3JlZ2lvbnNfbG9jayk7CitzdGF0aWMgTElTVF9IRUFEKHBtZW1fZ3JlZ2lv bnMpOworCiBzdHJ1Y3QgcG1lbSB7CiAgICAgc3RydWN0IGxpc3RfaGVhZCBsaW5rOyAgICAgIC8q IGxpbmsgdG8gcG1lbV9saXN0ICovCiAgICAgdW5zaWduZWQgbG9uZyBzbWZuOyAgICAgICAgIC8q IHN0YXJ0IE1GTiBvZiB0aGUgd2hvbGUgcG1lbSByZWdpb24gKi8KICAgICB1bnNpZ25lZCBsb25n IGVtZm47ICAgICAgICAgLyogZW5kIE1GTiBvZiB0aGUgd2hvbGUgcG1lbSByZWdpb24gKi8KKwor ICAgIC8qCisgICAgICogSWYgZnJhbWV0YWJsZSBhbmQgTTJQIG9mIHRoaXMgcG1lbSByZWdpb24g aXMgc3RvcmVkIGluIHRoZQorICAgICAqIHJlZ3VsYXIgUkFNLCBtZ210IHdpbGwgYmUgTlVMTC4g T3RoZXJ3aXNlLCBpdCByZWZlcnMgdG8gYW5vdGhlcgorICAgICAqIHBtZW0gcmVnaW9uIHVzZWQg Zm9yIHRob3NlIG1hbmFnZW1lbnQgc3RydWN0dXJlcy4KKyAgICAgKi8KKyAgICBzdHJ1Y3QgcG1l bSAqbWdtdDsKKworICAgIGJvb2wgcmVhZHk7ICAgICAgICAgICAgICAgICAvKiBpbmRpY2F0ZSB3 aGV0aGVyIGl0IGNhbiBiZSBtYXBwZWQgdG8gZ3Vlc3QgKi8KIH07CiAKIHN0YXRpYyBib29sIGNo ZWNrX292ZXJsYXAodW5zaWduZWQgbG9uZyBzbWZuMSwgdW5zaWduZWQgbG9uZyBlbWZuMSwKQEAg LTc2LDYgKzEwMCw4MiBAQCBzdGF0aWMgaW50IHBtZW1fbGlzdF9hZGQoc3RydWN0IGxpc3RfaGVh ZCAqbGlzdCwgc3RydWN0IHBtZW0gKmVudHJ5KQogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMg dm9pZCBwbWVtX2xpc3RfcmVtb3ZlKHN0cnVjdCBwbWVtICplbnRyeSkKK3sKKyAgICBsaXN0X2Rl bCgmZW50cnktPmxpbmspOworfQorCitzdGF0aWMgc3RydWN0IHBtZW0gKmdldF9maXJzdF9vdmVy bGFwKGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc21mbiwgdW5zaWduZWQgZW1mbikKK3sKKyAg ICBzdHJ1Y3QgbGlzdF9oZWFkICpjdXI7CisgICAgc3RydWN0IHBtZW0gKm92ZXJsYXAgPSBOVUxM OworCisgICAgbGlzdF9mb3JfZWFjaChjdXIsIGxpc3QpCisgICAgeworICAgICAgICBzdHJ1Y3Qg cG1lbSAqY3VyX3BtZW0gPSBsaXN0X2VudHJ5KGN1ciwgc3RydWN0IHBtZW0sIGxpbmspOworICAg ICAgICB1bnNpZ25lZCBsb25nIGN1cl9zbWZuID0gY3VyX3BtZW0tPnNtZm47CisgICAgICAgIHVu c2lnbmVkIGxvbmcgY3VyX2VtZm4gPSBjdXJfcG1lbS0+ZW1mbjsKKworICAgICAgICBpZiAoIGVt Zm4gPD0gY3VyX3NtZm4gKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKCBjaGVj a19vdmVybGFwKHNtZm4sIGVtZm4sIGN1cl9zbWZuLCBjdXJfZW1mbikgKQorICAgICAgICB7Cisg ICAgICAgICAgICBvdmVybGFwID0gY3VyX3BtZW07CisgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgfQorICAgIH0KKworICAgIHJldHVybiBvdmVybGFwOworfQorCitzdGF0aWMgYm9vbCBwbWVt X2xpc3RfY292ZXJlZChjb25zdCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzbWZuLCB1bnNpZ25lZCBlbWZuKQorewor ICAgIHN0cnVjdCBwbWVtICpvdmVybGFwOworICAgIGJvb2wgY292ZXJlZCA9IGZhbHNlOworCisg ICAgZG8geworICAgICAgICBvdmVybGFwID0gZ2V0X2ZpcnN0X292ZXJsYXAobGlzdCwgc21mbiwg ZW1mbik7CisKKyAgICAgICAgaWYgKCAhb3ZlcmxhcCB8fCBzbWZuIDwgb3ZlcmxhcC0+c21mbiAp CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoIGVtZm4gPD0gb3ZlcmxhcC0+ZW1m biApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvdmVyZWQgPSB0cnVlOworICAgICAgICAgICAg YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzbWZuID0gb3ZlcmxhcC0+ZW1mbjsKKyAgICAg ICAgbGlzdCA9ICZvdmVybGFwLT5saW5rOworICAgIH0gd2hpbGUgKCBsaXN0ICk7CisKKyAgICBy ZXR1cm4gY292ZXJlZDsKK30KKworc3RhdGljIGJvb2wgY2hlY2tfbWdtdF9zaXplKHVuc2lnbmVk IGxvbmcgbWdtdF9tZm5zLCB1bnNpZ25lZCBsb25nIHRvdGFsX21mbnMpCit7CisgICAgcmV0dXJu IG1nbXRfbWZucyA+PQorICAgICAgICAoKHNpemVvZihzdHJ1Y3QgcGFnZV9pbmZvKSAqIHRvdGFs X21mbnMpID4+IFBBR0VfU0hJRlQpICsKKyAgICAgICAgKChzaXplb2YoKm1hY2hpbmVfdG9fcGh5 c19tYXBwaW5nKSAqIHRvdGFsX21mbnMpID4+IFBBR0VfU0hJRlQpOworfQorCitzdGF0aWMgYm9v bCBjaGVja19yZWdpb24odW5zaWduZWQgbG9uZyBzbWZuLCB1bnNpZ25lZCBsb25nIGVtZm4pCit7 CisgICAgYm9vbCByYzsKKworICAgIGlmICggc21mbiA+PSBlbWZuICkKKyAgICAgICAgcmV0dXJu IGZhbHNlOworCisgICAgc3Bpbl9sb2NrKCZwbWVtX3JlZ2lvbnNfbG9jayk7CisgICAgcmMgPSBw bWVtX2xpc3RfY292ZXJlZCgmcG1lbV9yZWdpb25zLCBzbWZuLCBlbWZuKTsKKyAgICBzcGluX3Vu bG9jaygmcG1lbV9yZWdpb25zX2xvY2spOworCisgICAgcmV0dXJuIHJjOworfQorCiAvKioKICAq IFJlZ2lzdGVyIGEgcG1lbSByZWdpb24gdG8gWGVuLiBJdCdzIHVzZWQgYnkgWGVuIGh5cGVydmlz b3IgdG8gY29sbGVjdAogICogYWxsIHBtZW0gcmVnaW9ucyBjYW4gYmUgdXNlZCBsYXRlci4KQEAg LTEwNCwzICsyMDQsMTAwIEBAIGludCBwbWVtX3JlZ2lzdGVyKHVuc2lnbmVkIGxvbmcgc21mbiwg dW5zaWduZWQgbG9uZyBlbWZuKQogCiAgICAgcmV0dXJuIHJjOwogfQorCisvKioKKyAqIFNldHVw IGEgZGF0YSBwbWVtIHJlZ2lvbiB0aGF0IGNhbiBiZSB1c2VkIGJ5IGd1ZXN0IGxhdGVyLiBBCisg KiBzZXBhcmF0ZSBwbWVtIHJlZ2lvbiwgb3IgdGhlIG1hbmFnZW1lbnQgcmVnaW9uLCBjYW4gYmUg c3BlY2lmaWVkIHRvCisgKiBzdG9yZSB0aGUgZnJhbWV0YWJsZSBhbmQgTTJQIHRhYmxlcyBvZiB0 aGUgZGF0YSBwbWVtIHJlZ2lvbi4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICogIGRhdGFfc21mbi9f ZW1mbjogc3RhcnQgYW5kIGVuZCBNRk5zIG9mIHRoZSBkYXRhIHBtZW0gcmVnaW9uCisgKiAgbWdt dF9lbWZuL19lbWZuOiBJZiBub3QgbWZuX3goSU5WQUxJRF9NRk4pLCB0aGVuIHRoZSBwbWVtIHJl Z2lvbiBmcm9tCisgKiAgICAgICAgICAgICAgICAgICBtZ210X3NtZm4gdG8gbWdtdF9lbWZuIHdp bGwgYmUgdXNlZCBmb3IgdGhlIGZyYW1ldGFibGUKKyAqICAgICAgICAgICAgICAgICAgIE0yUCBv ZiBpdHNlbGYgYW5kIHRoZSBkYXRhIHBtZW0gcmVnaW9uLiBPdGhlcndpc2UsIHRoZQorICogICAg ICAgICAgICAgICAgICAgcmVndWxhciBSQU0gd2lsbCBiZSB1c2VkLgorICoKKyAqIFJldHVybjoK KyAqICBPbiBzdWNjZXNzLCByZXR1cm4gMC4gT3RoZXJ3aXNlLCBhbiBlcnJvciBudW1iZXIgd2ls bCBiZSByZXR1cm5lZC4KKyAqLworaW50IHBtZW1fc2V0dXAodW5zaWduZWQgbG9uZyBkYXRhX3Nt Zm4sIHVuc2lnbmVkIGxvbmcgZGF0YV9lbWZuLAorICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyBtZ210X3NtZm4sIHVuc2lnbmVkIGxvbmcgbWdtdF9lbWZuKQoreworICAgIGludCByYyA9IDA7 CisgICAgYm9vbCBtZ210X2luX3BtZW0gPSBtZ210X3NtZm4gIT0gbWZuX3goSU5WQUxJRF9NRk4p ICYmCisgICAgICAgICAgICAgICAgICAgICAgICBtZ210X2VtZm4gIT0gbWZuX3goSU5WQUxJRF9N Rk4pOworICAgIHN0cnVjdCBwbWVtICpwbWVtLCAqbWdtdCA9IE5VTEw7CisgICAgdW5zaWduZWQg bG9uZyBtZ210X21mbnMgPSBtZ210X2VtZm4gLSBtZ210X3NtZm47CisgICAgdW5zaWduZWQgbG9u ZyB0b3RhbF9tZm5zID0gZGF0YV9lbWZuIC0gZGF0YV9zbWZuICsgbWdtdF9tZm5zOworICAgIHVu c2lnbmVkIGxvbmcgaTsKKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZzsKKworICAgIGlmICggIWNo ZWNrX3JlZ2lvbihkYXRhX3NtZm4sIGRhdGFfZW1mbikgKQorICAgICAgICByZXR1cm4gLUVJTlZB TDsKKworICAgIGlmICggbWdtdF9pbl9wbWVtICYmCisgICAgICAgICAoIWNoZWNrX3JlZ2lvbiht Z210X3NtZm4sIG1nbXRfZW1mbikgfHwKKyAgICAgICAgICAhY2hlY2tfbWdtdF9zaXplKG1nbXRf bWZucywgdG90YWxfbWZucykpICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBwbWVt ID0gYWxsb2NfcG1lbV9zdHJ1Y3QoZGF0YV9zbWZuLCBkYXRhX2VtZm4pOworICAgIGlmICggIXBt ZW0gKQorICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAgICBpZiAoIG1nbXRfaW5fcG1lbSApCisg ICAgeworICAgICAgICBtZ210ID0gYWxsb2NfcG1lbV9zdHJ1Y3QobWdtdF9zbWZuLCBtZ210X2Vt Zm4pOworICAgICAgICBpZiAoICFtZ210ICkKKyAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwor ICAgIH0KKworICAgIHNwaW5fbG9jaygmcG1lbV9ncmVnaW9uc19sb2NrKTsKKyAgICByYyA9IHBt ZW1fbGlzdF9hZGQoJnBtZW1fZ3JlZ2lvbnMsIHBtZW0pOworICAgIGlmICggcmMgKQorICAgIHsK KyAgICAgICAgc3Bpbl91bmxvY2soJnBtZW1fZ3JlZ2lvbnNfbG9jayk7CisgICAgICAgIGdvdG8g b3V0OworICAgIH0KKyAgICBpZiAoIG1nbXRfaW5fcG1lbSApCisgICAgeworICAgICAgICByYyA9 IHBtZW1fbGlzdF9hZGQoJnBtZW1fZ3JlZ2lvbnMsIG1nbXQpOworICAgICAgICBpZiAoIHJjICkK KyAgICAgICAgeworICAgICAgICAgICAgc3Bpbl91bmxvY2soJnBtZW1fZ3JlZ2lvbnNfbG9jayk7 CisgICAgICAgICAgICBnb3RvIG91dF9yZW1vdmVfcG1lbTsKKyAgICAgICAgfQorICAgIH0KKyAg ICBzcGluX3VubG9jaygmcG1lbV9ncmVnaW9uc19sb2NrKTsKKworICAgIHJjID0gcG1lbV9hcmNo X3NldHVwKGRhdGFfc21mbiwgZGF0YV9lbWZuLCBtZ210X3NtZm4sIG1nbXRfZW1mbik7CisgICAg aWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0X3JlbW92ZV9tZ210OworCisgICAgZm9yICggaSA9 IGRhdGFfc21mbjsgaSA8IGRhdGFfZW1mbjsgaSsrICkKKyAgICB7CisgICAgICAgIHBnID0gbWZu X3RvX3BhZ2UoaSk7CisgICAgICAgIHBnLT5jb3VudF9pbmZvID0gUEdDX3N0YXRlX2ZyZWU7Cisg ICAgfQorCisgICAgaWYgKCBtZ210X2luX3BtZW0gKQorICAgICAgICBwbWVtLT5tZ210ID0gbWdt dC0+bWdtdCA9IG1nbXQ7CisgICAgLyogQXMgbWdtdCBpcyBuZXZlciBtYXBwZWQgdG8gZ3Vlc3Qs IHdlIGRvIG5vdCBzZXQgaXRzIHJlYWR5IGZsYWcuICovCisgICAgcG1lbS0+cmVhZHkgPSB0cnVl OworCisgICAgcmV0dXJuIDA7CisKKyBvdXRfcmVtb3ZlX21nbXQ6CisgICAgaWYgKCBtZ210ICkK KyAgICB7CisgICAgICAgIHNwaW5fbG9jaygmcG1lbV9ncmVnaW9uc19sb2NrKTsKKyAgICAgICAg cG1lbV9saXN0X3JlbW92ZShtZ210KTsKKyAgICAgICAgc3Bpbl91bmxvY2soJnBtZW1fZ3JlZ2lv bnNfbG9jayk7CisgICAgICAgIHhmcmVlKG1nbXQpOworICAgIH0KKyBvdXRfcmVtb3ZlX3BtZW06 CisgICAgc3Bpbl9sb2NrKCZwbWVtX2dyZWdpb25zX2xvY2spOworICAgIHBtZW1fbGlzdF9yZW1v dmUocG1lbSk7CisgICAgc3Bpbl91bmxvY2soJnBtZW1fZ3JlZ2lvbnNfbG9jayk7CisgICAgeGZy ZWUocG1lbSk7Cisgb3V0OgorICAgIHJldHVybiByYzsKK30KZGlmZiAtLWdpdCBhL3hlbi9pbmNs dWRlL3B1YmxpYy9zeXNjdGwuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaAppbmRleCAw MGY1ZTc3ZDkxLi4yNzgzMWE1ZTRmIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lz Y3RsLmgKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oCkBAIC0zNiw3ICszNiw3IEBA CiAjaW5jbHVkZSAicGh5c2Rldi5oIgogI2luY2x1ZGUgInRtZW0uaCIKIAotI2RlZmluZSBYRU5f U1lTQ1RMX0lOVEVSRkFDRV9WRVJTSU9OIDB4MDAwMDAwMEYKKyNkZWZpbmUgWEVOX1NZU0NUTF9J TlRFUkZBQ0VfVkVSU0lPTiAweDAwMDAwMDEwCiAKIC8qCiAgKiBSZWFkIGNvbnNvbGUgY29udGVu dCBmcm9tIFhlbiBidWZmZXIgcmluZy4KQEAgLTEwODgsNiArMTA4OCwzMSBAQCBzdHJ1Y3QgeGVu X3N5c2N0bF9saXZlcGF0Y2hfb3AgewogdHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF9saXZlcGF0 Y2hfb3AgeGVuX3N5c2N0bF9saXZlcGF0Y2hfb3BfdDsKIERFRklORV9YRU5fR1VFU1RfSEFORExF KHhlbl9zeXNjdGxfbGl2ZXBhdGNoX29wX3QpOwogCisjZGVmaW5lIFhFTl9TWVNDVExfbnZkaW1t X3BtZW1fc2V0dXAgMAorc3RydWN0IHhlbl9zeXNjdGxfbnZkaW1tX3BtZW1fc2V0dXAgeworICAg IC8qIElOIHZhcmlhYmxlcyAqLworICAgIHVpbnQ2NF90IHNtZm47ICAgICAgLyogc3RhcnQgTUZO IG9mIHRoZSBwbWVtIHJlZ2lvbiAgICAgICAgICAgICAgICAgICovCisgICAgdWludDY0X3QgZW1m bjsgICAgICAvKiBlbmQgTUZOIG9mIHRoZSBwbWVtIHJlZ2lvbiAgICAgICAgICAgICAgICAgICAg Ki8KKyAgICB1aW50NjRfdCBtZ210X3NtZm47IC8qIElmIG5vdCBJTlZBTElEX01GTiwgc3RhcnQg TUZOIG9mIGFub3RoZXIgcG1lbSAqLworICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVnaW9u IHRoYXQgd2lsbCBiZSB1c2VkIHRvIG1hbmFnZSBhYm92ZSBwbWVtICovCisgICAgICAgICAgICAg ICAgICAgICAgICAvKiByZWdpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKi8KKyAgICB1aW50NjRfdCBtZ210X2VtZm47IC8qIElmIG5vdCBJTlZBTElEX01GTiwgZW5k IE1GTiBvZiBhbm90aGVyIHBtZW0gICAqLworICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVn aW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRvIG1hbmFnZSBhYm92ZSBwbWVtICovCisgICAgICAgICAg ICAgICAgICAgICAgICAvKiByZWdpb24uICovCit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0 bF9udmRpbW1fcG1lbV9zZXR1cCB4ZW5fc3lzY3RsX252ZGltbV9wbWVtX3NldHVwX3Q7CitERUZJ TkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fc3lzY3RsX252ZGltbV9wbWVtX3NldHVwX3QpOworCitz dHJ1Y3QgeGVuX3N5c2N0bF9udmRpbW1fb3AgeworICAgIHVpbnQzMl90IGNtZDsgLyogSU46IFhF Tl9TWVNDVExfTlZESU1NXyouICovCisgICAgdWludDMyX3QgcGFkOyAvKiBJTjogQWx3YXlzIHpl cm8uICovCisgICAgdW5pb24geworICAgICAgICB4ZW5fc3lzY3RsX252ZGltbV9wbWVtX3NldHVw X3Qgc2V0dXA7CisgICAgfSB1OworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxfbnZkaW1t X29wIHhlbl9zeXNjdGxfbnZkaW1tX29wX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5f c3lzY3RsX252ZGltbV9vcF90KTsKKwogc3RydWN0IHhlbl9zeXNjdGwgewogICAgIHVpbnQzMl90 IGNtZDsKICNkZWZpbmUgWEVOX1NZU0NUTF9yZWFkY29uc29sZSAgICAgICAgICAgICAgICAgICAg MQpAQCAtMTExNiw2ICsxMTQxLDcgQEAgc3RydWN0IHhlbl9zeXNjdGwgewogI2RlZmluZSBYRU5f U1lTQ1RMX2dldF9jcHVfbGV2ZWxsaW5nX2NhcHMgICAgICAgIDI1CiAjZGVmaW5lIFhFTl9TWVND VExfZ2V0X2NwdV9mZWF0dXJlc2V0ICAgICAgICAgICAgMjYKICNkZWZpbmUgWEVOX1NZU0NUTF9s aXZlcGF0Y2hfb3AgICAgICAgICAgICAgICAgICAyNworI2RlZmluZSBYRU5fU1lTQ1RMX252ZGlt bV9vcCAgICAgICAgICAgICAgICAgICAgIDI4CiAgICAgdWludDMyX3QgaW50ZXJmYWNlX3ZlcnNp b247IC8qIFhFTl9TWVNDVExfSU5URVJGQUNFX1ZFUlNJT04gKi8KICAgICB1bmlvbiB7CiAgICAg ICAgIHN0cnVjdCB4ZW5fc3lzY3RsX3JlYWRjb25zb2xlICAgICAgIHJlYWRjb25zb2xlOwpAQCAt MTE0NCw2ICsxMTcwLDcgQEAgc3RydWN0IHhlbl9zeXNjdGwgewogICAgICAgICBzdHJ1Y3QgeGVu X3N5c2N0bF9jcHVfbGV2ZWxsaW5nX2NhcHMgY3B1X2xldmVsbGluZ19jYXBzOwogICAgICAgICBz dHJ1Y3QgeGVuX3N5c2N0bF9jcHVfZmVhdHVyZXNldCAgICBjcHVfZmVhdHVyZXNldDsKICAgICAg ICAgc3RydWN0IHhlbl9zeXNjdGxfbGl2ZXBhdGNoX29wICAgICAgbGl2ZXBhdGNoOworICAgICAg ICBzdHJ1Y3QgeGVuX3N5c2N0bF9udmRpbW1fb3AgICAgICAgICBudmRpbW07CiAgICAgICAgIHVp bnQ4X3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZFsxMjhdOwogICAgIH0gdTsKIH07 CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vcG1lbS5oIGIveGVuL2luY2x1ZGUveGVuL3Bt ZW0uaAppbmRleCAxMTQ0ZTg2Zjk4Li45NWM4MjA3ZmY2IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVk ZS94ZW4vcG1lbS5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9wbWVtLmgKQEAgLTIzLDYgKzIzLDIw IEBACiAjaW5jbHVkZSA8eGVuL3R5cGVzLmg+CiAKIGludCBwbWVtX3JlZ2lzdGVyKHVuc2lnbmVk IGxvbmcgc21mbiwgdW5zaWduZWQgbG9uZyBlbWZuKTsKK2ludCBwbWVtX3NldHVwKHVuc2lnbmVk IGxvbmcgZGF0YV9zcGZuLCB1bnNpZ25lZCBsb25nIGRhdGFfZW1mbiwKKyAgICAgICAgICAgICAg IHVuc2lnbmVkIGxvbmcgbWdtdF9zbWZuLCB1bnNpZ25lZCBsb25nIG1nbXRfZW1mbik7CisKKyNp ZmRlZiBDT05GSUdfWDg2CitpbnQgcG1lbV9hcmNoX3NldHVwKHVuc2lnbmVkIGxvbmcgZGF0YV9z bWZuLCB1bnNpZ25lZCBsb25nIGRhdGFfZW1mbiwKKyAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgbG9uZyBtZ210X3NtZm4sIHVuc2lnbmVkIGxvbmcgbWdtdF9lbWZuKTsKKyNlbHNlIC8qICFD T05GSUdfWDg2ICovCitzdGF0aWMgaW5saW5lIGludAorcG1lbV9hcmNoX3NldHVwKHVuc2lnbmVk IGxvbmcgZGF0YV9zbWZuLCB1bnNpZ25lZCBsb25nIGRhdGFfZW1mbiwKKyAgICAgICAgICAgICAg ICB1bnNpZ25lZCBtZ210X3NtZm4sIHVuc2lnbmVkIGxvbmcgbWdtdF9lbWZuKQoreworICAgIHJl dHVybiAtRU5PU1lTOworfQorI2VuZGlmIC8qIENPTkZJR19YODYgKi8KIAogI2VuZGlmIC8qIENP TkZJR19QTUVNICovCiAjZW5kaWYgLyogX19YRU5fUE1FTV9IX18gKi8KZGlmZiAtLWdpdCBhL3hl bi94c20vZmxhc2svaG9va3MuYyBiL3hlbi94c20vZmxhc2svaG9va3MuYwppbmRleCA0YmFlZDM5 ODkwLi5lM2M3N2JiZTNmIDEwMDY0NAotLS0gYS94ZW4veHNtL2ZsYXNrL2hvb2tzLmMKKysrIGIv eGVuL3hzbS9mbGFzay9ob29rcy5jCkBAIC04MjYsNiArODI2LDEwIEBAIHN0YXRpYyBpbnQgZmxh c2tfc3lzY3RsKGludCBjbWQpCiAgICAgICAgIHJldHVybiBhdmNfY3VycmVudF9oYXNfcGVybShT RUNJTklUU0lEX1hFTiwgU0VDQ0xBU1NfWEVOMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFhFTjJfX0dDT1ZfT1AsIE5VTEwpOwogCisgICAgY2FzZSBYRU5fU1lTQ1RMX252 ZGltbV9vcDoKKyAgICAgICAgcmV0dXJuIGF2Y19jdXJyZW50X2hhc19wZXJtKFNFQ0lOSVRTSURf WEVOLCBTRUNDTEFTU19YRU4yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg WEVOMl9fTlZESU1NX09QLCBOVUxMKTsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBh dmNfdW5rbm93bl9wZXJtaXNzaW9uKCJzeXNjdGwiLCBjbWQpOwogICAgIH0KZGlmZiAtLWdpdCBh L3hlbi94c20vZmxhc2svcG9saWN5L2FjY2Vzc192ZWN0b3JzIGIveGVuL3hzbS9mbGFzay9wb2xp Y3kvYWNjZXNzX3ZlY3RvcnMKaW5kZXggMWY3ZWIzNWZjOC4uYThkZGQ3Y2E4NCAxMDA2NDQKLS0t IGEveGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMKKysrIGIveGVuL3hzbS9mbGFz ay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMKQEAgLTEwMSw2ICsxMDEsOCBAQCBjbGFzcyB4ZW4yCiAg ICAgbGl2ZXBhdGNoX29wCiAjIFhFTl9TWVNDVExfZ2Nvdl9vcAogICAgIGdjb3Zfb3AKKyMgWEVO X1NZU0NUTF9udmRpbW1fb3AKKyAgICBudmRpbW1fb3AKIH0KIAogIyBDbGFzc2VzIGRvbWFpbiBh bmQgZG9tYWluMiBjb25zaXN0IG9mIG9wZXJhdGlvbnMgdGhhdCBhIGRvbWFpbiBwZXJmb3JtcyBv bgotLSAKMi4xMi4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRw czovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==