From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [RFC 10/16] tools: refactor codes to make get hw info interface be general. Date: Tue, 10 Jan 2017 15:42:29 +0800 Message-ID: <1484034155-4521-11-git-send-email-yi.y.sun@linux.intel.com> References: <1484034155-4521-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 1cQr5x-000435-00 for xen-devel@lists.xenproject.org; Tue, 10 Jan 2017 07:43:49 +0000 In-Reply-To: <1484034155-4521-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: wei.liu2@citrix.com, he.chen@linux.intel.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, Yi Sun , jbeulich@suse.com, chao.p.peng@linux.intel.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBjaGFuZ2VzIHNvbWUgaW50ZXJmYWNlcyBpbiB0b29scy8gdG8gbWFrZSBnZXQg aHcgaW5mbyBiZQpnZW5lcmFsIGJ1dCBub3Qgb25seSBmb3IgQ0FULgoKQWRkICdMSUJYTF9IQVZF X1BTUl9NQkEnIHRvIGluZGljYXRlIGludGVyZmFjZSBjaGFuZ2UuCgpTaWduZWQtb2ZmLWJ5OiBZ aSBTdW4gPHlpLnkuc3VuQGxpbnV4LmludGVsLmNvbT4KLS0tCiB0b29scy9saWJ4Yy9pbmNsdWRl L3hlbmN0cmwuaCB8IDIzICsrKysrKysrKysrLS0KIHRvb2xzL2xpYnhjL3hjX3Bzci5jICAgICAg ICAgIHwgMzIgKysrKysrKysrKystLS0tLS0tCiB0b29scy9saWJ4bC9saWJ4bC5oICAgICAgICAg ICB8IDEyICsrKysrLS0KIHRvb2xzL2xpYnhsL2xpYnhsX3Bzci5jICAgICAgIHwgNzUgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogdG9vbHMvbGlieGwvbGlieGxf dHlwZXMuaWRsICAgfCAxNSArKysrKysrKysKIHRvb2xzL2xpYnhsL3hsX2NtZGltcGwuYyAgICAg IHwgNDUgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIDYgZmlsZXMgY2hhbmdlZCwgMTU5IGlu c2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2lu Y2x1ZGUveGVuY3RybC5oIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKaW5kZXggYTAw OTYyNS4uZmE2MmUyYSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgK KysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKQEAgLTI2MDYsNiArMjYwNiwyNCBA QCBlbnVtIHhjX3Bzcl9jYXRfdHlwZSB7CiB9OwogdHlwZWRlZiBlbnVtIHhjX3Bzcl9jYXRfdHlw ZSB4Y19wc3JfY2F0X3R5cGU7CiAKK2VudW0geGNfcHNyX2ZlYXRfdHlwZSB7CisgICAgWENfUFNS X0ZFQVRfVU5LTk9XTiAgICA9IDAsCisgICAgWENfUFNSX0ZFQVRfQ0FUX0wzICAgICA9IDEsCisg ICAgWENfUFNSX0ZFQVRfQ0FUX0wyICAgICA9IDIsCit9OwordHlwZWRlZiBlbnVtIHhjX3Bzcl9m ZWF0X3R5cGUgeGNfcHNyX2ZlYXRfdHlwZTsKKworc3RydWN0IHhjX3Bzcl9od19pbmZvIHsKKyAg ICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50MzJfdCBjb3NfbWF4 OworICAgICAgICAgICAgdWludDMyX3QgY2JtX2xlbjsKKyAgICAgICAgICAgIGJvb2wgICAgIGNk cF9lbmFibGVkOworICAgICAgICB9IHhjX2NhdF9pbmZvOworICAgIH0gdTsKK307Cit0eXBlZGVm IHN0cnVjdCB4Y19wc3JfaHdfaW5mbyB4Y19wc3JfaHdfaW5mbzsKKwogaW50IHhjX3Bzcl9jbXRf YXR0YWNoKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCk7CiBpbnQgeGNfcHNyX2Nt dF9kZXRhY2goeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkKTsKIGludCB4Y19wc3Jf Y210X2dldF9kb21haW5fcm1pZCh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQsCkBA IC0yNjI3LDkgKzI2NDUsOCBAQCBpbnQgeGNfcHNyX2NhdF9zZXRfZG9tYWluX2RhdGEoeGNfaW50 ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAogaW50IHhjX3Bzcl9jYXRfZ2V0X2RvbWFpbl9k YXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB4Y19wc3JfY2F0X3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICpkYXRhKTsKLWludCB4Y19wc3Jf Y2F0X2dldF9pbmZvKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBzb2NrZXQsIHVuc2lnbmVk IGludCBsdmwsCi0gICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqY29zX21heCwgdWlu dDMyX3QgKmNibV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICBib29sICpjZHBfZW5hYmxl ZCk7CitpbnQgeGNfcHNyX2dldF9od19pbmZvKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBz b2NrZXQsCisgICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl9mZWF0X3R5cGUgdHlwZSwgeGNf cHNyX2h3X2luZm8gKmh3X2luZm8pOwogCiBpbnQgeGNfZ2V0X2NwdV9sZXZlbGxpbmdfY2Fwcyh4 Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgKmNhcHMpOwogaW50IHhjX2dldF9jcHVfZmVhdHVy ZXNldCh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgaW5kZXgsCmRpZmYgLS1naXQgYS90b29s cy9saWJ4Yy94Y19wc3IuYyBiL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCmluZGV4IDAwOThhNGQuLmFm NjQ4ZWIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCisrKyBiL3Rvb2xzL2xpYnhj L3hjX3Bzci5jCkBAIC0zMjMsMzUgKzMyMyw0MyBAQCBpbnQgeGNfcHNyX2NhdF9nZXRfZG9tYWlu X2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAogICAgIHJldHVybiByYzsK IH0KIAotaW50IHhjX3Bzcl9jYXRfZ2V0X2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90 IHNvY2tldCwgdW5zaWduZWQgaW50IGx2bCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90ICpjb3NfbWF4LCB1aW50MzJfdCAqY2JtX2xlbiwgYm9vbCAqY2RwX2VuYWJsZWQpCitpbnQg eGNfcHNyX2dldF9od19pbmZvKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBzb2NrZXQsCisg ICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl9mZWF0X3R5cGUgdHlwZSwgeGNfcHNyX2h3X2lu Zm8gKmh3X2luZm8pCiB7CiAgICAgaW50IHJjID0gLTE7CiAgICAgREVDTEFSRV9TWVNDVEw7CiAK KyAgICBpZiAoICFod19pbmZvICkKKyAgICAgICAgcmV0dXJuIHJjOworCiAgICAgc3lzY3RsLmNt ZCA9IFhFTl9TWVNDVExfcHNyX2FsbG9jX29wOwogICAgIHN5c2N0bC51LnBzcl9hbGxvY19vcC50 YXJnZXQgPSBzb2NrZXQ7CiAKLSAgICBzd2l0Y2ggKCBsdmwgKSB7Ci0gICAgY2FzZSAyOgorICAg IHN3aXRjaCAoIHR5cGUgKSB7CisgICAgY2FzZSBYQ19QU1JfRkVBVF9DQVRfTDI6CiAgICAgICAg IHN5c2N0bC51LnBzcl9hbGxvY19vcC5jbWQgPSBYRU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wyX2lu Zm87CiAgICAgICAgIHJjID0geGNfc3lzY3RsKHhjaCwgJnN5c2N0bCk7CiAgICAgICAgIGlmICgg IXJjICkKICAgICAgICAgewotICAgICAgICAgICAgKmNvc19tYXggPSBzeXNjdGwudS5wc3JfYWxs b2Nfb3AudS5sMl9pbmZvLmNvc19tYXg7Ci0gICAgICAgICAgICAqY2JtX2xlbiA9IHN5c2N0bC51 LnBzcl9hbGxvY19vcC51LmwyX2luZm8uY2JtX2xlbjsKLSAgICAgICAgICAgICpjZHBfZW5hYmxl ZCA9IGZhbHNlOworICAgICAgICAgICAgaHdfaW5mby0+dS54Y19jYXRfaW5mby5jb3NfbWF4ID0K KyAgICAgICAgICAgICAgICAgICAgICAgIHN5c2N0bC51LnBzcl9hbGxvY19vcC51LmwyX2luZm8u Y29zX21heDsKKyAgICAgICAgICAgIGh3X2luZm8tPnUueGNfY2F0X2luZm8uY2JtX2xlbiA9Cisg ICAgICAgICAgICAgICAgICAgICAgICBzeXNjdGwudS5wc3JfYWxsb2Nfb3AudS5sMl9pbmZvLmNi bV9sZW47CisgICAgICAgICAgICBod19pbmZvLT51LnhjX2NhdF9pbmZvLmNkcF9lbmFibGVkID0g ZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAzOgorICAgIGNhc2Ug WENfUFNSX0ZFQVRfQ0FUX0wzOgogICAgICAgICBzeXNjdGwudS5wc3JfYWxsb2Nfb3AuY21kID0g WEVOX1NZU0NUTF9QU1JfQ0FUX2dldF9sM19pbmZvOwogICAgICAgICByYyA9IHhjX3N5c2N0bCh4 Y2gsICZzeXNjdGwpOwogICAgICAgICBpZiAoICFyYyApCiAgICAgICAgIHsKLSAgICAgICAgICAg ICpjb3NfbWF4ID0gc3lzY3RsLnUucHNyX2FsbG9jX29wLnUubDNfaW5mby5jb3NfbWF4OwotICAg ICAgICAgICAgKmNibV9sZW4gPSBzeXNjdGwudS5wc3JfYWxsb2Nfb3AudS5sM19pbmZvLmNibV9s ZW47Ci0gICAgICAgICAgICAqY2RwX2VuYWJsZWQgPSBzeXNjdGwudS5wc3JfYWxsb2Nfb3AudS5s M19pbmZvLmZsYWdzICYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFhFTl9TWVNDVExfUFNS X0NBVF9MM19DRFA7CisgICAgICAgICAgICBod19pbmZvLT51LnhjX2NhdF9pbmZvLmNvc19tYXgg PQorICAgICAgICAgICAgICAgICAgICAgICAgc3lzY3RsLnUucHNyX2FsbG9jX29wLnUubDNfaW5m by5jb3NfbWF4OworICAgICAgICAgICAgaHdfaW5mby0+dS54Y19jYXRfaW5mby5jYm1fbGVuID0K KyAgICAgICAgICAgICAgICAgICAgICAgIHN5c2N0bC51LnBzcl9hbGxvY19vcC51LmwzX2luZm8u Y2JtX2xlbjsKKyAgICAgICAgICAgIGh3X2luZm8tPnUueGNfY2F0X2luZm8uY2RwX2VuYWJsZWQg PQorICAgICAgICAgICAgICAgICAgICAgICAgc3lzY3RsLnUucHNyX2FsbG9jX29wLnUubDNfaW5m by5mbGFncyAmCisgICAgICAgICAgICAgICAgICAgICAgICBYRU5fU1lTQ1RMX1BTUl9DQVRfTDNf Q0RQOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQg YS90b29scy9saWJ4bC9saWJ4bC5oIGIvdG9vbHMvbGlieGwvbGlieGwuaAppbmRleCA0NWE5OTc4 Li43NTc1Y2NkIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bC5oCisrKyBiL3Rvb2xzL2xp YnhsL2xpYnhsLmgKQEAgLTkxMSw2ICs5MTEsMTMgQEAgdm9pZCBsaWJ4bF9tYWNfY29weShsaWJ4 bF9jdHggKmN0eCwgbGlieGxfbWFjICpkc3QsIGNvbnN0IGxpYnhsX21hYyAqc3JjKTsKICAqIElm IHRoaXMgaXMgZGVmaW5lZCwgdGhlIEwyIENhY2hlIEFsbG9jYXRpb24gVGVjaG5vbG9neSBmZWF0 dXJlIGlzIHN1cHBvcnRlZC4KICAqLwogI2RlZmluZSBMSUJYTF9IQVZFX1BTUl9MMl9DQVQgMQor CisvKgorICogTElCWExfSEFWRV9QU1JfTUJBCisgKgorICogSWYgdGhpcyBpcyBkZWZpbmVkLCB0 aGUgTWVtb3J5IEJhbmR3aWR0aCBBbGxvY2F0aW9uIGZlYXR1cmUgaXMgc3VwcG9ydGVkLgorICov CisjZGVmaW5lIExJQlhMX0hBVkVfUFNSX01CQSAxCiAjZW5kaWYKIAogLyoKQEAgLTIxNzMsOCAr MjE4MCw5IEBAIGludCBsaWJ4bF9wc3JfY2F0X2dldF9jYm0obGlieGxfY3R4ICpjdHgsIHVpbnQz Ml90IGRvbWlkLAogICogT24gc3VjY2VzcywgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkg b2YgZWxlbWVudHMgaW4gJ2luZm8nLAogICogYW5kIHRoZSBsZW5ndGggaW4gJ25yJy4KICAqLwot aW50IGxpYnhsX3Bzcl9jYXRfZ2V0X2luZm8obGlieGxfY3R4ICpjdHgsIGxpYnhsX3Bzcl9jYXRf aW5mbyAqKmluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm5yLCB1bnNpZ25l ZCBpbnQgbHZsKTsKK2ludCBsaWJ4bF9wc3JfZ2V0X2h3X2luZm8obGlieGxfY3R4ICpjdHgsIGxp YnhsX3Bzcl9od19pbmZvICoqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpu ciwgbGlieGxfcHNyX2ZlYXRfdHlwZSB0eXBlLCBpbnQgbHZsKTsKK3ZvaWQgbGlieGxfcHNyX2h3 X2luZm9fbGlzdF9mcmVlKGxpYnhsX3Bzcl9od19pbmZvICpsaXN0LCBpbnQgbnIpOwogdm9pZCBs aWJ4bF9wc3JfY2F0X2luZm9fbGlzdF9mcmVlKGxpYnhsX3Bzcl9jYXRfaW5mbyAqbGlzdCwgaW50 IG5yKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9wc3IuYyBiL3Rv b2xzL2xpYnhsL2xpYnhsX3Bzci5jCmluZGV4IGQyOGFjZTAuLjJmZTQyYjcgMTAwNjQ0Ci0tLSBh L3Rvb2xzL2xpYnhsL2xpYnhsX3Bzci5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3Bzci5jCkBA IC0zNTIsMTcgKzM1Miw2NCBAQCBpbnQgbGlieGxfcHNyX2NhdF9nZXRfY2JtKGxpYnhsX2N0eCAq Y3R4LCB1aW50MzJfdCBkb21pZCwKICAgICByZXR1cm4gcmM7CiB9CiAKLWludCBsaWJ4bF9wc3Jf Y2F0X2dldF9pbmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9wc3JfY2F0X2luZm8gKippbmZvLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpuciwgdW5zaWduZWQgaW50IGx2bCkKK3N0 YXRpYyBpbmxpbmUgeGNfcHNyX2ZlYXRfdHlwZSBsaWJ4bF9fcHNyX2ZlYXRfdHlwZV90b19saWJ4 Y19wc3JfZmVhdF90eXBlKAorICAgIGxpYnhsX3Bzcl9mZWF0X3R5cGUgdHlwZSwgaW50IGx2bCkK K3sKKyAgICB4Y19wc3JfZmVhdF90eXBlIHhjX3R5cGUgPSBYQ19QU1JfRkVBVF9VTktOT1dOOwor CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBMSUJYTF9QU1JfRkVBVF9UWVBFX0NBVF9J TkZPOgorICAgICAgICBpZiAobHZsID09IDMpCisgICAgICAgICAgICB4Y190eXBlID0gWENfUFNS X0ZFQVRfQ0FUX0wzOworICAgICAgICBpZiAobHZsID09IDIpCisgICAgICAgICAgICB4Y190eXBl ID0gWENfUFNSX0ZFQVRfQ0FUX0wyOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg ICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4geGNfdHlwZTsKK30KKworc3RhdGljIGlu bGluZSBpbnQgbGlieGNfX3Bzcl9od19pbmZvX3RvX2xpYnhsX3Bzcl9od19pbmZvKAorICAgIGxp YnhsX3Bzcl9mZWF0X3R5cGUgdHlwZSwgeGNfcHNyX2h3X2luZm8gKnhjX2h3X2luZm8sCisgICAg bGlieGxfcHNyX2h3X2luZm8gKnhsX2h3X2luZm8pCit7CisgICAgc3dpdGNoICh0eXBlKSB7Cisg ICAgY2FzZSBMSUJYTF9QU1JfRkVBVF9UWVBFX0NBVF9JTkZPOgorICAgICAgICB4bF9od19pbmZv LT51LmNhdF9pbmZvLmNvc19tYXggPSB4Y19od19pbmZvLT51LnhjX2NhdF9pbmZvLmNvc19tYXg7 CisgICAgICAgIHhsX2h3X2luZm8tPnUuY2F0X2luZm8uY2JtX2xlbiA9IHhjX2h3X2luZm8tPnUu eGNfY2F0X2luZm8uY2JtX2xlbjsKKyAgICAgICAgeGxfaHdfaW5mby0+dS5jYXRfaW5mby5jZHBf ZW5hYmxlZCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfaHdf aW5mby0+dS54Y19jYXRfaW5mby5jZHBfZW5hYmxlZDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm YXVsdDoKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitp bnQgbGlieGxfcHNyX2dldF9od19pbmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9wc3JfaHdfaW5m byAqKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqbnIsIGxpYnhsX3Bzcl9m ZWF0X3R5cGUgdHlwZSwgaW50IGx2bCkKIHsKICAgICBHQ19JTklUKGN0eCk7CiAgICAgaW50IHJj OwogICAgIGludCBpID0gMCwgc29ja2V0aWQsIG5yX3NvY2tldHM7CiAgICAgbGlieGxfYml0bWFw IHNvY2tldG1hcDsKLSAgICBsaWJ4bF9wc3JfY2F0X2luZm8gKnB0cjsKKyAgICBsaWJ4bF9wc3Jf aHdfaW5mbyAqcHRyOworICAgIHhjX3Bzcl9mZWF0X3R5cGUgeGNfdHlwZTsKKyAgICB4Y19wc3Jf aHdfaW5mbyBod19pbmZvOwogCiAgICAgbGlieGxfYml0bWFwX2luaXQoJnNvY2tldG1hcCk7CiAK KyAgICBpZiAoIGx2bCAhPSAzICYmIGx2bCAhPSAyKSB7CisgICAgICAgIExPR0UoRVJST1IsICJp bnB1dCBsdmwgJWQgaXMgd3JvbmchXG4iLCBsdmwpOworICAgICAgICByYyA9IEVSUk9SX0ZBSUw7 CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIHhjX3R5cGUgPSBsaWJ4bF9fcHNyX2Zl YXRfdHlwZV90b19saWJ4Y19wc3JfZmVhdF90eXBlKHR5cGUsIGx2bCk7CisKICAgICByYyA9IGxp YnhsX19jb3VudF9waHlzaWNhbF9zb2NrZXRzKGdjLCAmbnJfc29ja2V0cyk7CiAgICAgaWYgKHJj KSB7CiAgICAgICAgIExPR0UoRVJST1IsICJmYWlsZWQgdG8gZ2V0IHN5c3RlbSBzb2NrZXQgY291 bnQiKTsKQEAgLTM3NiwxNyArNDIzLDI0IEBAIGludCBsaWJ4bF9wc3JfY2F0X2dldF9pbmZvKGxp YnhsX2N0eCAqY3R4LCBsaWJ4bF9wc3JfY2F0X2luZm8gKippbmZvLAogICAgICAgICBnb3RvIG91 dDsKICAgICB9CiAKLSAgICBwdHIgPSBsaWJ4bF9fbWFsbG9jKE5PR0MsIG5yX3NvY2tldHMgKiBz aXplb2YobGlieGxfcHNyX2NhdF9pbmZvKSk7CisgICAgcHRyID0gbGlieGxfX21hbGxvYyhOT0dD LCBucl9zb2NrZXRzICogc2l6ZW9mKGxpYnhsX3Bzcl9od19pbmZvKSk7CiAKICAgICBsaWJ4bF9m b3JfZWFjaF9zZXRfYml0KHNvY2tldGlkLCBzb2NrZXRtYXApIHsKICAgICAgICAgcHRyW2ldLmlk ID0gc29ja2V0aWQ7Ci0gICAgICAgIGlmICh4Y19wc3JfY2F0X2dldF9pbmZvKGN0eC0+eGNoLCBz b2NrZXRpZCwgbHZsLCAmcHRyW2ldLmNvc19tYXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZwdHJbaV0uY2JtX2xlbiwgJnB0cltpXS5jZHBfZW5hYmxlZCkpIHsKKyAgICAgICAg aWYgKHhjX3Bzcl9nZXRfaHdfaW5mbyhjdHgtPnhjaCwgc29ja2V0aWQsIHhjX3R5cGUsICZod19p bmZvKSkgewogICAgICAgICAgICAgbGlieGxfX3Bzcl9jYXRfbG9nX2Vycl9tc2coZ2MsIGVycm5v KTsKICAgICAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKICAgICAgICAgICAgIGZyZWUocHRyKTsK ICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICB9CisKKyAgICAgICAgaWYgKGxpYnhjX19w c3JfaHdfaW5mb190b19saWJ4bF9wc3JfaHdfaW5mbyh0eXBlLCAmaHdfaW5mbywgJnB0cltpXSkp IHsKKyAgICAgICAgICAgIExPR0UoRVJST1IsICJJbnB1dCB0eXBlICVkIGlzIHdyb25nIVxuIiwg dHlwZSk7CisgICAgICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CisgICAgICAgICAgICBmcmVlKHB0 cik7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorCiAgICAgICAgIGkrKzsKICAg ICB9CiAKQEAgLTM5OCw2ICs0NTIsMTUgQEAgb3V0OgogICAgIHJldHVybiByYzsKIH0KIAordm9p ZCBsaWJ4bF9wc3JfaHdfaW5mb19saXN0X2ZyZWUobGlieGxfcHNyX2h3X2luZm8gKmxpc3QsIGlu dCBucikKK3sKKyAgICBpbnQgaTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBucjsgaSsrKQorICAg ICAgICBsaWJ4bF9wc3JfaHdfaW5mb19kaXNwb3NlKCZsaXN0W2ldKTsKKyAgICBmcmVlKGxpc3Qp OworfQorCiB2b2lkIGxpYnhsX3Bzcl9jYXRfaW5mb19saXN0X2ZyZWUobGlieGxfcHNyX2NhdF9p bmZvICpsaXN0LCBpbnQgbnIpCiB7CiAgICAgaW50IGk7CmRpZmYgLS1naXQgYS90b29scy9saWJ4 bC9saWJ4bF90eXBlcy5pZGwgYi90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKaW5kZXggNWE0 MDFiOC4uYTE1ZDllZiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCisr KyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbApAQCAtOTA4LDMgKzkwOCwxOCBAQCBsaWJ4 bF9wc3JfY2F0X2luZm8gPSBTdHJ1Y3QoInBzcl9jYXRfaW5mbyIsIFsKICAgICAoImNibV9sZW4i LCB1aW50MzIpLAogICAgICgiY2RwX2VuYWJsZWQiLCBib29sKSwKICAgICBdKQorCitsaWJ4bF9w c3JfZmVhdF90eXBlID0gRW51bWVyYXRpb24oInBzcl9mZWF0X3R5cGUiLCBbCisgICAgKDEsICJD QVRfSU5GTyIpLAorICAgIF0pCisKK2xpYnhsX3Bzcl9od19pbmZvID0gU3RydWN0KCJwc3JfaHdf aW5mbyIsIFsKKyAgICAoImlkIiwgdWludDMyKSwKKyAgICAoInUiLCBLZXllZFVuaW9uKE5vbmUs IGxpYnhsX3Bzcl9mZWF0X3R5cGUsICJ0eXBlIiwKKyAgICAgICAgICAgWygiY2F0X2luZm8iLCBT dHJ1Y3QoTm9uZSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KCJjb3NfbWF4IiwgICAgIHVpbnQzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoImNibV9sZW4iLCAgICAgdWludDMyKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgiY2RwX2VuYWJsZWQiLCBib29sKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXSkpLAorICAgICAgICAgICBdKSkKKyAgICBdKQpkaWZm IC0tZ2l0IGEvdG9vbHMvbGlieGwveGxfY21kaW1wbC5jIGIvdG9vbHMvbGlieGwveGxfY21kaW1w bC5jCmluZGV4IDU4YjRlZWYuLjViZjU2ZTggMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL3hsX2Nt ZGltcGwuYworKysgYi90b29scy9saWJ4bC94bF9jbWRpbXBsLmMKQEAgLTkzMzcsMTEgKzkzMzcs MTIgQEAgc3RhdGljIGludCBwc3JfbDNfY2F0X2h3aW5mbyh2b2lkKQogICAgIGludCByYywgbnI7 CiAgICAgdW5zaWduZWQgaW50IGk7CiAgICAgdWludDMyX3QgbDNfY2FjaGVfc2l6ZTsKLSAgICBs aWJ4bF9wc3JfY2F0X2luZm8gKmluZm87CisgICAgbGlieGxfcHNyX2h3X2luZm8gKmluZm87CiAK ICAgICBwcmludGYoIkNhY2hlIEFsbG9jYXRpb24gVGVjaG5vbG9neSAoQ0FUKTogTDNcbiIpOwog Ci0gICAgcmMgPSBsaWJ4bF9wc3JfY2F0X2dldF9pbmZvKGN0eCwgJmluZm8sICZuciwgMyk7Cisg ICAgcmMgPSBsaWJ4bF9wc3JfZ2V0X2h3X2luZm8oY3R4LCAmaW5mbywgJm5yLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExJQlhMX1BTUl9GRUFUX1RZUEVfQ0FUX0lORk8sIDMpOwog ICAgIGlmIChyYykgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgbDMg Y2F0IGluZm9cbiIpOwogICAgICAgICByZXR1cm4gcmM7CkBAIC05MzU3LDE1ICs5MzU4LDE1IEBA IHN0YXRpYyBpbnQgcHNyX2wzX2NhdF9od2luZm8odm9pZCkKICAgICAgICAgcHJpbnRmKCIlLTE2 czogJXVcbiIsICJTb2NrZXQgSUQiLCBpbmZvW2ldLmlkKTsKICAgICAgICAgcHJpbnRmKCIlLTE2 czogJXVLQlxuIiwgIkwzIENhY2hlIiwgbDNfY2FjaGVfc2l6ZSk7CiAgICAgICAgIHByaW50Zigi JS0xNnM6ICVzXG4iLCAiQ0RQIFN0YXR1cyIsCi0gICAgICAgICAgICAgICBpbmZvW2ldLmNkcF9l bmFibGVkID8gIkVuYWJsZWQiIDogIkRpc2FibGVkIik7Ci0gICAgICAgIHByaW50ZigiJS0xNnM6 ICV1XG4iLCAiTWF4aW11bSBDT1MiLCBpbmZvW2ldLmNvc19tYXgpOwotICAgICAgICBwcmludGYo IiUtMTZzOiAldVxuIiwgIkNCTSBsZW5ndGgiLCBpbmZvW2ldLmNibV9sZW4pOworICAgICAgICAg ICAgICAgaW5mb1tpXS51LmNhdF9pbmZvLmNkcF9lbmFibGVkID8gIkVuYWJsZWQiIDogIkRpc2Fi bGVkIik7CisgICAgICAgIHByaW50ZigiJS0xNnM6ICV1XG4iLCAiTWF4aW11bSBDT1MiLCBpbmZv W2ldLnUuY2F0X2luZm8uY29zX21heCk7CisgICAgICAgIHByaW50ZigiJS0xNnM6ICV1XG4iLCAi Q0JNIGxlbmd0aCIsIGluZm9baV0udS5jYXRfaW5mby5jYm1fbGVuKTsKICAgICAgICAgcHJpbnRm KCIlLTE2czogJSNsbHhcbiIsICJEZWZhdWx0IENCTSIsCi0gICAgICAgICAgICAgICAoMXVsbCA8 PCBpbmZvW2ldLmNibV9sZW4pIC0gMSk7CisgICAgICAgICAgICAgICAoMXVsbCA8PCBpbmZvW2ld LnUuY2F0X2luZm8uY2JtX2xlbikgLSAxKTsKICAgICB9CiAKIG91dDoKLSAgICBsaWJ4bF9wc3Jf Y2F0X2luZm9fbGlzdF9mcmVlKGluZm8sIG5yKTsKKyAgICBsaWJ4bF9wc3JfaHdfaW5mb19saXN0 X2ZyZWUoaW5mbywgbnIpOwogICAgIHJldHVybiByYzsKIH0KIApAQCAtOTQzNiw3ICs5NDM3LDcg QEAgc3RhdGljIGludCBwc3JfY2F0X3ByaW50X2RvbWFpbl9jYm0odWludDMyX3QgZG9taWQsIHVp bnQzMl90IHNvY2tldGlkLAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHBzcl9jYXRf cHJpbnRfc29ja2V0KHVpbnQzMl90IGRvbWlkLCBsaWJ4bF9wc3JfY2F0X2luZm8gKmluZm8sCitz dGF0aWMgaW50IHBzcl9jYXRfcHJpbnRfc29ja2V0KHVpbnQzMl90IGRvbWlkLCBsaWJ4bF9wc3Jf aHdfaW5mbyAqaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IGx2bCkKIHsKICAgICBpbnQgcmM7CkBAIC05NDU2LDIyICs5NDU3LDI1IEBAIHN0YXRpYyBp bnQgcHNyX2NhdF9wcmludF9zb2NrZXQodWludDMyX3QgZG9taWQsIGxpYnhsX3Bzcl9jYXRfaW5m byAqaW5mbywKICAgICAgICAgcHJpbnRmKCIlLTE2czogJXVLQlxuIiwgIkwzIENhY2hlIiwgbDNf Y2FjaGVfc2l6ZSk7CiAgICAgfQogCi0gICAgcHJpbnRmKCIlLTE2czogJSNsbHhcbiIsICJEZWZh dWx0IENCTSIsICgxdWxsIDw8IGluZm8tPmNibV9sZW4pIC0gMSk7Ci0gICAgaWYgKGluZm8tPmNk cF9lbmFibGVkKQorICAgIHByaW50ZigiJS0xNnM6ICUjbGx4XG4iLCAiRGVmYXVsdCBDQk0iLAor ICAgICAgICAgICAgICAgICAgICAoMXVsbCA8PCBpbmZvLT51LmNhdF9pbmZvLmNibV9sZW4pIC0g MSk7CisgICAgaWYgKGluZm8tPnUuY2F0X2luZm8uY2RwX2VuYWJsZWQpCiAgICAgICAgIHByaW50 ZigiJTVzJTI1cyUxNnMlMTZzXG4iLCAiSUQiLCAiTkFNRSIsICJDQk0gKGNvZGUpIiwgIkNCTSAo ZGF0YSkiKTsKICAgICBlbHNlCiAgICAgICAgIHByaW50ZigiJTVzJTI1cyUxNnNcbiIsICJJRCIs ICJOQU1FIiwgIkNCTSIpOwogCi0gICAgcmV0dXJuIHBzcl9jYXRfcHJpbnRfZG9tYWluX2NibShk b21pZCwgaW5mby0+aWQsIGluZm8tPmNkcF9lbmFibGVkLCBsdmwpOworICAgIHJldHVybiBwc3Jf Y2F0X3ByaW50X2RvbWFpbl9jYm0oZG9taWQsIGluZm8tPmlkLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW5mby0+dS5jYXRfaW5mby5jZHBfZW5hYmxlZCwgbHZsKTsKIH0K IAogc3RhdGljIGludCBwc3JfY2F0X3Nob3codWludDMyX3QgZG9taWQsIHVuc2lnbmVkIGludCBs dmwpCiB7CiAgICAgaW50IGksIG5yOwogICAgIGludCByYzsKLSAgICBsaWJ4bF9wc3JfY2F0X2lu Zm8gKmluZm87CisgICAgbGlieGxfcHNyX2h3X2luZm8gKmluZm87CiAKLSAgICByYyA9IGxpYnhs X3Bzcl9jYXRfZ2V0X2luZm8oY3R4LCAmaW5mbywgJm5yLCBsdmwpOworICAgIHJjID0gbGlieGxf cHNyX2dldF9od19pbmZvKGN0eCwgJmluZm8sICZuciwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMSUJYTF9QU1JfRkVBVF9UWVBFX0NBVF9JTkZPLCBsdmwpOwogICAgIGlmIChyYykg ewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgJXMgY2F0IGluZm9cbiIs IChsdmwgPT0gMyk/IkwzIjoiTDIiKTsKICAgICAgICAgcmV0dXJuIHJjOwpAQCAtOTQ4NCw3ICs5 NDg4LDcgQEAgc3RhdGljIGludCBwc3JfY2F0X3Nob3codWludDMyX3QgZG9taWQsIHVuc2lnbmVk IGludCBsdmwpCiAgICAgfQogCiBvdXQ6Ci0gICAgbGlieGxfcHNyX2NhdF9pbmZvX2xpc3RfZnJl ZShpbmZvLCBucik7CisgICAgbGlieGxfcHNyX2h3X2luZm9fbGlzdF9mcmVlKGluZm8sIG5yKTsK ICAgICByZXR1cm4gcmM7CiB9CiAKQEAgLTk0OTMsMTEgKzk0OTcsMTIgQEAgc3RhdGljIGludCBw c3JfbDJfY2F0X2h3aW5mbyh2b2lkKQogICAgIGludCByYzsKICAgICB1bnNpZ25lZCBpbnQgaTsK ICAgICBpbnQgbnI7Ci0gICAgbGlieGxfcHNyX2NhdF9pbmZvICppbmZvOworICAgIGxpYnhsX3Bz cl9od19pbmZvICppbmZvOwogCiAgICAgcHJpbnRmKCJDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xv Z3kgKENBVCk6IEwyXG4iKTsKIAotICAgIHJjID0gbGlieGxfcHNyX2NhdF9nZXRfaW5mbyhjdHgs ICZpbmZvLCAmbnIsIDIpOworICAgIHJjID0gbGlieGxfcHNyX2dldF9od19pbmZvKGN0eCwgJmlu Zm8sICZuciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9QU1JfRkVBVF9U WVBFX0NBVF9JTkZPLCAyKTsKICAgICBpZiAocmMpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIs ICJGYWlsZWQgdG8gZ2V0IGwyIGNhdCBpbmZvXG4iKTsKICAgICAgICAgcmV0dXJuIHJjOwpAQCAt OTUwNiwxMyArOTUxMSwxMyBAQCBzdGF0aWMgaW50IHBzcl9sMl9jYXRfaHdpbmZvKHZvaWQpCiAg ICAgZm9yIChpID0gMDsgaSA8IG5yOyBpKyspIHsKICAgICAgICAgLyogVGhlcmUgaXMgbm8gQ01U IG9uIEwyIGNhY2hlIHNvIGZhci4gKi8KICAgICAgICAgcHJpbnRmKCIlLTE2czogJXVcbiIsICJT b2NrZXQgSUQiLCBpbmZvW2ldLmlkKTsKLSAgICAgICAgcHJpbnRmKCIlLTE2czogJXVcbiIsICJN YXhpbXVtIENPUyIsIGluZm9baV0uY29zX21heCk7Ci0gICAgICAgIHByaW50ZigiJS0xNnM6ICV1 XG4iLCAiQ0JNIGxlbmd0aCIsIGluZm9baV0uY2JtX2xlbik7CisgICAgICAgIHByaW50ZigiJS0x NnM6ICV1XG4iLCAiTWF4aW11bSBDT1MiLCBpbmZvW2ldLnUuY2F0X2luZm8uY29zX21heCk7Cisg ICAgICAgIHByaW50ZigiJS0xNnM6ICV1XG4iLCAiQ0JNIGxlbmd0aCIsIGluZm9baV0udS5jYXRf aW5mby5jYm1fbGVuKTsKICAgICAgICAgcHJpbnRmKCIlLTE2czogJSNsbHhcbiIsICJEZWZhdWx0 IENCTSIsCi0gICAgICAgICAgICAgICAoMXVsbCA8PCBpbmZvW2ldLmNibV9sZW4pIC0gMSk7Cisg ICAgICAgICAgICAgICAoMXVsbCA8PCBpbmZvW2ldLnUuY2F0X2luZm8uY2JtX2xlbikgLSAxKTsK ICAgICB9CiAKLSAgICBsaWJ4bF9wc3JfY2F0X2luZm9fbGlzdF9mcmVlKGluZm8sIG5yKTsKKyAg ICBsaWJ4bF9wc3JfaHdfaW5mb19saXN0X2ZyZWUoaW5mbywgbnIpOwogICAgIHJldHVybiByYzsK IH0KIAotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0 dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK