From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v9 22/25] tools: L2 CAT: support get HW info for L2 CAT. Date: Thu, 16 Mar 2017 19:08:12 +0800 Message-ID: <1489662495-5375-23-git-send-email-yi.y.sun@linux.intel.com> References: <1489662495-5375-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 1coTMe-00055D-Mo for xen-devel@lists.xenproject.org; Thu, 16 Mar 2017 11:14:40 +0000 In-Reply-To: <1489662495-5375-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, 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, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIHhsL3hjIGNoYW5nZXMgdG8gc3VwcG9ydCBnZXQgSFcgaW5m bwpmb3IgTDIgQ0FULgoKJ3hsIHBzci1od2luZm8nIGlzIHVwZGF0ZWQgdG8gc2hvdyBib3RoIEwz IENBVCBhbmQgTDIgQ0FUCmluZm8uCgpFeGFtcGxlKG9uIG1hY2hpbmUgd2hpY2ggb25seSBzdXBw b3J0cyBMMiBDQVQpOgpDYWNoZSBNb25pdG9yaW5nIFRlY2hub2xvZ3kgKENNVCk6CkVuYWJsZWQg ICAgICAgICA6IDAKQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5IChDQVQpOiBMMgpTb2NrZXQg SUQgICAgICAgOiAwCk1heGltdW0gQ09TICAgICA6IDMKQ0JNIGxlbmd0aCAgICAgIDogOApEZWZh dWx0IENCTSAgICAgOiAweGZmCgpTaWduZWQtb2ZmLWJ5OiBIZSBDaGVuIDxoZS5jaGVuQGxpbnV4 LmludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRlbC5j b20+CkFja2VkLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0Kdjk6CiAgICAt IGFkZCBzb21lIGNhc2VzIHRvIGhhbmRsZSByZXR1cm4gZXJyb3Igbm8uCiAgICAtIG1vdmUgeGxf Y21kaW1wbC5jIGNvZGVzIGludG8geGwveGxfcHNyLmMuCiAgICAtIGNoYW5nZSAnbDNfaW5mbycg dG8gJ2NhdF9pbmZvJyB0byBjb3ZlciBib3RoIEwzIGFuZCBMMiBDQVQuCnY2OgogICAgLSBhZGp1 c3QgJ3snIHBvc2l0aW9uIGZvciAnc3dpdGNoJy4KICAgICAgKHN1Z2dlc3RlZCBieSBXZWkgTGl1 KQogICAgLSBtb2RpZnkgY29tbWl0IG1lc3NhZ2UgdG8gcmVtb3ZlIGVycm9yIGxvZy4KICAgICAg KHN1Z2dlc3RlZCBieSBEYXJpbyBGYWdnaW9saSkKdjU6CiAgICAtIG1vZGlmeSBjb21taXQgbWVz c2FnZSB0byByZW1vdmUgZXJyb3IgbG9nLgogICAgICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUgYW5k IEphbiBCZXVsaWNoKQogICAgLSByZXBsYWNlIHVubmVjZXNzYXJ5ICdyZXR1cm4nIHRvICdicmVh aycuCiAgICAgIChzdWdnZXN0ZWQgYnkgV2VpIExpdSkKICAgIC0gcmVzdG9yZSAnbGlieGxfcHNy X2NhdF9nZXRfbDNfaW5mbycgdG8ga2VlcCBpbnRlcmZhY2UgYmFja3dhcmQgY29tcGF0aWJsZQog ICAgICBidXQgY2hhbmdlIGNvZGVzIGluIGl0IHRvIGNhbGwgbmV3IGZ1bmN0aW9uIHRvIGdldCBo dyBpbmZvLgogICAgICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUpCiAgICAtIGFkZCAnTDJfQ0JNJyBp bnRvICdwc3JfY2JtX3R5cGUnIGJlY2F1c2UgaXQgaXMgaW50ZXJmYWNlIGNoYW5nZSB3aGljaAog ICAgICBzaG91bGQgYmUgaW4gc2FtZSBwYXRjaCB3aXRoIG5ldyAnTElCWExfSEFWRV8nIG1hY3Jv LgogICAgICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUpCiAgICAtIGFkZGp1c3QgbG9ncyBzZW50ZW5j ZSB0byBtYWtlIHVubmVjZXNzYXJ5IGVycm9yIGxvZ3Mgbm90IHNob3cuCiAgICAgIChzdWdnZXN0 ZWQgYnkgV2VpIExpdSBhbmQgSmFuIEJldWxpY2gpCnY0OgogICAgLSBjcmVhdGUgdGhpcyBwYXRj aCB0byBoZWxwIHJldmlld2VycyBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgY29kZXMuCi0tLQogdG9v bHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggfCAgNiArKy0tLQogdG9vbHMvbGlieGMveGNfcHNy LmMgICAgICAgICAgfCAzOSArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogdG9vbHMv bGlieGwvbGlieGwuaCAgICAgICAgICAgfCAgOSArKysrKysrKwogdG9vbHMvbGlieGwvbGlieGxf cHNyLmMgICAgICAgfCAyOCArKysrKysrKysrKysrKysrKystLS0tLQogdG9vbHMvbGlieGwvbGli eGxfdHlwZXMuaWRsICAgfCAgMSArCiB0b29scy94bC94bF9wc3IuYyAgICAgICAgICAgICB8IDUy ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4 Ni9zeXNjdGwuYyAgICAgICAgIHwgMTggKysrKysrKy0tLS0tLS0tCiB4ZW4vaW5jbHVkZS9wdWJs aWMvc3lzY3RsLmggICB8ICAyICstCiA4IGZpbGVzIGNoYW5nZWQsIDExNCBpbnNlcnRpb25zKCsp LCA0MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0 cmwuaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCmluZGV4IGE0ODk4MWEuLjk5YzZm YTUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCisrKyBiL3Rvb2xz L2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCkBAIC0yNDQyLDkgKzI0NDIsOSBAQCBpbnQgeGNfcHNy X2NhdF9zZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAog aW50IHhjX3Bzcl9jYXRfZ2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJf dCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4Y19wc3JfY2F0X3R5cGUg dHlwZSwgdWludDMyX3QgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQ2NF90ICpkYXRhKTsKLWludCB4Y19wc3JfY2F0X2dldF9sM19pbmZvKHhjX2ludGVyZmFjZSAq eGNoLCB1aW50MzJfdCBzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf dCAqY29zX21heCwgdWludDMyX3QgKmNibV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICBib29sICpjZHBfZW5hYmxlZCk7CitpbnQgeGNfcHNyX2NhdF9nZXRfaW5mbyh4Y19pbnRlcmZh Y2UgKnhjaCwgdWludDMyX3Qgc29ja2V0LCB1bnNpZ25lZCBpbnQgbHZsLAorICAgICAgICAgICAg ICAgICAgICAgICAgdWludDMyX3QgKmNvc19tYXgsIHVpbnQzMl90ICpjYm1fbGVuLAorICAgICAg ICAgICAgICAgICAgICAgICAgYm9vbCAqY2RwX2VuYWJsZWQpOwogCiBpbnQgeGNfZ2V0X2NwdV9s ZXZlbGxpbmdfY2Fwcyh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgKmNhcHMpOwogaW50IHhj X2dldF9jcHVfZmVhdHVyZXNldCh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgaW5kZXgsCmRp ZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19wc3IuYyBiL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCmlu ZGV4IDQzYjMyODYuLjg0YTA4YzQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCisr KyBiL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCkBAIC0zMTcsMjQgKzMxNyw0MSBAQCBpbnQgeGNfcHNy X2NhdF9nZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAog ICAgIHJldHVybiByYzsKIH0KIAotaW50IHhjX3Bzcl9jYXRfZ2V0X2wzX2luZm8oeGNfaW50ZXJm YWNlICp4Y2gsIHVpbnQzMl90IHNvY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQzMl90ICpjb3NfbWF4LCB1aW50MzJfdCAqY2JtX2xlbiwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJvb2wgKmNkcF9lbmFibGVkKQoraW50IHhjX3Bzcl9jYXRfZ2V0X2luZm8oeGNfaW50 ZXJmYWNlICp4Y2gsIHVpbnQzMl90IHNvY2tldCwgdW5zaWduZWQgaW50IGx2bCwKKyAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90ICpjb3NfbWF4LCB1aW50MzJfdCAqY2JtX2xlbiwgYm9v bCAqY2RwX2VuYWJsZWQpCiB7Ci0gICAgaW50IHJjOworICAgIGludCByYyA9IC0xOwogICAgIERF Q0xBUkVfU1lTQ1RMOwogCiAgICAgc3lzY3RsLmNtZCA9IFhFTl9TWVNDVExfcHNyX2NhdF9vcDsK LSAgICBzeXNjdGwudS5wc3JfY2F0X29wLmNtZCA9IFhFTl9TWVNDVExfUFNSX0NBVF9nZXRfbDNf aW5mbzsKICAgICBzeXNjdGwudS5wc3JfY2F0X29wLnRhcmdldCA9IHNvY2tldDsKIAotICAgIHJj ID0geGNfc3lzY3RsKHhjaCwgJnN5c2N0bCk7Ci0gICAgaWYgKCAhcmMgKQorICAgIHN3aXRjaCAo IGx2bCApCiAgICAgewotICAgICAgICAqY29zX21heCA9IHN5c2N0bC51LnBzcl9jYXRfb3AudS5s M19pbmZvLmNvc19tYXg7Ci0gICAgICAgICpjYm1fbGVuID0gc3lzY3RsLnUucHNyX2NhdF9vcC51 LmwzX2luZm8uY2JtX2xlbjsKLSAgICAgICAgKmNkcF9lbmFibGVkID0gc3lzY3RsLnUucHNyX2Nh dF9vcC51LmwzX2luZm8uZmxhZ3MgJgotICAgICAgICAgICAgICAgICAgICAgICBYRU5fU1lTQ1RM X1BTUl9DQVRfTDNfQ0RQOworICAgIGNhc2UgMjoKKyAgICAgICAgc3lzY3RsLnUucHNyX2NhdF9v cC5jbWQgPSBYRU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wyX2luZm87CisgICAgICAgIHJjID0geGNf c3lzY3RsKHhjaCwgJnN5c2N0bCk7CisgICAgICAgIGlmICggIXJjICkKKyAgICAgICAgeworICAg ICAgICAgICAgKmNvc19tYXggPSBzeXNjdGwudS5wc3JfY2F0X29wLnUuY2F0X2luZm8uY29zX21h eDsKKyAgICAgICAgICAgICpjYm1fbGVuID0gc3lzY3RsLnUucHNyX2NhdF9vcC51LmNhdF9pbmZv LmNibV9sZW47CisgICAgICAgICAgICAqY2RwX2VuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgfQor ICAgICAgICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICAgIHN5c2N0bC51LnBzcl9jYXRfb3Au Y21kID0gWEVOX1NZU0NUTF9QU1JfQ0FUX2dldF9sM19pbmZvOworICAgICAgICByYyA9IHhjX3N5 c2N0bCh4Y2gsICZzeXNjdGwpOworICAgICAgICBpZiAoICFyYyApCisgICAgICAgIHsKKyAgICAg ICAgICAgICpjb3NfbWF4ID0gc3lzY3RsLnUucHNyX2NhdF9vcC51LmNhdF9pbmZvLmNvc19tYXg7 CisgICAgICAgICAgICAqY2JtX2xlbiA9IHN5c2N0bC51LnBzcl9jYXRfb3AudS5jYXRfaW5mby5j Ym1fbGVuOworICAgICAgICAgICAgKmNkcF9lbmFibGVkID0gc3lzY3RsLnUucHNyX2NhdF9vcC51 LmNhdF9pbmZvLmZsYWdzICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFhFTl9TWVNDVExf UFNSX0NBVF9MM19DRFA7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK KyAgICAgICAgZXJybm8gPSBFT1BOT1RTVVBQOworICAgICAgICBicmVhazsKICAgICB9CiAKICAg ICByZXR1cm4gcmM7CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bC5oIGIvdG9vbHMvbGli eGwvbGlieGwuaAppbmRleCA5MmYxNzUxLi42YzZmYjAxIDEwMDY0NAotLS0gYS90b29scy9saWJ4 bC9saWJ4bC5oCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsLmgKQEAgLTkwNCw2ICs5MDQsMTMgQEAg dm9pZCBsaWJ4bF9tYWNfY29weShsaWJ4bF9jdHggKmN0eCwgbGlieGxfbWFjICpkc3QsIGNvbnN0 IGxpYnhsX21hYyAqc3JjKTsKICAqIElmIHRoaXMgaXMgZGVmaW5lZCwgdGhlIENvZGUgYW5kIERh dGEgUHJpb3JpdGl6YXRpb24gZmVhdHVyZSBpcyBzdXBwb3J0ZWQuCiAgKi8KICNkZWZpbmUgTElC WExfSEFWRV9QU1JfQ0RQIDEKKworLyoKKyAqIExJQlhMX0hBVkVfUFNSX0wyX0NBVAorICoKKyAq IElmIHRoaXMgaXMgZGVmaW5lZCwgdGhlIEwyIENhY2hlIEFsbG9jYXRpb24gVGVjaG5vbG9neSBm ZWF0dXJlIGlzIHN1cHBvcnRlZC4KKyAqLworI2RlZmluZSBMSUJYTF9IQVZFX1BTUl9MMl9DQVQg MQogI2VuZGlmCiAKIC8qCkBAIC0yMTcyLDYgKzIxNzksOCBAQCBpbnQgbGlieGxfcHNyX2NhdF9n ZXRfY2JtKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKICAqIE9uIHN1Y2Nlc3MsIHRo ZSBmdW5jdGlvbiByZXR1cm5zIGFuIGFycmF5IG9mIGVsZW1lbnRzIGluICdpbmZvJywKICAqIGFu ZCB0aGUgbGVuZ3RoIGluICducicuCiAgKi8KK2ludCBsaWJ4bF9wc3JfY2F0X2dldF9pbmZvKGxp YnhsX2N0eCAqY3R4LCBsaWJ4bF9wc3JfY2F0X2luZm8gKippbmZvLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50ICpuciwgdW5zaWduZWQgaW50IGx2bCk7CiBpbnQgbGlieGxfcHNyX2Nh dF9nZXRfbDNfaW5mbyhsaWJ4bF9jdHggKmN0eCwgbGlieGxfcHNyX2NhdF9pbmZvICoqaW5mbywK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqbnIpOwogdm9pZCBsaWJ4bF9wc3Jf Y2F0X2luZm9fbGlzdF9mcmVlKGxpYnhsX3Bzcl9jYXRfaW5mbyAqbGlzdCwgaW50IG5yKTsKZGlm ZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3Bzci5jIGIvdG9vbHMvbGlieGwvbGlieGxfcHNy LmMKaW5kZXggZWM1Yzc5ZC4uZjU1YmExZSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxf cHNyLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKQEAgLTkxLDYgKzkxLDE1IEBAIHN0 YXRpYyB2b2lkIGxpYnhsX19wc3JfY2F0X2xvZ19lcnJfbXNnKGxpYnhsX19nYyAqZ2MsIGludCBl cnIpCiAgICAgY2FzZSBFTlhJTzoKICAgICAgICAgbXNnID0gIlVuYWJsZSB0byBzZXQgY29kZSBv ciBkYXRhIENCTSB3aGVuIENEUCBpcyBkaXNhYmxlZCI7CiAgICAgICAgIGJyZWFrOworICAgIGNh c2UgRUlOVkFMOgorICAgICAgICBtc2cgPSAiSW52YWxpZCBpbnB1dCBvciBzb21lIGludGVybmFs IHZhbHVlcyBhcmUgbm90IGV4cGVjdGVkIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFUkFO R0U6CisgICAgICAgIG1zZyA9ICJTb2NrZXQgbnVtYmVyIGlzIHdyb25nIjsKKyAgICAgICAgYnJl YWs7CisgICAgY2FzZSBFTk9TUEM6CisgICAgICAgIG1zZyA9ICJWYWx1ZSBhcnJheSBleGNlZWRz IHRoZSByYW5nZSI7CisgICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoKICAgICAgICAgbGli eGxfX3Bzcl9sb2dfZXJyX21zZyhnYywgZXJyKTsKQEAgLTM1Miw4ICszNjEsOCBAQCBpbnQgbGli eGxfcHNyX2NhdF9nZXRfY2JtKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKICAgICBy ZXR1cm4gcmM7CiB9CiAKLWludCBsaWJ4bF9wc3JfY2F0X2dldF9sM19pbmZvKGxpYnhsX2N0eCAq Y3R4LCBsaWJ4bF9wc3JfY2F0X2luZm8gKippbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50ICpucikKK2ludCBsaWJ4bF9wc3JfY2F0X2dldF9pbmZvKGxpYnhsX2N0eCAqY3R4 LCBsaWJ4bF9wc3JfY2F0X2luZm8gKippbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50ICpuciwgdW5zaWduZWQgaW50IGx2bCkKIHsKICAgICBHQ19JTklUKGN0eCk7CiAgICAgaW50 IHJjOwpAQCAtMzgwLDkgKzM4OSw4IEBAIGludCBsaWJ4bF9wc3JfY2F0X2dldF9sM19pbmZvKGxp YnhsX2N0eCAqY3R4LCBsaWJ4bF9wc3JfY2F0X2luZm8gKippbmZvLAogCiAgICAgbGlieGxfZm9y X2VhY2hfc2V0X2JpdChzb2NrZXRpZCwgc29ja2V0bWFwKSB7CiAgICAgICAgIHB0cltpXS5pZCA9 IHNvY2tldGlkOwotICAgICAgICBpZiAoeGNfcHNyX2NhdF9nZXRfbDNfaW5mbyhjdHgtPnhjaCwg c29ja2V0aWQsICZwdHJbaV0uY29zX21heCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJnB0cltpXS5jYm1fbGVuLCAmcHRyW2ldLmNkcF9lbmFibGVkKSkgewotICAgICAgICAg ICAgbGlieGxfX3Bzcl9jYXRfbG9nX2Vycl9tc2coZ2MsIGVycm5vKTsKKyAgICAgICAgaWYgKHhj X3Bzcl9jYXRfZ2V0X2luZm8oY3R4LT54Y2gsIHNvY2tldGlkLCBsdmwsICZwdHJbaV0uY29zX21h eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnB0cltpXS5jYm1fbGVuLCAmcHRy W2ldLmNkcF9lbmFibGVkKSkgewogICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgICAg ICAgICAgZnJlZShwdHIpOwogICAgICAgICAgICAgZ290byBvdXQ7CkBAIC0zOTgsNiArNDA2LDE2 IEBAIG91dDoKICAgICByZXR1cm4gcmM7CiB9CiAKK2ludCBsaWJ4bF9wc3JfY2F0X2dldF9sM19p bmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9wc3JfY2F0X2luZm8gKippbmZvLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50ICpucikKK3sKKyAgICBpbnQgcmM7CisKKyAgICByYyA9 IGxpYnhsX3Bzcl9jYXRfZ2V0X2luZm8oY3R4LCBpbmZvLCBuciwgMyk7CisKKyAgICByZXR1cm4g cmM7Cit9CisKIHZvaWQgbGlieGxfcHNyX2NhdF9pbmZvX2xpc3RfZnJlZShsaWJ4bF9wc3JfY2F0 X2luZm8gKmxpc3QsIGludCBucikKIHsKICAgICBpbnQgaTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xp YnhsL2xpYnhsX3R5cGVzLmlkbCBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbAppbmRleCBh NjEyZDFmLi41YTQwMWI4IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwK KysrIGIvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCkBAIC04OTksNiArODk5LDcgQEAgbGli eGxfcHNyX2NibV90eXBlID0gRW51bWVyYXRpb24oInBzcl9jYm1fdHlwZSIsIFsKICAgICAoMSwg IkwzX0NCTSIpLAogICAgICgyLCAiTDNfQ0JNX0NPREUiKSwKICAgICAoMywgIkwzX0NCTV9EQVRB IiksCisgICAgKDQsICJMMl9DQk0iKSwKICAgICBdKQogCiBsaWJ4bF9wc3JfY2F0X2luZm8gPSBT dHJ1Y3QoInBzcl9jYXRfaW5mbyIsIFsKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsX3Bzci5jIGIv dG9vbHMveGwveGxfcHNyLmMKaW5kZXggYzA2MWIyOS4uMjcxYjg4ZiAxMDA2NDQKLS0tIGEvdG9v bHMveGwveGxfcHNyLmMKKysrIGIvdG9vbHMveGwveGxfcHNyLmMKQEAgLTI5NCwyMSArMjk0LDE5 IEBAIGludCBtYWluX3Bzcl9jbXRfc2hvdyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB9CiAjZW5k aWYKIAotI2lmZGVmIExJQlhMX0hBVkVfUFNSX0NBVAotc3RhdGljIGludCBwc3JfY2F0X2h3aW5m byh2b2lkKQorI2lmIGRlZmluZWQoTElCWExfSEFWRV9QU1JfQ0FUKSB8fCBkZWZpbmVkKExJQlhM X0hBVkVfUFNSX0wyX0NBVCkKK3N0YXRpYyBpbnQgcHNyX2wzX2NhdF9od2luZm8odm9pZCkKIHsK LSAgICBpbnQgcmM7Ci0gICAgaW50IGksIG5yOworICAgIGludCByYywgbnI7CisgICAgdW5zaWdu ZWQgaW50IGk7CiAgICAgdWludDMyX3QgbDNfY2FjaGVfc2l6ZTsKICAgICBsaWJ4bF9wc3JfY2F0 X2luZm8gKmluZm87CiAKLSAgICBwcmludGYoIkNhY2hlIEFsbG9jYXRpb24gVGVjaG5vbG9neSAo Q0FUKTpcbiIpOwotCi0gICAgcmMgPSBsaWJ4bF9wc3JfY2F0X2dldF9sM19pbmZvKGN0eCwgJmlu Zm8sICZucik7Ci0gICAgaWYgKHJjKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVk IHRvIGdldCBjYXQgaW5mb1xuIik7CisgICAgcmMgPSBsaWJ4bF9wc3JfY2F0X2dldF9pbmZvKGN0 eCwgJmluZm8sICZuciwgMyk7CisgICAgaWYgKHJjKQogICAgICAgICByZXR1cm4gcmM7Ci0gICAg fQorCisgICAgcHJpbnRmKCJDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgKENBVCk6XG4iKTsK IAogICAgIGZvciAoaSA9IDA7IGkgPCBucjsgaSsrKSB7CiAgICAgICAgIHJjID0gbGlieGxfcHNy X2NtdF9nZXRfbDNfY2FjaGVfc2l6ZShjdHgsIGluZm9baV0uaWQsICZsM19jYWNoZV9zaXplKTsK QEAgLTQxNyw3ICs0MTUsNyBAQCBzdGF0aWMgaW50IHBzcl9jYXRfc2hvdyh1aW50MzJfdCBkb21p ZCkKICAgICBpbnQgcmM7CiAgICAgbGlieGxfcHNyX2NhdF9pbmZvICppbmZvOwogCi0gICAgcmMg PSBsaWJ4bF9wc3JfY2F0X2dldF9sM19pbmZvKGN0eCwgJmluZm8sICZucik7CisgICAgcmMgPSBs aWJ4bF9wc3JfY2F0X2dldF9pbmZvKGN0eCwgJmluZm8sICZuciwgMyk7CiAgICAgaWYgKHJjKSB7 CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCBjYXQgaW5mb1xuIik7CiAg ICAgICAgIHJldHVybiByYzsKQEAgLTQzNCw2ICs0MzIsMzIgQEAgb3V0OgogICAgIHJldHVybiBy YzsKIH0KIAorc3RhdGljIGludCBwc3JfbDJfY2F0X2h3aW5mbyh2b2lkKQoreworICAgIGludCBy YzsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBpbnQgbnI7CisgICAgbGlieGxfcHNyX2NhdF9p bmZvICppbmZvOworCisgICAgcmMgPSBsaWJ4bF9wc3JfY2F0X2dldF9pbmZvKGN0eCwgJmluZm8s ICZuciwgMik7CisgICAgaWYgKHJjKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICBwcmludGYo IkNhY2hlIEFsbG9jYXRpb24gVGVjaG5vbG9neSAoQ0FUKTogTDJcbiIpOworCisgICAgZm9yIChp ID0gMDsgaSA8IG5yOyBpKyspIHsKKyAgICAgICAgLyogVGhlcmUgaXMgbm8gQ01UIG9uIEwyIGNh Y2hlIHNvIGZhci4gKi8KKyAgICAgICAgcHJpbnRmKCIlLTE2czogJXVcbiIsICJTb2NrZXQgSUQi LCBpbmZvW2ldLmlkKTsKKyAgICAgICAgcHJpbnRmKCIlLTE2czogJXVcbiIsICJNYXhpbXVtIENP UyIsIGluZm9baV0uY29zX21heCk7CisgICAgICAgIHByaW50ZigiJS0xNnM6ICV1XG4iLCAiQ0JN IGxlbmd0aCIsIGluZm9baV0uY2JtX2xlbik7CisgICAgICAgIHByaW50ZigiJS0xNnM6ICUjbGx4 XG4iLCAiRGVmYXVsdCBDQk0iLAorICAgICAgICAgICAgICAgKDF1bGwgPDwgaW5mb1tpXS5jYm1f bGVuKSAtIDEpOworICAgIH0KKworICAgIGxpYnhsX3Bzcl9jYXRfaW5mb19saXN0X2ZyZWUoaW5m bywgbnIpOworICAgIHJldHVybiByYzsKK30KKwogaW50IG1haW5fcHNyX2NhdF9jYm1fc2V0KGlu dCBhcmdjLCBjaGFyICoqYXJndikKIHsKICAgICB1aW50MzJfdCBkb21pZDsKQEAgLTU1MSw3ICs1 NzUsMTEgQEAgaW50IG1haW5fcHNyX2h3aW5mbyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAg ICAgIHJldCA9IHBzcl9jbXRfaHdpbmZvKCk7CiAKICAgICBpZiAoIXJldCAmJiAoYWxsIHx8IGNh dCkpCi0gICAgICAgIHJldCA9IHBzcl9jYXRfaHdpbmZvKCk7CisgICAgICAgIHJldCA9IHBzcl9s M19jYXRfaHdpbmZvKCk7CisKKyAgICAvKiBMMiBDQVQgaXMgaW5kZXBlbmRlbnQgb2YgQ01UIGFu ZCBMMyBDQVQgKi8KKyAgICBpZiAoYWxsIHx8IGNhdCkKKyAgICAgICAgcmV0ID0gcHNyX2wyX2Nh dF9od2luZm8oKTsKIAogICAgIHJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvc3lzY3RsLmMgYi94ZW4vYXJjaC94ODYvc3lzY3RsLmMKaW5kZXggZjcwMTkxMC4uYzAwYzIz NCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3N5c2N0bC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9z eXNjdGwuYwpAQCAtMTgyLDExICsxODIsMTEgQEAgbG9uZyBhcmNoX2RvX3N5c2N0bCgKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQU1JfQ0JNX1RZUEVfTDMsIGRhdGEsIEFSUkFZX1NJ WkUoZGF0YSkpOwogICAgICAgICAgICAgaWYgKCAhcmV0ICkKICAgICAgICAgICAgIHsKLSAgICAg ICAgICAgICAgICBzeXNjdGwtPnUucHNyX2NhdF9vcC51LmwzX2luZm8uY2JtX2xlbiA9CisgICAg ICAgICAgICAgICAgc3lzY3RsLT51LnBzcl9jYXRfb3AudS5jYXRfaW5mby5jYm1fbGVuID0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtQU1JfSU5G T19JRFhfQ0JNX0xFTl07Ci0gICAgICAgICAgICAgICAgc3lzY3RsLT51LnBzcl9jYXRfb3AudS5s M19pbmZvLmNvc19tYXggPQorICAgICAgICAgICAgICAgIHN5c2N0bC0+dS5wc3JfY2F0X29wLnUu Y2F0X2luZm8uY29zX21heCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGFbUFNSX0lORk9fSURYX0NPU19NQVhdOwotICAgICAgICAgICAgICAgIHN5 c2N0bC0+dS5wc3JfY2F0X29wLnUubDNfaW5mby5mbGFncyA9CisgICAgICAgICAgICAgICAgc3lz Y3RsLT51LnBzcl9jYXRfb3AudS5jYXRfaW5mby5mbGFncyA9CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbUFNSX0lORk9fSURYX0ZMQUddOwogICAg ICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQpAQCAtMjAyLDExICsyMDIsMTEgQEAgbG9uZyBh cmNoX2RvX3N5c2N0bCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVJSQVlf U0laRShkYXRhKSk7CiAgICAgICAgICAgICAgICAgaWYgKCAhcmV0ICkKICAgICAgICAgICAgICAg ICB7Ci0gICAgICAgICAgICAgICAgICAgIHN5c2N0bC0+dS5wc3JfY2F0X29wLnUubDNfaW5mby5j Ym1fbGVuID0KKyAgICAgICAgICAgICAgICAgICAgc3lzY3RsLT51LnBzcl9jYXRfb3AudS5jYXRf aW5mby5jYm1fbGVuID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGF0YVtQU1JfSU5GT19JRFhfQ0JNX0xFTl07Ci0gICAgICAgICAgICAgICAgICAgIHN5 c2N0bC0+dS5wc3JfY2F0X29wLnUubDNfaW5mby5jb3NfbWF4ID0KKyAgICAgICAgICAgICAgICAg ICAgc3lzY3RsLT51LnBzcl9jYXRfb3AudS5jYXRfaW5mby5jb3NfbWF4ID0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtQU1JfSU5GT19JRFhfQ09T X01BWF07Ci0gICAgICAgICAgICAgICAgICAgIHN5c2N0bC0+dS5wc3JfY2F0X29wLnUubDNfaW5m by5mbGFncyA9CisgICAgICAgICAgICAgICAgICAgIHN5c2N0bC0+dS5wc3JfY2F0X29wLnUuY2F0 X2luZm8uZmxhZ3MgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYXRhW1BTUl9JTkZPX0lEWF9GTEFHXTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICB9CkBAIC0yMjUsOSArMjI1LDkgQEAgbG9uZyBhcmNoX2RvX3N5c2N0bCgKICAgICAgICAg ICAgIGlmICggcmV0ICkKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgc3lz Y3RsLT51LnBzcl9jYXRfb3AudS5sM19pbmZvLmNibV9sZW4gPSBkYXRhW1BTUl9JTkZPX0lEWF9D Qk1fTEVOXTsKLSAgICAgICAgICAgIHN5c2N0bC0+dS5wc3JfY2F0X29wLnUubDNfaW5mby5jb3Nf bWF4ID0gZGF0YVtQU1JfSU5GT19JRFhfQ09TX01BWF07Ci0gICAgICAgICAgICBzeXNjdGwtPnUu cHNyX2NhdF9vcC51LmwzX2luZm8uZmxhZ3MgPSBkYXRhW1BTUl9JTkZPX0lEWF9GTEFHXTsKKyAg ICAgICAgICAgIHN5c2N0bC0+dS5wc3JfY2F0X29wLnUuY2F0X2luZm8uY2JtX2xlbiA9IGRhdGFb UFNSX0lORk9fSURYX0NCTV9MRU5dOworICAgICAgICAgICAgc3lzY3RsLT51LnBzcl9jYXRfb3Au dS5jYXRfaW5mby5jb3NfbWF4ID0gZGF0YVtQU1JfSU5GT19JRFhfQ09TX01BWF07CisgICAgICAg ICAgICBzeXNjdGwtPnUucHNyX2NhdF9vcC51LmNhdF9pbmZvLmZsYWdzID0gZGF0YVtQU1JfSU5G T19JRFhfRkxBR107CiAKICAgICAgICAgICAgIGlmICggIXJldCAmJiBfX2NvcHlfZmllbGRfdG9f Z3Vlc3QodV9zeXNjdGwsIHN5c2N0bCwgdS5wc3JfY2F0X29wKSApCiAgICAgICAgICAgICAgICAg cmV0ID0gLUVGQVVMVDsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaCBi L3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaAppbmRleCAxZmU4ZmU0Li5hMzk5OGM2IDEwMDY0 NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgKKysrIGIveGVuL2luY2x1ZGUvcHVi bGljL3N5c2N0bC5oCkBAIC03NTQsNyArNzU0LDcgQEAgc3RydWN0IHhlbl9zeXNjdGxfcHNyX2Nh dF9vcCB7CiAgICAgICAgICAgICB1aW50MzJfdCBjb3NfbWF4OyAgIC8qIE9VVDogTWF4aW11bSBD T1MgKi8KICNkZWZpbmUgWEVOX1NZU0NUTF9QU1JfQ0FUX0wzX0NEUCAgICAgICAoMXUgPDwgMCkK ICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzOyAgICAgLyogT1VUOiBDQVQgZmxhZ3MgKi8KLSAg ICAgICAgfSBsM19pbmZvOworICAgICAgICB9IGNhdF9pbmZvOwogICAgIH0gdTsKIH07CiB0eXBl ZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX3Bzcl9jYXRfb3AgeGVuX3N5c2N0bF9wc3JfY2F0X29wX3Q7 Ci0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6 Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=