From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [RFC v2 09/12] tools: implement the new get hw info interface suitable to all psr allocation features. Date: Thu, 20 Jul 2017 16:49:10 +0800 Message-ID: <1500540553-29199-10-git-send-email-yi.y.sun@linux.intel.com> References: <1500540553-29199-1-git-send-email-yi.y.sun@linux.intel.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 1dY7NY-0007Y3-Qr for xen-devel@lists.xenproject.org; Thu, 20 Jul 2017 09:04:17 +0000 In-Reply-To: <1500540553-29199-1-git-send-email-yi.y.sun@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, ian.jackson@eu.citrix.com, Yi Sun , julien.grall@arm.com, mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgbmV3IGdldCBodyBpbmZvIGludGVyZmFjZSBzdWl0YWJs ZSBmb3IgYWxsIHBzciBhbGxvY2F0aW9uCmZlYXR1cmVzIGFuZCB0aGUgd2hvbGUgZmxvdy4gSXQg YWxzbyBlbmFibGVzIE1CQSBzdXBwb3J0IGluIHRvb2xzIHRvIGdldCBNQkEKSFcgaW5mby4KClNp Z25lZC1vZmYtYnk6IFlpIFN1biA8eWkueS5zdW5AbGludXguaW50ZWwuY29tPgotLS0KIHRvb2xz L2xpYnhjL2luY2x1ZGUveGVuY3RybC5oIHwgIDMwICsrKysrKystCiB0b29scy9saWJ4Yy94Y19w c3IuYyAgICAgICAgICB8ICA0NiArKysrKysrKystLS0tCiB0b29scy9saWJ4bC9saWJ4bF9wc3Iu YyAgICAgICB8IDE1NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0K IHRvb2xzL3hsL3hsX2NtZHRhYmxlLmMgICAgICAgIHwgICAzICsKIHRvb2xzL3hsL3hsX3Bzci5j ICAgICAgICAgICAgIHwgIDQ1ICsrKysrKysrKysrLQogNSBmaWxlcyBjaGFuZ2VkLCAyMzggaW5z ZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5j bHVkZS94ZW5jdHJsLmggYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAppbmRleCAyMjQ4 OTAwLi4wYjBlYzMxIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAor KysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaApAQCAtMjQ2MCw2ICsyNDYwLDMxIEBA IGVudW0geGNfcHNyX2NhdF90eXBlIHsKIH07CiB0eXBlZGVmIGVudW0geGNfcHNyX2NhdF90eXBl IHhjX3Bzcl9jYXRfdHlwZTsKIAorZW51bSB4Y19wc3JfZmVhdF90eXBlIHsKKyAgICBYQ19QU1Jf RkVBVF9VTktOT1dOICAgID0gMCwKKyAgICBYQ19QU1JfRkVBVF9DQVRfTDMgICAgID0gMSwKKyAg ICBYQ19QU1JfRkVBVF9DQVRfTDIgICAgID0gMiwKKyAgICBYQ19QU1JfRkVBVF9NQkEgICAgICAg ID0gMywKK307Cit0eXBlZGVmIGVudW0geGNfcHNyX2ZlYXRfdHlwZSB4Y19wc3JfZmVhdF90eXBl OworCitzdHJ1Y3QgeGNfcHNyX2h3X2luZm8geworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0 IHsKKyAgICAgICAgICAgIHVpbnQzMl90IGNvc19tYXg7CisgICAgICAgICAgICB1aW50MzJfdCBj Ym1fbGVuOworICAgICAgICAgICAgYm9vbCAgICAgY2RwX2VuYWJsZWQ7CisgICAgICAgIH0geGNf Y2F0X2luZm87CisKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQzMl90IGNvc19t YXg7CisgICAgICAgICAgICB1aW50MzJfdCB0aHJ0bF9tYXg7CisgICAgICAgICAgICBib29sICAg ICBsaW5lYXI7CisgICAgICAgIH0geGNfbWJhX2luZm87CisgICAgfSB1OworfTsKK3R5cGVkZWYg c3RydWN0IHhjX3Bzcl9od19pbmZvIHhjX3Bzcl9od19pbmZvOworCiBpbnQgeGNfcHNyX2NtdF9h dHRhY2goeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkKTsKIGludCB4Y19wc3JfY210 X2RldGFjaCh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQpOwogaW50IHhjX3Bzcl9j bXRfZ2V0X2RvbWFpbl9ybWlkKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKQEAg LTI0ODEsOSArMjUwNiw4IEBAIGludCB4Y19wc3JfY2F0X3NldF9kb21haW5fZGF0YSh4Y19pbnRl cmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQsCiBpbnQgeGNfcHNyX2NhdF9nZXRfZG9tYWluX2Rh dGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHhjX3Bzcl9jYXRfdHlwZSB0eXBlLCB1aW50MzJfdCB0YXJnZXQsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgKmRhdGEpOwotaW50IHhjX3Bzcl9j YXRfZ2V0X2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IHNvY2tldCwgdW5zaWduZWQg aW50IGx2bCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpjb3NfbWF4LCB1aW50 MzJfdCAqY2JtX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmNkcF9lbmFibGVk KTsKK2ludCB4Y19wc3JfZ2V0X2h3X2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IHNv Y2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNyX2ZlYXRfdHlwZSB0eXBlLCB4Y19w c3JfaHdfaW5mbyAqaHdfaW5mbyk7CiAKIGludCB4Y19nZXRfY3B1X2xldmVsbGluZ19jYXBzKHhj X2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCAqY2Fwcyk7CiBpbnQgeGNfZ2V0X2NwdV9mZWF0dXJl c2V0KHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBpbmRleCwKZGlmZiAtLWdpdCBhL3Rvb2xz L2xpYnhjL3hjX3Bzci5jIGIvdG9vbHMvbGlieGMveGNfcHNyLmMKaW5kZXggNzNkMDVmMi4uNDk0 ZDFmMCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfcHNyLmMKKysrIGIvdG9vbHMvbGlieGMv eGNfcHNyLmMKQEAgLTMyMywzNiArMzIzLDU4IEBAIGludCB4Y19wc3JfY2F0X2dldF9kb21haW5f ZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQsCiAgICAgcmV0dXJuIHJjOwog fQogCi1pbnQgeGNfcHNyX2NhdF9nZXRfaW5mbyh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3Qg c29ja2V0LCB1bnNpZ25lZCBpbnQgbHZsLAotICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy X3QgKmNvc19tYXgsIHVpbnQzMl90ICpjYm1fbGVuLCBib29sICpjZHBfZW5hYmxlZCkKK2ludCB4 Y19wc3JfZ2V0X2h3X2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IHNvY2tldCwKKyAg ICAgICAgICAgICAgICAgICAgICAgeGNfcHNyX2ZlYXRfdHlwZSB0eXBlLCB4Y19wc3JfaHdfaW5m byAqaHdfaW5mbykKIHsKICAgICBpbnQgcmMgPSAtMTsKICAgICBERUNMQVJFX1NZU0NUTDsKIAor ICAgIGlmICggIWh3X2luZm8gKQorICAgICAgICByZXR1cm4gcmM7CisKICAgICBzeXNjdGwuY21k ID0gWEVOX1NZU0NUTF9wc3JfYWxsb2Nfb3A7CiAgICAgc3lzY3RsLnUucHNyX2FsbG9jX29wLnRh cmdldCA9IHNvY2tldDsKIAotICAgIHN3aXRjaCAoIGx2bCApCisgICAgc3dpdGNoICggdHlwZSAp CiAgICAgewotICAgIGNhc2UgMjoKKyAgICBjYXNlIFhDX1BTUl9GRUFUX0NBVF9MMjoKICAgICAg ICAgc3lzY3RsLnUucHNyX2FsbG9jX29wLmNtZCA9IFhFTl9TWVNDVExfUFNSX0NBVF9nZXRfbDJf aW5mbzsKICAgICAgICAgcmMgPSB4Y19zeXNjdGwoeGNoLCAmc3lzY3RsKTsKICAgICAgICAgaWYg KCAhcmMgKQogICAgICAgICB7Ci0gICAgICAgICAgICAqY29zX21heCA9IHN5c2N0bC51LnBzcl9h bGxvY19vcC51LmNhdF9pbmZvLmNvc19tYXg7Ci0gICAgICAgICAgICAqY2JtX2xlbiA9IHN5c2N0 bC51LnBzcl9hbGxvY19vcC51LmNhdF9pbmZvLmNibV9sZW47Ci0gICAgICAgICAgICAqY2RwX2Vu YWJsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGh3X2luZm8tPnUueGNfY2F0X2luZm8uY29zX21h eCA9CisgICAgICAgICAgICAgICAgICAgICAgICBzeXNjdGwudS5wc3JfYWxsb2Nfb3AudS5jYXRf aW5mby5jb3NfbWF4OworICAgICAgICAgICAgaHdfaW5mby0+dS54Y19jYXRfaW5mby5jYm1fbGVu ID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c2N0bC51LnBzcl9hbGxvY19vcC51LmNhdF9p bmZvLmNibV9sZW47CisgICAgICAgICAgICBod19pbmZvLT51LnhjX2NhdF9pbmZvLmNkcF9lbmFi bGVkID0gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAzOgorICAg IGNhc2UgWENfUFNSX0ZFQVRfQ0FUX0wzOgogICAgICAgICBzeXNjdGwudS5wc3JfYWxsb2Nfb3Au Y21kID0gWEVOX1NZU0NUTF9QU1JfQ0FUX2dldF9sM19pbmZvOwogICAgICAgICByYyA9IHhjX3N5 c2N0bCh4Y2gsICZzeXNjdGwpOwogICAgICAgICBpZiAoICFyYyApCiAgICAgICAgIHsKLSAgICAg ICAgICAgICpjb3NfbWF4ID0gc3lzY3RsLnUucHNyX2FsbG9jX29wLnUuY2F0X2luZm8uY29zX21h eDsKLSAgICAgICAgICAgICpjYm1fbGVuID0gc3lzY3RsLnUucHNyX2FsbG9jX29wLnUuY2F0X2lu Zm8uY2JtX2xlbjsKLSAgICAgICAgICAgICpjZHBfZW5hYmxlZCA9IHN5c2N0bC51LnBzcl9hbGxv Y19vcC51LmNhdF9pbmZvLmZsYWdzICYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFhFTl9T WVNDVExfUFNSX0NBVF9MM19DRFA7CisgICAgICAgICAgICBod19pbmZvLT51LnhjX2NhdF9pbmZv LmNvc19tYXggPQorICAgICAgICAgICAgICAgICAgICAgICAgc3lzY3RsLnUucHNyX2FsbG9jX29w LnUuY2F0X2luZm8uY29zX21heDsKKyAgICAgICAgICAgIGh3X2luZm8tPnUueGNfY2F0X2luZm8u Y2JtX2xlbiA9CisgICAgICAgICAgICAgICAgICAgICAgICBzeXNjdGwudS5wc3JfYWxsb2Nfb3Au dS5jYXRfaW5mby5jYm1fbGVuOworICAgICAgICAgICAgaHdfaW5mby0+dS54Y19jYXRfaW5mby5j ZHBfZW5hYmxlZCA9CisgICAgICAgICAgICAgICAgICAgICAgICBzeXNjdGwudS5wc3JfYWxsb2Nf b3AudS5jYXRfaW5mby5mbGFncyAmCisgICAgICAgICAgICAgICAgICAgICAgICBYRU5fU1lTQ1RM X1BTUl9DQVRfTDNfQ0RQOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWENf UFNSX0ZFQVRfTUJBOgorICAgICAgICBzeXNjdGwudS5wc3JfYWxsb2Nfb3AuY21kID0gWEVOX1NZ U0NUTF9QU1JfTUJBX2dldF9pbmZvOworICAgICAgICByYyA9IHhjX3N5c2N0bCh4Y2gsICZzeXNj dGwpOworICAgICAgICBpZiAoICFyYyApCisgICAgICAgIHsKKyAgICAgICAgICAgIGh3X2luZm8t PnUueGNfbWJhX2luZm8uY29zX21heCA9CisgICAgICAgICAgICAgICAgICAgICAgICBzeXNjdGwu dS5wc3JfYWxsb2Nfb3AudS5tYmFfaW5mby5jb3NfbWF4OworICAgICAgICAgICAgaHdfaW5mby0+ dS54Y19tYmFfaW5mby50aHJ0bF9tYXggPQorICAgICAgICAgICAgICAgICAgICAgICAgc3lzY3Rs LnUucHNyX2FsbG9jX29wLnUubWJhX2luZm8udGhydGxfbWF4OworICAgICAgICAgICAgaHdfaW5m by0+dS54Y19tYmFfaW5mby5saW5lYXIgPQorICAgICAgICAgICAgICAgICAgICAgICAgc3lzY3Rs LnUucHNyX2FsbG9jX29wLnUubWJhX2luZm8ubGluZWFyICYKKyAgICAgICAgICAgICAgICAgICAg ICAgIFhFTl9TWVNDVExfUFNSX01CQV9MSU5FQVI7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7 CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3Bzci5jIGIvdG9v bHMvbGlieGwvbGlieGxfcHNyLmMKaW5kZXggODMxOTMwMS4uNDNiODRiNiAxMDA2NDQKLS0tIGEv dG9vbHMvbGlieGwvbGlieGxfcHNyLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKQEAg LTM2MSw0NyArMzYxLDQ5IEBAIGludCBsaWJ4bF9wc3JfY2F0X2dldF9jYm0obGlieGxfY3R4ICpj dHgsIHVpbnQzMl90IGRvbWlkLAogICAgIHJldHVybiByYzsKIH0KIAorc3RhdGljIGlubGluZSBp bnQgbGlieGxfcHNyX2h3X2luZm9fdG9fbGlieGxfcHNyX2NhdF9pbmZvKAorICAgICAgICAgICAg ICAgICAgICAgIGxpYnhsX3Bzcl9mZWF0X3R5cGUgdHlwZSwgbGlieGxfcHNyX2h3X2luZm8gKmh3 X2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgbGlieGxfcHNyX2NhdF9pbmZvICpjYXRfaW5m bykKK3sKKyAgICBpZiAodHlwZSAhPSBMSUJYTF9QU1JfRkVBVF9UWVBFX0NBVF9JTkZPKQorICAg ICAgICByZXR1cm4gLTE7CisKKyAgICBjYXRfaW5mby0+aWQgPSBod19pbmZvLT5pZDsKKyAgICBj YXRfaW5mby0+Y29zX21heCA9IGh3X2luZm8tPnUuY2F0X2luZm8uY29zX21heDsKKyAgICBjYXRf aW5mby0+Y2JtX2xlbiA9IGh3X2luZm8tPnUuY2F0X2luZm8uY2JtX2xlbjsKKyAgICBjYXRfaW5m by0+Y2RwX2VuYWJsZWQgPSBod19pbmZvLT51LmNhdF9pbmZvLmNkcF9lbmFibGVkOworCisgICAg cmV0dXJuIDA7Cit9CisKIGludCBsaWJ4bF9wc3JfY2F0X2dldF9pbmZvKGxpYnhsX2N0eCAqY3R4 LCBsaWJ4bF9wc3JfY2F0X2luZm8gKippbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50ICpuciwgdW5zaWduZWQgaW50IGx2bCkKIHsKICAgICBHQ19JTklUKGN0eCk7CiAgICAgaW50 IHJjOwotICAgIGludCBpID0gMCwgc29ja2V0aWQsIG5yX3NvY2tldHM7Ci0gICAgbGlieGxfYml0 bWFwIHNvY2tldG1hcDsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBsaWJ4bF9wc3JfaHdfaW5m byAqaHdfaW5mbzsKICAgICBsaWJ4bF9wc3JfY2F0X2luZm8gKnB0cjsKIAotICAgIGxpYnhsX2Jp dG1hcF9pbml0KCZzb2NrZXRtYXApOwotCi0gICAgcmMgPSBsaWJ4bF9fY291bnRfcGh5c2ljYWxf c29ja2V0cyhnYywgJm5yX3NvY2tldHMpOwotICAgIGlmIChyYykgewotICAgICAgICBMT0dFKEVS Uk9SLCAiZmFpbGVkIHRvIGdldCBzeXN0ZW0gc29ja2V0IGNvdW50Iik7Ci0gICAgICAgIGdvdG8g b3V0OwotICAgIH0KLQotICAgIGxpYnhsX3NvY2tldF9iaXRtYXBfYWxsb2MoY3R4LCAmc29ja2V0 bWFwLCBucl9zb2NrZXRzKTsKLSAgICByYyA9IGxpYnhsX2dldF9vbmxpbmVfc29ja2V0bWFwKGN0 eCwgJnNvY2tldG1hcCk7Ci0gICAgaWYgKHJjIDwgMCkgewotICAgICAgICBMT0dFKEVSUk9SLCAi ZmFpbGVkIHRvIGdldCBhdmFpbGFibGUgc29ja2V0cyIpOworICAgIHJjID0gbGlieGxfcHNyX2dl dF9od19pbmZvKGN0eCwgJmh3X2luZm8sIG5yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExJQlhMX1BTUl9GRUFUX1RZUEVfQ0FUX0lORk8sIGx2bCk7CisgICAgaWYgKHJjKQogICAg ICAgICBnb3RvIG91dDsKLSAgICB9CiAKLSAgICBwdHIgPSBsaWJ4bF9fbWFsbG9jKE5PR0MsIG5y X3NvY2tldHMgKiBzaXplb2YobGlieGxfcHNyX2NhdF9pbmZvKSk7CisgICAgcHRyID0gbGlieGxf X21hbGxvYyhOT0dDLCAqbnIgKiBzaXplb2YobGlieGxfcHNyX2NhdF9pbmZvKSk7CiAKLSAgICBs aWJ4bF9mb3JfZWFjaF9zZXRfYml0KHNvY2tldGlkLCBzb2NrZXRtYXApIHsKLSAgICAgICAgcHRy W2ldLmlkID0gc29ja2V0aWQ7Ci0gICAgICAgIGlmICh4Y19wc3JfY2F0X2dldF9pbmZvKGN0eC0+ eGNoLCBzb2NrZXRpZCwgbHZsLCAmcHRyW2ldLmNvc19tYXgsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZwdHJbaV0uY2JtX2xlbiwgJnB0cltpXS5jZHBfZW5hYmxlZCkpIHsKKyAg ICBmb3IgKGkgPSAwOyBpIDwgKm5yOyBpKyspIHsKKyAgICAgICAgaWYgKGxpYnhsX3Bzcl9od19p bmZvX3RvX2xpYnhsX3Bzcl9jYXRfaW5mbygKKyAgICAgICAgICAgICAgICAgICAgTElCWExfUFNS X0ZFQVRfVFlQRV9DQVRfSU5GTywKKyAgICAgICAgICAgICAgICAgICAgJmh3X2luZm9baV0sICZw dHJbaV0pKSB7CiAgICAgICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAgICAgICAgICAgICBmcmVl KHB0cik7CiAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgfQotICAgICAgICBpKys7CiAg ICAgfQogCiAgICAgKmluZm8gPSBwdHI7Ci0gICAgKm5yID0gaTsKIG91dDoKLSAgICBsaWJ4bF9i aXRtYXBfZGlzcG9zZSgmc29ja2V0bWFwKTsKICAgICBHQ19GUkVFOwogICAgIHJldHVybiByYzsK IH0KQEAgLTQzOSwxNCArNDQxLDExOSBAQCBpbnQgbGlieGxfcHNyX2dldF92YWwobGlieGxfY3R4 ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiB9CiAKK3N0 YXRpYyBpbmxpbmUgeGNfcHNyX2ZlYXRfdHlwZSBsaWJ4bF9fcHNyX2ZlYXRfdHlwZV90b19saWJ4 Y19wc3JfZmVhdF90eXBlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4 bF9wc3JfZmVhdF90eXBlIHR5cGUsIGludCBsdmwpCit7CisgICAgeGNfcHNyX2ZlYXRfdHlwZSB4 Y190eXBlID0gWENfUFNSX0ZFQVRfVU5LTk9XTjsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAg IGNhc2UgTElCWExfUFNSX0ZFQVRfVFlQRV9DQVRfSU5GTzoKKyAgICAgICAgaWYgKGx2bCA9PSAz KQorICAgICAgICAgICAgeGNfdHlwZSA9IFhDX1BTUl9GRUFUX0NBVF9MMzsKKyAgICAgICAgaWYg KGx2bCA9PSAyKQorICAgICAgICAgICAgeGNfdHlwZSA9IFhDX1BTUl9GRUFUX0NBVF9MMjsKKyAg ICAgICAgYnJlYWs7CisgICAgY2FzZSBMSUJYTF9QU1JfRkVBVF9UWVBFX01CQV9JTkZPOgorICAg ICAgICB4Y190eXBlID0gWENfUFNSX0ZFQVRfTUJBOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJy ZWFrOworICAgIH0KKworICAgIHJldHVybiB4Y190eXBlOworfQorCitzdGF0aWMgaW5saW5lIGlu dCBsaWJ4Y19fcHNyX2h3X2luZm9fdG9fbGlieGxfcHNyX2h3X2luZm8oCisgICAgICAgICAgICAg ICAgICAgICAgbGlieGxfcHNyX2ZlYXRfdHlwZSB0eXBlLCB4Y19wc3JfaHdfaW5mbyAqeGNfaHdf aW5mbywKKyAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfaHdfaW5mbyAqeGxfaHdfaW5m bykKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIExJQlhMX1BTUl9GRUFUX1RZUEVf Q0FUX0lORk86CisgICAgICAgIHhsX2h3X2luZm8tPnUuY2F0X2luZm8uY29zX21heCA9IHhjX2h3 X2luZm8tPnUueGNfY2F0X2luZm8uY29zX21heDsKKyAgICAgICAgeGxfaHdfaW5mby0+dS5jYXRf aW5mby5jYm1fbGVuID0geGNfaHdfaW5mby0+dS54Y19jYXRfaW5mby5jYm1fbGVuOworICAgICAg ICB4bF9od19pbmZvLT51LmNhdF9pbmZvLmNkcF9lbmFibGVkID0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB4Y19od19pbmZvLT51LnhjX2NhdF9pbmZvLmNkcF9lbmFi bGVkOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExJQlhMX1BTUl9GRUFUX1RZUEVfTUJBX0lO Rk86CisgICAgICAgIHhsX2h3X2luZm8tPnUubWJhX2luZm8uY29zX21heCA9IHhjX2h3X2luZm8t PnUueGNfbWJhX2luZm8uY29zX21heDsKKyAgICAgICAgeGxfaHdfaW5mby0+dS5tYmFfaW5mby50 aHJ0bF9tYXggPSB4Y19od19pbmZvLT51LnhjX21iYV9pbmZvLnRocnRsX21heDsKKyAgICAgICAg eGxfaHdfaW5mby0+dS5tYmFfaW5mby5saW5lYXIgPSB4Y19od19pbmZvLT51LnhjX21iYV9pbmZv LmxpbmVhcjsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIC0x OworICAgIH0KKworICAgIHJldHVybiAwOworfQorCiBpbnQgbGlieGxfcHNyX2dldF9od19pbmZv KGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9wc3JfaHdfaW5mbyAqKmluZm8sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCAqbnIsIGxpYnhsX3Bzcl9mZWF0X3R5cGUgdHlwZSwgaW50IGx2bCkK IHsKLSAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIEdDX0lOSVQoY3R4KTsKKyAgICBpbnQg cmM7CisgICAgaW50IGkgPSAwLCBzb2NrZXRpZCwgbnJfc29ja2V0czsKKyAgICBsaWJ4bF9iaXRt YXAgc29ja2V0bWFwOworICAgIGxpYnhsX3Bzcl9od19pbmZvICpwdHI7CisgICAgeGNfcHNyX2Zl YXRfdHlwZSB4Y190eXBlOworICAgIHhjX3Bzcl9od19pbmZvIGh3X2luZm87CisKKyAgICBsaWJ4 bF9iaXRtYXBfaW5pdCgmc29ja2V0bWFwKTsKKworICAgIGlmICggdHlwZSA9PSBMSUJYTF9QU1Jf RkVBVF9UWVBFX0NBVF9JTkZPICYmIGx2bCAhPSAzICYmIGx2bCAhPSAyKSB7CisgICAgICAgIExP R0UoRVJST1IsICJpbnB1dCBsdmwgJWQgaXMgd3JvbmchXG4iLCBsdmwpOworICAgICAgICByYyA9 IEVSUk9SX0ZBSUw7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIHhjX3R5cGUgPSBs aWJ4bF9fcHNyX2ZlYXRfdHlwZV90b19saWJ4Y19wc3JfZmVhdF90eXBlKHR5cGUsIGx2bCk7CisK KyAgICByYyA9IGxpYnhsX19jb3VudF9waHlzaWNhbF9zb2NrZXRzKGdjLCAmbnJfc29ja2V0cyk7 CisgICAgaWYgKHJjKSB7CisgICAgICAgIExPR0UoRVJST1IsICJmYWlsZWQgdG8gZ2V0IHN5c3Rl bSBzb2NrZXQgY291bnQiKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgbGlieGxf c29ja2V0X2JpdG1hcF9hbGxvYyhjdHgsICZzb2NrZXRtYXAsIG5yX3NvY2tldHMpOworICAgIHJj ID0gbGlieGxfZ2V0X29ubGluZV9zb2NrZXRtYXAoY3R4LCAmc29ja2V0bWFwKTsKKyAgICBpZiAo cmMgPCAwKSB7CisgICAgICAgIExPR0UoRVJST1IsICJmYWlsZWQgdG8gZ2V0IGF2YWlsYWJsZSBz b2NrZXRzIik7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIHB0ciA9IGxpYnhsX19t YWxsb2MoTk9HQywgbnJfc29ja2V0cyAqIHNpemVvZihsaWJ4bF9wc3JfaHdfaW5mbykpOworCisg ICAgbGlieGxfZm9yX2VhY2hfc2V0X2JpdChzb2NrZXRpZCwgc29ja2V0bWFwKSB7CisgICAgICAg IHB0cltpXS5pZCA9IHNvY2tldGlkOworICAgICAgICBpZiAoeGNfcHNyX2dldF9od19pbmZvKGN0 eC0+eGNoLCBzb2NrZXRpZCwgeGNfdHlwZSwgJmh3X2luZm8pKSB7CisgICAgICAgICAgICByYyA9 IEVSUk9SX0ZBSUw7CisgICAgICAgICAgICBmcmVlKHB0cik7CisgICAgICAgICAgICBnb3RvIG91 dDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsaWJ4Y19fcHNyX2h3X2luZm9fdG9fbGlieGxf cHNyX2h3X2luZm8odHlwZSwgJmh3X2luZm8sICZwdHJbaV0pKSB7CisgICAgICAgICAgICBMT0dF KEVSUk9SLCAiSW5wdXQgdHlwZSAlZCBpcyB3cm9uZyFcbiIsIHR5cGUpOworICAgICAgICAgICAg cmMgPSBFUlJPUl9GQUlMOworICAgICAgICAgICAgZnJlZShwdHIpOworICAgICAgICAgICAgZ290 byBvdXQ7CisgICAgICAgIH0KKworICAgICAgICBpKys7CisgICAgfQorCisgICAgKmluZm8gPSBw dHI7CisgICAgKm5yID0gaTsKK291dDoKKyAgICBsaWJ4bF9iaXRtYXBfZGlzcG9zZSgmc29ja2V0 bWFwKTsKKyAgICBHQ19GUkVFOworICAgIHJldHVybiByYzsKIH0KIAogdm9pZCBsaWJ4bF9wc3Jf aHdfaW5mb19saXN0X2ZyZWUobGlieGxfcHNyX2h3X2luZm8gKmxpc3QsIGludCBucikKIHsKKyAg ICBpbnQgaTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBucjsgaSsrKQorICAgICAgICBsaWJ4bF9w c3JfaHdfaW5mb19kaXNwb3NlKCZsaXN0W2ldKTsKKyAgICBmcmVlKGxpc3QpOwogfQogCiAvKgpk aWZmIC0tZ2l0IGEvdG9vbHMveGwveGxfY21kdGFibGUuYyBiL3Rvb2xzL3hsL3hsX2NtZHRhYmxl LmMKaW5kZXggMmM3MWE5Zi4uMTRhMDJkNCAxMDA2NDQKLS0tIGEvdG9vbHMveGwveGxfY21kdGFi bGUuYworKysgYi90b29scy94bC94bF9jbWR0YWJsZS5jCkBAIC01MjQsNiArNTI0LDkgQEAgc3Ry dWN0IGNtZF9zcGVjIGNtZF90YWJsZVtdID0gewogICAgICAgIltvcHRpb25zXSIsCiAgICAgICAi LW0sIC0tY210ICAgICAgIFNob3cgQ2FjaGUgTW9uaXRvcmluZyBUZWNobm9sb2d5IChDTVQpIGhh cmR3YXJlIGluZm9cbiIKICAgICAgICItYSwgLS1jYXQgICAgICAgU2hvdyBDYWNoZSBBbGxvY2F0 aW9uIFRlY2hub2xvZ3kgKENBVCkgaGFyZHdhcmUgaW5mb1xuIgorI2lmZGVmIExJQlhMX0hBVkVf UFNSX01CQQorICAgICAgIi1iLCAtLW1iYSAgICAgICBTaG93IE1lbW9yeSBCYW5kd2lkdGggQWxs b2NhdGlvbiAoTUJBKSBoYXJkd2FyZSBpbmZvXG4iCisjZW5kaWYKICAgICB9LAogICAgIHsgInBz ci1jbXQtYXR0YWNoIiwKICAgICAgICZtYWluX3Bzcl9jbXRfYXR0YWNoLCAwLCAxLApkaWZmIC0t Z2l0IGEvdG9vbHMveGwveGxfcHNyLmMgYi90b29scy94bC94bF9wc3IuYwppbmRleCA3MzA5ZDRm Li4wMzdlYWIzIDEwMDY0NAotLS0gYS90b29scy94bC94bF9wc3IuYworKysgYi90b29scy94bC94 bF9wc3IuYwpAQCAtNDc5LDYgKzQ3OSwzNyBAQCBzdGF0aWMgaW50IHBzcl9sMl9jYXRfaHdpbmZv KHZvaWQpCiAgICAgcmV0dXJuIHJjOwogfQogCisjaWZkZWYgTElCWExfSEFWRV9QU1JfTUJBCitz dGF0aWMgaW50IHBzcl9tYmFfaHdpbmZvKHZvaWQpCit7CisgICAgaW50IHJjOworICAgIGludCBp LCBucjsKKyAgICBsaWJ4bF9wc3JfaHdfaW5mbyAqaW5mbzsKKworICAgIHByaW50ZigiTWVtb3J5 IEJhbmR3aWR0aCBBbGxvY2F0aW9uIChNQkEpOlxuIik7CisKKyAgICByYyA9IGxpYnhsX3Bzcl9n ZXRfaHdfaW5mbyhjdHgsICZpbmZvLCAmbnIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTElCWExfUFNSX0ZFQVRfVFlQRV9NQkFfSU5GTywgMCk7CisgICAgaWYgKHJjKSB7CisgICAg ICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCBtYmEgaW5mb1xuIik7CisgICAgICAg IHJldHVybiByYzsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnI7IGkrKykgeworICAg ICAgICBwcmludGYoIiUtMTZzOiAldVxuIiwgIlNvY2tldCBJRCIsIGluZm9baV0uaWQpOworICAg ICAgICBwcmludGYoIiUtMTZzOiAlc1xuIiwgIkxpbmVhciBNb2RlIiwKKyAgICAgICAgICAgICAg IGluZm9baV0udS5tYmFfaW5mby5saW5lYXIgPyAiRW5hYmxlZCIgOiAiRGlzYWJsZWQiKTsKKyAg ICAgICAgcHJpbnRmKCIlLTE2czogJXVcbiIsICJNYXhpbXVtIENPUyIsIGluZm9baV0udS5tYmFf aW5mby5jb3NfbWF4KTsKKyAgICAgICAgcHJpbnRmKCIlLTE2czogJXVcbiIsICJNYXhpbXVtIFRo cm90dGxpbmcgVmFsdWUiLAorICAgICAgICAgICAgICAgaW5mb1tpXS51Lm1iYV9pbmZvLnRocnRs X21heCk7CisgICAgICAgIHByaW50ZigiJS0xNnM6ICV1XG4iLCAiRGVmYXVsdCBUaHJvdHRsaW5n IFZhbHVlIiwgMCk7CisgICAgfQorCisgICAgbGlieGxfcHNyX2h3X2luZm9fbGlzdF9mcmVlKGlu Zm8sIG5yKTsKKyAgICByZXR1cm4gcmM7Cit9CisjZW5kaWYKKwogaW50IG1haW5fcHNyX2NhdF9j Ym1fc2V0KGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKICAgICB1aW50MzJfdCBkb21pZDsKQEAg LTU5NywyMCArNjI4LDI0IEBAIGludCBtYWluX3Bzcl9jYXRfc2hvdyhpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiBpbnQgbWFpbl9wc3JfaHdpbmZvKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKICAg ICBpbnQgb3B0LCByZXQgPSAwOwotICAgIGJvb2wgYWxsID0gdHJ1ZSwgY210ID0gZmFsc2UsIGNh dCA9IGZhbHNlOworICAgIGJvb2wgYWxsID0gdHJ1ZSwgY210ID0gZmFsc2UsIGNhdCA9IGZhbHNl LCBtYmEgPSBmYWxzZTsKICAgICBzdGF0aWMgc3RydWN0IG9wdGlvbiBvcHRzW10gPSB7CiAgICAg ICAgIHsiY210IiwgMCwgMCwgJ20nfSwKICAgICAgICAgeyJjYXQiLCAwLCAwLCAnYSd9LAorICAg ICAgICB7Im1iYSIsIDAsIDAsICdiJ30sCiAgICAgICAgIENPTU1PTl9MT05HX09QVFMKICAgICB9 OwogCi0gICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgIm1hIiwgb3B0cywgInBzci1od2luZm8i LCAwKSB7CisgICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgIm1hYiIsIG9wdHMsICJwc3ItaHdp bmZvIiwgMCkgewogICAgIGNhc2UgJ20nOgogICAgICAgICBhbGwgPSBmYWxzZTsgY210ID0gdHJ1 ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAnYSc6CiAgICAgICAgIGFsbCA9IGZhbHNlOyBj YXQgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICBjYXNlICdiJzoKKyAgICAgICAgYWxsID0g ZmFsc2U7IG1iYSA9IHRydWU7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGlmICghcmV0 ICYmIChhbGwgfHwgY210KSkKQEAgLTYyMyw2ICs2NTgsMTIgQEAgaW50IG1haW5fcHNyX2h3aW5m byhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgaWYgKGFsbCB8fCBjYXQpCiAgICAgICAgIHJl dCA9IHBzcl9sMl9jYXRfaHdpbmZvKCk7CiAKKyNpZmRlZiBMSUJYTF9IQVZFX1BTUl9NQkEKKyAg ICAvKiBNQkEgaXMgaW5kZXBlbmRlbnQgb2YgQ01UIGFuZCBDQVQgKi8KKyAgICBpZiAoYWxsIHx8 IG1iYSkKKyAgICAgICAgcmV0ID0gcHNyX21iYV9od2luZm8oKTsKKyNlbmRpZgorCiAgICAgcmV0 dXJuIHJldDsKIH0KIAotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK