From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v5 21/24] tools: L2 CAT: support get HW info for L2 CAT. Date: Wed, 18 Jan 2017 10:02:44 +0800 Message-ID: <1484704967-5609-22-git-send-email-yi.y.sun@linux.intel.com> References: <1484704967-5609-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.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cTfcJ-0006K5-GM for xen-devel@lists.xenproject.org; Wed, 18 Jan 2017 02:04:51 +0000 In-Reply-To: <1484704967-5609-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, konrad.wilk@oracle.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, he.chen@linux.intel.com, ian.jackson@eu.citrix.com, Yi Sun , mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIHhsL3hjIGNoYW5nZXMgdG8gc3VwcG9ydCBnZXQgSFcgaW5m bwpmb3IgTDIgQ0FULgoKJ3hsIHBzci1od2luZm8nIGlzIHVwZGF0ZWQgdG8gc2hvdyBib3RoIEwz IENBVCBhbmQgTDIgQ0FUCmluZm8uCgpFeGFtcGxlKG9uIG1hY2hpbmUgd2hpY2ggb25seSBzdXBw b3J0cyBMMiBDQVQpOgpDYWNoZSBNb25pdG9yaW5nIFRlY2hub2xvZ3kgKENNVCk6CkVuYWJsZWQg ICAgICAgICA6IDAKQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5IChDQVQpOiBMMwpsaWJ4bDog ZXJyb3I6IGxpYnhsX3Bzci5jOjEwMDpsaWJ4bF9fcHNyX2NhdF9sb2dfZXJyX21zZzogQ0FUIGlz IG5vdCBlbmFibGVkIG9uIHRoZSBzb2NrZXQ6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKRmFp bGVkIHRvIGdldCBsMyBjYXQgaW5mbwpDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgKENBVCk6 IEwyClNvY2tldCBJRCAgICAgICA6IDAKTWF4aW11bSBDT1MgICAgIDogMwpDQk0gbGVuZ3RoICAg ICAgOiA4CkRlZmF1bHQgQ0JNICAgICA6IDB4ZmYKClNpZ25lZC1vZmYtYnk6IEhlIENoZW4gPGhl LmNoZW5AbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBZaSBTdW4gPHlpLnkuc3VuQGxp bnV4LmludGVsLmNvbT4KLS0tCiB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCB8ICA2ICsr LS0tCiB0b29scy9saWJ4Yy94Y19wc3IuYyAgICAgICAgICB8IDQwICsrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLQogdG9vbHMvbGlieGwvbGlieGwuaCAgICAgICAgICAgfCAgOSArKysr KysrKwogdG9vbHMvbGlieGwvbGlieGxfcHNyLmMgICAgICAgfCAxOSArKysrKysrKysrKy0tLS0t CiB0b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwgICB8ICAxICsKIHRvb2xzL2xpYnhsL3hsX2Nt ZGltcGwuYyAgICAgIHwgNTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLQogNiBmaWxlcyBjaGFuZ2VkLCA5NSBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCBiL3Rvb2xzL2xpYnhj L2luY2x1ZGUveGVuY3RybC5oCmluZGV4IDRhYjBmNTcuLjdlYTBjOTIgMTAwNjQ0Ci0tLSBhL3Rv b2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCisrKyBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVu Y3RybC5oCkBAIC0yNjI2LDkgKzI2MjYsOSBAQCBpbnQgeGNfcHNyX2NhdF9zZXRfZG9tYWluX2Rh dGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAogaW50IHhjX3Bzcl9jYXRfZ2V0 X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB4Y19wc3JfY2F0X3R5cGUgdHlwZSwgdWludDMyX3QgdGFy Z2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICpkYXRhKTsKLWlu dCB4Y19wc3JfY2F0X2dldF9sM19pbmZvKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBzb2Nr ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqY29zX21heCwgdWludDMy X3QgKmNibV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpjZHBfZW5hYmxl ZCk7CitpbnQgeGNfcHNyX2NhdF9nZXRfaW5mbyh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3Qg c29ja2V0LCB1bnNpZ25lZCBpbnQgbHZsLAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy X3QgKmNvc19tYXgsIHVpbnQzMl90ICpjYm1fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAg Ym9vbCAqY2RwX2VuYWJsZWQpOwogCiBpbnQgeGNfZ2V0X2NwdV9sZXZlbGxpbmdfY2Fwcyh4Y19p bnRlcmZhY2UgKnhjaCwgdWludDMyX3QgKmNhcHMpOwogaW50IHhjX2dldF9jcHVfZmVhdHVyZXNl dCh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgaW5kZXgsCmRpZmYgLS1naXQgYS90b29scy9s aWJ4Yy94Y19wc3IuYyBiL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCmluZGV4IDQzYjMyODYuLjZjNjFh YTUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCisrKyBiL3Rvb2xzL2xpYnhjL3hj X3Bzci5jCkBAIC0zMTcsMjQgKzMxNyw0MCBAQCBpbnQgeGNfcHNyX2NhdF9nZXRfZG9tYWluX2Rh dGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAogICAgIHJldHVybiByYzsKIH0K IAotaW50IHhjX3Bzcl9jYXRfZ2V0X2wzX2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90 IHNvY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpjb3NfbWF4LCB1 aW50MzJfdCAqY2JtX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmNkcF9l bmFibGVkKQoraW50IHhjX3Bzcl9jYXRfZ2V0X2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQz Ml90IHNvY2tldCwgdW5zaWduZWQgaW50IGx2bCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQzMl90ICpjb3NfbWF4LCB1aW50MzJfdCAqY2JtX2xlbiwgYm9vbCAqY2RwX2VuYWJsZWQpCiB7 Ci0gICAgaW50IHJjOworICAgIGludCByYyA9IC0xOwogICAgIERFQ0xBUkVfU1lTQ1RMOwogCiAg ICAgc3lzY3RsLmNtZCA9IFhFTl9TWVNDVExfcHNyX2NhdF9vcDsKLSAgICBzeXNjdGwudS5wc3Jf Y2F0X29wLmNtZCA9IFhFTl9TWVNDVExfUFNSX0NBVF9nZXRfbDNfaW5mbzsKICAgICBzeXNjdGwu dS5wc3JfY2F0X29wLnRhcmdldCA9IHNvY2tldDsKIAotICAgIHJjID0geGNfc3lzY3RsKHhjaCwg JnN5c2N0bCk7Ci0gICAgaWYgKCAhcmMgKQotICAgIHsKLSAgICAgICAgKmNvc19tYXggPSBzeXNj dGwudS5wc3JfY2F0X29wLnUubDNfaW5mby5jb3NfbWF4OwotICAgICAgICAqY2JtX2xlbiA9IHN5 c2N0bC51LnBzcl9jYXRfb3AudS5sM19pbmZvLmNibV9sZW47Ci0gICAgICAgICpjZHBfZW5hYmxl ZCA9IHN5c2N0bC51LnBzcl9jYXRfb3AudS5sM19pbmZvLmZsYWdzICYKLSAgICAgICAgICAgICAg ICAgICAgICAgWEVOX1NZU0NUTF9QU1JfQ0FUX0wzX0NEUDsKKyAgICBzd2l0Y2ggKCBsdmwgKSB7 CisgICAgY2FzZSAyOgorICAgICAgICBzeXNjdGwudS5wc3JfY2F0X29wLmNtZCA9IFhFTl9TWVND VExfUFNSX0NBVF9nZXRfbDJfaW5mbzsKKyAgICAgICAgcmMgPSB4Y19zeXNjdGwoeGNoLCAmc3lz Y3RsKTsKKyAgICAgICAgaWYgKCAhcmMgKQorICAgICAgICB7CisgICAgICAgICAgICAqY29zX21h eCA9IHN5c2N0bC51LnBzcl9jYXRfb3AudS5sMl9pbmZvLmNvc19tYXg7CisgICAgICAgICAgICAq Y2JtX2xlbiA9IHN5c2N0bC51LnBzcl9jYXRfb3AudS5sMl9pbmZvLmNibV9sZW47CisgICAgICAg ICAgICAqY2RwX2VuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAg ICBjYXNlIDM6CisgICAgICAgIHN5c2N0bC51LnBzcl9jYXRfb3AuY21kID0gWEVOX1NZU0NUTF9Q U1JfQ0FUX2dldF9sM19pbmZvOworICAgICAgICByYyA9IHhjX3N5c2N0bCh4Y2gsICZzeXNjdGwp OworICAgICAgICBpZiAoICFyYyApCisgICAgICAgIHsKKyAgICAgICAgICAgICpjb3NfbWF4ID0g c3lzY3RsLnUucHNyX2NhdF9vcC51LmwzX2luZm8uY29zX21heDsKKyAgICAgICAgICAgICpjYm1f bGVuID0gc3lzY3RsLnUucHNyX2NhdF9vcC51LmwzX2luZm8uY2JtX2xlbjsKKyAgICAgICAgICAg ICpjZHBfZW5hYmxlZCA9IHN5c2N0bC51LnBzcl9jYXRfb3AudS5sM19pbmZvLmZsYWdzICYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIFhFTl9TWVNDVExfUFNSX0NBVF9MM19DRFA7CisgICAg ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgZXJybm8gPSBFT1BO T1RTVVBQOworICAgICAgICBicmVhazsKICAgICB9CiAKICAgICByZXR1cm4gcmM7CmRpZmYgLS1n aXQgYS90b29scy9saWJ4bC9saWJ4bC5oIGIvdG9vbHMvbGlieGwvbGlieGwuaAppbmRleCAzOTI0 NDY0Li5jNzVhOTI4IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bC5oCisrKyBiL3Rvb2xz L2xpYnhsL2xpYnhsLmgKQEAgLTkwNCw2ICs5MDQsMTMgQEAgdm9pZCBsaWJ4bF9tYWNfY29weShs aWJ4bF9jdHggKmN0eCwgbGlieGxfbWFjICpkc3QsIGNvbnN0IGxpYnhsX21hYyAqc3JjKTsKICAq IElmIHRoaXMgaXMgZGVmaW5lZCwgdGhlIENvZGUgYW5kIERhdGEgUHJpb3JpdGl6YXRpb24gZmVh dHVyZSBpcyBzdXBwb3J0ZWQuCiAgKi8KICNkZWZpbmUgTElCWExfSEFWRV9QU1JfQ0RQIDEKKwor LyoKKyAqIExJQlhMX0hBVkVfUFNSX0wyX0NBVAorICoKKyAqIElmIHRoaXMgaXMgZGVmaW5lZCwg dGhlIEwyIENhY2hlIEFsbG9jYXRpb24gVGVjaG5vbG9neSBmZWF0dXJlIGlzIHN1cHBvcnRlZC4K KyAqLworI2RlZmluZSBMSUJYTF9IQVZFX1BTUl9MMl9DQVQgMQogI2VuZGlmCiAKIC8qCkBAIC0y MTY2LDYgKzIxNzMsOCBAQCBpbnQgbGlieGxfcHNyX2NhdF9nZXRfY2JtKGxpYnhsX2N0eCAqY3R4 LCB1aW50MzJfdCBkb21pZCwKICAqIE9uIHN1Y2Nlc3MsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGFu IGFycmF5IG9mIGVsZW1lbnRzIGluICdpbmZvJywKICAqIGFuZCB0aGUgbGVuZ3RoIGluICducicu CiAgKi8KK2ludCBsaWJ4bF9wc3JfY2F0X2dldF9pbmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9w c3JfY2F0X2luZm8gKippbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpuciwg dW5zaWduZWQgaW50IGx2bCk7CiBpbnQgbGlieGxfcHNyX2NhdF9nZXRfbDNfaW5mbyhsaWJ4bF9j dHggKmN0eCwgbGlieGxfcHNyX2NhdF9pbmZvICoqaW5mbywKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCAqbnIpOwogdm9pZCBsaWJ4bF9wc3JfY2F0X2luZm9fbGlzdF9mcmVlKGxp YnhsX3Bzcl9jYXRfaW5mbyAqbGlzdCwgaW50IG5yKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhs L2xpYnhsX3Bzci5jIGIvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKaW5kZXggZWM1Yzc5ZC4uNjhj NDVkYSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKKysrIGIvdG9vbHMvbGli eGwvbGlieGxfcHNyLmMKQEAgLTM1Miw4ICszNTIsOCBAQCBpbnQgbGlieGxfcHNyX2NhdF9nZXRf Y2JtKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKICAgICByZXR1cm4gcmM7CiB9CiAK LWludCBsaWJ4bF9wc3JfY2F0X2dldF9sM19pbmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9wc3Jf Y2F0X2luZm8gKippbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpucikK K2ludCBsaWJ4bF9wc3JfY2F0X2dldF9pbmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9wc3JfY2F0 X2luZm8gKippbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpuciwgdW5zaWdu ZWQgaW50IGx2bCkKIHsKICAgICBHQ19JTklUKGN0eCk7CiAgICAgaW50IHJjOwpAQCAtMzgwLDkg KzM4MCw4IEBAIGludCBsaWJ4bF9wc3JfY2F0X2dldF9sM19pbmZvKGxpYnhsX2N0eCAqY3R4LCBs aWJ4bF9wc3JfY2F0X2luZm8gKippbmZvLAogCiAgICAgbGlieGxfZm9yX2VhY2hfc2V0X2JpdChz b2NrZXRpZCwgc29ja2V0bWFwKSB7CiAgICAgICAgIHB0cltpXS5pZCA9IHNvY2tldGlkOwotICAg ICAgICBpZiAoeGNfcHNyX2NhdF9nZXRfbDNfaW5mbyhjdHgtPnhjaCwgc29ja2V0aWQsICZwdHJb aV0uY29zX21heCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnB0cltpXS5j Ym1fbGVuLCAmcHRyW2ldLmNkcF9lbmFibGVkKSkgewotICAgICAgICAgICAgbGlieGxfX3Bzcl9j YXRfbG9nX2Vycl9tc2coZ2MsIGVycm5vKTsKKyAgICAgICAgaWYgKHhjX3Bzcl9jYXRfZ2V0X2lu Zm8oY3R4LT54Y2gsIHNvY2tldGlkLCBsdmwsICZwdHJbaV0uY29zX21heCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJnB0cltpXS5jYm1fbGVuLCAmcHRyW2ldLmNkcF9lbmFibGVk KSkgewogICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgICAgICAgICAgZnJlZShwdHIp OwogICAgICAgICAgICAgZ290byBvdXQ7CkBAIC0zOTgsNiArMzk3LDE2IEBAIG91dDoKICAgICBy ZXR1cm4gcmM7CiB9CiAKK2ludCBsaWJ4bF9wc3JfY2F0X2dldF9sM19pbmZvKGxpYnhsX2N0eCAq Y3R4LCBsaWJ4bF9wc3JfY2F0X2luZm8gKippbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50ICpucikKK3sKKyAgICBpbnQgcmM7CisKKyAgICByYyA9IGxpYnhsX3Bzcl9jYXRf Z2V0X2luZm8oY3R4LCBpbmZvLCBuciwgMyk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKIHZvaWQg bGlieGxfcHNyX2NhdF9pbmZvX2xpc3RfZnJlZShsaWJ4bF9wc3JfY2F0X2luZm8gKmxpc3QsIGlu dCBucikKIHsKICAgICBpbnQgaTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVz LmlkbCBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbAppbmRleCBhNjEyZDFmLi41YTQwMWI4 IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKKysrIGIvdG9vbHMvbGli eGwvbGlieGxfdHlwZXMuaWRsCkBAIC04OTksNiArODk5LDcgQEAgbGlieGxfcHNyX2NibV90eXBl ID0gRW51bWVyYXRpb24oInBzcl9jYm1fdHlwZSIsIFsKICAgICAoMSwgIkwzX0NCTSIpLAogICAg ICgyLCAiTDNfQ0JNX0NPREUiKSwKICAgICAoMywgIkwzX0NCTV9EQVRBIiksCisgICAgKDQsICJM Ml9DQk0iKSwKICAgICBdKQogCiBsaWJ4bF9wc3JfY2F0X2luZm8gPSBTdHJ1Y3QoInBzcl9jYXRf aW5mbyIsIFsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYyBiL3Rvb2xzL2xp YnhsL3hsX2NtZGltcGwuYwppbmRleCA3ZThhOGFlLi40MmQ2ODI3IDEwMDY0NAotLS0gYS90b29s cy9saWJ4bC94bF9jbWRpbXBsLmMKKysrIGIvdG9vbHMvbGlieGwveGxfY21kaW1wbC5jCkBAIC05 MzMxLDIxICs5MzMxLDE5IEBAIGludCBtYWluX3Bzcl9jbXRfc2hvdyhpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiB9CiAjZW5kaWYKIAotI2lmZGVmIExJQlhMX0hBVkVfUFNSX0NBVAotc3RhdGljIGlu dCBwc3JfY2F0X2h3aW5mbyh2b2lkKQorI2lmIGRlZmluZWQoTElCWExfSEFWRV9QU1JfQ0FUKSB8 fCBkZWZpbmVkKExJQlhMX0hBVkVfUFNSX0wyX0NBVCkKK3N0YXRpYyBpbnQgcHNyX2wzX2NhdF9o d2luZm8odm9pZCkKIHsKLSAgICBpbnQgcmM7Ci0gICAgaW50IGksIG5yOworICAgIGludCByYywg bnI7CisgICAgdW5zaWduZWQgaW50IGk7CiAgICAgdWludDMyX3QgbDNfY2FjaGVfc2l6ZTsKICAg ICBsaWJ4bF9wc3JfY2F0X2luZm8gKmluZm87CiAKLSAgICBwcmludGYoIkNhY2hlIEFsbG9jYXRp b24gVGVjaG5vbG9neSAoQ0FUKTpcbiIpOwotCi0gICAgcmMgPSBsaWJ4bF9wc3JfY2F0X2dldF9s M19pbmZvKGN0eCwgJmluZm8sICZucik7Ci0gICAgaWYgKHJjKSB7Ci0gICAgICAgIGZwcmludGYo c3RkZXJyLCAiRmFpbGVkIHRvIGdldCBjYXQgaW5mb1xuIik7CisgICAgcmMgPSBsaWJ4bF9wc3Jf Y2F0X2dldF9pbmZvKGN0eCwgJmluZm8sICZuciwgMyk7CisgICAgaWYgKHJjKQogICAgICAgICBy ZXR1cm4gcmM7Ci0gICAgfQorCisgICAgcHJpbnRmKCJDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xv Z3kgKENBVCk6IEwzXG4iKTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBucjsgaSsrKSB7CiAgICAg ICAgIHJjID0gbGlieGxfcHNyX2NtdF9nZXRfbDNfY2FjaGVfc2l6ZShjdHgsIGluZm9baV0uaWQs ICZsM19jYWNoZV9zaXplKTsKQEAgLTk0NTQsNyArOTQ1Miw3IEBAIHN0YXRpYyBpbnQgcHNyX2Nh dF9zaG93KHVpbnQzMl90IGRvbWlkKQogICAgIGludCByYzsKICAgICBsaWJ4bF9wc3JfY2F0X2lu Zm8gKmluZm87CiAKLSAgICByYyA9IGxpYnhsX3Bzcl9jYXRfZ2V0X2wzX2luZm8oY3R4LCAmaW5m bywgJm5yKTsKKyAgICByYyA9IGxpYnhsX3Bzcl9jYXRfZ2V0X2luZm8oY3R4LCAmaW5mbywgJm5y LCAzKTsKICAgICBpZiAocmMpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8g Z2V0IGNhdCBpbmZvXG4iKTsKICAgICAgICAgcmV0dXJuIHJjOwpAQCAtOTQ3MSw2ICs5NDY5LDMy IEBAIG91dDoKICAgICByZXR1cm4gcmM7CiB9CiAKK3N0YXRpYyBpbnQgcHNyX2wyX2NhdF9od2lu Zm8odm9pZCkKK3sKKyAgICBpbnQgcmM7CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgaW50IG5y OworICAgIGxpYnhsX3Bzcl9jYXRfaW5mbyAqaW5mbzsKKworICAgIHJjID0gbGlieGxfcHNyX2Nh dF9nZXRfaW5mbyhjdHgsICZpbmZvLCAmbnIsIDIpOworICAgIGlmIChyYykKKyAgICAgICAgcmV0 dXJuIHJjOworCisgICAgcHJpbnRmKCJDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgKENBVCk6 IEwyXG4iKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBucjsgaSsrKSB7CisgICAgICAgIC8qIFRo ZXJlIGlzIG5vIENNVCBvbiBMMiBjYWNoZSBzbyBmYXIuICovCisgICAgICAgIHByaW50ZigiJS0x NnM6ICV1XG4iLCAiU29ja2V0IElEIiwgaW5mb1tpXS5pZCk7CisgICAgICAgIHByaW50ZigiJS0x NnM6ICV1XG4iLCAiTWF4aW11bSBDT1MiLCBpbmZvW2ldLmNvc19tYXgpOworICAgICAgICBwcmlu dGYoIiUtMTZzOiAldVxuIiwgIkNCTSBsZW5ndGgiLCBpbmZvW2ldLmNibV9sZW4pOworICAgICAg ICBwcmludGYoIiUtMTZzOiAlI2xseFxuIiwgIkRlZmF1bHQgQ0JNIiwKKyAgICAgICAgICAgICAg ICgxdWxsIDw8IGluZm9baV0uY2JtX2xlbikgLSAxKTsKKyAgICB9CisKKyAgICBsaWJ4bF9wc3Jf Y2F0X2luZm9fbGlzdF9mcmVlKGluZm8sIG5yKTsKKyAgICByZXR1cm4gcmM7Cit9CisKIGludCBt YWluX3Bzcl9jYXRfY2JtX3NldChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAgICAgdWludDMy X3QgZG9taWQ7CkBAIC05NTg4LDcgKzk2MTIsMTEgQEAgaW50IG1haW5fcHNyX2h3aW5mbyhpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgIHJldCA9IHBzcl9jbXRfaHdpbmZvKCk7CiAKICAg ICBpZiAoIXJldCAmJiAoYWxsIHx8IGNhdCkpCi0gICAgICAgIHJldCA9IHBzcl9jYXRfaHdpbmZv KCk7CisgICAgICAgIHJldCA9IHBzcl9sM19jYXRfaHdpbmZvKCk7CisKKyAgICAvKiBMMiBDQVQg aXMgaW5kZXBlbmRlbnQgb2YgQ01UIGFuZCBMMyBDQVQgKi8KKyAgICBpZiAoYWxsIHx8IGNhdCkK KyAgICAgICAgcmV0ID0gcHNyX2wyX2NhdF9od2luZm8oKTsKIAogICAgIHJldHVybiByZXQ7CiB9 Ci0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6 Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=