From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-eopbgr790082.outbound.protection.outlook.com [40.107.79.82]) by gabe.freedesktop.org (Postfix) with ESMTPS id C61786E418 for ; Wed, 26 Jun 2019 12:53:24 +0000 (UTC) From: "Kazlauskas, Nicholas" Date: Wed, 26 Jun 2019 12:53:22 +0000 Message-ID: <7977b5e4-eecb-e77f-7917-1855b043b1dc@amd.com> References: <20190625194218.18106-1-dingchen.zhang@amd.com> <20190625194218.18106-3-dingchen.zhang@amd.com> In-Reply-To: <20190625194218.18106-3-dingchen.zhang@amd.com> Content-Language: en-US Content-ID: MIME-Version: 1.0 Subject: Re: [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: "Zhang, Dingchen (David)" , "igt-dev@lists.freedesktop.org" List-ID: T24gNi8yNS8xOSAzOjQyIFBNLCBEaW5nY2hlbiBaaGFuZyB3cm90ZToNCj4gVG8gdmFsaWRhdGUg dGhlIEFNREdQVSBieXBhc3MgbW9kZSBmZWF0dXJlLg0KPiANCj4gR2VuZXJhdGUgRFAgdGVzdCBw YXR0ZXJucywgcHJvZ3JhbSB0aGUgcGlwZSBhbmQgY2hlY2sgaWYNCj4gdGhlIENSQ3Mgb2YgZnJh bWVidWZmZXIgYW5kIERQIHJlY2VpdmVyIG1hdGNoLg0KPiANCj4gdjI6IHVzZSB0aGUgRFBSWCBw aXBlIGNyYyBzb3VyY2UgZGlyZWN0bHkgKE5pY2hvbGFzKQ0KPiANCj4gQ2M6IEhhcnJ5IFdlbnRs YW5kIDxIYXJyeS5XZW50bGFuZEBhbWQuY29tPg0KPiBDYzogTmljayBLYXpsYXVza2FzIDxOaWNo b2xhcy5LYXpsYXVza2FzQGFtZC5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IERpbmdjaGVuIFpoYW5n IDxkaW5nY2hlbi56aGFuZ0BhbWQuY29tPg0KDQpSZXZpZXdlZC1ieTogTmljaG9sYXMgS2F6bGF1 c2thcyA8bmljaG9sYXMua2F6bGF1c2thc0BhbWQuY29tPg0KDQo+IC0tLQ0KPiAgIHRlc3RzL2Ft ZGdwdS9hbWRfYnlwYXNzLmMgfCAzODMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysNCj4gICB0ZXN0cy9hbWRncHUvbWVzb24uYnVpbGQgIHwgICAxICsNCj4gICAyIGZpbGVz IGNoYW5nZWQsIDM4NCBpbnNlcnRpb25zKCspDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3Rz L2FtZGdwdS9hbWRfYnlwYXNzLmMNCj4gDQo+IGRpZmYgLS1naXQgYS90ZXN0cy9hbWRncHUvYW1k X2J5cGFzcy5jIGIvdGVzdHMvYW1kZ3B1L2FtZF9ieXBhc3MuYw0KPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiBpbmRleCAwMDAwMDAwMC4uMGFkNjViYzUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysg Yi90ZXN0cy9hbWRncHUvYW1kX2J5cGFzcy5jDQo+IEBAIC0wLDAgKzEsMzgzIEBADQo+ICsvKg0K PiArICogQ29weXJpZ2h0IDIwMTkgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLg0KPiArICoN Cj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZyBhDQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLA0KPiArICogdG8g ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv dXQgbGltaXRhdGlvbg0KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsDQo+ICsgKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUN Cj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6DQo+ICsgKg0KPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCj4gKyAq IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLg0KPiAr ICoNCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwNCj4gKyAq IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJ TiBOTyBFVkVOVCBTSEFMTA0KPiArICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9S KFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SDQo+ICsgKiBPVEhFUiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwNCj4gKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUg0KPiArICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRX QVJFLg0KPiArICoNCj4gKyAqLw0KPiArI2luY2x1ZGUgImRybS5oIg0KPiArI2luY2x1ZGUgImRy bXRlc3QuaCINCj4gKyNpbmNsdWRlICJpZ3QuaCINCj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwu aD4NCj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gKyNpbmNsdWRlICJzaWduYWwuaCIN Cj4gKw0KPiArLyoNCj4gKyAqIGludGVybmFsIHVzZQ0KPiArICogQ29tbW9uIHRlc3QgZGF0YQ0K PiArICogKi8NCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKwlpbnQgZHJtX2ZkOw0KPiArCWludCB3 aWR0aDsNCj4gKwlpbnQgaGVpZ2h0Ow0KPiArCWVudW0gcGlwZSBwaXBlX2lkOw0KPiArCWlndF9k aXNwbGF5X3QgZGlzcGxheTsNCj4gKwlpZ3RfcGxhbmVfdCAqcHJpbWFyeTsNCj4gKwlpZ3Rfb3V0 cHV0X3QgKm91dHB1dDsNCj4gKwlpZ3RfcGlwZV90ICpwaXBlOw0KPiArCWlndF9waXBlX2NyY190 ICpwaXBlX2NyYzsNCj4gKwlpZ3RfY3JjX3QgY3JjX2ZiOw0KPiArCWlndF9jcmNfdCBjcmNfZHBy eDsNCj4gKwlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7DQo+ICt9IGRhdGFfdDsNCj4gKw0KPiArZW51 bSBwYXR0ZXJuIHsNCj4gKwlURVNUX1BBVFRFUk5fRFBfQ09MT1JfUkFNUCwNCj4gKwlURVNUX1BB VFRFUk5fRFBfQkxBQ0tfV0hJVEVfVkVSVF9MSU5FUywNCj4gKwlURVNUX1BBVFRFUk5fRFBfQkxB Q0tfV0hJVEVfSE9SWl9MSU5FUywNCj4gKwlURVNUX1BBVFRFUk5fRFBfQ09MT1JfU1FVQVJFU19W RVNBLA0KPiArCS8qIHBsZWFzZSBkb24ndCBhZGQgcGF0dGVybiBhZnRlciB0aGUgYmVsb3cgbGlu ZSAqLw0KPiArCVRFU1RfUEFUVEVSTl9NQVgsDQo+ICt9Ow0KPiArDQo+ICtjb25zdCBjaGFyICpw dG5zdHJbVEVTVF9QQVRURVJOX01BWF0gPSB7DQo+ICsJIkRQIENvbG9yIFJhbXAiLA0KPiArCSJE UCBWZXJ0aWNhbCBMaW5lcyIsDQo+ICsJIkRQIEhvcml6b250YWwgTGluZXMiLA0KPiArCSJEUCBD b2xvciBTcXVhcmVzIFZFU0EiDQo+ICt9Ow0KPiArDQo+ICsvKiBDb21tb24gdGVzdCBzZXR1cC4g Ki8NCj4gK3N0YXRpYyB2b2lkIHRlc3RfaW5pdChkYXRhX3QgKmRhdGEpDQo+ICt7DQo+ICsJaWd0 X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Ow0KPiArDQo+ICsJLyogSXQgZG9l c24ndCBtYXR0ZXIgd2hpY2ggcGlwZSB3ZSBjaG9vc2Ugb24gYW1kcGd1LiAqLw0KPiArCWRhdGEt PnBpcGVfaWQgPSBQSVBFX0E7DQo+ICsJZGF0YS0+cGlwZSA9ICZkYXRhLT5kaXNwbGF5LnBpcGVz W2RhdGEtPnBpcGVfaWRdOw0KPiArDQo+ICsJaWd0X2Rpc3BsYXlfcmVzZXQoZGlzcGxheSk7DQo+ ICsNCj4gKwlkYXRhLT5vdXRwdXQgPSBpZ3RfZ2V0X3NpbmdsZV9vdXRwdXRfZm9yX3BpcGUoZGlz cGxheSwgZGF0YS0+cGlwZV9pZCk7DQo+ICsJaWd0X2Fzc2VydChkYXRhLT5vdXRwdXQpOw0KPiAr DQo+ICsJZGF0YS0+bW9kZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUoZGF0YS0+b3V0cHV0KTsNCj4g KwlpZ3RfYXNzZXJ0KGRhdGEtPm1vZGUpOw0KPiArDQo+ICsJZGF0YS0+cHJpbWFyeSA9DQo+ICsJ CWlndF9waXBlX2dldF9wbGFuZV90eXBlKGRhdGEtPnBpcGUsIERSTV9QTEFORV9UWVBFX1BSSU1B UlkpOw0KPiArDQo+ICsJZGF0YS0+cGlwZV9jcmMgPSBpZ3RfcGlwZV9jcmNfbmV3KGRhdGEtPmRy bV9mZCwgZGF0YS0+cGlwZV9pZCwNCj4gKwkJCQkJICBBTURHUFVfUElQRV9DUkNfU09VUkNFX0RQ UlgpOw0KPiArDQo+ICsJaWd0X291dHB1dF9zZXRfcGlwZShkYXRhLT5vdXRwdXQsIGRhdGEtPnBp cGVfaWQpOw0KPiArDQo+ICsJZGF0YS0+d2lkdGggPSBkYXRhLT5tb2RlLT5oZGlzcGxheTsNCj4g KwlkYXRhLT5oZWlnaHQgPSBkYXRhLT5tb2RlLT52ZGlzcGxheTsNCj4gK30NCj4gKw0KPiArLyog Q29tbW9uIHRlc3QgY2xlYW51cC4gKi8NCj4gK3N0YXRpYyB2b2lkIHRlc3RfZmluaShkYXRhX3Qg KmRhdGEpDQo+ICt7DQo+ICsJaWd0X3BpcGVfY3JjX2ZyZWUoZGF0YS0+cGlwZV9jcmMpOw0KPiAr CWlndF9kaXNwbGF5X3Jlc2V0KCZkYXRhLT5kaXNwbGF5KTsNCj4gK30NCj4gKw0KPiArLyoNCj4g KyAqIGRyYXcgdGhlIERQIGNvbG9yIHJhbXAgdGVzdCBwYXR0ZXJuDQo+ICsgKiBSZWZlcmVuY2U6 IERQIExpbmsgQ1RTIDEuMiBDb3JlIHIxLjEsIHNlYy4gMy4xLjUuMQ0KPiArICovDQo+ICtzdGF0 aWMgdm9pZCBkcmF3X2RwX3Rlc3RfcGF0dGVybl9jb2xvcl9yYW1wKGlndF9mYl90ICpmYikNCj4g K3sNCj4gKwljb25zdCBpbnQgaCA9IDY0OyAgLyogdGVzdCBwYXR0ZXJuIHJlY3RhbmdsZSBoZWln aHQgKi8NCj4gKwljb25zdCBpbnQgYmxvY2tfaCA9IGggKiA0OyAvKiBibG9jayBoZWlnaHQgb2Yg Ui1HLUItV2hpdGUgcmVjdGFuZ2xlcyAqLw0KPiArCXZvaWQgKnB0cl9mYjsNCj4gKwl1aW50OF90 ICpkYXRhOw0KPiArCWludCB4LHk7DQo+ICsJaW50IGk7DQo+ICsJdWludDhfdCB2YWw7DQo+ICsN Cj4gKwkvKg0KPiArCSAqIDY0LWJ5LTI1NiBwaXhlbHMgcGVyIHJlY3RhbmdsZQ0KPiArCSAqIFIt Ry1CLVdoaXRlIHJlY3RhbmdsZSBpbiBvcmRlciBpbiB2ZXJ0aWNhbA0KPiArCSAqIGR1cGxpY2F0 ZSBpbiBob3Jpem9udGFsDQo+ICsJICovDQo+ICsJcHRyX2ZiID0gaWd0X2ZiX21hcF9idWZmZXIo ZmItPmZkLCBmYik7DQo+ICsJaWd0X2Fzc2VydChwdHJfZmIpOw0KPiArCWRhdGEgPSBwdHJfZmIg KyBmYi0+b2Zmc2V0c1swXTsNCj4gKw0KPiArCXN3aXRjaCAoZmItPmRybV9mb3JtYXQpIHsNCj4g KwljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6DQo+ICsJCWZvciAoeSA9IDA7IHkgPCBmYi0+aGVp Z2h0OyArK3kpIHsNCj4gKwkJCWZvciAoeCA9IDAsIHZhbCA9IDA7IHggPCBmYi0+d2lkdGg7ICsr eCwgKyt2YWwpIHsNCj4gKwkJCQlpID0geCAqIDQgKyB5ICogZmItPnN0cmlkZXNbMF07DQo+ICsN Cj4gKwkJCQkvKiB2ZXJ0aWNhbCBSLUctQi1XaGl0ZSByZWN0ICovDQo+ICsJCQkJaWYgKCh5ICUg YmxvY2tfaCkgPCBoKSB7CSAgICAvKiBSZWQgKi8NCj4gKwkJCQkJZGF0YVtpICsgMl0gPSB2YWw7 DQo+ICsJCQkJCWRhdGFbaSArIDFdID0gMDsNCj4gKwkJCQkJZGF0YVtpICsgMF0gPSAwOw0KPiAr CQkJCX0gZWxzZSBpZiAoKHkgJSBibG9ja19oKSA8IDIgKiBoKSB7IC8qIEdyZWVuICovDQo+ICsJ CQkJCWRhdGFbaSArIDJdID0gMDsNCj4gKwkJCQkJZGF0YVtpICsgMV0gPSB2YWw7DQo+ICsJCQkJ CWRhdGFbaSArIDBdID0gMDsNCj4gKwkJCQl9IGVsc2UgaWYgKCh5ICUgYmxvY2tfaCkgPCAzICog aCkgeyAvKiBCbHVlICovDQo+ICsJCQkJCWRhdGFbaSArIDJdID0gMDsNCj4gKwkJCQkJZGF0YVtp ICsgMV0gPSAwOw0KPiArCQkJCQlkYXRhW2kgKyAwXSA9IHZhbDsNCj4gKwkJCQl9IGVsc2UgewkJ CSAgICAvKiBXaGl0ZSAqLw0KPiArCQkJCQlkYXRhW2kgKyAyXSA9IHZhbDsNCj4gKwkJCQkJZGF0 YVtpICsgMV0gPSB2YWw7DQo+ICsJCQkJCWRhdGFbaSArIDBdID0gdmFsOw0KPiArCQkJCX0NCj4g KwkJCX0NCj4gKwkJfQ0KPiArCQlicmVhazsNCj4gKwlkZWZhdWx0Og0KPiArCQlpZ3RfYXNzZXJ0 X2YoMCwgIkRSTSBGb3JtYXQgSW52YWxpZCIpOw0KPiArCQlicmVhazsNCj4gKwl9DQo+ICsNCj4g KwlpZ3RfZmJfdW5tYXBfYnVmZmVyKGZiLCBwdHJfZmIpOw0KPiArfQ0KPiArDQo+ICsvKg0KPiAr ICogZHJhdyB0aGUgRFAgdmVydGljYWwgbGluZXMgdGVzdCBwYXR0ZXJuDQo+ICsgKiBSZWZlcmVu Y2U6IERQIExpbmsgQ1RTIDEuMiBDb3JlIHIxLjEsIHNlYy4gMy4xLjUuMg0KPiArICovDQo+ICtz dGF0aWMgdm9pZCBkcmF3X2RwX3Rlc3RfcGF0dGVybl92ZXJ0X2xpbmVzKGlndF9mYl90ICpmYikN Cj4gK3sNCj4gKwl2b2lkICpwdHJfZmI7DQo+ICsJdWludDhfdCAqZGF0YTsNCj4gKwlpbnQgeCwg eTsNCj4gKwlpbnQgaTsNCj4gKw0KPiArCS8qIGFsdGVybmF0aW5nIGJsYWNrIGFuZCB3aGl0ZSBs aW5lcywgMSBwaXhlbCB3aWRlICovDQo+ICsJcHRyX2ZiID0gaWd0X2ZiX21hcF9idWZmZXIoZmIt PmZkLCBmYik7DQo+ICsJaWd0X2Fzc2VydChwdHJfZmIpOw0KPiArCWRhdGEgPSBwdHJfZmIgKyBm Yi0+b2Zmc2V0c1swXTsNCj4gKw0KPiArCXN3aXRjaCAoZmItPmRybV9mb3JtYXQpIHsNCj4gKwlj YXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6DQo+ICsJCWZvciAoeSA9IDA7IHkgPCBmYi0+aGVpZ2h0 OyArK3kpIHsNCj4gKwkJCWZvciAoeCA9IDA7IHggPCBmYi0+d2lkdGg7ICsreCkgew0KPiArCQkJ CWkgPSB4ICogNCArIHkgKiBmYi0+c3RyaWRlc1swXTsNCj4gKw0KPiArCQkJCWlmICgoeCAmIDEp ID09IDApIHsNCj4gKwkJCQkJZGF0YVtpICsgMl0gPSAweGZmOyAvKiBSICovDQo+ICsJCQkJCWRh dGFbaSArIDFdID0gMHhmZjsgLyogRyAqLw0KPiArCQkJCQlkYXRhW2kgKyAwXSA9IDB4ZmY7IC8q IEIgKi8NCj4gKwkJCQl9IGVsc2Ugew0KPiArCQkJCQlkYXRhW2kgKyAyXSA9IDA7DQo+ICsJCQkJ CWRhdGFbaSArIDFdID0gMDsNCj4gKwkJCQkJZGF0YVtpICsgMF0gPSAwOw0KPiArCQkJCX0NCj4g KwkJCX0NCj4gKwkJfQ0KPiArCQlicmVhazsNCj4gKwlkZWZhdWx0Og0KPiArCQlpZ3RfYXNzZXJ0 X2YoMCwgIkRSTSBGb3JtYXQgSW52YWxpZCIpOw0KPiArCQlicmVhazsNCj4gKwl9DQo+ICsNCj4g KwlpZ3RfZmJfdW5tYXBfYnVmZmVyKGZiLCBwdHJfZmIpOw0KPiArfQ0KPiArDQo+ICsvKiBkcmF3 IHRoZSBEUCBob3Jpem9udGFsIGxpbmVzIHRlc3QgcGF0dGVybiAqLw0KPiArc3RhdGljIHZvaWQg ZHJhd19kcF90ZXN0X3BhdHRlcm5faG9yel9saW5lcyhpZ3RfZmJfdCAqZmIpDQo+ICt7DQo+ICsJ dm9pZCAqcHRyX2ZiOw0KPiArCXVpbnQ4X3QgKmRhdGE7DQo+ICsJaW50IHgsIHk7DQo+ICsJaW50 IGk7DQo+ICsNCj4gKwkvKiBhbHRlcm5hdGluZyBibGFjayBhbmQgd2hpdGUgaG9yaXpvbnRhbCBs aW5lcywgMSBwaXhlbCBoaWdoICovDQo+ICsJcHRyX2ZiID0gaWd0X2ZiX21hcF9idWZmZXIoZmIt PmZkLCBmYik7DQo+ICsJaWd0X2Fzc2VydChwdHJfZmIpOw0KPiArCWRhdGEgPSBwdHJfZmIgKyBm Yi0+b2Zmc2V0c1swXTsNCj4gKw0KPiArCXN3aXRjaCAoZmItPmRybV9mb3JtYXQpIHsNCj4gKwlj YXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6DQo+ICsJCWZvciAoeSA9IDA7IHkgPCBmYi0+aGVpZ2h0 OyArK3kpIHsNCj4gKwkJCWZvciAoeCA9IDA7IHggPCBmYi0+d2lkdGg7ICsreCkgew0KPiArDQo+ ICsJCQkJaSA9IHggKiA0ICsgeSAqIGZiLT5zdHJpZGVzWzBdOw0KPiArDQo+ICsJCQkJaWYgKCh5 ICYgMSkgPT0gMCkgew0KPiArCQkJCQlkYXRhW2kgKyAyXSA9IDB4ZmY7IC8qIFIgKi8NCj4gKwkJ CQkJZGF0YVtpICsgMV0gPSAweGZmOyAvKiBHICovDQo+ICsJCQkJCWRhdGFbaSArIDBdID0gMHhm ZjsgLyogQiAqLw0KPiArCQkJCX0gZWxzZSB7DQo+ICsJCQkJCWRhdGFbaSArIDJdID0gMDsNCj4g KwkJCQkJZGF0YVtpICsgMV0gPSAwOw0KPiArCQkJCQlkYXRhW2kgKyAwXSA9IDA7DQo+ICsJCQkJ fQ0KPiArCQkJfQ0KPiArCQl9DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJCWlndF9h c3NlcnRfZigwLCAiRFJNIEZvcm1hdCBJbnZhbGlkIik7DQo+ICsJCWJyZWFrOw0KPiArCX0NCj4g Kw0KPiArCWlndF9mYl91bm1hcF9idWZmZXIoZmIsIHB0cl9mYik7DQo+ICt9DQo+ICsNCj4gKy8q DQo+ICsgKiBkcmF3IHRoZSBEUCBjb2xvciBzcXVhcmVzIFZFU0EgdGVzdCBwYXR0ZXJuDQo+ICsg KiBSZWZlcmVuY2U6IERQIExpbmsgQ1RTIDEuMiBDb3JlIHIxLjEsIHNlYy4gMy4xLjUuMw0KPiAr ICovDQo+ICtzdGF0aWMgdm9pZCBkcmF3X2RwX3Rlc3RfcGF0dGVybl9jb2xvcl9zcXVhcmVzX3Zl c2EoaWd0X2ZiX3QgKmZiKQ0KPiArew0KPiArCWNvbnN0IGludCBoID0gNjQ7IC8qIHRlc3QgcGF0 dGVybiBzcXVhcmUgaGVpZ2h0L3dpZHRoICovDQo+ICsJY29uc3QgaW50IGJsb2NrX2ggPSBoICog MjsgLyogYmxvY2sgaGVpZ2h0IG9mIHRoZSByZXBldGl0aW9uIHBhdHRlcm4gKi8NCj4gKwljb25z dCBpbnQgYmxvY2tfdyA9IGggKiA4OyAvKiBibG9jayB3aWR0aCBvZiB0aGUgcmVwZXRpdGlvbiBw YXR0ZXJuICovDQo+ICsJY29uc3QgdWludDhfdCByZ2JbM11bMl1bOF0gPSB7DQo+ICsJCXsvKiBS ZWQgdGFibGUgb2YgdGhlIHBhdHRlcm4gc3F1YXJlcyAqLw0KPiArCQkJezI1NSwgMjU1LCAwLCAw LCAyNTUsIDI1NSwgMCwgMH0sDQo+ICsJCQl7MCwgMjU1LCAyNTUsIDAsIDAsIDI1NSwgMjU1LCAw fSwNCj4gKwkJfSwNCj4gKwkJey8qIEdyZWVuIHRhYmxlICovDQo+ICsJCQl7MjU1LCAyNTUsIDI1 NSwgMjU1LCAwLCAwLCAwLCAwfSwNCj4gKwkJCXswLCAwLCAwLCAyNTUsIDI1NSwgMjU1LCAyNTUs IDB9LA0KPiArCQl9LA0KPiArCQl7LyogQmx1ZSB0YWJsZSAqLw0KPiArCQkJezI1NSwgMCwgMjU1 LCAwLCAyNTUsIDAsIDI1NSwgMH0sDQo+ICsJCQl7MjU1LCAwLCAyNTUsIDAsIDI1NSwgMCwgMjU1 LCAwfSwNCj4gKwkJfSwNCj4gKwl9Ow0KPiArDQo+ICsJdm9pZCAqcHRyX2ZiOw0KPiArCXVpbnQ4 X3QgKmRhdGE7DQo+ICsJaW50IHgsIHk7DQo+ICsJaW50IGksIGosIGs7DQo+ICsNCj4gKwlwdHJf ZmIgPSBpZ3RfZmJfbWFwX2J1ZmZlcihmYi0+ZmQsIGZiKTsNCj4gKwlpZ3RfYXNzZXJ0KHB0cl9m Yik7DQo+ICsJZGF0YSA9IHB0cl9mYiArIGZiLT5vZmZzZXRzWzBdOw0KPiArDQo+ICsJc3dpdGNo IChmYi0+ZHJtX2Zvcm1hdCkgew0KPiArCWNhc2UgRFJNX0ZPUk1BVF9YUkdCODg4ODoNCj4gKwkJ Zm9yICh5ID0gMDsgeSA8IGZiLT5oZWlnaHQ7ICsreSkgew0KPiArCQkJZm9yICh4ID0gMDsgeCA8 IGZiLT53aWR0aDsgKyt4KSB7DQo+ICsNCj4gKwkJCQlpID0geCAqIDQgKyB5ICogZmItPnN0cmlk ZXNbMF07DQo+ICsJCQkJaiA9ICh5ICUgYmxvY2tfaCkgLyBoOw0KPiArCQkJCWsgPSAoeCAlIGJs b2NrX3cpIC8gaDsNCj4gKw0KPiArCQkJCWRhdGFbaSArIDJdID0gcmdiWzBdW2pdW2tdOyAvKiBS ICovDQo+ICsJCQkJZGF0YVtpICsgMV0gPSByZ2JbMV1bal1ba107IC8qIEcgKi8NCj4gKwkJCQlk YXRhW2kgKyAwXSA9IHJnYlsyXVtqXVtrXTsgLyogQiAqLw0KPiArCQkJfQ0KPiArCQl9DQo+ICsJ CWJyZWFrOw0KPiArDQo+ICsJZGVmYXVsdDoNCj4gKwkJaWd0X2Fzc2VydF9mKDAsICJEUk0gRm9y bWF0IEludmFsaWQiKTsNCj4gKwkJYnJlYWs7DQo+ICsJfQ0KPiArDQo+ICsNCj4gKwlpZ3RfZmJf dW5tYXBfYnVmZmVyKGZiLCBwdHJfZmIpOw0KPiArfQ0KPiArDQo+ICsvKiBnZW5lcmF0ZSB0ZXN0 IHBhdHRlcm4gYW5kIGZpbGxzIGEgRkIgKi8NCj4gK3N0YXRpYyB2b2lkIGdlbmVyYXRlX3Rlc3Rf cGF0dGVybihpZ3RfZmJfdCAqZmIsIGRhdGFfdCAqZGF0YSwgZW51bSBwYXR0ZXJuIHB0bikNCj4g K3sNCj4gKwlpZ3RfYXNzZXJ0KGZiLT5mZCAmJiAocHRuIDwgVEVTVF9QQVRURVJOX01BWCkpOw0K PiArDQo+ICsJaWYgKHB0biA9PSBURVNUX1BBVFRFUk5fRFBfQ09MT1JfUkFNUCkgew0KPiArCQlk cmF3X2RwX3Rlc3RfcGF0dGVybl9jb2xvcl9yYW1wKGZiKTsNCj4gKwl9IGVsc2UgaWYgKHB0biA9 PSBURVNUX1BBVFRFUk5fRFBfQkxBQ0tfV0hJVEVfVkVSVF9MSU5FUykgew0KPiArCQlkcmF3X2Rw X3Rlc3RfcGF0dGVybl92ZXJ0X2xpbmVzKGZiKTsNCj4gKwl9IGVsc2UgaWYgKHB0biA9PSBURVNU X1BBVFRFUk5fRFBfQkxBQ0tfV0hJVEVfSE9SWl9MSU5FUykgew0KPiArCQlkcmF3X2RwX3Rlc3Rf cGF0dGVybl9ob3J6X2xpbmVzKGZiKTsNCj4gKwl9IGVsc2UgaWYgKHB0biA9PSBURVNUX1BBVFRF Uk5fRFBfQ09MT1JfU1FVQVJFU19WRVNBKSB7DQo+ICsJCWRyYXdfZHBfdGVzdF9wYXR0ZXJuX2Nv bG9yX3NxdWFyZXNfdmVzYShmYik7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBi eXBhc3NfOGJwY190ZXN0KGRhdGFfdCAqZGF0YSkNCj4gK3sNCj4gKwlpZ3RfZGlzcGxheV90ICpk aXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7DQo+ICsJaWd0X2ZiX3QgZmI7DQo+ICsJZW51bSBwYXR0 ZXJuIHB0bjsNCj4gKw0KPiArCXRlc3RfaW5pdChkYXRhKTsNCj4gKw0KPiArCWlndF9jcmVhdGVf ZmIoZGF0YS0+ZHJtX2ZkLCBkYXRhLT53aWR0aCwgZGF0YS0+aGVpZ2h0LA0KPiArCQkgICAgICBE Uk1fRk9STUFUX1hSR0I4ODg4LCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLCAmZmIpOw0KPiAr DQo+ICsJLyoNCj4gKwkgKiBTZXR0aW5nczoNCj4gKwkgKiAgIG5vIGRlZ2FtbWENCj4gKwkgKiAg IG5vIHJlZ2FtbWENCj4gKwkgKiAgIG5vIENUTQ0KPiArCSAqLw0KPiArCWlndF9waXBlX29ial9y ZXBsYWNlX3Byb3BfYmxvYihkYXRhLT5waXBlLCBJR1RfQ1JUQ19ERUdBTU1BX0xVVCwgTlVMTCwg MCk7DQo+ICsJaWd0X3BpcGVfb2JqX3JlcGxhY2VfcHJvcF9ibG9iKGRhdGEtPnBpcGUsIElHVF9D UlRDX0dBTU1BX0xVVCwgTlVMTCwgMCk7DQo+ICsJaWd0X3BpcGVfb2JqX3JlcGxhY2VfcHJvcF9i bG9iKGRhdGEtPnBpcGUsIElHVF9DUlRDX0NUTSwgTlVMTCwgMCk7DQo+ICsNCj4gKwlpZ3RfcGxh bmVfc2V0X2ZiKGRhdGEtPnByaW1hcnksICZmYik7DQo+ICsJaWd0X2Rpc3BsYXlfY29tbWl0X2F0 b21pYyhkaXNwbGF5LCBEUk1fTU9ERV9BVE9NSUNfQUxMT1dfTU9ERVNFVCwgTlVMTCk7DQo+ICsN Cj4gKwkvKiB0cmF2ZXJzZSBhbGwgdGhlIHRlc3QgcGF0dGVybiB0byB2YWxpZGF0ZSA4YnBjIGJ5 cGFzcyBtb2RlICovDQo+ICsJZm9yIChwdG4gPSBURVNUX1BBVFRFUk5fRFBfQ09MT1JfUkFNUDsg cHRuIDwgVEVTVF9QQVRURVJOX01BWDsgKytwdG4pIHsNCj4gKwkJaWd0X2luZm8oIlRlc3QgUGF0 dGVybjogJXNcbiIsIHB0bnN0cltwdG5dKTsNCj4gKw0KPiArCQlnZW5lcmF0ZV90ZXN0X3BhdHRl cm4oJmZiLCBkYXRhLCBwdG4pOw0KPiArDQo+ICsJCS8qIEdyYWIgRkIgYW5kIERQUlggQ1JDcyBh bmQgY29tcGFyZSAqLw0KPiArCQlpZ3RfZmJfY2FsY19jcmMoJmZiLCAmZGF0YS0+Y3JjX2ZiKTsN Cj4gKwkJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmZGF0YS0+Y3Jj X2RwcngpOw0KPiArDQo+ICsJCWlndF9hc3NlcnRfY3JjX2VxdWFsKCZkYXRhLT5jcmNfZmIsICZk YXRhLT5jcmNfZHByeCk7DQo+ICsJfQ0KPiArDQo+ICsJaWd0X3BsYW5lX3NldF9mYihkYXRhLT5w cmltYXJ5LCBOVUxMKTsNCj4gKwl0ZXN0X2ZpbmkoZGF0YSk7DQo+ICsJaWd0X3JlbW92ZV9mYihk YXRhLT5kcm1fZmQsICZmYik7DQo+ICt9DQo+ICsNCj4gK2lndF9tYWluDQo+ICt7DQo+ICsJZGF0 YV90IGRhdGE7DQo+ICsJbWVtc2V0KCZkYXRhLCAwLCBzaXplb2YoZGF0YSkpOw0KPiArDQo+ICsJ aWd0X3NraXBfb25fc2ltdWxhdGlvbigpOw0KPiArDQo+ICsJaWd0X2ZpeHR1cmUgew0KPiArCQlk YXRhLmRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0FNREdQVSk7DQo+ICsJ CWlmIChkYXRhLmRybV9mZCA9PSAtMSkNCj4gKwkJCWlndF9za2lwKCJOb3QgYW4gYW1kZ3B1IGRy aXZlci5cbiIpOw0KPiArCQlpZ3RfcmVxdWlyZV9waXBlX2NyYyhkYXRhLmRybV9mZCk7DQo+ICsN Cj4gKwkJa21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOw0KPiArDQo+ICsJCWlndF9kaXNw bGF5X3JlcXVpcmUoJmRhdGEuZGlzcGxheSwgZGF0YS5kcm1fZmQpOw0KPiArCQlpZ3RfcmVxdWly ZShkYXRhLmRpc3BsYXkuaXNfYXRvbWljKTsNCj4gKwkJaWd0X2Rpc3BsYXlfcmVxdWlyZV9vdXRw dXQoJmRhdGEuZGlzcGxheSk7DQo+ICsJfQ0KPiArDQo+ICsJaWd0X3N1YnRlc3QoIjhicGMtYnlw YXNzLW1vZGUiKQ0KPiArCQlieXBhc3NfOGJwY190ZXN0KCZkYXRhKTsNCj4gKw0KPiArCWlndF9m aXh0dXJlIHsNCj4gKwkJaWd0X2Rpc3BsYXlfZmluaSgmZGF0YS5kaXNwbGF5KTsNCj4gKwl9DQo+ ICt9DQo+IGRpZmYgLS1naXQgYS90ZXN0cy9hbWRncHUvbWVzb24uYnVpbGQgYi90ZXN0cy9hbWRn cHUvbWVzb24uYnVpbGQNCj4gaW5kZXggNDIwODYzNzQuLmI3OTgyMjkxIDEwMDY0NA0KPiAtLS0g YS90ZXN0cy9hbWRncHUvbWVzb24uYnVpbGQNCj4gKysrIGIvdGVzdHMvYW1kZ3B1L21lc29uLmJ1 aWxkDQo+IEBAIC00LDYgKzQsNyBAQCBhbWRncHVfZGVwcyA9IHRlc3RfZGVwcw0KPiAgIGlmIGxp YmRybV9hbWRncHUuZm91bmQoKQ0KPiAgIAlhbWRncHVfcHJvZ3MgKz0gWyAnYW1kX2FibScsDQo+ ICAgCQkJICAnYW1kX2Jhc2ljJywNCj4gKwkJCSAgJ2FtZF9ieXBhc3MnLA0KPiAgIAkJCSAgJ2Ft ZF9jb2xvcicsDQo+ICAgCQkJICAnYW1kX2NzX25vcCcsDQo+ICAgCQkJICAnYW1kX3ByaW1lJywN Cj4gDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmln dC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==