From mboxrd@z Thu Jan 1 00:00:00 1970 From: vijay.kilari@gmail.com Subject: [RFC PATCH v2 02/25] x86: NUMA: Fix datatypes and attributes Date: Tue, 28 Mar 2017 21:23:10 +0530 Message-ID: <1490716413-19796-3-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 RnJvbTogVmlqYXlhIEt1bWFyIEsgPFZpamF5YS5LdW1hckBjYXZpdW0uY29tPgoKQ2hhbmdlIHV7 OCwzMiw2NH0gdG8gdWludHs4LDMyLDY0fV90IGFuZCBib29sX3QgdG8gYm9vbC4KRml4IGF0dHJp YnV0ZXMgY29kaW5nIHN0eWxlcy4KQWxzbyBjaGFuZ2UgbWVtbm9kZXNoaWZ0IHRvIHVuc2lnbmVk IGludC4KClNpZ25lZC1vZmYtYnk6IFZpamF5YSBLdW1hciBLIDxWaWpheWEuS3VtYXJAY2F2aXVt LmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvbnVtYS5jICAgICAgICB8IDQwICsrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvc3JhdC5jICAgICAgICB8IDUyICsr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9pbmNsdWRl L2FzbS1hcm0vbnVtYS5oIHwgIDIgKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvbnVtYS5oIHwgMTcg KysrKysrKystLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDU2IGluc2VydGlvbnMoKyksIDU1IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9udW1hLmMgYi94ZW4vYXJjaC94 ODYvbnVtYS5jCmluZGV4IDhlZTIzMDIuLjhlZDMxY2IgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9udW1hLmMKKysrIGIveGVuL2FyY2gveDg2L251bWEuYwpAQCAtMjQsMTIgKzI0LDEyIEBAIGN1 c3RvbV9wYXJhbSgibnVtYSIsIG51bWFfc2V0dXApOwogc3RydWN0IG5vZGVfZGF0YSBub2RlX2Rh dGFbTUFYX05VTU5PREVTXTsKIAogLyogTWFwcGluZyBmcm9tIHBkeCB0byBub2RlIGlkICovCi1p bnQgbWVtbm9kZV9zaGlmdDsKK3Vuc2lnbmVkIGludCBtZW1ub2RlX3NoaWZ0Owogc3RhdGljIHR5 cGVvZigqbWVtbm9kZW1hcCkgX21lbW5vZGVtYXBbNjRdOwogdW5zaWduZWQgbG9uZyBtZW1ub2Rl bWFwc2l6ZTsKLXU4ICptZW1ub2RlbWFwOwordWludDhfdCAqbWVtbm9kZW1hcDsKIAotbm9kZWlk X3QgY3B1X3RvX25vZGVbTlJfQ1BVU10gX19yZWFkX21vc3RseSA9IHsKK25vZGVpZF90IF9fcmVh ZF9tb3N0bHkgY3B1X3RvX25vZGVbTlJfQ1BVU10gPSB7CiAgICAgWzAgLi4uIE5SX0NQVVMtMV0g PSBOVU1BX05PX05PREUKIH07CiAvKgpAQCAtMzgsMTEgKzM4LDExIEBAIG5vZGVpZF90IGNwdV90 b19ub2RlW05SX0NQVVNdIF9fcmVhZF9tb3N0bHkgPSB7CiBub2RlaWRfdCBhcGljaWRfdG9fbm9k ZVtNQVhfTE9DQUxfQVBJQ10gPSB7CiAgICAgWzAgLi4uIE1BWF9MT0NBTF9BUElDLTFdID0gTlVN QV9OT19OT0RFCiB9OwotY3B1bWFza190IG5vZGVfdG9fY3B1bWFza1tNQVhfTlVNTk9ERVNdIF9f cmVhZF9tb3N0bHk7CitjcHVtYXNrX3QgX19yZWFkX21vc3RseSBub2RlX3RvX2NwdW1hc2tbTUFY X05VTU5PREVTXTsKIAogbm9kZW1hc2tfdCBfX3JlYWRfbW9zdGx5IG5vZGVfb25saW5lX21hcCA9 IHsgeyBbMF0gPSAxVUwgfSB9OwogCi1ib29sX3QgbnVtYV9vZmYgPSAwOworYm9vbCBudW1hX29m ZiA9IDA7CiBzOCBhY3BpX251bWEgPSAwOwogCiBpbnQgc3JhdF9kaXNhYmxlZCh2b2lkKQpAQCAt MTY2LDcgKzE2Niw3IEBAIGludCBfX2luaXQgY29tcHV0ZV9oYXNoX3NoaWZ0KHN0cnVjdCBub2Rl ICpub2RlcywgaW50IG51bW5vZGVzLAogICAgIHJldHVybiBzaGlmdDsKIH0KIC8qIGluaXRpYWxp emUgTk9ERV9EQVRBIGdpdmVuIG5vZGVpZCBhbmQgc3RhcnQvZW5kICovCi12b2lkIF9faW5pdCBz ZXR1cF9ub2RlX2Jvb3RtZW0obm9kZWlkX3Qgbm9kZWlkLCB1NjQgc3RhcnQsIHU2NCBlbmQpCit2 b2lkIF9faW5pdCBzZXR1cF9ub2RlX2Jvb3RtZW0obm9kZWlkX3Qgbm9kZWlkLCBwYWRkcl90IHN0 YXJ0LCBwYWRkcl90IGVuZCkKIHsKICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgZW5kX3Bm bjsKIApAQCAtMjAxLDE5ICsyMDEsMTkgQEAgdm9pZCBfX2luaXQgbnVtYV9pbml0X2FycmF5KHZv aWQpCiB9CiAKICNpZmRlZiBDT05GSUdfTlVNQV9FTVUKLXN0YXRpYyBpbnQgbnVtYV9mYWtlIF9f aW5pdGRhdGEgPSAwOworc3RhdGljIGludCBfX2luaXRkYXRhIG51bWFfZmFrZSA9IDA7CiAKIC8q IE51bWEgZW11bGF0aW9uICovCi1zdGF0aWMgaW50IF9faW5pdCBudW1hX2VtdWxhdGlvbih1NjQg c3RhcnRfcGZuLCB1NjQgZW5kX3BmbikKK3N0YXRpYyBpbnQgX19pbml0IG51bWFfZW11bGF0aW9u KHVpbnQ2NF90IHN0YXJ0X3BmbiwgdWludDY0X3QgZW5kX3BmbikKIHsKICAgICBpbnQgaTsKICAg ICBzdHJ1Y3Qgbm9kZSBub2Rlc1tNQVhfTlVNTk9ERVNdOwotICAgIHU2NCBzeiA9ICgoZW5kX3Bm biAtIHN0YXJ0X3BmbikgPDwgUEFHRV9TSElGVCkgLyBudW1hX2Zha2U7CisgICAgdWludDY0X3Qg c3ogPSAoKGVuZF9wZm4gLSBzdGFydF9wZm4pIDw8IFBBR0VfU0hJRlQpIC8gbnVtYV9mYWtlOwog CiAgICAgLyogS2x1ZGdlIG5lZWRlZCBmb3IgdGhlIGhhc2ggZnVuY3Rpb24gKi8KICAgICBpZiAo IGh3ZWlnaHQ2NChzeikgPiAxICkKICAgICB7Ci0gICAgICAgIHU2NCB4ID0gMTsKKyAgICAgICAg dWludDY0X3QgeCA9IDE7CiAgICAgICAgIHdoaWxlICggKHggPDwgMSkgPCBzeiApCiAgICAgICAg ICAgICB4IDw8PSAxOwogICAgICAgICBpZiAoIHggPCBzeiAvIDIgKQpAQCAtMjYwLDggKzI2MCw4 IEBAIHZvaWQgX19pbml0IG51bWFfaW5pdG1lbV9pbml0KHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZu LCB1bnNpZ25lZCBsb25nIGVuZF9wZm4pCiAjZW5kaWYKIAogI2lmZGVmIENPTkZJR19BQ1BJX05V TUEKLSAgICBpZiAoICFudW1hX29mZiAmJiAhYWNwaV9zY2FuX25vZGVzKCh1NjQpc3RhcnRfcGZu IDw8IFBBR0VfU0hJRlQsCi0gICAgICAgICAodTY0KWVuZF9wZm4gPDwgUEFHRV9TSElGVCkgKQor ICAgIGlmICggIW51bWFfb2ZmICYmICFhY3BpX3NjYW5fbm9kZXMoKHVpbnQ2NF90KXN0YXJ0X3Bm biA8PCBQQUdFX1NISUZULAorICAgICAgICAgKHVpbnQ2NF90KWVuZF9wZm4gPDwgUEFHRV9TSElG VCkgKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIApAQCAtMjY5LDggKzI2OSw4IEBAIHZvaWQg X19pbml0IG51bWFfaW5pdG1lbV9pbml0KHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25l ZCBsb25nIGVuZF9wZm4pCiAgICAgICAgICAgIG51bWFfb2ZmID8gIk5VTUEgdHVybmVkIG9mZiIg OiAiTm8gTlVNQSBjb25maWd1cmF0aW9uIGZvdW5kIik7CiAKICAgICBwcmludGsoS0VSTl9JTkZP ICJGYWtpbmcgYSBub2RlIGF0ICUwMTYiUFJJeDY0Ii0lMDE2IlBSSXg2NCJcbiIsCi0gICAgICAg ICAgICh1NjQpc3RhcnRfcGZuIDw8IFBBR0VfU0hJRlQsCi0gICAgICAgICAgICh1NjQpZW5kX3Bm biA8PCBQQUdFX1NISUZUKTsKKyAgICAgICAgICAgKHVpbnQ2NF90KXN0YXJ0X3BmbiA8PCBQQUdF X1NISUZULAorICAgICAgICAgICAodWludDY0X3QpZW5kX3BmbiA8PCBQQUdFX1NISUZUKTsKICAg ICAvKiBzZXR1cCBkdW1teSBub2RlIGNvdmVyaW5nIGFsbCBtZW1vcnkgKi8KICAgICBtZW1ub2Rl X3NoaWZ0ID0gQklUU19QRVJfTE9ORyAtIDE7CiAgICAgbWVtbm9kZW1hcCA9IF9tZW1ub2RlbWFw OwpAQCAtMjc5LDggKzI3OSw4IEBAIHZvaWQgX19pbml0IG51bWFfaW5pdG1lbV9pbml0KHVuc2ln bmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nIGVuZF9wZm4pCiAgICAgZm9yICggaSA9 IDA7IGkgPCBucl9jcHVfaWRzOyBpKysgKQogICAgICAgICBudW1hX3NldF9ub2RlKGksIDApOwog ICAgIGNwdW1hc2tfY29weSgmbm9kZV90b19jcHVtYXNrWzBdLCBjcHVtYXNrX29mKDApKTsKLSAg ICBzZXR1cF9ub2RlX2Jvb3RtZW0oMCwgKHU2NClzdGFydF9wZm4gPDwgUEFHRV9TSElGVCwKLSAg ICAgICAgICAgICAgICAgICAgKHU2NCllbmRfcGZuIDw8IFBBR0VfU0hJRlQpOworICAgIHNldHVw X25vZGVfYm9vdG1lbSgwLCAocGFkZHJfdClzdGFydF9wZm4gPDwgUEFHRV9TSElGVCwKKyAgICAg ICAgICAgICAgICAgICAgKHBhZGRyX3QpZW5kX3BmbiA8PCBQQUdFX1NISUZUKTsKIH0KIAogdm9p ZCBudW1hX2FkZF9jcHUoaW50IGNwdSkKQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkIG51bWFfc2V0 X25vZGUoaW50IGNwdSwgbm9kZWlkX3Qgbm9kZSkKIH0KIAogLyogW251bWE9b2ZmXSAqLwotc3Rh dGljIF9faW5pdCBpbnQgbnVtYV9zZXR1cChjaGFyICpvcHQpCitzdGF0aWMgaW50IF9faW5pdCBu dW1hX3NldHVwKGNoYXIgKm9wdCkKIHsKICAgICBpZiAoICFzdHJuY21wKG9wdCwib2ZmIiwzKSAp CiAgICAgICAgIG51bWFfb2ZmID0gMTsKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIF9faW5pdCBp bml0X2NwdV90b19ub2RlKHZvaWQpCiAKICAgICBmb3IgKCBpID0gMDsgaSA8IG5yX2NwdV9pZHM7 IGkrKyApCiAgICAgewotICAgICAgICB1MzIgYXBpY2lkID0geDg2X2NwdV90b19hcGljaWRbaV07 CisgICAgICAgIHVpbnQzMl90IGFwaWNpZCA9IHg4Nl9jcHVfdG9fYXBpY2lkW2ldOwogICAgICAg ICBpZiAoIGFwaWNpZCA9PSBCQURfQVBJQ0lEICkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg ICAgICBub2RlID0gYXBpY2lkIDwgTUFYX0xPQ0FMX0FQSUMgPyBhcGljaWRfdG9fbm9kZVthcGlj aWRdIDogTlVNQV9OT19OT0RFOwpAQCAtMzgwLDcgKzM4MCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBf bnVtYSh1bnNpZ25lZCBjaGFyIGtleSkKICAgICBjb25zdCBzdHJ1Y3Qgdm51bWFfaW5mbyAqdm51 bWE7CiAKICAgICBwcmludGsoIiclYycgcHJlc3NlZCAtPiBkdW1waW5nIG51bWEgaW5mbyAobm93 LTB4JVg6JTA4WClcbiIsIGtleSwKLSAgICAgICAgICAgKHUzMikobm93ID4+IDMyKSwgKHUzMilu b3cpOworICAgICAgICAgICAodWludDMyX3QpKG5vdyA+PiAzMiksICh1aW50MzJfdClub3cpOwog CiAgICAgZm9yX2VhY2hfb25saW5lX25vZGUgKCBpICkKICAgICB7CkBAIC01MDcsNyArNTA3LDcg QEAgc3RhdGljIHZvaWQgZHVtcF9udW1hKHVuc2lnbmVkIGNoYXIga2V5KQogICAgIHJjdV9yZWFk X3VubG9jaygmZG9tbGlzdF9yZWFkX2xvY2spOwogfQogCi1zdGF0aWMgX19pbml0IGludCByZWdp c3Rlcl9udW1hX3RyaWdnZXIodm9pZCkKK3N0YXRpYyBpbnQgX19pbml0IHJlZ2lzdGVyX251bWFf dHJpZ2dlcih2b2lkKQogewogICAgIHJlZ2lzdGVyX2tleWhhbmRsZXIoJ3UnLCBkdW1wX251bWEs ICJkdW1wIE5VTUEgaW5mbyIsIDEpOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L3NyYXQuYyBiL3hlbi9hcmNoL3g4Ni9zcmF0LmMKaW5kZXggZDI3MGI3NS4uODAwYTdj MyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3NyYXQuYworKysgYi94ZW4vYXJjaC94ODYvc3Jh dC5jCkBAIC0yMywxMiArMjMsMTIgQEAKIAogc3RhdGljIHN0cnVjdCBhY3BpX3RhYmxlX3NsaXQg Kl9fcmVhZF9tb3N0bHkgYWNwaV9zbGl0OwogCi1zdGF0aWMgbm9kZW1hc2tfdCBtZW1vcnlfbm9k ZXNfcGFyc2VkIF9faW5pdGRhdGE7Ci1zdGF0aWMgbm9kZW1hc2tfdCBwcm9jZXNzb3Jfbm9kZXNf cGFyc2VkIF9faW5pdGRhdGE7Ci1zdGF0aWMgc3RydWN0IG5vZGUgbm9kZXNbTUFYX05VTU5PREVT XSBfX2luaXRkYXRhOworc3RhdGljIG5vZGVtYXNrX3QgX19pbml0ZGF0YSBtZW1vcnlfbm9kZXNf cGFyc2VkOworc3RhdGljIG5vZGVtYXNrX3QgX19pbml0ZGF0YSBwcm9jZXNzb3Jfbm9kZXNfcGFy c2VkOworc3RhdGljIHN0cnVjdCBub2RlIF9faW5pdGRhdGEgbm9kZXNbTUFYX05VTU5PREVTXTsK IAogc3RydWN0IHB4bTJub2RlIHsKLQl1bnNpZ25lZCBweG07CisJdW5zaWduZWQgaW50IHB4bTsK IAlub2RlaWRfdCBub2RlOwogfTsKIHN0YXRpYyBzdHJ1Y3QgcHhtMm5vZGUgX19yZWFkX21vc3Rs eSBweG0ybm9kZVtNQVhfTlVNTk9ERVNdID0KQEAgLTQxLDE1ICs0MSwxNSBAQCBzdGF0aWMgc3Ry dWN0IG5vZGUgbm9kZV9tZW1ibGtfcmFuZ2VbTlJfTk9ERV9NRU1CTEtTXTsKIHN0YXRpYyBub2Rl aWRfdCBtZW1ibGtfbm9kZWlkW05SX05PREVfTUVNQkxLU107CiBzdGF0aWMgX19pbml0ZGF0YSBE RUNMQVJFX0JJVE1BUChtZW1ibGtfaG90cGx1ZywgTlJfTk9ERV9NRU1CTEtTKTsKIAotc3RhdGlj IGlubGluZSBib29sX3Qgbm9kZV9mb3VuZCh1bnNpZ25lZCBpZHgsIHVuc2lnbmVkIHB4bSkKK3N0 YXRpYyBpbmxpbmUgYm9vbCBub2RlX2ZvdW5kKHVuc2lnbmVkIGlkeCwgdW5zaWduZWQgcHhtKQog ewogCXJldHVybiAoKHB4bTJub2RlW2lkeF0ucHhtID09IHB4bSkgJiYKIAkJKHB4bTJub2RlW2lk eF0ubm9kZSAhPSBOVU1BX05PX05PREUpKTsKIH0KIAotbm9kZWlkX3QgcHhtX3RvX25vZGUodW5z aWduZWQgcHhtKQorbm9kZWlkX3QgcHhtX3RvX25vZGUodW5zaWduZWQgaW50IHB4bSkKIHsKLQl1 bnNpZ25lZCBpOworCXVuc2lnbmVkIGludCBpOwogCiAJaWYgKChweG0gPCBBUlJBWV9TSVpFKHB4 bTJub2RlKSkgJiYgbm9kZV9mb3VuZChweG0sIHB4bSkpCiAJCXJldHVybiBweG0ybm9kZVtweG1d Lm5vZGU7CkBAIC02NCw5ICs2NCw5IEBAIG5vZGVpZF90IHB4bV90b19ub2RlKHVuc2lnbmVkIHB4 bSkKIG5vZGVpZF90IHNldHVwX25vZGUodW5zaWduZWQgcHhtKQogewogCW5vZGVpZF90IG5vZGU7 Ci0JdW5zaWduZWQgaWR4OwotCXN0YXRpYyBib29sX3Qgd2FybmVkOwotCXN0YXRpYyB1bnNpZ25l ZCBub2Rlc19mb3VuZDsKKwl1bnNpZ25lZCBpbnQgaWR4OworCXN0YXRpYyBib29sIHdhcm5lZDsK KwlzdGF0aWMgdW5zaWduZWQgaW50IG5vZGVzX2ZvdW5kOwogCiAJQlVJTERfQlVHX09OKE1BWF9O VU1OT0RFUyA+PSBOVU1BX05PX05PREUpOwogCkBAIC0xMDMsNyArMTAzLDcgQEAgbm9kZWlkX3Qg c2V0dXBfbm9kZSh1bnNpZ25lZCBweG0pCiAJcmV0dXJuIG5vZGU7CiB9CiAKLWludCB2YWxpZF9u dW1hX3JhbmdlKHU2NCBzdGFydCwgdTY0IGVuZCwgbm9kZWlkX3Qgbm9kZSkKK2ludCB2YWxpZF9u dW1hX3JhbmdlKHBhZGRyX3Qgc3RhcnQsIHBhZGRyX3QgZW5kLCBub2RlaWRfdCBub2RlKQogewog CWludCBpOwogCkBAIC0xMTgsNyArMTE4LDcgQEAgaW50IHZhbGlkX251bWFfcmFuZ2UodTY0IHN0 YXJ0LCB1NjQgZW5kLCBub2RlaWRfdCBub2RlKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgX19p bml0IGludCBjb25mbGljdGluZ19tZW1ibGtzKHU2NCBzdGFydCwgdTY0IGVuZCkKK3N0YXRpYyBp bnQgX19pbml0IGNvbmZsaWN0aW5nX21lbWJsa3MocGFkZHJfdCBzdGFydCwgcGFkZHJfdCBlbmQp CiB7CiAJaW50IGk7CiAKQEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMgX19pbml0IGludCBjb25m bGljdGluZ19tZW1ibGtzKHU2NCBzdGFydCwgdTY0IGVuZCkKIAlyZXR1cm4gLTE7CiB9CiAKLXN0 YXRpYyBfX2luaXQgdm9pZCBjdXRvZmZfbm9kZShpbnQgaSwgdTY0IHN0YXJ0LCB1NjQgZW5kKQor c3RhdGljIHZvaWQgX19pbml0IGN1dG9mZl9ub2RlKGludCBpLCBwYWRkcl90IHN0YXJ0LCBwYWRk cl90IGVuZCkKIHsKIAlzdHJ1Y3Qgbm9kZSAqbmQgPSAmbm9kZXNbaV07CiAJaWYgKG5kLT5zdGFy dCA8IHN0YXJ0KSB7CkBAIC0xNDksNyArMTQ5LDcgQEAgc3RhdGljIF9faW5pdCB2b2lkIGN1dG9m Zl9ub2RlKGludCBpLCB1NjQgc3RhcnQsIHU2NCBlbmQpCiAJfQogfQogCi1zdGF0aWMgX19pbml0 IHZvaWQgYmFkX3NyYXQodm9pZCkKK3N0YXRpYyB2b2lkIF9faW5pdCBiYWRfc3JhdCh2b2lkKQog ewogCWludCBpOwogCXByaW50ayhLRVJOX0VSUiAiU1JBVDogU1JBVCBub3QgdXNlZC5cbiIpOwpA QCAtMTY3LDEzICsxNjcsMTMgQEAgc3RhdGljIF9faW5pdCB2b2lkIGJhZF9zcmF0KHZvaWQpCiAg KiBkaXN0YW5jZSB0aGFuIHRoZSBvdGhlcnMuCiAgKiBEbyBzb21lIHF1aWNrIGNoZWNrcyBoZXJl IGFuZCBvbmx5IHVzZSB0aGUgU0xJVCBpZiBpdCBwYXNzZXMuCiAgKi8KLXN0YXRpYyBfX2luaXQg aW50IHNsaXRfdmFsaWQoc3RydWN0IGFjcGlfdGFibGVfc2xpdCAqc2xpdCkKK3N0YXRpYyBpbnQg X19pbml0IHNsaXRfdmFsaWQoc3RydWN0IGFjcGlfdGFibGVfc2xpdCAqc2xpdCkKIHsKIAlpbnQg aSwgajsKIAlpbnQgZCA9IHNsaXQtPmxvY2FsaXR5X2NvdW50OwogCWZvciAoaSA9IDA7IGkgPCBk OyBpKyspIHsKIAkJZm9yIChqID0gMDsgaiA8IGQ7IGorKykgIHsKLQkJCXU4IHZhbCA9IHNsaXQt PmVudHJ5W2QqaSArIGpdOworCQkJdWludDhfdCB2YWwgPSBzbGl0LT5lbnRyeVtkKmkgKyBqXTsK IAkJCWlmIChpID09IGopIHsKIAkJCQlpZiAodmFsICE9IDEwKQogCQkJCQlyZXR1cm4gMDsKQEAg LTI3NCw3ICsyNzQsNyBAQCBhY3BpX251bWFfcHJvY2Vzc29yX2FmZmluaXR5X2luaXQoY29uc3Qg c3RydWN0IGFjcGlfc3JhdF9jcHVfYWZmaW5pdHkgKnBhKQogdm9pZCBfX2luaXQKIGFjcGlfbnVt YV9tZW1vcnlfYWZmaW5pdHlfaW5pdChjb25zdCBzdHJ1Y3QgYWNwaV9zcmF0X21lbV9hZmZpbml0 eSAqbWEpCiB7Ci0JdTY0IHN0YXJ0LCBlbmQ7CisJdWludDY0X3Qgc3RhcnQsIGVuZDsKIAl1bnNp Z25lZCBweG07CiAJbm9kZWlkX3Qgbm9kZTsKIAlpbnQgaTsKQEAgLTMxMSw4ICszMTEsOCBAQCBh Y3BpX251bWFfbWVtb3J5X2FmZmluaXR5X2luaXQoY29uc3Qgc3RydWN0IGFjcGlfc3JhdF9tZW1f YWZmaW5pdHkgKm1hKQogCWlmIChpIDwgMCkKIAkJLyogZXZlcnl0aGluZyBmaW5lICovOwogCWVs c2UgaWYgKG1lbWJsa19ub2RlaWRbaV0gPT0gbm9kZSkgewotCQlib29sX3QgbWlzbWF0Y2ggPSAh KG1hLT5mbGFncyAmIEFDUElfU1JBVF9NRU1fSE9UX1BMVUdHQUJMRSkgIT0KLQkJICAgICAgICAg ICAgICAgICAgIXRlc3RfYml0KGksIG1lbWJsa19ob3RwbHVnKTsKKwkJYm9vbCBtaXNtYXRjaCA9 ICEobWEtPmZsYWdzICYgQUNQSV9TUkFUX01FTV9IT1RfUExVR0dBQkxFKSAhPQorCQkgICAgICAg ICAgICAgICAgIXRlc3RfYml0KGksIG1lbWJsa19ob3RwbHVnKTsKIAogCQlwcmludGsoIiVzU1JB VDogUFhNICV1ICglIlBSSXg2NCItJSJQUkl4NjQiKSBvdmVybGFwcyB3aXRoIGl0c2VsZiAoJSJQ Ukl4NjQiLSUiUFJJeDY0IilcbiIsCiAJCSAgICAgICBtaXNtYXRjaCA/IEtFUk5fRVJSIDogS0VS Tl9XQVJOSU5HLCBweG0sIHN0YXJ0LCBlbmQsCkBAIC00MDEsNyArNDAxLDcgQEAgc3RhdGljIGlu dCBfX2luaXQgbm9kZXNfY292ZXJfbWVtb3J5KHZvaWQpCiAKIHZvaWQgX19pbml0IGFjcGlfbnVt YV9hcmNoX2ZpeHVwKHZvaWQpIHt9CiAKLXN0YXRpYyB1NjQgX19pbml0ZGF0YSBzcmF0X3JlZ2lv bl9tYXNrOworc3RhdGljIHVpbnQ2NF90IF9faW5pdGRhdGEgc3JhdF9yZWdpb25fbWFzazsKIAog c3RhdGljIGludCBfX2luaXQgc3JhdF9wYXJzZV9yZWdpb24oc3RydWN0IGFjcGlfc3VidGFibGVf aGVhZGVyICpoZWFkZXIsCiAJCQkJICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgZW5kKQpAQCAtNDI4 LDkgKzQyOCw5IEBAIHN0YXRpYyBpbnQgX19pbml0IHNyYXRfcGFyc2VfcmVnaW9uKHN0cnVjdCBh Y3BpX3N1YnRhYmxlX2hlYWRlciAqaGVhZGVyLAogCXJldHVybiAwOwogfQogCi12b2lkIF9faW5p dCBzcmF0X3BhcnNlX3JlZ2lvbnModTY0IGFkZHIpCit2b2lkIF9faW5pdCBzcmF0X3BhcnNlX3Jl Z2lvbnModWludDY0X3QgYWRkcikKIHsKLQl1NjQgbWFzazsKKwl1aW50NjRfdCBtYXNrOwogCXVu c2lnbmVkIGludCBpOwogCiAJaWYgKGFjcGlfZGlzYWJsZWQgfHwgYWNwaV9udW1hIDwgMCB8fApA QCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgX19pbml0IHNyYXRfcGFyc2VfcmVnaW9ucyh1NjQgYWRk cikKIH0KIAogLyogVXNlIHRoZSBpbmZvcm1hdGlvbiBkaXNjb3ZlcmVkIGFib3ZlIHRvIGFjdHVh bGx5IHNldCB1cCB0aGUgbm9kZXMuICovCi1pbnQgX19pbml0IGFjcGlfc2Nhbl9ub2Rlcyh1NjQg c3RhcnQsIHU2NCBlbmQpCitpbnQgX19pbml0IGFjcGlfc2Nhbl9ub2Rlcyh1aW50NjRfdCBzdGFy dCwgdWludDY0X3QgZW5kKQogewogCWludCBpOwogCW5vZGVtYXNrX3QgYWxsX25vZGVzX3BhcnNl ZDsKQEAgLTQ4NSw3ICs0ODUsNyBAQCBpbnQgX19pbml0IGFjcGlfc2Nhbl9ub2Rlcyh1NjQgc3Rh cnQsIHU2NCBlbmQpCiAJLyogRmluYWxseSByZWdpc3RlciBub2RlcyAqLwogCWZvcl9lYWNoX25v ZGVfbWFzayhpLCBhbGxfbm9kZXNfcGFyc2VkKQogCXsKLQkJdTY0IHNpemUgPSBub2Rlc1tpXS5l bmQgLSBub2Rlc1tpXS5zdGFydDsKKwkJdWludDY0X3Qgc2l6ZSA9IG5vZGVzW2ldLmVuZCAtIG5v ZGVzW2ldLnN0YXJ0OwogCQlpZiAoIHNpemUgPT0gMCApCiAJCQlwcmludGsoS0VSTl9XQVJOSU5H ICJTUkFUOiBOb2RlICV1IGhhcyBubyBtZW1vcnkuICIKIAkJCSAgICAgICAiQklPUyBCdWcgb3Ig bWlzLWNvbmZpZ3VyZWQgaGFyZHdhcmU/XG4iLCBpKTsKQEAgLTUxNCwxMCArNTE0LDEwIEBAIHN0 YXRpYyB1bnNpZ25lZCBub2RlX3RvX3B4bShub2RlaWRfdCBuKQogCXJldHVybiAwOwogfQogCi11 OCBfX25vZGVfZGlzdGFuY2Uobm9kZWlkX3QgYSwgbm9kZWlkX3QgYikKK3VpbnQ4X3QgX19ub2Rl X2Rpc3RhbmNlKG5vZGVpZF90IGEsIG5vZGVpZF90IGIpCiB7CiAJdW5zaWduZWQgaW5kZXg7Ci0J dTggc2xpdF92YWw7CisJdWludDhfdCBzbGl0X3ZhbDsKIAogCWlmICghYWNwaV9zbGl0KQogCQly ZXR1cm4gYSA9PSBiID8gMTAgOiAyMDsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0v bnVtYS5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9udW1hLmgKaW5kZXggYTJjMWEzNC4uNTNmOTlh ZiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9udW1hLmgKKysrIGIveGVuL2luY2x1 ZGUvYXNtLWFybS9udW1hLmgKQEAgLTEsNyArMSw3IEBACiAjaWZuZGVmIF9fQVJDSF9BUk1fTlVN QV9ICiAjZGVmaW5lIF9fQVJDSF9BUk1fTlVNQV9ICiAKLXR5cGVkZWYgdTggbm9kZWlkX3Q7Cit0 eXBlZGVmIHVpbnQ4X3Qgbm9kZWlkX3Q7CiAKIC8qIEZha2Ugb25lIG5vZGUgZm9yIG5vdy4gU2Vl IGFsc28gbm9kZV9vbmxpbmVfbWFwLiAqLwogI2RlZmluZSBjcHVfdG9fbm9kZShjcHUpIDAKZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbnVtYS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4 Ni9udW1hLmgKaW5kZXggZGE4YTQ1OS4uNzQ4Y2RmZCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUv YXNtLXg4Ni9udW1hLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9udW1hLmgKQEAgLTUsNyAr NSw3IEBACiAKICNkZWZpbmUgTk9ERVNfU0hJRlQgNgogCi10eXBlZGVmIHU4IG5vZGVpZF90Owor dHlwZWRlZiB1aW50OF90IG5vZGVpZF90OwogCiBleHRlcm4gaW50IHNyYXRfcmV2OwogCkBAIC0x OCw3ICsxOCw4IEBAIGV4dGVybiBjcHVtYXNrX3QgICAgIG5vZGVfdG9fY3B1bWFza1tdOwogI2Rl ZmluZSBub2RlX3RvX2NwdW1hc2sobm9kZSkgICAgKG5vZGVfdG9fY3B1bWFza1tub2RlXSkKIAog c3RydWN0IG5vZGUgewotICAgIHU2NCBzdGFydCxlbmQ7CisgICAgcGFkZHJfdCBzdGFydDsKKyAg ICBwYWRkcl90IGVuZDsKIH07CiAKIGV4dGVybiBpbnQgY29tcHV0ZV9oYXNoX3NoaWZ0KHN0cnVj dCBub2RlICpub2RlcywgaW50IG51bW5vZGVzLApAQCAtMzcsMTMgKzM4LDEzIEBAIGV4dGVybiB2 b2lkIG51bWFfc2V0X25vZGUoaW50IGNwdSwgbm9kZWlkX3Qgbm9kZSk7CiBleHRlcm4gbm9kZWlk X3Qgc2V0dXBfbm9kZSh1bnNpZ25lZCBpbnQgcHhtKTsKIGV4dGVybiB2b2lkIHNyYXRfZGV0ZWN0 X25vZGUoaW50IGNwdSk7CiAKLWV4dGVybiB2b2lkIHNldHVwX25vZGVfYm9vdG1lbShub2RlaWRf dCBub2RlaWQsIHU2NCBzdGFydCwgdTY0IGVuZCk7CitleHRlcm4gdm9pZCBzZXR1cF9ub2RlX2Jv b3RtZW0obm9kZWlkX3Qgbm9kZWlkLCBwYWRkcl90IHN0YXJ0LCBwYWRkcl90IGVuZCk7CiBleHRl cm4gbm9kZWlkX3QgYXBpY2lkX3RvX25vZGVbXTsKIGV4dGVybiB2b2lkIGluaXRfY3B1X3RvX25v ZGUodm9pZCk7CiAKIC8qIFNpbXBsZSBwZXJmZWN0IGhhc2ggdG8gbWFwIHBkeCB0byBub2RlIG51 bWJlcnMgKi8KLWV4dGVybiBpbnQgbWVtbm9kZV9zaGlmdDsKLWV4dGVybiB1OCAqbWVtbm9kZW1h cDsKK2V4dGVybiB1bnNpZ25lZCBpbnQgbWVtbm9kZV9zaGlmdDsKK2V4dGVybiB1aW50OF90ICpt ZW1ub2RlbWFwOwogCiBzdHJ1Y3Qgbm9kZV9kYXRhIHsKICAgICB1bnNpZ25lZCBsb25nIG5vZGVf c3RhcnRfcGZuOwpAQCAtNjQsMTAgKzY1LDEwIEBAIHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygocHVyZSkpIG5vZGVpZF90IHBoeXNfdG9fbmlkKHBhZGRyX3QgYWRkcikKICNkZWZpbmUgbm9k ZV9lbmRfcGZuKG5pZCkgICAgICAgKE5PREVfREFUQShuaWQpLT5ub2RlX3N0YXJ0X3BmbiArIFwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PREVfREFUQShuaWQpLT5ub2RlX3Nw YW5uZWRfcGFnZXMpCiAKLWV4dGVybiBpbnQgdmFsaWRfbnVtYV9yYW5nZSh1NjQgc3RhcnQsIHU2 NCBlbmQsIG5vZGVpZF90IG5vZGUpOworZXh0ZXJuIGludCB2YWxpZF9udW1hX3JhbmdlKHBhZGRy X3Qgc3RhcnQsIHBhZGRyX3QgZW5kLCBub2RlaWRfdCBub2RlKTsKIAotdm9pZCBzcmF0X3BhcnNl X3JlZ2lvbnModTY0IGFkZHIpOwotZXh0ZXJuIHU4IF9fbm9kZV9kaXN0YW5jZShub2RlaWRfdCBh LCBub2RlaWRfdCBiKTsKK3ZvaWQgc3JhdF9wYXJzZV9yZWdpb25zKHVpbnQ2NF90IGFkZHIpOwor ZXh0ZXJuIHVpbnQ4X3QgX19ub2RlX2Rpc3RhbmNlKG5vZGVpZF90IGEsIG5vZGVpZF90IGIpOwog dW5zaWduZWQgaW50IGFyY2hfZ2V0X2RtYV9iaXRzaXplKHZvaWQpOwogCiAjZW5kaWYKLS0gCjIu Ny40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3Rz Lnhlbi5vcmcveGVuLWRldmVsCg==