From mboxrd@z Thu Jan 1 00:00:00 1970 From: vijay.kilari@gmail.com Subject: [RFC PATCH v2 12/25] ARM: NUMA: Parse CPU NUMA information Date: Tue, 28 Mar 2017 21:23:20 +0530 Message-ID: <1490716413-19796-13-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 RnJvbTogVmlqYXlhIEt1bWFyIEsgPFZpamF5YS5LdW1hckBjYXZpdW0uY29tPgoKUGFyc2UgQ1BV IG5vZGUgYW5kIGZldGNoIG51bWEtbm9kZS1pZCBpbmZvcm1hdGlvbi4KRm9yIGVhY2ggbm9kZS1p ZCBmb3VuZCwgdXBkYXRlIG5vZGVtYXNrX3QgbWFzay4KUmVmZXIgdG8gL0RvY3VtZW50YXRpb24v ZGV2aWNldHJlZS9iaW5kaW5ncy9udW1hLnR4dC4KClNpZ25lZC1vZmYtYnk6IFZpamF5YSBLdW1h ciBLIDxWaWpheWEuS3VtYXJAY2F2aXVtLmNvbT4KLS0tCiB4ZW4vYXJjaC9hcm0vTWFrZWZpbGUg ICAgICAgfCAgMSArCiB4ZW4vYXJjaC9hcm0vYm9vdGZkdC5jICAgICAgfCAxNiArKysrKysrKy0t CiB4ZW4vYXJjaC9hcm0vbnVtYS9NYWtlZmlsZSAgfCAgMiArKwogeGVuL2FyY2gvYXJtL251bWEv ZHRfbnVtYS5jIHwgNzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiB4ZW4vYXJjaC9hcm0vbnVtYS9udW1hLmMgICAgfCA1MCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogeGVuL2FyY2gvYXJtL3NldHVwLmMgICAgICAgIHwgIDQgKysrCiB4ZW4vaW5j bHVkZS9hc20tYXJtL251bWEuaCAgfCAxMCArKysrKy0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vc2V0 dXAuaCB8ICA0ICsrLQogOCBmaWxlcyBjaGFuZ2VkLCAxNjEgaW5zZXJ0aW9ucygrKSwgNCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vTWFrZWZpbGUgYi94ZW4vYXJjaC9h cm0vTWFrZWZpbGUKaW5kZXggMGNlOTRhOC4uZDEzYjc5ZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gv YXJtL01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL2FybS9NYWtlZmlsZQpAQCAtMyw2ICszLDcgQEAg c3ViZGlyLSQoQ09ORklHX0FSTV82NCkgKz0gYXJtNjQKIHN1YmRpci15ICs9IHBsYXRmb3Jtcwog c3ViZGlyLSQoQ09ORklHX0FSTV82NCkgKz0gZWZpCiBzdWJkaXItJChDT05GSUdfQUNQSSkgKz0g YWNwaQorc3ViZGlyLSQoQ09ORklHX05VTUEpICs9IG51bWEKIAogb2JqLSQoQ09ORklHX0hBU19B TFRFUk5BVElWRSkgKz0gYWx0ZXJuYXRpdmUubwogb2JqLXkgKz0gYm9vdGZkdC5pbml0Lm8KZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9ib290ZmR0LmMgYi94ZW4vYXJjaC9hcm0vYm9vdGZkdC5j CmluZGV4IGVhMTg4YTAuLjFmODc2ZjAgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9ib290ZmR0 LmMKKysrIGIveGVuL2FyY2gvYXJtL2Jvb3RmZHQuYwpAQCAtNjIsOCArNjIsMjAgQEAgc3RhdGlj IHZvaWQgX19pbml0IGRldmljZV90cmVlX2dldF9yZWcoY29uc3QgX19iZTMyICoqY2VsbCwgdTMy IGFkZHJlc3NfY2VsbHMsCiAgICAgKnNpemUgPSBkdF9uZXh0X2NlbGwoc2l6ZV9jZWxscywgY2Vs bCk7CiB9CiAKLXN0YXRpYyB1MzIgX19pbml0IGRldmljZV90cmVlX2dldF91MzIoY29uc3Qgdm9p ZCAqZmR0LCBpbnQgbm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciAqcHJvcF9uYW1lLCB1MzIgZGZsdCkKK2Jvb2xfdCBfX2luaXQgZGV2aWNlX3Ry ZWVfdHlwZV9tYXRjaGVzKGNvbnN0IHZvaWQgKmZkdCwgaW50IG5vZGUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptYXRjaCkKK3sKKyAgICBjb25z dCB2b2lkICpwcm9wOworCisgICAgcHJvcCA9IGZkdF9nZXRwcm9wKGZkdCwgbm9kZSwgImRldmlj ZV90eXBlIiwgTlVMTCk7CisgICAgaWYgKCBwcm9wID09IE5VTEwgKQorICAgICAgICByZXR1cm4g MDsKKworICAgIHJldHVybiBzdHJjbXAocHJvcCwgbWF0Y2gpID09IDAgPyAxIDogMDsKK30KKwor dTMyIF9faW5pdCBkZXZpY2VfdHJlZV9nZXRfdTMyKGNvbnN0IHZvaWQgKmZkdCwgaW50IG5vZGUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHJvcF9uYW1lLCB1 MzIgZGZsdCkKIHsKICAgICBjb25zdCBzdHJ1Y3QgZmR0X3Byb3BlcnR5ICpwcm9wOwogCmRpZmYg LS1naXQgYS94ZW4vYXJjaC9hcm0vbnVtYS9NYWtlZmlsZSBiL3hlbi9hcmNoL2FybS9udW1hL01h a2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhZjNhZmYKLS0tIC9k ZXYvbnVsbAorKysgYi94ZW4vYXJjaC9hcm0vbnVtYS9NYWtlZmlsZQpAQCAtMCwwICsxLDIgQEAK K29iai15ICs9IGR0X251bWEubworb2JqLXkgKz0gbnVtYS5vCmRpZmYgLS1naXQgYS94ZW4vYXJj aC9hcm0vbnVtYS9kdF9udW1hLmMgYi94ZW4vYXJjaC9hcm0vbnVtYS9kdF9udW1hLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZjNmVmYgotLS0gL2Rldi9udWxsCisrKyBi L3hlbi9hcmNoL2FybS9udW1hL2R0X251bWEuYwpAQCAtMCwwICsxLDc4IEBACisvKgorICogT0Yg TlVNQSBQYXJzaW5nIHN1cHBvcnQuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE1IC0gMjAxNiBD YXZpdW0gSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgPHhl bi9saWJmZHQvbGliZmR0Lmg+CisjaW5jbHVkZSA8eGVuL21tLmg+CisjaW5jbHVkZSA8eGVuL25v ZGVtYXNrLmg+CisjaW5jbHVkZSA8YXNtL21tLmg+CisjaW5jbHVkZSA8eGVuL251bWEuaD4KKyNp bmNsdWRlIDx4ZW4vZGV2aWNlX3RyZWUuaD4KKyNpbmNsdWRlIDxhc20vc2V0dXAuaD4KKworZXh0 ZXJuIG5vZGVtYXNrX3QgcHJvY2Vzc29yX25vZGVzX3BhcnNlZDsKKworLyoKKyAqIEV2ZW4gdGhv dWdoIHdlIGNvbm5lY3QgY3B1cyB0byBudW1hIGRvbWFpbnMgbGF0ZXIgaW4gU01QCisgKiBpbml0 LCB3ZSBuZWVkIHRvIGtub3cgdGhlIG5vZGUgaWRzIG5vdyBmb3IgYWxsIGNwdXMuCisgKi8KK3N0 YXRpYyBpbnQgX19pbml0IGR0X251bWFfcHJvY2Vzc19jcHVfbm9kZShjb25zdCB2b2lkICpmZHQs IGludCBub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDMyX3QgYWRkcmVzc19jZWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50MzJfdCBzaXplX2NlbGxzKQoreworICAgIHVpbnQzMl90IG5pZDsK KworICAgIG5pZCA9IGRldmljZV90cmVlX2dldF91MzIoZmR0LCBub2RlLCAibnVtYS1ub2RlLWlk IiwgTUFYX05VTU5PREVTKTsKKworICAgIGlmICggbmlkID49IE1BWF9OVU1OT0RFUyApCisgICAg ICAgIHByaW50ayhYRU5MT0dfV0FSTklORyAiTlVNQTogTm9kZSBpZCAldSBleGNlZWRzIG1heGlt dW0gdmFsdWVcbiIsIG5pZCk7CisgICAgZWxzZQorICAgICAgICBub2RlX3NldChuaWQsIHByb2Nl c3Nvcl9ub2Rlc19wYXJzZWQpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgX19p bml0IGR0X251bWFfc2Nhbl9jcHVfbm9kZShjb25zdCB2b2lkICpmZHQsIGludCBub2RlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGlu dCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf dCBhZGRyZXNzX2NlbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQzMl90IHNpemVfY2VsbHMsIHZvaWQgKmRhdGEpCit7CisgICAgaWYgKCBkZXZpY2VfdHJl ZV90eXBlX21hdGNoZXMoZmR0LCBub2RlLCAiY3B1IikgKQorICAgICAgICByZXR1cm4gZHRfbnVt YV9wcm9jZXNzX2NwdV9ub2RlKGZkdCwgbm9kZSwgbmFtZSwgYWRkcmVzc19jZWxscywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX2NlbGxzKTsKKworICAgIHJl dHVybiAwOworfQorCitpbnQgX19pbml0IGR0X251bWFfaW5pdCh2b2lkKQoreworICAgIGludCBy ZXQ7CisKKyAgICByZXQgPSBkZXZpY2VfdHJlZV9mb3JfZWFjaF9ub2RlKCh2b2lkICopZGV2aWNl X3RyZWVfZmxhdHRlbmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHRf bnVtYV9zY2FuX2NwdV9ub2RlLCBOVUxMKTsKKyAgICByZXR1cm4gcmV0OworfQorCisvKgorICog TG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICog Yy1iYXNpYy1vZmZzZXQ6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICov CmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vbnVtYS9udW1hLmMgYi94ZW4vYXJjaC9hcm0vbnVt YS9udW1hLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFjN2MzNQotLS0g L2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL2FybS9udW1hL251bWEuYwpAQCAtMCwwICsxLDUwIEBA CisvKgorICogQVJNIE5VTUEgSW1wbGVtZW50YXRpb24KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIw MTYgLSBDYXZpdW0gSW5jLgorICogVmlqYXlhIEt1bWFyIEsgPHZpamF5YS5rdW1hckBjYXZpdW0u Y29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRp dGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSwgdmVyc2lvbiAyLCBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorICovCisKKyNpbmNsdWRlIDx4ZW4vaW5pdC5oPgorI2luY2x1ZGUgPHhl bi9jdHlwZS5oPgorI2luY2x1ZGUgPHhlbi9tbS5oPgorI2luY2x1ZGUgPHhlbi9ub2RlbWFzay5o PgorI2luY2x1ZGUgPGFzbS9tbS5oPgorI2luY2x1ZGUgPHhlbi9udW1hLmg+CisjaW5jbHVkZSA8 YXNtL2FjcGkuaD4KKworZXh0ZXJuIG5vZGVtYXNrX3QgcHJvY2Vzc29yX25vZGVzX3BhcnNlZDsK Kwordm9pZCBfX2luaXQgbnVtYV9pbml0KHZvaWQpCit7CisgICAgaW50IHJldCA9IDA7CisKKyAg ICBub2Rlc19jbGVhcihwcm9jZXNzb3Jfbm9kZXNfcGFyc2VkKTsKKyAgICBpZiAoIGlzX251bWFf b2ZmKCkgKQorICAgICAgICBnb3RvIG5vX251bWE7CisKKyAgICByZXQgPSBkdF9udW1hX2luaXQo KTsKKyAgICBpZiAoIHJldCApCisgICAgICAgIHByaW50ayhYRU5MT0dfV0FSTklORyAiRFQgTlVN QSBpbml0IGZhaWxlZFxuIik7CisKK25vX251bWE6CisgICAgcmV0dXJuOworfQorCisvKgorICog TG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICog Yy1iYXNpYy1vZmZzZXQ6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICov CmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vc2V0dXAuYyBiL3hlbi9hcmNoL2FybS9zZXR1cC5j CmluZGV4IDkyYTJkZTYuLmVkNThmMGUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9zZXR1cC5j CisrKyBiL3hlbi9hcmNoL2FybS9zZXR1cC5jCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8 eGVuL2xpYmZkdC9saWJmZHQuaD4KICNpbmNsdWRlIDx4ZW4vYWNwaS5oPgogI2luY2x1ZGUgPGFz bS9hbHRlcm5hdGl2ZS5oPgorI2luY2x1ZGUgPHhlbi9udW1hLmg+CiAjaW5jbHVkZSA8YXNtL3Bh Z2UuaD4KICNpbmNsdWRlIDxhc20vY3VycmVudC5oPgogI2luY2x1ZGUgPGFzbS9zZXR1cC5oPgpA QCAtNzU4LDYgKzc1OSw5IEBAIHZvaWQgX19pbml0IHN0YXJ0X3hlbih1bnNpZ25lZCBsb25nIGJv b3RfcGh5c19vZmZzZXQsCiAgICAgZWxzZQogICAgICAgICBwcmludGsoIkJvb3RpbmcgdXNpbmcg QUNQSVxuIik7CiAKKyAgICAvKiBudW1hX2luaXQgcGFyc2VzIGFjcGkgdGFibGVzLiBTbyBjYWxs IGFmdGVyIGFjcGkgaW5pdCAqLworICAgIG51bWFfaW5pdCgpOworCiAgICAgZW5kX2Jvb3RfYWxs b2NhdG9yKCk7CiAKICAgICB2bV9pbml0KCk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20t YXJtL251bWEuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vbnVtYS5oCmluZGV4IDkyNGJmYzAuLmU1 MGVlMTkgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vbnVtYS5oCisrKyBiL3hlbi9p bmNsdWRlL2FzbS1hcm0vbnVtYS5oCkBAIC02LDcgKzYsMTUgQEAgdHlwZWRlZiB1aW50OF90IG5v ZGVpZF90OwogLyogTGltaXQgbnVtYmVyIG9mIE5VTUEgbm9kZXMgc3VwcG9ydGVkIHRvIDQgKi8K ICNkZWZpbmUgTk9ERVNfU0hJRlQgMgogCi0jaWZuZGVmIENPTkZJR19OVU1BCisjaWZkZWYgQ09O RklHX05VTUEKK2V4dGVybiB2b2lkIG51bWFfaW5pdCh2b2lkKTsKK2V4dGVybiBpbnQgZHRfbnVt YV9pbml0KHZvaWQpOworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZCBudW1hX2luaXQodm9pZCkK K3sKKyAgICByZXR1cm47Cit9CisKIC8qIEZha2Ugb25lIG5vZGUgZm9yIG5vdy4gU2VlIGFsc28g bm9kZV9vbmxpbmVfbWFwLiAqLwogI2RlZmluZSBjcHVfdG9fbm9kZShjcHUpIDAKICNkZWZpbmUg bm9kZV90b19jcHVtYXNrKG5vZGUpICAgKGNwdV9vbmxpbmVfbWFwKQpkaWZmIC0tZ2l0IGEveGVu L2luY2x1ZGUvYXNtLWFybS9zZXR1cC5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9zZXR1cC5oCmlu ZGV4IDdjNzYxODUuLmIxMDIyYTMgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vc2V0 dXAuaAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3NldHVwLmgKQEAgLTc5LDcgKzc5LDkgQEAg c3RydWN0IGJvb3Rtb2R1bGUgKmFkZF9ib290X21vZHVsZShib290bW9kdWxlX2tpbmQga2luZCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY21kbGluZSk7 CiBzdHJ1Y3QgYm9vdG1vZHVsZSAqYm9vdF9tb2R1bGVfZmluZF9ieV9raW5kKGJvb3Rtb2R1bGVf a2luZCBraW5kKTsKIGNvbnN0IGNoYXIgKiBfX2luaXQgYm9vdF9tb2R1bGVfa2luZF9hc19zdHJp bmcoYm9vdG1vZHVsZV9raW5kIGtpbmQpOwotCit1MzIgZGV2aWNlX3RyZWVfZ2V0X3UzMihjb25z dCB2b2lkICpmZHQsIGludCBub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqcHJvcF9uYW1lLCB1MzIgZGZsdCk7Citib29sX3QgZGV2aWNlX3RyZWVfdHlwZV9tYXRjaGVz KGNvbnN0IHZvaWQgKmZkdCwgaW50IG5vZGUsIGNvbnN0IGNoYXIgKm1hdGNoKTsKICNlbmRpZgog LyoKICAqIExvY2FsIHZhcmlhYmxlczoKLS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==