From mboxrd@z Thu Jan 1 00:00:00 1970 From: vijay.kilari@gmail.com Subject: [RFC PATCH v2 22/25] ARM: NUMA: Extract proximity from SRAT table Date: Tue, 28 Mar 2017 21:23:30 +0530 Message-ID: <1490716413-19796-23-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 RnJvbTogVmlqYXlhIEt1bWFyIEsgPFZpamF5YS5LdW1hckBjYXZpdW0uY29tPgoKUmVnaXN0ZXIg U1JBVCBlbnRyeSBoYW5kbGVyIGZvciB0eXBlCkFDUElfU1JBVF9UWVBFX0dJQ0NfQUZGSU5JVFkg dG8gcGFyc2UgU1JBVCB0YWJsZQphbmQgZXh0cmFjdCBwcm94aW1pdHkgZm9yIGFsbCBDUFUgSURz LgoKU2lnbmVkLW9mZi1ieTogVmlqYXlhIEt1bWFyIDxWaWpheWEuS3VtYXJAY2F2aXVtLmNvbT4K LS0tCiB4ZW4vYXJjaC9hcm0vYWNwaS9ib290LmMgICAgICB8ICAgMiArCiB4ZW4vYXJjaC9hcm0v bnVtYS9hY3BpX251bWEuYyB8IDEyNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0KIHhlbi9kcml2ZXJzL2FjcGkvbnVtYS5jICAgICAgIHwgIDE1ICsrKysrCiB4ZW4v aW5jbHVkZS9hY3BpL2FjdGJsMS5oICAgICB8ICAxNyArKysrKy0KIHhlbi9pbmNsdWRlL2FzbS1h cm0vbnVtYS5oICAgIHwgICA5ICsrKwogeGVuL2luY2x1ZGUveGVuL251bWEuaCAgICAgICAgfCAg IDQgKysKIDYgZmlsZXMgY2hhbmdlZCwgMTcxIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2FjcGkvYm9vdC5jIGIveGVuL2FyY2gvYXJtL2Fj cGkvYm9vdC5jCmluZGV4IDg4OTIwOGEuLjgzNWM0NGUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2Fy bS9hY3BpL2Jvb3QuYworKysgYi94ZW4vYXJjaC9hcm0vYWNwaS9ib290LmMKQEAgLTMxLDYgKzMx LDcgQEAKICNpbmNsdWRlIDxhY3BpL2FjdGFibGVzLmg+CiAjaW5jbHVkZSA8eGVuL21tLmg+CiAj aW5jbHVkZSA8eGVuL2RldmljZV90cmVlLmg+CisjaW5jbHVkZSA8eGVuL251bWEuaD4KIAogI2lu Y2x1ZGUgPGFzbS9hY3BpLmg+CiAjaW5jbHVkZSA8YXNtL3NtcC5oPgpAQCAtMTE3LDYgKzExOCw3 IEBAIGFjcGlfbWFwX2dpY19jcHVfaW50ZXJmYWNlKHN0cnVjdCBhY3BpX21hZHRfZ2VuZXJpY19p bnRlcnJ1cHQgKnByb2Nlc3NvcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIG51bWFf c2V0X25vZGUoZW5hYmxlZF9jcHVzLCBhY3BpX2dldF9ub2RlaWQobXBpZHIpKTsKICAgICAvKiBt YXAgdGhlIGxvZ2ljYWwgY3B1IGlkIHRvIGNwdSBNUElEUiAqLwogICAgIGNwdV9sb2dpY2FsX21h cChlbmFibGVkX2NwdXMpID0gbXBpZHI7CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9udW1h L2FjcGlfbnVtYS5jIGIveGVuL2FyY2gvYXJtL251bWEvYWNwaV9udW1hLmMKaW5kZXggNmZkOTM3 ZC4uOGY1MWVkMCAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL251bWEvYWNwaV9udW1hLmMKKysr IGIveGVuL2FyY2gvYXJtL251bWEvYWNwaV9udW1hLmMKQEAgLTI4LDE5ICsyOCw3MSBAQAogI2lu Y2x1ZGUgPGFzbS9wYWdlLmg+CiAjaW5jbHVkZSA8YXNtL2FjcGkuaD4KIAorZXh0ZXJuIG5vZGVt YXNrX3QgcHJvY2Vzc29yX25vZGVzX3BhcnNlZDsKKwogLyogSG9sZHMgQ1BVSUQgdG8gTVBJRFIg bWFwcGluZyByZWFkIGZyb20gTUFEVCB0YWJsZS4gKi8KIHN0cnVjdCBjcHVpZF90b19od2lkIHsK ICAgICB1aW50MzJfdCBjcHVpZDsKICAgICB1aW50NjRfdCBod2lkOwogfTsKIAorLyogSG9sZHMg Tk9ERSB0byBNUElEUiBtYXBwaW5nLiAqLworc3RydWN0IG5vZGVfdG9faHdpZCB7CisgICAgbm9k ZWlkX3Qgbm9kZWlkOworICAgIHVpbnQ2NF90IGh3aWQ7Cit9OworCiAjZGVmaW5lIFBIWVNfQ1BV SURfSU5WQUxJRCAweGZmCiAKIC8qIEhvbGRzIG1hcHBpbmcgb2YgQ1BVIGlkIHRvIE1QSURSIHJl YWQgZnJvbSBNQURUICovCiBzdGF0aWMgc3RydWN0IGNwdWlkX3RvX2h3aWQgX19yZWFkX21vc3Rs eSBjcHVpZF90b19od2lkX21hcFtOUl9DUFVTXSA9CiAgICAgeyBbMCAuLi4gTlJfQ1BVUyAtIDFd ID0ge1BIWVNfQ1BVSURfSU5WQUxJRCwgTVBJRFJfSU5WQUxJRH0gfTsKK3N0YXRpYyBzdHJ1Y3Qg bm9kZV90b19od2lkIF9fcmVhZF9tb3N0bHkgbm9kZV90b19od2lkX21hcFtOUl9DUFVTXSA9Cisg ICAgeyBbMCAuLi4gTlJfQ1BVUyAtIDFdID0ge05VTUFfTk9fTk9ERSwgTVBJRFJfSU5WQUxJRH0g fTsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgY3B1c19pbl9zcmF0Owogc3RhdGljIHVuc2lnbmVkIGlu dCBudW1fY3B1aWRfdG9faHdpZDsKIAorbm9kZWlkX3QgX19pbml0IGFjcGlfZ2V0X25vZGVpZCh1 aW50NjRfdCBod2lkKQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yICggaSA9IDA7 IGkgPCBjcHVzX2luX3NyYXQ7IGkrKyApCisgICAgeworICAgICAgICBpZiAoIG5vZGVfdG9faHdp ZF9tYXBbaV0uaHdpZCA9PSBod2lkICkKKyAgICAgICAgICAgIHJldHVybiBub2RlX3RvX2h3aWRf bWFwW2ldLm5vZGVpZDsKKyAgICB9CisKKyAgICByZXR1cm4gTlVNQV9OT19OT0RFOworfQorCitz dGF0aWMgdWludDY0X3QgYWNwaV9nZXRfY3B1X2h3aWQoaW50IGNpZCkKK3sKKyAgICB1bnNpZ25l ZCBpbnQgaTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgbnVtX2NwdWlkX3RvX2h3aWQ7IGkrKyAp CisgICAgeworICAgICAgICBpZiAoIGNwdWlkX3RvX2h3aWRfbWFwW2ldLmNwdWlkID09IGNpZCAp CisgICAgICAgICAgICByZXR1cm4gY3B1aWRfdG9faHdpZF9tYXBbaV0uaHdpZDsKKyAgICB9CisK KyAgICByZXR1cm4gTVBJRFJfSU5WQUxJRDsKK30KKworc3RhdGljIHZvaWQgX19pbml0IGFjcGlf bWFwX25vZGVfdG9faHdpZChub2RlaWRfdCBub2RlaWQsIHVpbnQ2NF90IGh3aWQpCit7CisgICAg aWYgKCBub2RlaWQgPj0gTUFYX05VTU5PREVTICkKKyAgICB7CisgICAgICAgIHByaW50ayhYRU5M T0dfV0FSTklORworICAgICAgICAgICAgICAgIkFDUEk6IE5VTUE6IG5vZGVpZCBvdXQgb2YgcmFu Z2UgJWQgd2l0aCBNUElEUiAweCVseFxuIiwKKyAgICAgICAgICAgICAgIG5vZGVpZCwgaHdpZCk7 CisgICAgICAgIG51bWFfZmFpbGVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBu b2RlX3RvX2h3aWRfbWFwW2NwdXNfaW5fc3JhdF0ubm9kZWlkID0gbm9kZWlkOworICAgIG5vZGVf dG9faHdpZF9tYXBbY3B1c19pbl9zcmF0XS5od2lkID0gaHdpZDsKK30KKwogc3RhdGljIHZvaWQg X19pbml0IGFjcGlfbWFwX2NwdV90b19od2lkKHVpbnQzMl90IGNwdWlkLCB1aW50NjRfdCBtcGlk cikKIHsKICAgICBpZiAoIG1waWRyID09IE1QSURSX0lOVkFMSUQgKQpAQCAtNzYsMTUgKzEyOCw4 NyBAQCBzdGF0aWMgaW50IF9faW5pdCBhY3BpX3BhcnNlX21hZHRfaGFuZGxlcihzdHJ1Y3QgYWNw aV9zdWJ0YWJsZV9oZWFkZXIgKmhlYWRlciwKICAgICByZXR1cm4gMDsKIH0KIAorLyogQ2FsbGJh Y2sgZm9yIFByb3hpbWl0eSBEb21haW4gLT4gQUNQSSBwcm9jZXNzb3IgVUlEIG1hcHBpbmcgKi8K K3N0YXRpYyB2b2lkIF9faW5pdAorYWNwaV9udW1hX2dpY2NfYWZmaW5pdHlfaW5pdChjb25zdCBz dHJ1Y3QgYWNwaV9zcmF0X2dpY2NfYWZmaW5pdHkgKnBhKQoreworICAgIGludCBweG0sIG5vZGU7 CisgICAgdWludDY0X3QgbXBpZHI7CisKKyAgICBpZiAoIHNyYXRfZGlzYWJsZWQoKSApCisgICAg ICAgIHJldHVybjsKKworICAgIGlmICggcGEtPmhlYWRlci5sZW5ndGggPCBzaXplb2Yoc3RydWN0 IGFjcGlfc3JhdF9naWNjX2FmZmluaXR5KSApCisgICAgeworICAgICAgICBwcmludGsoWEVOTE9H X1dBUk5JTkcgIlNSQVQ6IEludmFsaWQgU1JBVCBoZWFkZXIgbGVuZ3RoOiAlZFxuIiwKKyAgICAg ICAgICAgICAgIHBhLT5oZWFkZXIubGVuZ3RoKTsKKyAgICAgICAgbnVtYV9mYWlsZWQoKTsKKyAg ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICggIShwYS0+ZmxhZ3MgJiBBQ1BJX1NSQVRf R0lDQ19FTkFCTEVEKSApCisgICAgICAgIHJldHVybjsKKworICAgIGlmICggY3B1c19pbl9zcmF0 ID49IE5SX0NQVVMgKQorICAgIHsKKyAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIKKyAgICAgICAg ICAgICAgICJTUkFUOiBjcHVfdG9fbm9kZV9tYXBbJWRdIGlzIHRvbyBzbWFsbCB0byBmaXQgYWxs IGNwdXNcbiIsCisgICAgICAgICAgICAgICBOUl9DUFVTKTsKKyAgICAgICAgcmV0dXJuOworICAg IH0KKworICAgIHB4bSA9IHBhLT5wcm94aW1pdHlfZG9tYWluOworICAgIG5vZGUgPSBhY3BpX3Nl dHVwX25vZGUocHhtKTsKKyAgICBpZiAoIG5vZGUgPT0gTlVNQV9OT19OT0RFICkKKyAgICB7Cisg ICAgICAgIG51bWFfZmFpbGVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtcGlk ciA9IGFjcGlfZ2V0X2NwdV9od2lkKHBhLT5hY3BpX3Byb2Nlc3Nvcl91aWQpOworICAgIGlmICgg bXBpZHIgPT0gTVBJRFJfSU5WQUxJRCApCisgICAgeworICAgICAgICBwcmludGsoWEVOTE9HX0VS UgorICAgICAgICAgICAgICAgIlNSQVQ6IFBYTSAlZCB3aXRoIEFDUEkgSUQgJWQgaGFzIG5vIHZh bGlkIE1QSURSIGluIE1BRFRcbiIsCisgICAgICAgICAgICAgICBweG0sIHBhLT5hY3BpX3Byb2Nl c3Nvcl91aWQpOworICAgICAgICBudW1hX2ZhaWxlZCgpOworICAgICAgICByZXR1cm47CisgICAg fQorCisgICAgYWNwaV9tYXBfbm9kZV90b19od2lkKG5vZGUsIG1waWRyKTsKKyAgICBub2RlX3Nl dChub2RlLCBwcm9jZXNzb3Jfbm9kZXNfcGFyc2VkKTsKKyAgICBjcHVzX2luX3NyYXQrKzsKKyAg ICBzZXRfYWNwaV9udW1hKDEpOworICAgIHByaW50ayhYRU5MT0dfSU5GTyAiU1JBVDogUFhNICVk IC0+IE1QSURSIDB4JWx4IC0+IE5vZGUgJWRcbiIsCisgICAgICAgICAgIHB4bSwgbXBpZHIsIG5v ZGUpOworfQorCiB2b2lkIF9faW5pdCBhY3BpX21hcF91aWRfdG9fbXBpZHIodm9pZCkKIHsKICAg ICBhY3BpX3RhYmxlX3BhcnNlX21hZHQoQUNQSV9NQURUX1RZUEVfR0VORVJJQ19JTlRFUlJVUFQs CiAgICAgICAgICAgICAgICAgICAgIGFjcGlfcGFyc2VfbWFkdF9oYW5kbGVyLCBOUl9DUFVTKTsK IH0KIAorc3RhdGljIGludCBfX2luaXQKK2FjcGlfcGFyc2VfZ2ljY19hZmZpbml0eShzdHJ1Y3Qg YWNwaV9zdWJ0YWJsZV9oZWFkZXIgKmhlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCB1bnNpZ25lZCBsb25nIGVuZCkKK3sKKyAgIGNvbnN0IHN0cnVjdCBhY3BpX3NyYXRfZ2lj Y19hZmZpbml0eSAqcHJvY2Vzc29yX2FmZmluaXR5CisgICAgICAgICAgICAgICAgPSAoc3RydWN0 IGFjcGlfc3JhdF9naWNjX2FmZmluaXR5ICopaGVhZGVyOworCisgICBpZiAoIXByb2Nlc3Nvcl9h ZmZpbml0eSkKKyAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgYWNwaV90YWJsZV9wcmludF9z cmF0X2VudHJ5KGhlYWRlcik7CisgICBhY3BpX251bWFfZ2ljY19hZmZpbml0eV9pbml0KHByb2Nl c3Nvcl9hZmZpbml0eSk7CisKKyAgIHJldHVybiAwOworfQorCiB2b2lkIF9faW5pdCBhcmNoX3Rh YmxlX3BhcnNlX3NyYXQodm9pZCkKIHsKLSAgICByZXR1cm47CisgICAgYWNwaV90YWJsZV9wYXJz ZV9zcmF0KEFDUElfU1JBVF9UWVBFX0dJQ0NfQUZGSU5JVFksCisgICAgICAgICAgICAgICAgICAg ICAgICAgIGFjcGlfcGFyc2VfZ2ljY19hZmZpbml0eSwgTlJfQ1BVUyk7CiB9CiAKIHZvaWQgX19p bml0IGFjcGlfbnVtYV9hcmNoX2ZpeHVwKHZvaWQpIHt9CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVy cy9hY3BpL251bWEuYyBiL3hlbi9kcml2ZXJzL2FjcGkvbnVtYS5jCmluZGV4IDBhZGMzMmMuLmI0 OGQ5MWQgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL2FjcGkvbnVtYS5jCisrKyBiL3hlbi9kcml2 ZXJzL2FjcGkvbnVtYS5jCkBAIC0xMDQsNiArMTA0LDIxIEBAIHZvaWQgX19pbml0IGFjcGlfdGFi bGVfcHJpbnRfc3JhdF9lbnRyeShzdHJ1Y3QgYWNwaV9zdWJ0YWJsZV9oZWFkZXIgKiBoZWFkZXIp CiAJCX0KICNlbmRpZgkJCQkvKiBBQ1BJX0RFQlVHX09VVFBVVCAqLwogCQlicmVhazsKKyAgICAg ICBjYXNlIEFDUElfU1JBVF9UWVBFX0dJQ0NfQUZGSU5JVFk6CisjaWZkZWYgQUNQSV9ERUJVR19P VVRQVVQKKwkJeworCQkJc3RydWN0IGFjcGlfc3JhdF9naWNjX2FmZmluaXR5ICpwID0KKwkJCSAg ICAoc3RydWN0IGFjcGlfc3JhdF9naWNjX2FmZmluaXR5ICopaGVhZGVyOworCQkJQUNQSV9ERUJV R19QUklOVCgoQUNQSV9EQl9JTkZPLAorCQkJCQkgICJTUkFUIFByb2Nlc3NvciAoYWNwaSBpZFsw eCUwNHhdKSBpbiIKKwkJCQkJICAiIHByb3hpbWl0eSBkb21haW4gJWQgJXNcbiIsCisJCQkJCSAg cC0+YWNwaV9wcm9jZXNzb3JfdWlkLAorCQkJCQkgIHAtPnByb3hpbWl0eV9kb21haW4sCisJCQkJ CSAgKHAtPmZsYWdzICYgQUNQSV9TUkFUX0dJQ0NfRU5BQkxFRCkgPworCQkJCQkgICJlbmFibGVk IiA6ICJkaXNhYmxlZCIpOworCQl9CisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgLyog QUNQSV9ERUJVR19PVVRQVVQgKi8KKyAgICAgICAgICAgICAgIGJyZWFrOwogCWRlZmF1bHQ6CiAJ CXByaW50ayhLRVJOX1dBUk5JTkcgUFJFRklYCiAJCSAgICAgICAiRm91bmQgdW5zdXBwb3J0ZWQg U1JBVCBlbnRyeSAodHlwZSA9ICUjeClcbiIsCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hY3Bp L2FjdGJsMS5oIGIveGVuL2luY2x1ZGUvYWNwaS9hY3RibDEuaAppbmRleCBlMTk5MTM2Li5iODRi ZmJhIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hY3BpL2FjdGJsMS5oCisrKyBiL3hlbi9pbmNs dWRlL2FjcGkvYWN0YmwxLmgKQEAgLTk0OSw3ICs5NDksOCBAQCBlbnVtIGFjcGlfc3JhdF90eXBl IHsKIAlBQ1BJX1NSQVRfVFlQRV9DUFVfQUZGSU5JVFkgPSAwLAogCUFDUElfU1JBVF9UWVBFX01F TU9SWV9BRkZJTklUWSA9IDEsCiAJQUNQSV9TUkFUX1RZUEVfWDJBUElDX0NQVV9BRkZJTklUWSA9 IDIsCi0JQUNQSV9TUkFUX1RZUEVfUkVTRVJWRUQgPSAzCS8qIDMgYW5kIGdyZWF0ZXIgYXJlIHJl c2VydmVkICovCisJQUNQSV9TUkFUX1RZUEVfR0lDQ19BRkZJTklUWSA9IDMsCisJQUNQSV9TUkFU X1RZUEVfUkVTRVJWRUQgPSA0CS8qIDQgYW5kIGdyZWF0ZXIgYXJlIHJlc2VydmVkICovCiB9Owog CiAvKgpAQCAtMTAwNyw2ICsxMDA4LDIwIEBAIHN0cnVjdCBhY3BpX3NyYXRfeDJhcGljX2NwdV9h ZmZpbml0eSB7CiAKICNkZWZpbmUgQUNQSV9TUkFUX0NQVV9FTkFCTEVEICAgICAgICgxKQkvKiAw MDogVXNlIGFmZmluaXR5IHN0cnVjdHVyZSAqLwogCisvKiAzOiBHSUNDIEFmZmluaXR5IChBQ1BJ IDUuMSkgKi8KKworc3RydWN0IGFjcGlfc3JhdF9naWNjX2FmZmluaXR5IHsKKwlzdHJ1Y3QgYWNw aV9zdWJ0YWJsZV9oZWFkZXIgaGVhZGVyOworCXUzMiBwcm94aW1pdHlfZG9tYWluOworCXUzMiBh Y3BpX3Byb2Nlc3Nvcl91aWQ7CisJdTMyIGZsYWdzOworCXUzMiBjbG9ja19kb21haW47Cit9Owor CisvKiBGbGFncyBmb3Igc3RydWN0IGFjcGlfc3JhdF9naWNjX2FmZmluaXR5ICovCisKKyNkZWZp bmUgQUNQSV9TUkFUX0dJQ0NfRU5BQkxFRCAgICAgKDEpICAvKiAwMDogVXNlIGFmZmluaXR5IHN0 cnVjdHVyZSAqLworCiAvKiBSZXNldCB0byBkZWZhdWx0IHBhY2tpbmcgKi8KIAogI3ByYWdtYSBw YWNrKCkKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vbnVtYS5oIGIveGVuL2luY2x1 ZGUvYXNtLWFybS9udW1hLmgKaW5kZXggODVmYmJlOC4uMWQ0ZGM5OCAxMDA2NDQKLS0tIGEveGVu L2luY2x1ZGUvYXNtLWFybS9udW1hLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9udW1hLmgK QEAgLTEzLDYgKzEzLDE1IEBAIGV4dGVybiB2b2lkIGR0X251bWFfcHJvY2Vzc19tZW1vcnlfbm9k ZSh1aW50MzJfdCBuaWQscGFkZHJfdCBzdGFydCwKIGV4dGVybiB2b2lkIHJlZ2lzdGVyX25vZGVf ZGlzdGFuY2UodWludDhfdCAoZm4pKG5vZGVpZF90IGEsIG5vZGVpZF90IGIpKTsKIGV4dGVybiB2 b2lkIGluaXRfZHRfbnVtYV9kaXN0YW5jZSh2b2lkKTsKIGV4dGVybiB1aW50OF90IF9fbm9kZV9k aXN0YW5jZShub2RlaWRfdCBhLCBub2RlaWRfdCBiKTsKKyNpZmRlZiBDT05GSUdfQUNQSV9OVU1B Citub2RlaWRfdCBhY3BpX2dldF9ub2RlaWQodWludDY0X3QgaHdpZCk7CisjZWxzZQorc3RhdGlj IGlubGluZSBub2RlaWRfdCBhY3BpX2dldF9ub2RlaWQodWludDY0X3QgaHdpZCkKK3sKKyAgICBy ZXR1cm4gMDsKK30KKyNlbmRpZiAvKiBDT05GSUdfQUNQSV9OVU1BICovCisKICNpZmRlZiBDT05G SUdfTlVNQQogZXh0ZXJuIHZvaWQgbnVtYV9pbml0KHZvaWQpOwogZXh0ZXJuIGludCBkdF9udW1h X2luaXQodm9pZCk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vbnVtYS5oIGIveGVuL2lu Y2x1ZGUveGVuL251bWEuaAppbmRleCA4NTFmNGE3Li5jM2I0YWRjIDEwMDY0NAotLS0gYS94ZW4v aW5jbHVkZS94ZW4vbnVtYS5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9udW1hLmgKQEAgLTI0LDcg KzI0LDExIEBAIGV4dGVybiBpbnQgY29tcHV0ZV9tZW1ub2RlX3NoaWZ0KHN0cnVjdCBub2RlICpu b2RlcywgaW50IG51bW5vZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9k ZWlkX3QgKm5vZGVpZHMsIHVuc2lnbmVkIGludCAqc2hpZnQpOwogZXh0ZXJuIHZvaWQgbnVtYV9p bml0X2FycmF5KHZvaWQpOwogZXh0ZXJuIGJvb2xfdCBzcmF0X2Rpc2FibGVkKHZvaWQpOworI2lm ZGVmIENPTkZJR19OVU1BCiBleHRlcm4gdm9pZCBudW1hX3NldF9ub2RlKGludCBjcHUsIG5vZGVp ZF90IG5vZGUpOworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZCBudW1hX3NldF9ub2RlKGludCBj cHUsIG5vZGVpZF90IG5vZGUpIHsgfQorI2VuZGlmCiBleHRlcm4gdm9pZCBzcmF0X2RldGVjdF9u b2RlKGludCBjcHUpOwogZXh0ZXJuIHZvaWQgc2V0dXBfbm9kZV9ib290bWVtKG5vZGVpZF90IG5v ZGVpZCwgcGFkZHJfdCBzdGFydCwgcGFkZHJfdCBlbmQpOwogZXh0ZXJuIHZvaWQgaW5pdF9jcHVf dG9fbm9kZSh2b2lkKTsKLS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMu eGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==