From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8B4976E2DD for ; Tue, 21 Jul 2020 13:52:52 +0000 (UTC) From: Bhanuprakash Modem Date: Wed, 22 Jul 2020 03:18:01 +0530 Message-Id: <20200721214801.20517-1-bhanuprakash.modem@intel.com> In-Reply-To: <20200720165011.23918-1-bhanuprakash.modem@intel.com> References: <20200720165011.23918-1-bhanuprakash.modem@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t] tests/kms_dither: Add new IGT test 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 List-ID: RXZlbiB0aG91Z2ggZmVhdHVyZSBEaXRoZXJpbmcgaXMgdGhlcmUgc2luY2UgbGVnYWN5LCB0aGVy ZSBpcyBubwpzcGVjaWZpYyBJR1QgZm9yIHRoaXMuCgpUaGlzIHBhdGNoIHdpbGwgY3JlYXRlIE5l dyBJR1QgZm9yIERpdGhlcmluZy4gQW5kIGJlbG93IGlzIHRoZQp0cnV0aCB0YWJsZSBmb3IgQ1JU QyBEaXRoZXJpbmcuCgp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLXwK fCAgRnJhbWUgYnVmZmVyICB8ICBQYW5lbCAgfCAgRGl0aGVyaW5nICB8CnwtLS0tLS0tLS0tLS0t LS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfAp8ICAgICAgOCBCUEMgICAgIHwgIDYgQlBDICB8 ICAgICBZZXMgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18 CnwgICAgICA4IEJQQyAgICAgfCAgOCBCUEMgIHwgICAgIE5vICAgICAgfAp8LS0tLS0tLS0tLS0t LS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLXwKfCAgICAgIDggQlBDICAgICB8IDEwIEJQQyAg fCAgICAgTm8gICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0t fAp8ICAgICAxMCBCUEMgICAgIHwgIDYgQlBDICB8ICAgICBZZXMgICAgIHwKfC0tLS0tLS0tLS0t LS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18CnwgICAgIDEwIEJQQyAgICAgfCAgOCBCUEMg IHwgICAgIFllcyAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0t LXwKfCAgICAgMTAgQlBDICAgICB8IDEwIEJQQyAgfCAgICAgTm8gICAgICB8CnwtLS0tLS0tLS0t LS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfAp8ICAgICAxNiBCUEMgICAgIHwgIDYgQlBD ICB8ICAgICBZZXMgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0t LS18CnwgICAgIDE2IEJQQyAgICAgfCAgOCBCUEMgIHwgICAgIFllcyAgICAgfAp8LS0tLS0tLS0t LS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLXwKfCAgICAgMTYgQlBDICAgICB8IDEwIEJQ QyAgfCAgICAgWWVzICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0t LS0tfAoKdjI6CiogRml4IGNvbW1pdCBtZXNzYWdlIChLYXJ0aGlrKQoqIEFkZCBmaWxlIGF1dGhv ciAoS2FydGhpaykKKiBEeW5hbWljIHN1YnRlc3RzIGZvciBwaXBlLW91dHB1dCBjb21iaW5hdGlv bnMgKEthcnRoaWspCiogVXBkYXRlIGRlcHJlY2F0ZWQgcGlwZSBuYW1lIChLYXJ0aGlrKQoqIFJl bW92ZSByZWR1bmRhbnQgZmIgY3JlYXRpb24gbG9naWMgKEthcnRoaWspCgpDYzogU3dhdGkgU2hh cm1hIDxzd2F0aTIuc2hhcm1hQGludGVsLmNvbT4KQ2M6IEthcnRoaWsgQiBTIDxrYXJ0aGlrLmIu c0BpbnRlbC5jb20+CkNjOiBVbWEgU2hhbmthciA8dW1hLnNoYW5rYXJAaW50ZWwuY29tPgpDYzog UGFua2FqIEJoYXJhZGl5YSA8cGFua2FqLmxheG1pbmFyYXlhbi5iaGFyYWRpeWFAaW50ZWwuY29t PgpTaWduZWQtb2ZmLWJ5OiBCaGFudXByYWthc2ggTW9kZW0gPGJoYW51cHJha2FzaC5tb2RlbUBp bnRlbC5jb20+Ci0tLQogdGVzdHMvTWFrZWZpbGUuc291cmNlcyB8ICAgMSArCiB0ZXN0cy9rbXNf ZGl0aGVyLmMgICAgIHwgMjU3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiB0ZXN0cy9tZXNvbi5idWlsZCAgICAgIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgMjU5 IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9rbXNfZGl0aGVyLmMKCmRp ZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNl cwppbmRleCAwNjUzYzNkMy4uZTgxNjAzN2MgMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxlLnNv dXJjZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtNDMsNiArNDMsNyBAQCBURVNU U19wcm9ncyA9IFwKIAlrbXNfY3Vyc29yX2NyYyBcCiAJa21zX2N1cnNvcl9lZGdlX3dhbGsgXAog CWttc19jdXJzb3JfbGVnYWN5IFwKKwlrbXNfZGl0aGVyIFwKIAlrbXNfZHBfYXV4X2RldiBcCiAJ a21zX2RwX2RzYyBcCiAJa21zX2RwX3RpbGVkX2Rpc3BsYXkgXApkaWZmIC0tZ2l0IGEvdGVzdHMv a21zX2RpdGhlci5jIGIvdGVzdHMva21zX2RpdGhlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwLi4wZDUxN2U3NAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2ttc19kaXRo ZXIuYwpAQCAtMCwwICsxLDI1NyBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDIwIEludGVsIENv cnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2Fy ZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisg KiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg d2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNv cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQor ICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dp bmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp cyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNo YWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2Yg dGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwg SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO R0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9S IEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICogT1RIRVIg TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF UldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FS RS4KKyAqCisgKiBBdXRob3JzOgorICogICAgIEJoYW51cHJha2FzaCBNb2RlbSA8YmhhbnVwcmFr YXNoLm1vZGVtQGludGVsLmNvbT4KKyAqCisgKi8KKworI2luY2x1ZGUgImlndC5oIgorI2luY2x1 ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dGVybWlvcy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgor CitJR1RfVEVTVF9ERVNDUklQVElPTigiVGVzdCBEaXRoZXJpbmcgYmxvY2sgc3RhdHVzIik7CisK Ky8qIENvbm5lY3RvciBCUEMgKi8KKyNkZWZpbmUgSUdUX0NPTk5FQ1RPUl9CUENfNgkJNgorI2Rl ZmluZSBJR1RfQ09OTkVDVE9SX0JQQ184CQk4CisjZGVmaW5lIElHVF9DT05ORUNUT1JfQlBDXzEw CQkxMAorI2RlZmluZSBJR1RfQ09OTkVDVE9SX0JQQ18xMgkJMTIKKworLyogRnJhbWVidWZmZXIg QlBDICovCisjZGVmaW5lIElHVF9GUkFNRV9CVUZGRVJfQlBDXzgJCTgKKyNkZWZpbmUgSUdUX0ZS QU1FX0JVRkZFUl9CUENfMTAJCTEwCisjZGVmaW5lIElHVF9GUkFNRV9CVUZGRVJfQlBDXzE2CQkx NgorCisvKiBUZXN0IGZsYWdzLiAqLworZW51bSB7CisJVEVTVF9OT05FID0gMSA8PCAwLAorCVRF U1RfU1VTUEVORCA9IDEgPDwgMSwKK307CisKKy8qIENvbW1vbiB0ZXN0IGRhdGEuICovCit0eXBl ZGVmIHN0cnVjdCBkYXRhIHsKKwlpZ3RfZGlzcGxheV90IGRpc3BsYXk7CisJaWd0X3BsYW5lX3Qg KnByaW1hcnk7CisJaWd0X291dHB1dF90ICpvdXRwdXQ7CisJaWd0X3BpcGVfdCAqcGlwZTsKKwlk cm1Nb2RlTW9kZUluZm8gKm1vZGU7CisJZW51bSBwaXBlIHBpcGVfaWQ7CisJaW50IGRybV9mZDsK KwlpZ3RfZmJfdCBmYjsKK30gZGF0YV90OworCisvKiBQcmVwYXJlIHRlc3QgZGF0YS4gKi8KK3N0 YXRpYyB2b2lkIHByZXBhcmVfdGVzdChkYXRhX3QgKmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0 LCBlbnVtIHBpcGUgcGlwZSkKK3sKKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRp c3BsYXk7CisKKwlkYXRhLT5waXBlX2lkID0gcGlwZTsKKwlkYXRhLT5waXBlID0gJmRhdGEtPmRp c3BsYXkucGlwZXNbZGF0YS0+cGlwZV9pZF07CisJaWd0X2Fzc2VydChkYXRhLT5waXBlKTsKKwor CWlndF9kaXNwbGF5X3Jlc2V0KGRpc3BsYXkpOworCisJZGF0YS0+b3V0cHV0ID0gb3V0cHV0Owor CWlndF9hc3NlcnQoZGF0YS0+b3V0cHV0KTsKKworCWRhdGEtPm1vZGUgPSBpZ3Rfb3V0cHV0X2dl dF9tb2RlKGRhdGEtPm91dHB1dCk7CisJaWd0X2Fzc2VydChkYXRhLT5tb2RlKTsKKworCWRhdGEt PnByaW1hcnkgPQorCQlpZ3RfcGlwZV9nZXRfcGxhbmVfdHlwZShkYXRhLT5waXBlLCBEUk1fUExB TkVfVFlQRV9QUklNQVJZKTsKKworCWlndF9vdXRwdXRfc2V0X3BpcGUoZGF0YS0+b3V0cHV0LCBk YXRhLT5waXBlX2lkKTsKK30KKworLyogUmV0dXJucyB0aGUgY3VycmVudCBzdGF0ZSBvZiBkaXRo ZXJpbmcgZnJvbSB0aGUgY3J0YyBkZWJ1Z2ZzLiAqLworc3RhdGljIGJvb2wgZ2V0X2RpdGhlcl9z dGF0ZShkYXRhX3QgKmRhdGEpCit7CisJY2hhciBidWZbMjU2XTsKKwljaGFyIGNydGNfbmFtZVs3 XTsKKwljaGFyICpzdGFydF9sb2M7CisJaW50IGZkLCByZXM7CisJdW5zaWduZWQgaW50IHN0YXR1 czsKKworCXNucHJpbnRmKGNydGNfbmFtZSwgNywgImNydGMtJWQiLCBkYXRhLT5waXBlX2lkKTsK KwlmZCA9IGlndF9kZWJ1Z2ZzX29wZW4oZGF0YS0+ZHJtX2ZkLCBjcnRjX25hbWUsIE9fUkRPTkxZ KTsKKwlpZ3RfYXNzZXJ0KGZkID49IDApOworCisJcmVzID0gaWd0X2RlYnVnZnNfc2ltcGxlX3Jl YWQoZmQsICJkaXRoZXIiLCBidWYsIHNpemVvZihidWYpKTsKKwlpZ3RfcmVxdWlyZShyZXMgPiAw KTsKKwljbG9zZShmZCk7CisKKwlpZ3RfYXNzZXJ0KHN0YXJ0X2xvYyA9IHN0cnN0cihidWYsICJE aXRoZXI6ICIpKTsKKwlpZ3RfYXNzZXJ0X2VxKHNzY2FuZihzdGFydF9sb2MsICJEaXRoZXI6ICV1 IiwgJnN0YXR1cyksIDEpOworCisJcmV0dXJuICEhc3RhdHVzOworfQorCisvKiBSZXR1cm5zIHRo ZSBjdXJyZW50IGFuZCBtYXhpbXVtIGJwYyBmcm9tIHRoZSBjb25uZWN0b3IgZGVidWdmcy4gKi8K K3N0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X291dHB1dF9icGMoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0 cHV0X3QgKm91dHB1dCkKK3sKKwljaGFyIGJ1ZlsyNTZdOworCWNoYXIgKnN0YXJ0X2xvYzsKKwlp bnQgZmQsIHJlczsKKwl1bnNpZ25lZCBpbnQgbWF4X2JwYzsKKworCWZkID0gaWd0X2RlYnVnZnNf Y29ubmVjdG9yX2RpcihkYXRhLT5kcm1fZmQsIG91dHB1dC0+bmFtZSwgT19SRE9OTFkpOworCWln dF9hc3NlcnQoZmQgPj0gMCk7CisKKwlyZXMgPSBpZ3RfZGVidWdmc19zaW1wbGVfcmVhZChmZCwg Im91dHB1dF9icGMiLCBidWYsIHNpemVvZihidWYpKTsKKworCWlndF9yZXF1aXJlKHJlcyA+IDAp OworCisJY2xvc2UoZmQpOworCisJaWd0X2Fzc2VydChzdGFydF9sb2MgPSBzdHJzdHIoYnVmLCAi TWF4aW11bTogIikpOworCWlndF9hc3NlcnRfZXEoc3NjYW5mKHN0YXJ0X2xvYywgIk1heGltdW06 ICV1IiwgJm1heF9icGMpLCAxKTsKKworCXJldHVybiBtYXhfYnBjOworfQorCitzdGF0aWMgdm9p ZCB0ZXN0X2RpdGhlcmluZyhkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlLAorCQkJICAgaWd0 X291dHB1dF90ICpvdXRwdXQsIGludCBmYl9icGMsCisJCQkgICBpbnQgb3V0cHV0X2JwYywgdWlu dDMyX3QgZmxhZ3MpCit7CisJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5 OworCWJvb2wgZW5hYmxlZDsKKworCWlndF9pbmZvKCJEaXRoZXJpbmcgdGVzdCBleGVjdXRpb24g b24gJXMgUElQRV8lc1xuIiwKKwkJCW91dHB1dC0+bmFtZSwga21zdGVzdF9waXBlX25hbWUocGlw ZSkpOworCXByZXBhcmVfdGVzdChkYXRhLCBvdXRwdXQsIHBpcGUpOworCisJaWd0X3BsYW5lX3Nl dF9mYihkYXRhLT5wcmltYXJ5LCAmZGF0YS0+ZmIpOworCWlndF9wbGFuZV9zZXRfc2l6ZShkYXRh LT5wcmltYXJ5LCBkYXRhLT5tb2RlLT5oZGlzcGxheSwgZGF0YS0+bW9kZS0+dmRpc3BsYXkpOwor CWlndF9vdXRwdXRfc2V0X3Byb3BfdmFsdWUoZGF0YS0+b3V0cHV0LCBJR1RfQ09OTkVDVE9SX01B WF9CUEMsIG91dHB1dF9icGMpOworCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgZGlzcGxh eS0+aXNfYXRvbWljID8gQ09NTUlUX0FUT01JQyA6IENPTU1JVF9MRUdBQ1kpOworCisJLyogQ2hl Y2sgdGhlIHN0YXR1cyBvZiBEaXRoZXJpbmcgYmxvY2sKKwkgKiBJZiBmYl9icGMgaXMgZ3JlYXRl ciB0aGFuIG91dHB1dF9icGMsIERpdGhlcmluZyBzaG91bGQgYmUgRW5hYmxlZAorCSAqIGVsc2Ug RGlzYWJsZWQKKwkgKi8KKwllbmFibGVkID0gZ2V0X2RpdGhlcl9zdGF0ZShkYXRhKTsKKwlpZiAo ZmJfYnBjID4gb3V0cHV0X2JwYykKKwkJaWd0X2Fzc2VydF9mKGVuYWJsZWQsICIoZmJfJWRicGMg PiBvdXRwdXRfJWRicGMpOiBEaXRoZXIgc2hvdWxkIGJlIGVuYWJsZWRcbiIsCisJCQkJZmJfYnBj LCBvdXRwdXRfYnBjKTsKKwllbHNlCisJCWlndF9hc3NlcnRfZighZW5hYmxlZCwgIihmYl8lZGJw YyA8PSBvdXRwdXRfJWRicGMpOiBEaXRoZXIgc2hvdWxkIGJlIGRpc2FibGVkXG4iLAorCQkJCWZi X2JwYywgb3V0cHV0X2JwYyk7CisKKwlpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1hcnksIE5V TEwpOworCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBQSVBFX05PTkUpOworCWlndF9kaXNw bGF5X2NvbW1pdDIoZGlzcGxheSwgZGlzcGxheS0+aXNfYXRvbWljID8gQ09NTUlUX0FUT01JQyA6 IENPTU1JVF9MRUdBQ1kpOworCXJldHVybjsKK30KKworLyogUmV0dXJucyB0cnVlIGlmIGFuIG91 dHB1dCBzdXBwb3J0cyBtYXggYnBjIHByb3BlcnR5LiAqLworc3RhdGljIGJvb2wgaGFzX21heF9i cGMoaWd0X291dHB1dF90ICpvdXRwdXQpCit7CisgICAgICAgIHJldHVybiBpZ3Rfb3V0cHV0X2hh c19wcm9wKG91dHB1dCwgSUdUX0NPTk5FQ1RPUl9NQVhfQlBDKSAmJgorICAgICAgICAgICAgICAg aWd0X291dHB1dF9nZXRfcHJvcChvdXRwdXQsIElHVF9DT05ORUNUT1JfTUFYX0JQQyk7Cit9CisK K3N0YXRpYyB2b2lkCitydW5fZGl0aGVyX3Rlc3QoZGF0YV90ICpkYXRhLCBpbnQgZmJfYnBjLCBp bnQgZmJfZm9ybWF0LCBpbnQgb3V0cHV0X2JwYywKKwkJdWludDMyX3QgZmxhZ3MpCit7CisJaWd0 X291dHB1dF90ICpvdXRwdXQ7CisJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNw bGF5OworCWVudW0gcGlwZSBwaXBlOworCXVuc2lnbmVkIGludCBtYXhfYnBjOworCWludCB2YWxp ZF9vdXRwdXRzID0gMDsKKworCWZvcl9lYWNoX2Nvbm5lY3RlZF9vdXRwdXQoZGlzcGxheSwgb3V0 cHV0KSB7CisJCWlmICghaGFzX21heF9icGMob3V0cHV0KSkKKwkJCWNvbnRpbnVlOworCisJCW1h eF9icGMgPSBnZXRfb3V0cHV0X2JwYyhkYXRhLCBvdXRwdXQpOworCQlpZihtYXhfYnBjIDwgb3V0 cHV0X2JwYykKKwkJCWNvbnRpbnVlOworCisJCWlndF9hc3NlcnQoaWd0X2NyZWF0ZV9mYihkYXRh LT5kcm1fZmQsIDUxMiwgNTEyLCBmYl9mb3JtYXQsCisJCQkJTE9DQUxfRFJNX0ZPUk1BVF9NT0Rf Tk9ORSwKKwkJCQkmZGF0YS0+ZmIpCisJCQkgICk7CisJCWZvcl9lYWNoX3BpcGUoZGlzcGxheSwg cGlwZSkgeworCQkJaWd0X2R5bmFtaWNfZigiY29ubmVjdG9yLSVzLXBpcGUtJXMiLCBvdXRwdXQt Pm5hbWUsIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKSB7CisJCQkJaWYgKCFpZ3RfcGlwZV9jb25u ZWN0b3JfdmFsaWQocGlwZSwgb3V0cHV0KSkKKwkJCQkJY29udGludWU7CisJCQkJdGVzdF9kaXRo ZXJpbmcoZGF0YSwgcGlwZSwgb3V0cHV0LCBmYl9icGMsIG91dHB1dF9icGMsIGZsYWdzKTsKKwkJ CX0KKwkJfQorCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEtPmZiKTsKKworCQl2 YWxpZF9vdXRwdXRzKys7CisJfQorCisJaWd0X3JlcXVpcmVfZih2YWxpZF9vdXRwdXRzLCAiTm8g Y29ubmVjdG9yIGZvdW5kIHdpdGggTUFYIEJQQyBjb25uZWN0b3IgcHJvcGVydHkuIChvcikgIgor CQkJCSAgICAgIk5vIGNvbm5lY3RvciBmb3VuZCB3aXRoIE1heCBQYW5lbCBCUEMgKCVkKSA+PSAl ZC5cbiIsCisJCSAgICAgIG1heF9icGMsIG91dHB1dF9icGMpOworfQorCitpZ3RfbWFpbgorewor CXN0cnVjdCB7CisJCWludCBicGM7CisJCWludCBmb3JtYXQ7CisJfSBmYl9mb3JtYXRzW10gPSB7 CisJCXsgSUdUX0ZSQU1FX0JVRkZFUl9CUENfOCwgRFJNX0ZPUk1BVF9SR0I4ODggfSwKKwkJeyBJ R1RfRlJBTUVfQlVGRkVSX0JQQ18xMCwgRFJNX0ZPUk1BVF9YUkdCMjEwMTAxMCB9LAorCQl7IElH VF9GUkFNRV9CVUZGRVJfQlBDXzE2LCBEUk1fRk9STUFUX1hSR0IxNjE2MTYxNkYgfSwKKwl9Owor CWludCBvdXRwdXRfYnBjW10gPSB7CisJCUlHVF9DT05ORUNUT1JfQlBDXzYsCisJCUlHVF9DT05O RUNUT1JfQlBDXzgsCisJCUlHVF9DT05ORUNUT1JfQlBDXzEwCisJfTsKKwlpbnQgaSwgajsKKwlk YXRhX3QgZGF0YSA9IHsgMCB9OworCisJaWd0X2ZpeHR1cmUgeworCQlkYXRhLmRybV9mZCA9IGRy bV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0lOVEVMKTsKKwkJa21zdGVzdF9zZXRfdnRfZ3Jh cGhpY3NfbW9kZSgpOworCisJCWlndF9kaXNwbGF5X3JlcXVpcmUoJmRhdGEuZGlzcGxheSwgZGF0 YS5kcm1fZmQpOworCQlpZ3RfZGlzcGxheV9yZXF1aXJlX291dHB1dCgmZGF0YS5kaXNwbGF5KTsK Kwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShmYl9mb3JtYXRzKTsgaSsrKSB7CisJ CWZvciAoaiA9IDA7IGogPCBBUlJBWV9TSVpFKG91dHB1dF9icGMpOyBqKyspIHsKKwkJCWlndF9k ZXNjcmliZV9mKCJGcmFtZWJ1ZmZlciBCUEM6JWQsIFBhbmVsIEJQQzolZCwgRXhwZWN0ZWQgRGl0 aGVyOiVzXG4iLAorCQkJCSAgICAgICBmYl9mb3JtYXRzW2ldLmJwYywgb3V0cHV0X2JwY1tqXSwK KwkJCQkgICAgICAgKGZiX2Zvcm1hdHNbaV0uYnBjID4gb3V0cHV0X2JwY1tqXSkgPyAiRW5hYmxl IjogIkRpc2FibGUiKTsKKworCQkJaWd0X3N1YnRlc3Rfd2l0aF9keW5hbWljX2YoIkZCLSVkQlBD LVZzLVBhbmVsLSVkQlBDIiwgZmJfZm9ybWF0c1tpXS5icGMsIG91dHB1dF9icGNbal0pCisJCQkJ cnVuX2RpdGhlcl90ZXN0KCZkYXRhLAorCQkJCQkJZmJfZm9ybWF0c1tpXS5icGMsCisJCQkJCQlm Yl9mb3JtYXRzW2ldLmZvcm1hdCwKKwkJCQkJCW91dHB1dF9icGNbal0sCisJCQkJCQlURVNUX05P TkUpOworCQl9CisJfQorCisJaWd0X2ZpeHR1cmUgeworCQlpZ3RfZGlzcGxheV9maW5pKCZkYXRh LmRpc3BsYXkpOworCX0KK30KZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMv bWVzb24uYnVpbGQKaW5kZXggY2ZlNTA4YzQuLjA1YTljZmI4IDEwMDY0NAotLS0gYS90ZXN0cy9t ZXNvbi5idWlsZAorKysgYi90ZXN0cy9tZXNvbi5idWlsZApAQCAtMjcsNiArMjcsNyBAQCB0ZXN0 X3Byb2dzID0gWwogCSdrbXNfY3Vyc29yX2NyYycsCiAJJ2ttc19jdXJzb3JfZWRnZV93YWxrJywK IAkna21zX2N1cnNvcl9sZWdhY3knLAorCSdrbXNfZGl0aGVyJywKIAkna21zX2RwX2F1eF9kZXYn LAogCSdrbXNfZHBfZHNjJywKIAkna21zX2RwX3RpbGVkX2Rpc3BsYXknLAotLSAKMi4yMC4xCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1h aWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK