From mboxrd@z Thu Jan 1 00:00:00 1970 From: vijay.kilari@gmail.com Subject: [RFC PATCH v1 13/21] ACPI: Refactor acpi SRAT and SLIT table handling code Date: Thu, 9 Feb 2017 21:27:05 +0530 Message-ID: <1486655834-9708-14-git-send-email-vijay.kilari@gmail.com> References: <1486655834-9708-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: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cbr8K-0008FE-EC for xen-devel@lists.xenproject.org; Thu, 09 Feb 2017 15:59:44 +0000 Received: by mail-pf0-f194.google.com with SMTP id e4so482128pfg.0 for ; Thu, 09 Feb 2017 07:59:42 -0800 (PST) In-Reply-To: <1486655834-9708-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: julien.grall@arm.com, sstabellini@kernel.org, andre.przywara@arm.com, dario.faggioli@citrix.com Cc: xen-devel@lists.xenproject.org, Vijaya Kumar K List-Id: xen-devel@lists.xenproject.org RnJvbTogVmlqYXlhIEt1bWFyIEsgPFZpamF5YS5LdW1hckBjYXZpdW0uY29tPgoKTW92ZSBTUkFU IGhhbmRsaW5nIGNvZGUgd2hpY2ggaXMgY29tbW9uIGFjcm9zcwphcmNoaXRlY3R1cmUgaXMgbW92 ZWQgdG8gbmV3IGZpbGUgeGVuL2NvbW1vbS9zcmF0LmMKZnJvbSB4ZW4vYXJjaC94ODYvc3JhdC5j IGZpbGUuIE5ldyBoZWFkZXIgZmlsZSBzcmF0LmggaXMKaW50cm9kdWNlZC4KClNpZ25lZC1vZmYt Ynk6IFZpamF5YSBLdW1hciA8VmlqYXlhLkt1bWFyQGNhdml1bS5jb20+Ci0tLQogeGVuL2FyY2gv eDg2L2RvbWFpbl9idWlsZC5jICAgICAgICAgfCAgIDEgKwogeGVuL2FyY2gveDg2L251bWEuYyAg ICAgICAgICAgICAgICAgfCAgIDEgKwogeGVuL2FyY2gveDg2L3BoeXNkZXYuYyAgICAgICAgICAg ICAgfCAgIDEgKwogeGVuL2FyY2gveDg2L3NldHVwLmMgICAgICAgICAgICAgICAgfCAgIDEgKwog eGVuL2FyY2gveDg2L3NtcGJvb3QuYyAgICAgICAgICAgICAgfCAgIDEgKwogeGVuL2FyY2gveDg2 L3NyYXQuYyAgICAgICAgICAgICAgICAgfCAxMjkgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogeGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jICAgICAgICAgICAgfCAgIDEgKwogeGVuL2Nv bW1vbi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEgKwogeGVuL2NvbW1vbi9zcmF0LmMg ICAgICAgICAgICAgICAgICAgfCAxNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYyB8ICAgMSArCiB4ZW4vaW5j bHVkZS9hc20teDg2L251bWEuaCAgICAgICAgICB8ICAgMiAtCiB4ZW4vaW5jbHVkZS94ZW4vbnVt YS5oICAgICAgICAgICAgICB8ICAgMSAtCiB4ZW4vaW5jbHVkZS94ZW4vc3JhdC5oICAgICAgICAg ICAgICB8ICAxMyArKysrCiAxMyBmaWxlcyBjaGFuZ2VkLCAxNzMgaW5zZXJ0aW9ucygrKSwgMTMw IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21haW5fYnVpbGQuYyBi L3hlbi9hcmNoL3g4Ni9kb21haW5fYnVpbGQuYwppbmRleCAyNDNkZjk2Li40ZDc3OTViIDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYvZG9tYWluX2J1aWxkLmMKKysrIGIveGVuL2FyY2gveDg2L2Rv bWFpbl9idWlsZC5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSA8eGVuL2NvbXBhdC5oPgog I2luY2x1ZGUgPHhlbi9saWJlbGYuaD4KICNpbmNsdWRlIDx4ZW4vcGZuLmg+CisjaW5jbHVkZSA8 eGVuL3NyYXQuaD4KICNpbmNsdWRlIDxhc20vcmVncy5oPgogI2luY2x1ZGUgPGFzbS9zeXN0ZW0u aD4KICNpbmNsdWRlIDxhc20vaW8uaD4KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9udW1hLmMg Yi94ZW4vYXJjaC94ODYvbnVtYS5jCmluZGV4IDI4ZDE4OTEuLjU4ZGUzMjQgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni9udW1hLmMKKysrIGIveGVuL2FyY2gveDg2L251bWEuYwpAQCAtMTQsNiAr MTQsNyBAQAogI2luY2x1ZGUgPHhlbi90aW1lLmg+CiAjaW5jbHVkZSA8eGVuL3NtcC5oPgogI2lu Y2x1ZGUgPHhlbi9wZm4uaD4KKyNpbmNsdWRlIDx4ZW4vc3JhdC5oPgogI2luY2x1ZGUgPGFzbS9h Y3BpLmg+CiAjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CiAjaW5jbHVkZSA8eGVuL3NvZnRpcnEuaD4K ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9waHlzZGV2LmMgYi94ZW4vYXJjaC94ODYvcGh5c2Rl di5jCmluZGV4IDVhNDk3OTYuLjIxODRkNjIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9waHlz ZGV2LmMKKysrIGIveGVuL2FyY2gveDg2L3BoeXNkZXYuYwpAQCAtOSw2ICs5LDcgQEAKICNpbmNs dWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+CiAjaW5jbHVkZSA8eGVuL2lvY2FwLmg+CiAjaW5jbHVk ZSA8eGVuL3NlcmlhbC5oPgorI2luY2x1ZGUgPHhlbi9zcmF0Lmg+CiAjaW5jbHVkZSA8YXNtL2N1 cnJlbnQuaD4KICNpbmNsdWRlIDxhc20vaW9fYXBpYy5oPgogI2luY2x1ZGUgPGFzbS9tc2kuaD4K ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9zZXR1cC5jIGIveGVuL2FyY2gveDg2L3NldHVwLmMK aW5kZXggMTc2ZWU3NC4uZWU3YTM2OCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3NldHVwLmMK KysrIGIveGVuL2FyY2gveDg2L3NldHVwLmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDx4 ZW4vdG1lbV94ZW4uaD4KICNpbmNsdWRlIDx4ZW4vdmlydHVhbF9yZWdpb24uaD4KICNpbmNsdWRl IDx4ZW4vd2F0Y2hkb2cuaD4KKyNpbmNsdWRlIDx4ZW4vc3JhdC5oPgogI2luY2x1ZGUgPHB1Ymxp Yy92ZXJzaW9uLmg+CiAjaW5jbHVkZSA8Y29tcGF0L3BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8Y29t cGF0L3hlbi5oPgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3NtcGJvb3QuYyBiL3hlbi9hcmNo L3g4Ni9zbXBib290LmMKaW5kZXggOWIzOTBiOC4uNmM2MTExNCAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gveDg2L3NtcGJvb3QuYworKysgYi94ZW4vYXJjaC94ODYvc21wYm9vdC5jCkBAIC0zNCw2ICsz NCw3IEBACiAjaW5jbHVkZSA8eGVuL3NlcmlhbC5oPgogI2luY2x1ZGUgPHhlbi9udW1hLmg+CiAj aW5jbHVkZSA8eGVuL2NwdS5oPgorI2luY2x1ZGUgPHhlbi9zcmF0Lmg+CiAjaW5jbHVkZSA8YXNt L2N1cnJlbnQuaD4KICNpbmNsdWRlIDxhc20vbWMxNDY4MThydGMuaD4KICNpbmNsdWRlIDxhc20v ZGVzYy5oPgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3NyYXQuYyBiL3hlbi9hcmNoL3g4Ni9z cmF0LmMKaW5kZXggNThkZWUwOS4uYWYxMmUyNiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3Ny YXQuYworKysgYi94ZW4vYXJjaC94ODYvc3JhdC5jCkBAIC0xOCw5MSArMTgsMjAgQEAKICNpbmNs dWRlIDx4ZW4vYWNwaS5oPgogI2luY2x1ZGUgPHhlbi9udW1hLmg+CiAjaW5jbHVkZSA8eGVuL3Bm bi5oPgorI2luY2x1ZGUgPHhlbi9zcmF0Lmg+CiAjaW5jbHVkZSA8YXNtL2U4MjAuaD4KICNpbmNs dWRlIDxhc20vcGFnZS5oPgogCi1zdGF0aWMgc3RydWN0IGFjcGlfdGFibGVfc2xpdCAqX19yZWFk X21vc3RseSBhY3BpX3NsaXQ7CitleHRlcm4gc3RydWN0IGFjcGlfdGFibGVfc2xpdCAqX19yZWFk X21vc3RseSBhY3BpX3NsaXQ7CiAKIHN0YXRpYyBub2RlbWFza190IG1lbW9yeV9ub2Rlc19wYXJz ZWQgX19pbml0ZGF0YTsKIHN0YXRpYyBub2RlbWFza190IHByb2Nlc3Nvcl9ub2Rlc19wYXJzZWQg X19pbml0ZGF0YTsKIGV4dGVybiBzdHJ1Y3Qgbm9kZSBub2Rlc1tNQVhfTlVNTk9ERVNdIF9faW5p dGRhdGE7Ci0KLXN0cnVjdCBweG0ybm9kZSB7Ci0JdW5zaWduZWQgcHhtOwotCW5vZGVpZF90IG5v ZGU7Ci19Owotc3RhdGljIHN0cnVjdCBweG0ybm9kZSBfX3JlYWRfbW9zdGx5IHB4bTJub2RlW01B WF9OVU1OT0RFU10gPQotCXsgWzAgLi4uIE1BWF9OVU1OT0RFUyAtIDFdID0gey5ub2RlID0gTlVN QV9OT19OT0RFfSB9OwotCi1zdGF0aWMgdW5zaWduZWQgbm9kZV90b19weG0obm9kZWlkX3Qgbik7 Ci0KIGV4dGVybiBpbnQgbnVtX25vZGVfbWVtYmxrczsKIGV4dGVybiBzdHJ1Y3Qgbm9kZSBub2Rl X21lbWJsa19yYW5nZVtOUl9OT0RFX01FTUJMS1NdOwogZXh0ZXJuIG5vZGVpZF90IG1lbWJsa19u b2RlaWRbTlJfTk9ERV9NRU1CTEtTXTsKIHN0YXRpYyBfX2luaXRkYXRhIERFQ0xBUkVfQklUTUFQ KG1lbWJsa19ob3RwbHVnLCBOUl9OT0RFX01FTUJMS1MpOwogCi1zdGF0aWMgaW5saW5lIGJvb2xf dCBub2RlX2ZvdW5kKHVuc2lnbmVkIGlkeCwgdW5zaWduZWQgcHhtKQotewotCXJldHVybiAoKHB4 bTJub2RlW2lkeF0ucHhtID09IHB4bSkgJiYKLQkJKHB4bTJub2RlW2lkeF0ubm9kZSAhPSBOVU1B X05PX05PREUpKTsKLX0KLQotbm9kZWlkX3QgcHhtX3RvX25vZGUodW5zaWduZWQgcHhtKQotewot CXVuc2lnbmVkIGk7Ci0KLQlpZiAoKHB4bSA8IEFSUkFZX1NJWkUocHhtMm5vZGUpKSAmJiBub2Rl X2ZvdW5kKHB4bSwgcHhtKSkKLQkJcmV0dXJuIHB4bTJub2RlW3B4bV0ubm9kZTsKLQotCWZvciAo aSA9IDA7IGkgPCBBUlJBWV9TSVpFKHB4bTJub2RlKTsgaSsrKQotCQlpZiAobm9kZV9mb3VuZChp LCBweG0pKQotCQkJcmV0dXJuIHB4bTJub2RlW2ldLm5vZGU7Ci0KLQlyZXR1cm4gTlVNQV9OT19O T0RFOwotfQotCi1ub2RlaWRfdCBzZXR1cF9ub2RlKHVuc2lnbmVkIHB4bSkKLXsKLQlub2RlaWRf dCBub2RlOwotCXVuc2lnbmVkIGlkeDsKLQlzdGF0aWMgYm9vbF90IHdhcm5lZDsKLQlzdGF0aWMg dW5zaWduZWQgbm9kZXNfZm91bmQ7Ci0KLQlCVUlMRF9CVUdfT04oTUFYX05VTU5PREVTID49IE5V TUFfTk9fTk9ERSk7Ci0KLQlpZiAocHhtIDwgQVJSQVlfU0laRShweG0ybm9kZSkpIHsKLQkJaWYg KG5vZGVfZm91bmQocHhtLCBweG0pKQotCQkJcmV0dXJuIHB4bTJub2RlW3B4bV0ubm9kZTsKLQot CQkvKiBUcnkgdG8gbWFpbnRhaW4gaW5kZXhpbmcgb2YgcHhtMm5vZGUgYnkgcHhtICovCi0JCWlm IChweG0ybm9kZVtweG1dLm5vZGUgPT0gTlVNQV9OT19OT0RFKSB7Ci0JCQlpZHggPSBweG07Ci0J CQlnb3RvIGZpbmlzaDsKLQkJfQotCX0KLQotCWZvciAoaWR4ID0gMDsgaWR4IDwgQVJSQVlfU0la RShweG0ybm9kZSk7IGlkeCsrKQotCQlpZiAocHhtMm5vZGVbaWR4XS5ub2RlID09IE5VTUFfTk9f Tk9ERSkKLQkJCWdvdG8gZmluaXNoOwotCi0JaWYgKCF3YXJuZWQpIHsKLQkJcHJpbnRrKEtFUk5f V0FSTklORyAiU1JBVDogVG9vIG1hbnkgcHJveGltaXR5IGRvbWFpbnMgKCUjeClcbiIsCi0JCSAg ICAgICBweG0pOwotCQl3YXJuZWQgPSAxOwotCX0KLQotCXJldHVybiBOVU1BX05PX05PREU7Ci0K LSBmaW5pc2g6Ci0Jbm9kZSA9IG5vZGVzX2ZvdW5kKys7Ci0JaWYgKG5vZGUgPj0gTUFYX05VTU5P REVTKQotCQlyZXR1cm4gTlVNQV9OT19OT0RFOwotCXB4bTJub2RlW2lkeF0ucHhtID0gcHhtOwot CXB4bTJub2RlW2lkeF0ubm9kZSA9IG5vZGU7Ci0KLQlyZXR1cm4gbm9kZTsKLX0KLQogc3RhdGlj IF9faW5pdCB2b2lkIGJhZF9zcmF0KHZvaWQpCiB7CiAJaW50IGk7CkBAIC0xMTUsNDggKzQ0LDYg QEAgc3RhdGljIF9faW5pdCB2b2lkIGJhZF9zcmF0KHZvaWQpCiAJbWVtX2hvdHBsdWcgPSAwOwog fQogCi0vKgotICogQSBsb3Qgb2YgQklPUyBmaWxsIGluIDEwICg9IG5vIGRpc3RhbmNlKSBldmVy eXdoZXJlLiBUaGlzIG1lc3NlcwotICogdXAgdGhlIE5VTUEgaGV1cmlzdGljcyB3aGljaCB3YW50 cyB0aGUgbG9jYWwgbm9kZSB0byBoYXZlIGEgc21hbGxlcgotICogZGlzdGFuY2UgdGhhbiB0aGUg b3RoZXJzLgotICogRG8gc29tZSBxdWljayBjaGVja3MgaGVyZSBhbmQgb25seSB1c2UgdGhlIFNM SVQgaWYgaXQgcGFzc2VzLgotICovCi1zdGF0aWMgX19pbml0IGludCBzbGl0X3ZhbGlkKHN0cnVj dCBhY3BpX3RhYmxlX3NsaXQgKnNsaXQpCi17Ci0JaW50IGksIGo7Ci0JaW50IGQgPSBzbGl0LT5s b2NhbGl0eV9jb3VudDsKLQlmb3IgKGkgPSAwOyBpIDwgZDsgaSsrKSB7Ci0JCWZvciAoaiA9IDA7 IGogPCBkOyBqKyspICB7Ci0JCQl1OCB2YWwgPSBzbGl0LT5lbnRyeVtkKmkgKyBqXTsKLQkJCWlm IChpID09IGopIHsKLQkJCQlpZiAodmFsICE9IDEwKQotCQkJCQlyZXR1cm4gMDsKLQkJCX0gZWxz ZSBpZiAodmFsIDw9IDEwKQotCQkJCXJldHVybiAwOwotCQl9Ci0JfQotCXJldHVybiAxOwotfQot Ci0vKiBDYWxsYmFjayBmb3IgU0xJVCBwYXJzaW5nICovCi12b2lkIF9faW5pdCBhY3BpX251bWFf c2xpdF9pbml0KHN0cnVjdCBhY3BpX3RhYmxlX3NsaXQgKnNsaXQpCi17Ci0JdW5zaWduZWQgbG9u ZyBtZm47Ci0JaWYgKCFzbGl0X3ZhbGlkKHNsaXQpKSB7Ci0JCXByaW50ayhLRVJOX0lORk8gIkFD UEk6IFNMSVQgdGFibGUgbG9va3MgaW52YWxpZC4gIgotCQkgICAgICAgIk5vdCB1c2VkLlxuIik7 Ci0JCXJldHVybjsKLQl9Ci0JbWZuID0gYWxsb2NfYm9vdF9wYWdlcyhQRk5fVVAoc2xpdC0+aGVh ZGVyLmxlbmd0aCksIDEpOwotCWlmICghbWZuKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiQUNQSTog VW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgIgotCQkgICAgICAgInNhdmluZyBBQ1BJIFNM SVQgbnVtYSBpbmZvcm1hdGlvbi5cbiIpOwotCQlyZXR1cm47Ci0JfQotCWFjcGlfc2xpdCA9IG1m bl90b192aXJ0KG1mbik7Ci0JbWVtY3B5KGFjcGlfc2xpdCwgc2xpdCwgc2xpdC0+aGVhZGVyLmxl bmd0aCk7Ci19Ci0KIC8qIENhbGxiYWNrIGZvciBQcm94aW1pdHkgRG9tYWluIC0+IHgyQVBJQyBt YXBwaW5nICovCiB2b2lkIF9faW5pdAogYWNwaV9udW1hX3gyYXBpY19hZmZpbml0eV9pbml0KGNv bnN0IHN0cnVjdCBhY3BpX3NyYXRfeDJhcGljX2NwdV9hZmZpbml0eSAqcGEpCkBAIC00NTYsMTgg KzM0Myw2IEBAIGludCBfX2luaXQgYWNwaV9zY2FuX25vZGVzKHU2NCBzdGFydCwgdTY0IGVuZCkK IAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHVuc2lnbmVkIG5vZGVfdG9fcHhtKG5vZGVpZF90IG4p Ci17Ci0JdW5zaWduZWQgaTsKLQotCWlmICgobiA8IEFSUkFZX1NJWkUocHhtMm5vZGUpKSAmJiAo cHhtMm5vZGVbbl0ubm9kZSA9PSBuKSkKLQkJcmV0dXJuIHB4bTJub2RlW25dLnB4bTsKLQlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShweG0ybm9kZSk7IGkrKykKLQkJaWYgKHB4bTJub2RlW2ld Lm5vZGUgPT0gbikKLQkJCXJldHVybiBweG0ybm9kZVtpXS5weG07Ci0JcmV0dXJuIDA7Ci19Ci0K IHU4IF9fbm9kZV9kaXN0YW5jZShub2RlaWRfdCBhLCBub2RlaWRfdCBiKQogewogCXVuc2lnbmVk IGluZGV4OwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jIGIveGVuL2FyY2gv eDg2L3g4Nl82NC9tbS5jCmluZGV4IDllYWQwMmUuLmY4MjNmYjMgMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL3g4Ni94ODZfNjQvbW0uYworKysgYi94ZW4vYXJjaC94ODYveDg2XzY0L21tLmMKQEAgLTI3 LDYgKzI3LDcgQEAgYXNtKCIuZmlsZSBcIiIgX19GSUxFX18gIlwiIik7CiAjaW5jbHVkZSA8eGVu L2d1ZXN0X2FjY2Vzcy5oPgogI2luY2x1ZGUgPHhlbi9oeXBlcmNhbGwuaD4KICNpbmNsdWRlIDx4 ZW4vbWVtX2FjY2Vzcy5oPgorI2luY2x1ZGUgPHhlbi9zcmF0Lmg+CiAjaW5jbHVkZSA8YXNtL2N1 cnJlbnQuaD4KICNpbmNsdWRlIDxhc20vYXNtX2RlZm5zLmg+CiAjaW5jbHVkZSA8YXNtL3BhZ2Uu aD4KZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vTWFrZWZpbGUgYi94ZW4vY29tbW9uL01ha2VmaWxl CmluZGV4IGMxYmQyZmYuLmE2NjgwOTQgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vTWFrZWZpbGUK KysrIGIveGVuL2NvbW1vbi9NYWtlZmlsZQpAQCAtNjQsNiArNjQsNyBAQCBvYmotYmluLXkgKz0g d2FybmluZy5pbml0Lm8KIG9iai0kKENPTkZJR19YRU5PUFJPRikgKz0geGVub3Byb2Yubwogb2Jq LXkgKz0geG1hbGxvY190bHNmLm8KIG9iai15ICs9IG51bWEubworb2JqLXkgKz0gc3JhdC5vCiAK IG9iai1iaW4tJChDT05GSUdfWDg2KSArPSAkKGZvcmVhY2ggbixkZWNvbXByZXNzIGJ1bnppcDIg dW54eiB1bmx6bWEgdW5sem8gdW5sejQgZWFybHljcGlvLCQobikuaW5pdC5vKQogCmRpZmYgLS1n aXQgYS94ZW4vY29tbW9uL3NyYXQuYyBiL3hlbi9jb21tb24vc3JhdC5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNTBjNzgKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vY29t bW9uL3NyYXQuYwpAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAqIEFDUEkgMy4wIGJhc2VkIE5VTUEg c2V0dXAKKyAqIENvcHlyaWdodCAyMDA0IEFuZGkgS2xlZW4sIFN1U0UgTGFicy4KKyAqCisgKiBS ZWFkcyB0aGUgQUNQSSBTUkFUIHRhYmxlIHRvIGZpZ3VyZSBvdXQgd2hhdCBtZW1vcnkgYmVsb25n cyB0byB3aGljaCBDUFVzLgorICoKKyAqIENhbGxlZCBmcm9tIGFjcGlfbnVtYV9pbml0IHdoaWxl IHJlYWRpbmcgdGhlIFNSQVQgYW5kIFNMSVQgdGFibGVzLgorICogQXNzdW1lcyBhbGwgbWVtb3J5 IHJlZ2lvbnMgYmVsb25naW5nIHRvIGEgc2luZ2xlIHByb3hpbWl0eSBkb21haW4KKyAqIGFyZSBp biBvbmUgY2h1bmsuIEhvbGVzIGJldHdlZW4gdGhlbSB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBu b2RlLgorICoKKyAqIEFkYXB0ZWQgZm9yIFhlbjogUnlhbiBIYXJwZXIgPHJ5YW5oQHVzLmlibS5j b20+CisgKgorICogTW92ZWQgdGhpcyBnZW5lcmljIGNvZGUgZnJvbSB4ZW4vYXJjaC94ODYvc3Jh dC5jIGZvciBvdGhlciBhcmNoIHVzYWdlCisgKiBieSBWaWpheWEgS3VtYXIgSyA8VmlqYXlhLkt1 bWFyQGNhdml1bS5jb20+CisgKi8KKworI2luY2x1ZGUgPHhlbi9pbml0Lmg+CisjaW5jbHVkZSA8 eGVuL21tLmg+CisjaW5jbHVkZSA8eGVuL2ludHR5cGVzLmg+CisjaW5jbHVkZSA8eGVuL25vZGVt YXNrLmg+CisjaW5jbHVkZSA8eGVuL2FjcGkuaD4KKyNpbmNsdWRlIDx4ZW4vbnVtYS5oPgorI2lu Y2x1ZGUgPHhlbi9wZm4uaD4KKyNpbmNsdWRlIDx4ZW4vc3JhdC5oPgorI2luY2x1ZGUgPGFzbS9w YWdlLmg+CisKK3N0cnVjdCBhY3BpX3RhYmxlX3NsaXQgKl9fcmVhZF9tb3N0bHkgYWNwaV9zbGl0 OworZXh0ZXJuIHN0cnVjdCBub2RlIG5vZGVzW01BWF9OVU1OT0RFU10gX19pbml0ZGF0YTsKKwor c3RydWN0IHB4bTJub2RlIF9fcmVhZF9tb3N0bHkgcHhtMm5vZGVbTUFYX05VTU5PREVTXSA9Cisg ICAgeyBbMCAuLi4gTUFYX05VTU5PREVTIC0gMV0gPSB7Lm5vZGUgPSBOVU1BX05PX05PREV9IH07 CisKK3N0YXRpYyBpbmxpbmUgYm9vbF90IG5vZGVfZm91bmQodW5zaWduZWQgaWR4LCB1bnNpZ25l ZCBweG0pCit7CisgICAgcmV0dXJuICgocHhtMm5vZGVbaWR4XS5weG0gPT0gcHhtKSAmJgorICAg ICAgICAocHhtMm5vZGVbaWR4XS5ub2RlICE9IE5VTUFfTk9fTk9ERSkpOworfQorCitub2RlaWRf dCBweG1fdG9fbm9kZSh1bnNpZ25lZCBweG0pCit7CisgICAgdW5zaWduZWQgaTsKKworICAgIGlm ICggKHB4bSA8IEFSUkFZX1NJWkUocHhtMm5vZGUpKSAmJiBub2RlX2ZvdW5kKHB4bSwgcHhtKSAp CisgICAgICAgIHJldHVybiBweG0ybm9kZVtweG1dLm5vZGU7CisKKyAgICBmb3IgKCBpID0gMDsg aSA8IEFSUkFZX1NJWkUocHhtMm5vZGUpOyBpKysgKQorICAgICAgICBpZiAoIG5vZGVfZm91bmQo aSwgcHhtKSApCisgICAgICAgICAgICByZXR1cm4gcHhtMm5vZGVbaV0ubm9kZTsKKworICAgIHJl dHVybiBOVU1BX05PX05PREU7Cit9CisKK25vZGVpZF90IHNldHVwX25vZGUodW5zaWduZWQgcHht KQoreworICAgIG5vZGVpZF90IG5vZGU7CisgICAgdW5zaWduZWQgaWR4OworICAgIHN0YXRpYyBi b29sX3Qgd2FybmVkOworICAgIHN0YXRpYyB1bnNpZ25lZCBub2Rlc19mb3VuZDsKKworICAgIEJV SUxEX0JVR19PTihNQVhfTlVNTk9ERVMgPj0gTlVNQV9OT19OT0RFKTsKKworICAgIGlmICggcHht IDwgQVJSQVlfU0laRShweG0ybm9kZSkgKSB7CisgICAgICAgIGlmIChub2RlX2ZvdW5kKHB4bSwg cHhtKSkKKyAgICAgICAgICAgIHJldHVybiBweG0ybm9kZVtweG1dLm5vZGU7CisKKyAgICAgICAg LyogVHJ5IHRvIG1haW50YWluIGluZGV4aW5nIG9mIHB4bTJub2RlIGJ5IHB4bSAqLworICAgICAg ICBpZiAoIHB4bTJub2RlW3B4bV0ubm9kZSA9PSBOVU1BX05PX05PREUgKSB7CisgICAgICAgICAg ICBpZHggPSBweG07CisgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgfQorICAgIH0K KworICAgIGZvciAoIGlkeCA9IDA7IGlkeCA8IEFSUkFZX1NJWkUocHhtMm5vZGUpOyBpZHgrKyAp CisgICAgICAgIGlmICggcHhtMm5vZGVbaWR4XS5ub2RlID09IE5VTUFfTk9fTk9ERSApCisgICAg ICAgICAgICBnb3RvIGZpbmlzaDsKKworICAgIGlmICggIXdhcm5lZCApIHsKKyAgICAgICAgcHJp bnRrKEtFUk5fV0FSTklORyAiU1JBVDogVG9vIG1hbnkgcHJveGltaXR5IGRvbWFpbnMgKCUjeClc biIsCisgICAgICAgICAgICAgICBweG0pOworICAgICAgICB3YXJuZWQgPSAxOworICAgIH0KKwor ICAgIHJldHVybiBOVU1BX05PX05PREU7CisKKyBmaW5pc2g6CisgICAgbm9kZSA9IG5vZGVzX2Zv dW5kKys7CisgICAgaWYgKG5vZGUgPj0gTUFYX05VTU5PREVTKQorICAgICAgICByZXR1cm4gTlVN QV9OT19OT0RFOworICAgIHB4bTJub2RlW2lkeF0ucHhtID0gcHhtOworICAgIHB4bTJub2RlW2lk eF0ubm9kZSA9IG5vZGU7CisKKyAgICByZXR1cm4gbm9kZTsKK30KKworLyoKKyAqIEEgbG90IG9m IEJJT1MgZmlsbCBpbiAxMCAoPSBubyBkaXN0YW5jZSkgZXZlcnl3aGVyZS4gVGhpcyBtZXNzZXMK KyAqIHVwIHRoZSBOVU1BIGhldXJpc3RpY3Mgd2hpY2ggd2FudHMgdGhlIGxvY2FsIG5vZGUgdG8g aGF2ZSBhIHNtYWxsZXIKKyAqIGRpc3RhbmNlIHRoYW4gdGhlIG90aGVycy4KKyAqIERvIHNvbWUg cXVpY2sgY2hlY2tzIGhlcmUgYW5kIG9ubHkgdXNlIHRoZSBTTElUIGlmIGl0IHBhc3Nlcy4KKyAq Lworc3RhdGljIF9faW5pdCBpbnQgc2xpdF92YWxpZChzdHJ1Y3QgYWNwaV90YWJsZV9zbGl0ICpz bGl0KQoreworICAgIGludCBpLCBqOworICAgIGludCBkID0gc2xpdC0+bG9jYWxpdHlfY291bnQ7 CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IGQ7IGkrKyApIHsKKyAgICAgICAgZm9yICggaiA9IDA7 IGogPCBkOyBqKysgKSAgeworICAgICAgICAgICAgdTggdmFsID0gc2xpdC0+ZW50cnlbZCppICsg al07CisgICAgICAgICAgICBpZiAoIGkgPT0gaiApIHsKKyAgICAgICAgICAgICAgICBpZiAodmFs ICE9IDEwKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0gZWxz ZSBpZiAoIHZhbCA8PSAxMCApCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0K KyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworLyogQ2FsbGJhY2sgZm9yIFNMSVQgcGFyc2lu ZyAqLwordm9pZCBfX2luaXQgYWNwaV9udW1hX3NsaXRfaW5pdChzdHJ1Y3QgYWNwaV90YWJsZV9z bGl0ICpzbGl0KQoreworICAgIHVuc2lnbmVkIGxvbmcgbWZuOworCisgICAgaWYgKCAhc2xpdF92 YWxpZChzbGl0KSApIHsKKyAgICAgICAgcHJpbnRrKEtFUk5fSU5GTyAiQUNQSTogU0xJVCB0YWJs ZSBsb29rcyBpbnZhbGlkLiAiCisgICAgICAgICAgICAgICAiTm90IHVzZWQuXG4iKTsKKyAgICAg ICAgcmV0dXJuOworICAgIH0KKyAgICBtZm4gPSBhbGxvY19ib290X3BhZ2VzKFBGTl9VUChzbGl0 LT5oZWFkZXIubGVuZ3RoKSwgMSk7CisgICAgaWYgKCAhbWZuICkgeworICAgICAgICBwcmludGso S0VSTl9FUlIgIkFDUEk6IFVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yICIKKyAgICAgICAg ICAgICAgICJzYXZpbmcgQUNQSSBTTElUIG51bWEgaW5mb3JtYXRpb24uXG4iKTsKKyAgICAgICAg cmV0dXJuOworICAgIH0KKyAgICBhY3BpX3NsaXQgPSBtZm5fdG9fdmlydChtZm4pOworICAgIG1l bWNweShhY3BpX3NsaXQsIHNsaXQsIHNsaXQtPmhlYWRlci5sZW5ndGgpOworfQorCit1bnNpZ25l ZCBub2RlX3RvX3B4bShub2RlaWRfdCBuKQoreworICAgIHVuc2lnbmVkIGk7CisKKyAgICBpZiAo IChuIDwgQVJSQVlfU0laRShweG0ybm9kZSkpICYmIChweG0ybm9kZVtuXS5ub2RlID09IG4pICkK KyAgICAgICAgcmV0dXJuIHB4bTJub2RlW25dLnB4bTsKKyAgICBmb3IgKCBpID0gMDsgaSA8IEFS UkFZX1NJWkUocHhtMm5vZGUpOyBpKysgKQorICAgICAgICBpZiAoIHB4bTJub2RlW2ldLm5vZGUg PT0gbiApCisgICAgICAgICAgICByZXR1cm4gcHhtMm5vZGVbaV0ucHhtOworICAgIHJldHVybiAw OworfQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMgYi94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYwppbmRleCBhNWM2MWM2Li43YTQ0NjNk IDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYworKysgYi94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYwpAQCAtMzAsNiArMzAsNyBAQAogI2lu Y2x1ZGUgPHhlbi9wY2kuaD4KICNpbmNsdWRlIDx4ZW4vcGNpX3JlZ3MuaD4KICNpbmNsdWRlIDx4 ZW4va2V5aGFuZGxlci5oPgorI2luY2x1ZGUgPHhlbi9zcmF0Lmg+CiAjaW5jbHVkZSA8YXNtL21z aS5oPgogI2luY2x1ZGUgPGFzbS9pcnEuaD4KICNpbmNsdWRlIDxhc20vaHZtL3ZteC92bXguaD4K ZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbnVtYS5oIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni9udW1hLmgKaW5kZXggNjU5ZmY2YS4uNzlhNDQ1YyAxMDA2NDQKLS0tIGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni9udW1hLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9udW1hLmgKQEAgLTE3 LDggKzE3LDYgQEAgZXh0ZXJuIGNwdW1hc2tfdCAgICAgbm9kZV90b19jcHVtYXNrW107CiAjZGVm aW5lIG5vZGVfdG9fZmlyc3RfY3B1KG5vZGUpICAoX19mZnMobm9kZV90b19jcHVtYXNrW25vZGVd KSkKICNkZWZpbmUgbm9kZV90b19jcHVtYXNrKG5vZGUpICAgIChub2RlX3RvX2NwdW1hc2tbbm9k ZV0pCiAKLWV4dGVybiBub2RlaWRfdCBweG1fdG9fbm9kZSh1bnNpZ25lZCBpbnQgcHhtKTsKLQog I2RlZmluZSBaT05FX0FMSUdOICgxVUwgPDwgKE1BWF9PUkRFUitQQUdFX1NISUZUKSkKIAogZXh0 ZXJuIHZvaWQgbnVtYV9pbml0X2FycmF5KHZvaWQpOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUv eGVuL251bWEuaCBiL3hlbi9pbmNsdWRlL3hlbi9udW1hLmgKaW5kZXggNGYwNGFiNC4uZWIxODM4 MCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL251bWEuaAorKysgYi94ZW4vaW5jbHVkZS94 ZW4vbnVtYS5oCkBAIC03Myw3ICs3Myw2IEBAIGV4dGVybiBpbnQgdmFsaWRfbnVtYV9yYW5nZSh1 NjQgc3RhcnQsIHU2NCBlbmQsIG5vZGVpZF90IG5vZGUpOwogZXh0ZXJuIGludCBjb25mbGljdGlu Z19tZW1ibGtzKHU2NCBzdGFydCwgdTY0IGVuZCk7CiBleHRlcm4gdm9pZCBjdXRvZmZfbm9kZShp bnQgaSwgdTY0IHN0YXJ0LCB1NjQgZW5kKTsKIGV4dGVybiB2b2lkIG51bWFfYWRkX2NwdShpbnQg Y3B1KTsKLWV4dGVybiBub2RlaWRfdCBzZXR1cF9ub2RlKHVuc2lnbmVkIGludCBweG0pOwogZXh0 ZXJuIHZvaWQgbnVtYV9zZXRfbm9kZShpbnQgY3B1LCBub2RlaWRfdCBub2RlKTsKIGV4dGVybiB2 b2lkIHNldHVwX25vZGVfYm9vdG1lbShub2RlaWRfdCBub2RlaWQsIHU2NCBzdGFydCwgdTY0IGVu ZCk7CiBleHRlcm4gaW50IGNvbXB1dGVfaGFzaF9zaGlmdChzdHJ1Y3Qgbm9kZSAqbm9kZXMsIGlu dCBudW1ub2RlcywKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9zcmF0LmggYi94ZW4vaW5j bHVkZS94ZW4vc3JhdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OGYx ZTgKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vaW5jbHVkZS94ZW4vc3JhdC5oCkBAIC0wLDAgKzEs MTMgQEAKKyNpZm5kZWYgX19YRU5fU1JBVF9IX18KKyNkZWZpbmUgX19YRU5fU1JBVF9IX18KKwor c3RydWN0IHB4bTJub2RlIHsKKyAgICB1bnNpZ25lZCBweG07CisgICAgbm9kZWlkX3Qgbm9kZTsK K307CisKK2V4dGVybiBzdHJ1Y3QgcHhtMm5vZGUgX19yZWFkX21vc3RseSBweG0ybm9kZVtNQVhf TlVNTk9ERVNdOworbm9kZWlkX3QgcHhtX3RvX25vZGUodW5zaWduZWQgcHhtKTsKK25vZGVpZF90 IHNldHVwX25vZGUodW5zaWduZWQgcHhtKTsKK3Vuc2lnbmVkIG5vZGVfdG9fcHhtKG5vZGVpZF90 IG4pOworI2VuZGlmIC8qIF9fWEVOX1NSQVRfSF9fICovCi0tIAoyLjcuNAoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZl bAo=