From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7FB6E6E083 for ; Sun, 26 Jul 2020 04:34:40 +0000 (UTC) From: Bhanuprakash Modem Date: Sun, 26 Jul 2020 17:59:44 +0530 Message-Id: <20200726122944.9864-1-bhanuprakash.modem@intel.com> In-Reply-To: <20200723225512.13492-1-bhanuprakash.modem@intel.com> References: <20200723225512.13492-1-bhanuprakash.modem@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH] 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 IChTd2F0aSkKCnY0OgoqIFJlbW92ZSBleHBsaWNpdCBpZ3RfcmVxdWlyZSBmb3IgYSB2YWxpZCBv dXRwdXQgZm91bmQsCiAgaWd0X3N1YnRlc3Rfd2l0aF9keW5hbWljIHdpbGwgaGFuZGxlIHRoZSBT S0lQIChQZXRyaSkKKiBMaW1pdCB0aGUgZXhlY3V0aW9uIHRvIGEgc2luZ2xlIHBpcGUgKFVtYSkK CkNjOiBTd2F0aSBTaGFybWEgPHN3YXRpMi5zaGFybWFAaW50ZWwuY29tPgpDYzogS2FydGhpayBC IFMgPGthcnRoaWsuYi5zQGludGVsLmNvbT4KQ2M6IFVtYSBTaGFua2FyIDx1bWEuc2hhbmthckBp bnRlbC5jb20+CkNjOiBQYW5rYWogQmhhcmFkaXlhIDxwYW5rYWoubGF4bWluYXJheWFuLmJoYXJh ZGl5YUBpbnRlbC5jb20+CkNjOiBQZXRyaSBMYXR2YWxhIDxwZXRyaS5sYXR2YWxhQGludGVsLmNv bT4KQ2M6IEFya2FkaXVzeiBIaWxlciA8YXJrYWRpdXN6LmhpbGVyQGludGVsLmNvbT4KU2lnbmVk LW9mZi1ieTogQmhhbnVwcmFrYXNoIE1vZGVtIDxiaGFudXByYWthc2gubW9kZW1AaW50ZWwuY29t PgotLS0KIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgfCAgIDEgKwogdGVzdHMva21zX2RpdGhlci5j ICAgICB8IDI0OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdGVz dHMvbWVzb24uYnVpbGQgICAgICB8ICAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDI1MSBpbnNlcnRp b25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMva21zX2RpdGhlci5jCgpkaWZmIC0tZ2l0 IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKaW5kZXgg OTNkNzc2OGMuLmYyMmIzZjMzIDEwMDY0NAotLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCisr KyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKQEAgLTQ0LDYgKzQ0LDcgQEAgVEVTVFNfcHJvZ3Mg PSBcCiAJa21zX2N1cnNvcl9jcmMgXAogCWttc19jdXJzb3JfZWRnZV93YWxrIFwKIAlrbXNfY3Vy c29yX2xlZ2FjeSBcCisJa21zX2RpdGhlciBcCiAJa21zX2RwX2F1eF9kZXYgXAogCWttc19kcF9k c2MgXAogCWttc19kcF90aWxlZF9kaXNwbGF5IFwKZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19kaXRo ZXIuYyBiL3Rlc3RzL2ttc19kaXRoZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMC4uZGQ2MmYyMWMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9rbXNfZGl0aGVyLmMKQEAg LTAsMCArMSwyNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAyMCBJbnRlbCBDb3Jwb3JhdGlv bgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVh bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg bGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2Yg dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBp bmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICog U29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAor ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g IElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1Io UykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElU WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAor ICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS RSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgor ICogQXV0aG9yczoKKyAqICAgICBCaGFudXByYWthc2ggTW9kZW0gPGJoYW51cHJha2FzaC5tb2Rl bUBpbnRlbC5jb20+CisgKgorICovCisKKyNpbmNsdWRlICJpZ3QuaCIKKyNpbmNsdWRlIDxmY250 bC5oPgorI2luY2x1ZGUgPHRlcm1pb3MuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworSUdUX1RF U1RfREVTQ1JJUFRJT04oIlRlc3QgRGl0aGVyaW5nIGJsb2NrIHN0YXR1cyIpOworCisvKiBDb25u ZWN0b3IgQlBDICovCisjZGVmaW5lIElHVF9DT05ORUNUT1JfQlBDXzYJCTYKKyNkZWZpbmUgSUdU X0NPTk5FQ1RPUl9CUENfOAkJOAorI2RlZmluZSBJR1RfQ09OTkVDVE9SX0JQQ18xMAkJMTAKKyNk ZWZpbmUgSUdUX0NPTk5FQ1RPUl9CUENfMTIJCTEyCisKKy8qIEZyYW1lYnVmZmVyIEJQQyAqLwor I2RlZmluZSBJR1RfRlJBTUVfQlVGRkVSX0JQQ184CQk4CisjZGVmaW5lIElHVF9GUkFNRV9CVUZG RVJfQlBDXzEwCQkxMAorI2RlZmluZSBJR1RfRlJBTUVfQlVGRkVSX0JQQ18xNgkJMTYKKworLyog VGVzdCBmbGFncy4gKi8KK2VudW0geworCVRFU1RfTk9ORSA9IDEgPDwgMCwKKwlURVNUX1NVU1BF TkQgPSAxIDw8IDEsCit9OworCisvKiBDb21tb24gdGVzdCBkYXRhLiAqLwordHlwZWRlZiBzdHJ1 Y3QgZGF0YSB7CisJaWd0X2Rpc3BsYXlfdCBkaXNwbGF5OworCWlndF9wbGFuZV90ICpwcmltYXJ5 OworCWlndF9vdXRwdXRfdCAqb3V0cHV0OworCWlndF9waXBlX3QgKnBpcGU7CisJZHJtTW9kZU1v ZGVJbmZvICptb2RlOworCWVudW0gcGlwZSBwaXBlX2lkOworCWludCBkcm1fZmQ7CisJaWd0X2Zi X3QgZmI7Cit9IGRhdGFfdDsKKworLyogUHJlcGFyZSB0ZXN0IGRhdGEuICovCitzdGF0aWMgdm9p ZCBwcmVwYXJlX3Rlc3QoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51bSBw aXBlIHBpcGUpCit7CisJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Owor CisJZGF0YS0+cGlwZV9pZCA9IHBpcGU7CisJZGF0YS0+cGlwZSA9ICZkYXRhLT5kaXNwbGF5LnBp cGVzW2RhdGEtPnBpcGVfaWRdOworCWlndF9hc3NlcnQoZGF0YS0+cGlwZSk7CisKKwlpZ3RfZGlz cGxheV9yZXNldChkaXNwbGF5KTsKKworCWRhdGEtPm91dHB1dCA9IG91dHB1dDsKKwlpZ3RfYXNz ZXJ0KGRhdGEtPm91dHB1dCk7CisKKwlkYXRhLT5tb2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShk YXRhLT5vdXRwdXQpOworCWlndF9hc3NlcnQoZGF0YS0+bW9kZSk7CisKKwlkYXRhLT5wcmltYXJ5 ID0KKwkJaWd0X3BpcGVfZ2V0X3BsYW5lX3R5cGUoZGF0YS0+cGlwZSwgRFJNX1BMQU5FX1RZUEVf UFJJTUFSWSk7CisKKwlpZ3Rfb3V0cHV0X3NldF9waXBlKGRhdGEtPm91dHB1dCwgZGF0YS0+cGlw ZV9pZCk7Cit9CisKKy8qIFJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgZGl0aGVyaW5nIGZy b20gdGhlIGNydGMgZGVidWdmcy4gKi8KK3N0YXRpYyBib29sIGdldF9kaXRoZXJfc3RhdGUoZGF0 YV90ICpkYXRhKQoreworCWNoYXIgYnVmWzI1Nl07CisJY2hhciBjcnRjX25hbWVbN107CisJY2hh ciAqc3RhcnRfbG9jOworCWludCBmZCwgcmVzOworCXVuc2lnbmVkIGludCBzdGF0dXM7CisKKwlz bnByaW50ZihjcnRjX25hbWUsIDcsICJjcnRjLSVkIiwgZGF0YS0+cGlwZV9pZCk7CisJZmQgPSBp Z3RfZGVidWdmc19vcGVuKGRhdGEtPmRybV9mZCwgY3J0Y19uYW1lLCBPX1JET05MWSk7CisJaWd0 X2Fzc2VydChmZCA+PSAwKTsKKworCXJlcyA9IGlndF9kZWJ1Z2ZzX3NpbXBsZV9yZWFkKGZkLCAi ZGl0aGVyIiwgYnVmLCBzaXplb2YoYnVmKSk7CisJaWd0X3JlcXVpcmUocmVzID4gMCk7CisJY2xv c2UoZmQpOworCisJaWd0X2Fzc2VydChzdGFydF9sb2MgPSBzdHJzdHIoYnVmLCAiRGl0aGVyOiAi KSk7CisJaWd0X2Fzc2VydF9lcShzc2NhbmYoc3RhcnRfbG9jLCAiRGl0aGVyOiAldSIsICZzdGF0 dXMpLCAxKTsKKworCXJldHVybiAhIXN0YXR1czsKK30KKworLyogUmV0dXJucyB0aGUgbWF4aW11 bSBicGMgZnJvbSB0aGUgY29ubmVjdG9yIGRlYnVnZnMuICovCitzdGF0aWMgdW5zaWduZWQgaW50 IGdldF9vdXRwdXRfYnBjKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQpCit7CisJ Y2hhciBidWZbMjU2XTsKKwljaGFyICpzdGFydF9sb2M7CisJaW50IGZkLCByZXM7CisJdW5zaWdu ZWQgaW50IG1heF9icGM7CisKKwlmZCA9IGlndF9kZWJ1Z2ZzX2Nvbm5lY3Rvcl9kaXIoZGF0YS0+ ZHJtX2ZkLCBvdXRwdXQtPm5hbWUsIE9fUkRPTkxZKTsKKwlpZ3RfYXNzZXJ0KGZkID49IDApOwor CisJcmVzID0gaWd0X2RlYnVnZnNfc2ltcGxlX3JlYWQoZmQsICJvdXRwdXRfYnBjIiwgYnVmLCBz aXplb2YoYnVmKSk7CisJaWd0X3JlcXVpcmUocmVzID4gMCk7CisJY2xvc2UoZmQpOworCisJaWd0 X2Fzc2VydChzdGFydF9sb2MgPSBzdHJzdHIoYnVmLCAiTWF4aW11bTogIikpOworCWlndF9hc3Nl cnRfZXEoc3NjYW5mKHN0YXJ0X2xvYywgIk1heGltdW06ICV1IiwgJm1heF9icGMpLCAxKTsKKwor CXJldHVybiBtYXhfYnBjOworfQorCitzdGF0aWMgdm9pZCB0ZXN0X2RpdGhlcmluZyhkYXRhX3Qg KmRhdGEsIGVudW0gcGlwZSBwaXBlLAorCQkJICAgaWd0X291dHB1dF90ICpvdXRwdXQsCisJCQkg ICBpbnQgZmJfYnBjLCBpbnQgZmJfZm9ybWF0LAorCQkJICAgaW50IG91dHB1dF9icGMsIHVpbnQz Ml90IGZsYWdzKQoreworCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsK Kwlib29sIGVuYWJsZWQ7CisKKwlpZ3RfaW5mbygiRGl0aGVyaW5nIHRlc3QgZXhlY3V0aW9uIG9u ICVzIFBJUEVfJXNcbiIsCisJCQlvdXRwdXQtPm5hbWUsIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUp KTsKKwlwcmVwYXJlX3Rlc3QoZGF0YSwgb3V0cHV0LCBwaXBlKTsKKworCWlndF9hc3NlcnQoaWd0 X2NyZWF0ZV9mYihkYXRhLT5kcm1fZmQsIGRhdGEtPm1vZGUtPmhkaXNwbGF5LAorCQkJCSBkYXRh LT5tb2RlLT52ZGlzcGxheSwgZmJfZm9ybWF0LAorCQkJCSBMT0NBTF9EUk1fRk9STUFUX01PRF9O T05FLCAmZGF0YS0+ZmIpKTsKKwlpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1hcnksICZkYXRh LT5mYik7CisJaWd0X3BsYW5lX3NldF9zaXplKGRhdGEtPnByaW1hcnksIGRhdGEtPm1vZGUtPmhk aXNwbGF5LCBkYXRhLT5tb2RlLT52ZGlzcGxheSk7CisJaWd0X291dHB1dF9zZXRfcHJvcF92YWx1 ZShkYXRhLT5vdXRwdXQsIElHVF9DT05ORUNUT1JfTUFYX0JQQywgb3V0cHV0X2JwYyk7CisJaWd0 X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBkaXNwbGF5LT5pc19hdG9taWMgPyBDT01NSVRfQVRP TUlDIDogQ09NTUlUX0xFR0FDWSk7CisKKwkvKgorCSAqIENoZWNrIHRoZSBzdGF0dXMgb2YgRGl0 aGVyaW5nIGJsb2NrOgorCSAqIElmIGZiX2JwYyBpcyBncmVhdGVyIHRoYW4gb3V0cHV0X2JwYywg RGl0aGVyaW5nIHNob3VsZCBiZSBlbmFibGVkCisJICogRWxzZSBkaXNhYmxlZAorCSAqLworCWVu YWJsZWQgPSBnZXRfZGl0aGVyX3N0YXRlKGRhdGEpOworCWlmIChmYl9icGMgPiBvdXRwdXRfYnBj KQorCQlpZ3RfYXNzZXJ0X2YoZW5hYmxlZCwgIihmYl8lZGJwYyA+IG91dHB1dF8lZGJwYyk6IERp dGhlciBzaG91bGQgYmUgZW5hYmxlZFxuIiwKKwkJCQlmYl9icGMsIG91dHB1dF9icGMpOworCWVs c2UKKwkJaWd0X2Fzc2VydF9mKCFlbmFibGVkLCAiKGZiXyVkYnBjIDw9IG91dHB1dF8lZGJwYyk6 IERpdGhlciBzaG91bGQgYmUgZGlzYWJsZWRcbiIsCisJCQkJZmJfYnBjLCBvdXRwdXRfYnBjKTsK KworCWlndF9wbGFuZV9zZXRfZmIoZGF0YS0+cHJpbWFyeSwgTlVMTCk7CisJaWd0X291dHB1dF9z ZXRfcGlwZShvdXRwdXQsIFBJUEVfTk9ORSk7CisJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5 LCBkaXNwbGF5LT5pc19hdG9taWMgPyBDT01NSVRfQVRPTUlDIDogQ09NTUlUX0xFR0FDWSk7CisK KwlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEtPmZiKTsKKworCXJldHVybjsKK30K KworLyogUmV0dXJucyB0cnVlIGlmIGFuIG91dHB1dCBzdXBwb3J0cyBtYXggYnBjIHByb3BlcnR5 LiAqLworc3RhdGljIGJvb2wgaGFzX21heF9icGMoaWd0X291dHB1dF90ICpvdXRwdXQpCit7Cisg ICAgICAgIHJldHVybiBpZ3Rfb3V0cHV0X2hhc19wcm9wKG91dHB1dCwgSUdUX0NPTk5FQ1RPUl9N QVhfQlBDKSAmJgorICAgICAgICAgICAgICAgaWd0X291dHB1dF9nZXRfcHJvcChvdXRwdXQsIElH VF9DT05ORUNUT1JfTUFYX0JQQyk7Cit9CisKK3N0YXRpYyB2b2lkCitydW5fZGl0aGVyX3Rlc3Qo ZGF0YV90ICpkYXRhLCBpbnQgZmJfYnBjLCBpbnQgZmJfZm9ybWF0LCBpbnQgb3V0cHV0X2JwYywK KwkJdWludDMyX3QgZmxhZ3MpCit7CisJaWd0X291dHB1dF90ICpvdXRwdXQ7CisJaWd0X2Rpc3Bs YXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5OworCWVudW0gcGlwZSBwaXBlOworCisJZm9y X2VhY2hfcGlwZV93aXRoX3ZhbGlkX291dHB1dChkaXNwbGF5LCBwaXBlLCBvdXRwdXQpIHsKKwkJ aWYgKCFoYXNfbWF4X2JwYyhvdXRwdXQpKQorCQkJY29udGludWU7CisKKwkJaWYgKGdldF9vdXRw dXRfYnBjKGRhdGEsIG91dHB1dCkgPCBvdXRwdXRfYnBjKQorCQkJY29udGludWU7CisKKwkJaWd0 X2R5bmFtaWNfZigiJXMtcGlwZS0lcyIsIG91dHB1dC0+bmFtZSwga21zdGVzdF9waXBlX25hbWUo cGlwZSkpCisJCQlpZiAoaWd0X3BpcGVfY29ubmVjdG9yX3ZhbGlkKHBpcGUsIG91dHB1dCkpCisJ CQkJdGVzdF9kaXRoZXJpbmcoZGF0YSwgcGlwZSwgb3V0cHV0LCBmYl9icGMsCisJCQkJCSAgICAg ICBmYl9mb3JtYXQsIG91dHB1dF9icGMsIGZsYWdzKTsKKworCQkvKiBPbmUgaXMgZW5vdWdoICov CisJCXJldHVybjsKKwl9Cit9CisKK2lndF9tYWluCit7CisJc3RydWN0IHsKKwkJaW50IGJwYzsK KwkJaW50IGZvcm1hdDsKKwl9IGZiX2Zvcm1hdHNbXSA9IHsKKwkJeyBJR1RfRlJBTUVfQlVGRkVS X0JQQ184LCBEUk1fRk9STUFUX1JHQjg4OCB9LAorCQl7IElHVF9GUkFNRV9CVUZGRVJfQlBDXzEw LCBEUk1fRk9STUFUX1hSR0IyMTAxMDEwIH0sCisJCXsgSUdUX0ZSQU1FX0JVRkZFUl9CUENfMTYs IERSTV9GT1JNQVRfWFJHQjE2MTYxNjE2RiB9LAorCX07CisJaW50IG91dHB1dF9icGNbXSA9IHsK KwkJSUdUX0NPTk5FQ1RPUl9CUENfNiwKKwkJSUdUX0NPTk5FQ1RPUl9CUENfOCwKKwkJSUdUX0NP Tk5FQ1RPUl9CUENfMTAKKwl9OworCWludCBpLCBqOworCWRhdGFfdCBkYXRhID0geyAwIH07CisK KwlpZ3RfZml4dHVyZSB7CisJCWRhdGEuZHJtX2ZkID0gZHJtX29wZW5fZHJpdmVyX21hc3RlcihE UklWRVJfSU5URUwpOworCQlrbXN0ZXN0X3NldF92dF9ncmFwaGljc19tb2RlKCk7CisKKwkJaWd0 X2Rpc3BsYXlfcmVxdWlyZSgmZGF0YS5kaXNwbGF5LCBkYXRhLmRybV9mZCk7CisJCWlndF9kaXNw bGF5X3JlcXVpcmVfb3V0cHV0KCZkYXRhLmRpc3BsYXkpOworCX0KKworCWZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKGZiX2Zvcm1hdHMpOyBpKyspIHsKKwkJZm9yIChqID0gMDsgaiA8IEFSUkFZ X1NJWkUob3V0cHV0X2JwYyk7IGorKykgeworCQkJaWd0X2Rlc2NyaWJlX2YoIkZyYW1lYnVmZmVy IEJQQzolZCwgUGFuZWwgQlBDOiVkLCBFeHBlY3RlZCBEaXRoZXI6JXNcbiIsCisJCQkJICAgICAg IGZiX2Zvcm1hdHNbaV0uYnBjLCBvdXRwdXRfYnBjW2pdLAorCQkJCSAgICAgICAoZmJfZm9ybWF0 c1tpXS5icGMgPiBvdXRwdXRfYnBjW2pdKSA/ICJFbmFibGUiOiAiRGlzYWJsZSIpOworCisJCQlp Z3Rfc3VidGVzdF93aXRoX2R5bmFtaWNfZigiRkItJWRCUEMtVnMtUGFuZWwtJWRCUEMiLCBmYl9m b3JtYXRzW2ldLmJwYywgb3V0cHV0X2JwY1tqXSkKKwkJCQlydW5fZGl0aGVyX3Rlc3QoJmRhdGEs CisJCQkJCQlmYl9mb3JtYXRzW2ldLmJwYywKKwkJCQkJCWZiX2Zvcm1hdHNbaV0uZm9ybWF0LAor CQkJCQkJb3V0cHV0X2JwY1tqXSwKKwkJCQkJCVRFU1RfTk9ORSk7CisJCX0KKwl9CisKKwlpZ3Rf Zml4dHVyZSB7CisJCWlndF9kaXNwbGF5X2ZpbmkoJmRhdGEuZGlzcGxheSk7CisJfQorfQpkaWZm IC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAppbmRleCBjYTc5 MmVkOC4uZTUwZmY3ZTQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL21lc29uLmJ1aWxkCisrKyBiL3Rlc3Rz L21lc29uLmJ1aWxkCkBAIC0yOCw2ICsyOCw3IEBAIHRlc3RfcHJvZ3MgPSBbCiAJJ2ttc19jdXJz b3JfY3JjJywKIAkna21zX2N1cnNvcl9lZGdlX3dhbGsnLAogCSdrbXNfY3Vyc29yX2xlZ2FjeScs CisJJ2ttc19kaXRoZXInLAogCSdrbXNfZHBfYXV4X2RldicsCiAJJ2ttc19kcF9kc2MnLAogCSdr bXNfZHBfdGlsZWRfZGlzcGxheScsCi0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaWd0LWRldgo=