From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 035EB6E0E1 for ; Thu, 23 Jul 2020 15:00:08 +0000 (UTC) From: Bhanuprakash Modem Date: Fri, 24 Jul 2020 04:25:12 +0530 Message-Id: <20200723225512.13492-1-bhanuprakash.modem@intel.com> In-Reply-To: <20200721214801.20517-1-bhanuprakash.modem@intel.com> References: <20200721214801.20517-1-bhanuprakash.modem@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t] tests/kms_dither: New IGT to validate crtc Dithering List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: bhanuprakash.modem@intel.com, igt-dev@lists.freedesktop.org Cc: Petri Latvala List-ID: TWFueSBvZiB0aGUgZGlzcGxheSBkZXZpY2VzIGhhdmUgY29sb3IgZm9ybWF0IHN1cHBvcnQgbGVz cyB0aGFuCnRoZSBjb2xvciBmb3JtYXQgb2YgdGhlIGlucHV0IGRhdGEgKEV4OiA4LWJpdCBpbnB1 dCBkYXRhIGFuZCA2LWJpdApkaXNwbGF5IGNvbG9yIGRlcHRoKS4gVGhlbiB0aGUgaW5wdXQgZGF0 YSB3aWxsIGJlIGVpdGhlciB0cnVuY2F0ZWQKb3Igcm91bmRlZCwgYnV0IHRoaXMgYXBwcm9hY2gg dXN1YWxseSBjYXVzZXMgbG9zcyBvZiBkZXRhaWwgYW5kIGFsc28KcHJvZHVjZSBsYXJnZSBiYW5k ZWQgYXJlYXMgb2YgYSBzaW5nbGUgY29sb3IgdGhhdCBzaWduaWZpY2FudGx5CmRpZmZlcnMgZnJv bSB0aGUgb3JpZ2luYWwgaW1hZ2UuCgpEaXRoZXJpbmcgaXMgYSB0ZWNobmlxdWUgdXNlZCB0byBl bmhhbmNlIHRoZXNlIGNvbG9ycyBieSBjcmVhdGluZyB0aGUKaWxsdXNpb24gb2Ygc21vb3RobmVz cyBieSBhZGp1c3RpbmcgdGhlIG5lYXJieSBwaXhlbCBjb2xvci4KRm9yIEVnOiBDb252ZXJ0aW5n IDgtYml0IHRvIDYtYml0IGJ5IG1vZGlmeWluZyB0aGUgcGl4ZWwgaW5mb3JtYXRpb24uCgpEaXRo ZXJpbmcgc2hvdWxkIGJlIGVuYWJsZWQgd2hlbiBhIHBhbmVsIGNvbG9yIGRlcHRoIGlzIGxvd2Vy IHRoYW4gdGhlCmNvbG9yIGRlcHRoIG9mIHRoZSBmcmFtZWJ1ZmZlci4KCkV2ZW4gdGhvdWdoIGZl YXR1cmUgRGl0aGVyaW5nIGlzIHRoZXJlIHNpbmNlIGxlZ2FjeSwgdGhlcmUgaXMgbm8Kc3BlY2lm aWMgSUdUIGZvciB0aGlzLiBUaGlzIHBhdGNoIHdpbGwgY3JlYXRlIE5ldyBJR1QgZm9yIERpdGhl cmluZy4KQW5kIGJlbG93IGlzIHRoZSB0cnV0aCB0YWJsZSBmb3IgQ1JUQyBEaXRoZXJpbmcuCgp8 LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLXwKfCAgRnJhbWUgYnVmZmVy ICB8ICBQYW5lbCAgfCAgRGl0aGVyaW5nICB8CnwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwt LS0tLS0tLS0tLS0tfAp8ICAgICAgOCBCUEMgICAgIHwgIDYgQlBDICB8ICAgICBZZXMgICAgIHwK fC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18CnwgICAgICA4IEJQQyAg ICAgfCAgOCBCUEMgIHwgICAgIE5vICAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18 LS0tLS0tLS0tLS0tLXwKfCAgICAgIDggQlBDICAgICB8IDEwIEJQQyAgfCAgICAgTm8gICAgICB8 CnwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfAp8ICAgICAxMCBCUEMg ICAgIHwgIDYgQlBDICB8ICAgICBZZXMgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0t fC0tLS0tLS0tLS0tLS18CnwgICAgIDEwIEJQQyAgICAgfCAgOCBCUEMgIHwgICAgIFllcyAgICAg fAp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLXwKfCAgICAgMTAgQlBD ICAgICB8IDEwIEJQQyAgfCAgICAgTm8gICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0t LXwtLS0tLS0tLS0tLS0tfAp8ICAgICAxNiBCUEMgICAgIHwgIDYgQlBDICB8ICAgICBZZXMgICAg IHwKfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18CnwgICAgIDE2IEJQ QyAgICAgfCAgOCBCUEMgIHwgICAgIFllcyAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0t LS18LS0tLS0tLS0tLS0tLXwKfCAgICAgMTYgQlBDICAgICB8IDEwIEJQQyAgfCAgICAgWWVzICAg ICB8CnwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfAoKdjI6CiogRml4 IGNvbW1pdCBtZXNzYWdlIChLYXJ0aGlrKQoqIEFkZCBmaWxlIGF1dGhvciAoS2FydGhpaykKKiBE eW5hbWljIHN1YnRlc3RzIGZvciBwaXBlLW91dHB1dCBjb21iaW5hdGlvbnMgKEthcnRoaWspCiog VXBkYXRlIGRlcHJlY2F0ZWQgcGlwZSBuYW1lIChLYXJ0aGlrKQoqIFJlbW92ZSByZWR1bmRhbnQg ZmIgY3JlYXRpb24gbG9naWMgKEthcnRoaWspCgp2MzoKKiBVc2UgZm9yX2VhY2hfcGlwZV93aXRo X3ZhbGlkX291dHB1dCgpIHRvIHNpbXBsaWZ5IHRoZSBsb2dpYyAoQmhhbnUpCiogUmVtb3ZlIG1h Z2ljIG51bWJlcnMgdG8gY3JlYXRlIGZiIChLYXJ0aGlrKQoqIEZpeCB0eXBvcyAmIGNvbW1lbnRz IChTd2F0aSkKCkNjOiBTd2F0aSBTaGFybWEgPHN3YXRpMi5zaGFybWFAaW50ZWwuY29tPgpDYzog S2FydGhpayBCIFMgPGthcnRoaWsuYi5zQGludGVsLmNvbT4KQ2M6IFVtYSBTaGFua2FyIDx1bWEu c2hhbmthckBpbnRlbC5jb20+CkNjOiBQYW5rYWogQmhhcmFkaXlhIDxwYW5rYWoubGF4bWluYXJh eWFuLmJoYXJhZGl5YUBpbnRlbC5jb20+CkNjOiBQZXRyaSBMYXR2YWxhIDxwZXRyaS5sYXR2YWxh QGludGVsLmNvbT4KQ2M6IEFya2FkaXVzeiBIaWxlciA8YXJrYWRpdXN6LmhpbGVyQGludGVsLmNv bT4KU2lnbmVkLW9mZi1ieTogQmhhbnVwcmFrYXNoIE1vZGVtIDxiaGFudXByYWthc2gubW9kZW1A aW50ZWwuY29tPgotLS0KIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgfCAgIDEgKwogdGVzdHMva21z X2RpdGhlci5jICAgICB8IDI1NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogdGVzdHMvbWVzb24uYnVpbGQgICAgICB8ICAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDI1 OCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMva21zX2RpdGhlci5jCgpk aWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMKaW5kZXggMDY1M2MzZDMuLmU4MTYwMzdjIDEwMDY0NAotLS0gYS90ZXN0cy9NYWtlZmlsZS5z b3VyY2VzCisrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKQEAgLTQzLDYgKzQzLDcgQEAgVEVT VFNfcHJvZ3MgPSBcCiAJa21zX2N1cnNvcl9jcmMgXAogCWttc19jdXJzb3JfZWRnZV93YWxrIFwK IAlrbXNfY3Vyc29yX2xlZ2FjeSBcCisJa21zX2RpdGhlciBcCiAJa21zX2RwX2F1eF9kZXYgXAog CWttc19kcF9kc2MgXAogCWttc19kcF90aWxlZF9kaXNwbGF5IFwKZGlmZiAtLWdpdCBhL3Rlc3Rz L2ttc19kaXRoZXIuYyBiL3Rlc3RzL2ttc19kaXRoZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMC4uMjJkOTZkMzQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9rbXNfZGl0 aGVyLmMKQEAgLTAsMCArMSwyNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAyMCBJbnRlbCBD b3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAor ICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n IHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUK KyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBz aGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQs IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ TkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBP UiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVS IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI RVJXSVNFLAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdB UkUuCisgKgorICogQXV0aG9yczoKKyAqICAgICBCaGFudXByYWthc2ggTW9kZW0gPGJoYW51cHJh a2FzaC5tb2RlbUBpbnRlbC5jb20+CisgKgorICovCisKKyNpbmNsdWRlICJpZ3QuaCIKKyNpbmNs dWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHRlcm1pb3MuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4K KworSUdUX1RFU1RfREVTQ1JJUFRJT04oIlRlc3QgRGl0aGVyaW5nIGJsb2NrIHN0YXR1cyIpOwor CisvKiBDb25uZWN0b3IgQlBDICovCisjZGVmaW5lIElHVF9DT05ORUNUT1JfQlBDXzYJCTYKKyNk ZWZpbmUgSUdUX0NPTk5FQ1RPUl9CUENfOAkJOAorI2RlZmluZSBJR1RfQ09OTkVDVE9SX0JQQ18x MAkJMTAKKyNkZWZpbmUgSUdUX0NPTk5FQ1RPUl9CUENfMTIJCTEyCisKKy8qIEZyYW1lYnVmZmVy IEJQQyAqLworI2RlZmluZSBJR1RfRlJBTUVfQlVGRkVSX0JQQ184CQk4CisjZGVmaW5lIElHVF9G UkFNRV9CVUZGRVJfQlBDXzEwCQkxMAorI2RlZmluZSBJR1RfRlJBTUVfQlVGRkVSX0JQQ18xNgkJ MTYKKworLyogVGVzdCBmbGFncy4gKi8KK2VudW0geworCVRFU1RfTk9ORSA9IDEgPDwgMCwKKwlU RVNUX1NVU1BFTkQgPSAxIDw8IDEsCit9OworCisvKiBDb21tb24gdGVzdCBkYXRhLiAqLwordHlw ZWRlZiBzdHJ1Y3QgZGF0YSB7CisJaWd0X2Rpc3BsYXlfdCBkaXNwbGF5OworCWlndF9wbGFuZV90 ICpwcmltYXJ5OworCWlndF9vdXRwdXRfdCAqb3V0cHV0OworCWlndF9waXBlX3QgKnBpcGU7CisJ ZHJtTW9kZU1vZGVJbmZvICptb2RlOworCWVudW0gcGlwZSBwaXBlX2lkOworCWludCBkcm1fZmQ7 CisJaWd0X2ZiX3QgZmI7Cit9IGRhdGFfdDsKKworLyogUHJlcGFyZSB0ZXN0IGRhdGEuICovCitz dGF0aWMgdm9pZCBwcmVwYXJlX3Rlc3QoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1 dCwgZW51bSBwaXBlIHBpcGUpCit7CisJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5k aXNwbGF5OworCisJZGF0YS0+cGlwZV9pZCA9IHBpcGU7CisJZGF0YS0+cGlwZSA9ICZkYXRhLT5k aXNwbGF5LnBpcGVzW2RhdGEtPnBpcGVfaWRdOworCWlndF9hc3NlcnQoZGF0YS0+cGlwZSk7CisK KwlpZ3RfZGlzcGxheV9yZXNldChkaXNwbGF5KTsKKworCWRhdGEtPm91dHB1dCA9IG91dHB1dDsK KwlpZ3RfYXNzZXJ0KGRhdGEtPm91dHB1dCk7CisKKwlkYXRhLT5tb2RlID0gaWd0X291dHB1dF9n ZXRfbW9kZShkYXRhLT5vdXRwdXQpOworCWlndF9hc3NlcnQoZGF0YS0+bW9kZSk7CisKKwlkYXRh LT5wcmltYXJ5ID0KKwkJaWd0X3BpcGVfZ2V0X3BsYW5lX3R5cGUoZGF0YS0+cGlwZSwgRFJNX1BM QU5FX1RZUEVfUFJJTUFSWSk7CisKKwlpZ3Rfb3V0cHV0X3NldF9waXBlKGRhdGEtPm91dHB1dCwg ZGF0YS0+cGlwZV9pZCk7Cit9CisKKy8qIFJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgZGl0 aGVyaW5nIGZyb20gdGhlIGNydGMgZGVidWdmcy4gKi8KK3N0YXRpYyBib29sIGdldF9kaXRoZXJf c3RhdGUoZGF0YV90ICpkYXRhKQoreworCWNoYXIgYnVmWzI1Nl07CisJY2hhciBjcnRjX25hbWVb N107CisJY2hhciAqc3RhcnRfbG9jOworCWludCBmZCwgcmVzOworCXVuc2lnbmVkIGludCBzdGF0 dXM7CisKKwlzbnByaW50ZihjcnRjX25hbWUsIDcsICJjcnRjLSVkIiwgZGF0YS0+cGlwZV9pZCk7 CisJZmQgPSBpZ3RfZGVidWdmc19vcGVuKGRhdGEtPmRybV9mZCwgY3J0Y19uYW1lLCBPX1JET05M WSk7CisJaWd0X2Fzc2VydChmZCA+PSAwKTsKKworCXJlcyA9IGlndF9kZWJ1Z2ZzX3NpbXBsZV9y ZWFkKGZkLCAiZGl0aGVyIiwgYnVmLCBzaXplb2YoYnVmKSk7CisJaWd0X3JlcXVpcmUocmVzID4g MCk7CisJY2xvc2UoZmQpOworCisJaWd0X2Fzc2VydChzdGFydF9sb2MgPSBzdHJzdHIoYnVmLCAi RGl0aGVyOiAiKSk7CisJaWd0X2Fzc2VydF9lcShzc2NhbmYoc3RhcnRfbG9jLCAiRGl0aGVyOiAl dSIsICZzdGF0dXMpLCAxKTsKKworCXJldHVybiAhIXN0YXR1czsKK30KKworLyogUmV0dXJucyB0 aGUgbWF4aW11bSBicGMgZnJvbSB0aGUgY29ubmVjdG9yIGRlYnVnZnMuICovCitzdGF0aWMgdW5z aWduZWQgaW50IGdldF9vdXRwdXRfYnBjKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRw dXQpCit7CisJY2hhciBidWZbMjU2XTsKKwljaGFyICpzdGFydF9sb2M7CisJaW50IGZkLCByZXM7 CisJdW5zaWduZWQgaW50IG1heF9icGM7CisKKwlmZCA9IGlndF9kZWJ1Z2ZzX2Nvbm5lY3Rvcl9k aXIoZGF0YS0+ZHJtX2ZkLCBvdXRwdXQtPm5hbWUsIE9fUkRPTkxZKTsKKwlpZ3RfYXNzZXJ0KGZk ID49IDApOworCisJcmVzID0gaWd0X2RlYnVnZnNfc2ltcGxlX3JlYWQoZmQsICJvdXRwdXRfYnBj IiwgYnVmLCBzaXplb2YoYnVmKSk7CisKKwlpZ3RfcmVxdWlyZShyZXMgPiAwKTsKKworCWNsb3Nl KGZkKTsKKworCWlndF9hc3NlcnQoc3RhcnRfbG9jID0gc3Ryc3RyKGJ1ZiwgIk1heGltdW06ICIp KTsKKwlpZ3RfYXNzZXJ0X2VxKHNzY2FuZihzdGFydF9sb2MsICJNYXhpbXVtOiAldSIsICZtYXhf YnBjKSwgMSk7CisKKwlyZXR1cm4gbWF4X2JwYzsKK30KKworc3RhdGljIHZvaWQgdGVzdF9kaXRo ZXJpbmcoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSwKKwkJCSAgIGlndF9vdXRwdXRfdCAq b3V0cHV0LAorCQkJICAgaW50IGZiX2JwYywgaW50IGZiX2Zvcm1hdCwKKwkJCSAgIGludCBvdXRw dXRfYnBjLCB1aW50MzJfdCBmbGFncykKK3sKKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRh dGEtPmRpc3BsYXk7CisJYm9vbCBlbmFibGVkOworCisJaWd0X2luZm8oIkRpdGhlcmluZyB0ZXN0 IGV4ZWN1dGlvbiBvbiAlcyBQSVBFXyVzXG4iLAorCQkJb3V0cHV0LT5uYW1lLCBrbXN0ZXN0X3Bp cGVfbmFtZShwaXBlKSk7CisJcHJlcGFyZV90ZXN0KGRhdGEsIG91dHB1dCwgcGlwZSk7CisKKwlp Z3RfYXNzZXJ0KGlndF9jcmVhdGVfZmIoZGF0YS0+ZHJtX2ZkLCBkYXRhLT5tb2RlLT5oZGlzcGxh eSwKKwkJCQkgZGF0YS0+bW9kZS0+dmRpc3BsYXksIGZiX2Zvcm1hdCwKKwkJCQkgTE9DQUxfRFJN X0ZPUk1BVF9NT0RfTk9ORSwgJmRhdGEtPmZiKSk7CisJaWd0X3BsYW5lX3NldF9mYihkYXRhLT5w cmltYXJ5LCAmZGF0YS0+ZmIpOworCWlndF9wbGFuZV9zZXRfc2l6ZShkYXRhLT5wcmltYXJ5LCBk YXRhLT5tb2RlLT5oZGlzcGxheSwgZGF0YS0+bW9kZS0+dmRpc3BsYXkpOworCWlndF9vdXRwdXRf c2V0X3Byb3BfdmFsdWUoZGF0YS0+b3V0cHV0LCBJR1RfQ09OTkVDVE9SX01BWF9CUEMsIG91dHB1 dF9icGMpOworCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgZGlzcGxheS0+aXNfYXRvbWlj ID8gQ09NTUlUX0FUT01JQyA6IENPTU1JVF9MRUdBQ1kpOworCisJLyogQ2hlY2sgdGhlIHN0YXR1 cyBvZiBEaXRoZXJpbmcgYmxvY2sKKwkgKiBJZiBmYl9icGMgaXMgZ3JlYXRlciB0aGFuIG91dHB1 dF9icGMsIERpdGhlcmluZyBzaG91bGQgYmUgRW5hYmxlZAorCSAqIGVsc2UgRGlzYWJsZWQKKwkg Ki8KKwllbmFibGVkID0gZ2V0X2RpdGhlcl9zdGF0ZShkYXRhKTsKKwlpZiAoZmJfYnBjID4gb3V0 cHV0X2JwYykKKwkJaWd0X2Fzc2VydF9mKGVuYWJsZWQsICIoZmJfJWRicGMgPiBvdXRwdXRfJWRi cGMpOiBEaXRoZXIgc2hvdWxkIGJlIGVuYWJsZWRcbiIsCisJCQkJZmJfYnBjLCBvdXRwdXRfYnBj KTsKKwllbHNlCisJCWlndF9hc3NlcnRfZighZW5hYmxlZCwgIihmYl8lZGJwYyA8PSBvdXRwdXRf JWRicGMpOiBEaXRoZXIgc2hvdWxkIGJlIGRpc2FibGVkXG4iLAorCQkJCWZiX2JwYywgb3V0cHV0 X2JwYyk7CisKKwlpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1hcnksIE5VTEwpOworCWlndF9v dXRwdXRfc2V0X3BpcGUob3V0cHV0LCBQSVBFX05PTkUpOworCWlndF9kaXNwbGF5X2NvbW1pdDIo ZGlzcGxheSwgZGlzcGxheS0+aXNfYXRvbWljID8gQ09NTUlUX0FUT01JQyA6IENPTU1JVF9MRUdB Q1kpOworCisJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZkYXRhLT5mYik7CisKKwlyZXR1 cm47Cit9CisKKy8qIFJldHVybnMgdHJ1ZSBpZiBhbiBvdXRwdXQgc3VwcG9ydHMgbWF4IGJwYyBw cm9wZXJ0eS4gKi8KK3N0YXRpYyBib29sIGhhc19tYXhfYnBjKGlndF9vdXRwdXRfdCAqb3V0cHV0 KQoreworICAgICAgICByZXR1cm4gaWd0X291dHB1dF9oYXNfcHJvcChvdXRwdXQsIElHVF9DT05O RUNUT1JfTUFYX0JQQykgJiYKKyAgICAgICAgICAgICAgIGlndF9vdXRwdXRfZ2V0X3Byb3Aob3V0 cHV0LCBJR1RfQ09OTkVDVE9SX01BWF9CUEMpOworfQorCitzdGF0aWMgdm9pZAorcnVuX2RpdGhl cl90ZXN0KGRhdGFfdCAqZGF0YSwgaW50IGZiX2JwYywgaW50IGZiX2Zvcm1hdCwgaW50IG91dHB1 dF9icGMsCisJCXVpbnQzMl90IGZsYWdzKQoreworCWlndF9vdXRwdXRfdCAqb3V0cHV0OworCWln dF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKKwllbnVtIHBpcGUgcGlwZTsK Kwl1bnNpZ25lZCBpbnQgbWF4X2JwYzsKKwlpbnQgdmFsaWRfb3V0cHV0cyA9IDA7CisKKwlmb3Jf ZWFjaF9waXBlX3dpdGhfdmFsaWRfb3V0cHV0KGRpc3BsYXksIHBpcGUsIG91dHB1dCkgeworCQlp ZiAoIWhhc19tYXhfYnBjKG91dHB1dCkpCisJCQljb250aW51ZTsKKworCQltYXhfYnBjID0gZ2V0 X291dHB1dF9icGMoZGF0YSwgb3V0cHV0KTsKKwkJaWYobWF4X2JwYyA8IG91dHB1dF9icGMpCisJ CQljb250aW51ZTsKKworCQlpZ3RfZHluYW1pY19mKCIlcy1vbi1waXBlLSVzIiwgb3V0cHV0LT5u YW1lLCBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKKwkJCWlmIChpZ3RfcGlwZV9jb25uZWN0b3Jf dmFsaWQocGlwZSwgb3V0cHV0KSkKKwkJCQl0ZXN0X2RpdGhlcmluZyhkYXRhLCBwaXBlLCBvdXRw dXQsIGZiX2JwYywKKwkJCQkJICAgICAgIGZiX2Zvcm1hdCwgb3V0cHV0X2JwYywgZmxhZ3MpOwor CisJCXZhbGlkX291dHB1dHMrKzsKKwl9CisKKwlpZ3RfcmVxdWlyZV9mKHZhbGlkX291dHB1dHMs ICJObyBjb25uZWN0b3IgZm91bmQgd2l0aCBNQVggQlBDIGNvbm5lY3RvciBwcm9wZXJ0eS4gKG9y KSAiCisJCQkJICAgICAiTm8gY29ubmVjdG9yIGZvdW5kIHdpdGggTWF4IFBhbmVsIEJQQyAoJWQp ID49ICVkLlxuIiwKKwkJICAgICAgbWF4X2JwYywgb3V0cHV0X2JwYyk7Cit9CisKK2lndF9tYWlu Cit7CisJc3RydWN0IHsKKwkJaW50IGJwYzsKKwkJaW50IGZvcm1hdDsKKwl9IGZiX2Zvcm1hdHNb XSA9IHsKKwkJeyBJR1RfRlJBTUVfQlVGRkVSX0JQQ184LCBEUk1fRk9STUFUX1JHQjg4OCB9LAor CQl7IElHVF9GUkFNRV9CVUZGRVJfQlBDXzEwLCBEUk1fRk9STUFUX1hSR0IyMTAxMDEwIH0sCisJ CXsgSUdUX0ZSQU1FX0JVRkZFUl9CUENfMTYsIERSTV9GT1JNQVRfWFJHQjE2MTYxNjE2RiB9LAor CX07CisJaW50IG91dHB1dF9icGNbXSA9IHsKKwkJSUdUX0NPTk5FQ1RPUl9CUENfNiwKKwkJSUdU X0NPTk5FQ1RPUl9CUENfOCwKKwkJSUdUX0NPTk5FQ1RPUl9CUENfMTAKKwl9OworCWludCBpLCBq OworCWRhdGFfdCBkYXRhID0geyAwIH07CisKKwlpZ3RfZml4dHVyZSB7CisJCWRhdGEuZHJtX2Zk ID0gZHJtX29wZW5fZHJpdmVyX21hc3RlcihEUklWRVJfSU5URUwpOworCQlrbXN0ZXN0X3NldF92 dF9ncmFwaGljc19tb2RlKCk7CisKKwkJaWd0X2Rpc3BsYXlfcmVxdWlyZSgmZGF0YS5kaXNwbGF5 LCBkYXRhLmRybV9mZCk7CisJCWlndF9kaXNwbGF5X3JlcXVpcmVfb3V0cHV0KCZkYXRhLmRpc3Bs YXkpOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZiX2Zvcm1hdHMpOyBpKysp IHsKKwkJZm9yIChqID0gMDsgaiA8IEFSUkFZX1NJWkUob3V0cHV0X2JwYyk7IGorKykgeworCQkJ aWd0X2Rlc2NyaWJlX2YoIkZyYW1lYnVmZmVyIEJQQzolZCwgUGFuZWwgQlBDOiVkLCBFeHBlY3Rl ZCBEaXRoZXI6JXNcbiIsCisJCQkJICAgICAgIGZiX2Zvcm1hdHNbaV0uYnBjLCBvdXRwdXRfYnBj W2pdLAorCQkJCSAgICAgICAoZmJfZm9ybWF0c1tpXS5icGMgPiBvdXRwdXRfYnBjW2pdKSA/ICJF bmFibGUiOiAiRGlzYWJsZSIpOworCisJCQlpZ3Rfc3VidGVzdF93aXRoX2R5bmFtaWNfZigiRkIt JWRCUEMtVnMtUGFuZWwtJWRCUEMiLCBmYl9mb3JtYXRzW2ldLmJwYywgb3V0cHV0X2JwY1tqXSkK KwkJCQlydW5fZGl0aGVyX3Rlc3QoJmRhdGEsCisJCQkJCQlmYl9mb3JtYXRzW2ldLmJwYywKKwkJ CQkJCWZiX2Zvcm1hdHNbaV0uZm9ybWF0LAorCQkJCQkJb3V0cHV0X2JwY1tqXSwKKwkJCQkJCVRF U1RfTk9ORSk7CisJCX0KKwl9CisKKwlpZ3RfZml4dHVyZSB7CisJCWlndF9kaXNwbGF5X2Zpbmko JmRhdGEuZGlzcGxheSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90 ZXN0cy9tZXNvbi5idWlsZAppbmRleCBjZmU1MDhjNC4uMDVhOWNmYjggMTAwNjQ0Ci0tLSBhL3Rl c3RzL21lc29uLmJ1aWxkCisrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCkBAIC0yNyw2ICsyNyw3IEBA IHRlc3RfcHJvZ3MgPSBbCiAJJ2ttc19jdXJzb3JfY3JjJywKIAkna21zX2N1cnNvcl9lZGdlX3dh bGsnLAogCSdrbXNfY3Vyc29yX2xlZ2FjeScsCisJJ2ttc19kaXRoZXInLAogCSdrbXNfZHBfYXV4 X2RldicsCiAJJ2ttc19kcF9kc2MnLAogCSdrbXNfZHBfdGlsZWRfZGlzcGxheScsCi0tIAoyLjIw LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1k ZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=