From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-eopbgr760047.outbound.protection.outlook.com [40.107.76.47]) by gabe.freedesktop.org (Postfix) with ESMTPS id 284CC6E181 for ; Tue, 25 Jun 2019 19:46:01 +0000 (UTC) From: Dingchen Zhang Date: Tue, 25 Jun 2019 15:42:18 -0400 Message-ID: <20190625194218.18106-3-dingchen.zhang@amd.com> In-Reply-To: <20190625194218.18106-1-dingchen.zhang@amd.com> References: <20190625194218.18106-1-dingchen.zhang@amd.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v2 3/3] tests/amdgpu: add 8bpc bypass mode test. 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: VG8gdmFsaWRhdGUgdGhlIEFNREdQVSBieXBhc3MgbW9kZSBmZWF0dXJlLgoKR2VuZXJhdGUgRFAg dGVzdCBwYXR0ZXJucywgcHJvZ3JhbSB0aGUgcGlwZSBhbmQgY2hlY2sgaWYKdGhlIENSQ3Mgb2Yg ZnJhbWVidWZmZXIgYW5kIERQIHJlY2VpdmVyIG1hdGNoLgoKdjI6IHVzZSB0aGUgRFBSWCBwaXBl IGNyYyBzb3VyY2UgZGlyZWN0bHkgKE5pY2hvbGFzKQoKQ2M6IEhhcnJ5IFdlbnRsYW5kIDxIYXJy eS5XZW50bGFuZEBhbWQuY29tPgpDYzogTmljayBLYXpsYXVza2FzIDxOaWNob2xhcy5LYXpsYXVz a2FzQGFtZC5jb20+ClNpZ25lZC1vZmYtYnk6IERpbmdjaGVuIFpoYW5nIDxkaW5nY2hlbi56aGFu Z0BhbWQuY29tPgotLS0KIHRlc3RzL2FtZGdwdS9hbWRfYnlwYXNzLmMgfCAzODMgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3RzL2FtZGdwdS9tZXNvbi5idWlsZCAg fCAgIDEgKwogMiBmaWxlcyBjaGFuZ2VkLCAzODQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHRlc3RzL2FtZGdwdS9hbWRfYnlwYXNzLmMKCmRpZmYgLS1naXQgYS90ZXN0cy9hbWRn cHUvYW1kX2J5cGFzcy5jIGIvdGVzdHMvYW1kZ3B1L2FtZF9ieXBhc3MuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMGFkNjViYzUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0 cy9hbWRncHUvYW1kX2J5cGFzcy5jCkBAIC0wLDAgKzEsMzgzIEBACisvKgorICogQ29weXJpZ2h0 IDIwMTkgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMg aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh CisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm aWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91 dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0 cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp Y2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3Zl IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5j bHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNv ZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcg QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAq IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJ TiBOTyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMp IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFks IFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAq IEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg T1IgVEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAq LworI2luY2x1ZGUgImRybS5oIgorI2luY2x1ZGUgImRybXRlc3QuaCIKKyNpbmNsdWRlICJpZ3Qu aCIKKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4K KyNpbmNsdWRlICJzaWduYWwuaCIKKworLyoKKyAqIGludGVybmFsIHVzZQorICogQ29tbW9uIHRl c3QgZGF0YQorICogKi8KK3R5cGVkZWYgc3RydWN0IHsKKwlpbnQgZHJtX2ZkOworCWludCB3aWR0 aDsKKwlpbnQgaGVpZ2h0OworCWVudW0gcGlwZSBwaXBlX2lkOworCWlndF9kaXNwbGF5X3QgZGlz cGxheTsKKwlpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKKwlp Z3RfcGlwZV90ICpwaXBlOworCWlndF9waXBlX2NyY190ICpwaXBlX2NyYzsKKwlpZ3RfY3JjX3Qg Y3JjX2ZiOworCWlndF9jcmNfdCBjcmNfZHByeDsKKwlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7Cit9 IGRhdGFfdDsKKworZW51bSBwYXR0ZXJuIHsKKwlURVNUX1BBVFRFUk5fRFBfQ09MT1JfUkFNUCwK KwlURVNUX1BBVFRFUk5fRFBfQkxBQ0tfV0hJVEVfVkVSVF9MSU5FUywKKwlURVNUX1BBVFRFUk5f RFBfQkxBQ0tfV0hJVEVfSE9SWl9MSU5FUywKKwlURVNUX1BBVFRFUk5fRFBfQ09MT1JfU1FVQVJF U19WRVNBLAorCS8qIHBsZWFzZSBkb24ndCBhZGQgcGF0dGVybiBhZnRlciB0aGUgYmVsb3cgbGlu ZSAqLworCVRFU1RfUEFUVEVSTl9NQVgsCit9OworCitjb25zdCBjaGFyICpwdG5zdHJbVEVTVF9Q QVRURVJOX01BWF0gPSB7CisJIkRQIENvbG9yIFJhbXAiLAorCSJEUCBWZXJ0aWNhbCBMaW5lcyIs CisJIkRQIEhvcml6b250YWwgTGluZXMiLAorCSJEUCBDb2xvciBTcXVhcmVzIFZFU0EiCit9Owor CisvKiBDb21tb24gdGVzdCBzZXR1cC4gKi8KK3N0YXRpYyB2b2lkIHRlc3RfaW5pdChkYXRhX3Qg KmRhdGEpCit7CisJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5OworCisJ LyogSXQgZG9lc24ndCBtYXR0ZXIgd2hpY2ggcGlwZSB3ZSBjaG9vc2Ugb24gYW1kcGd1LiAqLwor CWRhdGEtPnBpcGVfaWQgPSBQSVBFX0E7CisJZGF0YS0+cGlwZSA9ICZkYXRhLT5kaXNwbGF5LnBp cGVzW2RhdGEtPnBpcGVfaWRdOworCisJaWd0X2Rpc3BsYXlfcmVzZXQoZGlzcGxheSk7CisKKwlk YXRhLT5vdXRwdXQgPSBpZ3RfZ2V0X3NpbmdsZV9vdXRwdXRfZm9yX3BpcGUoZGlzcGxheSwgZGF0 YS0+cGlwZV9pZCk7CisJaWd0X2Fzc2VydChkYXRhLT5vdXRwdXQpOworCisJZGF0YS0+bW9kZSA9 IGlndF9vdXRwdXRfZ2V0X21vZGUoZGF0YS0+b3V0cHV0KTsKKwlpZ3RfYXNzZXJ0KGRhdGEtPm1v ZGUpOworCisJZGF0YS0+cHJpbWFyeSA9CisJCWlndF9waXBlX2dldF9wbGFuZV90eXBlKGRhdGEt PnBpcGUsIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOworCisJZGF0YS0+cGlwZV9jcmMgPSBpZ3Rf cGlwZV9jcmNfbmV3KGRhdGEtPmRybV9mZCwgZGF0YS0+cGlwZV9pZCwKKwkJCQkJICBBTURHUFVf UElQRV9DUkNfU09VUkNFX0RQUlgpOworCisJaWd0X291dHB1dF9zZXRfcGlwZShkYXRhLT5vdXRw dXQsIGRhdGEtPnBpcGVfaWQpOworCisJZGF0YS0+d2lkdGggPSBkYXRhLT5tb2RlLT5oZGlzcGxh eTsKKwlkYXRhLT5oZWlnaHQgPSBkYXRhLT5tb2RlLT52ZGlzcGxheTsKK30KKworLyogQ29tbW9u IHRlc3QgY2xlYW51cC4gKi8KK3N0YXRpYyB2b2lkIHRlc3RfZmluaShkYXRhX3QgKmRhdGEpCit7 CisJaWd0X3BpcGVfY3JjX2ZyZWUoZGF0YS0+cGlwZV9jcmMpOworCWlndF9kaXNwbGF5X3Jlc2V0 KCZkYXRhLT5kaXNwbGF5KTsKK30KKworLyoKKyAqIGRyYXcgdGhlIERQIGNvbG9yIHJhbXAgdGVz dCBwYXR0ZXJuCisgKiBSZWZlcmVuY2U6IERQIExpbmsgQ1RTIDEuMiBDb3JlIHIxLjEsIHNlYy4g My4xLjUuMQorICovCitzdGF0aWMgdm9pZCBkcmF3X2RwX3Rlc3RfcGF0dGVybl9jb2xvcl9yYW1w KGlndF9mYl90ICpmYikKK3sKKwljb25zdCBpbnQgaCA9IDY0OyAgLyogdGVzdCBwYXR0ZXJuIHJl Y3RhbmdsZSBoZWlnaHQgKi8KKwljb25zdCBpbnQgYmxvY2tfaCA9IGggKiA0OyAvKiBibG9jayBo ZWlnaHQgb2YgUi1HLUItV2hpdGUgcmVjdGFuZ2xlcyAqLworCXZvaWQgKnB0cl9mYjsKKwl1aW50 OF90ICpkYXRhOworCWludCB4LHk7CisJaW50IGk7CisJdWludDhfdCB2YWw7CisKKwkvKgorCSAq IDY0LWJ5LTI1NiBwaXhlbHMgcGVyIHJlY3RhbmdsZQorCSAqIFItRy1CLVdoaXRlIHJlY3Rhbmds ZSBpbiBvcmRlciBpbiB2ZXJ0aWNhbAorCSAqIGR1cGxpY2F0ZSBpbiBob3Jpem9udGFsCisJICov CisJcHRyX2ZiID0gaWd0X2ZiX21hcF9idWZmZXIoZmItPmZkLCBmYik7CisJaWd0X2Fzc2VydChw dHJfZmIpOworCWRhdGEgPSBwdHJfZmIgKyBmYi0+b2Zmc2V0c1swXTsKKworCXN3aXRjaCAoZmIt PmRybV9mb3JtYXQpIHsKKwljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6CisJCWZvciAoeSA9IDA7 IHkgPCBmYi0+aGVpZ2h0OyArK3kpIHsKKwkJCWZvciAoeCA9IDAsIHZhbCA9IDA7IHggPCBmYi0+ d2lkdGg7ICsreCwgKyt2YWwpIHsKKwkJCQlpID0geCAqIDQgKyB5ICogZmItPnN0cmlkZXNbMF07 CisKKwkJCQkvKiB2ZXJ0aWNhbCBSLUctQi1XaGl0ZSByZWN0ICovCisJCQkJaWYgKCh5ICUgYmxv Y2tfaCkgPCBoKSB7CSAgICAvKiBSZWQgKi8KKwkJCQkJZGF0YVtpICsgMl0gPSB2YWw7CisJCQkJ CWRhdGFbaSArIDFdID0gMDsKKwkJCQkJZGF0YVtpICsgMF0gPSAwOworCQkJCX0gZWxzZSBpZiAo KHkgJSBibG9ja19oKSA8IDIgKiBoKSB7IC8qIEdyZWVuICovCisJCQkJCWRhdGFbaSArIDJdID0g MDsKKwkJCQkJZGF0YVtpICsgMV0gPSB2YWw7CisJCQkJCWRhdGFbaSArIDBdID0gMDsKKwkJCQl9 IGVsc2UgaWYgKCh5ICUgYmxvY2tfaCkgPCAzICogaCkgeyAvKiBCbHVlICovCisJCQkJCWRhdGFb aSArIDJdID0gMDsKKwkJCQkJZGF0YVtpICsgMV0gPSAwOworCQkJCQlkYXRhW2kgKyAwXSA9IHZh bDsKKwkJCQl9IGVsc2UgewkJCSAgICAvKiBXaGl0ZSAqLworCQkJCQlkYXRhW2kgKyAyXSA9IHZh bDsKKwkJCQkJZGF0YVtpICsgMV0gPSB2YWw7CisJCQkJCWRhdGFbaSArIDBdID0gdmFsOworCQkJ CX0KKwkJCX0KKwkJfQorCQlicmVhazsKKwlkZWZhdWx0OgorCQlpZ3RfYXNzZXJ0X2YoMCwgIkRS TSBGb3JtYXQgSW52YWxpZCIpOworCQlicmVhazsKKwl9CisKKwlpZ3RfZmJfdW5tYXBfYnVmZmVy KGZiLCBwdHJfZmIpOworfQorCisvKgorICogZHJhdyB0aGUgRFAgdmVydGljYWwgbGluZXMgdGVz dCBwYXR0ZXJuCisgKiBSZWZlcmVuY2U6IERQIExpbmsgQ1RTIDEuMiBDb3JlIHIxLjEsIHNlYy4g My4xLjUuMgorICovCitzdGF0aWMgdm9pZCBkcmF3X2RwX3Rlc3RfcGF0dGVybl92ZXJ0X2xpbmVz KGlndF9mYl90ICpmYikKK3sKKwl2b2lkICpwdHJfZmI7CisJdWludDhfdCAqZGF0YTsKKwlpbnQg eCwgeTsKKwlpbnQgaTsKKworCS8qIGFsdGVybmF0aW5nIGJsYWNrIGFuZCB3aGl0ZSBsaW5lcywg MSBwaXhlbCB3aWRlICovCisJcHRyX2ZiID0gaWd0X2ZiX21hcF9idWZmZXIoZmItPmZkLCBmYik7 CisJaWd0X2Fzc2VydChwdHJfZmIpOworCWRhdGEgPSBwdHJfZmIgKyBmYi0+b2Zmc2V0c1swXTsK KworCXN3aXRjaCAoZmItPmRybV9mb3JtYXQpIHsKKwljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6 CisJCWZvciAoeSA9IDA7IHkgPCBmYi0+aGVpZ2h0OyArK3kpIHsKKwkJCWZvciAoeCA9IDA7IHgg PCBmYi0+d2lkdGg7ICsreCkgeworCQkJCWkgPSB4ICogNCArIHkgKiBmYi0+c3RyaWRlc1swXTsK KworCQkJCWlmICgoeCAmIDEpID09IDApIHsKKwkJCQkJZGF0YVtpICsgMl0gPSAweGZmOyAvKiBS ICovCisJCQkJCWRhdGFbaSArIDFdID0gMHhmZjsgLyogRyAqLworCQkJCQlkYXRhW2kgKyAwXSA9 IDB4ZmY7IC8qIEIgKi8KKwkJCQl9IGVsc2UgeworCQkJCQlkYXRhW2kgKyAyXSA9IDA7CisJCQkJ CWRhdGFbaSArIDFdID0gMDsKKwkJCQkJZGF0YVtpICsgMF0gPSAwOworCQkJCX0KKwkJCX0KKwkJ fQorCQlicmVhazsKKwlkZWZhdWx0OgorCQlpZ3RfYXNzZXJ0X2YoMCwgIkRSTSBGb3JtYXQgSW52 YWxpZCIpOworCQlicmVhazsKKwl9CisKKwlpZ3RfZmJfdW5tYXBfYnVmZmVyKGZiLCBwdHJfZmIp OworfQorCisvKiBkcmF3IHRoZSBEUCBob3Jpem9udGFsIGxpbmVzIHRlc3QgcGF0dGVybiAqLwor c3RhdGljIHZvaWQgZHJhd19kcF90ZXN0X3BhdHRlcm5faG9yel9saW5lcyhpZ3RfZmJfdCAqZmIp Cit7CisJdm9pZCAqcHRyX2ZiOworCXVpbnQ4X3QgKmRhdGE7CisJaW50IHgsIHk7CisJaW50IGk7 CisKKwkvKiBhbHRlcm5hdGluZyBibGFjayBhbmQgd2hpdGUgaG9yaXpvbnRhbCBsaW5lcywgMSBw aXhlbCBoaWdoICovCisJcHRyX2ZiID0gaWd0X2ZiX21hcF9idWZmZXIoZmItPmZkLCBmYik7CisJ aWd0X2Fzc2VydChwdHJfZmIpOworCWRhdGEgPSBwdHJfZmIgKyBmYi0+b2Zmc2V0c1swXTsKKwor CXN3aXRjaCAoZmItPmRybV9mb3JtYXQpIHsKKwljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6CisJ CWZvciAoeSA9IDA7IHkgPCBmYi0+aGVpZ2h0OyArK3kpIHsKKwkJCWZvciAoeCA9IDA7IHggPCBm Yi0+d2lkdGg7ICsreCkgeworCisJCQkJaSA9IHggKiA0ICsgeSAqIGZiLT5zdHJpZGVzWzBdOwor CisJCQkJaWYgKCh5ICYgMSkgPT0gMCkgeworCQkJCQlkYXRhW2kgKyAyXSA9IDB4ZmY7IC8qIFIg Ki8KKwkJCQkJZGF0YVtpICsgMV0gPSAweGZmOyAvKiBHICovCisJCQkJCWRhdGFbaSArIDBdID0g MHhmZjsgLyogQiAqLworCQkJCX0gZWxzZSB7CisJCQkJCWRhdGFbaSArIDJdID0gMDsKKwkJCQkJ ZGF0YVtpICsgMV0gPSAwOworCQkJCQlkYXRhW2kgKyAwXSA9IDA7CisJCQkJfQorCQkJfQorCQl9 CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWlndF9hc3NlcnRfZigwLCAiRFJNIEZvcm1hdCBJbnZh bGlkIik7CisJCWJyZWFrOworCX0KKworCWlndF9mYl91bm1hcF9idWZmZXIoZmIsIHB0cl9mYik7 Cit9CisKKy8qCisgKiBkcmF3IHRoZSBEUCBjb2xvciBzcXVhcmVzIFZFU0EgdGVzdCBwYXR0ZXJu CisgKiBSZWZlcmVuY2U6IERQIExpbmsgQ1RTIDEuMiBDb3JlIHIxLjEsIHNlYy4gMy4xLjUuMwor ICovCitzdGF0aWMgdm9pZCBkcmF3X2RwX3Rlc3RfcGF0dGVybl9jb2xvcl9zcXVhcmVzX3Zlc2Eo aWd0X2ZiX3QgKmZiKQoreworCWNvbnN0IGludCBoID0gNjQ7IC8qIHRlc3QgcGF0dGVybiBzcXVh cmUgaGVpZ2h0L3dpZHRoICovCisJY29uc3QgaW50IGJsb2NrX2ggPSBoICogMjsgLyogYmxvY2sg aGVpZ2h0IG9mIHRoZSByZXBldGl0aW9uIHBhdHRlcm4gKi8KKwljb25zdCBpbnQgYmxvY2tfdyA9 IGggKiA4OyAvKiBibG9jayB3aWR0aCBvZiB0aGUgcmVwZXRpdGlvbiBwYXR0ZXJuICovCisJY29u c3QgdWludDhfdCByZ2JbM11bMl1bOF0gPSB7CisJCXsvKiBSZWQgdGFibGUgb2YgdGhlIHBhdHRl cm4gc3F1YXJlcyAqLworCQkJezI1NSwgMjU1LCAwLCAwLCAyNTUsIDI1NSwgMCwgMH0sCisJCQl7 MCwgMjU1LCAyNTUsIDAsIDAsIDI1NSwgMjU1LCAwfSwKKwkJfSwKKwkJey8qIEdyZWVuIHRhYmxl ICovCisJCQl7MjU1LCAyNTUsIDI1NSwgMjU1LCAwLCAwLCAwLCAwfSwKKwkJCXswLCAwLCAwLCAy NTUsIDI1NSwgMjU1LCAyNTUsIDB9LAorCQl9LAorCQl7LyogQmx1ZSB0YWJsZSAqLworCQkJezI1 NSwgMCwgMjU1LCAwLCAyNTUsIDAsIDI1NSwgMH0sCisJCQl7MjU1LCAwLCAyNTUsIDAsIDI1NSwg MCwgMjU1LCAwfSwKKwkJfSwKKwl9OworCisJdm9pZCAqcHRyX2ZiOworCXVpbnQ4X3QgKmRhdGE7 CisJaW50IHgsIHk7CisJaW50IGksIGosIGs7CisKKwlwdHJfZmIgPSBpZ3RfZmJfbWFwX2J1ZmZl cihmYi0+ZmQsIGZiKTsKKwlpZ3RfYXNzZXJ0KHB0cl9mYik7CisJZGF0YSA9IHB0cl9mYiArIGZi LT5vZmZzZXRzWzBdOworCisJc3dpdGNoIChmYi0+ZHJtX2Zvcm1hdCkgeworCWNhc2UgRFJNX0ZP Uk1BVF9YUkdCODg4ODoKKwkJZm9yICh5ID0gMDsgeSA8IGZiLT5oZWlnaHQ7ICsreSkgeworCQkJ Zm9yICh4ID0gMDsgeCA8IGZiLT53aWR0aDsgKyt4KSB7CisKKwkJCQlpID0geCAqIDQgKyB5ICog ZmItPnN0cmlkZXNbMF07CisJCQkJaiA9ICh5ICUgYmxvY2tfaCkgLyBoOworCQkJCWsgPSAoeCAl IGJsb2NrX3cpIC8gaDsKKworCQkJCWRhdGFbaSArIDJdID0gcmdiWzBdW2pdW2tdOyAvKiBSICov CisJCQkJZGF0YVtpICsgMV0gPSByZ2JbMV1bal1ba107IC8qIEcgKi8KKwkJCQlkYXRhW2kgKyAw XSA9IHJnYlsyXVtqXVtrXTsgLyogQiAqLworCQkJfQorCQl9CisJCWJyZWFrOworCisJZGVmYXVs dDoKKwkJaWd0X2Fzc2VydF9mKDAsICJEUk0gRm9ybWF0IEludmFsaWQiKTsKKwkJYnJlYWs7CisJ fQorCisKKwlpZ3RfZmJfdW5tYXBfYnVmZmVyKGZiLCBwdHJfZmIpOworfQorCisvKiBnZW5lcmF0 ZSB0ZXN0IHBhdHRlcm4gYW5kIGZpbGxzIGEgRkIgKi8KK3N0YXRpYyB2b2lkIGdlbmVyYXRlX3Rl c3RfcGF0dGVybihpZ3RfZmJfdCAqZmIsIGRhdGFfdCAqZGF0YSwgZW51bSBwYXR0ZXJuIHB0bikK K3sKKwlpZ3RfYXNzZXJ0KGZiLT5mZCAmJiAocHRuIDwgVEVTVF9QQVRURVJOX01BWCkpOworCisJ aWYgKHB0biA9PSBURVNUX1BBVFRFUk5fRFBfQ09MT1JfUkFNUCkgeworCQlkcmF3X2RwX3Rlc3Rf cGF0dGVybl9jb2xvcl9yYW1wKGZiKTsKKwl9IGVsc2UgaWYgKHB0biA9PSBURVNUX1BBVFRFUk5f RFBfQkxBQ0tfV0hJVEVfVkVSVF9MSU5FUykgeworCQlkcmF3X2RwX3Rlc3RfcGF0dGVybl92ZXJ0 X2xpbmVzKGZiKTsKKwl9IGVsc2UgaWYgKHB0biA9PSBURVNUX1BBVFRFUk5fRFBfQkxBQ0tfV0hJ VEVfSE9SWl9MSU5FUykgeworCQlkcmF3X2RwX3Rlc3RfcGF0dGVybl9ob3J6X2xpbmVzKGZiKTsK Kwl9IGVsc2UgaWYgKHB0biA9PSBURVNUX1BBVFRFUk5fRFBfQ09MT1JfU1FVQVJFU19WRVNBKSB7 CisJCWRyYXdfZHBfdGVzdF9wYXR0ZXJuX2NvbG9yX3NxdWFyZXNfdmVzYShmYik7CisJfQorfQor CitzdGF0aWMgdm9pZCBieXBhc3NfOGJwY190ZXN0KGRhdGFfdCAqZGF0YSkKK3sKKwlpZ3RfZGlz cGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7CisJaWd0X2ZiX3QgZmI7CisJZW51bSBw YXR0ZXJuIHB0bjsKKworCXRlc3RfaW5pdChkYXRhKTsKKworCWlndF9jcmVhdGVfZmIoZGF0YS0+ ZHJtX2ZkLCBkYXRhLT53aWR0aCwgZGF0YS0+aGVpZ2h0LAorCQkgICAgICBEUk1fRk9STUFUX1hS R0I4ODg4LCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLCAmZmIpOworCisJLyoKKwkgKiBTZXR0 aW5nczoKKwkgKiAgIG5vIGRlZ2FtbWEKKwkgKiAgIG5vIHJlZ2FtbWEKKwkgKiAgIG5vIENUTQor CSAqLworCWlndF9waXBlX29ial9yZXBsYWNlX3Byb3BfYmxvYihkYXRhLT5waXBlLCBJR1RfQ1JU Q19ERUdBTU1BX0xVVCwgTlVMTCwgMCk7CisJaWd0X3BpcGVfb2JqX3JlcGxhY2VfcHJvcF9ibG9i KGRhdGEtPnBpcGUsIElHVF9DUlRDX0dBTU1BX0xVVCwgTlVMTCwgMCk7CisJaWd0X3BpcGVfb2Jq X3JlcGxhY2VfcHJvcF9ibG9iKGRhdGEtPnBpcGUsIElHVF9DUlRDX0NUTSwgTlVMTCwgMCk7CisK KwlpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1hcnksICZmYik7CisJaWd0X2Rpc3BsYXlfY29t bWl0X2F0b21pYyhkaXNwbGF5LCBEUk1fTU9ERV9BVE9NSUNfQUxMT1dfTU9ERVNFVCwgTlVMTCk7 CisKKwkvKiB0cmF2ZXJzZSBhbGwgdGhlIHRlc3QgcGF0dGVybiB0byB2YWxpZGF0ZSA4YnBjIGJ5 cGFzcyBtb2RlICovCisJZm9yIChwdG4gPSBURVNUX1BBVFRFUk5fRFBfQ09MT1JfUkFNUDsgcHRu IDwgVEVTVF9QQVRURVJOX01BWDsgKytwdG4pIHsKKwkJaWd0X2luZm8oIlRlc3QgUGF0dGVybjog JXNcbiIsIHB0bnN0cltwdG5dKTsKKworCQlnZW5lcmF0ZV90ZXN0X3BhdHRlcm4oJmZiLCBkYXRh LCBwdG4pOworCisJCS8qIEdyYWIgRkIgYW5kIERQUlggQ1JDcyBhbmQgY29tcGFyZSAqLworCQlp Z3RfZmJfY2FsY19jcmMoJmZiLCAmZGF0YS0+Y3JjX2ZiKTsKKwkJaWd0X3BpcGVfY3JjX2NvbGxl Y3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmZGF0YS0+Y3JjX2RwcngpOworCisJCWlndF9hc3NlcnRf Y3JjX2VxdWFsKCZkYXRhLT5jcmNfZmIsICZkYXRhLT5jcmNfZHByeCk7CisJfQorCisJaWd0X3Bs YW5lX3NldF9mYihkYXRhLT5wcmltYXJ5LCBOVUxMKTsKKwl0ZXN0X2ZpbmkoZGF0YSk7CisJaWd0 X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZmYik7Cit9CisKK2lndF9tYWluCit7CisJZGF0YV90 IGRhdGE7CisJbWVtc2V0KCZkYXRhLCAwLCBzaXplb2YoZGF0YSkpOworCisJaWd0X3NraXBfb25f c2ltdWxhdGlvbigpOworCisJaWd0X2ZpeHR1cmUgeworCQlkYXRhLmRybV9mZCA9IGRybV9vcGVu X2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0FNREdQVSk7CisJCWlmIChkYXRhLmRybV9mZCA9PSAtMSkK KwkJCWlndF9za2lwKCJOb3QgYW4gYW1kZ3B1IGRyaXZlci5cbiIpOworCQlpZ3RfcmVxdWlyZV9w aXBlX2NyYyhkYXRhLmRybV9mZCk7CisKKwkJa21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgp OworCisJCWlndF9kaXNwbGF5X3JlcXVpcmUoJmRhdGEuZGlzcGxheSwgZGF0YS5kcm1fZmQpOwor CQlpZ3RfcmVxdWlyZShkYXRhLmRpc3BsYXkuaXNfYXRvbWljKTsKKwkJaWd0X2Rpc3BsYXlfcmVx dWlyZV9vdXRwdXQoJmRhdGEuZGlzcGxheSk7CisJfQorCisJaWd0X3N1YnRlc3QoIjhicGMtYnlw YXNzLW1vZGUiKQorCQlieXBhc3NfOGJwY190ZXN0KCZkYXRhKTsKKworCWlndF9maXh0dXJlIHsK KwkJaWd0X2Rpc3BsYXlfZmluaSgmZGF0YS5kaXNwbGF5KTsKKwl9Cit9CmRpZmYgLS1naXQgYS90 ZXN0cy9hbWRncHUvbWVzb24uYnVpbGQgYi90ZXN0cy9hbWRncHUvbWVzb24uYnVpbGQKaW5kZXgg NDIwODYzNzQuLmI3OTgyMjkxIDEwMDY0NAotLS0gYS90ZXN0cy9hbWRncHUvbWVzb24uYnVpbGQK KysrIGIvdGVzdHMvYW1kZ3B1L21lc29uLmJ1aWxkCkBAIC00LDYgKzQsNyBAQCBhbWRncHVfZGVw cyA9IHRlc3RfZGVwcwogaWYgbGliZHJtX2FtZGdwdS5mb3VuZCgpCiAJYW1kZ3B1X3Byb2dzICs9 IFsgJ2FtZF9hYm0nLAogCQkJICAnYW1kX2Jhc2ljJywKKwkJCSAgJ2FtZF9ieXBhc3MnLAogCQkJ ICAnYW1kX2NvbG9yJywKIAkJCSAgJ2FtZF9jc19ub3AnLAogCQkJICAnYW1kX3ByaW1lJywKLS0g CjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K aWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2