From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0608.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe45::608]) by gabe.freedesktop.org (Postfix) with ESMTPS id 72FA26E160 for ; Tue, 25 Jun 2019 16:29:33 +0000 (UTC) From: "Kazlauskas, Nicholas" Date: Tue, 25 Jun 2019 16:29:31 +0000 Message-ID: <1fe97be5-2978-5f45-2683-4413e221ab42@amd.com> References: <20190624143144.3403-1-dingchen.zhang@amd.com> <20190624143144.3403-4-dingchen.zhang@amd.com> In-Reply-To: <20190624143144.3403-4-dingchen.zhang@amd.com> Content-Language: en-US Content-ID: MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t 4/4] 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: T24gNi8yNC8xOSAxMDozMSBBTSwgRGluZ2NoZW4gWmhhbmcgd3JvdGU6DQo+IFRvIHZhbGlkYXRl IHRoZSBBTURHUFUgYnlwYXNzIG1vZGUgZmVhdHVyZS4NCj4gDQo+IEdlbmVyYXRlIERQIHRlc3Qg cGF0dGVybnMsIHByb2dyYW0gdGhlIHBpcGUgYW5kIGNoZWNrIGlmDQo+IHRoZSBDUkNzIG9mIGZy YW1lYnVmZmVyIGFuZCBEUCByZWNlaXZlciBtYXRjaC4NCj4gDQo+IENjOiBIYXJyeSBXZW50bGFu ZCA8SGFycnkuV2VudGxhbmRAYW1kLmNvbT4NCj4gQ2M6IE5pY2sgS2F6bGF1c2thcyA8TmljaG9s YXMuS2F6bGF1c2thc0BhbWQuY29tPg0KPiBDaGFuZ2UtSWQ6IEk1NzQ4ZjEwMTg4MzUxMzk5YmIy NWM0ZmJhY2ZkMTZhYzY2ODUwODc3DQo+IFNpZ25lZC1vZmYtYnk6IERpbmdjaGVuIFpoYW5nIDxk aW5nY2hlbi56aGFuZ0BhbWQuY29tPg0KPiAtLS0NCj4gICB0ZXN0cy9hbWRncHUvYW1kX2J5cGFz cy5jIHwgMzgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICAgdGVz dHMvYW1kZ3B1L21lc29uLmJ1aWxkICB8ICAgMSArDQo+ICAgMiBmaWxlcyBjaGFuZ2VkLCAzODQg aW5zZXJ0aW9ucygrKQ0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9hbWRncHUvYW1kX2J5 cGFzcy5jDQo+IA0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvYW1kZ3B1L2FtZF9ieXBhc3MuYyBiL3Rl c3RzL2FtZGdwdS9hbWRfYnlwYXNzLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgg MDAwMDAwMDAuLjE3YTY3NDIyDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvdGVzdHMvYW1kZ3B1 L2FtZF9ieXBhc3MuYw0KPiBAQCAtMCwwICsxLDM4MyBAQA0KPiArLyoNCj4gKyAqIENvcHlyaWdo dCAyMDE5IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4NCj4gKyAqDQo+ICsgKiBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh aW5pbmcgYQ0KPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwNCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24N Cj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBk aXN0cmlidXRlLCBzdWJsaWNlbnNlLA0KPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlDQo+ICsgKiBTb2Z0d2Fy ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOg0KPiArICoNCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl cm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluDQo+ICsgKiBhbGwgY29waWVzIG9y IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCj4gKyAqDQo+ICsgKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwgRVhQUkVTUyBPUg0KPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksDQo+ICsgKiBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hB TEwNCj4gKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUg Rk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUg0KPiArICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVS IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsDQo+ICsgKiBBUklT SU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI RSBVU0UgT1INCj4gKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCj4gKyAqDQo+ ICsgKiBBdXRob3I6IEFNRA0KDQpJIGRvbid0IHRoaW5rIHdlIHJlYWxseSBuZWVkIHRoZSBBdXRo b3I6IG5vdGUgaGVyZS4NCg0KPiArICovDQo+ICsjaW5jbHVkZSAiZHJtLmgiDQo+ICsjaW5jbHVk ZSAiZHJtdGVzdC5oIg0KPiArI2luY2x1ZGUgImlndC5oIg0KPiArI2luY2x1ZGUgPGxpbnV4L2tl cm5lbC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiArI2luY2x1ZGUgInNpZ25h bC5oIg0KPiArDQo+ICsvKg0KPiArICogaW50ZXJuYWwgdXNlDQo+ICsgKiBDb21tb24gdGVzdCBk YXRhDQo+ICsgKiAqLw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArCWludCBkcm1fZmQ7DQo+ICsJ aW50IHdpZHRoOw0KPiArCWludCBoZWlnaHQ7DQo+ICsJZW51bSBwaXBlIHBpcGVfaWQ7DQo+ICsJ aWd0X2Rpc3BsYXlfdCBkaXNwbGF5Ow0KPiArCWlndF9wbGFuZV90ICpwcmltYXJ5Ow0KPiArCWln dF9vdXRwdXRfdCAqb3V0cHV0Ow0KPiArCWlndF9waXBlX3QgKnBpcGU7DQo+ICsJaWd0X3BpcGVf Y3JjX3QgKnBpcGVfY3JjOw0KPiArCWlndF9jcmNfdCBjcmNfZmI7DQo+ICsJaWd0X2NyY190IGNy Y19kcHJ4Ow0KPiArCWRybU1vZGVNb2RlSW5mbyAqbW9kZTsNCj4gK30gZGF0YV90Ow0KPiArDQo+ ICtlbnVtIHBhdHRlcm4gew0KPiArCVRFU1RfUEFUVEVSTl9EUF9DT0xPUl9SQU1QLA0KPiArCVRF U1RfUEFUVEVSTl9EUF9CTEFDS19XSElURV9WRVJUX0xJTkVTLA0KPiArCVRFU1RfUEFUVEVSTl9E UF9CTEFDS19XSElURV9IT1JaX0xJTkVTLA0KPiArCVRFU1RfUEFUVEVSTl9EUF9DT0xPUl9TUVVB UkVTX1ZFU0EsDQo+ICsJLyogcGxlYXNlIGRvbid0IGFkZCBwYXR0ZXJuIGFmdGVyIHRoZSBiZWxv dyBsaW5lICovDQo+ICsJVEVTVF9QQVRURVJOX01BWCwNCj4gK307DQo+ICsNCj4gK2NvbnN0IGNo YXIgKnB0bnN0cltURVNUX1BBVFRFUk5fTUFYXSA9IHsNCj4gKwkiRFAgQ29sb3IgUmFtcCIsDQo+ ICsJIkRQIFZlcnRpY2FsIExpbmVzIiwNCj4gKwkiRFAgSG9yaXpvbnRhbCBMaW5lcyIsDQo+ICsJ IkRQIENvbG9yIFNxdWFyZXMgVkVTQSINCj4gK307DQo+ICsNCj4gKy8qIENvbW1vbiB0ZXN0IHNl dHVwLiAqLw0KPiArc3RhdGljIHZvaWQgdGVzdF9pbml0KGRhdGFfdCAqZGF0YSkNCj4gK3sNCj4g KwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7DQo+ICsNCj4gKwkvKiBJ dCBkb2Vzbid0IG1hdHRlciB3aGljaCBwaXBlIHdlIGNob29zZSBvbiBhbWRwZ3UuICovDQo+ICsJ ZGF0YS0+cGlwZV9pZCA9IFBJUEVfQTsNCj4gKwlkYXRhLT5waXBlID0gJmRhdGEtPmRpc3BsYXku cGlwZXNbZGF0YS0+cGlwZV9pZF07DQo+ICsNCj4gKwlpZ3RfZGlzcGxheV9yZXNldChkaXNwbGF5 KTsNCj4gKw0KPiArCWRhdGEtPm91dHB1dCA9IGlndF9nZXRfc2luZ2xlX291dHB1dF9mb3JfcGlw ZShkaXNwbGF5LCBkYXRhLT5waXBlX2lkKTsNCj4gKwlpZ3RfYXNzZXJ0KGRhdGEtPm91dHB1dCk7 DQo+ICsNCj4gKwlkYXRhLT5tb2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShkYXRhLT5vdXRwdXQp Ow0KPiArCWlndF9hc3NlcnQoZGF0YS0+bW9kZSk7DQo+ICsNCj4gKwlkYXRhLT5wcmltYXJ5ID0N Cj4gKwkJaWd0X3BpcGVfZ2V0X3BsYW5lX3R5cGUoZGF0YS0+cGlwZSwgRFJNX1BMQU5FX1RZUEVf UFJJTUFSWSk7DQo+ICsNCj4gKwlkYXRhLT5waXBlX2NyYyA9IGlndF9waXBlX2NyY19uZXcoZGF0 YS0+ZHJtX2ZkLCBkYXRhLT5waXBlX2lkLA0KPiArCQkJCQkgIEFNREdQVV9QSVBFX0NSQ19TT1VS Q0VfQVVUTyk7DQo+ICsJaWd0X3BpcGVfY3JjX3NldF9zb3VyY2UoZGF0YS0+cGlwZV9jcmMsIEFN REdQVV9QSVBFX0NSQ19TT1VSQ0VfRFBSWCk7DQoNCkp1c3Qgb3BlbiB0aGUgc291cmNlIG9uIHRo ZSBBTURHUFVfUElQRV9DUkNfU09VUkNFX0RQUlggcmF0aGVyIHRoYW4gDQpjaGFuZ2luZyBpdCBp bW1lZGlhdGVseSBhZnRlci4gVGhhdCB3YXkgd2UgZG9uJ3QgZXZlbiBuZWVkIA0KaWd0X3BpcGVf Y3JjX3NldF9zb3VyY2UuDQoNCk5pY2hvbGFzIEthemxhdXNrYXMNCg0KPiArDQo+ICsJaWd0X291 dHB1dF9zZXRfcGlwZShkYXRhLT5vdXRwdXQsIGRhdGEtPnBpcGVfaWQpOw0KPiArDQo+ICsJZGF0 YS0+d2lkdGggPSBkYXRhLT5tb2RlLT5oZGlzcGxheTsNCj4gKwlkYXRhLT5oZWlnaHQgPSBkYXRh LT5tb2RlLT52ZGlzcGxheTsNCj4gK30NCj4gKw0KPiArLyogQ29tbW9uIHRlc3QgY2xlYW51cC4g Ki8NCj4gK3N0YXRpYyB2b2lkIHRlc3RfZmluaShkYXRhX3QgKmRhdGEpDQo+ICt7DQo+ICsJaWd0 X3BpcGVfY3JjX2ZyZWUoZGF0YS0+cGlwZV9jcmMpOw0KPiArCWlndF9kaXNwbGF5X3Jlc2V0KCZk YXRhLT5kaXNwbGF5KTsNCj4gK30NCj4gKw0KPiArLyoNCj4gKyAqIGRyYXcgdGhlIERQIGNvbG9y IHJhbXAgdGVzdCBwYXR0ZXJuDQo+ICsgKiBSZWZlcmVuY2U6IERQIExpbmsgQ1RTIDEuMiBDb3Jl IHIxLjEsIHNlYy4gMy4xLjUuMQ0KPiArICovDQo+ICtzdGF0aWMgdm9pZCBkcmF3X2RwX3Rlc3Rf cGF0dGVybl9jb2xvcl9yYW1wKGlndF9mYl90ICpmYikNCj4gK3sNCj4gKwljb25zdCBpbnQgaCA9 IDY0OyAgLyogdGVzdCBwYXR0ZXJuIHJlY3RhbmdsZSBoZWlnaHQgKi8NCj4gKwljb25zdCBpbnQg YmxvY2tfaCA9IGggKiA0OyAvKiBibG9jayBoZWlnaHQgb2YgUi1HLUItV2hpdGUgcmVjdGFuZ2xl cyAqLw0KPiArCXZvaWQgKnB0cl9mYjsNCj4gKwl1aW50OF90ICpkYXRhOw0KPiArCWludCB4LHk7 DQo+ICsJaW50IGk7DQo+ICsJdWludDhfdCB2YWw7DQo+ICsNCj4gKwkvKg0KPiArCSAqIDY0LWJ5 LTI1NiBwaXhlbHMgcGVyIHJlY3RhbmdsZQ0KPiArCSAqIFItRy1CLVdoaXRlIHJlY3RhbmdsZSBp biBvcmRlciBpbiB2ZXJ0aWNhbA0KPiArCSAqIGR1cGxpY2F0ZSBpbiBob3Jpem9udGFsDQo+ICsJ ICovDQo+ICsJcHRyX2ZiID0gaWd0X2ZiX21hcF9idWZmZXIoZmItPmZkLCBmYik7DQo+ICsJaWd0 X2Fzc2VydChwdHJfZmIpOw0KPiArCWRhdGEgPSBwdHJfZmIgKyBmYi0+b2Zmc2V0c1swXTsNCj4g Kw0KPiArCWZvciAoeSA9IDA7IHkgPCBmYi0+aGVpZ2h0OyArK3kpIHsNCj4gKwkJZm9yICh4ID0g MCwgdmFsID0gMDsgeCA8IGZiLT53aWR0aDsgKyt4LCArK3ZhbCkgew0KPiArCQkJc3dpdGNoIChm Yi0+ZHJtX2Zvcm1hdCkgew0KPiArCQkJY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4Og0KDQpDYW4g dGhlc2Ugc3dpdGNoIHN0YXRlbWVudHMgYmUgcHVsbGVkIG91dCBvZiB0aGUgbG9vcD8gZmItPmRy bV9mb3JtYXQgDQppc24ndCBnb2luZyB0byBjaGFuZ2Ugb24gZXZlcnkgcGl4ZWwuIFRoZSBicmFu Y2ggcHJlZGljdG9yIHdpbGwgYmUgZmluZSANCndpdGggdGhpcyBidXQgaXQncyBiaXQgdW5uZWNl c3NhcnkuDQoNCj4gKwkJCQlpID0geCAqIDQgKyB5ICogZmItPnN0cmlkZXNbMF07DQo+ICsNCj4g KwkJCQkvKiB2ZXJ0aWNhbCBSLUctQi1XaGl0ZSByZWMgKi8NCj4gKwkJCQlpZiAoKHkgJSBibG9j a19oKSA8IGgpIHsJICAgIC8qIFJlZCAqLw0KPiArCQkJCQlkYXRhW2kgKyAyXSA9IHZhbDsNCj4g KwkJCQkJZGF0YVtpICsgMV0gPSAwOw0KPiArCQkJCQlkYXRhW2kgKyAwXSA9IDA7DQo+ICsJCQkJ fSBlbHNlIGlmICgoeSAlIGJsb2NrX2gpIDwgMiAqIGgpIHsgLyogR3JlZW4gKi8NCj4gKwkJCQkJ ZGF0YVtpICsgMl0gPSAwOw0KPiArCQkJCQlkYXRhW2kgKyAxXSA9IHZhbDsNCj4gKwkJCQkJZGF0 YVtpICsgMF0gPSAwOw0KPiArCQkJCX0gZWxzZSBpZiAoKHkgJSBibG9ja19oKSA8IDMgKiBoKSB7 IC8qIEJsdWUgKi8NCj4gKwkJCQkJZGF0YVtpICsgMl0gPSAwOw0KPiArCQkJCQlkYXRhW2kgKyAx XSA9IDA7DQo+ICsJCQkJCWRhdGFbaSArIDBdID0gdmFsOw0KPiArCQkJCX0gZWxzZSB7CQkJICAg IC8qIFdoaXRlICovDQo+ICsJCQkJCWRhdGFbaSArIDJdID0gdmFsOw0KPiArCQkJCQlkYXRhW2kg KyAxXSA9IHZhbDsNCj4gKwkJCQkJZGF0YVtpICsgMF0gPSB2YWw7DQo+ICsJCQkJfQ0KPiArCQkJ CWJyZWFrOw0KPiArCQkJZGVmYXVsdDoNCj4gKwkJCQlpZ3RfYXNzZXJ0X2YoMCwgIkRSTSBGb3Jt YXQgSW52YWxpZCIpOw0KPiArCQkJCWJyZWFrOw0KPiArCQkJfQ0KPiArCQl9DQo+ICsJfQ0KPiAr DQo+ICsJaWd0X2ZiX3VubWFwX2J1ZmZlcihmYiwgcHRyX2ZiKTsNCj4gK30NCj4gKw0KPiArLyoN Cj4gKyAqIGRyYXcgdGhlIERQIHZlcnRpY2FsIGxpbmVzIHRlc3QgcGF0dGVybg0KPiArICogKiBS ZWZlcmVuY2U6IERQIExpbmsgQ1RTIDEuMiBDb3JlIHIxLjEsIHNlYy4gMy4xLjUuMg0KPiArICov DQo+ICtzdGF0aWMgdm9pZCBkcmF3X2RwX3Rlc3RfcGF0dGVybl92ZXJ0X2xpbmVzKGlndF9mYl90 ICpmYikNCj4gK3sNCj4gKwl2b2lkICpwdHJfZmI7DQo+ICsJdWludDhfdCAqZGF0YTsNCj4gKwlp bnQgeCwgeTsNCj4gKwlpbnQgaTsNCj4gKw0KPiArCS8qIGFsdGVybmF0aW5nIGJsYWNrIGFuZCB3 aGl0ZSBsaW5lcywgMSBwaXhlbCB3aWRlICovDQo+ICsJcHRyX2ZiID0gaWd0X2ZiX21hcF9idWZm ZXIoZmItPmZkLCBmYik7DQo+ICsJaWd0X2Fzc2VydChwdHJfZmIpOw0KPiArCWRhdGEgPSBwdHJf ZmIgKyBmYi0+b2Zmc2V0c1swXTsNCj4gKw0KPiArCWZvciAoeSA9IDA7IHkgPCBmYi0+aGVpZ2h0 OyArK3kpIHsNCj4gKwkJZm9yICh4ID0gMDsgeCA8IGZiLT53aWR0aDsgKyt4KSB7DQo+ICsJCQlz d2l0Y2ggKGZiLT5kcm1fZm9ybWF0KSB7DQo+ICsJCQljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6 DQo+ICsJCQkJaSA9IHggKiA0ICsgeSAqIGZiLT5zdHJpZGVzWzBdOw0KPiArDQo+ICsJCQkJaWYg KCh4ICYgMSkgPT0gMCkgew0KPiArCQkJCQlkYXRhW2kgKyAyXSA9IDB4ZmY7IC8qIFIgKi8NCj4g KwkJCQkJZGF0YVtpICsgMV0gPSAweGZmOyAvKiBHICovDQo+ICsJCQkJCWRhdGFbaSArIDBdID0g MHhmZjsgLyogQiAqLw0KPiArCQkJCX0NCj4gKwkJCQllbHNlIHsNCj4gKwkJCQkJZGF0YVtpICsg Ml0gPSAwOw0KPiArCQkJCQlkYXRhW2kgKyAxXSA9IDA7DQo+ICsJCQkJCWRhdGFbaSArIDBdID0g MDsNCj4gKwkJCQl9DQo+ICsJCQkJYnJlYWs7DQo+ICsJCQlkZWZhdWx0Og0KPiArCQkJCWlndF9h c3NlcnRfZigwLCAiRFJNIEZvcm1hdCBJbnZhbGlkIik7DQo+ICsJCQkJYnJlYWs7DQo+ICsJCQl9 DQo+ICsJCX0NCj4gKwl9DQo+ICsNCj4gKwlpZ3RfZmJfdW5tYXBfYnVmZmVyKGZiLCBwdHJfZmIp Ow0KPiArfQ0KPiArDQo+ICsvKiBkcmF3IHRoZSBEUCBob3Jpem9udGFsIGxpbmVzIHRlc3QgcGF0 dGVybiAqLw0KPiArc3RhdGljIHZvaWQgZHJhd19kcF90ZXN0X3BhdHRlcm5faG9yel9saW5lcyhp Z3RfZmJfdCAqZmIpDQo+ICt7DQo+ICsJdm9pZCAqcHRyX2ZiOw0KPiArCXVpbnQ4X3QgKmRhdGE7 DQo+ICsJaW50IHgsIHk7DQo+ICsJaW50IGk7DQo+ICsNCj4gKwkvKiBhbHRlcm5hdGluZyBibGFj ayBhbmQgd2hpdGUgaG9yaXpvbnRhbCBsaW5lcywgMSBwaXhlbCBoaWdoICovDQo+ICsJcHRyX2Zi ID0gaWd0X2ZiX21hcF9idWZmZXIoZmItPmZkLCBmYik7DQo+ICsJaWd0X2Fzc2VydChwdHJfZmIp Ow0KPiArCWRhdGEgPSBwdHJfZmIgKyBmYi0+b2Zmc2V0c1swXTsNCj4gKw0KPiArCWZvciAoeSA9 IDA7IHkgPCBmYi0+aGVpZ2h0OyArK3kpIHsNCj4gKwkJZm9yICh4ID0gMDsgeCA8IGZiLT53aWR0 aDsgKyt4KSB7DQo+ICsJCQlzd2l0Y2ggKGZiLT5kcm1fZm9ybWF0KSB7DQo+ICsJCQljYXNlIERS TV9GT1JNQVRfWFJHQjg4ODg6DQo+ICsJCQkJaSA9IHggKiA0ICsgeSAqIGZiLT5zdHJpZGVzWzBd Ow0KPiArDQo+ICsJCQkJaWYgKCh5ICYgMSkgPT0gMCkgew0KPiArCQkJCQlkYXRhW2kgKyAyXSA9 IDB4ZmY7IC8qIFIgKi8NCj4gKwkJCQkJZGF0YVtpICsgMV0gPSAweGZmOyAvKiBHICovDQo+ICsJ CQkJCWRhdGFbaSArIDBdID0gMHhmZjsgLyogQiAqLw0KPiArCQkJCX0NCj4gKwkJCQllbHNlIHsN Cj4gKwkJCQkJZGF0YVtpICsgMl0gPSAwOw0KPiArCQkJCQlkYXRhW2kgKyAxXSA9IDA7DQo+ICsJ CQkJCWRhdGFbaSArIDBdID0gMDsNCj4gKwkJCQl9DQo+ICsJCQkJYnJlYWs7DQo+ICsJCQlkZWZh dWx0Og0KPiArCQkJCWlndF9hc3NlcnRfZigwLCAiRFJNIEZvcm1hdCBJbnZhbGlkIik7DQo+ICsJ CQkJYnJlYWs7DQo+ICsJCQl9DQo+ICsJCX0NCj4gKwl9DQo+ICsNCj4gKwlpZ3RfZmJfdW5tYXBf YnVmZmVyKGZiLCBwdHJfZmIpOw0KPiArfQ0KPiArDQo+ICsvKg0KPiArICogZHJhdyB0aGUgRFAg Y29sb3Igc3F1YXJlcyBWRVNBIHRlc3QgcGF0dGVybg0KPiArICogUmVmZXJlbmNlOiBEUCBMaW5r IENUUyAxLjIgQ29yZSByMS4xLCBzZWMuIDMuMS41LjMNCj4gKyAqLw0KPiArc3RhdGljIHZvaWQg ZHJhd19kcF90ZXN0X3BhdHRlcm5fY29sb3Jfc3F1YXJlc192ZXNhKGlndF9mYl90ICpmYikNCj4g K3sNCj4gKwljb25zdCBpbnQgaCA9IDY0OyAvKiB0ZXN0IHBhdHRlcm4gc3F1YXJlIGhlaWdodC93 aWR0aCAqLw0KPiArCWNvbnN0IGludCBibG9ja19oID0gaCAqIDI7IC8qIGJsb2NrIGhlaWdodCBv ZiB0aGUgcmVwZXRpdGlvbiBwYXR0ZXJuICovDQo+ICsJY29uc3QgaW50IGJsb2NrX3cgPSBoICog ODsgLyogYmxvY2sgd2lkdGggb2YgdGhlIHJlcGV0aXRpb24gcGF0dGVybiAqLw0KPiArCWNvbnN0 IHVpbnQ4X3QgcmdiWzNdWzJdWzhdID0gew0KPiArCQl7LyogUmVkIHRhYmxlIG9mIHRoZSBwYXR0 ZXJuIHNxdWFyZXMgKi8NCj4gKwkJCXsyNTUsIDI1NSwgMCwgMCwgMjU1LCAyNTUsIDAsIDB9LA0K PiArCQkJezAsIDI1NSwgMjU1LCAwLCAwLCAyNTUsIDI1NSwgMH0sDQo+ICsJCX0sDQo+ICsJCXsv KiBHcmVlbiB0YWJsZSAqLw0KPiArCQkJezI1NSwgMjU1LCAyNTUsIDI1NSwgMCwgMCwgMCwgMH0s DQo+ICsJCQl7MCwgMCwgMCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwfSwNCj4gKwkJfSwNCj4gKwkJ ey8qIEJsdWUgdGFibGUgKi8NCj4gKwkJCXsyNTUsIDAsIDI1NSwgMCwgMjU1LCAwLCAyNTUsIDB9 LA0KPiArCQkJezI1NSwgMCwgMjU1LCAwLCAyNTUsIDAsIDI1NSwgMH0sDQo+ICsJCX0sDQo+ICsJ fTsNCj4gKw0KPiArCXZvaWQgKnB0cl9mYjsNCj4gKwl1aW50OF90ICpkYXRhOw0KPiArCWludCB4 LCB5Ow0KPiArCWludCBpLCBqLCBrOw0KPiArDQo+ICsJcHRyX2ZiID0gaWd0X2ZiX21hcF9idWZm ZXIoZmItPmZkLCBmYik7DQo+ICsJaWd0X2Fzc2VydChwdHJfZmIpOw0KPiArCWRhdGEgPSBwdHJf ZmIgKyBmYi0+b2Zmc2V0c1swXTsNCj4gKw0KPiArCWZvciAoeSA9IDA7IHkgPCBmYi0+aGVpZ2h0 OyArK3kpIHsNCj4gKwkJZm9yICh4ID0gMDsgeCA8IGZiLT53aWR0aDsgKyt4KSB7DQo+ICsJCQlz d2l0Y2ggKGZiLT5kcm1fZm9ybWF0KSB7DQo+ICsJCQljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6 DQo+ICsJCQkJaSA9IHggKiA0ICsgeSAqIGZiLT5zdHJpZGVzWzBdOw0KPiArCQkJCWogPSAoeSAl IGJsb2NrX2gpIC8gaDsNCj4gKwkJCQlrID0gKHggJSBibG9ja193KSAvIGg7DQo+ICsNCj4gKwkJ CQlkYXRhW2kgKyAyXSA9IHJnYlswXVtqXVtrXTsgLyogUiAqLw0KPiArCQkJCWRhdGFbaSArIDFd ID0gcmdiWzFdW2pdW2tdOyAvKiBHICovDQo+ICsJCQkJZGF0YVtpICsgMF0gPSByZ2JbMl1bal1b a107IC8qIEIgKi8NCj4gKwkJCQlicmVhazsNCj4gKwkJCWRlZmF1bHQ6DQo+ICsJCQkJaWd0X2Fz c2VydF9mKDAsICJEUk0gRm9ybWF0IEludmFsaWQiKTsNCj4gKwkJCQlicmVhazsNCj4gKwkJCX0N Cj4gKwkJfQ0KPiArCX0NCj4gKw0KPiArCWlndF9mYl91bm1hcF9idWZmZXIoZmIsIHB0cl9mYik7 DQo+ICt9DQo+ICsNCj4gKy8qIGdlbmVyYXRlIHRlc3QgcGF0dGVybiBhbmQgZmlsbHMgYSBGQiAq Lw0KPiArc3RhdGljIHZvaWQgZ2VuZXJhdGVfdGVzdF9wYXR0ZXJuKGlndF9mYl90ICpmYiwgZGF0 YV90ICpkYXRhLCBlbnVtIHBhdHRlcm4gcHRuKQ0KPiArew0KPiArCWlndF9hc3NlcnQoZmItPmZk ICYmIChwdG4gPCBURVNUX1BBVFRFUk5fTUFYKSk7DQo+ICsNCj4gKwlpZiAocHRuID09IFRFU1Rf UEFUVEVSTl9EUF9DT0xPUl9SQU1QKSB7DQo+ICsJCWRyYXdfZHBfdGVzdF9wYXR0ZXJuX2NvbG9y X3JhbXAoZmIpOw0KPiArCX0gZWxzZSBpZiAocHRuID09IFRFU1RfUEFUVEVSTl9EUF9CTEFDS19X SElURV9WRVJUX0xJTkVTKSB7DQo+ICsJCWRyYXdfZHBfdGVzdF9wYXR0ZXJuX3ZlcnRfbGluZXMo ZmIpOw0KPiArCX0gZWxzZSBpZiAocHRuID09IFRFU1RfUEFUVEVSTl9EUF9CTEFDS19XSElURV9I T1JaX0xJTkVTKSB7DQo+ICsJCWRyYXdfZHBfdGVzdF9wYXR0ZXJuX2hvcnpfbGluZXMoZmIpOw0K PiArCX0gZWxzZSBpZiAocHRuID09IFRFU1RfUEFUVEVSTl9EUF9DT0xPUl9TUVVBUkVTX1ZFU0Ep IHsNCj4gKwkJZHJhd19kcF90ZXN0X3BhdHRlcm5fY29sb3Jfc3F1YXJlc192ZXNhKGZiKTsNCj4g Kwl9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGJ5cGFzc184YnBjX3Rlc3QoZGF0YV90ICpk YXRhKQ0KPiArew0KPiArCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsN Cj4gKwlpZ3RfZmJfdCBmYjsNCj4gKwllbnVtIHBhdHRlcm4gcHRuOw0KPiArDQo+ICsJdGVzdF9p bml0KGRhdGEpOw0KPiArDQo+ICsJaWd0X2NyZWF0ZV9mYihkYXRhLT5kcm1fZmQsIGRhdGEtPndp ZHRoLCBkYXRhLT5oZWlnaHQsDQo+ICsJCSAgICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsIExPQ0FM X0RSTV9GT1JNQVRfTU9EX05PTkUsICZmYik7DQo+ICsNCj4gKwkvKg0KPiArCSAqIFNldHRpbmdz Og0KPiArCSAqICAgbm8gZGVnYW1tYQ0KPiArCSAqICAgbm8gcmVnYW1tYQ0KPiArCSAqICAgbm8g Q1RNDQo+ICsJICovDQo+ICsJaWd0X3BpcGVfb2JqX3JlcGxhY2VfcHJvcF9ibG9iKGRhdGEtPnBp cGUsIElHVF9DUlRDX0RFR0FNTUFfTFVULCBOVUxMLCAwKTsNCj4gKwlpZ3RfcGlwZV9vYmpfcmVw bGFjZV9wcm9wX2Jsb2IoZGF0YS0+cGlwZSwgSUdUX0NSVENfR0FNTUFfTFVULCBOVUxMLCAwKTsN Cj4gKwlpZ3RfcGlwZV9vYmpfcmVwbGFjZV9wcm9wX2Jsb2IoZGF0YS0+cGlwZSwgSUdUX0NSVENf Q1RNLCBOVUxMLCAwKTsNCj4gKw0KPiArCWlndF9wbGFuZV9zZXRfZmIoZGF0YS0+cHJpbWFyeSwg JmZiKTsNCj4gKwlpZ3RfZGlzcGxheV9jb21taXRfYXRvbWljKGRpc3BsYXksIERSTV9NT0RFX0FU T01JQ19BTExPV19NT0RFU0VULCBOVUxMKTsNCj4gKw0KPiArCS8qIHRyYXZlcnNlIGFsbCB0aGUg dGVzdCBwYXR0ZXJuIHRvIHZhbGlkYXRlIDhicGMgYnlwYXNzIG1vZGUgKi8NCj4gKwlmb3IgKHB0 biA9IFRFU1RfUEFUVEVSTl9EUF9DT0xPUl9SQU1QOyBwdG4gPCBURVNUX1BBVFRFUk5fTUFYOyAr K3B0bikgew0KPiArCQlpZ3RfZGVidWcoIlRlc3QgUGF0dGVybjogJXNcbiIsIHB0bnN0cltwdG5d KTsNCj4gKw0KPiArCQlnZW5lcmF0ZV90ZXN0X3BhdHRlcm4oJmZiLCBkYXRhLCBwdG4pOw0KPiAr DQo+ICsJCS8qIEdyYWIgRkIgYW5kIERQUlggQ1JDcyBhbmQgY29tcGFyZSAqLw0KPiArCQlpZ3Rf ZmJfY2FsY19jcmMoJmZiLCAmZGF0YS0+Y3JjX2ZiKTsNCj4gKwkJaWd0X3BpcGVfY3JjX2NvbGxl Y3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmZGF0YS0+Y3JjX2RwcngpOw0KPiArDQo+ICsJCWlndF9h c3NlcnRfY3JjX2VxdWFsKCZkYXRhLT5jcmNfZmIsICZkYXRhLT5jcmNfZHByeCk7DQo+ICsJfQ0K PiArDQo+ICsJaWd0X3BsYW5lX3NldF9mYihkYXRhLT5wcmltYXJ5LCBOVUxMKTsNCj4gKwl0ZXN0 X2ZpbmkoZGF0YSk7DQo+ICsJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZmYik7DQo+ICt9 DQo+ICsNCj4gK2lndF9tYWluDQo+ICt7DQo+ICsJZGF0YV90IGRhdGE7DQo+ICsJbWVtc2V0KCZk YXRhLCAwLCBzaXplb2YoZGF0YSkpOw0KPiArDQo+ICsJaWd0X3NraXBfb25fc2ltdWxhdGlvbigp Ow0KPiArDQo+ICsJaWd0X2ZpeHR1cmUgew0KPiArCQlkYXRhLmRybV9mZCA9IGRybV9vcGVuX2Ry aXZlcl9tYXN0ZXIoRFJJVkVSX0FNREdQVSk7DQo+ICsJCWlmIChkYXRhLmRybV9mZCA9PSAtMSkN Cj4gKwkJCWlndF9za2lwKCJOb3QgYW4gYW1kZ3B1IGRyaXZlci5cbiIpOw0KPiArCQlpZ3RfcmVx dWlyZV9waXBlX2NyYyhkYXRhLmRybV9mZCk7DQo+ICsNCj4gKwkJa21zdGVzdF9zZXRfdnRfZ3Jh cGhpY3NfbW9kZSgpOw0KPiArDQo+ICsJCWlndF9kaXNwbGF5X3JlcXVpcmUoJmRhdGEuZGlzcGxh eSwgZGF0YS5kcm1fZmQpOw0KPiArCQlpZ3RfcmVxdWlyZShkYXRhLmRpc3BsYXkuaXNfYXRvbWlj KTsNCj4gKwkJaWd0X2Rpc3BsYXlfcmVxdWlyZV9vdXRwdXQoJmRhdGEuZGlzcGxheSk7DQo+ICsJ fQ0KPiArDQo+ICsJaWd0X3N1YnRlc3QoIjhicGMtYnlwYXNzLW1vZGUiKQ0KPiArCQlieXBhc3Nf OGJwY190ZXN0KCZkYXRhKTsNCj4gKw0KPiArCWlndF9maXh0dXJlIHsNCj4gKwkJaWd0X2Rpc3Bs YXlfZmluaSgmZGF0YS5kaXNwbGF5KTsNCj4gKwl9DQo+ICt9DQo+IGRpZmYgLS1naXQgYS90ZXN0 cy9hbWRncHUvbWVzb24uYnVpbGQgYi90ZXN0cy9hbWRncHUvbWVzb24uYnVpbGQNCj4gaW5kZXgg NDIwODYzNzQuLmI3OTgyMjkxIDEwMDY0NA0KPiAtLS0gYS90ZXN0cy9hbWRncHUvbWVzb24uYnVp bGQNCj4gKysrIGIvdGVzdHMvYW1kZ3B1L21lc29uLmJ1aWxkDQo+IEBAIC00LDYgKzQsNyBAQCBh bWRncHVfZGVwcyA9IHRlc3RfZGVwcw0KPiAgIGlmIGxpYmRybV9hbWRncHUuZm91bmQoKQ0KPiAg IAlhbWRncHVfcHJvZ3MgKz0gWyAnYW1kX2FibScsDQo+ICAgCQkJICAnYW1kX2Jhc2ljJywNCj4g KwkJCSAgJ2FtZF9ieXBhc3MnLA0KPiAgIAkJCSAgJ2FtZF9jb2xvcicsDQo+ICAgCQkJICAnYW1k X2NzX25vcCcsDQo+ICAgCQkJICAnYW1kX3ByaW1lJywNCj4gDQoNCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1k ZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaWd0LWRldg==