From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v1 09/13] tools: implement the new get hw info interface suitable to all psr allocation features Date: Wed, 9 Aug 2017 15:41:48 +0800 Message-ID: <1502264512-4648-10-git-send-email-yi.y.sun@linux.intel.com> References: <1502264512-4648-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 1dfLsm-0001tD-RS for xen-devel@lists.xenproject.org; Wed, 09 Aug 2017 07:58:25 +0000 In-Reply-To: <1502264512-4648-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 Z25lZC1vZmYtYnk6IFlpIFN1biA8eWkueS5zdW5AbGludXguaW50ZWwuY29tPgotLS0KdjE6CiAg ICAtIHJlbW92ZSB0aGUgcG9pbnRsZXNzIGluaXRpYWxpemF0aW9uIGZvciAneGNfcHNyX2ZlYXRf dHlwZScuCiAgICAgIChzdWdnZXN0ZWQgYnkgV2VpIExpdSkKICAgIC0gdXNlICdsaWJ4bF9fJyBm b3IgaW50ZXJuYWwgZnVuY3Rpb25zLgogICAgICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUpCiAgICAt IGNoYW5nZSBlcnJvciB2YWx1ZSAnLTEnIHRvICdFUlJPUl9JTlZBTCcuCiAgICAgIChzdWdnZXN0 ZWQgYnkgV2VpIExpdSkKICAgIC0gcmVtb3ZlIGFuIGV4dHJhbmVvdXMgc3BhY2UuCiAgICAgIChz dWdnZXN0ZWQgYnkgV2VpIExpdSkKICAgIC0gcmVwbGFjZSBzb21lICdpbnQnIHRvICd1bnNpZ25l ZCBpbnQnLgogICAgICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUpCiAgICAtIHJlbW92ZSB0ZXN0IHRv IG1hY3JvICdMSUJYTF9IQVZFX1BTUl9NQkEnLgogICAgICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUp CiAgICAtIGNoYW5nZSAnbWJhX2luZm8ubGluZWFyJyB0byAnbWJhX2luZm8uZmxhZ3MnLgogICAg ICAoc3VnZ2VzdGVkIGJ5IENoYW8gUGVuZykKICAgIC0gYWRqdXN0IHByaW50IGluZm8gb25seSB0 byBzaG93IHRoZSBNQkEgaW5mbyBhZnRlciBzdWNjZXNzZnVsbHkgZ2V0dGluZwogICAgICBIVyBp bmZvLgotLS0KIHRvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oIHwgIDMwICsrKysrKystCiB0 b29scy9saWJ4Yy94Y19wc3IuYyAgICAgICAgICB8ICA0NiArKysrKysrKystLS0tCiB0b29scy9s aWJ4bC9saWJ4bF9wc3IuYyAgICAgICB8IDE1NSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0KIHRvb2xzL3hsL3hsX2NtZHRhYmxlLmMgICAgICAgIHwgICAxICsKIHRv b2xzL3hsL3hsX3Bzci5jICAgICAgICAgICAgIHwgIDM5ICsrKysrKysrKystCiA1IGZpbGVzIGNo YW5nZWQsIDIzMCBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90 b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3Ry bC5oCmluZGV4IGM3NzEwYjguLjgxYTZmNDggMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL2luY2x1 ZGUveGVuY3RybC5oCisrKyBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCkBAIC0yNDU4 LDYgKzI0NTgsMzEgQEAgZW51bSB4Y19wc3JfY2F0X3R5cGUgewogfTsKIHR5cGVkZWYgZW51bSB4 Y19wc3JfY2F0X3R5cGUgeGNfcHNyX2NhdF90eXBlOwogCitlbnVtIHhjX3Bzcl9mZWF0X3R5cGUg eworICAgIFhDX1BTUl9GRUFUX1VOS05PV04sCisgICAgWENfUFNSX0ZFQVRfQ0FUX0wzLAorICAg IFhDX1BTUl9GRUFUX0NBVF9MMiwKKyAgICBYQ19QU1JfRkVBVF9NQkEsCit9OwordHlwZWRlZiBl bnVtIHhjX3Bzcl9mZWF0X3R5cGUgeGNfcHNyX2ZlYXRfdHlwZTsKKworc3RydWN0IHhjX3Bzcl9o d19pbmZvIHsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50 MzJfdCBjb3NfbWF4OworICAgICAgICAgICAgdWludDMyX3QgY2JtX2xlbjsKKyAgICAgICAgICAg IGJvb2wgICAgIGNkcF9lbmFibGVkOworICAgICAgICB9IHhjX2NhdF9pbmZvOworCisgICAgICAg IHN0cnVjdCB7CisgICAgICAgICAgICB1aW50MzJfdCBjb3NfbWF4OworICAgICAgICAgICAgdWlu dDMyX3QgdGhydGxfbWF4OworICAgICAgICAgICAgYm9vbCAgICAgbGluZWFyOworICAgICAgICB9 IHhjX21iYV9pbmZvOworICAgIH0gdTsKK307Cit0eXBlZGVmIHN0cnVjdCB4Y19wc3JfaHdfaW5m byB4Y19wc3JfaHdfaW5mbzsKKwogaW50IHhjX3Bzcl9jbXRfYXR0YWNoKHhjX2ludGVyZmFjZSAq eGNoLCB1aW50MzJfdCBkb21pZCk7CiBpbnQgeGNfcHNyX2NtdF9kZXRhY2goeGNfaW50ZXJmYWNl ICp4Y2gsIHVpbnQzMl90IGRvbWlkKTsKIGludCB4Y19wc3JfY210X2dldF9kb21haW5fcm1pZCh4 Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQsCkBAIC0yNDc5LDkgKzI1MDQsOCBAQCBp bnQgeGNfcHNyX2NhdF9zZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90 IGRvbWlkLAogaW50IHhjX3Bzcl9jYXRfZ2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAqeGNo LCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4Y19wc3Jf Y2F0X3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQ2NF90ICpkYXRhKTsKLWludCB4Y19wc3JfY2F0X2dldF9pbmZvKHhjX2ludGVy ZmFjZSAqeGNoLCB1aW50MzJfdCBzb2NrZXQsIHVuc2lnbmVkIGludCBsdmwsCi0gICAgICAgICAg ICAgICAgICAgICAgICB1aW50MzJfdCAqY29zX21heCwgdWludDMyX3QgKmNibV9sZW4sCi0gICAg ICAgICAgICAgICAgICAgICAgICBib29sICpjZHBfZW5hYmxlZCk7CitpbnQgeGNfcHNyX2dldF9o d19pbmZvKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBzb2NrZXQsCisgICAgICAgICAgICAg ICAgICAgICAgIHhjX3Bzcl9mZWF0X3R5cGUgdHlwZSwgeGNfcHNyX2h3X2luZm8gKmh3X2luZm8p OwogCiBpbnQgeGNfZ2V0X2NwdV9sZXZlbGxpbmdfY2Fwcyh4Y19pbnRlcmZhY2UgKnhjaCwgdWlu dDMyX3QgKmNhcHMpOwogaW50IHhjX2dldF9jcHVfZmVhdHVyZXNldCh4Y19pbnRlcmZhY2UgKnhj aCwgdWludDMyX3QgaW5kZXgsCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19wc3IuYyBiL3Rv b2xzL2xpYnhjL3hjX3Bzci5jCmluZGV4IDczZDA1ZjIuLmJhNDEyZTQgMTAwNjQ0Ci0tLSBhL3Rv b2xzL2xpYnhjL3hjX3Bzci5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCkBAIC0zMjMsMzYg KzMyMyw1OCBAQCBpbnQgeGNfcHNyX2NhdF9nZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4 Y2gsIHVpbnQzMl90IGRvbWlkLAogICAgIHJldHVybiByYzsKIH0KIAotaW50IHhjX3Bzcl9jYXRf Z2V0X2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IHNvY2tldCwgdW5zaWduZWQgaW50 IGx2bCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpjb3NfbWF4LCB1aW50MzJf dCAqY2JtX2xlbiwgYm9vbCAqY2RwX2VuYWJsZWQpCitpbnQgeGNfcHNyX2dldF9od19pbmZvKHhj X2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBzb2NrZXQsCisgICAgICAgICAgICAgICAgICAgICAg IHhjX3Bzcl9mZWF0X3R5cGUgdHlwZSwgeGNfcHNyX2h3X2luZm8gKmh3X2luZm8pCiB7CiAgICAg aW50IHJjID0gLTE7CiAgICAgREVDTEFSRV9TWVNDVEw7CiAKKyAgICBpZiAoICFod19pbmZvICkK KyAgICAgICAgcmV0dXJuIHJjOworCiAgICAgc3lzY3RsLmNtZCA9IFhFTl9TWVNDVExfcHNyX2Fs bG9jX29wOwogICAgIHN5c2N0bC51LnBzcl9hbGxvY19vcC50YXJnZXQgPSBzb2NrZXQ7CiAKLSAg ICBzd2l0Y2ggKCBsdmwgKQorICAgIHN3aXRjaCAoIHR5cGUgKQogICAgIHsKLSAgICBjYXNlIDI6 CisgICAgY2FzZSBYQ19QU1JfRkVBVF9DQVRfTDI6CiAgICAgICAgIHN5c2N0bC51LnBzcl9hbGxv Y19vcC5jbWQgPSBYRU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wyX2luZm87CiAgICAgICAgIHJjID0g eGNfc3lzY3RsKHhjaCwgJnN5c2N0bCk7CiAgICAgICAgIGlmICggIXJjICkKICAgICAgICAgewot ICAgICAgICAgICAgKmNvc19tYXggPSBzeXNjdGwudS5wc3JfYWxsb2Nfb3AudS5jYXRfaW5mby5j b3NfbWF4OwotICAgICAgICAgICAgKmNibV9sZW4gPSBzeXNjdGwudS5wc3JfYWxsb2Nfb3AudS5j YXRfaW5mby5jYm1fbGVuOwotICAgICAgICAgICAgKmNkcF9lbmFibGVkID0gZmFsc2U7CisgICAg ICAgICAgICBod19pbmZvLT51LnhjX2NhdF9pbmZvLmNvc19tYXggPQorICAgICAgICAgICAgICAg ICAgICAgICAgc3lzY3RsLnUucHNyX2FsbG9jX29wLnUuY2F0X2luZm8uY29zX21heDsKKyAgICAg ICAgICAgIGh3X2luZm8tPnUueGNfY2F0X2luZm8uY2JtX2xlbiA9CisgICAgICAgICAgICAgICAg ICAgICAgICBzeXNjdGwudS5wc3JfYWxsb2Nfb3AudS5jYXRfaW5mby5jYm1fbGVuOworICAgICAg ICAgICAgaHdfaW5mby0+dS54Y19jYXRfaW5mby5jZHBfZW5hYmxlZCA9IGZhbHNlOwogICAgICAg ICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgMzoKKyAgICBjYXNlIFhDX1BTUl9GRUFUX0NB VF9MMzoKICAgICAgICAgc3lzY3RsLnUucHNyX2FsbG9jX29wLmNtZCA9IFhFTl9TWVNDVExfUFNS X0NBVF9nZXRfbDNfaW5mbzsKICAgICAgICAgcmMgPSB4Y19zeXNjdGwoeGNoLCAmc3lzY3RsKTsK ICAgICAgICAgaWYgKCAhcmMgKQogICAgICAgICB7Ci0gICAgICAgICAgICAqY29zX21heCA9IHN5 c2N0bC51LnBzcl9hbGxvY19vcC51LmNhdF9pbmZvLmNvc19tYXg7Ci0gICAgICAgICAgICAqY2Jt X2xlbiA9IHN5c2N0bC51LnBzcl9hbGxvY19vcC51LmNhdF9pbmZvLmNibV9sZW47Ci0gICAgICAg ICAgICAqY2RwX2VuYWJsZWQgPSBzeXNjdGwudS5wc3JfYWxsb2Nfb3AudS5jYXRfaW5mby5mbGFn cyAmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBYRU5fU1lTQ1RMX1BTUl9DQVRfTDNfQ0RQ OworICAgICAgICAgICAgaHdfaW5mby0+dS54Y19jYXRfaW5mby5jb3NfbWF4ID0KKyAgICAgICAg ICAgICAgICAgICAgICAgIHN5c2N0bC51LnBzcl9hbGxvY19vcC51LmNhdF9pbmZvLmNvc19tYXg7 CisgICAgICAgICAgICBod19pbmZvLT51LnhjX2NhdF9pbmZvLmNibV9sZW4gPQorICAgICAgICAg ICAgICAgICAgICAgICAgc3lzY3RsLnUucHNyX2FsbG9jX29wLnUuY2F0X2luZm8uY2JtX2xlbjsK KyAgICAgICAgICAgIGh3X2luZm8tPnUueGNfY2F0X2luZm8uY2RwX2VuYWJsZWQgPQorICAgICAg ICAgICAgICAgICAgICAgICAgc3lzY3RsLnUucHNyX2FsbG9jX29wLnUuY2F0X2luZm8uZmxhZ3Mg JgorICAgICAgICAgICAgICAgICAgICAgICAgWEVOX1NZU0NUTF9QU1JfQ0FUX0wzX0NEUDsKKyAg ICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFhDX1BTUl9GRUFUX01CQToKKyAgICAg ICAgc3lzY3RsLnUucHNyX2FsbG9jX29wLmNtZCA9IFhFTl9TWVNDVExfUFNSX01CQV9nZXRfaW5m bzsKKyAgICAgICAgcmMgPSB4Y19zeXNjdGwoeGNoLCAmc3lzY3RsKTsKKyAgICAgICAgaWYgKCAh cmMgKQorICAgICAgICB7CisgICAgICAgICAgICBod19pbmZvLT51LnhjX21iYV9pbmZvLmNvc19t YXggPQorICAgICAgICAgICAgICAgICAgICAgICAgc3lzY3RsLnUucHNyX2FsbG9jX29wLnUubWJh X2luZm8uY29zX21heDsKKyAgICAgICAgICAgIGh3X2luZm8tPnUueGNfbWJhX2luZm8udGhydGxf bWF4ID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c2N0bC51LnBzcl9hbGxvY19vcC51Lm1i YV9pbmZvLnRocnRsX21heDsKKyAgICAgICAgICAgIGh3X2luZm8tPnUueGNfbWJhX2luZm8ubGlu ZWFyID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c2N0bC51LnBzcl9hbGxvY19vcC51Lm1i YV9pbmZvLmZsYWdzICYKKyAgICAgICAgICAgICAgICAgICAgICAgIFhFTl9TWVNDVExfUFNSX01C QV9MSU5FQVI7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAt LWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3Bzci5jIGIvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMK aW5kZXggY2YzNjhiYS4uY2I5MjhlNyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfcHNy LmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKQEAgLTM2MSw0NyArMzYxLDQ5IEBAIGlu dCBsaWJ4bF9wc3JfY2F0X2dldF9jYm0obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAog ICAgIHJldHVybiByYzsKIH0KIAorc3RhdGljIGlubGluZSBpbnQgbGlieGxfX3Bzcl9od19pbmZv X3RvX2xpYnhsX3Bzcl9jYXRfaW5mbygKKyAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3Jf ZmVhdF90eXBlIHR5cGUsIGxpYnhsX3Bzcl9od19pbmZvICpod19pbmZvLAorICAgICAgICAgICAg ICAgICAgICAgIGxpYnhsX3Bzcl9jYXRfaW5mbyAqY2F0X2luZm8pCit7CisgICAgaWYgKHR5cGUg IT0gTElCWExfUFNSX0ZFQVRfVFlQRV9DQVRfSU5GTykKKyAgICAgICAgcmV0dXJuIEVSUk9SX0lO VkFMOworCisgICAgY2F0X2luZm8tPmlkID0gaHdfaW5mby0+aWQ7CisgICAgY2F0X2luZm8tPmNv c19tYXggPSBod19pbmZvLT51LmNhdF9pbmZvLmNvc19tYXg7CisgICAgY2F0X2luZm8tPmNibV9s ZW4gPSBod19pbmZvLT51LmNhdF9pbmZvLmNibV9sZW47CisgICAgY2F0X2luZm8tPmNkcF9lbmFi bGVkID0gaHdfaW5mby0+dS5jYXRfaW5mby5jZHBfZW5hYmxlZDsKKworICAgIHJldHVybiAwOwor fQorCiBpbnQgbGlieGxfcHNyX2NhdF9nZXRfaW5mbyhsaWJ4bF9jdHggKmN0eCwgbGlieGxfcHNy X2NhdF9pbmZvICoqaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqbnIsIHVu c2lnbmVkIGludCBsdmwpCiB7CiAgICAgR0NfSU5JVChjdHgpOwogICAgIGludCByYzsKLSAgICBp bnQgaSA9IDAsIHNvY2tldGlkLCBucl9zb2NrZXRzOwotICAgIGxpYnhsX2JpdG1hcCBzb2NrZXRt YXA7CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgbGlieGxfcHNyX2h3X2luZm8gKmh3X2luZm87 CiAgICAgbGlieGxfcHNyX2NhdF9pbmZvICpwdHI7CiAKLSAgICBsaWJ4bF9iaXRtYXBfaW5pdCgm c29ja2V0bWFwKTsKLQotICAgIHJjID0gbGlieGxfX2NvdW50X3BoeXNpY2FsX3NvY2tldHMoZ2Ms ICZucl9zb2NrZXRzKTsKLSAgICBpZiAocmMpIHsKLSAgICAgICAgTE9HRShFUlJPUiwgImZhaWxl ZCB0byBnZXQgc3lzdGVtIHNvY2tldCBjb3VudCIpOworICAgIHJjID0gbGlieGxfcHNyX2dldF9o d19pbmZvKGN0eCwgJmh3X2luZm8sICh1bnNpZ25lZCBpbnQgKiluciwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMSUJYTF9QU1JfRkVBVF9UWVBFX0NBVF9JTkZPLCBsdmwpOworICAg IGlmIChyYykKICAgICAgICAgZ290byBvdXQ7Ci0gICAgfQogCi0gICAgbGlieGxfc29ja2V0X2Jp dG1hcF9hbGxvYyhjdHgsICZzb2NrZXRtYXAsIG5yX3NvY2tldHMpOwotICAgIHJjID0gbGlieGxf Z2V0X29ubGluZV9zb2NrZXRtYXAoY3R4LCAmc29ja2V0bWFwKTsKLSAgICBpZiAocmMgPCAwKSB7 Ci0gICAgICAgIExPR0UoRVJST1IsICJmYWlsZWQgdG8gZ2V0IGF2YWlsYWJsZSBzb2NrZXRzIik7 Ci0gICAgICAgIGdvdG8gb3V0OwotICAgIH0KKyAgICBwdHIgPSBsaWJ4bF9fbWFsbG9jKE5PR0Ms ICpuciAqIHNpemVvZihsaWJ4bF9wc3JfY2F0X2luZm8pKTsKIAotICAgIHB0ciA9IGxpYnhsX19t YWxsb2MoTk9HQywgbnJfc29ja2V0cyAqIHNpemVvZihsaWJ4bF9wc3JfY2F0X2luZm8pKTsKLQot ICAgIGxpYnhsX2Zvcl9lYWNoX3NldF9iaXQoc29ja2V0aWQsIHNvY2tldG1hcCkgewotICAgICAg ICBwdHJbaV0uaWQgPSBzb2NrZXRpZDsKLSAgICAgICAgaWYgKHhjX3Bzcl9jYXRfZ2V0X2luZm8o Y3R4LT54Y2gsIHNvY2tldGlkLCBsdmwsICZwdHJbaV0uY29zX21heCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJnB0cltpXS5jYm1fbGVuLCAmcHRyW2ldLmNkcF9lbmFibGVkKSkg eworICAgIGZvciAoaSA9IDA7IGkgPCAqbnI7IGkrKykgeworICAgICAgICBpZiAobGlieGxfX3Bz cl9od19pbmZvX3RvX2xpYnhsX3Bzcl9jYXRfaW5mbygKKyAgICAgICAgICAgICAgICAgICAgTElC WExfUFNSX0ZFQVRfVFlQRV9DQVRfSU5GTywKKyAgICAgICAgICAgICAgICAgICAgJmh3X2luZm9b aV0sICZwdHJbaV0pKSB7CiAgICAgICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAgICAgICAgICAg ICBmcmVlKHB0cik7CiAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgfQotICAgICAgICBp Kys7CiAgICAgfQogCiAgICAgKmluZm8gPSBwdHI7Ci0gICAgKm5yID0gaTsKIG91dDoKLSAgICBs aWJ4bF9iaXRtYXBfZGlzcG9zZSgmc29ja2V0bWFwKTsKICAgICBHQ19GUkVFOwogICAgIHJldHVy biByYzsKIH0KQEAgLTQzOSwxNSArNDQxLDEyMCBAQCBpbnQgbGlieGxfcHNyX2dldF92YWwobGli eGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgIHJldHVybiBFUlJPUl9GQUlMOwogfQog CitzdGF0aWMgaW5saW5lIHhjX3Bzcl9mZWF0X3R5cGUgbGlieGxfX3Bzcl9mZWF0X3R5cGVfdG9f bGlieGNfcHNyX2ZlYXRfdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGlieGxfcHNyX2ZlYXRfdHlwZSB0eXBlLCB1bnNpZ25lZCBpbnQgbHZsKQoreworICAgIHhjX3Bz cl9mZWF0X3R5cGUgeGNfdHlwZSA9IFhDX1BTUl9GRUFUX1VOS05PV047CisKKyAgICBzd2l0Y2gg KHR5cGUpIHsKKyAgICBjYXNlIExJQlhMX1BTUl9GRUFUX1RZUEVfQ0FUX0lORk86CisgICAgICAg IGlmIChsdmwgPT0gMykKKyAgICAgICAgICAgIHhjX3R5cGUgPSBYQ19QU1JfRkVBVF9DQVRfTDM7 CisgICAgICAgIGlmIChsdmwgPT0gMikKKyAgICAgICAgICAgIHhjX3R5cGUgPSBYQ19QU1JfRkVB VF9DQVRfTDI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTElCWExfUFNSX0ZFQVRfVFlQRV9N QkFfSU5GTzoKKyAgICAgICAgeGNfdHlwZSA9IFhDX1BTUl9GRUFUX01CQTsKKyAgICBkZWZhdWx0 OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4geGNfdHlwZTsKK30KKworc3Rh dGljIGlubGluZSBpbnQgbGlieGNfX3Bzcl9od19pbmZvX3RvX2xpYnhsX3Bzcl9od19pbmZvKAor ICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3Bzcl9mZWF0X3R5cGUgdHlwZSwgeGNfcHNyX2h3 X2luZm8gKnhjX2h3X2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgbGlieGxfcHNyX2h3X2lu Zm8gKnhsX2h3X2luZm8pCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBMSUJYTF9Q U1JfRkVBVF9UWVBFX0NBVF9JTkZPOgorICAgICAgICB4bF9od19pbmZvLT51LmNhdF9pbmZvLmNv c19tYXggPSB4Y19od19pbmZvLT51LnhjX2NhdF9pbmZvLmNvc19tYXg7CisgICAgICAgIHhsX2h3 X2luZm8tPnUuY2F0X2luZm8uY2JtX2xlbiA9IHhjX2h3X2luZm8tPnUueGNfY2F0X2luZm8uY2Jt X2xlbjsKKyAgICAgICAgeGxfaHdfaW5mby0+dS5jYXRfaW5mby5jZHBfZW5hYmxlZCA9CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfaHdfaW5mby0+dS54Y19jYXRf aW5mby5jZHBfZW5hYmxlZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMSUJYTF9QU1JfRkVB VF9UWVBFX01CQV9JTkZPOgorICAgICAgICB4bF9od19pbmZvLT51Lm1iYV9pbmZvLmNvc19tYXgg PSB4Y19od19pbmZvLT51LnhjX21iYV9pbmZvLmNvc19tYXg7CisgICAgICAgIHhsX2h3X2luZm8t PnUubWJhX2luZm8udGhydGxfbWF4ID0geGNfaHdfaW5mby0+dS54Y19tYmFfaW5mby50aHJ0bF9t YXg7CisgICAgICAgIHhsX2h3X2luZm8tPnUubWJhX2luZm8ubGluZWFyID0geGNfaHdfaW5mby0+ dS54Y19tYmFfaW5mby5saW5lYXI7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg ICAgIHJldHVybiBFUlJPUl9JTlZBTDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwogaW50 IGxpYnhsX3Bzcl9nZXRfaHdfaW5mbyhsaWJ4bF9jdHggKmN0eCwgbGlieGxfcHNyX2h3X2luZm8g KippbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKm5yLCBsaWJ4 bF9wc3JfZmVhdF90eXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBsdmwpCiB7Ci0gICAgcmV0dXJuIEVSUk9SX0ZBSUw7CisgICAgR0NfSU5JVChjdHgpOwor ICAgIGludCByYywgbnJfc29ja2V0czsKKyAgICB1bnNpZ25lZCBpbnQgaSA9IDAsIHNvY2tldGlk OworICAgIGxpYnhsX2JpdG1hcCBzb2NrZXRtYXA7CisgICAgbGlieGxfcHNyX2h3X2luZm8gKnB0 cjsKKyAgICB4Y19wc3JfZmVhdF90eXBlIHhjX3R5cGU7CisgICAgeGNfcHNyX2h3X2luZm8gaHdf aW5mbzsKKworICAgIGxpYnhsX2JpdG1hcF9pbml0KCZzb2NrZXRtYXApOworCisgICAgaWYgKHR5 cGUgPT0gTElCWExfUFNSX0ZFQVRfVFlQRV9DQVRfSU5GTyAmJiBsdmwgIT0gMyAmJiBsdmwgIT0g MikgeworICAgICAgICBMT0dFKEVSUk9SLCAiaW5wdXQgbHZsICVkIGlzIHdyb25nIVxuIiwgbHZs KTsKKyAgICAgICAgcmMgPSBFUlJPUl9GQUlMOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisK KyAgICB4Y190eXBlID0gbGlieGxfX3Bzcl9mZWF0X3R5cGVfdG9fbGlieGNfcHNyX2ZlYXRfdHlw ZSh0eXBlLCBsdmwpOworCisgICAgcmMgPSBsaWJ4bF9fY291bnRfcGh5c2ljYWxfc29ja2V0cyhn YywgJm5yX3NvY2tldHMpOworICAgIGlmIChyYykgeworICAgICAgICBMT0dFKEVSUk9SLCAiZmFp bGVkIHRvIGdldCBzeXN0ZW0gc29ja2V0IGNvdW50Iik7CisgICAgICAgIGdvdG8gb3V0OworICAg IH0KKworICAgIGxpYnhsX3NvY2tldF9iaXRtYXBfYWxsb2MoY3R4LCAmc29ja2V0bWFwLCBucl9z b2NrZXRzKTsKKyAgICByYyA9IGxpYnhsX2dldF9vbmxpbmVfc29ja2V0bWFwKGN0eCwgJnNvY2tl dG1hcCk7CisgICAgaWYgKHJjIDwgMCkgeworICAgICAgICBMT0dFKEVSUk9SLCAiZmFpbGVkIHRv IGdldCBhdmFpbGFibGUgc29ja2V0cyIpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAg ICBwdHIgPSBsaWJ4bF9fbWFsbG9jKE5PR0MsIG5yX3NvY2tldHMgKiBzaXplb2YobGlieGxfcHNy X2h3X2luZm8pKTsKKworICAgIGxpYnhsX2Zvcl9lYWNoX3NldF9iaXQoc29ja2V0aWQsIHNvY2tl dG1hcCkgeworICAgICAgICBwdHJbaV0uaWQgPSBzb2NrZXRpZDsKKyAgICAgICAgaWYgKHhjX3Bz cl9nZXRfaHdfaW5mbyhjdHgtPnhjaCwgc29ja2V0aWQsIHhjX3R5cGUsICZod19pbmZvKSkgewor ICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOworICAgICAgICAgICAgZnJlZShwdHIpOworICAg ICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAobGlieGNfX3Bzcl9o d19pbmZvX3RvX2xpYnhsX3Bzcl9od19pbmZvKHR5cGUsICZod19pbmZvLCAmcHRyW2ldKSkgewor ICAgICAgICAgICAgTE9HRShFUlJPUiwgIklucHV0IHR5cGUgJWQgaXMgd3JvbmchXG4iLCB0eXBl KTsKKyAgICAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKKyAgICAgICAgICAgIGZyZWUocHRyKTsK KyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisKKyAgICAgICAgaSsrOworICAgIH0K KworICAgICppbmZvID0gcHRyOworICAgICpuciA9IGk7CitvdXQ6CisgICAgbGlieGxfYml0bWFw X2Rpc3Bvc2UoJnNvY2tldG1hcCk7CisgICAgR0NfRlJFRTsKKyAgICByZXR1cm4gcmM7CiB9CiAK IHZvaWQgbGlieGxfcHNyX2h3X2luZm9fbGlzdF9mcmVlKGxpYnhsX3Bzcl9od19pbmZvICpsaXN0 LCB1bnNpZ25lZCBpbnQgbnIpCiB7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IgKGkg PSAwOyBpIDwgbnI7IGkrKykKKyAgICAgICAgbGlieGxfcHNyX2h3X2luZm9fZGlzcG9zZSgmbGlz dFtpXSk7CisgICAgZnJlZShsaXN0KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hs X2NtZHRhYmxlLmMgYi90b29scy94bC94bF9jbWR0YWJsZS5jCmluZGV4IDJjNzFhOWYuLjVhYzhh N2UgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMKKysrIGIvdG9vbHMveGwveGxf Y21kdGFibGUuYwpAQCAtNTI0LDYgKzUyNCw3IEBAIHN0cnVjdCBjbWRfc3BlYyBjbWRfdGFibGVb XSA9IHsKICAgICAgICJbb3B0aW9uc10iLAogICAgICAgIi1tLCAtLWNtdCAgICAgICBTaG93IENh Y2hlIE1vbml0b3JpbmcgVGVjaG5vbG9neSAoQ01UKSBoYXJkd2FyZSBpbmZvXG4iCiAgICAgICAi LWEsIC0tY2F0ICAgICAgIFNob3cgQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5IChDQVQpIGhh cmR3YXJlIGluZm9cbiIKKyAgICAgICItYiwgLS1tYmEgICAgICAgU2hvdyBNZW1vcnkgQmFuZHdp ZHRoIEFsbG9jYXRpb24gKE1CQSkgaGFyZHdhcmUgaW5mb1xuIgogICAgIH0sCiAgICAgeyAicHNy LWNtdC1hdHRhY2giLAogICAgICAgJm1haW5fcHNyX2NtdF9hdHRhY2gsIDAsIDEsCmRpZmYgLS1n aXQgYS90b29scy94bC94bF9wc3IuYyBiL3Rvb2xzL3hsL3hsX3Bzci5jCmluZGV4IDczMDlkNGYu LmJmNDE3NjIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hsX3Bzci5jCisrKyBiL3Rvb2xzL3hsL3hs X3Bzci5jCkBAIC00NzksNiArNDc5LDMzIEBAIHN0YXRpYyBpbnQgcHNyX2wyX2NhdF9od2luZm8o dm9pZCkKICAgICByZXR1cm4gcmM7CiB9CiAKK3N0YXRpYyBpbnQgcHNyX21iYV9od2luZm8odm9p ZCkKK3sKKyAgICBpbnQgcmM7CisgICAgdW5zaWduZWQgaW50IGksIG5yOworICAgIGxpYnhsX3Bz cl9od19pbmZvICppbmZvOworCisgICAgcmMgPSBsaWJ4bF9wc3JfZ2V0X2h3X2luZm8oY3R4LCAm aW5mbywgJm5yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlhMX1BTUl9GRUFU X1RZUEVfTUJBX0lORk8sIDApOworICAgIGlmIChyYykKKyAgICAgICAgcmV0dXJuIHJjOworCisg ICAgcHJpbnRmKCJNZW1vcnkgQmFuZHdpZHRoIEFsbG9jYXRpb24gKE1CQSk6XG4iKTsKKworICAg IGZvciAoaSA9IDA7IGkgPCBucjsgaSsrKSB7CisgICAgICAgIHByaW50ZigiJS0xNnM6ICV1XG4i LCAiU29ja2V0IElEIiwgaW5mb1tpXS5pZCk7CisgICAgICAgIHByaW50ZigiJS0xNnM6ICVzXG4i LCAiTGluZWFyIE1vZGUiLAorICAgICAgICAgICAgICAgaW5mb1tpXS51Lm1iYV9pbmZvLmxpbmVh ciA/ICJFbmFibGVkIiA6ICJEaXNhYmxlZCIpOworICAgICAgICBwcmludGYoIiUtMTZzOiAldVxu IiwgIk1heGltdW0gQ09TIiwgaW5mb1tpXS51Lm1iYV9pbmZvLmNvc19tYXgpOworICAgICAgICBw cmludGYoIiUtMTZzOiAldVxuIiwgIk1heGltdW0gVGhyb3R0bGluZyBWYWx1ZSIsCisgICAgICAg ICAgICAgICBpbmZvW2ldLnUubWJhX2luZm8udGhydGxfbWF4KTsKKyAgICAgICAgcHJpbnRmKCIl LTE2czogJXVcbiIsICJEZWZhdWx0IFRocm90dGxpbmcgVmFsdWUiLCAwKTsKKyAgICB9CisKKyAg ICBsaWJ4bF9wc3JfaHdfaW5mb19saXN0X2ZyZWUoaW5mbywgbnIpOworICAgIHJldHVybiByYzsK K30KKwogaW50IG1haW5fcHNyX2NhdF9jYm1fc2V0KGludCBhcmdjLCBjaGFyICoqYXJndikKIHsK ICAgICB1aW50MzJfdCBkb21pZDsKQEAgLTU5NywyMCArNjI0LDI0IEBAIGludCBtYWluX3Bzcl9j YXRfc2hvdyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiBpbnQgbWFpbl9wc3JfaHdpbmZvKGludCBh cmdjLCBjaGFyICoqYXJndikKIHsKICAgICBpbnQgb3B0LCByZXQgPSAwOwotICAgIGJvb2wgYWxs ID0gdHJ1ZSwgY210ID0gZmFsc2UsIGNhdCA9IGZhbHNlOworICAgIGJvb2wgYWxsID0gdHJ1ZSwg Y210ID0gZmFsc2UsIGNhdCA9IGZhbHNlLCBtYmEgPSBmYWxzZTsKICAgICBzdGF0aWMgc3RydWN0 IG9wdGlvbiBvcHRzW10gPSB7CiAgICAgICAgIHsiY210IiwgMCwgMCwgJ20nfSwKICAgICAgICAg eyJjYXQiLCAwLCAwLCAnYSd9LAorICAgICAgICB7Im1iYSIsIDAsIDAsICdiJ30sCiAgICAgICAg IENPTU1PTl9MT05HX09QVFMKICAgICB9OwogCi0gICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwg Im1hIiwgb3B0cywgInBzci1od2luZm8iLCAwKSB7CisgICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9w dCwgIm1hYiIsIG9wdHMsICJwc3ItaHdpbmZvIiwgMCkgewogICAgIGNhc2UgJ20nOgogICAgICAg ICBhbGwgPSBmYWxzZTsgY210ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAnYSc6 CiAgICAgICAgIGFsbCA9IGZhbHNlOyBjYXQgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICBj YXNlICdiJzoKKyAgICAgICAgYWxsID0gZmFsc2U7IG1iYSA9IHRydWU7CisgICAgICAgIGJyZWFr OwogICAgIH0KIAogICAgIGlmICghcmV0ICYmIChhbGwgfHwgY210KSkKQEAgLTYyMyw2ICs2NTQs MTAgQEAgaW50IG1haW5fcHNyX2h3aW5mbyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgaWYg KGFsbCB8fCBjYXQpCiAgICAgICAgIHJldCA9IHBzcl9sMl9jYXRfaHdpbmZvKCk7CiAKKyAgICAv KiBNQkEgaXMgaW5kZXBlbmRlbnQgb2YgQ01UIGFuZCBDQVQgKi8KKyAgICBpZiAoYWxsIHx8IG1i YSkKKyAgICAgICAgcmV0ID0gcHNyX21iYV9od2luZm8oKTsKKwogICAgIHJldHVybiByZXQ7CiB9 CiAKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRw czovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==