From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dulloor Subject: [PATCH 07/11] [XEN] domain setup per allocation strategies Date: Sun, 4 Apr 2010 15:30:33 -0400 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=0016e6dab0cd01d44804836e3f0b Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org --0016e6dab0cd01d44804836e3f0b Content-Type: text/plain; charset=ISO-8859-1 This patch use the previously constructed domain numa-layout info to setup the domain memory. The domain vcpus are pinned according to allocation strategy in the following way : - CONFINE : all vcpus are pinned to the node cpus - STRIPE : all vcpus are pinned to the logical-or of the subset of node cpus - SPLIT : vcpus are pinned to the node from which the vnode is allocated Also, in case of SPLIT, the domain is made aware of the virtual NUMA enlightenment through a flag in xen_start_info (SIF_NUMA_DOMAIN). -dulloor Signed-off-by: Dulloor Rao --0016e6dab0cd01d44804836e3f0b Content-Type: text/x-patch; charset=US-ASCII; name="xen-07-tools-arch-setup.patch" Content-Disposition: attachment; filename="xen-07-tools-arch-setup.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g7m8s4qq0 ZGlmZiAtciAzMDA0MDkyYzQ3OTIgLXIgYWE2ZWQ2OTQ0OTlkIHRvb2xzL2xpYnhjL3hjX2RvbV9j b3JlLmMKLS0tIGEvdG9vbHMvbGlieGMveGNfZG9tX2NvcmUuYwlUaHUgQXByIDAxIDE2OjIzOjI3 IDIwMTAgLTA0MDAKKysrIGIvdG9vbHMvbGlieGMveGNfZG9tX2NvcmUuYwlTYXQgQXByIDAzIDAy OjAyOjA1IDIwMTAgLTA0MDAKQEAgLTY4MSwxMCArNjgxLDEwIEBACiAKICAgICB4Y19kb21fcHJp bnRmKCIlczogMHglIiBQUklwZm4gIiBwYWdlc1xuIiwgX19GVU5DVElPTl9fLCBkb20tPnRvdGFs X3BhZ2VzKTsKIAotICAgIGlmICh4Y19zZXR1cF9kb21haW5fbnVtYV9sYXlvdXQoZG9tKSkKKyAg ICBpZiAoeGNfc2V0dXBfbnVtYV9kb21haW4oZG9tKSkKICAgICB7CiAgICAgICAgIC8qIElnbm9y ZSB0aGUgZXJyb3IgYW5kIHByb2NlZWQgYXMgbm9uLW51bWEgZ3Vlc3QgKi8KLSAgICAgICAgeGNf ZG9tX3ByaW50ZigiJXM6IHhjX3NldHVwX2RvbWFpbl9sYXlvdXQgZmFpbGVkXG4iLCBfX0ZVTkNU SU9OX18pOworICAgICAgICB4Y19kb21fcHJpbnRmKCIlczogeGNfc2V0dXBfbnVtYV9kb21haW4g ZmFpbGVkXG4iLCBfX0ZVTkNUSU9OX18pOwogICAgIH0KIAogICAgIHJldHVybiAwOwpkaWZmIC1y IDMwMDQwOTJjNDc5MiAtciBhYTZlZDY5NDQ5OWQgdG9vbHMvbGlieGMveGNfZG9tX251bWEuYwot LS0gYS90b29scy9saWJ4Yy94Y19kb21fbnVtYS5jCVRodSBBcHIgMDEgMTY6MjM6MjcgMjAxMCAt MDQwMAorKysgYi90b29scy9saWJ4Yy94Y19kb21fbnVtYS5jCVNhdCBBcHIgMDMgMDI6MDI6MDUg MjAxMCAtMDQwMApAQCAtMSw0ICsxLDQgQEAKLS8qIFhFTiBHdWVzdCBOVU1BIChtZW1vcnkgcGxh Y2VtZW50KSAKKy8qIFhFTiBHdWVzdCBOVU1BIHN1cHBvcnQKICAqIEF1dGhvciA6IER1bGxvb3Ig KGR1bGxvb3JAZ2F0ZWNoLmVkdSkgKi8KIAogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtMjAsNiAr MjAsMTYgQEAKICAgICBzZXRfeGVuX2d1ZXN0X2hhbmRsZSgobWFwKS0+Yml0bWFwLCAobWFzaykt PmJpdHMpOyAgXAogfXdoaWxlKDApCiAKK3N0cnVjdCB4Y19tYWNoaW5lX251bWFfbGF5b3V0IHsK KyAgICB1aW50NjRfdCBtZW1zaXplOworICAgIHVpbnQ2NF90IG1lbWZyZWU7CisKKyAgICB1aW50 MzJfdCBtYXhfbm9kZXM7CisgICAgdWludDMyX3Qgbm9kZV9kaXN0YW5jZVtYQ19NQVhfTk9ERVMq WENfTUFYX05PREVTXTsKKyAgICBzdHJ1Y3QgeGVubWVtX25vZGVfZGF0YSBub2RlX2RhdGFbWENf TUFYX05PREVTXTsKK307Cit0eXBlZGVmIHN0cnVjdCB4Y19tYWNoaW5lX251bWFfbGF5b3V0IHhj X21hY2hpbmVfbnVtYV9sYXlvdXRfdDsKKwogLyogbnVtYSBsYXlvdXQgc3RydWN0dXJlcyAqLwog eGNfbWFjaGluZV9udW1hX2xheW91dF90IHBoeXNfbnVtYV9sYXlvdXQ7CiB4Y19kb21haW5fbnVt YV9sYXlvdXRfdCBwdl9udW1hX2xheW91dDsKQEAgLTcwLDggKzgwLDQyIEBACiAgICAgcmV0dXJu OwogfQogCitpbnQgX194Y19kb21haW5fbnVtYV9sYXlvdXQodWludDMyX3QgY21kLCBpbnQgeGNf aGFuZGxlLCBkb21pZF90IGRvbWlkLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHhlbl9kb21haW5fbnVtYV9sYXlvdXQgKnB2X2xheW91dCkKK3sKKyAgICBpbnQgcmM7 CisgICAgc3RydWN0IHhlbm1lbV9udW1hX29wIG1lbW9wOworCisgICAgLyogVXBkYXRlIHRoZSBk b21haW4ncyBudW1hX2xheW91dCBzdHJ1Y3R1cmUgKi8KKyAgICBtZW1vcC5jbWQgPSBjbWQ7Cisg ICAgbWVtb3AudS5kaW5mby5kb21pZCA9IGRvbWlkOworICAgIG1lbW9wLnUuZGluZm8udmVyc2lv biA9IFhFTl9ET01fTlVNQV9JTlRFUkZBQ0VfVkVSU0lPTjsKKyAgICBtZW1vcC51LmRpbmZvLmJ1 ZnNpemUgPSBzaXplb2YoKnB2X2xheW91dCk7CisgICAgc2V0X3hlbl9ndWVzdF9oYW5kbGUobWVt b3AudS5kaW5mby5idWYsIHB2X2xheW91dCk7CisKKyAgICByYyA9IDA7CisgICAgaWYgKGxvY2tf cGFnZXMoJm1lbW9wLCBzaXplb2Yoc3RydWN0IHhlbm1lbV9udW1hX29wKSkgfHwKKyAgICAgICAg ICAgICAgICBsb2NrX3BhZ2VzKHB2X2xheW91dCwgc2l6ZW9mKCpwdl9sYXlvdXQpKSkKKyAgICB7 CisgICAgICAgIHJjID0gLTE7CisgICAgICAgIFBFUlJPUigiQ291bGQgbm90IGxvY2sgbWVtb3J5 IGZvciBYZW4gaHlwZXJjYWxsIik7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGlm ICgocmMgPSB4Y19tZW1vcnlfb3AoeGNfaGFuZGxlLCBYRU5NRU1fbnVtYV9vcCwgJm1lbW9wKSkp CisgICAgeworICAgICAgICByYyA9IC0xOworICAgICAgICB4Y19kb21fcHJpbnRmKCIlczogWEVO TUVNX21hY2hpbmVfbnVtYV9sYXlvdXQgZmFpbGVkXG4iLCBfX0ZVTkNUSU9OX18pOworICAgIH0K KworICAgIHVubG9ja19wYWdlcygmbWVtb3AsIHNpemVvZihzdHJ1Y3QgeGVubWVtX251bWFfb3Ap KTsKKyAgICB1bmxvY2tfcGFnZXMocHZfbGF5b3V0LCBzaXplb2YoKnB2X2xheW91dCkpOworb3V0 OgorICAgIHJldHVybiByYzsKK30KKwogc3RhdGljIGludAoteGNfcmVhZF9tYWNoaW5lX251bWFf bGF5b3V0KGludCB4Y19oYW5kbGUsIHhjX21hY2hpbmVfbnVtYV9sYXlvdXRfdCAqbGF5b3V0KQor eGNfZ2V0X21hY2hpbmVfbnVtYV9sYXlvdXQoaW50IHhjX2hhbmRsZSwgeGNfbWFjaGluZV9udW1h X2xheW91dF90ICpsYXlvdXQpCiB7CiAgICAgaW50IHJjLCBpOwogICAgIHN0cnVjdCB4ZW5tZW1f bnVtYV9vcCBtZW1vcDsKQEAgLTExNCw2ICsxNTgsNyBAQAogCiB1bmxvY2s6CiAgICAgdW5sb2Nr X3BhZ2VzKCZtZW1vcCwgc2l6ZW9mKHN0cnVjdCB4ZW5tZW1fbnVtYV9vcCkpOworICAgIHVubG9j a19wYWdlcyhsYXlvdXQsIHNpemVvZigqbGF5b3V0KSk7CiBvdXQ6CiAgICAgcmV0dXJuIHJjOwog fQpAQCAtMzM0LDYgKzM3OSwyNSBAQAogICAgIHJldHVybiAwOyAgICAKIH0KIAorc3RhdGljIGlu dCB4Y19zZXR1cF92bm9kZV9kaXN0YW5jZXMoeGNfbWFjaGluZV9udW1hX2xheW91dF90ICpwaHlz X2xheW91dCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfZG9t YWluX251bWFfbGF5b3V0X3QgKnB2X2xheW91dCkKK3sKKyAgICBpbnQgdm4xLCB2bjI7CisKKyAg ICBmb3IgKHZuMT0wOyB2bjE8cHZfbGF5b3V0LT5tYXhfdm5vZGVzOyB2bjErKykKKyAgICB7Cisg ICAgICAgIGludCBuMSA9IHB2X2xheW91dC0+dm5vZGVfZGF0YVt2bjFdLm1ub2RlX2lkOworICAg ICAgICBmb3IgKHZuMj0wOyB2bjI8cHZfbGF5b3V0LT5tYXhfdm5vZGVzOyB2bjIrKykKKyAgICAg ICAgeworICAgICAgICAgICAgaW50IG4yID0gcHZfbGF5b3V0LT52bm9kZV9kYXRhW3ZuMl0ubW5v ZGVfaWQ7CisgICAgICAgICAgICBwdl9sYXlvdXQtPnZub2RlX2Rpc3RhbmNlWyh2bjEqcHZfbGF5 b3V0LT5tYXhfdm5vZGVzKSt2bjJdID0KKyAgICAgICAgICAgICAgICBwaHlzX2xheW91dC0+bm9k ZV9kaXN0YW5jZVsobjEqcGh5c19sYXlvdXQtPm1heF9ub2RlcykrbjJdOworICAgICAgICAKKyAg ICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQogLyogUG9saWNpZXMgZm9yIG5vZGUg c2VsZWN0aW9uIG5lZWQgbW9yZSByZXNlYXJjaC9leHBlcmllbmNlLgogICogQWxzbywgbGl2ZSBt aWdyYXRpb24gb2YgdGhlIFZNcyAodG8gb3RoZXIgbm9kZXMpIGNvdWxkIHByb3ZpZGUgCiAgKiBw ZXJpb2RpYyBsb2FkIGJhbGFuY2luZyBhY3Jvc3MgdGhlIG5vZGVzLiAqLwpAQCAtMzYwLDYgKzQy NCw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKKyAgICBtZW1zZXQocHZfbGF5b3V0 LCAwLCBzaXplb2YoKnB2X2xheW91dCkpOwogICAgIGlmICghKHB2X2xheW91dC0+bWF4X3ZjcHVz ID0KICAgICAgICAgICAgICAgICB4Y19nZXRfbWF4X3ZjcHVzKGRvbS0+Z3Vlc3RfeGMsIGRvbS0+ Z3Vlc3RfZG9taWQpKSkKICAgICB7CkBAIC00MzksOCArNTA0LDYgQEAKICAgICAgICAgdm5vZGVf ZGF0YS0+bW5vZGVfaWQgPSBub2RlX2RhdGEtPm5vZGVfaWQ7CiAKICAgICAgICAgcHZfbGF5b3V0 LT5tYXhfdm5vZGVzKys7Ci0gICAgICAgIC8qIHZub2RlX2RhdGEtPnZjcHVfbWFzayBpcyBzZXQg bGF0ZXIgd2hlbiBkaXN0cmlidXRpbmcgdGhlCi0gICAgICAgICAqIHZjcHVzIG92ZXIgdm5vZGVz IGFuZCBhc3NpZ25pbmcgYWZmaW5pdGllcyAqLwogICAgIH0KIAogICAgIGlmICh4Y19zZXR1cF92 bm9kZV92Y3B1X21hc2tzKHB2X2xheW91dCkpCkBAIC00NDgsNDQgKzUxMSwxNTEgQEAKICAgICAg ICAgeGNfZG9tX3ByaW50ZigiJXM6IHhjX3NldHVwX3Zub2RlX3ZjcHVfbWFza3MgZmFpbGVkICFc biIsIF9fRlVOQ1RJT05fXyk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZG9tLT5u dW1hX2xheW91dCA9IHB2X2xheW91dDsKKworICAgIGlmICh4Y19zZXR1cF92bm9kZV9kaXN0YW5j ZXMocGh5c19sYXlvdXQsIHB2X2xheW91dCkpCisgICAgeworICAgICAgICB4Y19kb21fcHJpbnRm KCIlczogeGNfc2V0dXBfdm5vZGVfZGlzdGFuY2VzIGZhaWxlZCAhXG4iLCBfX0ZVTkNUSU9OX18p OworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCB4 Y19zZXR1cF9kb21haW5fbnVtYV9sYXlvdXQoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQoraW50 IHhjX3NldHVwX251bWFfZG9tYWluKHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKIHsKICAgICBp bnQgeGNfaGFuZGxlOworICAgIGludCByYzsKICAgICB4Y19tYWNoaW5lX251bWFfbGF5b3V0X3Qg KnBoeXNfbGF5b3V0OwogICAgIHhjX2RvbWFpbl9udW1hX2xheW91dF90ICpwdl9sYXlvdXQ7CiAK ICAgICB4Y19kb21fcHJpbnRmKCIlczogY2FsbGVkXG4iLCBfX0ZVTkNUSU9OX18pOwogCiAgICAg eGNfaGFuZGxlID0gZG9tLT5ndWVzdF94YzsKLSAgICBwaHlzX2xheW91dCA9ICZwaHlzX251bWFf bGF5b3V0OwogCi0gICAgaWYgKHhjX3JlYWRfbWFjaGluZV9udW1hX2xheW91dCh4Y19oYW5kbGUs IHBoeXNfbGF5b3V0KSkKKyAgICBpZiAoIShwaHlzX2xheW91dCA9IG1hbGxvYyhzaXplb2YoKnBo eXNfbGF5b3V0KSkpIHx8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhKHB2X2xh eW91dCA9IG1hbGxvYyhzaXplb2YoKnB2X2xheW91dCkpKSkKICAgICB7Ci0gICAgICAgIHhjX2Rv bV9wcmludGYoICIlczogeGNfcmVhZF9tYWNoaW5lX251bWFfbGF5b3V0IGZhaWxlZFxuIiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF9fRlVOQ1RJT05fXyk7Ci0gICAgICAgIHJldHVybiAtMTsgCi0gICAgfQotCi0gICAgLyogQWxs b2NhdGUgcHZfbnVtYV9sYXlvdXQgZHluYW1pY2FsbHkgZm9yIFZNcyAqLwotICAgIHB2X2xheW91 dCA9ICZwdl9udW1hX2xheW91dDsKLSAgICBtZW1zZXQocHZfbGF5b3V0LCAwLCBzaXplb2YoKnB2 X2xheW91dCkpOwotCi0gICAgaWYgKHhjX3NlbGVjdF9kb21haW5fdm5vZGVzKGRvbSwgcGh5c19s YXlvdXQsIHB2X2xheW91dCkpCi0gICAgewotICAgICAgICB4Y19kb21fcHJpbnRmKCIlczogeGNf c2VsZWN0X2RvbWFpbl92bm9kZXMgZmFpbGVkXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICB4 Y19kb21fcHJpbnRmKCAiJXM6IGxheW91dCBhbGxvY2F0aW9uIGZhaWxlZFxuIiwgX19GVU5DVElP Tl9fKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAorICAgIGlmICgocmMgPSB4Y19nZXRf bWFjaGluZV9udW1hX2xheW91dCh4Y19oYW5kbGUsIHBoeXNfbGF5b3V0KSkpCisgICAgeworICAg ICAgICB4Y19kb21fcHJpbnRmKCAiJXM6IHhjX2dldF9tYWNoaW5lX251bWFfbGF5b3V0IGZhaWxl ZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF9fRlVOQ1RJT05fXyk7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAg ICBpZiAoKHJjID0geGNfc2VsZWN0X2RvbWFpbl92bm9kZXMoZG9tLCBwaHlzX2xheW91dCwgcHZf bGF5b3V0KSkpCisgICAgeworICAgICAgICB4Y19kb21fcHJpbnRmKCIlczogeGNfc2VsZWN0X2Rv bWFpbl92bm9kZXMgZmFpbGVkXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICBmcmVlKHB2X2xh eW91dCk7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBkb20tPm51bWFfbGF5b3V0 ID0gcHZfbGF5b3V0OwogICAgIGR1bXBfZ3Vlc3RfbnVtYV9sYXlvdXQoZG9tLCBwdl9sYXlvdXQp OwotICAgIC8qIHB2X2xheW91dCBpcyB1c2VkIG9ubHkgdGVtcG9yYXJpbHkgLSBYRU5NRU1fbnVt YV9vcCB0byBzZXQgdGhlIAotICAgICAqIG51bWFfbGF5b3V0IGZvciB0aGUgZG9tYWluICovCitk b25lOgorICAgIGZyZWUocGh5c19sYXlvdXQpOworICAgIHJldHVybiByYzsKK30KKworc3RhdGlj IGludAoreGNfZG9tYWluX251bWFfcGludmNwdXNfc3BsaXQoc3RydWN0IHhjX2RvbV9pbWFnZSAq ZG9tLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeGVuX2RvbWFpbl9u dW1hX2xheW91dCAqcHZfbGF5b3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4 Y19tYWNoaW5lX251bWFfbGF5b3V0X3QgKnBoeXNfbGF5b3V0KQoreworICAgIGludCB2bm9kZTsK KworICAgIGZvciAodm5vZGUgPSAwOyB2bm9kZSA8IHB2X2xheW91dC0+bWF4X3Zub2Rlczsgdm5v ZGUrKykKKyAgICB7CisgICAgICAgIGludCB2Y3B1OworICAgICAgICBpbnQgbW5vZGUgPSBwdl9s YXlvdXQtPnZub2RlX2RhdGFbdm5vZGVdLm1ub2RlX2lkOworICAgICAgICBzdHJ1Y3QgeGVuY3Rs X2NwdW1hc2sgKm5vZGVfY3B1bWFzayA9CisgICAgICAgICAgICAgICAgICAgICZwaHlzX2xheW91 dC0+bm9kZV9kYXRhW21ub2RlXS5jcHVfbWFzazsKKyAgICAgICAgc3RydWN0IHhlbmN0bF9jcHVt YXNrICp2bm9kZV92Y3B1bWFzayA9CisgICAgICAgICAgICAgICAgICAgICZwdl9sYXlvdXQtPnZu b2RlX2RhdGFbbW5vZGVdLnZjcHVfbWFzazsKKyAgICAgICAgc3RydWN0IHhlbmN0bF9jcHVtYXAg bm9kZV9jcHVtYXAsIHZub2RlX3ZjcHVtYXA7CisKKyAgICAgICAgeGNfY3B1bWFwX2Zyb21fY3B1 bWFzaygmbm9kZV9jcHVtYXAsIG5vZGVfY3B1bWFzayk7CisgICAgICAgIHhjX2NwdW1hcF9mcm9t X2NwdW1hc2soJnZub2RlX3ZjcHVtYXAsIHZub2RlX3ZjcHVtYXNrKTsKKyAgICAgICAgeGNfZm9y X2VhY2hfY3B1KHZjcHUsIHZub2RlX3ZjcHVtYXApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm ICh4Y192Y3B1X3NldGFmZmluaXR5KAorICAgICAgICAgICAgICAgICAgICAgICAgZG9tLT5ndWVz dF94YywgZG9tLT5ndWVzdF9kb21pZCwgdmNwdSwgJm5vZGVfY3B1bWFwKSkgCisgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgeGNfZG9tX3ByaW50ZiggIiVzOnhjX3ZjcHVfZ2V0YWZmaW5p dHkgZmFpbGVkXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KICAgICByZXR1cm4gMDsKIH0KIAorc3Rh dGljIGludAoreGNfZG9tYWluX251bWFfcGludmNwdXNfc3RyaXBlZChzdHJ1Y3QgeGNfZG9tX2lt YWdlICpkb20sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4ZW5fZG9t YWluX251bWFfbGF5b3V0ICpwdl9sYXlvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHhjX21hY2hpbmVfbnVtYV9sYXlvdXRfdCAqcGh5c19sYXlvdXQpCit7CisgICAgaW50IHZu b2RlLCB2Y3B1OworICAgIHN0cnVjdCB4ZW5jdGxfY3B1bWFzayBzdHJpcGVfY3B1bWFzazsKKyAg ICBzdHJ1Y3QgeGVuY3RsX2NwdW1hcCBzdHJpcGVfY3B1bWFwOworCisgICAgeGNfY3B1bWFwX2Zy b21fY3B1bWFzaygmc3RyaXBlX2NwdW1hcCwgJnN0cmlwZV9jcHVtYXNrKTsKKyAgICB4Y19jcHVt YXBfY2xlYXJhbGwoc3RyaXBlX2NwdW1hcCk7CisKKyAgICBmb3IgKHZub2RlID0gMDsgdm5vZGUg PCBwdl9sYXlvdXQtPm1heF92bm9kZXM7IHZub2RlKyspCisgICAgeworICAgICAgICBpbnQgbW5v ZGUgPSBwdl9sYXlvdXQtPnZub2RlX2RhdGFbdm5vZGVdLm1ub2RlX2lkOworICAgICAgICBzdHJ1 Y3QgeGVuY3RsX2NwdW1hc2sgKm5vZGVfY3B1bWFzayA9CisgICAgICAgICAgICAgICAgICAgICZw aHlzX2xheW91dC0+bm9kZV9kYXRhW21ub2RlXS5jcHVfbWFzazsKKyAgICAgICAgc3RydWN0IHhl bmN0bF9jcHVtYXAgbm9kZV9jcHVtYXA7CisKKyAgICAgICAgeGNfY3B1bWFwX2Zyb21fY3B1bWFz aygmbm9kZV9jcHVtYXAsIG5vZGVfY3B1bWFzayk7CisgICAgICAgIHhjX2NwdW1hcF9vcihzdHJp cGVfY3B1bWFwLCBzdHJpcGVfY3B1bWFwLCBub2RlX2NwdW1hcCk7CisgICAgfQorCisgICAgZm9y ICh2Y3B1ID0gMDsgdmNwdSA8IHB2X2xheW91dC0+bWF4X3ZjcHVzOyB2Y3B1KyspCisgICAgewor ICAgICAgICBpZiAoeGNfdmNwdV9zZXRhZmZpbml0eSgKKyAgICAgICAgICAgICAgICAgICAgZG9t LT5ndWVzdF94YywgZG9tLT5ndWVzdF9kb21pZCwgdmNwdSwgJnN0cmlwZV9jcHVtYXApKSAKKyAg ICAgICAgeworICAgICAgICAgICAgeGNfZG9tX3ByaW50ZiggIiVzOnhjX3ZjcHVfZ2V0YWZmaW5p dHkgZmFpbGVkXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAg ICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCitpbnQgeGNfZG9tYWluX251bWFfcGlu dmNwdXMoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgeGVuX2RvbWFpbl9udW1hX2xheW91dCAqcHZfbGF5b3V0KQoreworICAg IGludCByYzsKKworICAgIHhjX21hY2hpbmVfbnVtYV9sYXlvdXRfdCAqcGh5c19sYXlvdXQ7Cisg ICAgaWYgKCEocGh5c19sYXlvdXQgPSBtYWxsb2Moc2l6ZW9mKCpwaHlzX2xheW91dCkpKSkKKyAg ICB7CisgICAgICAgIHhjX2RvbV9wcmludGYoICIlczogbGF5b3V0IGFsbG9jYXRpb24gZmFpbGVk XG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYg KChyYyA9IHhjX2dldF9tYWNoaW5lX251bWFfbGF5b3V0KGRvbS0+Z3Vlc3RfeGMsIHBoeXNfbGF5 b3V0KSkpCisgICAgeworICAgICAgICB4Y19kb21fcHJpbnRmKCAiJXM6IHhjX2dldF9tYWNoaW5l X251bWFfbGF5b3V0IGZhaWxlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXyk7CisgICAgICAgIGdvdG8g ZG9uZTsKKyAgICB9CisKKyAgICBpZiAocHZfbGF5b3V0LT50eXBlID09IFhFTl9ET01fTlVNQV9T VFJJUEVEKQorICAgICAgICByYyA9IHhjX2RvbWFpbl9udW1hX3BpbnZjcHVzX3N0cmlwZWQoZG9t LCBwdl9sYXlvdXQsIHBoeXNfbGF5b3V0KTsKKyAgICBlbHNlCisgICAgICAgIHJjID0geGNfZG9t YWluX251bWFfcGludmNwdXNfc3BsaXQoZG9tLCBwdl9sYXlvdXQsIHBoeXNfbGF5b3V0KTsKK2Rv bmU6CisgICAgZnJlZShwaHlzX2xheW91dCk7CisgICAgcmV0dXJuIHJjOworfQorCisKIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLwogLyogbm9kZSBsb29rdXAgZm9yIG1mbnMgKi8KICNkZWZpbmUgTlVNQV9O T19OT0RFIDB4RkYKQEAgLTUwMSwxMCArNjcxLDcgQEAKIAogICAgIGFkZHIgPSBwZm5fdG9fcGFk ZHIobWZuKTsKIAlpZigoYWRkciA+PiBtZW1ub2RlLT5zaGlmdCkgPj0gbWVtbm9kZS0+bWFwc2l6 ZSkKLSAgICB7Ci0gICAgICAgIHhjX2RvbV9wcmludGYoIihhZGRyKCVseCkgPj4gbWVtbm9kZV9z aGlmdCkgPj0gTk9ERU1BUFNJWkUiLCBhZGRyKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQor ICAgICAgICByZXR1cm4gLTE7CiAgICAgZ2V0X3hlbl9ndWVzdF9oYW5kbGUobWVtbm9kZV9tYXAs IG1lbW5vZGUtPm1hcCk7CiAJbmlkID0gbWVtbm9kZV9tYXBbYWRkciA+PiBtZW1ub2RlLT5zaGlm dF07IAogCXJldHVybiBuaWQ7IApAQCAtNTcyLDQgKzczOSwzIEBACiBvdXQ6CiAgICAgcmV0dXJu IHJjOwogfQotCmRpZmYgLXIgMzAwNDA5MmM0NzkyIC1yIGFhNmVkNjk0NDk5ZCB0b29scy9saWJ4 Yy94Y19kb21fbnVtYS5oCi0tLSBhL3Rvb2xzL2xpYnhjL3hjX2RvbV9udW1hLmgJVGh1IEFwciAw MSAxNjoyMzoyNyAyMDEwIC0wNDAwCisrKyBiL3Rvb2xzL2xpYnhjL3hjX2RvbV9udW1hLmgJU2F0 IEFwciAwMyAwMjowMjowNSAyMDEwIC0wNDAwCkBAIC0zLDE5ICszLDMxIEBACiAKICNkZWZpbmUg WENfTUFYX05PREVTIDgKIAotc3RydWN0IHhjX21hY2hpbmVfbnVtYV9sYXlvdXQgewotICAgIHVp bnQ2NF90IG1lbXNpemU7Ci0gICAgdWludDY0X3QgbWVtZnJlZTsKLQotICAgIHVpbnQzMl90IG1h eF9ub2RlczsKLSAgICB1aW50MzJfdCBub2RlX2Rpc3RhbmNlW1hDX01BWF9OT0RFUypYQ19NQVhf Tk9ERVNdOwotICAgIHN0cnVjdCB4ZW5tZW1fbm9kZV9kYXRhIG5vZGVfZGF0YVtYQ19NQVhfTk9E RVNdOwotfTsKLXR5cGVkZWYgc3RydWN0IHhjX21hY2hpbmVfbnVtYV9sYXlvdXQgeGNfbWFjaGlu ZV9udW1hX2xheW91dF90OwogdHlwZWRlZiBzdHJ1Y3QgeGVuX2RvbWFpbl9udW1hX2xheW91dCB4 Y19kb21haW5fbnVtYV9sYXlvdXRfdDsKIAotZXh0ZXJuIGludCB4Y19zZXR1cF9kb21haW5fbnVt YV9sYXlvdXQoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKTsKK2V4dGVybiBpbnQgeGNfc2V0dXBf bnVtYV9kb21haW4oc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKTsKK2V4dGVybiBpbnQgeGNfZG9t YWluX251bWFfcGludmNwdXMoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tLCAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhlbl9kb21haW5fbnVtYV9sYXlvdXQgKnB2X2xh eW91dCk7CisKIGV4dGVybiBpbnQgeGNfZG9tYWluX25vZGVtZW1fZGlzdHJpYnV0aW9uKHN0cnVj dCB4Y19kb21faW1hZ2UgKmRvbSk7CitleHRlcm4gaW50IF9feGNfZG9tYWluX251bWFfbGF5b3V0 KHVpbnQzMl90IGNtZCwgaW50IHhjX2hhbmRsZSwgZG9taWRfdCBkb21pZCwgCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4ZW5fZG9tYWluX251bWFfbGF5b3V0ICpwdl9s YXlvdXQpOworCisKK3N0YXRpYyBpbmxpbmUgaW50IHhjX2dldF9kb21haW5fbnVtYV9sYXlvdXQo c3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IHhlbl9kb21haW5fbnVtYV9sYXlvdXQgKmxheW91dCkKK3sKKyAgICByZXR1 cm4gX194Y19kb21haW5fbnVtYV9sYXlvdXQoCisgICAgICAgIFhFTk1FTV9nZXRfZG9tYWluX251 bWFfbGF5b3V0LCBkb20tPmd1ZXN0X3hjLCBkb20tPmd1ZXN0X2RvbWlkLCBsYXlvdXQpOworfQor CitzdGF0aWMgaW5saW5lIGludCB4Y19zZXRfZG9tYWluX251bWFfbGF5b3V0KHN0cnVjdCB4Y19k b21faW1hZ2UgKmRvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCB4ZW5fZG9tYWluX251bWFfbGF5b3V0ICpsYXlvdXQpCit7CisgICAgcmV0dXJuIF9feGNfZG9t YWluX251bWFfbGF5b3V0KAorICAgICAgICBYRU5NRU1fc2V0X2RvbWFpbl9udW1hX2xheW91dCwg ZG9tLT5ndWVzdF94YywgZG9tLT5ndWVzdF9kb21pZCwgbGF5b3V0KTsKK30KKwogZXh0ZXJuIHZv aWQgZHVtcF9ndWVzdF9udW1hX2xheW91dChzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20sCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfZG9tYWluX251bWFfbGF5b3V0 X3QgKmxheW91dCk7CiAjZW5kaWYKZGlmZiAtciAzMDA0MDkyYzQ3OTIgLXIgYWE2ZWQ2OTQ0OTlk IHRvb2xzL2xpYnhjL3hjX2RvbV94ODYuYwotLS0gYS90b29scy9saWJ4Yy94Y19kb21feDg2LmMJ VGh1IEFwciAwMSAxNjoyMzoyNyAyMDEwIC0wNDAwCisrKyBiL3Rvb2xzL2xpYnhjL3hjX2RvbV94 ODYuYwlTYXQgQXByIDAzIDAyOjAyOjA1IDIwMTAgLTA0MDAKQEAgLTE5LDEwICsxOSwxMiBAQAog I2luY2x1ZGUgPHhlbi9mb3JlaWduL3g4Nl82NC5oPgogI2luY2x1ZGUgPHhlbi9odm0vaHZtX2lu Zm9fdGFibGUuaD4KICNpbmNsdWRlIDx4ZW4vaW8vcHJvdG9jb2xzLmg+CisjaW5jbHVkZSA8eGVu L21lbW9yeS5oPgogCiAjaW5jbHVkZSAieGdfcHJpdmF0ZS5oIgogI2luY2x1ZGUgInhjX2RvbS5o IgogI2luY2x1ZGUgInhlbmN0cmwuaCIKKyNpbmNsdWRlICJ4Y19kb21fbnVtYS5oIgogCiAvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNDc1LDYgKzQ3NywxNyBAQAogICAgIHN0YXJ0X2luZm8t PmNvbnNvbGUuZG9tVS5tZm4gPSB4Y19kb21fcDJtX2d1ZXN0KGRvbSwgZG9tLT5jb25zb2xlX3Bm bik7CiAgICAgc3RhcnRfaW5mby0+Y29uc29sZS5kb21VLmV2dGNobiA9IGRvbS0+Y29uc29sZV9l dnRjaG47CiAKKyAgICBpZiAoIGRvbS0+bnVtYV9sYXlvdXQgKQorICAgIHsKKyAgICAgICAgc3Rh cnRfaW5mby0+ZmxhZ3MgfD0gU0lGX05VTUFfRE9NQUlOOworICAgICAgICBtZW1zZXQoZG9tLT5u dW1hX2xheW91dCwgMCwgc2l6ZW9mKCpkb20tPm51bWFfbGF5b3V0KSk7CisgICAgICAgIHhjX2Rv bV9wcmludGYoIiVzOiB2ZXJpZnlpbmcgZG9tYWluIG51bWFfbGF5b3V0XG4iLCBfX0ZVTkNUSU9O X18pOworICAgICAgICB4Y19nZXRfZG9tYWluX251bWFfbGF5b3V0KGRvbSwgZG9tLT5udW1hX2xh eW91dCk7CisgICAgICAgIGR1bXBfZ3Vlc3RfbnVtYV9sYXlvdXQoZG9tLCBkb20tPm51bWFfbGF5 b3V0KTsKKyAgICAgICAgZnJlZShkb20tPm51bWFfbGF5b3V0KTsKKyAgICAgICAgZG9tLT5udW1h X2xheW91dCA9IDA7CisgICAgfQorCiAgICAgaWYgKCBkb20tPnJhbWRpc2tfYmxvYiApCiAgICAg ewogICAgICAgICBzdGFydF9pbmZvLT5tb2Rfc3RhcnQgPSBkb20tPnJhbWRpc2tfc2VnLnZzdGFy dDsKQEAgLTY0OCw2ICs2NjEsNyBAQAogICAgICAgICB7ICJ4ZW4tMy4wLXg4Nl8zMnAiLCAzMiB9 LAogICAgICAgICB7ICJ4ZW4tMy4wLXg4Nl82NCIsICA2NCB9LAogICAgIH07CisgICAKICAgICBE RUNMQVJFX0RPTUNUTDsKICAgICBpbnQgaSxyYzsKIApAQCAtNjk0LDExICs3MDgsMTQxIEBACiAg ICAgcmV0dXJuIHJjOwogfQogCitleHRlcm4gdm9pZCBkdW1wX2d1ZXN0X251bWFfbGF5b3V0KHN0 cnVjdCB4Y19kb21faW1hZ2UgKmRvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHhjX2RvbWFp bl9udW1hX2xheW91dF90ICpsYXlvdXQpOworc3RhdGljIGludCBhcmNoX3NldHVwX251bWFfc3Ry aXBlZChzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCit7CisgICAgaW50IHJjLCB2bm9kZTsKKyAg ICB4ZW5fcGZuX3QgYWxsb2NzeiwgaTsKKworICAgIHN0cnVjdCB4ZW5fZG9tYWluX251bWFfbGF5 b3V0ICpkbGF5b3V0ID0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1hbGxvYyhzaXplb2Yoc3Ry dWN0IHhlbl9kb21haW5fbnVtYV9sYXlvdXQpKTsKKworICAgIG1lbWNweShkbGF5b3V0LCBkb20t Pm51bWFfbGF5b3V0LCBzaXplb2YoKmRsYXlvdXQpKTsKKworICAgIHhjX2RvbV9wcmludGYoIiVz OiBTdHJpcGluZyBtZW1vcnkgaW4gNE1CIGNodW5rc1xuIiwgX19GVU5DVElPTl9fKTsKKyAgICBk dW1wX2d1ZXN0X251bWFfbGF5b3V0KGRvbSwgZGxheW91dCk7CisgICAgLyogYWxsb2NhdGUgZ3Vl c3QgbWVtb3J5ICovCisgICAgZm9yICggaSA9IHJjID0gYWxsb2NzeiA9IHZub2RlID0gMDsKKyAg ICAgICAgICAgIChpIDwgZG9tLT50b3RhbF9wYWdlcykgJiYgIXJjOyBpICs9IGFsbG9jc3osIHZu b2RlKysgKQorICAgIHsKKyAgICAgICAgaW50IG1ub2RlOworICAgICAgICB3aGlsZSAoIWRsYXlv dXQtPnZub2RlX2RhdGFbdm5vZGVdLm5yX3BhZ2VzKQorICAgICAgICB7CisgICAgICAgICAgICB2 bm9kZSsrOworICAgICAgICAgICAgaWYgKHZub2RlID49IGRsYXlvdXQtPm1heF92bm9kZXMpCisg ICAgICAgICAgICAgICAgdm5vZGUgPSAwOworICAgICAgICB9CisgICAgICAgIC8qIEFsbG9jYXRl IGluIDRNQiBzdHJpcGVzICovCisgICAgICAgIGFsbG9jc3ogPSBkb20tPnRvdGFsX3BhZ2VzIC0g aTsKKyAgICAgICAgaWYgKCBhbGxvY3N6ID4gMTAyNCApCisgICAgICAgICAgICBhbGxvY3N6ID0g MTAyNDsKKyAgICAgICAgaWYgKGFsbG9jc3ogPiBkbGF5b3V0LT52bm9kZV9kYXRhW3Zub2RlXS5u cl9wYWdlcykKKyAgICAgICAgICAgIGFsbG9jc3ogPSBkbGF5b3V0LT52bm9kZV9kYXRhW3Zub2Rl XS5ucl9wYWdlczsKKworICAgICAgICBkbGF5b3V0LT52bm9kZV9kYXRhW3Zub2RlXS5ucl9wYWdl cyAtPSBhbGxvY3N6OworICAgICAgICBtbm9kZSA9IGRsYXlvdXQtPnZub2RlX2RhdGFbdm5vZGVd Lm1ub2RlX2lkOworCisgICAgICAgIHJjID0geGNfZG9tYWluX21lbW9yeV9wb3B1bGF0ZV9waHlz bWFwKAorICAgICAgICAgICAgZG9tLT5ndWVzdF94YywgZG9tLT5ndWVzdF9kb21pZCwgYWxsb2Nz eiwKKyAgICAgICAgICAgIDAsIFhFTk1FTUZfZXhhY3Rfbm9kZShtbm9kZSksCisgICAgICAgICAg ICAmZG9tLT5wMm1faG9zdFtpXSk7CisgICAgfQorCisgICAgZnJlZShkbGF5b3V0KTsKKyAgICB4 Y19kb21fcHJpbnRmKCJcbiIpOworICAgIGlmIChyYykKKyAgICAgICAgeGNfZG9tX3ByaW50Zigi JXM6IEd1ZXN0IE5VTUEgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkIFxuIiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9f KTsKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgYXJjaF9zZXR1cF9udW1hX3NwbGl0 KHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKK3sKKyAgICBpbnQgcmMsIHZub2RlOworICAgIHhl bl9wZm5fdCBhbGxvY3N6LCBpOworCisgICAgc3RydWN0IHhlbl9kb21haW5fbnVtYV9sYXlvdXQg KmRsYXlvdXQ7CisgICAgeGVuX3Bmbl90IHByZXZfbm9kZV9saW1pdCwgY3VyX25vZGVfbGltaXQ7 CisKKyAgICBkbGF5b3V0ID0gIGRvbS0+bnVtYV9sYXlvdXQ7CisgICAgZm9yICh2bm9kZSA9IHJj ID0gcHJldl9ub2RlX2xpbWl0ID0gY3VyX25vZGVfbGltaXQgPSAwOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh2bm9kZSA8IGRsYXlvdXQtPm1heF92bm9kZXMpICYmICFyYzsgdm5vZGUr KykKKyAgICB7CisgICAgICAgIHN0cnVjdCB4ZW5fdm5vZGVfZGF0YSAqdm5vZGVfZGF0YSA9ICZk bGF5b3V0LT52bm9kZV9kYXRhW3Zub2RlXTsKKyAgICAgICAgY3VyX25vZGVfbGltaXQgPSBwcmV2 X25vZGVfbGltaXQgKyB2bm9kZV9kYXRhLT5ucl9wYWdlczsKKyAgICAgICAgLyogYWxsb2NhdGUg Z3Vlc3QgbWVtb3J5ICovCisgICAgICAgIHhjX2RvbV9wcmludGYoIiVzOiBHdWVzdCBOVU1BIC0g bm9kZSglZCk6cGFnZXMoJWx1KVxuIiwKKyAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18sIHZu b2RlLAorICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKShjdXJfbm9kZV9saW1pdCAtIHBy ZXZfbm9kZV9saW1pdCkpOworCisgICAgICAgIGZvciAoIGkgPSBhbGxvY3N6ID0gcHJldl9ub2Rl X2xpbWl0OworICAgICAgICAgICAgICAgIChpIDwgY3VyX25vZGVfbGltaXQpICYmICFyYzsgaSAr PSBhbGxvY3N6ICkKKyAgICAgICAgeworICAgICAgICAgICAgYWxsb2NzeiA9IGN1cl9ub2RlX2xp bWl0IC0gaTsKKyAgICAgICAgICAgIGlmICggYWxsb2NzeiA+IDEwMjQqMTAyNCApCisgICAgICAg ICAgICAgICAgYWxsb2NzeiA9IDEwMjQqMTAyNDsKKyAgICAgICAgICAgIHJjID0geGNfZG9tYWlu X21lbW9yeV9wb3B1bGF0ZV9waHlzbWFwKAorICAgICAgICAgICAgICAgIGRvbS0+Z3Vlc3RfeGMs IGRvbS0+Z3Vlc3RfZG9taWQsIGFsbG9jc3osCisgICAgICAgICAgICAgICAgMCwgWEVOTUVNRl9l eGFjdF9ub2RlKHZub2RlX2RhdGEtPm1ub2RlX2lkKSwKKyAgICAgICAgICAgICAgICAmZG9tLT5w Mm1faG9zdFtpXSk7CisgICAgICAgIH0KKyAgICAgICAgcHJldl9ub2RlX2xpbWl0ID0gY3VyX25v ZGVfbGltaXQ7CisgICAgfQorCisgICAgaWYgKHJjKQorICAgICAgICB4Y19kb21fcHJpbnRmKCIl czogR3Vlc3QgTlVNQSBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQgXG4iLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18p OworCisgICAgcmV0dXJuIHJjOworfQorCitzdGF0aWMgaW5saW5lIGludCBhcmNoX3NldHVwX251 bWFfbWVtaW5pdChzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCit7CisgICAgc3RydWN0IHhlbl9k b21haW5fbnVtYV9sYXlvdXQgKm51bWFfbGF5b3V0OworICAgIHhjX2RvbV9wcmludGYoIiVzOiB4 ODZfNjQgR3Vlc3QgTlVNQSBtZW0gc2V0dXAgLSB0b3RhbF9wYWdlcyglbHUpXG4iLAorICAgICAg ICAgICAgX19GVU5DVElPTl9fLCAodW5zaWduZWQgbG9uZylkb20tPnRvdGFsX3BhZ2VzKTsKKwor ICAgIG51bWFfbGF5b3V0ID0gZG9tLT5udW1hX2xheW91dDsKKyAgICBpZiAobnVtYV9sYXlvdXQt PnR5cGUgPT0gWEVOX0RPTV9OVU1BX1NUUklQRUQpCisgICAgICAgIHJldHVybiBhcmNoX3NldHVw X251bWFfc3RyaXBlZChkb20pOworICAgIAorICAgIHJldHVybiBhcmNoX3NldHVwX251bWFfc3Bs aXQoZG9tKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgYXJjaF9zZXR1cF9udW1hX2RvbWFpbihz dHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCit7CisgICAgaW50IHJjOworCisgICAgaWYgKChyYyA9 IGFyY2hfc2V0dXBfbnVtYV9tZW1pbml0KGRvbSkpKQorICAgIHsKKyAgICAgICAgeGNfZG9tX3By aW50ZigiJXM6IGFyY2hfc2V0dXBfbnVtYV9tZW1pbml0IGZhaWxlZFxuIiwgX19GVU5DVElPTl9f KTsKKyAgICAgICAgcmV0dXJuIHJjOyAKKyAgICB9CisjaWYgMAorICAgIHhjX2RvbWFpbl9ub2Rl bWVtX2Rpc3RyaWJ1dGlvbihkb20pOworI2VuZGlmCisgICAgaWYgKChyYyA9IHhjX2RvbWFpbl9u dW1hX3BpbnZjcHVzKGRvbSwgZG9tLT5udW1hX2xheW91dCkpKQorICAgIHsKKyAgICAgICAgeGNf ZG9tX3ByaW50ZigiJXM6IGFyY2hfc2V0dXBfbnVtYV9waW52Y3B1cyBmYWlsZWRcbiIsIF9fRlVO Q1RJT05fXyk7CisgICAgICAgIHJldHVybiByYzsgCisgICAgfQorICAgIGlmICgocmMgPSB4Y19z ZXRfZG9tYWluX251bWFfbGF5b3V0KGRvbSwgZG9tLT5udW1hX2xheW91dCkpKQorICAgIHsKKyAg ICAgICAgeGNfZG9tX3ByaW50ZigiJXM6IGFyY2hfc2V0dXBfbnVtYV9tZW1pbml0IGZhaWxlZFxu IiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgcmV0dXJuIHJjOyAKKyAgICB9CisKKyAgICByZXR1 cm4gcmM7Cit9CisKIGludCBhcmNoX3NldHVwX21lbWluaXQoc3RydWN0IHhjX2RvbV9pbWFnZSAq ZG9tKQogewogICAgIGludCByYzsKICAgICB4ZW5fcGZuX3QgcGZuLCBhbGxvY3N6LCBpLCBqLCBt Zm47CiAKKyAgICB4Y19kb21fcHJpbnRmKCIlczogeDg2IG1lbSBzZXR1cFxuIiwgX19GVU5DVElP Tl9fKTsKKwogICAgIHJjID0geDg2X2NvbXBhdChkb20tPmd1ZXN0X3hjLCBkb20tPmd1ZXN0X2Rv bWlkLCBkb20tPmd1ZXN0X3R5cGUpOwogICAgIGlmICggcmMgKQogICAgICAgICByZXR1cm4gcmM7 CkBAIC03MzksMTEgKzg4MywyMSBAQAogICAgICAgICAvKiBzZXR1cCBpbml0aWFsIHAybSAqLwog ICAgICAgICBmb3IgKCBwZm4gPSAwOyBwZm4gPCBkb20tPnRvdGFsX3BhZ2VzOyBwZm4rKyApCiAg ICAgICAgICAgICBkb20tPnAybV9ob3N0W3Bmbl0gPSBwZm47Ci0gICAgICAgIAorCisgICAgICAg IGlmIChkb20tPm51bWFfbGF5b3V0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIShyYz1h cmNoX3NldHVwX251bWFfZG9tYWluKGRvbSkpKQorICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgIHhjX2RvbV9wcmludGYoIiVzOiBhcmNoX251bWFfbWVtaW5pdCBzdWNjZXNzXG4iLCBfX0ZV TkNUSU9OX18pOworICAgICAgICAgICAgICAgIHJldHVybiByYzsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIHhjX2RvbV9wcmludGYoIiVzOiBhcmNoX251bWFfbWVtaW5pdCBmYWlsZWQgLSBy ZXZlcnRpbmcgdG8gXAorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IG1lbW9yeSBhbGxvY2F0 aW9uIHNjaGVtZVxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAgIGZyZWUoZG9tLT5udW1h X2xheW91dCk7CisgICAgICAgICAgICBkb20tPm51bWFfbGF5b3V0ID0gMDsKKyAgICAgICAgfQog ICAgICAgICAvKiBhbGxvY2F0ZSBndWVzdCBtZW1vcnkgKi8KLSAgICAgICAgZm9yICggaSA9IHJj ID0gYWxsb2NzeiA9IDA7Ci0gICAgICAgICAgICAgIChpIDwgZG9tLT50b3RhbF9wYWdlcykgJiYg IXJjOwotICAgICAgICAgICAgICBpICs9IGFsbG9jc3ogKQorICAgICAgICBmb3IgKCBpPXJjPWFs bG9jc3o9MDsgKGk8ZG9tLT50b3RhbF9wYWdlcykgJiYgIXJjOyBpKz1hbGxvY3N6ICkKICAgICAg ICAgewogICAgICAgICAgICAgYWxsb2NzeiA9IGRvbS0+dG90YWxfcGFnZXMgLSBpOwogICAgICAg ICAgICAgaWYgKCBhbGxvY3N6ID4gMTAyNCoxMDI0ICkKQEAgLTc1Myw3ICs5MDcsNiBAQAogICAg ICAgICAgICAgICAgIDAsIDAsICZkb20tPnAybV9ob3N0W2ldKTsKICAgICAgICAgfQogICAgIH0K LQogICAgIHJldHVybiByYzsKIH0KIApkaWZmIC1yIDMwMDQwOTJjNDc5MiAtciBhYTZlZDY5NDQ5 OWQgeGVuL2FyY2gveDg2L21tLmMKLS0tIGEveGVuL2FyY2gveDg2L21tLmMJVGh1IEFwciAwMSAx NjoyMzoyNyAyMDEwIC0wNDAwCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS5jCVNhdCBBcHIgMDMgMDI6 MDI6MDUgMjAxMCAtMDQwMApAQCAtNDYxNSw5ICs0NjE1LDEzIEBACiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg ICAgICAgICAgfQotCisgICAgICAgICAgICAgICAgICAgIHByaW50aygiWEVOTUVNX21lbW5vZGVf bWFwIDogJXUsICVkLCAlbHVcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwLT5i dWZzaXplLCBtZW1ub2RlX3NoaWZ0LCBtZW1ub2RlbWFwc2l6ZSk7CisKKyAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIFhFTk1F TV9nZXRfZG9tYWluX251bWFfbGF5b3V0OgogICAgICAgICAgICAgY2FzZSBYRU5NRU1fc2V0X2Rv bWFpbl9udW1hX2xheW91dDoKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCB4ZW5tZW1fZG9tYWluX251bWFfbGF5b3V0ICpsYXlvdXQ7CmRpZmYgLXIgMzAwNDA5 MmM0NzkyIC1yIGFhNmVkNjk0NDk5ZCB4ZW4vaW5jbHVkZS9wdWJsaWMvbWVtb3J5LmgKLS0tIGEv eGVuL2luY2x1ZGUvcHVibGljL21lbW9yeS5oCVRodSBBcHIgMDEgMTY6MjM6MjcgMjAxMCAtMDQw MAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvbWVtb3J5LmgJU2F0IEFwciAwMyAwMjowMjowNSAy MDEwIC0wNDAwCkBAIC0yNzEsNyArMjcxLDcgQEAKIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhl bl9mb3JlaWduX21lbW9yeV9tYXBfdCk7CiAKIAotLyogUmV0dXJucyBudW1hIHJlbGF0ZWQgaW5m byAqLworLyogeGVuIGd1ZXN0IG51bWEgb3BlcmF0aW9ucyAqLwogI2RlZmluZSBYRU5NRU1fbnVt YV9vcCAgICAgICAgICAgMTUKIAogI2RlZmluZSBYRU5fRE9NX05VTUFfSU5URVJGQUNFX1ZFUlNJ T04gIDB4MDAwMDAwMDEKQEAgLTM1Myw2ICszNTMsNyBAQAogCiBzdHJ1Y3QgeGVubWVtX2RvbWFp bl9udW1hX2xheW91dCB7CiAgICAgZG9taWRfdCBkb21pZDsKKyAgICB1aW50MzJfdCB2ZXJzaW9u OwogCiAgICAgdWludDMyX3QgYnVmc2l6ZTsKICAgICBYRU5fR1VFU1RfSEFORExFKHZvaWQpIGJ1 ZjsKZGlmZiAtciAzMDA0MDkyYzQ3OTIgLXIgYWE2ZWQ2OTQ0OTlkIHhlbi9pbmNsdWRlL3B1Ymxp Yy94ZW4uaAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMveGVuLmgJVGh1IEFwciAwMSAxNjoyMzoy NyAyMDEwIC0wNDAwCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy94ZW4uaAlTYXQgQXByIDAzIDAy OjAyOjA1IDIwMTAgLTA0MDAKQEAgLTU5MCw2ICs1OTAsNyBAQAogI2RlZmluZSBTSUZfUFJJVklM RUdFRCAgICAoMTw8MCkgIC8qIElzIHRoZSBkb21haW4gcHJpdmlsZWdlZD8gKi8KICNkZWZpbmUg U0lGX0lOSVRET01BSU4gICAgKDE8PDEpICAvKiBJcyB0aGlzIHRoZSBpbml0aWFsIGNvbnRyb2wg ZG9tYWluPyAqLwogI2RlZmluZSBTSUZfTVVMVElCT09UX01PRCAoMTw8MikgIC8qIElzIG1vZF9z dGFydCBhIG11bHRpYm9vdCBtb2R1bGU/ICovCisjZGVmaW5lIFNJRl9OVU1BX0RPTUFJTiAgICgx PDwzKSAgLyogSXMgdGhlIGRvbWFpbiBOVU1BIGF3YXJlID8gKi8KICNkZWZpbmUgU0lGX1BNX01B U0sgICAgICAgKDB4RkY8PDgpIC8qIHJlc2VydmUgMSBieXRlIGZvciB4ZW4tcG0gb3B0aW9ucyAq LwogCiAvKgo= --0016e6dab0cd01d44804836e3f0b Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --0016e6dab0cd01d44804836e3f0b--