From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM05-BY2-obe.outbound.protection.outlook.com (mail-eopbgr710085.outbound.protection.outlook.com [40.107.71.85]) by gabe.freedesktop.org (Postfix) with ESMTPS id CF3AA8961D for ; Mon, 27 May 2019 17:20:01 +0000 (UTC) From: Nicholas Kazlauskas Date: Mon, 27 May 2019 13:19:24 -0400 Message-ID: <20190527171924.19493-1-nicholas.kazlauskas@amd.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t] tests/amdgpu: Add color tests for amdgpu 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: igt-dev@lists.freedesktop.org List-ID: VGhlIERSTSBjb2xvciBtYW5hZ2VtZW50IHBpcGVsaW5lIGRvZXNuJ3QgZGlyZWN0bHkgbWFwIHRv IEFNRCBoYXJkd2FyZQpzbyBjcmVhdGl2ZSBzb2x1dGlvbnMgdG8gaW1wbGVtZW50aW5nIENSVEMg cmVnYW1tYSwgQ1RNIGFuZCBnYW1tYSB3ZXJlCm5lZWRlZCBmb3IgYm90aCBEQ0UgYW5kIERDTi4g QSBmZXcgbWlzdGFrZXMgd2VyZSBtYWRlIGluIHRoZSBwcm9jZXNzCnRoYXQgd2VyZW4ndCBjYXVn aHQgYnkga21zX2NvbG9yQCB0ZXN0czoKCi0gQ2FuJ3QgZ2V0IGxpbmVhciBkZWdhbW1hIG91dHB1 dCB3aXRob3V0IHNldHRpbmcgYSBjdXN0b20gZGVnYW1tYQotIENhbid0IHNwZWNpZnkgYSBub24t bGluZWFyIGRlZ2FtbWEgdGhhdCBwcm9kdWNlcyBjb3JyZWN0IG91dHB1dAotIENhbid0IHNwZWNp ZnkgYSBjb3JyZWN0IGdhbW1hIHdoZW4gYSBsaW5lYXIgZGVnYW1tYSBpcyB1c2VkCgpUaGVzZSBh cmUgY2F1c2VkIGJ5IHVzaW5nIGltcGxpY2l0IHNSR0IgZGVnYW1tYSB0aGVuIHNSR0IgZ2FtbWEg d2hlbiBubwptYXRyaWNlcyBhcmUgc2V0LiBUaGlzIHByb2R1Y2VzIHZpc3VhbGx5IGNvcnJlY3Qg b3V0cHV0IHdoZW4gdXNpbmcgYQpDVE0gd2l0aCBubyBtYXRyaWNlcyBzZXQsIGJ1dCBpdCdzIGFs c28gdGVjaG5pY2FsbHkgdGhlIGluY29ycmVjdApvdXRwdXQgYWNjb3JkaW5nIHRvIHRoZSBEUk0g QVBJIGRvY3VtZW50YXRpb24uCgpUaGVzZSB0ZXN0cyBoZWxwIHZlcmlmeSB0aGF0IEFNREdQVSBm b2xsb3dzIHRoZSBEUk0gc3BlYyB3aGVuIGl0IGNvbWVzCnRvIHNldHRpbmcgbGluZWFyL2J5cGFz cyBnYW1tYSBhbmQgcmVnYW1tYSBMVVQuCgpUaGUgZXhpc3Rpbmcga21zX2NvbG9yQCB0ZXN0cyBh cmUgd3JpdHRlbiBjb3JyZWN0bHkgYWxyZWFkeSwgc28KYW55dGhpbmcgdGhhdCBsb29rcyBzaGFy ZWQgaW4gdGhlc2UgaXMgcmVhbGx5IGp1c3QgdG8gdmVyaWZ5IHRoYXQgd2UncmUKbm8gbG9uZ2Vy IGRvaW5nIGFueSBzdHJhbmdlIHRlc3Qgc3BlY2lmaWMgd29ya2Fyb3VuZHMgb3V0c2lkZSBvZiB0 aGUKc3BlYyBvciBkb2N1bWVudGF0aW9uLgoKQ2M6IExlbyBMaSA8c3VucGVuZy5saUBhbWQuY29t PgpDYzogSGFycnkgV2VudGxhbmQgPGhhcnJ5LndlbnRsYW5kQGFtZC5jb20+ClNpZ25lZC1vZmYt Ynk6IE5pY2hvbGFzIEthemxhdXNrYXMgPG5pY2hvbGFzLmthemxhdXNrYXNAYW1kLmNvbT4KLS0t CiB0ZXN0cy9NYWtlZmlsZS5zb3VyY2VzICAgfCAgIDEgKwogdGVzdHMvYW1kZ3B1L2FtZF9jb2xv ci5jIHwgNDA1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdGVzdHMv YW1kZ3B1L21lc29uLmJ1aWxkIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNDA3IGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9hbWRncHUvYW1kX2NvbG9yLmMKCmRpZmYg LS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpp bmRleCAyZDVjOTI5ZS4uZWYzYzAzZjIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtNiw2ICs2LDcgQEAgTk9VVkVBVV9U RVNUUyA9IFwKIAogQU1ER1BVX1RFU1RTID0gXAogCWFtZGdwdS9hbWRfYmFzaWMgXAorCWFtZGdw dS9hbWRfY29sb3IgXAogCWFtZGdwdS9hbWRfY3Nfbm9wIFwKIAlhbWRncHUvYW1kX3ByaW1lIFwK IAlhbWRncHUvYW1kX2FibSBcCmRpZmYgLS1naXQgYS90ZXN0cy9hbWRncHUvYW1kX2NvbG9yLmMg Yi90ZXN0cy9hbWRncHUvYW1kX2NvbG9yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAuLjBiYmVlNDNkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvYW1kZ3B1L2FtZF9jb2xv ci5jCkBAIC0wLDAgKzEsNDA1IEBACisvKgorICogQ29weXJpZ2h0IDIwMTkgQWR2YW5jZWQgTWlj cm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy ZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j bHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Ig c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBj b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRI RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL SU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAor ICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5Z IENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VU IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICog T1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpbmNsdWRlICJpZ3QuaCIK KworLyogKERlKWdhbW1hIExVVC4gKi8KK3R5cGVkZWYgc3RydWN0IGx1dCB7CisJc3RydWN0IGRy bV9jb2xvcl9sdXQgKmRhdGE7CisJdWludDMyX3Qgc2l6ZTsKK30gbHV0X3Q7CisKKy8qIFJHQiBj b2xvci4gKi8KK3R5cGVkZWYgc3RydWN0IGNvbG9yIHsKKwlkb3VibGUgcjsKKwlkb3VibGUgZzsK Kwlkb3VibGUgYjsKK30gY29sb3JfdDsKKworLyogQ29tbW9uIHRlc3QgZGF0YS4gKi8KK3R5cGVk ZWYgc3RydWN0IGRhdGEgeworCWlndF9kaXNwbGF5X3QgZGlzcGxheTsKKwlpZ3RfcGxhbmVfdCAq cHJpbWFyeTsKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKKwlpZ3RfcGlwZV90ICpwaXBlOworCWln dF9waXBlX2NyY190ICpwaXBlX2NyYzsKKwlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7CisJZW51bSBw aXBlIHBpcGVfaWQ7CisJaW50IGZkOworCWludCB3OworCWludCBoOworCXVpbnQzMl90IHJlZ2Ft bWFfbHV0X3NpemU7CisJdWludDMyX3QgZGVnYW1tYV9sdXRfc2l6ZTsKK30gZGF0YV90OworCitz dGF0aWMgdm9pZCBsdXRfaW5pdChsdXRfdCAqbHV0LCB1aW50MzJfdCBzaXplKQoreworCWlndF9h c3NlcnQoc2l6ZSA+IDApOworCisJbHV0LT5zaXplID0gc2l6ZTsKKwlsdXQtPmRhdGEgPSBtYWxs b2Moc2l6ZSAqIHNpemVvZihzdHJ1Y3QgZHJtX2NvbG9yX2x1dCkpOworCWlndF9hc3NlcnQobHV0 KTsKK30KKworLyogR2VuZXJhdGVzIHRoZSBsaW5lYXIgZ2FtbWEgTFVULiAqLworc3RhdGljIHZv aWQgbHV0X2dlbl9saW5lYXIobHV0X3QgKmx1dCwgdWludDE2X3QgbWFzaykKK3sKKwl1aW50MzJf dCBuID0gbHV0LT5zaXplIC0gMTsKKwl1aW50MzJfdCBpOworCisJZm9yIChpID0gMDsgaSA8IGx1 dC0+c2l6ZTsgKytpKSB7CisJCXVpbnQzMl90IHYgPSAoaSAqIDB4ZmZmZiAvIG4pICYgbWFzazsK KworCQlsdXQtPmRhdGFbaV0ucmVkID0gdjsKKwkJbHV0LT5kYXRhW2ldLmJsdWUgPSB2OworCQls dXQtPmRhdGFbaV0uZ3JlZW4gPSB2OworCX0KK30KKworLyogR2VuZXJhdGVzIHRoZSBzUkdCIGRl Z2FtbWEgTFVULiAqLworc3RhdGljIHZvaWQgbHV0X2dlbl9kZWdhbW1hX3NyZ2IobHV0X3QgKmx1 dCwgdWludDE2X3QgbWFzaykKK3sKKwlkb3VibGUgcmFuZ2UgPSBsdXQtPnNpemUgLSAxOworCXVp bnQzMl90IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbHV0LT5zaXplOyArK2kpIHsKKwkJZG91Ymxl IHUsIGNvZWZmOworCQl1aW50MzJfdCB2OworCisJCXUgPSBpIC8gcmFuZ2U7CisJCWNvZWZmID0g dSA8PSAwLjA0MDQ0OTkzNiA/ICh1IC8gMTIuOTIpCisJCQkJCSA6IChwb3coKHUgKyAwLjA1NSkg LyAxLjA1NSwgMi40KSk7CisJCXYgPSAodWludDMyX3QpKGNvZWZmICogMHhmZmZmKSAmIG1hc2s7 CisKKwkJbHV0LT5kYXRhW2ldLnJlZCA9IHY7CisJCWx1dC0+ZGF0YVtpXS5ibHVlID0gdjsKKwkJ bHV0LT5kYXRhW2ldLmdyZWVuID0gdjsKKwl9Cit9CisKKy8qIEdlbmVyYXRlcyB0aGUgc1JHQiBn YW1tYSBMVVQuICovCitzdGF0aWMgdm9pZCBsdXRfZ2VuX3JlZ2FtbWFfc3JnYihsdXRfdCAqbHV0 LCB1aW50MTZfdCBtYXNrKQoreworCWRvdWJsZSByYW5nZSA9IGx1dC0+c2l6ZSAtIDE7CisJdWlu dDMyX3QgaTsKKworCWZvciAoaSA9IDA7IGkgPCBsdXQtPnNpemU7ICsraSkgeworCQlkb3VibGUg dSwgY29lZmY7CisJCXVpbnQzMl90IHY7CisKKwkJdSA9IGkgLyByYW5nZTsKKwkJY29lZmYgPSB1 IDw9IDAuMDAzMTMwODAgPyAoMTIuOTIgKiB1KQorCQkJCQk6ICgxLjA1NSAqIHBvdyh1LCAxLjAg LyAyLjQpIC0gMC4wNTUpOworCQl2ID0gKHVpbnQzMl90KShjb2VmZiAqIDB4ZmZmZikgJiBtYXNr OworCisJCWx1dC0+ZGF0YVtpXS5yZWQgPSB2OworCQlsdXQtPmRhdGFbaV0uYmx1ZSA9IHY7CisJ CWx1dC0+ZGF0YVtpXS5ncmVlbiA9IHY7CisJfQorfQorCitzdGF0aWMgdm9pZCBsdXRfZnJlZShs dXRfdCAqbHV0KQoreworCWlmIChsdXQtPmRhdGEpIHsKKwkJZnJlZShsdXQtPmRhdGEpOworCQls dXQtPmRhdGEgPSBOVUxMOworCX0KKworCWx1dC0+c2l6ZSA9IDA7Cit9CisKKy8qIEZpbGxzIGEg RkIgd2l0aCB0aGUgc29saWQgY29sb3IgZ2l2ZW4uICovCitzdGF0aWMgdm9pZCBkcmF3X2NvbG9y KGlndF9mYl90ICpmYiwgZG91YmxlIHIsIGRvdWJsZSBnLCBkb3VibGUgYikKK3sKKwljYWlyb190 ICpjciA9IGlndF9nZXRfY2Fpcm9fY3R4KGZiLT5mZCwgZmIpOworCisJY2Fpcm9fc2V0X29wZXJh dG9yKGNyLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworCWlndF9wYWludF9jb2xvcihjciwgMCwg MCwgZmItPndpZHRoLCBmYi0+aGVpZ2h0LCByLCBnLCBiKTsKKwlpZ3RfcHV0X2NhaXJvX2N0eChm Yi0+ZmQsIGZiLCBjcik7Cit9CisKKy8qIEdlbmVyYXRlcyB0aGUgZ2FtbWEgdGVzdCBwYXR0ZXJu LiAqLworc3RhdGljIHZvaWQgZHJhd19nYW1tYV90ZXN0KGlndF9mYl90ICpmYikKK3sKKwljYWly b190ICpjciA9IGlndF9nZXRfY2Fpcm9fY3R4KGZiLT5mZCwgZmIpOworCWludCBnaCA9IGZiLT5o ZWlnaHQgLyA0OworCisJaWd0X3BhaW50X2NvbG9yX2dyYWRpZW50KGNyLCAwLCAwLCBmYi0+d2lk dGgsIGdoLCAxLCAxLCAxKTsKKwlpZ3RfcGFpbnRfY29sb3JfZ3JhZGllbnQoY3IsIDAsIGdoLCBm Yi0+d2lkdGgsIGdoLCAxLCAwLCAwKTsKKwlpZ3RfcGFpbnRfY29sb3JfZ3JhZGllbnQoY3IsIDAs IGdoICogMiwgZmItPndpZHRoLCBnaCwgMCwgMSwgMCk7CisJaWd0X3BhaW50X2NvbG9yX2dyYWRp ZW50KGNyLCAwLCBnaCAqIDMsIGZiLT53aWR0aCwgZ2gsIDAsIDAsIDEpOworCisJaWd0X3B1dF9j YWlyb19jdHgoZmItPmZkLCBmYiwgY3IpOworfQorCisvKiBTZXRzIHRoZSBkZWdhbW1hIExVVC4g Ki8KK3N0YXRpYyB2b2lkIHNldF9kZWdhbW1hX2x1dChkYXRhX3QgKmRhdGEsIGx1dF90IGNvbnN0 ICpsdXQpCit7CisJc2l6ZV90IHNpemUgPSBsdXQgPyBzaXplb2YobHV0LT5kYXRhWzBdKSAqIGx1 dC0+c2l6ZSA6IDA7CisJY29uc3Qgdm9pZCAqcHRyID0gbHV0ID8gbHV0LT5kYXRhIDogTlVMTDsK KworCWlndF9waXBlX29ial9yZXBsYWNlX3Byb3BfYmxvYihkYXRhLT5waXBlLCBJR1RfQ1JUQ19E RUdBTU1BX0xVVCwgcHRyLAorCQkJCSAgICAgICBzaXplKTsKK30KKworLyogU2V0cyB0aGUgcmVn YW1tYSBMVVQuICovCitzdGF0aWMgdm9pZCBzZXRfcmVnYW1tYV9sdXQoZGF0YV90ICpkYXRhLCBs dXRfdCBjb25zdCAqbHV0KQoreworCXNpemVfdCBzaXplID0gbHV0ID8gc2l6ZW9mKGx1dC0+ZGF0 YVswXSkgKiBsdXQtPnNpemUgOiAwOworCWNvbnN0IHZvaWQgKnB0ciA9IGx1dCA/IGx1dC0+ZGF0 YSA6IE5VTEw7CisKKwlpZ3RfcGlwZV9vYmpfcmVwbGFjZV9wcm9wX2Jsb2IoZGF0YS0+cGlwZSwg SUdUX0NSVENfR0FNTUFfTFVULCBwdHIsCisJCQkJICAgICAgIHNpemUpOworfQorCisvKiBDb21t b24gdGVzdCBzZXR1cC4gKi8KK3N0YXRpYyB2b2lkIHRlc3RfaW5pdChkYXRhX3QgKmRhdGEpCit7 CisJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5OworCisJLyogSXQgZG9l c24ndCBtYXR0ZXIgd2hpY2ggcGlwZSB3ZSBjaG9vc2Ugb24gYW1kcGd1LiAqLworCWRhdGEtPnBp cGVfaWQgPSBQSVBFX0E7CisJZGF0YS0+cGlwZSA9ICZkYXRhLT5kaXNwbGF5LnBpcGVzW2RhdGEt PnBpcGVfaWRdOworCisJaWd0X2Rpc3BsYXlfcmVzZXQoZGlzcGxheSk7CisKKwlkYXRhLT5vdXRw dXQgPSBpZ3RfZ2V0X3NpbmdsZV9vdXRwdXRfZm9yX3BpcGUoZGlzcGxheSwgZGF0YS0+cGlwZV9p ZCk7CisJaWd0X3JlcXVpcmUoZGF0YS0+b3V0cHV0KTsKKworCWRhdGEtPm1vZGUgPSBpZ3Rfb3V0 cHV0X2dldF9tb2RlKGRhdGEtPm91dHB1dCk7CisJaWd0X2Fzc2VydChkYXRhLT5tb2RlKTsKKwor CWRhdGEtPnByaW1hcnkgPQorCQlpZ3RfcGlwZV9nZXRfcGxhbmVfdHlwZShkYXRhLT5waXBlLCBE Uk1fUExBTkVfVFlQRV9QUklNQVJZKTsKKworCWRhdGEtPnBpcGVfY3JjID0gaWd0X3BpcGVfY3Jj X25ldyhkYXRhLT5mZCwgZGF0YS0+cGlwZV9pZCwKKwkJCQkJICBJTlRFTF9QSVBFX0NSQ19TT1VS Q0VfQVVUTyk7CisKKwlpZ3Rfb3V0cHV0X3NldF9waXBlKGRhdGEtPm91dHB1dCwgZGF0YS0+cGlw ZV9pZCk7CisKKwlkYXRhLT5kZWdhbW1hX2x1dF9zaXplID0KKwkJaWd0X3BpcGVfb2JqX2dldF9w cm9wKGRhdGEtPnBpcGUsIElHVF9DUlRDX0RFR0FNTUFfTFVUX1NJWkUpOworCWlndF9hc3NlcnRf bHQoMCwgZGF0YS0+ZGVnYW1tYV9sdXRfc2l6ZSk7CisKKwlkYXRhLT5yZWdhbW1hX2x1dF9zaXpl ID0KKwkJaWd0X3BpcGVfb2JqX2dldF9wcm9wKGRhdGEtPnBpcGUsIElHVF9DUlRDX0dBTU1BX0xV VF9TSVpFKTsKKwlpZ3RfYXNzZXJ0X2x0KDAsIGRhdGEtPnJlZ2FtbWFfbHV0X3NpemUpOworCisJ ZGF0YS0+dyA9IGRhdGEtPm1vZGUtPmhkaXNwbGF5OworCWRhdGEtPmggPSBkYXRhLT5tb2RlLT52 ZGlzcGxheTsKK30KKworLyogQ29tbW9uIHRlc3QgY2xlYW51cC4gKi8KK3N0YXRpYyB2b2lkIHRl c3RfZmluaShkYXRhX3QgKmRhdGEpCit7CisJaWd0X3BpcGVfY3JjX2ZyZWUoZGF0YS0+cGlwZV9j cmMpOworCWlndF9kaXNwbGF5X3Jlc2V0KCZkYXRhLT5kaXNwbGF5KTsKK30KKworLyoKKyAqIE9s ZGVyIHZlcnNpb25zIG9mIGFtZGdwdSB3b3VsZCBwdXQgdGhlIHBpcGUgaW50byBieXBhc3MgbW9k ZSBmb3IgZGVnYW1tYQorICogd2hlbiBwYXNzZWQgYSBsaW5lYXIgc1JHQiBtYXRyaXggYnV0IHdv dWxkIHN0aWxsIHVzZSBhbiBzUkdCIHJlZ2FtbWEKKyAqIG1hdHJpeCBpZiBub3QgcGFzc2VkIGFu eS4gVGhlIHdob2xlIHBpcGUgc2hvdWxkIGJlIGluIGxpbmVhciBieXBhc3MgbW9kZQorICogd2hl biBhbGwgdGhlIG1hdHJpY2VzIGFyZSBOVUxMIC0gQ1JDcyBmb3IgYSBsaW5lYXIgZGVnYW1tYSBt YXRyaXggYW5kCisgKiBhIE5VTEwgb25lIHNob3VsZCBtYXRjaC4KKyAqLworc3RhdGljIHZvaWQg dGVzdF9jcnRjX2xpbmVhcl9kZWdhbW1hKGRhdGFfdCAqZGF0YSkKK3sKKwlpZ3RfZGlzcGxheV90 ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7CisJaWd0X2NyY190IHJlZl9jcmMsIG5ld19jcmM7 CisJaWd0X2ZiX3QgYWZiOworCWx1dF90IGx1dF9saW5lYXI7CisKKwl0ZXN0X2luaXQoZGF0YSk7 CisKKwlsdXRfaW5pdCgmbHV0X2xpbmVhciwgZGF0YS0+ZGVnYW1tYV9sdXRfc2l6ZSk7CisJbHV0 X2dlbl9saW5lYXIoJmx1dF9saW5lYXIsIDB4ZmZmZik7CisKKwlpZ3RfY3JlYXRlX2ZiKGRhdGEt PmZkLCBkYXRhLT53LCBkYXRhLT5oLCBEUk1fRk9STUFUX1hSR0I4ODg4LCAwLCAmYWZiKTsKKwlk cmF3X2dhbW1hX3Rlc3QoJmFmYik7CisKKwkvKiBEcmF3IHRoZSByZWZlcmVuY2UgaW1hZ2UuICov CisJaWd0X3BsYW5lX3NldF9mYihkYXRhLT5wcmltYXJ5LCAmYWZiKTsKKwlzZXRfcmVnYW1tYV9s dXQoZGF0YSwgTlVMTCk7CisJc2V0X2RlZ2FtbWFfbHV0KGRhdGEsIE5VTEwpOworCWlndF9kaXNw bGF5X2NvbW1pdF9hdG9taWMoZGlzcGxheSwgRFJNX01PREVfQVRPTUlDX0FMTE9XX01PREVTRVQs IE5VTEwpOworCisJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmcmVm X2NyYyk7CisKKwkvKiBBcHBseSBhIGxpbmVhciBkZWdhbW1hLiBUaGUgcmVzdWx0IHNob3VsZCBy ZW1haW4gdGhlIHNhbWUuICovCisJc2V0X2RlZ2FtbWFfbHV0KGRhdGEsICZsdXRfbGluZWFyKTsK KwlpZ3RfZGlzcGxheV9jb21taXRfYXRvbWljKGRpc3BsYXksIDAsIE5VTEwpOworCisJaWd0X3Bp cGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmbmV3X2NyYyk7CisJaWd0X2Fzc2Vy dF9jcmNfZXF1YWwoJnJlZl9jcmMsICZuZXdfY3JjKTsKKworCXRlc3RfZmluaShkYXRhKTsKKwlp Z3RfcmVtb3ZlX2ZiKGRhdGEtPmZkLCAmYWZiKTsKKwlsdXRfZnJlZSgmbHV0X2xpbmVhcik7Cit9 CisKKy8qCisgKiBPbGRlciB2ZXJzaW9ucyBvZiBhbWRncHUgd291bGQgYXBwbHkgdGhlIENSVEMg cmVnYW1tYSBvbiB0b3Agb2YgYSBjdXN0b20KKyAqIHNSR0IgcmVnYW1tYSBtYXRyaXggd2l0aCBp bmNvcnJlY3QgY2FsY3VsYXRpb25zIG9yIHJvdW5kaW5nIGVycm9ycy4KKyAqIElmIHdlIHB1dCB0 aGUgcGlwZSBpbnRvIGJ5cGFzcyBvciB1c2UgdGhlIGhhcmR3YXJlIGRlZmluZWQgc1JHQiByZWdh bW1hCisgKiBvbiB0aGUgcGxhbmUgdGhlbiB3ZSBjYW4gYW5kIHNob3VsZCBnZXQgdGhlIGNvcnJl Y3QgQ1JUQyB3aGVuIHBhc3NpbmcgYQorICogbGluZXIgcmVnYW1tYSBtYXRyaXggdG8gRFJNLgor ICovCitzdGF0aWMgdm9pZCB0ZXN0X2NydGNfbGluZWFyX3JlZ2FtbWEoZGF0YV90ICpkYXRhKQor eworCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKKwlpZ3RfY3JjX3Qg cmVmX2NyYywgbmV3X2NyYzsKKwlpZ3RfZmJfdCBhZmI7CisJbHV0X3QgbHV0X2xpbmVhcjsKKwor CXRlc3RfaW5pdChkYXRhKTsKKworCWx1dF9pbml0KCZsdXRfbGluZWFyLCBkYXRhLT5yZWdhbW1h X2x1dF9zaXplKTsKKwlsdXRfZ2VuX2xpbmVhcigmbHV0X2xpbmVhciwgMHhmZmZmKTsKKworCWln dF9jcmVhdGVfZmIoZGF0YS0+ZmQsIGRhdGEtPncsIGRhdGEtPmgsIERSTV9GT1JNQVRfWFJHQjg4 ODgsIDAsICZhZmIpOworCWRyYXdfZ2FtbWFfdGVzdCgmYWZiKTsKKworCS8qIERyYXcgdGhlIHJl ZmVyZW5jZSBpbWFnZS4gKi8KKwlpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1hcnksICZhZmIp OworCXNldF9yZWdhbW1hX2x1dChkYXRhLCBOVUxMKTsKKwlzZXRfZGVnYW1tYV9sdXQoZGF0YSwg TlVMTCk7CisJaWd0X2Rpc3BsYXlfY29tbWl0X2F0b21pYyhkaXNwbGF5LCBEUk1fTU9ERV9BVE9N SUNfQUxMT1dfTU9ERVNFVCwgTlVMTCk7CisKKwlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0 YS0+cGlwZV9jcmMsICZyZWZfY3JjKTsKKworCS8qIEFwcGx5IGEgbGluZWFyIGRlZ2FtbWEuIFRo ZSByZXN1bHQgc2hvdWxkIHJlbWFpbiB0aGUgc2FtZS4gKi8KKwlzZXRfcmVnYW1tYV9sdXQoZGF0 YSwgJmx1dF9saW5lYXIpOworCWlndF9kaXNwbGF5X2NvbW1pdF9hdG9taWMoZGlzcGxheSwgMCwg TlVMTCk7CisKKwlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMsICZuZXdf Y3JjKTsKKwlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmcmVmX2NyYywgJm5ld19jcmMpOworCisJdGVz dF9maW5pKGRhdGEpOworCWlndF9yZW1vdmVfZmIoZGF0YS0+ZmQsICZhZmIpOworCWx1dF9mcmVl KCZsdXRfbGluZWFyKTsKK30KKworLyoKKyAqIFRlc3RzIExVVCBhY2N1cmFjeS4gQ1JUQyByZWdh bW1hIGFuZCBDUlRDIGRlZ2FtbWEgc2hvdWxkIHByb2R1Y2UgYSB2aXN1YWxseQorICogY29ycmVj dCBpbWFnZSB3aGVuIHVzZWQuIEhhcmR3YXJlIGxpbWl0YXRpb25zIG9uIGRlZ2FtbWEgcHJldmVu dCB0aGlzIGZyb20KKyAqIGJlaW5nIENSQyBsZXZlbCBhY2N1cmF0ZSBhY3Jvc3MgYSBmdWxsIHRl c3QgZ3JhZGllbnQgYnV0IG1vc3QgdmFsdWVzIHNob3VsZAorICogc3RpbGwgbWF0Y2guCisgKgor ICogVGhpcyB0ZXN0IGNhbid0IHBhc3Mgb24gRENFIGJlY2F1c2UgaXQgZG9lc24ndCBzdXBwb3J0 IG5vbi1saW5lYXIgZGVnYW1tYS4KKyAqLworc3RhdGljIHZvaWQgdGVzdF9jcnRjX2x1dF9hY2N1 cmFjeShkYXRhX3QgKmRhdGEpCit7CisJLyoKKwkgKiBDaGFubmVscyBhcmUgaW5kZXBlbmRlbnQs IHNvIHdlIGNhbiB2ZXJpZnkgbXVsdGlwbGUgY29sb3JzIGF0IHRoZQorCSAqIHNhbWUgdGltZSBm b3IgaW1wcm92ZWQgcGVyZm9ybWFuY2UuCisJICovCisJc3RhdGljIGNvbnN0IGNvbG9yX3QgY29s b3JzW10gPSB7CisJCXsgMS4wMCwgMS4wMCwgMS4wMCB9LAorCQl7IDAuOTAsIDAuODUsIDAuNzUg fSwgLyogMC45NSBmYWlscyAqLworCQl7IDAuNzAsIDAuNjUsIDAuNjAgfSwKKwkJeyAwLjU1LCAw LjUwLCAwLjQ1IH0sCisJCXsgMC40MCwgMC4zNSwgMC4zMCB9LAorCQl7IDAuMjUsIDAuMjAsIDAu MTUgfSwKKwkJeyAwLjEwLCAwLjA0LCAwLjAyIH0sIC8qIDAuMDUgZmFpbHMgKi8KKwkJeyAwLjAw LCAwLjAwLCAwLjAwIH0sCisJfTsKKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRp c3BsYXk7CisJaWd0X2NyY190IHJlZl9jcmMsIG5ld19jcmM7CisJaWd0X2ZiX3QgYWZiOworCWx1 dF90IGx1dF9kZWdhbW1hLCBsdXRfcmVnYW1tYTsKKwlpbnQgaSwgdywgaDsKKworCXRlc3RfaW5p dChkYXRhKTsKKworCWx1dF9pbml0KCZsdXRfZGVnYW1tYSwgZGF0YS0+ZGVnYW1tYV9sdXRfc2l6 ZSk7CisJbHV0X2dlbl9kZWdhbW1hX3NyZ2IoJmx1dF9kZWdhbW1hLCAweGZmZmYpOworCisJbHV0 X2luaXQoJmx1dF9yZWdhbW1hLCBkYXRhLT5yZWdhbW1hX2x1dF9zaXplKTsKKwlsdXRfZ2VuX3Jl Z2FtbWFfc3JnYigmbHV0X3JlZ2FtbWEsIDB4ZmZmZik7CisKKwkvKiBEb24ndCBkcmF3IGFjcm9z cyB0aGUgd2hvbGUgc2NyZWVuIHRvIGltcHJvdmUgcGVyZi4gKi8KKwl3ID0gNjQ7CisJaCA9IDY0 OworCisJaWd0X2NyZWF0ZV9mYihkYXRhLT5mZCwgdywgaCwgRFJNX0ZPUk1BVF9YUkdCODg4OCwg MCwgJmFmYik7CisJaWd0X3BsYW5lX3NldF9mYihkYXRhLT5wcmltYXJ5LCAmYWZiKTsKKwlpZ3Rf ZGlzcGxheV9jb21taXRfYXRvbWljKGRpc3BsYXksIERSTV9NT0RFX0FUT01JQ19BTExPV19NT0RF U0VULCBOVUxMKTsKKworCS8qIFRlc3QgY29sb3JzLiAqLworCWZvciAoaSA9IDA7IGkgPCBBUlJB WV9TSVpFKGNvbG9ycyk7ICsraSkgeworCQljb2xvcl90IGNvbCA9IGNvbG9yc1tpXTsKKworCQlp Z3RfaW5mbygiVGVzdGluZyBjb2xvciAoJS4yZiwgJS4yZiwgJS4yZikgLi4uXG4iLCBjb2wuciwg Y29sLmcsCisJCQkgY29sLmIpOworCisJCWRyYXdfY29sb3IoJmFmYiwgY29sLnIsIGNvbC5nLCBj b2wuYik7CisKKwkJc2V0X3JlZ2FtbWFfbHV0KGRhdGEsIE5VTEwpOworCQlzZXRfZGVnYW1tYV9s dXQoZGF0YSwgTlVMTCk7CisJCWlndF9kaXNwbGF5X2NvbW1pdF9hdG9taWMoZGlzcGxheSwgMCwg TlVMTCk7CisKKwkJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmcmVm X2NyYyk7CisKKwkJc2V0X2RlZ2FtbWFfbHV0KGRhdGEsICZsdXRfZGVnYW1tYSk7CisJCXNldF9y ZWdhbW1hX2x1dChkYXRhLCAmbHV0X3JlZ2FtbWEpOworCQlpZ3RfZGlzcGxheV9jb21taXRfYXRv bWljKGRpc3BsYXksIDAsIE5VTEwpOworCisJCWlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhkYXRh LT5waXBlX2NyYywgJm5ld19jcmMpOworCisJCWlndF9hc3NlcnRfY3JjX2VxdWFsKCZyZWZfY3Jj LCAmbmV3X2NyYyk7CisJfQorCisJdGVzdF9maW5pKGRhdGEpOworCWlndF9yZW1vdmVfZmIoZGF0 YS0+ZmQsICZhZmIpOworCWx1dF9mcmVlKCZsdXRfcmVnYW1tYSk7CisJbHV0X2ZyZWUoJmx1dF9k ZWdhbW1hKTsKK30KKworaWd0X21haW4KK3sKKwlkYXRhX3QgZGF0YTsKKworCWlndF9za2lwX29u X3NpbXVsYXRpb24oKTsKKworCW1lbXNldCgmZGF0YSwgMCwgc2l6ZW9mKGRhdGEpKTsKKworCWln dF9maXh0dXJlCisJeworCQlkYXRhLmZkID0gZHJtX29wZW5fZHJpdmVyX21hc3RlcihEUklWRVJf QU1ER1BVKTsKKworCQlrbXN0ZXN0X3NldF92dF9ncmFwaGljc19tb2RlKCk7CisKKwkJaWd0X2Rp c3BsYXlfcmVxdWlyZSgmZGF0YS5kaXNwbGF5LCBkYXRhLmZkKTsKKwkJaWd0X3JlcXVpcmUoZGF0 YS5kaXNwbGF5LmlzX2F0b21pYyk7CisJCWlndF9kaXNwbGF5X3JlcXVpcmVfb3V0cHV0KCZkYXRh LmRpc3BsYXkpOworCX0KKworCWlndF9zdWJ0ZXN0KCJjcnRjLWxpbmVhci1kZWdhbW1hIikgdGVz dF9jcnRjX2xpbmVhcl9kZWdhbW1hKCZkYXRhKTsKKwlpZ3Rfc3VidGVzdCgiY3J0Yy1saW5lYXIt cmVnYW1tYSIpIHRlc3RfY3J0Y19saW5lYXJfcmVnYW1tYSgmZGF0YSk7CisJaWd0X3N1YnRlc3Qo ImNydGMtbHV0LWFjY3VyYWN5IikgdGVzdF9jcnRjX2x1dF9hY2N1cmFjeSgmZGF0YSk7CisKKwlp Z3RfZml4dHVyZQorCXsKKwkJaWd0X2Rpc3BsYXlfZmluaSgmZGF0YS5kaXNwbGF5KTsKKwl9Cit9 CmRpZmYgLS1naXQgYS90ZXN0cy9hbWRncHUvbWVzb24uYnVpbGQgYi90ZXN0cy9hbWRncHUvbWVz b24uYnVpbGQKaW5kZXggMWFmZWNlODYuLjQyMDg2Mzc0IDEwMDY0NAotLS0gYS90ZXN0cy9hbWRn cHUvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvYW1kZ3B1L21lc29uLmJ1aWxkCkBAIC00LDYgKzQs NyBAQCBhbWRncHVfZGVwcyA9IHRlc3RfZGVwcwogaWYgbGliZHJtX2FtZGdwdS5mb3VuZCgpCiAJ YW1kZ3B1X3Byb2dzICs9IFsgJ2FtZF9hYm0nLAogCQkJICAnYW1kX2Jhc2ljJywKKwkJCSAgJ2Ft ZF9jb2xvcicsCiAJCQkgICdhbWRfY3Nfbm9wJywKIAkJCSAgJ2FtZF9wcmltZScsCiAJCQldCi0t IAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==