From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2D9266E11A for ; Wed, 29 Jul 2020 10:46:50 +0000 (UTC) From: Bhanuprakash Modem Date: Thu, 30 Jul 2020 00:11:52 +0530 Message-Id: <20200729184152.9236-1-bhanuprakash.modem@intel.com> In-Reply-To: <20200726122944.9864-1-bhanuprakash.modem@intel.com> References: <20200726122944.9864-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 CnY1OgoqIFNLSVAgc3VidGVzdCBmb3IgSERNSSB3aXRoIDYgQlBDIChCaGFudSkKKiBGaXggdGhl IHVzYWdlIG9mIHZhbGlkIGZvcm1hdCB0byBjcmVhdGUgOCBCUEMgRnJhbWVidWZmZXIgKEJoYW51 KQoqIEFkZCBzdXBwb3J0IGZvciBzdXNwZW5kL3Jlc3VtZSB0ZXN0cyAoQmhhbnUpCiogQWRkIGZl dyBkZWJ1ZyBwcmludHMgKEJoYW51KQoKQ2M6IFN3YXRpIFNoYXJtYSA8c3dhdGkyLnNoYXJtYUBp bnRlbC5jb20+CkNjOiBLYXJ0aGlrIEIgUyA8a2FydGhpay5iLnNAaW50ZWwuY29tPgpDYzogVW1h IFNoYW5rYXIgPHVtYS5zaGFua2FyQGludGVsLmNvbT4KQ2M6IFBhbmthaiBCaGFyYWRpeWEgPHBh bmthai5sYXhtaW5hcmF5YW4uYmhhcmFkaXlhQGludGVsLmNvbT4KQ2M6IFBldHJpIExhdHZhbGEg PHBldHJpLmxhdHZhbGFAaW50ZWwuY29tPgpDYzogQXJrYWRpdXN6IEhpbGVyIDxhcmthZGl1c3ou aGlsZXJAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBCaGFudXByYWthc2ggTW9kZW0gPGJoYW51 cHJha2FzaC5tb2RlbUBpbnRlbC5jb20+Ci0tLQogdGVzdHMvTWFrZWZpbGUuc291cmNlcyB8ICAg MSArCiB0ZXN0cy9rbXNfZGl0aGVyLmMgICAgIHwgMjczICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiB0ZXN0cy9tZXNvbi5idWlsZCAgICAgIHwgICAxICsKIDMgZmls ZXMgY2hhbmdlZCwgMjc1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9r bXNfZGl0aGVyLmMKCmRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMv TWFrZWZpbGUuc291cmNlcwppbmRleCA5M2Q3NzY4Yy4uZjIyYjNmMzMgMTAwNjQ0Ci0tLSBhL3Rl c3RzL01ha2VmaWxlLnNvdXJjZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtNDQs NiArNDQsNyBAQCBURVNUU19wcm9ncyA9IFwKIAlrbXNfY3Vyc29yX2NyYyBcCiAJa21zX2N1cnNv cl9lZGdlX3dhbGsgXAogCWttc19jdXJzb3JfbGVnYWN5IFwKKwlrbXNfZGl0aGVyIFwKIAlrbXNf ZHBfYXV4X2RldiBcCiAJa21zX2RwX2RzYyBcCiAJa21zX2RwX3RpbGVkX2Rpc3BsYXkgXApkaWZm IC0tZ2l0IGEvdGVzdHMva21zX2RpdGhlci5jIGIvdGVzdHMva21zX2RpdGhlci5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4wZmY1MDAzNQotLS0gL2Rldi9udWxsCisrKyBi L3Rlc3RzL2ttc19kaXRoZXIuYwpAQCAtMCwwICsxLDI3MyBAQAorLyoKKyAqIENvcHlyaWdodCDC qSAyMDIwIEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkg b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg IlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0 aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwg Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAq IGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29u cyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0 IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0 IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cisg KiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP UgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklH SFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF UyBPUgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFD VCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05O RUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdT IElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOgorICogICAgIEJoYW51cHJha2FzaCBN b2RlbSA8YmhhbnVwcmFrYXNoLm1vZGVtQGludGVsLmNvbT4KKyAqCisgKi8KKworI2luY2x1ZGUg ImlndC5oIgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dGVybWlvcy5oPgorI2luY2x1 ZGUgPHVuaXN0ZC5oPgorCitJR1RfVEVTVF9ERVNDUklQVElPTigiVGVzdCBEaXRoZXJpbmcgYmxv Y2sgc3RhdHVzIik7CisKKy8qIENvbm5lY3RvciBCUEMgKi8KKyNkZWZpbmUgSUdUX0NPTk5FQ1RP Ul9CUENfNgkJNgorI2RlZmluZSBJR1RfQ09OTkVDVE9SX0JQQ184CQk4CisjZGVmaW5lIElHVF9D T05ORUNUT1JfQlBDXzEwCQkxMAorI2RlZmluZSBJR1RfQ09OTkVDVE9SX0JQQ18xMgkJMTIKKwor LyogRnJhbWVidWZmZXIgQlBDICovCisjZGVmaW5lIElHVF9GUkFNRV9CVUZGRVJfQlBDXzgJCTgK KyNkZWZpbmUgSUdUX0ZSQU1FX0JVRkZFUl9CUENfMTAJCTEwCisjZGVmaW5lIElHVF9GUkFNRV9C VUZGRVJfQlBDXzE2CQkxNgorCisvKiBUZXN0IGZsYWdzLiAqLworZW51bSB7CisJVEVTVF9OT05F ID0gMSA8PCAwLAorCVRFU1RfU1VTUEVORCA9IDEgPDwgMSwKK307CisKKy8qIENvbW1vbiB0ZXN0 IGRhdGEuICovCit0eXBlZGVmIHN0cnVjdCBkYXRhIHsKKwlpZ3RfZGlzcGxheV90IGRpc3BsYXk7 CisJaWd0X3BsYW5lX3QgKnByaW1hcnk7CisJaWd0X291dHB1dF90ICpvdXRwdXQ7CisJaWd0X3Bp cGVfdCAqcGlwZTsKKwlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7CisJZW51bSBwaXBlIHBpcGVfaWQ7 CisJaW50IGRybV9mZDsKKwlpZ3RfZmJfdCBmYjsKK30gZGF0YV90OworCisvKiBQcmVwYXJlIHRl c3QgZGF0YS4gKi8KK3N0YXRpYyB2b2lkIHByZXBhcmVfdGVzdChkYXRhX3QgKmRhdGEsIGlndF9v dXRwdXRfdCAqb3V0cHV0LCBlbnVtIHBpcGUgcGlwZSkKK3sKKwlpZ3RfZGlzcGxheV90ICpkaXNw bGF5ID0gJmRhdGEtPmRpc3BsYXk7CisKKwlkYXRhLT5waXBlX2lkID0gcGlwZTsKKwlkYXRhLT5w aXBlID0gJmRhdGEtPmRpc3BsYXkucGlwZXNbZGF0YS0+cGlwZV9pZF07CisJaWd0X2Fzc2VydChk YXRhLT5waXBlKTsKKworCWlndF9kaXNwbGF5X3Jlc2V0KGRpc3BsYXkpOworCisJZGF0YS0+b3V0 cHV0ID0gb3V0cHV0OworCWlndF9hc3NlcnQoZGF0YS0+b3V0cHV0KTsKKworCWRhdGEtPm1vZGUg PSBpZ3Rfb3V0cHV0X2dldF9tb2RlKGRhdGEtPm91dHB1dCk7CisJaWd0X2Fzc2VydChkYXRhLT5t b2RlKTsKKworCWRhdGEtPnByaW1hcnkgPQorCQlpZ3RfcGlwZV9nZXRfcGxhbmVfdHlwZShkYXRh LT5waXBlLCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKKworCWlndF9vdXRwdXRfc2V0X3BpcGUo ZGF0YS0+b3V0cHV0LCBkYXRhLT5waXBlX2lkKTsKK30KKworLyogUmV0dXJucyB0aGUgY3VycmVu dCBzdGF0ZSBvZiBkaXRoZXJpbmcgZnJvbSB0aGUgY3J0YyBkZWJ1Z2ZzLiAqLworc3RhdGljIGJv b2wgZ2V0X2RpdGhlcl9zdGF0ZShkYXRhX3QgKmRhdGEpCit7CisJY2hhciBidWZbMjU2XTsKKwlj aGFyIGNydGNfbmFtZVs3XTsKKwljaGFyICpzdGFydF9sb2M7CisJaW50IGZkLCByZXM7CisJdW5z aWduZWQgaW50IHN0YXR1czsKKworCXNucHJpbnRmKGNydGNfbmFtZSwgNywgImNydGMtJWQiLCBk YXRhLT5waXBlX2lkKTsKKwlmZCA9IGlndF9kZWJ1Z2ZzX29wZW4oZGF0YS0+ZHJtX2ZkLCBjcnRj X25hbWUsIE9fUkRPTkxZKTsKKwlpZ3RfYXNzZXJ0KGZkID49IDApOworCisJcmVzID0gaWd0X2Rl YnVnZnNfc2ltcGxlX3JlYWQoZmQsICJkaXRoZXIiLCBidWYsIHNpemVvZihidWYpKTsKKwlpZ3Rf cmVxdWlyZShyZXMgPiAwKTsKKwljbG9zZShmZCk7CisKKwlpZ3RfYXNzZXJ0KHN0YXJ0X2xvYyA9 IHN0cnN0cihidWYsICJEaXRoZXI6ICIpKTsKKwlpZ3RfYXNzZXJ0X2VxKHNzY2FuZihzdGFydF9s b2MsICJEaXRoZXI6ICV1IiwgJnN0YXR1cyksIDEpOworCisJcmV0dXJuICEhc3RhdHVzOworfQor CisvKiBSZXR1cm5zIHRoZSBtYXhpbXVtIGJwYyBmcm9tIHRoZSBjb25uZWN0b3IgZGVidWdmcy4g Ki8KK3N0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X291dHB1dF9icGMoZGF0YV90ICpkYXRhLCBpZ3Rf b3V0cHV0X3QgKm91dHB1dCkKK3sKKwljaGFyIGJ1ZlsyNTZdOworCWNoYXIgKnN0YXJ0X2xvYzsK KwlpbnQgZmQsIHJlczsKKwl1bnNpZ25lZCBpbnQgbWF4X2JwYzsKKworCWZkID0gaWd0X2RlYnVn ZnNfY29ubmVjdG9yX2RpcihkYXRhLT5kcm1fZmQsIG91dHB1dC0+bmFtZSwgT19SRE9OTFkpOwor CWlndF9hc3NlcnQoZmQgPj0gMCk7CisKKwlyZXMgPSBpZ3RfZGVidWdmc19zaW1wbGVfcmVhZChm ZCwgIm91dHB1dF9icGMiLCBidWYsIHNpemVvZihidWYpKTsKKwlpZ3RfcmVxdWlyZShyZXMgPiAw KTsKKwljbG9zZShmZCk7CisKKwlpZ3RfYXNzZXJ0KHN0YXJ0X2xvYyA9IHN0cnN0cihidWYsICJN YXhpbXVtOiAiKSk7CisJaWd0X2Fzc2VydF9lcShzc2NhbmYoc3RhcnRfbG9jLCAiTWF4aW11bTog JXUiLCAmbWF4X2JwYyksIDEpOworCisJcmV0dXJuIG1heF9icGM7Cit9CisKK3N0YXRpYyB2b2lk IHRlc3RfZGl0aGVyaW5nKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUsCisJCQkgICBpZ3Rf b3V0cHV0X3QgKm91dHB1dCwKKwkJCSAgIGludCBmYl9icGMsIGludCBmYl9mb3JtYXQsCisJCQkg ICBpbnQgb3V0cHV0X2JwYywgdWludDMyX3QgZmxhZ3MpCit7CisJaWd0X2Rpc3BsYXlfdCAqZGlz cGxheSA9ICZkYXRhLT5kaXNwbGF5OworCWJvb2wgZW5hYmxlZDsKKworCWlndF9pbmZvKCJEaXRo ZXJpbmcgdGVzdCBleGVjdXRpb24gb24gJXMgUElQRV8lc1xuIiwKKwkJCW91dHB1dC0+bmFtZSwg a21zdGVzdF9waXBlX25hbWUocGlwZSkpOworCXByZXBhcmVfdGVzdChkYXRhLCBvdXRwdXQsIHBp cGUpOworCisJaWd0X2Fzc2VydChpZ3RfY3JlYXRlX2ZiKGRhdGEtPmRybV9mZCwgZGF0YS0+bW9k ZS0+aGRpc3BsYXksCisJCQkJIGRhdGEtPm1vZGUtPnZkaXNwbGF5LCBmYl9mb3JtYXQsCisJCQkJ IExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsICZkYXRhLT5mYikpOworCWlndF9wbGFuZV9zZXRf ZmIoZGF0YS0+cHJpbWFyeSwgJmRhdGEtPmZiKTsKKwlpZ3RfcGxhbmVfc2V0X3NpemUoZGF0YS0+ cHJpbWFyeSwgZGF0YS0+bW9kZS0+aGRpc3BsYXksIGRhdGEtPm1vZGUtPnZkaXNwbGF5KTsKKwor CWlndF9vdXRwdXRfc2V0X3Byb3BfdmFsdWUoZGF0YS0+b3V0cHV0LCBJR1RfQ09OTkVDVE9SX01B WF9CUEMsIG91dHB1dF9icGMpOworCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgZGlzcGxh eS0+aXNfYXRvbWljID8gQ09NTUlUX0FUT01JQyA6IENPTU1JVF9MRUdBQ1kpOworCisJaWYgKGZs YWdzICYgVEVTVF9TVVNQRU5EKQorCQlpZ3Rfc3lzdGVtX3N1c3BlbmRfYXV0b3Jlc3VtZShTVVNQ RU5EX1NUQVRFX01FTSwKKwkJCQkJICAgICAgU1VTUEVORF9URVNUX05PTkUpOworCisJLyoKKwkg KiBDaGVjayB0aGUgc3RhdHVzIG9mIERpdGhlcmluZyBibG9jazoKKwkgKiBJZiBmYl9icGMgaXMg Z3JlYXRlciB0aGFuIG91dHB1dF9icGMsIERpdGhlcmluZyBzaG91bGQgYmUgZW5hYmxlZAorCSAq IEVsc2UgZGlzYWJsZWQKKwkgKi8KKwllbmFibGVkID0gZ2V0X2RpdGhlcl9zdGF0ZShkYXRhKTsK KworCWlndF9kZWJ1ZygiRkIgQlBDOiVkLCBQYW5lbCBCUEM6JWQsIEV4cGVjdGVkIERpdGhlcjol cywgQWN0dWFsIHJlc3VsdDolc1xuIiwKKwkJICBmYl9icGMsIG91dHB1dF9icGMsCisJCSAgKGZi X2JwYyA+IG91dHB1dF9icGMpID8gIkVuYWJsZSI6ICJEaXNhYmxlIiwKKwkJICBlbmFibGVkID8g IkVuYWJsZSI6ICJEaXNhYmxlIik7CisKKwlpZiAoZmJfYnBjID4gb3V0cHV0X2JwYykKKwkJaWd0 X2Fzc2VydF9mKGVuYWJsZWQsICIoZmJfJWRicGMgPiBvdXRwdXRfJWRicGMpOiBEaXRoZXIgc2hv dWxkIGJlIGVuYWJsZWRcbiIsCisJCQkJZmJfYnBjLCBvdXRwdXRfYnBjKTsKKwllbHNlCisJCWln dF9hc3NlcnRfZighZW5hYmxlZCwgIihmYl8lZGJwYyA8PSBvdXRwdXRfJWRicGMpOiBEaXRoZXIg c2hvdWxkIGJlIGRpc2FibGVkXG4iLAorCQkJCWZiX2JwYywgb3V0cHV0X2JwYyk7CisKKwlpZ3Rf cGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1hcnksIE5VTEwpOworCWlndF9vdXRwdXRfc2V0X3BpcGUo b3V0cHV0LCBQSVBFX05PTkUpOworCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgZGlzcGxh eS0+aXNfYXRvbWljID8gQ09NTUlUX0FUT01JQyA6IENPTU1JVF9MRUdBQ1kpOworCisJaWd0X3Jl bW92ZV9mYihkYXRhLT5kcm1fZmQsICZkYXRhLT5mYik7CisKKwlyZXR1cm47Cit9CisKKy8qIFJl dHVybnMgdHJ1ZSBpZiBhbiBvdXRwdXQgc3VwcG9ydHMgbWF4IGJwYyBwcm9wZXJ0eS4gKi8KK3N0 YXRpYyBib29sIGhhc19tYXhfYnBjKGlndF9vdXRwdXRfdCAqb3V0cHV0KQoreworICAgICAgICBy ZXR1cm4gaWd0X291dHB1dF9oYXNfcHJvcChvdXRwdXQsIElHVF9DT05ORUNUT1JfTUFYX0JQQykg JiYKKyAgICAgICAgICAgICAgIGlndF9vdXRwdXRfZ2V0X3Byb3Aob3V0cHV0LCBJR1RfQ09OTkVD VE9SX01BWF9CUEMpOworfQorCitzdGF0aWMgdm9pZAorcnVuX2RpdGhlcl90ZXN0KGRhdGFfdCAq ZGF0YSwgaW50IGZiX2JwYywgaW50IGZiX2Zvcm1hdCwgaW50IG91dHB1dF9icGMsCisJCXVpbnQz Ml90IGZsYWdzKQoreworCWlndF9vdXRwdXRfdCAqb3V0cHV0OworCWlndF9kaXNwbGF5X3QgKmRp c3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKKwllbnVtIHBpcGUgcGlwZTsKKworCWZvcl9lYWNoX3Bp cGVfd2l0aF92YWxpZF9vdXRwdXQoZGlzcGxheSwgcGlwZSwgb3V0cHV0KSB7CisJCWlmICghaGFz X21heF9icGMob3V0cHV0KSkKKwkJCWNvbnRpbnVlOworCisJCWlmIChnZXRfb3V0cHV0X2JwYyhk YXRhLCBvdXRwdXQpIDwgb3V0cHV0X2JwYykKKwkJCWNvbnRpbnVlOworCisJCWlmICgoc3Ryc3Ry KG91dHB1dC0+bmFtZSwgIkhETUkiKSAhPSBOVUxMKSAmJgorCQkgICAgKG91dHB1dF9icGMgPT0g SUdUX0NPTk5FQ1RPUl9CUENfNikpCisJCQljb250aW51ZTsKKworCQlpZ3RfZHluYW1pY19mKCIl cy1waXBlLSVzIiwgb3V0cHV0LT5uYW1lLCBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKKwkJCWlm IChpZ3RfcGlwZV9jb25uZWN0b3JfdmFsaWQocGlwZSwgb3V0cHV0KSkKKwkJCQl0ZXN0X2RpdGhl cmluZyhkYXRhLCBwaXBlLCBvdXRwdXQsIGZiX2JwYywKKwkJCQkJICAgICAgIGZiX2Zvcm1hdCwg b3V0cHV0X2JwYywgZmxhZ3MpOworCisJCS8qIE9uZSBpcyBlbm91Z2ggKi8KKwkJcmV0dXJuOwor CX0KK30KKworaWd0X21haW4KK3sKKwlzdHJ1Y3QgeworCQlpbnQgYnBjOworCQlpbnQgZm9ybWF0 OworCX0gZmJfZm9ybWF0c1tdID0geworCQl7IElHVF9GUkFNRV9CVUZGRVJfQlBDXzgsIERSTV9G T1JNQVRfWFJHQjg4ODggfSwKKwkJeyBJR1RfRlJBTUVfQlVGRkVSX0JQQ18xMCwgRFJNX0ZPUk1B VF9YUkdCMjEwMTAxMCB9LAorCQl7IElHVF9GUkFNRV9CVUZGRVJfQlBDXzE2LCBEUk1fRk9STUFU X1hSR0IxNjE2MTYxNkYgfSwKKwl9OworCWludCBvdXRwdXRfYnBjW10gPSB7CisJCUlHVF9DT05O RUNUT1JfQlBDXzYsCisJCUlHVF9DT05ORUNUT1JfQlBDXzgsCisJCUlHVF9DT05ORUNUT1JfQlBD XzEwCisJfTsKKwlpbnQgaSwgajsKKwlkYXRhX3QgZGF0YSA9IHsgMCB9OworCisJaWd0X2ZpeHR1 cmUgeworCQlkYXRhLmRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0lOVEVM KTsKKwkJa21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOworCisJCWlndF9kaXNwbGF5X3Jl cXVpcmUoJmRhdGEuZGlzcGxheSwgZGF0YS5kcm1fZmQpOworCQlpZ3RfZGlzcGxheV9yZXF1aXJl X291dHB1dCgmZGF0YS5kaXNwbGF5KTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0la RShmYl9mb3JtYXRzKTsgaSsrKSB7CisJCWZvciAoaiA9IDA7IGogPCBBUlJBWV9TSVpFKG91dHB1 dF9icGMpOyBqKyspIHsKKwkJCWlndF9kZXNjcmliZV9mKCJGcmFtZWJ1ZmZlciBCUEM6JWQsIFBh bmVsIEJQQzolZCwgRXhwZWN0ZWQgRGl0aGVyOiVzXG4iLAorCQkJCSAgICAgICBmYl9mb3JtYXRz W2ldLmJwYywgb3V0cHV0X2JwY1tqXSwKKwkJCQkgICAgICAgKGZiX2Zvcm1hdHNbaV0uYnBjID4g b3V0cHV0X2JwY1tqXSkgPyAiRW5hYmxlIjogIkRpc2FibGUiKTsKKworCQkJaWd0X3N1YnRlc3Rf d2l0aF9keW5hbWljX2YoIkZCLSVkQlBDLVZzLVBhbmVsLSVkQlBDIiwKKwkJCQkJCSAgIGZiX2Zv cm1hdHNbaV0uYnBjLCBvdXRwdXRfYnBjW2pdKQorCQkJCXJ1bl9kaXRoZXJfdGVzdCgmZGF0YSwK KwkJCQkJCWZiX2Zvcm1hdHNbaV0uYnBjLAorCQkJCQkJZmJfZm9ybWF0c1tpXS5mb3JtYXQsCisJ CQkJCQlvdXRwdXRfYnBjW2pdLAorCQkJCQkJVEVTVF9OT05FKTsKKworCQkJaWd0X3N1YnRlc3Rf d2l0aF9keW5hbWljX2YoIkZCLSVkQlBDLVZzLVBhbmVsLSVkQlBDLXN1c3BlbmQiLAorCQkJCQkJ ICAgZmJfZm9ybWF0c1tpXS5icGMsIG91dHB1dF9icGNbal0pCisJCQkJcnVuX2RpdGhlcl90ZXN0 KCZkYXRhLAorCQkJCQkJZmJfZm9ybWF0c1tpXS5icGMsCisJCQkJCQlmYl9mb3JtYXRzW2ldLmZv cm1hdCwKKwkJCQkJCW91dHB1dF9icGNbal0sCisJCQkJCQlURVNUX1NVU1BFTkQpOworCQl9CisJ fQorCisJaWd0X2ZpeHR1cmUgeworCQlpZ3RfZGlzcGxheV9maW5pKCZkYXRhLmRpc3BsYXkpOwor CX0KK30KZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVzb24uYnVpbGQK aW5kZXggY2E3OTJlZDguLmU1MGZmN2U0IDEwMDY0NAotLS0gYS90ZXN0cy9tZXNvbi5idWlsZAor KysgYi90ZXN0cy9tZXNvbi5idWlsZApAQCAtMjgsNiArMjgsNyBAQCB0ZXN0X3Byb2dzID0gWwog CSdrbXNfY3Vyc29yX2NyYycsCiAJJ2ttc19jdXJzb3JfZWRnZV93YWxrJywKIAkna21zX2N1cnNv cl9sZWdhY3knLAorCSdrbXNfZGl0aGVyJywKIAkna21zX2RwX2F1eF9kZXYnLAogCSdrbXNfZHBf ZHNjJywKIAkna21zX2RwX3RpbGVkX2Rpc3BsYXknLAotLSAKMi4yMC4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdApp Z3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK