From mboxrd@z Thu Jan 1 00:00:00 1970 From: vijay.kilari@gmail.com Subject: [RFC PATCH v3 03/24] x86: NUMA: Fix datatypes and attributes Date: Tue, 18 Jul 2017 17:11:25 +0530 Message-ID: <1500378106-2620-4-git-send-email-vijay.kilari@gmail.com> References: <1500378106-2620-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: <1500378106-2620-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: kevin.tian@intel.com, sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, dario.faggioli@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 RnJvbTogVmlqYXlhIEt1bWFyIEsgPFZpamF5YS5LdW1hckBjYXZpdW0uY29tPgoKQ2hhbmdlIHV7 OCwzMiw2NH0gdG8gdWludHs4LDMyLDY0fV90LCB1NjQgdG8gcGFkZHJfdAp3aGVyZXZlciBhcHBs aWNhYmxlLgpGaXggYXR0cmlidXRlcyBjb2Rpbmcgc3R5bGVzLgpBbHNvIGNoYW5nZWQKICAtIFNv bWUgdmFyaWFibGVzIGZyb20gaW50IHRvIHVuc2lnbmVkIGludAogIC0gVXNlZCBwZm5fdG9fcGFk ZHIvcGFkZHJfdG9fcGZuIHdoZXJlZXZlciByZXF1aXJlZC4KICAtIEFsbG9jIG1lbW5vZGVtYXBb XSBvZiBzaXplIEJJVFNfUEVSX0xPTkcuCgpTaWduZWQtb2ZmLWJ5OiBWaWpheWEgS3VtYXIgSyA8 VmlqYXlhLkt1bWFyQGNhdml1bS5jb20+Ci0tLQp2MzogLSBDaGFuZ2UgdW5zaWduZWQgdG8gdW5z aWduZWQgaW50CiAgICAtIFVwZGF0ZSBjb21taXQgbWVzc2FnZQogICAgLSBEcm9wIGNoYW5naW5n IG1lbW5vZGVfc2hpZnQgYXMgdW5zaWduZWQgaW50CiAgICAtIFVzZWQgcGZuX3RvX3BhZGRyL3Bh ZGRyX3RvX3BmbgogICAgLSBBbGxvYyBtZW1ub2RlbWFwW10gb2Ygc2l6ZSBCSVRTX1BFUl9MT05H Ci0tLQogeGVuL2FyY2gveDg2L251bWEuYyAgICAgICAgfCA1NCArKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLQogeGVuL2FyY2gveDg2L3NyYXQuYyAgICAgICAgfCA2NCArKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vaW5jbHVkZS9h c20tYXJtL251bWEuaCB8ICAyICstCiB4ZW4vaW5jbHVkZS9hc20teDg2L2FjcGkuaCB8ICAyICst CiB4ZW4vaW5jbHVkZS9hc20teDg2L251bWEuaCB8IDE2ICsrKysrKy0tLS0tLQogNSBmaWxlcyBj aGFuZ2VkLCA3MiBpbnNlcnRpb25zKCspLCA2NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvbnVtYS5jIGIveGVuL2FyY2gveDg2L251bWEuYwppbmRleCA0NDRkN2FkLi5h YTRhN2MxIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbnVtYS5jCisrKyBiL3hlbi9hcmNoL3g4 Ni9udW1hLmMKQEAgLTI1LDExICsyNSwxNyBAQCBzdHJ1Y3Qgbm9kZV9kYXRhIG5vZGVfZGF0YVtN QVhfTlVNTk9ERVNdOwogCiAvKiBNYXBwaW5nIGZyb20gcGR4IHRvIG5vZGUgaWQgKi8KIGludCBt ZW1ub2RlX3NoaWZ0Owotc3RhdGljIHR5cGVvZigqbWVtbm9kZW1hcCkgX21lbW5vZGVtYXBbNjRd OworCisvKgorICogSW4gY2FzZSBvZiBudW1hIGluaXQgZmFpbHVyZSBvciBudW1hIG9mZiwKKyAq IG1lbW5vZGVfc2hpZnQgaXMgaW5pdGlhbGl6ZWQgdG8gQklUU19QRVJfTE9ORyAtIDEuIEhlbmNl IGFsbG9jYXRlCisgKiBtZW1ub2RlbWFwW10gb2YgQklUU19QRVJfTE9ORy4KKyAqLworc3RhdGlj IHR5cGVvZigqbWVtbm9kZW1hcCkgX21lbW5vZGVtYXBbQklUU19QRVJfTE9OR107CiB1bnNpZ25l ZCBsb25nIG1lbW5vZGVtYXBzaXplOwotdTggKm1lbW5vZGVtYXA7Cit1aW50OF90ICptZW1ub2Rl bWFwOwogCi1ub2RlaWRfdCBjcHVfdG9fbm9kZVtOUl9DUFVTXSBfX3JlYWRfbW9zdGx5ID0gewor bm9kZWlkX3QgX19yZWFkX21vc3RseSBjcHVfdG9fbm9kZVtOUl9DUFVTXSA9IHsKICAgICBbMCAu Li4gTlJfQ1BVUy0xXSA9IE5VTUFfTk9fTk9ERQogfTsKIC8qCkBAIC0zOCw3ICs0NCw3IEBAIG5v ZGVpZF90IGNwdV90b19ub2RlW05SX0NQVVNdIF9fcmVhZF9tb3N0bHkgPSB7CiBub2RlaWRfdCBh cGljaWRfdG9fbm9kZVtNQVhfTE9DQUxfQVBJQ10gPSB7CiAgICAgWzAgLi4uIE1BWF9MT0NBTF9B UElDLTFdID0gTlVNQV9OT19OT0RFCiB9OwotY3B1bWFza190IG5vZGVfdG9fY3B1bWFza1tNQVhf TlVNTk9ERVNdIF9fcmVhZF9tb3N0bHk7CitjcHVtYXNrX3QgX19yZWFkX21vc3RseSBub2RlX3Rv X2NwdW1hc2tbTUFYX05VTU5PREVTXTsKIAogbm9kZW1hc2tfdCBfX3JlYWRfbW9zdGx5IG5vZGVf b25saW5lX21hcCA9IHsgeyBbMF0gPSAxVUwgfSB9OwogCkBAIC0xNjYsMTIgKzE3MiwxMiBAQCBp bnQgX19pbml0IGNvbXB1dGVfaGFzaF9zaGlmdChzdHJ1Y3Qgbm9kZSAqbm9kZXMsIGludCBudW1u b2RlcywKICAgICByZXR1cm4gc2hpZnQ7CiB9CiAvKiBpbml0aWFsaXplIE5PREVfREFUQSBnaXZl biBub2RlaWQgYW5kIHN0YXJ0L2VuZCAqLwotdm9pZCBfX2luaXQgc2V0dXBfbm9kZV9ib290bWVt KG5vZGVpZF90IG5vZGVpZCwgdTY0IHN0YXJ0LCB1NjQgZW5kKQordm9pZCBfX2luaXQgc2V0dXBf bm9kZV9ib290bWVtKG5vZGVpZF90IG5vZGVpZCwgcGFkZHJfdCBzdGFydCwgcGFkZHJfdCBlbmQp CiB7CiAgICAgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIGVuZF9wZm47CiAKLSAgICBzdGFydF9w Zm4gPSBzdGFydCA+PiBQQUdFX1NISUZUOwotICAgIGVuZF9wZm4gPSBlbmQgPj4gUEFHRV9TSElG VDsKKyAgICBzdGFydF9wZm4gPSBwYWRkcl90b19wZm4oc3RhcnQpOworICAgIGVuZF9wZm4gPSBw YWRkcl90b19wZm4oZW5kKTsKIAogICAgIE5PREVfREFUQShub2RlaWQpLT5ub2RlX3N0YXJ0X3Bm biA9IHN0YXJ0X3BmbjsKICAgICBOT0RFX0RBVEEobm9kZWlkKS0+bm9kZV9zcGFubmVkX3BhZ2Vz ID0gZW5kX3BmbiAtIHN0YXJ0X3BmbjsKQEAgLTIwMSwxOSArMjA3LDIwIEBAIHZvaWQgX19pbml0 IG51bWFfaW5pdF9hcnJheSh2b2lkKQogfQogCiAjaWZkZWYgQ09ORklHX05VTUFfRU1VCi1zdGF0 aWMgaW50IG51bWFfZmFrZSBfX2luaXRkYXRhID0gMDsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgX19p bml0ZGF0YSBudW1hX2Zha2U7CiAKIC8qIE51bWEgZW11bGF0aW9uICovCi1zdGF0aWMgaW50IF9f aW5pdCBudW1hX2VtdWxhdGlvbih1NjQgc3RhcnRfcGZuLCB1NjQgZW5kX3BmbikKK3N0YXRpYyBp bnQgX19pbml0IG51bWFfZW11bGF0aW9uKHVpbnQ2NF90IHN0YXJ0X3BmbiwgdWludDY0X3QgZW5k X3BmbikKIHsKLSAgICBpbnQgaTsKKyAgICB1bnNpZ25lZCBpbnQgaTsKICAgICBzdHJ1Y3Qgbm9k ZSBub2Rlc1tNQVhfTlVNTk9ERVNdOwotICAgIHU2NCBzeiA9ICgoZW5kX3BmbiAtIHN0YXJ0X3Bm bikgPDwgUEFHRV9TSElGVCkgLyBudW1hX2Zha2U7CisgICAgdWludDY0X3Qgc3ogPSAoKGVuZF9w Zm4gLSBzdGFydF9wZm4pIDw8IFBBR0VfU0hJRlQpIC8gbnVtYV9mYWtlOwogCiAgICAgLyogS2x1 ZGdlIG5lZWRlZCBmb3IgdGhlIGhhc2ggZnVuY3Rpb24gKi8KICAgICBpZiAoIGh3ZWlnaHQ2NChz eikgPiAxICkKICAgICB7Ci0gICAgICAgIHU2NCB4ID0gMTsKKyAgICAgICAgdWludDY0X3QgeCA9 IDE7CisKICAgICAgICAgd2hpbGUgKCAoeCA8PCAxKSA8IHN6ICkKICAgICAgICAgICAgIHggPDw9 IDE7CiAgICAgICAgIGlmICggeCA8IHN6IC8gMiApCkBAIC0yMjUsOSArMjMyLDkgQEAgc3RhdGlj IGludCBfX2luaXQgbnVtYV9lbXVsYXRpb24odTY0IHN0YXJ0X3BmbiwgdTY0IGVuZF9wZm4pCiAg ICAgbWVtc2V0KCZub2RlcywwLHNpemVvZihub2RlcykpOwogICAgIGZvciAoIGkgPSAwOyBpIDwg bnVtYV9mYWtlOyBpKysgKQogICAgIHsKLSAgICAgICAgbm9kZXNbaV0uc3RhcnQgPSAoc3RhcnRf cGZuIDw8IFBBR0VfU0hJRlQpICsgaSAqIHN6OworICAgICAgICBub2Rlc1tpXS5zdGFydCA9IHBm bl90b19wYWRkcihzdGFydF9wZm4pICsgaSAqIHN6OwogICAgICAgICBpZiAoIGkgPT0gbnVtYV9m YWtlIC0gMSApCi0gICAgICAgICAgICBzeiA9IChlbmRfcGZuIDw8IFBBR0VfU0hJRlQpIC0gbm9k ZXNbaV0uc3RhcnQ7CisgICAgICAgICAgICBzeiA9IHBmbl90b19wYWRkcihlbmRfcGZuKSAtIG5v ZGVzW2ldLnN0YXJ0OwogICAgICAgICBub2Rlc1tpXS5lbmQgPSBub2Rlc1tpXS5zdGFydCArIHN6 OwogICAgICAgICBwcmludGsoS0VSTl9JTkZPCiAgICAgICAgICAgICAgICAiRmFraW5nIG5vZGUg JWQgYXQgJSJQUkl4NjQiLSUiUFJJeDY0IiAoJSJQUkl1NjQiTUIpXG4iLApAQCAtMjYwLDggKzI2 Nyw4IEBAIHZvaWQgX19pbml0IG51bWFfaW5pdG1lbV9pbml0KHVuc2lnbmVkIGxvbmcgc3RhcnRf cGZuLCB1bnNpZ25lZCBsb25nIGVuZF9wZm4pCiAjZW5kaWYKIAogI2lmZGVmIENPTkZJR19BQ1BJ X05VTUEKLSAgICBpZiAoICFudW1hX29mZiAmJiAhYWNwaV9zY2FuX25vZGVzKCh1NjQpc3RhcnRf cGZuIDw8IFBBR0VfU0hJRlQsCi0gICAgICAgICAodTY0KWVuZF9wZm4gPDwgUEFHRV9TSElGVCkg KQorICAgIGlmICggIW51bWFfb2ZmICYmCisgICAgICAgICAhYWNwaV9zY2FuX25vZGVzKHBmbl90 b19wYWRkcihzdGFydF9wZm4pLCBwZm5fdG9fcGFkZHIoZW5kX3BmbikpICkKICAgICAgICAgcmV0 dXJuOwogI2VuZGlmCiAKQEAgLTI2OSw4ICsyNzYsNyBAQCB2b2lkIF9faW5pdCBudW1hX2luaXRt ZW1faW5pdCh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgdW5zaWduZWQgbG9uZyBlbmRfcGZuKQog ICAgICAgICAgICBudW1hX29mZiA/ICJOVU1BIHR1cm5lZCBvZmYiIDogIk5vIE5VTUEgY29uZmln dXJhdGlvbiBmb3VuZCIpOwogCiAgICAgcHJpbnRrKEtFUk5fSU5GTyAiRmFraW5nIGEgbm9kZSBh dCAlMDE2IlBSSXg2NCItJTAxNiJQUkl4NjQiXG4iLAotICAgICAgICAgICAodTY0KXN0YXJ0X3Bm biA8PCBQQUdFX1NISUZULAotICAgICAgICAgICAodTY0KWVuZF9wZm4gPDwgUEFHRV9TSElGVCk7 CisgICAgICAgICAgIHBmbl90b19wYWRkcihzdGFydF9wZm4pLCBwZm5fdG9fcGFkZHIoZW5kX3Bm bikpOwogICAgIC8qIHNldHVwIGR1bW15IG5vZGUgY292ZXJpbmcgYWxsIG1lbW9yeSAqLwogICAg IG1lbW5vZGVfc2hpZnQgPSBCSVRTX1BFUl9MT05HIC0gMTsKICAgICBtZW1ub2RlbWFwID0gX21l bW5vZGVtYXA7CkBAIC0yNzksOCArMjg1LDcgQEAgdm9pZCBfX2luaXQgbnVtYV9pbml0bWVtX2lu aXQodW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIHVuc2lnbmVkIGxvbmcgZW5kX3BmbikKICAgICBm b3IgKCBpID0gMDsgaSA8IG5yX2NwdV9pZHM7IGkrKyApCiAgICAgICAgIG51bWFfc2V0X25vZGUo aSwgMCk7CiAgICAgY3B1bWFza19jb3B5KCZub2RlX3RvX2NwdW1hc2tbMF0sIGNwdW1hc2tfb2Yo MCkpOwotICAgIHNldHVwX25vZGVfYm9vdG1lbSgwLCAodTY0KXN0YXJ0X3BmbiA8PCBQQUdFX1NI SUZULAotICAgICAgICAgICAgICAgICAgICAodTY0KWVuZF9wZm4gPDwgUEFHRV9TSElGVCk7Cisg ICAgc2V0dXBfbm9kZV9ib290bWVtKDAsIHBmbl90b19wYWRkcihzdGFydF9wZm4pLCBwZm5fdG9f cGFkZHIoZW5kX3BmbikpOwogfQogCiB2b2lkIG51bWFfYWRkX2NwdShpbnQgY3B1KQpAQCAtMjk0 LDcgKzI5OSw3IEBAIHZvaWQgbnVtYV9zZXRfbm9kZShpbnQgY3B1LCBub2RlaWRfdCBub2RlKQog fQogCiAvKiBbbnVtYT1vZmZdICovCi1zdGF0aWMgX19pbml0IGludCBudW1hX3NldHVwKGNoYXIg Km9wdCkKK3N0YXRpYyBpbnQgX19pbml0IG51bWFfc2V0dXAoY2hhciAqb3B0KQogewogICAgIGlm ICggIXN0cm5jbXAob3B0LCAib2ZmIiwgMykgKQogICAgICAgICBudW1hX29mZiA9IHRydWU7CkBA IC0zMzksNyArMzQ0LDggQEAgdm9pZCBfX2luaXQgaW5pdF9jcHVfdG9fbm9kZSh2b2lkKQogCiAg ICAgZm9yICggaSA9IDA7IGkgPCBucl9jcHVfaWRzOyBpKysgKQogICAgIHsKLSAgICAgICAgdTMy IGFwaWNpZCA9IHg4Nl9jcHVfdG9fYXBpY2lkW2ldOworICAgICAgICB1aW50MzJfdCBhcGljaWQg PSB4ODZfY3B1X3RvX2FwaWNpZFtpXTsKKwogICAgICAgICBpZiAoIGFwaWNpZCA9PSBCQURfQVBJ Q0lEICkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBub2RlID0gYXBpY2lkIDwgTUFY X0xPQ0FMX0FQSUMgPyBhcGljaWRfdG9fbm9kZVthcGljaWRdIDogTlVNQV9OT19OT0RFOwpAQCAt MzgwLDcgKzM4Niw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfbnVtYSh1bnNpZ25lZCBjaGFyIGtleSkK ICAgICBjb25zdCBzdHJ1Y3Qgdm51bWFfaW5mbyAqdm51bWE7CiAKICAgICBwcmludGsoIiclYycg cHJlc3NlZCAtPiBkdW1waW5nIG51bWEgaW5mbyAobm93LTB4JVg6JTA4WClcbiIsIGtleSwKLSAg ICAgICAgICAgKHUzMikobm93ID4+IDMyKSwgKHUzMilub3cpOworICAgICAgICAgICAodWludDMy X3QpKG5vdyA+PiAzMiksICh1aW50MzJfdClub3cpOwogCiAgICAgZm9yX2VhY2hfb25saW5lX25v ZGUgKCBpICkKICAgICB7CkBAIC01MDcsNyArNTEzLDcgQEAgc3RhdGljIHZvaWQgZHVtcF9udW1h KHVuc2lnbmVkIGNoYXIga2V5KQogICAgIHJjdV9yZWFkX3VubG9jaygmZG9tbGlzdF9yZWFkX2xv Y2spOwogfQogCi1zdGF0aWMgX19pbml0IGludCByZWdpc3Rlcl9udW1hX3RyaWdnZXIodm9pZCkK K3N0YXRpYyBpbnQgX19pbml0IHJlZ2lzdGVyX251bWFfdHJpZ2dlcih2b2lkKQogewogICAgIHJl Z2lzdGVyX2tleWhhbmRsZXIoJ3UnLCBkdW1wX251bWEsICJkdW1wIE5VTUEgaW5mbyIsIDEpOwog ICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3NyYXQuYyBiL3hlbi9hcmNo L3g4Ni9zcmF0LmMKaW5kZXggZWMwODExMi4uMjA5ZmZjNyAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L3NyYXQuYworKysgYi94ZW4vYXJjaC94ODYvc3JhdC5jCkBAIC0yMywzMyArMjMsMzMgQEAK IAogc3RhdGljIHN0cnVjdCBhY3BpX3RhYmxlX3NsaXQgKl9fcmVhZF9tb3N0bHkgYWNwaV9zbGl0 OwogCi1zdGF0aWMgbm9kZW1hc2tfdCBtZW1vcnlfbm9kZXNfcGFyc2VkIF9faW5pdGRhdGE7Ci1z dGF0aWMgbm9kZW1hc2tfdCBwcm9jZXNzb3Jfbm9kZXNfcGFyc2VkIF9faW5pdGRhdGE7Ci1zdGF0 aWMgc3RydWN0IG5vZGUgbm9kZXNbTUFYX05VTU5PREVTXSBfX2luaXRkYXRhOworc3RhdGljIG5v ZGVtYXNrX3QgX19pbml0ZGF0YSBtZW1vcnlfbm9kZXNfcGFyc2VkOworc3RhdGljIG5vZGVtYXNr X3QgX19pbml0ZGF0YSBwcm9jZXNzb3Jfbm9kZXNfcGFyc2VkOworc3RhdGljIHN0cnVjdCBub2Rl IF9faW5pdGRhdGEgbm9kZXNbTUFYX05VTU5PREVTXTsKIAogc3RydWN0IHB4bTJub2RlIHsKLQl1 bnNpZ25lZCBweG07CisJdW5zaWduZWQgaW50IHB4bTsKIAlub2RlaWRfdCBub2RlOwogfTsKIHN0 YXRpYyBzdHJ1Y3QgcHhtMm5vZGUgX19yZWFkX21vc3RseSBweG0ybm9kZVtNQVhfTlVNTk9ERVNd ID0KIAl7IFswIC4uLiBNQVhfTlVNTk9ERVMgLSAxXSA9IHsubm9kZSA9IE5VTUFfTk9fTk9ERX0g fTsKIAotc3RhdGljIHVuc2lnbmVkIG5vZGVfdG9fcHhtKG5vZGVpZF90IG4pOworc3RhdGljIHVu c2lnbmVkIGludCBub2RlX3RvX3B4bShub2RlaWRfdCBuKTsKIAogc3RhdGljIGludCBudW1fbm9k ZV9tZW1ibGtzOwogc3RhdGljIHN0cnVjdCBub2RlIG5vZGVfbWVtYmxrX3JhbmdlW05SX05PREVf TUVNQkxLU107CiBzdGF0aWMgbm9kZWlkX3QgbWVtYmxrX25vZGVpZFtOUl9OT0RFX01FTUJMS1Nd Owogc3RhdGljIF9faW5pdGRhdGEgREVDTEFSRV9CSVRNQVAobWVtYmxrX2hvdHBsdWcsIE5SX05P REVfTUVNQkxLUyk7CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBub2RlX2ZvdW5kKHVuc2lnbmVkIGlk eCwgdW5zaWduZWQgcHhtKQorc3RhdGljIGlubGluZSBib29sIG5vZGVfZm91bmQodW5zaWduZWQg aW50IGlkeCwgdW5zaWduZWQgaW50IHB4bSkKIHsKIAlyZXR1cm4gKChweG0ybm9kZVtpZHhdLnB4 bSA9PSBweG0pICYmCiAJCShweG0ybm9kZVtpZHhdLm5vZGUgIT0gTlVNQV9OT19OT0RFKSk7CiB9 CiAKLW5vZGVpZF90IHB4bV90b19ub2RlKHVuc2lnbmVkIHB4bSkKK25vZGVpZF90IHB4bV90b19u b2RlKHVuc2lnbmVkIGludCBweG0pCiB7Ci0JdW5zaWduZWQgaTsKKwl1bnNpZ25lZCBpbnQgaTsK IAogCWlmICgocHhtIDwgQVJSQVlfU0laRShweG0ybm9kZSkpICYmIG5vZGVfZm91bmQocHhtLCBw eG0pKQogCQlyZXR1cm4gcHhtMm5vZGVbcHhtXS5ub2RlOwpAQCAtNjEsMTIgKzYxLDEyIEBAIG5v ZGVpZF90IHB4bV90b19ub2RlKHVuc2lnbmVkIHB4bSkKIAlyZXR1cm4gTlVNQV9OT19OT0RFOwog fQogCi1ub2RlaWRfdCBzZXR1cF9ub2RlKHVuc2lnbmVkIHB4bSkKK25vZGVpZF90IHNldHVwX25v ZGUodW5zaWduZWQgaW50IHB4bSkKIHsKIAlub2RlaWRfdCBub2RlOwotCXVuc2lnbmVkIGlkeDsK Kwl1bnNpZ25lZCBpbnQgaWR4OwogCXN0YXRpYyBib29sIHdhcm5lZDsKLQlzdGF0aWMgdW5zaWdu ZWQgbm9kZXNfZm91bmQ7CisJc3RhdGljIHVuc2lnbmVkIGludCBub2Rlc19mb3VuZDsKIAogCUJV SUxEX0JVR19PTihNQVhfTlVNTk9ERVMgPj0gTlVNQV9OT19OT0RFKTsKIApAQCAtMTAzLDcgKzEw Myw3IEBAIG5vZGVpZF90IHNldHVwX25vZGUodW5zaWduZWQgcHhtKQogCXJldHVybiBub2RlOwog fQogCi1pbnQgdmFsaWRfbnVtYV9yYW5nZSh1NjQgc3RhcnQsIHU2NCBlbmQsIG5vZGVpZF90IG5v ZGUpCitpbnQgdmFsaWRfbnVtYV9yYW5nZShwYWRkcl90IHN0YXJ0LCBwYWRkcl90IGVuZCwgbm9k ZWlkX3Qgbm9kZSkKIHsKIAlpbnQgaTsKIApAQCAtMTE4LDcgKzExOCw3IEBAIGludCB2YWxpZF9u dW1hX3JhbmdlKHU2NCBzdGFydCwgdTY0IGVuZCwgbm9kZWlkX3Qgbm9kZSkKIAlyZXR1cm4gMDsK IH0KIAotc3RhdGljIF9faW5pdCBpbnQgY29uZmxpY3RpbmdfbWVtYmxrcyh1NjQgc3RhcnQsIHU2 NCBlbmQpCitzdGF0aWMgaW50IF9faW5pdCBjb25mbGljdGluZ19tZW1ibGtzKHBhZGRyX3Qgc3Rh cnQsIHBhZGRyX3QgZW5kKQogewogCWludCBpOwogCkBAIC0xMzQsNyArMTM0LDcgQEAgc3RhdGlj IF9faW5pdCBpbnQgY29uZmxpY3RpbmdfbWVtYmxrcyh1NjQgc3RhcnQsIHU2NCBlbmQpCiAJcmV0 dXJuIC0xOwogfQogCi1zdGF0aWMgX19pbml0IHZvaWQgY3V0b2ZmX25vZGUoaW50IGksIHU2NCBz dGFydCwgdTY0IGVuZCkKK3N0YXRpYyB2b2lkIF9faW5pdCBjdXRvZmZfbm9kZShub2RlaWRfdCBp LCBwYWRkcl90IHN0YXJ0LCBwYWRkcl90IGVuZCkKIHsKIAlzdHJ1Y3Qgbm9kZSAqbmQgPSAmbm9k ZXNbaV07CiAJaWYgKG5kLT5zdGFydCA8IHN0YXJ0KSB7CkBAIC0xNDksNyArMTQ5LDcgQEAgc3Rh dGljIF9faW5pdCB2b2lkIGN1dG9mZl9ub2RlKGludCBpLCB1NjQgc3RhcnQsIHU2NCBlbmQpCiAJ fQogfQogCi1zdGF0aWMgX19pbml0IHZvaWQgYmFkX3NyYXQodm9pZCkKK3N0YXRpYyB2b2lkIF9f aW5pdCBiYWRfc3JhdCh2b2lkKQogewogCWludCBpOwogCXByaW50ayhLRVJOX0VSUiAiU1JBVDog U1JBVCBub3QgdXNlZC5cbiIpOwpAQCAtMTY3LDEzICsxNjcsMTMgQEAgc3RhdGljIF9faW5pdCB2 b2lkIGJhZF9zcmF0KHZvaWQpCiAgKiBkaXN0YW5jZSB0aGFuIHRoZSBvdGhlcnMuCiAgKiBEbyBz b21lIHF1aWNrIGNoZWNrcyBoZXJlIGFuZCBvbmx5IHVzZSB0aGUgU0xJVCBpZiBpdCBwYXNzZXMu CiAgKi8KLXN0YXRpYyBfX2luaXQgaW50IHNsaXRfdmFsaWQoc3RydWN0IGFjcGlfdGFibGVfc2xp dCAqc2xpdCkKK3N0YXRpYyBpbnQgX19pbml0IHNsaXRfdmFsaWQoc3RydWN0IGFjcGlfdGFibGVf c2xpdCAqc2xpdCkKIHsKIAlpbnQgaSwgajsKIAlpbnQgZCA9IHNsaXQtPmxvY2FsaXR5X2NvdW50 OwogCWZvciAoaSA9IDA7IGkgPCBkOyBpKyspIHsKIAkJZm9yIChqID0gMDsgaiA8IGQ7IGorKykg IHsKLQkJCXU4IHZhbCA9IHNsaXQtPmVudHJ5W2QqaSArIGpdOworCQkJdWludDhfdCB2YWwgPSBz bGl0LT5lbnRyeVtkKmkgKyBqXTsKIAkJCWlmIChpID09IGopIHsKIAkJCQlpZiAodmFsICE9IDEw KQogCQkJCQlyZXR1cm4gMDsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIF9faW5pdCBhY3BpX251 bWFfc2xpdF9pbml0KHN0cnVjdCBhY3BpX3RhYmxlX3NsaXQgKnNsaXQpCiB2b2lkIF9faW5pdAog YWNwaV9udW1hX3gyYXBpY19hZmZpbml0eV9pbml0KGNvbnN0IHN0cnVjdCBhY3BpX3NyYXRfeDJh cGljX2NwdV9hZmZpbml0eSAqcGEpCiB7Ci0JdW5zaWduZWQgcHhtOworCXVuc2lnbmVkIGludCBw eG07CiAJbm9kZWlkX3Qgbm9kZTsKIAogCWlmIChzcmF0X2Rpc2FibGVkKCkpCkBAIC0yNDEsNyAr MjQxLDcgQEAgYWNwaV9udW1hX3gyYXBpY19hZmZpbml0eV9pbml0KGNvbnN0IHN0cnVjdCBhY3Bp X3NyYXRfeDJhcGljX2NwdV9hZmZpbml0eSAqcGEpCiB2b2lkIF9faW5pdAogYWNwaV9udW1hX3By b2Nlc3Nvcl9hZmZpbml0eV9pbml0KGNvbnN0IHN0cnVjdCBhY3BpX3NyYXRfY3B1X2FmZmluaXR5 ICpwYSkKIHsKLQl1bnNpZ25lZCBweG07CisJdW5zaWduZWQgaW50IHB4bTsKIAlub2RlaWRfdCBu b2RlOwogCiAJaWYgKHNyYXRfZGlzYWJsZWQoKSkKQEAgLTI3NCw4ICsyNzQsOCBAQCBhY3BpX251 bWFfcHJvY2Vzc29yX2FmZmluaXR5X2luaXQoY29uc3Qgc3RydWN0IGFjcGlfc3JhdF9jcHVfYWZm aW5pdHkgKnBhKQogdm9pZCBfX2luaXQKIGFjcGlfbnVtYV9tZW1vcnlfYWZmaW5pdHlfaW5pdChj b25zdCBzdHJ1Y3QgYWNwaV9zcmF0X21lbV9hZmZpbml0eSAqbWEpCiB7Ci0JdTY0IHN0YXJ0LCBl bmQ7Ci0JdW5zaWduZWQgcHhtOworCXBhZGRyX3Qgc3RhcnQsIGVuZDsKKwl1bnNpZ25lZCBpbnQg cHhtOwogCW5vZGVpZF90IG5vZGU7CiAJaW50IGk7CiAKQEAgLTQwMSw3ICs0MDEsNyBAQCBzdGF0 aWMgaW50IF9faW5pdCBub2Rlc19jb3Zlcl9tZW1vcnkodm9pZCkKIAogdm9pZCBfX2luaXQgYWNw aV9udW1hX2FyY2hfZml4dXAodm9pZCkge30KIAotc3RhdGljIHU2NCBfX2luaXRkYXRhIHNyYXRf cmVnaW9uX21hc2s7CitzdGF0aWMgdWludDY0X3QgX19pbml0ZGF0YSBzcmF0X3JlZ2lvbl9tYXNr OwogCiBzdGF0aWMgaW50IF9faW5pdCBzcmF0X3BhcnNlX3JlZ2lvbihzdHJ1Y3QgYWNwaV9zdWJ0 YWJsZV9oZWFkZXIgKmhlYWRlciwKIAkJCQkgICAgY29uc3QgdW5zaWduZWQgbG9uZyBlbmQpCkBA IC00MjgsOSArNDI4LDkgQEAgc3RhdGljIGludCBfX2luaXQgc3JhdF9wYXJzZV9yZWdpb24oc3Ry dWN0IGFjcGlfc3VidGFibGVfaGVhZGVyICpoZWFkZXIsCiAJcmV0dXJuIDA7CiB9CiAKLXZvaWQg X19pbml0IHNyYXRfcGFyc2VfcmVnaW9ucyh1NjQgYWRkcikKK3ZvaWQgX19pbml0IHNyYXRfcGFy c2VfcmVnaW9ucyhwYWRkcl90IGFkZHIpCiB7Ci0JdTY0IG1hc2s7CisJdWludDY0X3QgbWFzazsK IAl1bnNpZ25lZCBpbnQgaTsKIAogCWlmIChhY3BpX2Rpc2FibGVkIHx8IGFjcGlfbnVtYSA8IDAg fHwKQEAgLTQ1Myw5ICs0NTMsOSBAQCB2b2lkIF9faW5pdCBzcmF0X3BhcnNlX3JlZ2lvbnModTY0 IGFkZHIpCiB9CiAKIC8qIFVzZSB0aGUgaW5mb3JtYXRpb24gZGlzY292ZXJlZCBhYm92ZSB0byBh Y3R1YWxseSBzZXQgdXAgdGhlIG5vZGVzLiAqLwotaW50IF9faW5pdCBhY3BpX3NjYW5fbm9kZXMo dTY0IHN0YXJ0LCB1NjQgZW5kKQoraW50IF9faW5pdCBhY3BpX3NjYW5fbm9kZXMocGFkZHJfdCBz dGFydCwgcGFkZHJfdCBlbmQpCiB7Ci0JaW50IGk7CisJdW5zaWduZWQgaW50IGk7CiAJbm9kZW1h c2tfdCBhbGxfbm9kZXNfcGFyc2VkOwogCiAJLyogRmlyc3QgY2xlYW4gdXAgdGhlIG5vZGUgbGlz dCAqLwpAQCAtNDg1LDcgKzQ4NSw3IEBAIGludCBfX2luaXQgYWNwaV9zY2FuX25vZGVzKHU2NCBz dGFydCwgdTY0IGVuZCkKIAkvKiBGaW5hbGx5IHJlZ2lzdGVyIG5vZGVzICovCiAJZm9yX2VhY2hf bm9kZV9tYXNrKGksIGFsbF9ub2Rlc19wYXJzZWQpCiAJewotCQl1NjQgc2l6ZSA9IG5vZGVzW2ld LmVuZCAtIG5vZGVzW2ldLnN0YXJ0OworCQl1aW50NjRfdCBzaXplID0gbm9kZXNbaV0uZW5kIC0g bm9kZXNbaV0uc3RhcnQ7CiAJCWlmICggc2l6ZSA9PSAwICkKIAkJCXByaW50ayhLRVJOX1dBUk5J TkcgIlNSQVQ6IE5vZGUgJXUgaGFzIG5vIG1lbW9yeS4gIgogCQkJICAgICAgICJCSU9TIEJ1ZyBv ciBtaXMtY29uZmlndXJlZCBoYXJkd2FyZT9cbiIsIGkpOwpAQCAtNTAyLDkgKzUwMiw5IEBAIGlu dCBfX2luaXQgYWNwaV9zY2FuX25vZGVzKHU2NCBzdGFydCwgdTY0IGVuZCkKIAlyZXR1cm4gMDsK IH0KIAotc3RhdGljIHVuc2lnbmVkIG5vZGVfdG9fcHhtKG5vZGVpZF90IG4pCitzdGF0aWMgdW5z aWduZWQgaW50IG5vZGVfdG9fcHhtKG5vZGVpZF90IG4pCiB7Ci0JdW5zaWduZWQgaTsKKwl1bnNp Z25lZCBpbnQgaTsKIAogCWlmICgobiA8IEFSUkFZX1NJWkUocHhtMm5vZGUpKSAmJiAocHhtMm5v ZGVbbl0ubm9kZSA9PSBuKSkKIAkJcmV0dXJuIHB4bTJub2RlW25dLnB4bTsKQEAgLTUxNCwxMCAr NTE0LDEwIEBAIHN0YXRpYyB1bnNpZ25lZCBub2RlX3RvX3B4bShub2RlaWRfdCBuKQogCXJldHVy biAwOwogfQogCi11OCBfX25vZGVfZGlzdGFuY2Uobm9kZWlkX3QgYSwgbm9kZWlkX3QgYikKK3Vp bnQ4X3QgX19ub2RlX2Rpc3RhbmNlKG5vZGVpZF90IGEsIG5vZGVpZF90IGIpCiB7Ci0JdW5zaWdu ZWQgaW5kZXg7Ci0JdTggc2xpdF92YWw7CisJdW5zaWduZWQgaW50IGluZGV4OworCXVpbnQ4X3Qg c2xpdF92YWw7CiAKIAlpZiAoIWFjcGlfc2xpdCkKIAkJcmV0dXJuIGEgPT0gYiA/IDEwIDogMjA7 CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL251bWEuaCBiL3hlbi9pbmNsdWRlL2Fz bS1hcm0vbnVtYS5oCmluZGV4IGEyYzFhMzQuLjUzZjk5YWYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNs dWRlL2FzbS1hcm0vbnVtYS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vbnVtYS5oCkBAIC0x LDcgKzEsNyBAQAogI2lmbmRlZiBfX0FSQ0hfQVJNX05VTUFfSAogI2RlZmluZSBfX0FSQ0hfQVJN X05VTUFfSAogCi10eXBlZGVmIHU4IG5vZGVpZF90OwordHlwZWRlZiB1aW50OF90IG5vZGVpZF90 OwogCiAvKiBGYWtlIG9uZSBub2RlIGZvciBub3cuIFNlZSBhbHNvIG5vZGVfb25saW5lX21hcC4g Ki8KICNkZWZpbmUgY3B1X3RvX25vZGUoY3B1KSAwCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9h c20teDg2L2FjcGkuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvYWNwaS5oCmluZGV4IDE1YmU3ODQu LmE2ZmFkMWUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvYWNwaS5oCisrKyBiL3hl bi9pbmNsdWRlL2FzbS14ODYvYWNwaS5oCkBAIC0xMDQsNyArMTA0LDcgQEAgZXh0ZXJuIHZvaWQg YWNwaV9yZXNlcnZlX2Jvb3RtZW0odm9pZCk7CiAjZGVmaW5lIEFSQ0hfSEFTX1BPV0VSX0lOSVQJ MQogCiBleHRlcm4gczggYWNwaV9udW1hOwotZXh0ZXJuIGludCBhY3BpX3NjYW5fbm9kZXModTY0 IHN0YXJ0LCB1NjQgZW5kKTsKK2V4dGVybiBpbnQgYWNwaV9zY2FuX25vZGVzKHBhZGRyX3Qgc3Rh cnQsIHBhZGRyX3QgZW5kKTsKIAogI2lmZGVmIENPTkZJR19BQ1BJX1NMRUVQCiAKZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbnVtYS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9udW1h LmgKaW5kZXggYzBkZTU3Yi4uNWU4NDc0ZiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4 Ni9udW1hLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9udW1hLmgKQEAgLTYsNyArNiw3IEBA CiAjZGVmaW5lIE1BWF9OVU1OT0RFUyAgICBOUl9OT0RFUwogI2RlZmluZSBOUl9OT0RFX01FTUJM S1MgKE1BWF9OVU1OT0RFUyAqIDIpCiAKLXR5cGVkZWYgdTggbm9kZWlkX3Q7Cit0eXBlZGVmIHVp bnQ4X3Qgbm9kZWlkX3Q7CiAKIGV4dGVybiBpbnQgc3JhdF9yZXY7CiAKQEAgLTE5LDggKzE5LDgg QEAgZXh0ZXJuIGNwdW1hc2tfdCAgICAgbm9kZV90b19jcHVtYXNrW107CiAjZGVmaW5lIG5vZGVf dG9fY3B1bWFzayhub2RlKSAgICAobm9kZV90b19jcHVtYXNrW25vZGVdKQogCiBzdHJ1Y3Qgbm9k ZSB7Ci0gICAgdTY0IHN0YXJ0OwotICAgIHU2NCBlbmQ7CisgICAgcGFkZHJfdCBzdGFydDsKKyAg ICBwYWRkcl90IGVuZDsKIH07CiAKIGV4dGVybiBpbnQgY29tcHV0ZV9oYXNoX3NoaWZ0KHN0cnVj dCBub2RlICpub2RlcywgaW50IG51bW5vZGVzLApAQCAtMzksMTQgKzM5LDE0IEBAIGV4dGVybiB2 b2lkIG51bWFfc2V0X25vZGUoaW50IGNwdSwgbm9kZWlkX3Qgbm9kZSk7CiBleHRlcm4gbm9kZWlk X3Qgc2V0dXBfbm9kZSh1bnNpZ25lZCBpbnQgcHhtKTsKIGV4dGVybiB2b2lkIHNyYXRfZGV0ZWN0 X25vZGUoaW50IGNwdSk7CiAKLWV4dGVybiB2b2lkIHNldHVwX25vZGVfYm9vdG1lbShub2RlaWRf dCBub2RlaWQsIHU2NCBzdGFydCwgdTY0IGVuZCk7CitleHRlcm4gdm9pZCBzZXR1cF9ub2RlX2Jv b3RtZW0obm9kZWlkX3Qgbm9kZWlkLCBwYWRkcl90IHN0YXJ0LCBwYWRkcl90IGVuZCk7CiBleHRl cm4gbm9kZWlkX3QgYXBpY2lkX3RvX25vZGVbXTsKIGV4dGVybiB2b2lkIGluaXRfY3B1X3RvX25v ZGUodm9pZCk7CiAKIC8qIFNpbXBsZSBwZXJmZWN0IGhhc2ggdG8gbWFwIHBkeCB0byBub2RlIG51 bWJlcnMgKi8KIGV4dGVybiBpbnQgbWVtbm9kZV9zaGlmdDsKIGV4dGVybiB1bnNpZ25lZCBsb25n IG1lbW5vZGVtYXBzaXplOwotZXh0ZXJuIHU4ICptZW1ub2RlbWFwOworZXh0ZXJuIHVpbnQ4X3Qg Km1lbW5vZGVtYXA7CiAKIHN0cnVjdCBub2RlX2RhdGEgewogICAgIHVuc2lnbmVkIGxvbmcgbm9k ZV9zdGFydF9wZm47CkBAIC03MywxMCArNzMsMTAgQEAgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9wdXJlX18gbm9kZWlkX3QgcGh5c190b19uaWQocGFkZHJfdCBhZGRyKQogI2RlZmluZSBub2Rl X2VuZF9wZm4obmlkKSAgICAgICBOT0RFX0RBVEEobmlkKS0+bm9kZV9zdGFydF9wZm4gKyBcCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT0RFX0RBVEEobmlkKS0+bm9kZV9zcGFu bmVkX3BhZ2VzCiAKLWV4dGVybiBpbnQgdmFsaWRfbnVtYV9yYW5nZSh1NjQgc3RhcnQsIHU2NCBl bmQsIG5vZGVpZF90IG5vZGUpOworZXh0ZXJuIGludCB2YWxpZF9udW1hX3JhbmdlKHBhZGRyX3Qg c3RhcnQsIHBhZGRyX3QgZW5kLCBub2RlaWRfdCBub2RlKTsKIAotdm9pZCBzcmF0X3BhcnNlX3Jl Z2lvbnModTY0IGFkZHIpOwotZXh0ZXJuIHU4IF9fbm9kZV9kaXN0YW5jZShub2RlaWRfdCBhLCBu b2RlaWRfdCBiKTsKK3ZvaWQgc3JhdF9wYXJzZV9yZWdpb25zKHBhZGRyX3QgYWRkcik7CitleHRl cm4gdWludDhfdCBfX25vZGVfZGlzdGFuY2Uobm9kZWlkX3QgYSwgbm9kZWlkX3QgYik7CiB1bnNp Z25lZCBpbnQgYXJjaF9nZXRfZG1hX2JpdHNpemUodm9pZCk7CiAKICNlbmRpZgotLSAKMi43LjQK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVu Lm9yZy94ZW4tZGV2ZWwK