From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v11 20/23] tools: L2 CAT: support get HW info for L2 CAT. Date: Wed, 3 May 2017 16:44:20 +0800 Message-ID: <1493801063-38513-21-git-send-email-yi.y.sun@linux.intel.com> References: <1493801063-38513-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d5q3P-0001Dv-IJ for xen-devel@lists.xenproject.org; Wed, 03 May 2017 08:54:35 +0000 In-Reply-To: <1493801063-38513-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+CkFja2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQp2MTE6CiAg ICAtIGFja2VkIGJ5IEphbiBmb3IgSHlwZXJ2aXNvciBzaWRlIGNoYW5nZXMuCnYxMDoKICAgIC0g Y2hhbmdlIG1hY3JvcyBuYW1lcyBhY2NvcmRpbmcgdG8gcHJldmlvdXMgY2hhbmdlcy4KICAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKdjk6CiAgICAtIGFkZCBzb21lIGNhc2VzIHRvIGhh bmRsZSByZXR1cm4gZXJyb3Igbm8uCiAgICAtIG1vdmUgeGxfY21kaW1wbC5jIGNvZGVzIGludG8g eGwveGxfcHNyLmMuCiAgICAtIGNoYW5nZSAnbDNfaW5mbycgdG8gJ2NhdF9pbmZvJyB0byBjb3Zl ciBib3RoIEwzIGFuZCBMMiBDQVQuCnY2OgogICAgLSBhZGp1c3QgJ3snIHBvc2l0aW9uIGZvciAn c3dpdGNoJy4KICAgICAgKHN1Z2dlc3RlZCBieSBXZWkgTGl1KQogICAgLSBtb2RpZnkgY29tbWl0 IG1lc3NhZ2UgdG8gcmVtb3ZlIGVycm9yIGxvZy4KICAgICAgKHN1Z2dlc3RlZCBieSBEYXJpbyBG YWdnaW9saSkKdjU6CiAgICAtIG1vZGlmeSBjb21taXQgbWVzc2FnZSB0byByZW1vdmUgZXJyb3Ig bG9nLgogICAgICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUgYW5kIEphbiBCZXVsaWNoKQogICAgLSBy ZXBsYWNlIHVubmVjZXNzYXJ5ICdyZXR1cm4nIHRvICdicmVhaycuCiAgICAgIChzdWdnZXN0ZWQg YnkgV2VpIExpdSkKICAgIC0gcmVzdG9yZSAnbGlieGxfcHNyX2NhdF9nZXRfbDNfaW5mbycgdG8g a2VlcCBpbnRlcmZhY2UgYmFja3dhcmQgY29tcGF0aWJsZQogICAgICBidXQgY2hhbmdlIGNvZGVz IGluIGl0IHRvIGNhbGwgbmV3IGZ1bmN0aW9uIHRvIGdldCBodyBpbmZvLgogICAgICAoc3VnZ2Vz dGVkIGJ5IFdlaSBMaXUpCiAgICAtIGFkZCAnTDJfQ0JNJyBpbnRvICdwc3JfY2JtX3R5cGUnIGJl Y2F1c2UgaXQgaXMgaW50ZXJmYWNlIGNoYW5nZSB3aGljaAogICAgICBzaG91bGQgYmUgaW4gc2Ft ZSBwYXRjaCB3aXRoIG5ldyAnTElCWExfSEFWRV8nIG1hY3JvLgogICAgICAoc3VnZ2VzdGVkIGJ5 IFdlaSBMaXUpCiAgICAtIGFkZGp1c3QgbG9ncyBzZW50ZW5jZSB0byBtYWtlIHVubmVjZXNzYXJ5 IGVycm9yIGxvZ3Mgbm90IHNob3cuCiAgICAgIChzdWdnZXN0ZWQgYnkgV2VpIExpdSBhbmQgSmFu IEJldWxpY2gpCnY0OgogICAgLSBjcmVhdGUgdGhpcyBwYXRjaCB0byBoZWxwIHJldmlld2VycyBi ZXR0ZXIgdW5kZXJzdGFuZCB0aGUgY29kZXMuCi0tLQogdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5j dHJsLmggfCAgNiArKy0tLQogdG9vbHMvbGlieGMveGNfcHNyLmMgICAgICAgICAgfCAzOSArKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogdG9vbHMvbGlieGwvbGlieGwuaCAgICAgICAg ICAgfCAgOSArKysrKysrKwogdG9vbHMvbGlieGwvbGlieGxfcHNyLmMgICAgICAgfCAyOCArKysr KysrKysrKysrKysrKystLS0tLQogdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsICAgfCAgMSAr CiB0b29scy94bC94bF9wc3IuYyAgICAgICAgICAgICB8IDUyICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9zeXNjdGwuYyAgICAgICAgIHwg MTIgKysrKystLS0tLQogeGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oICAgfCAgMiArLQogOCBm aWxlcyBjaGFuZ2VkLCAxMTEgaW5zZXJ0aW9ucygrKSwgMzggZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggYi90b29scy9saWJ4Yy9pbmNsdWRl L3hlbmN0cmwuaAppbmRleCAwMWY4ZGZlLi4zZmJjZDcwIDEwMDY0NAotLS0gYS90b29scy9saWJ4 Yy9pbmNsdWRlL3hlbmN0cmwuaAorKysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaApA QCAtMjQ2OCw5ICsyNDY4LDkgQEAgaW50IHhjX3Bzcl9jYXRfc2V0X2RvbWFpbl9kYXRhKHhjX2lu dGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKIGludCB4Y19wc3JfY2F0X2dldF9kb21haW5f ZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeGNfcHNyX2NhdF90eXBlIHR5cGUsIHVpbnQzMl90IHRhcmdldCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqZGF0YSk7Ci1pbnQgeGNfcHNy X2NhdF9nZXRfbDNfaW5mbyh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3Qgc29ja2V0LAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKmNvc19tYXgsIHVpbnQzMl90ICpjYm1f bGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqY2RwX2VuYWJsZWQpOworaW50 IHhjX3Bzcl9jYXRfZ2V0X2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IHNvY2tldCwg dW5zaWduZWQgaW50IGx2bCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpjb3Nf bWF4LCB1aW50MzJfdCAqY2JtX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmNk cF9lbmFibGVkKTsKIAogaW50IHhjX2dldF9jcHVfbGV2ZWxsaW5nX2NhcHMoeGNfaW50ZXJmYWNl ICp4Y2gsIHVpbnQzMl90ICpjYXBzKTsKIGludCB4Y19nZXRfY3B1X2ZlYXR1cmVzZXQoeGNfaW50 ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGluZGV4LApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNf cHNyLmMgYi90b29scy9saWJ4Yy94Y19wc3IuYwppbmRleCA0M2IzMjg2Li44NGEwOGM0IDEwMDY0 NAotLS0gYS90b29scy9saWJ4Yy94Y19wc3IuYworKysgYi90b29scy9saWJ4Yy94Y19wc3IuYwpA QCAtMzE3LDI0ICszMTcsNDEgQEAgaW50IHhjX3Bzcl9jYXRfZ2V0X2RvbWFpbl9kYXRhKHhjX2lu dGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKICAgICByZXR1cm4gcmM7CiB9CiAKLWludCB4 Y19wc3JfY2F0X2dldF9sM19pbmZvKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBzb2NrZXQs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqY29zX21heCwgdWludDMyX3Qg KmNibV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpjZHBfZW5hYmxlZCkK K2ludCB4Y19wc3JfY2F0X2dldF9pbmZvKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBzb2Nr ZXQsIHVuc2lnbmVkIGludCBsdmwsCisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAq Y29zX21heCwgdWludDMyX3QgKmNibV9sZW4sIGJvb2wgKmNkcF9lbmFibGVkKQogewotICAgIGlu dCByYzsKKyAgICBpbnQgcmMgPSAtMTsKICAgICBERUNMQVJFX1NZU0NUTDsKIAogICAgIHN5c2N0 bC5jbWQgPSBYRU5fU1lTQ1RMX3Bzcl9jYXRfb3A7Ci0gICAgc3lzY3RsLnUucHNyX2NhdF9vcC5j bWQgPSBYRU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wzX2luZm87CiAgICAgc3lzY3RsLnUucHNyX2Nh dF9vcC50YXJnZXQgPSBzb2NrZXQ7CiAKLSAgICByYyA9IHhjX3N5c2N0bCh4Y2gsICZzeXNjdGwp OwotICAgIGlmICggIXJjICkKKyAgICBzd2l0Y2ggKCBsdmwgKQogICAgIHsKLSAgICAgICAgKmNv c19tYXggPSBzeXNjdGwudS5wc3JfY2F0X29wLnUubDNfaW5mby5jb3NfbWF4OwotICAgICAgICAq Y2JtX2xlbiA9IHN5c2N0bC51LnBzcl9jYXRfb3AudS5sM19pbmZvLmNibV9sZW47Ci0gICAgICAg ICpjZHBfZW5hYmxlZCA9IHN5c2N0bC51LnBzcl9jYXRfb3AudS5sM19pbmZvLmZsYWdzICYKLSAg ICAgICAgICAgICAgICAgICAgICAgWEVOX1NZU0NUTF9QU1JfQ0FUX0wzX0NEUDsKKyAgICBjYXNl IDI6CisgICAgICAgIHN5c2N0bC51LnBzcl9jYXRfb3AuY21kID0gWEVOX1NZU0NUTF9QU1JfQ0FU X2dldF9sMl9pbmZvOworICAgICAgICByYyA9IHhjX3N5c2N0bCh4Y2gsICZzeXNjdGwpOworICAg ICAgICBpZiAoICFyYyApCisgICAgICAgIHsKKyAgICAgICAgICAgICpjb3NfbWF4ID0gc3lzY3Rs LnUucHNyX2NhdF9vcC51LmNhdF9pbmZvLmNvc19tYXg7CisgICAgICAgICAgICAqY2JtX2xlbiA9 IHN5c2N0bC51LnBzcl9jYXRfb3AudS5jYXRfaW5mby5jYm1fbGVuOworICAgICAgICAgICAgKmNk cF9lbmFibGVkID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAz OgorICAgICAgICBzeXNjdGwudS5wc3JfY2F0X29wLmNtZCA9IFhFTl9TWVNDVExfUFNSX0NBVF9n ZXRfbDNfaW5mbzsKKyAgICAgICAgcmMgPSB4Y19zeXNjdGwoeGNoLCAmc3lzY3RsKTsKKyAgICAg ICAgaWYgKCAhcmMgKQorICAgICAgICB7CisgICAgICAgICAgICAqY29zX21heCA9IHN5c2N0bC51 LnBzcl9jYXRfb3AudS5jYXRfaW5mby5jb3NfbWF4OworICAgICAgICAgICAgKmNibV9sZW4gPSBz eXNjdGwudS5wc3JfY2F0X29wLnUuY2F0X2luZm8uY2JtX2xlbjsKKyAgICAgICAgICAgICpjZHBf ZW5hYmxlZCA9IHN5c2N0bC51LnBzcl9jYXRfb3AudS5jYXRfaW5mby5mbGFncyAmCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBYRU5fU1lTQ1RMX1BTUl9DQVRfTDNfQ0RQOworICAgICAgICB9 CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGVycm5vID0gRU9QTk9UU1VQ UDsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgcmV0dXJuIHJjOwpkaWZmIC0tZ2l0IGEv dG9vbHMvbGlieGwvbGlieGwuaCBiL3Rvb2xzL2xpYnhsL2xpYnhsLmgKaW5kZXggYTQwMjIzNi4u OTJkYTJhZSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGwuaAorKysgYi90b29scy9saWJ4 bC9saWJ4bC5oCkBAIC05MTYsNiArOTE2LDEzIEBAIHZvaWQgbGlieGxfbWFjX2NvcHkobGlieGxf Y3R4ICpjdHgsIGxpYnhsX21hYyAqZHN0LCBjb25zdCBsaWJ4bF9tYWMgKnNyYyk7CiAgKiBJZiB0 aGlzIGlzIGRlZmluZWQsIHRoZSBDb2RlIGFuZCBEYXRhIFByaW9yaXRpemF0aW9uIGZlYXR1cmUg aXMgc3VwcG9ydGVkLgogICovCiAjZGVmaW5lIExJQlhMX0hBVkVfUFNSX0NEUCAxCisKKy8qCisg KiBMSUJYTF9IQVZFX1BTUl9MMl9DQVQKKyAqCisgKiBJZiB0aGlzIGlzIGRlZmluZWQsIHRoZSBM MiBDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgZmVhdHVyZSBpcyBzdXBwb3J0ZWQuCisgKi8K KyNkZWZpbmUgTElCWExfSEFWRV9QU1JfTDJfQ0FUIDEKICNlbmRpZgogCiAvKgpAQCAtMjE5NCw2 ICsyMjAxLDggQEAgaW50IGxpYnhsX3Bzcl9jYXRfZ2V0X2NibShsaWJ4bF9jdHggKmN0eCwgdWlu dDMyX3QgZG9taWQsCiAgKiBPbiBzdWNjZXNzLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBhcnJh eSBvZiBlbGVtZW50cyBpbiAnaW5mbycsCiAgKiBhbmQgdGhlIGxlbmd0aCBpbiAnbnInLgogICov CitpbnQgbGlieGxfcHNyX2NhdF9nZXRfaW5mbyhsaWJ4bF9jdHggKmN0eCwgbGlieGxfcHNyX2Nh dF9pbmZvICoqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqbnIsIHVuc2ln bmVkIGludCBsdmwpOwogaW50IGxpYnhsX3Bzcl9jYXRfZ2V0X2wzX2luZm8obGlieGxfY3R4ICpj dHgsIGxpYnhsX3Bzcl9jYXRfaW5mbyAqKmluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgKm5yKTsKIHZvaWQgbGlieGxfcHNyX2NhdF9pbmZvX2xpc3RfZnJlZShsaWJ4bF9w c3JfY2F0X2luZm8gKmxpc3QsIGludCBucik7CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4 bF9wc3IuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3Bzci5jCmluZGV4IGVjNWM3OWQuLmY1NWJhMWUg MTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX3Bzci5jCisrKyBiL3Rvb2xzL2xpYnhsL2xp YnhsX3Bzci5jCkBAIC05MSw2ICs5MSwxNSBAQCBzdGF0aWMgdm9pZCBsaWJ4bF9fcHNyX2NhdF9s b2dfZXJyX21zZyhsaWJ4bF9fZ2MgKmdjLCBpbnQgZXJyKQogICAgIGNhc2UgRU5YSU86CiAgICAg ICAgIG1zZyA9ICJVbmFibGUgdG8gc2V0IGNvZGUgb3IgZGF0YSBDQk0gd2hlbiBDRFAgaXMgZGlz YWJsZWQiOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEVJTlZBTDoKKyAgICAgICAgbXNnID0g IkludmFsaWQgaW5wdXQgb3Igc29tZSBpbnRlcm5hbCB2YWx1ZXMgYXJlIG5vdCBleHBlY3RlZCI7 CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRVJBTkdFOgorICAgICAgICBtc2cgPSAiU29ja2V0 IG51bWJlciBpcyB3cm9uZyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRU5PU1BDOgorICAg ICAgICBtc2cgPSAiVmFsdWUgYXJyYXkgZXhjZWVkcyB0aGUgcmFuZ2UiOworICAgICAgICBicmVh azsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIGxpYnhsX19wc3JfbG9nX2Vycl9tc2coZ2MsIGVy cik7CkBAIC0zNTIsOCArMzYxLDggQEAgaW50IGxpYnhsX3Bzcl9jYXRfZ2V0X2NibShsaWJ4bF9j dHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAgICAgcmV0dXJuIHJjOwogfQogCi1pbnQgbGlieGxf cHNyX2NhdF9nZXRfbDNfaW5mbyhsaWJ4bF9jdHggKmN0eCwgbGlieGxfcHNyX2NhdF9pbmZvICoq aW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqbnIpCitpbnQgbGlieGxf cHNyX2NhdF9nZXRfaW5mbyhsaWJ4bF9jdHggKmN0eCwgbGlieGxfcHNyX2NhdF9pbmZvICoqaW5m bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqbnIsIHVuc2lnbmVkIGludCBsdmwp CiB7CiAgICAgR0NfSU5JVChjdHgpOwogICAgIGludCByYzsKQEAgLTM4MCw5ICszODksOCBAQCBp bnQgbGlieGxfcHNyX2NhdF9nZXRfbDNfaW5mbyhsaWJ4bF9jdHggKmN0eCwgbGlieGxfcHNyX2Nh dF9pbmZvICoqaW5mbywKIAogICAgIGxpYnhsX2Zvcl9lYWNoX3NldF9iaXQoc29ja2V0aWQsIHNv Y2tldG1hcCkgewogICAgICAgICBwdHJbaV0uaWQgPSBzb2NrZXRpZDsKLSAgICAgICAgaWYgKHhj X3Bzcl9jYXRfZ2V0X2wzX2luZm8oY3R4LT54Y2gsIHNvY2tldGlkLCAmcHRyW2ldLmNvc19tYXgs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwdHJbaV0uY2JtX2xlbiwgJnB0 cltpXS5jZHBfZW5hYmxlZCkpIHsKLSAgICAgICAgICAgIGxpYnhsX19wc3JfY2F0X2xvZ19lcnJf bXNnKGdjLCBlcnJubyk7CisgICAgICAgIGlmICh4Y19wc3JfY2F0X2dldF9pbmZvKGN0eC0+eGNo LCBzb2NrZXRpZCwgbHZsLCAmcHRyW2ldLmNvc19tYXgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZwdHJbaV0uY2JtX2xlbiwgJnB0cltpXS5jZHBfZW5hYmxlZCkpIHsKICAgICAg ICAgICAgIHJjID0gRVJST1JfRkFJTDsKICAgICAgICAgICAgIGZyZWUocHRyKTsKICAgICAgICAg ICAgIGdvdG8gb3V0OwpAQCAtMzk4LDYgKzQwNiwxNiBAQCBvdXQ6CiAgICAgcmV0dXJuIHJjOwog fQogCitpbnQgbGlieGxfcHNyX2NhdF9nZXRfbDNfaW5mbyhsaWJ4bF9jdHggKmN0eCwgbGlieGxf cHNyX2NhdF9pbmZvICoqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAq bnIpCit7CisgICAgaW50IHJjOworCisgICAgcmMgPSBsaWJ4bF9wc3JfY2F0X2dldF9pbmZvKGN0 eCwgaW5mbywgbnIsIDMpOworCisgICAgcmV0dXJuIHJjOworfQorCiB2b2lkIGxpYnhsX3Bzcl9j YXRfaW5mb19saXN0X2ZyZWUobGlieGxfcHNyX2NhdF9pbmZvICpsaXN0LCBpbnQgbnIpCiB7CiAg ICAgaW50IGk7CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwgYi90b29s cy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKaW5kZXggZDk3MDI4NC4uMjc3NmI2YyAxMDA2NDQKLS0t IGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5 cGVzLmlkbApAQCAtOTYwLDYgKzk2MCw3IEBAIGxpYnhsX3Bzcl9jYm1fdHlwZSA9IEVudW1lcmF0 aW9uKCJwc3JfY2JtX3R5cGUiLCBbCiAgICAgKDEsICJMM19DQk0iKSwKICAgICAoMiwgIkwzX0NC TV9DT0RFIiksCiAgICAgKDMsICJMM19DQk1fREFUQSIpLAorICAgICg0LCAiTDJfQ0JNIiksCiAg ICAgXSkKIAogbGlieGxfcHNyX2NhdF9pbmZvID0gU3RydWN0KCJwc3JfY2F0X2luZm8iLCBbCmRp ZmYgLS1naXQgYS90b29scy94bC94bF9wc3IuYyBiL3Rvb2xzL3hsL3hsX3Bzci5jCmluZGV4IGMw NjFiMjkuLjI3MWI4OGYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hsX3Bzci5jCisrKyBiL3Rvb2xz L3hsL3hsX3Bzci5jCkBAIC0yOTQsMjEgKzI5NCwxOSBAQCBpbnQgbWFpbl9wc3JfY210X3Nob3co aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogfQogI2VuZGlmCiAKLSNpZmRlZiBMSUJYTF9IQVZFX1BT Ul9DQVQKLXN0YXRpYyBpbnQgcHNyX2NhdF9od2luZm8odm9pZCkKKyNpZiBkZWZpbmVkKExJQlhM X0hBVkVfUFNSX0NBVCkgfHwgZGVmaW5lZChMSUJYTF9IQVZFX1BTUl9MMl9DQVQpCitzdGF0aWMg aW50IHBzcl9sM19jYXRfaHdpbmZvKHZvaWQpCiB7Ci0gICAgaW50IHJjOwotICAgIGludCBpLCBu cjsKKyAgICBpbnQgcmMsIG5yOworICAgIHVuc2lnbmVkIGludCBpOwogICAgIHVpbnQzMl90IGwz X2NhY2hlX3NpemU7CiAgICAgbGlieGxfcHNyX2NhdF9pbmZvICppbmZvOwogCi0gICAgcHJpbnRm KCJDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgKENBVCk6XG4iKTsKLQotICAgIHJjID0gbGli eGxfcHNyX2NhdF9nZXRfbDNfaW5mbyhjdHgsICZpbmZvLCAmbnIpOwotICAgIGlmIChyYykgewot ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgY2F0IGluZm9cbiIpOworICAg IHJjID0gbGlieGxfcHNyX2NhdF9nZXRfaW5mbyhjdHgsICZpbmZvLCAmbnIsIDMpOworICAgIGlm IChyYykKICAgICAgICAgcmV0dXJuIHJjOwotICAgIH0KKworICAgIHByaW50ZigiQ2FjaGUgQWxs b2NhdGlvbiBUZWNobm9sb2d5IChDQVQpOlxuIik7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgbnI7 IGkrKykgewogICAgICAgICByYyA9IGxpYnhsX3Bzcl9jbXRfZ2V0X2wzX2NhY2hlX3NpemUoY3R4 LCBpbmZvW2ldLmlkLCAmbDNfY2FjaGVfc2l6ZSk7CkBAIC00MTcsNyArNDE1LDcgQEAgc3RhdGlj IGludCBwc3JfY2F0X3Nob3codWludDMyX3QgZG9taWQpCiAgICAgaW50IHJjOwogICAgIGxpYnhs X3Bzcl9jYXRfaW5mbyAqaW5mbzsKIAotICAgIHJjID0gbGlieGxfcHNyX2NhdF9nZXRfbDNfaW5m byhjdHgsICZpbmZvLCAmbnIpOworICAgIHJjID0gbGlieGxfcHNyX2NhdF9nZXRfaW5mbyhjdHgs ICZpbmZvLCAmbnIsIDMpOwogICAgIGlmIChyYykgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwg IkZhaWxlZCB0byBnZXQgY2F0IGluZm9cbiIpOwogICAgICAgICByZXR1cm4gcmM7CkBAIC00MzQs NiArNDMyLDMyIEBAIG91dDoKICAgICByZXR1cm4gcmM7CiB9CiAKK3N0YXRpYyBpbnQgcHNyX2wy X2NhdF9od2luZm8odm9pZCkKK3sKKyAgICBpbnQgcmM7CisgICAgdW5zaWduZWQgaW50IGk7Cisg ICAgaW50IG5yOworICAgIGxpYnhsX3Bzcl9jYXRfaW5mbyAqaW5mbzsKKworICAgIHJjID0gbGli eGxfcHNyX2NhdF9nZXRfaW5mbyhjdHgsICZpbmZvLCAmbnIsIDIpOworICAgIGlmIChyYykKKyAg ICAgICAgcmV0dXJuIHJjOworCisgICAgcHJpbnRmKCJDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xv Z3kgKENBVCk6IEwyXG4iKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBucjsgaSsrKSB7CisgICAg ICAgIC8qIFRoZXJlIGlzIG5vIENNVCBvbiBMMiBjYWNoZSBzbyBmYXIuICovCisgICAgICAgIHBy aW50ZigiJS0xNnM6ICV1XG4iLCAiU29ja2V0IElEIiwgaW5mb1tpXS5pZCk7CisgICAgICAgIHBy aW50ZigiJS0xNnM6ICV1XG4iLCAiTWF4aW11bSBDT1MiLCBpbmZvW2ldLmNvc19tYXgpOworICAg ICAgICBwcmludGYoIiUtMTZzOiAldVxuIiwgIkNCTSBsZW5ndGgiLCBpbmZvW2ldLmNibV9sZW4p OworICAgICAgICBwcmludGYoIiUtMTZzOiAlI2xseFxuIiwgIkRlZmF1bHQgQ0JNIiwKKyAgICAg ICAgICAgICAgICgxdWxsIDw8IGluZm9baV0uY2JtX2xlbikgLSAxKTsKKyAgICB9CisKKyAgICBs aWJ4bF9wc3JfY2F0X2luZm9fbGlzdF9mcmVlKGluZm8sIG5yKTsKKyAgICByZXR1cm4gcmM7Cit9 CisKIGludCBtYWluX3Bzcl9jYXRfY2JtX3NldChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAg ICAgdWludDMyX3QgZG9taWQ7CkBAIC01NTEsNyArNTc1LDExIEBAIGludCBtYWluX3Bzcl9od2lu Zm8oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICByZXQgPSBwc3JfY210X2h3aW5mbygp OwogCiAgICAgaWYgKCFyZXQgJiYgKGFsbCB8fCBjYXQpKQotICAgICAgICByZXQgPSBwc3JfY2F0 X2h3aW5mbygpOworICAgICAgICByZXQgPSBwc3JfbDNfY2F0X2h3aW5mbygpOworCisgICAgLyog TDIgQ0FUIGlzIGluZGVwZW5kZW50IG9mIENNVCBhbmQgTDMgQ0FUICovCisgICAgaWYgKGFsbCB8 fCBjYXQpCisgICAgICAgIHJldCA9IHBzcl9sMl9jYXRfaHdpbmZvKCk7CiAKICAgICByZXR1cm4g cmV0OwogfQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3N5c2N0bC5jIGIveGVuL2FyY2gveDg2 L3N5c2N0bC5jCmluZGV4IDVlOTE3NTUuLjE0YzEyYjcgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9zeXNjdGwuYworKysgYi94ZW4vYXJjaC94ODYvc3lzY3RsLmMKQEAgLTE4MywxMSArMTgzLDEx IEBAIGxvbmcgYXJjaF9kb19zeXNjdGwoCiAgICAgICAgICAgICBpZiAoIHJldCApCiAgICAgICAg ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIHN5c2N0bC0+dS5wc3JfY2F0X29wLnUubDNf aW5mby5jb3NfbWF4ID0KKyAgICAgICAgICAgIHN5c2N0bC0+dS5wc3JfY2F0X29wLnUuY2F0X2lu Zm8uY29zX21heCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFb UFNSX0lORk9fSURYX0NPU19NQVhdOwotICAgICAgICAgICAgc3lzY3RsLT51LnBzcl9jYXRfb3Au dS5sM19pbmZvLmNibV9sZW4gPQorICAgICAgICAgICAgc3lzY3RsLT51LnBzcl9jYXRfb3AudS5j YXRfaW5mby5jYm1fbGVuID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGF0YVtQU1JfSU5GT19JRFhfQ0FUX0NCTV9MRU5dOwotICAgICAgICAgICAgc3lzY3RsLT51LnBz cl9jYXRfb3AudS5sM19pbmZvLmZsYWdzID0KKyAgICAgICAgICAgIHN5c2N0bC0+dS5wc3JfY2F0 X29wLnUuY2F0X2luZm8uZmxhZ3MgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYXRhW1BTUl9JTkZPX0lEWF9DQVRfRkxBR107CiAKICAgICAgICAgICAgIGlmICggIXJl dCAmJiBfX2NvcHlfZmllbGRfdG9fZ3Vlc3QodV9zeXNjdGwsIHN5c2N0bCwgdS5wc3JfY2F0X29w KSApCkBAIC0yMDIsMTEgKzIwMiwxMSBAQCBsb25nIGFyY2hfZG9fc3lzY3RsKAogICAgICAgICAg ICAgaWYgKCByZXQgKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBzeXNj dGwtPnUucHNyX2NhdF9vcC51LmwzX2luZm8uY29zX21heCA9CisgICAgICAgICAgICBzeXNjdGwt PnUucHNyX2NhdF9vcC51LmNhdF9pbmZvLmNvc19tYXggPQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhW1BTUl9JTkZPX0lEWF9DT1NfTUFYXTsKLSAgICAgICAgICAg IHN5c2N0bC0+dS5wc3JfY2F0X29wLnUubDNfaW5mby5jYm1fbGVuID0KKyAgICAgICAgICAgIHN5 c2N0bC0+dS5wc3JfY2F0X29wLnUuY2F0X2luZm8uY2JtX2xlbiA9CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGFbUFNSX0lORk9fSURYX0NBVF9DQk1fTEVOXTsKLSAg ICAgICAgICAgIHN5c2N0bC0+dS5wc3JfY2F0X29wLnUubDNfaW5mby5mbGFncyA9CisgICAgICAg ICAgICBzeXNjdGwtPnUucHNyX2NhdF9vcC51LmNhdF9pbmZvLmZsYWdzID0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtQU1JfSU5GT19JRFhfQ0FUX0ZMQUddOwog CiAgICAgICAgICAgICBpZiAoICFyZXQgJiYgX19jb3B5X2ZpZWxkX3RvX2d1ZXN0KHVfc3lzY3Rs LCBzeXNjdGwsIHUucHNyX2NhdF9vcCkgKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGlj L3N5c2N0bC5oIGIveGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oCmluZGV4IDRjNzZkM2EuLjll NTFhZjYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaAorKysgYi94ZW4v aW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgKQEAgLTc1NCw3ICs3NTQsNyBAQCBzdHJ1Y3QgeGVuX3N5 c2N0bF9wc3JfY2F0X29wIHsKICAgICAgICAgICAgIHVpbnQzMl90IGNvc19tYXg7ICAgLyogT1VU OiBNYXhpbXVtIENPUyAqLwogI2RlZmluZSBYRU5fU1lTQ1RMX1BTUl9DQVRfTDNfQ0RQICAgICAg ICgxdSA8PCAwKQogICAgICAgICAgICAgdWludDMyX3QgZmxhZ3M7ICAgICAvKiBPVVQ6IENBVCBm bGFncyAqLwotICAgICAgICB9IGwzX2luZm87CisgICAgICAgIH0gY2F0X2luZm87CiAgICAgfSB1 OwogfTsKIHR5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxfcHNyX2NhdF9vcCB4ZW5fc3lzY3RsX3Bz cl9jYXRfb3BfdDsKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==