From mboxrd@z Thu Jan 1 00:00:00 1970 From: vijay.kilari@gmail.com Subject: [RFC PATCH v2 14/25] ARM: NUMA: Parse NUMA distance information Date: Tue, 28 Mar 2017 21:23:22 +0530 Message-ID: <1490716413-19796-15-git-send-email-vijay.kilari@gmail.com> References: <1490716413-19796-1-git-send-email-vijay.kilari@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1490716413-19796-1-git-send-email-vijay.kilari@gmail.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: sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, julien.grall@arm.com, jbeulich@suse.com, Vijaya Kumar K List-Id: xen-devel@lists.xenproject.org RnJvbTogVmlqYXlhIEt1bWFyIEsgPFZpamF5YS5LdW1hckBjYXZpdW0uY29tPgoKUGFyc2UgZGlz dGFuY2UtbWF0cml4IGFuZCBmZXRjaCBub2RlIGRpc3RhbmNlIGluZm9ybWF0aW9uLgpTdG9yZSBk aXN0YW5jZSBpbmZvcm1hdGlvbiBpbiBub2RlX2Rpc3RhbmNlW10uCgpSZWdpc3RlciBkdF9ub2Rl X2Rpc3RhbmNlKCkgZnVuY3Rpb24gcG9pbnRlciB3aXRoCnRoZSBBUk0gbnVtYSBjb2RlLiBUaGlz IGFwcHJvYWNoIGNhbiBiZSBsYXRlciB1c2VkIGZvcgpBQ1BJLgoKU2lnbmVkLW9mZi1ieTogVmlq YXlhIEt1bWFyIEsgPFZpamF5YS5LdW1hckBjYXZpdW0uY29tPgotLS0KIHhlbi9hcmNoL2FybS9i b290ZmR0LmMgICAgICB8ICAgNCArLQogeGVuL2FyY2gvYXJtL251bWEvZHRfbnVtYS5jIHwgMTMz ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC9h cm0vbnVtYS9udW1hLmMgICAgfCAgMjEgKysrKysrKwogeGVuL2luY2x1ZGUvYXNtLWFybS9udW1h LmggIHwgICAzICsKIHhlbi9pbmNsdWRlL2FzbS1hcm0vc2V0dXAuaCB8ICAgMiArCiA1IGZpbGVz IGNoYW5nZWQsIDE2MSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL2FybS9ib290ZmR0LmMgYi94ZW4vYXJjaC9hcm0vYm9vdGZkdC5jCmluZGV4IDk5 Mzc2MGEuLmM3MjMwMGMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9ib290ZmR0LmMKKysrIGIv eGVuL2FyY2gvYXJtL2Jvb3RmZHQuYwpAQCAtMTcsOCArMTcsOCBAQAogI2luY2x1ZGUgPHhzbS94 c20uaD4KICNpbmNsdWRlIDxhc20vc2V0dXAuaD4KIAotc3RhdGljIGJvb2xfdCBfX2luaXQgZGV2 aWNlX3RyZWVfbm9kZV9tYXRjaGVzKGNvbnN0IHZvaWQgKmZkdCwgaW50IG5vZGUsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbWF0Y2gp Citib29sX3QgX19pbml0IGRldmljZV90cmVlX25vZGVfbWF0Y2hlcyhjb25zdCB2b2lkICpmZHQs IGludCBub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciAqbWF0Y2gpCiB7CiAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICBzaXplX3QgbWF0Y2hf bGVuOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL251bWEvZHRfbnVtYS5jIGIveGVuL2FyY2gv YXJtL251bWEvZHRfbnVtYS5jCmluZGV4IDU5M2M2NDcuLmMyZGNmYTEgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL2FybS9udW1hL2R0X251bWEuYworKysgYi94ZW4vYXJjaC9hcm0vbnVtYS9kdF9udW1h LmMKQEAgLTI3LDYgKzI3LDQ4IEBACiBleHRlcm4gbm9kZW1hc2tfdCBwcm9jZXNzb3Jfbm9kZXNf cGFyc2VkOwogZXh0ZXJuIG5vZGVtYXNrX3QgbWVtb3J5X25vZGVzX3BhcnNlZDsKIAorc3RhdGlj IHVpbnQ4X3Qgbm9kZV9kaXN0YW5jZVtNQVhfTlVNTk9ERVNdW01BWF9OVU1OT0RFU107CisKK3N0 YXRpYyB1aW50OF90IGR0X25vZGVfZGlzdGFuY2Uobm9kZWlkX3Qgbm9kZWEsIG5vZGVpZF90IG5v ZGViKQoreworICAgIGlmICggbm9kZWEgPj0gTUFYX05VTU5PREVTIHx8IG5vZGViID49IE1BWF9O VU1OT0RFUyApCisgICAgICAgIHJldHVybiBub2RlYSA9PSBub2RlYiA/IExPQ0FMX0RJU1RBTkNF IDogUkVNT1RFX0RJU1RBTkNFOworCisgICAgcmV0dXJuIG5vZGVfZGlzdGFuY2Vbbm9kZWFdW25v ZGViXTsKK30KKworc3RhdGljIGludCBkdF9udW1hX3NldF9kaXN0YW5jZSh1aW50MzJfdCBub2Rl YSwgdWludDMyX3Qgbm9kZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90IGRpc3RhbmNlKQoreworICAgLyogbm9kZV9kaXN0YW5jZSBpcyB1aW50OF90LiBFbnN1cmUg ZGlzdGFuY2UgaXMgbGVzcyB0aGFuIDI1NSAqLworICAgaWYgKCBub2RlYSA+PSBNQVhfTlVNTk9E RVMgfHwgbm9kZWIgPj0gTUFYX05VTU5PREVTIHx8IGRpc3RhbmNlID4gMjU1ICkKKyAgICAgICBy ZXR1cm4gLUVJTlZBTDsKKworICAgbm9kZV9kaXN0YW5jZVtub2RlYV1bbm9kZWJdID0gZGlzdGFu Y2U7CisKKyAgIHJldHVybiAwOworfQorCit2b2lkIGluaXRfZHRfbnVtYV9kaXN0YW5jZSh2b2lk KQoreworICAgIGludCBpLCBqOworCisgICAgZm9yICggaSA9IDA7IGkgPCBNQVhfTlVNTk9ERVM7 IGkrKyApCisgICAgeworICAgICAgICBmb3IgKCBqID0gMDsgaiA8IE1BWF9OVU1OT0RFUzsgaisr ICkKKyAgICAgICAgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIEluaXRpYWxpemUg ZGlzdGFuY2UgMTAgZm9yIGxvY2FsIGRpc3RhbmNlIGFuZAorICAgICAgICAgICAgICogMjAgZm9y IHJlbW90ZSBkaXN0YW5jZS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKCBpICA9 PSBqICkKKyAgICAgICAgICAgICAgICBub2RlX2Rpc3RhbmNlW2ldW2pdID0gTE9DQUxfRElTVEFO Q0U7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbm9kZV9kaXN0YW5jZVtpXVtq XSA9IFJFTU9URV9ESVNUQU5DRTsKKyAgICAgICAgfQorICAgIH0KK30KKwogLyoKICAqIEV2ZW4g dGhvdWdoIHdlIGNvbm5lY3QgY3B1cyB0byBudW1hIGRvbWFpbnMgbGF0ZXIgaW4gU01QCiAgKiBp bml0LCB3ZSBuZWVkIHRvIGtub3cgdGhlIG5vZGUgaWRzIG5vdyBmb3IgYWxsIGNwdXMuCkBAIC00 OCw2ICs5MCw3NiBAQCBzdGF0aWMgaW50IF9faW5pdCBkdF9udW1hX3Byb2Nlc3NfY3B1X25vZGUo Y29uc3Qgdm9pZCAqZmR0LCBpbnQgbm9kZSwKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGlu dCBfX2luaXQgZHRfbnVtYV9wYXJzZV9kaXN0YW5jZV9tYXAoY29uc3Qgdm9pZCAqZmR0LCBpbnQg bm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1aW50MzJfdCBhZGRyZXNzX2NlbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDMyX3Qgc2l6ZV9jZWxscykKK3sKKyAgICBjb25zdCBzdHJ1Y3Qg ZmR0X3Byb3BlcnR5ICpwcm9wOworICAgIGNvbnN0IF9fYmUzMiAqbWF0cml4OworICAgIGludCBl bnRyeV9jb3VudCwgbGVuLCBpOworCisgICAgcHJpbnRrKFhFTkxPR19JTkZPICJOVU1BOiBwYXJz aW5nIG51bWEtZGlzdGFuY2UtbWFwXG4iKTsKKworICAgIHByb3AgPSBmZHRfZ2V0X3Byb3BlcnR5 KGZkdCwgbm9kZSwgImRpc3RhbmNlLW1hdHJpeCIsICZsZW4pOworICAgIGlmICggIXByb3AgKQor ICAgIHsKKyAgICAgICAgcHJpbnRrKFhFTkxPR19XQVJOSU5HCisgICAgICAgICAgICAgICAiTlVN QTogTm8gZGlzdGFuY2UtbWF0cml4IHByb3BlcnR5IGluIGRpc3RhbmNlLW1hcFxuIik7CisKKyAg ICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgaWYgKCBsZW4gJSBzaXplb2YodWlu dDMyX3QpICE9IDAgKQorICAgIHsKKyAgICAgICAgIHByaW50ayhYRU5MT0dfV0FSTklORworICAg ICAgICAgICAgICAgICJkaXN0YW5jZS1tYXRyaXggaW4gbm9kZSBpcyBub3QgYSBtdWx0aXBsZSBv ZiB1MzJcbiIpOworCisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIGVudHJ5 X2NvdW50ID0gbGVuIC8gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICBpZiAoIGVudHJ5X2NvdW50IDw9 IDAgKQorICAgIHsKKyAgICAgICAgcHJpbnRrKFhFTkxPR19XQVJOSU5HICJOVU1BOiBJbnZhbGlk IGRpc3RhbmNlLW1hdHJpeFxuIik7CisKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQor CisgICAgbWF0cml4ID0gKGNvbnN0IF9fYmUzMiAqKXByb3AtPmRhdGE7CisgICAgZm9yICggaSA9 IDA7IGkgKyAyIDwgZW50cnlfY291bnQ7IGkgKz0gMyApCisgICAgeworICAgICAgICB1aW50MzJf dCBub2RlYSwgbm9kZWIsIGRpc3RhbmNlOworCisgICAgICAgIG5vZGVhID0gZHRfcmVhZF9udW1i ZXIobWF0cml4LCAxKTsKKyAgICAgICAgbWF0cml4Kys7CisgICAgICAgIG5vZGViID0gZHRfcmVh ZF9udW1iZXIobWF0cml4LCAxKTsKKyAgICAgICAgbWF0cml4Kys7CisgICAgICAgIGRpc3RhbmNl ID0gZHRfcmVhZF9udW1iZXIobWF0cml4LCAxKTsKKyAgICAgICAgbWF0cml4Kys7CisKKyAgICAg ICAgaWYgKCBkdF9udW1hX3NldF9kaXN0YW5jZShub2RlYSwgbm9kZWIsIGRpc3RhbmNlKSApCisg ICAgICAgIHsKKyAgICAgICAgICAgIHByaW50ayhYRU5MT0dfV0FSTklORworICAgICAgICAgICAg ICAgICAgICJOVU1BOiBub2RlLWlkIG91dCBvZiByYW5nZSBpbiBkaXN0YW5jZSBtYXRyaXggZm9y IFtub2RlJWQgLT4gbm9kZSVkXVxuIiwKKyAgICAgICAgICAgICAgICAgICBub2RlYSwgbm9kZWIp OworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICAgICAgfQorICAgICAgICBwcmlu dGsoWEVOTE9HX0lORk8gIk5VTUE6IGRpc3RhbmNlW25vZGUlZCAtPiBub2RlJWRdID0gJWRcbiIs CisgICAgICAgICAgICAgICBub2RlYSwgbm9kZWIsIGRpc3RhbmNlKTsKKworICAgICAgICAvKgor ICAgICAgICAgKiBTZXQgZGVmYXVsdCBkaXN0YW5jZSBvZiBub2RlIEItPkEgc2FtZSBhcyBBLT5C LgorICAgICAgICAgKiBObyBuZWVkIHRvIGNoZWNrIGZvciByZXR1cm4gdmFsdWUgb2YgbnVtYV9z ZXRfZGlzdGFuY2UuCisgICAgICAgICAqLworICAgICAgICBpZiAoIG5vZGViID4gbm9kZWEgKQor ICAgICAgICAgICAgZHRfbnVtYV9zZXRfZGlzdGFuY2Uobm9kZWIsIG5vZGVhLCBkaXN0YW5jZSk7 CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgX19pbml0IGR0X251bWFf c2Nhbl9jcHVfbm9kZShjb25zdCB2b2lkICpmZHQsIGludCBub2RlLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGludCBkZXB0aCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyZXNzX2Nl bGxzLApAQCAtOTIsMTIgKzIwNCwzMyBAQCB2b2lkIF9faW5pdCBkdF9udW1hX3Byb2Nlc3NfbWVt b3J5X25vZGUodWludDMyX3QgbmlkLCBwYWRkcl90IHN0YXJ0LAogICAgIHJldHVybjsKIH0KIAor c3RhdGljIGludCBfX2luaXQgZHRfbnVtYV9zY2FuX2Rpc3RhbmNlX25vZGUoY29uc3Qgdm9pZCAq ZmR0LCBpbnQgbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGNoYXIgKm5hbWUsIGludCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHJlc3NfY2VsbHMsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzaXplX2NlbGxzLCB2 b2lkICpkYXRhKQoreworICAgIGlmICggZGV2aWNlX3RyZWVfbm9kZV9tYXRjaGVzKGZkdCwgbm9k ZSwgIm51bWEtZGlzdGFuY2UtbWFwLXYxIikgKQorICAgICAgICByZXR1cm4gZHRfbnVtYV9wYXJz ZV9kaXN0YW5jZV9tYXAoZmR0LCBub2RlLCBuYW1lLCBhZGRyZXNzX2NlbGxzLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV9jZWxscyk7CisKKyAgICByZXR1 cm4gMDsKK30KKwogaW50IF9faW5pdCBkdF9udW1hX2luaXQodm9pZCkKIHsKICAgICBpbnQgcmV0 OwogCiAgICAgcmV0ID0gZGV2aWNlX3RyZWVfZm9yX2VhY2hfbm9kZSgodm9pZCAqKWRldmljZV90 cmVlX2ZsYXR0ZW5lZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR0X251 bWFfc2Nhbl9jcHVfbm9kZSwgTlVMTCk7CisgICAgaWYgKCByZXQgKQorICAgICAgICByZXR1cm4g cmV0OworCisgICAgcmV0ID0gZGV2aWNlX3RyZWVfZm9yX2VhY2hfbm9kZSgodm9pZCAqKWRldmlj ZV90cmVlX2ZsYXR0ZW5lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR0 X251bWFfc2Nhbl9kaXN0YW5jZV9ub2RlLCBOVUxMKTsKKworICAgIGlmICggIXJldCApCisgICAg ICAgIHJlZ2lzdGVyX25vZGVfZGlzdGFuY2UoJmR0X25vZGVfZGlzdGFuY2UpOworCiAgICAgcmV0 dXJuIHJldDsKIH0KIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL251bWEvbnVtYS5jIGIveGVu L2FyY2gvYXJtL251bWEvbnVtYS5jCmluZGV4IGIzMzM0NTMuLjBlZTg5ZGEgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL2FybS9udW1hL251bWEuYworKysgYi94ZW4vYXJjaC9hcm0vbnVtYS9udW1hLmMK QEAgLTIxLDEzICsyMSwzMyBAQAogI2luY2x1ZGUgPGFzbS9tbS5oPgogI2luY2x1ZGUgPHhlbi9u dW1hLmg+CiAjaW5jbHVkZSA8YXNtL2FjcGkuaD4KKyNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KKwor c3RhdGljIHVpbnQ4X3QgKCpub2RlX2Rpc3RhbmNlX2ZuKShub2RlaWRfdCBhLCBub2RlaWRfdCBi KTsKIAogZXh0ZXJuIG5vZGVtYXNrX3QgcHJvY2Vzc29yX25vZGVzX3BhcnNlZDsKIHN0YXRpYyBi b29sX3QgZHRfbnVtYSA9IDE7CiAKK3VpbnQ4X3QgX19ub2RlX2Rpc3RhbmNlKG5vZGVpZF90IGEs IG5vZGVpZF90IGIpCit7CisgICAgaWYgKCBub2RlX2Rpc3RhbmNlX2ZuICE9IE5VTEwpOworICAg ICAgICByZXR1cm4gbm9kZV9kaXN0YW5jZV9mbihhLCBiKTsKKworICAgIHJldHVybiBhID09IGIg PyBMT0NBTF9ESVNUQU5DRSA6IFJFTU9URV9ESVNUQU5DRTsKK30KKworRVhQT1JUX1NZTUJPTChf X25vZGVfZGlzdGFuY2UpOworCit2b2lkIHJlZ2lzdGVyX25vZGVfZGlzdGFuY2UodWludDhfdCAo Zm4pKG5vZGVpZF90IGEsIG5vZGVpZF90IGIpKQoreworICAgIG5vZGVfZGlzdGFuY2VfZm4gPSBm bjsKK30KKwogdm9pZCBudW1hX2ZhaWxlZCh2b2lkKQogewogICAgIGR0X251bWEgPSAwOworICAg IGluaXRfZHRfbnVtYV9kaXN0YW5jZSgpOworICAgIG5vZGVfZGlzdGFuY2VfZm4gPSBOVUxMOwog fQogCiB2b2lkIF9faW5pdCBudW1hX2luaXQodm9pZCkKQEAgLTM1LDYgKzU1LDcgQEAgdm9pZCBf X2luaXQgbnVtYV9pbml0KHZvaWQpCiAgICAgaW50IHJldCA9IDA7CiAKICAgICBub2Rlc19jbGVh cihwcm9jZXNzb3Jfbm9kZXNfcGFyc2VkKTsKKyAgICBpbml0X2R0X251bWFfZGlzdGFuY2UoKTsK ICAgICBpZiAoIGlzX251bWFfb2ZmKCkgKQogICAgICAgICBnb3RvIG5vX251bWE7CiAKZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vbnVtYS5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9u dW1hLmgKaW5kZXggOTYyYTIxNC4uYzM5MGEwZSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNt LWFybS9udW1hLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9udW1hLmgKQEAgLTgsNiArOCw5 IEBAIHR5cGVkZWYgdWludDhfdCBub2RlaWRfdDsKIAogZXh0ZXJuIHZvaWQgZHRfbnVtYV9wcm9j ZXNzX21lbW9yeV9ub2RlKHVpbnQzMl90IG5pZCxwYWRkcl90IHN0YXJ0LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX3Qgc2l6ZSk7CitleHRlcm4gdm9pZCBy ZWdpc3Rlcl9ub2RlX2Rpc3RhbmNlKHVpbnQ4X3QgKGZuKShub2RlaWRfdCBhLCBub2RlaWRfdCBi KSk7CitleHRlcm4gdm9pZCBpbml0X2R0X251bWFfZGlzdGFuY2Uodm9pZCk7CitleHRlcm4gdWlu dDhfdCBfX25vZGVfZGlzdGFuY2Uobm9kZWlkX3QgYSwgbm9kZWlkX3QgYik7CiAjaWZkZWYgQ09O RklHX05VTUEKIGV4dGVybiB2b2lkIG51bWFfaW5pdCh2b2lkKTsKIGV4dGVybiBpbnQgZHRfbnVt YV9pbml0KHZvaWQpOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9zZXR1cC5oIGIv eGVuL2luY2x1ZGUvYXNtLWFybS9zZXR1cC5oCmluZGV4IGIxMDIyYTMuLjg3MTM2NTcgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vc2V0dXAuaAorKysgYi94ZW4vaW5jbHVkZS9hc20t YXJtL3NldHVwLmgKQEAgLTgyLDYgKzgyLDggQEAgY29uc3QgY2hhciAqIF9faW5pdCBib290X21v ZHVsZV9raW5kX2FzX3N0cmluZyhib290bW9kdWxlX2tpbmQga2luZCk7CiB1MzIgZGV2aWNlX3Ry ZWVfZ2V0X3UzMihjb25zdCB2b2lkICpmZHQsIGludCBub2RlLAogICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgY2hhciAqcHJvcF9uYW1lLCB1MzIgZGZsdCk7CiBib29sX3QgZGV2aWNlX3Ry ZWVfdHlwZV9tYXRjaGVzKGNvbnN0IHZvaWQgKmZkdCwgaW50IG5vZGUsIGNvbnN0IGNoYXIgKm1h dGNoKTsKK2Jvb2xfdCBfX2luaXQgZGV2aWNlX3RyZWVfbm9kZV9tYXRjaGVzKGNvbnN0IHZvaWQg KmZkdCwgaW50IG5vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICptYXRjaCk7CiAjZW5kaWYKIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6Ci0tIAoy LjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0 cy54ZW4ub3JnL3hlbi1kZXZlbAo=