From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM04-BN3-obe.outbound.protection.outlook.com (mail-eopbgr680085.outbound.protection.outlook.com [40.107.68.85]) by gabe.freedesktop.org (Postfix) with ESMTPS id EA7A16E079 for ; Wed, 29 May 2019 18:43:28 +0000 (UTC) From: "Li, Sun peng (Leo)" Date: Wed, 29 May 2019 18:43:25 +0000 Message-ID: <933a82fd-730a-70f3-6d70-01053bf696a4@amd.com> References: <20190527171924.19493-1-nicholas.kazlauskas@amd.com> In-Reply-To: <20190527171924.19493-1-nicholas.kazlauskas@amd.com> Content-Language: en-US Content-ID: <8AD3FD351ED787449BB9AC75C2AB1BDC@namprd12.prod.outlook.com> MIME-Version: 1.0 Subject: Re: [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: "Kazlauskas, Nicholas" , "igt-dev@lists.freedesktop.org" List-ID: DQoNCk9uIDIwMTktMDUtMjcgMToxOSBwLm0uLCBOaWNob2xhcyBLYXpsYXVza2FzIHdyb3RlOg0K PiBUaGUgRFJNIGNvbG9yIG1hbmFnZW1lbnQgcGlwZWxpbmUgZG9lc24ndCBkaXJlY3RseSBtYXAg dG8gQU1EIGhhcmR3YXJlDQo+IHNvIGNyZWF0aXZlIHNvbHV0aW9ucyB0byBpbXBsZW1lbnRpbmcg Q1JUQyByZWdhbW1hLCBDVE0gYW5kIGdhbW1hIHdlcmUNCj4gbmVlZGVkIGZvciBib3RoIERDRSBh bmQgRENOLiBBIGZldyBtaXN0YWtlcyB3ZXJlIG1hZGUgaW4gdGhlIHByb2Nlc3MNCj4gdGhhdCB3 ZXJlbid0IGNhdWdodCBieSBrbXNfY29sb3JAIHRlc3RzOg0KPiANCj4gLSBDYW4ndCBnZXQgbGlu ZWFyIGRlZ2FtbWEgb3V0cHV0IHdpdGhvdXQgc2V0dGluZyBhIGN1c3RvbSBkZWdhbW1hDQo+IC0g Q2FuJ3Qgc3BlY2lmeSBhIG5vbi1saW5lYXIgZGVnYW1tYSB0aGF0IHByb2R1Y2VzIGNvcnJlY3Qg b3V0cHV0DQo+IC0gQ2FuJ3Qgc3BlY2lmeSBhIGNvcnJlY3QgZ2FtbWEgd2hlbiBhIGxpbmVhciBk ZWdhbW1hIGlzIHVzZWQNCj4gDQo+IFRoZXNlIGFyZSBjYXVzZWQgYnkgdXNpbmcgaW1wbGljaXQg c1JHQiBkZWdhbW1hIHRoZW4gc1JHQiBnYW1tYSB3aGVuIG5vDQo+IG1hdHJpY2VzIGFyZSBzZXQu IFRoaXMgcHJvZHVjZXMgdmlzdWFsbHkgY29ycmVjdCBvdXRwdXQgd2hlbiB1c2luZyBhDQo+IENU TSB3aXRoIG5vIG1hdHJpY2VzIHNldCwgYnV0IGl0J3MgYWxzbyB0ZWNobmljYWxseSB0aGUgaW5j b3JyZWN0DQo+IG91dHB1dCBhY2NvcmRpbmcgdG8gdGhlIERSTSBBUEkgZG9jdW1lbnRhdGlvbi4N Cj4gDQo+IFRoZXNlIHRlc3RzIGhlbHAgdmVyaWZ5IHRoYXQgQU1ER1BVIGZvbGxvd3MgdGhlIERS TSBzcGVjIHdoZW4gaXQgY29tZXMNCj4gdG8gc2V0dGluZyBsaW5lYXIvYnlwYXNzIGdhbW1hIGFu ZCByZWdhbW1hIExVVC4NCj4gDQo+IFRoZSBleGlzdGluZyBrbXNfY29sb3JAIHRlc3RzIGFyZSB3 cml0dGVuIGNvcnJlY3RseSBhbHJlYWR5LCBzbw0KPiBhbnl0aGluZyB0aGF0IGxvb2tzIHNoYXJl ZCBpbiB0aGVzZSBpcyByZWFsbHkganVzdCB0byB2ZXJpZnkgdGhhdCB3ZSdyZQ0KPiBubyBsb25n ZXIgZG9pbmcgYW55IHN0cmFuZ2UgdGVzdCBzcGVjaWZpYyB3b3JrYXJvdW5kcyBvdXRzaWRlIG9m IHRoZQ0KPiBzcGVjIG9yIGRvY3VtZW50YXRpb24uDQo+IA0KPiBDYzogTGVvIExpIDxzdW5wZW5n LmxpQGFtZC5jb20+DQo+IENjOiBIYXJyeSBXZW50bGFuZCA8aGFycnkud2VudGxhbmRAYW1kLmNv bT4NCj4gU2lnbmVkLW9mZi1ieTogTmljaG9sYXMgS2F6bGF1c2thcyA8bmljaG9sYXMua2F6bGF1 c2thc0BhbWQuY29tPg0KDQpMR1RNLCB0aGFua3MgZm9yIHRoZSB0ZXN0IQ0KDQpSZXZpZXdlZC1i eTogTGVvIExpIDxzdW5wZW5nLmxpQGFtZC5jb20+DQoNCj4gLS0tDQo+ICAgdGVzdHMvTWFrZWZp bGUuc291cmNlcyAgIHwgICAxICsNCj4gICB0ZXN0cy9hbWRncHUvYW1kX2NvbG9yLmMgfCA0MDUg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICAgdGVzdHMvYW1kZ3B1 L21lc29uLmJ1aWxkIHwgICAxICsNCj4gICAzIGZpbGVzIGNoYW5nZWQsIDQwNyBpbnNlcnRpb25z KCspDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2FtZGdwdS9hbWRfY29sb3IuYw0KPiAN Cj4gZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5z b3VyY2VzDQo+IGluZGV4IDJkNWM5MjllLi5lZjNjMDNmMiAxMDA2NDQNCj4gLS0tIGEvdGVzdHMv TWFrZWZpbGUuc291cmNlcw0KPiArKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzDQo+IEBAIC02 LDYgKzYsNyBAQCBOT1VWRUFVX1RFU1RTID0gXA0KPiAgIA0KPiAgIEFNREdQVV9URVNUUyA9IFwN Cj4gICAJYW1kZ3B1L2FtZF9iYXNpYyBcDQo+ICsJYW1kZ3B1L2FtZF9jb2xvciBcDQo+ICAgCWFt ZGdwdS9hbWRfY3Nfbm9wIFwNCj4gICAJYW1kZ3B1L2FtZF9wcmltZSBcDQo+ICAgCWFtZGdwdS9h bWRfYWJtIFwNCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2FtZGdwdS9hbWRfY29sb3IuYyBiL3Rlc3Rz L2FtZGdwdS9hbWRfY29sb3IuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAw MDAwMC4uMGJiZWU0M2QNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi90ZXN0cy9hbWRncHUvYW1k X2NvbG9yLmMNCj4gQEAgLTAsMCArMSw0MDUgQEANCj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQgMjAx OSBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuDQo+ICsgKg0KPiArICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGENCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksDQo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2Fy ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uDQo+ICsg KiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp YnV0ZSwgc3VibGljZW5zZSwNCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQ0KPiArICogU29mdHdhcmUgaXMg ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoN Cj4gKyAqDQo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbg0KPiArICogYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQo+ICsgKg0KPiArICogVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY UFJFU1MgT1INCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLA0KPiArICogRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMDQo+ ICsgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBB TlkgQ0xBSU0sIERBTUFHRVMgT1INCj4gKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLA0KPiArICogQVJJU0lORyBG Uk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF IE9SDQo+ICsgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQo+ICsgKi8NCj4gKw0K PiArI2luY2x1ZGUgImlndC5oIg0KPiArDQo+ICsvKiAoRGUpZ2FtbWEgTFVULiAqLw0KPiArdHlw ZWRlZiBzdHJ1Y3QgbHV0IHsNCj4gKwlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqZGF0YTsNCj4gKwl1 aW50MzJfdCBzaXplOw0KPiArfSBsdXRfdDsNCj4gKw0KPiArLyogUkdCIGNvbG9yLiAqLw0KPiAr dHlwZWRlZiBzdHJ1Y3QgY29sb3Igew0KPiArCWRvdWJsZSByOw0KPiArCWRvdWJsZSBnOw0KPiAr CWRvdWJsZSBiOw0KPiArfSBjb2xvcl90Ow0KPiArDQo+ICsvKiBDb21tb24gdGVzdCBkYXRhLiAq Lw0KPiArdHlwZWRlZiBzdHJ1Y3QgZGF0YSB7DQo+ICsJaWd0X2Rpc3BsYXlfdCBkaXNwbGF5Ow0K PiArCWlndF9wbGFuZV90ICpwcmltYXJ5Ow0KPiArCWlndF9vdXRwdXRfdCAqb3V0cHV0Ow0KPiAr CWlndF9waXBlX3QgKnBpcGU7DQo+ICsJaWd0X3BpcGVfY3JjX3QgKnBpcGVfY3JjOw0KPiArCWRy bU1vZGVNb2RlSW5mbyAqbW9kZTsNCj4gKwllbnVtIHBpcGUgcGlwZV9pZDsNCj4gKwlpbnQgZmQ7 DQo+ICsJaW50IHc7DQo+ICsJaW50IGg7DQo+ICsJdWludDMyX3QgcmVnYW1tYV9sdXRfc2l6ZTsN Cj4gKwl1aW50MzJfdCBkZWdhbW1hX2x1dF9zaXplOw0KPiArfSBkYXRhX3Q7DQo+ICsNCj4gK3N0 YXRpYyB2b2lkIGx1dF9pbml0KGx1dF90ICpsdXQsIHVpbnQzMl90IHNpemUpDQo+ICt7DQo+ICsJ aWd0X2Fzc2VydChzaXplID4gMCk7DQo+ICsNCj4gKwlsdXQtPnNpemUgPSBzaXplOw0KPiArCWx1 dC0+ZGF0YSA9IG1hbGxvYyhzaXplICogc2l6ZW9mKHN0cnVjdCBkcm1fY29sb3JfbHV0KSk7DQo+ ICsJaWd0X2Fzc2VydChsdXQpOw0KPiArfQ0KPiArDQo+ICsvKiBHZW5lcmF0ZXMgdGhlIGxpbmVh ciBnYW1tYSBMVVQuICovDQo+ICtzdGF0aWMgdm9pZCBsdXRfZ2VuX2xpbmVhcihsdXRfdCAqbHV0 LCB1aW50MTZfdCBtYXNrKQ0KPiArew0KPiArCXVpbnQzMl90IG4gPSBsdXQtPnNpemUgLSAxOw0K PiArCXVpbnQzMl90IGk7DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgbHV0LT5zaXplOyArK2kp IHsNCj4gKwkJdWludDMyX3QgdiA9IChpICogMHhmZmZmIC8gbikgJiBtYXNrOw0KPiArDQo+ICsJ CWx1dC0+ZGF0YVtpXS5yZWQgPSB2Ow0KPiArCQlsdXQtPmRhdGFbaV0uYmx1ZSA9IHY7DQo+ICsJ CWx1dC0+ZGF0YVtpXS5ncmVlbiA9IHY7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICsvKiBHZW5lcmF0 ZXMgdGhlIHNSR0IgZGVnYW1tYSBMVVQuICovDQo+ICtzdGF0aWMgdm9pZCBsdXRfZ2VuX2RlZ2Ft bWFfc3JnYihsdXRfdCAqbHV0LCB1aW50MTZfdCBtYXNrKQ0KPiArew0KPiArCWRvdWJsZSByYW5n ZSA9IGx1dC0+c2l6ZSAtIDE7DQo+ICsJdWludDMyX3QgaTsNCj4gKw0KPiArCWZvciAoaSA9IDA7 IGkgPCBsdXQtPnNpemU7ICsraSkgew0KPiArCQlkb3VibGUgdSwgY29lZmY7DQo+ICsJCXVpbnQz Ml90IHY7DQo+ICsNCj4gKwkJdSA9IGkgLyByYW5nZTsNCj4gKwkJY29lZmYgPSB1IDw9IDAuMDQw NDQ5OTM2ID8gKHUgLyAxMi45MikNCj4gKwkJCQkJIDogKHBvdygodSArIDAuMDU1KSAvIDEuMDU1 LCAyLjQpKTsNCj4gKwkJdiA9ICh1aW50MzJfdCkoY29lZmYgKiAweGZmZmYpICYgbWFzazsNCj4g Kw0KPiArCQlsdXQtPmRhdGFbaV0ucmVkID0gdjsNCj4gKwkJbHV0LT5kYXRhW2ldLmJsdWUgPSB2 Ow0KPiArCQlsdXQtPmRhdGFbaV0uZ3JlZW4gPSB2Ow0KPiArCX0NCj4gK30NCj4gKw0KPiArLyog R2VuZXJhdGVzIHRoZSBzUkdCIGdhbW1hIExVVC4gKi8NCj4gK3N0YXRpYyB2b2lkIGx1dF9nZW5f cmVnYW1tYV9zcmdiKGx1dF90ICpsdXQsIHVpbnQxNl90IG1hc2spDQo+ICt7DQo+ICsJZG91Ymxl IHJhbmdlID0gbHV0LT5zaXplIC0gMTsNCj4gKwl1aW50MzJfdCBpOw0KPiArDQo+ICsJZm9yIChp ID0gMDsgaSA8IGx1dC0+c2l6ZTsgKytpKSB7DQo+ICsJCWRvdWJsZSB1LCBjb2VmZjsNCj4gKwkJ dWludDMyX3QgdjsNCj4gKw0KPiArCQl1ID0gaSAvIHJhbmdlOw0KPiArCQljb2VmZiA9IHUgPD0g MC4wMDMxMzA4MCA/ICgxMi45MiAqIHUpDQo+ICsJCQkJCTogKDEuMDU1ICogcG93KHUsIDEuMCAv IDIuNCkgLSAwLjA1NSk7DQo+ICsJCXYgPSAodWludDMyX3QpKGNvZWZmICogMHhmZmZmKSAmIG1h c2s7DQo+ICsNCj4gKwkJbHV0LT5kYXRhW2ldLnJlZCA9IHY7DQo+ICsJCWx1dC0+ZGF0YVtpXS5i bHVlID0gdjsNCj4gKwkJbHV0LT5kYXRhW2ldLmdyZWVuID0gdjsNCj4gKwl9DQo+ICt9DQo+ICsN Cj4gK3N0YXRpYyB2b2lkIGx1dF9mcmVlKGx1dF90ICpsdXQpDQo+ICt7DQo+ICsJaWYgKGx1dC0+ ZGF0YSkgew0KPiArCQlmcmVlKGx1dC0+ZGF0YSk7DQo+ICsJCWx1dC0+ZGF0YSA9IE5VTEw7DQo+ ICsJfQ0KPiArDQo+ICsJbHV0LT5zaXplID0gMDsNCj4gK30NCj4gKw0KPiArLyogRmlsbHMgYSBG QiB3aXRoIHRoZSBzb2xpZCBjb2xvciBnaXZlbi4gKi8NCj4gK3N0YXRpYyB2b2lkIGRyYXdfY29s b3IoaWd0X2ZiX3QgKmZiLCBkb3VibGUgciwgZG91YmxlIGcsIGRvdWJsZSBiKQ0KPiArew0KPiAr CWNhaXJvX3QgKmNyID0gaWd0X2dldF9jYWlyb19jdHgoZmItPmZkLCBmYik7DQo+ICsNCj4gKwlj YWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7DQo+ICsJaWd0X3Bh aW50X2NvbG9yKGNyLCAwLCAwLCBmYi0+d2lkdGgsIGZiLT5oZWlnaHQsIHIsIGcsIGIpOw0KPiAr CWlndF9wdXRfY2Fpcm9fY3R4KGZiLT5mZCwgZmIsIGNyKTsNCj4gK30NCj4gKw0KPiArLyogR2Vu ZXJhdGVzIHRoZSBnYW1tYSB0ZXN0IHBhdHRlcm4uICovDQo+ICtzdGF0aWMgdm9pZCBkcmF3X2dh bW1hX3Rlc3QoaWd0X2ZiX3QgKmZiKQ0KPiArew0KPiArCWNhaXJvX3QgKmNyID0gaWd0X2dldF9j YWlyb19jdHgoZmItPmZkLCBmYik7DQo+ICsJaW50IGdoID0gZmItPmhlaWdodCAvIDQ7DQo+ICsN Cj4gKwlpZ3RfcGFpbnRfY29sb3JfZ3JhZGllbnQoY3IsIDAsIDAsIGZiLT53aWR0aCwgZ2gsIDEs IDEsIDEpOw0KPiArCWlndF9wYWludF9jb2xvcl9ncmFkaWVudChjciwgMCwgZ2gsIGZiLT53aWR0 aCwgZ2gsIDEsIDAsIDApOw0KPiArCWlndF9wYWludF9jb2xvcl9ncmFkaWVudChjciwgMCwgZ2gg KiAyLCBmYi0+d2lkdGgsIGdoLCAwLCAxLCAwKTsNCj4gKwlpZ3RfcGFpbnRfY29sb3JfZ3JhZGll bnQoY3IsIDAsIGdoICogMywgZmItPndpZHRoLCBnaCwgMCwgMCwgMSk7DQo+ICsNCj4gKwlpZ3Rf cHV0X2NhaXJvX2N0eChmYi0+ZmQsIGZiLCBjcik7DQo+ICt9DQo+ICsNCj4gKy8qIFNldHMgdGhl IGRlZ2FtbWEgTFVULiAqLw0KPiArc3RhdGljIHZvaWQgc2V0X2RlZ2FtbWFfbHV0KGRhdGFfdCAq ZGF0YSwgbHV0X3QgY29uc3QgKmx1dCkNCj4gK3sNCj4gKwlzaXplX3Qgc2l6ZSA9IGx1dCA/IHNp emVvZihsdXQtPmRhdGFbMF0pICogbHV0LT5zaXplIDogMDsNCj4gKwljb25zdCB2b2lkICpwdHIg PSBsdXQgPyBsdXQtPmRhdGEgOiBOVUxMOw0KPiArDQo+ICsJaWd0X3BpcGVfb2JqX3JlcGxhY2Vf cHJvcF9ibG9iKGRhdGEtPnBpcGUsIElHVF9DUlRDX0RFR0FNTUFfTFVULCBwdHIsDQo+ICsJCQkJ ICAgICAgIHNpemUpOw0KPiArfQ0KPiArDQo+ICsvKiBTZXRzIHRoZSByZWdhbW1hIExVVC4gKi8N Cj4gK3N0YXRpYyB2b2lkIHNldF9yZWdhbW1hX2x1dChkYXRhX3QgKmRhdGEsIGx1dF90IGNvbnN0 ICpsdXQpDQo+ICt7DQo+ICsJc2l6ZV90IHNpemUgPSBsdXQgPyBzaXplb2YobHV0LT5kYXRhWzBd KSAqIGx1dC0+c2l6ZSA6IDA7DQo+ICsJY29uc3Qgdm9pZCAqcHRyID0gbHV0ID8gbHV0LT5kYXRh IDogTlVMTDsNCj4gKw0KPiArCWlndF9waXBlX29ial9yZXBsYWNlX3Byb3BfYmxvYihkYXRhLT5w aXBlLCBJR1RfQ1JUQ19HQU1NQV9MVVQsIHB0ciwNCj4gKwkJCQkgICAgICAgc2l6ZSk7DQo+ICt9 DQo+ICsNCj4gKy8qIENvbW1vbiB0ZXN0IHNldHVwLiAqLw0KPiArc3RhdGljIHZvaWQgdGVzdF9p bml0KGRhdGFfdCAqZGF0YSkNCj4gK3sNCj4gKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRh dGEtPmRpc3BsYXk7DQo+ICsNCj4gKwkvKiBJdCBkb2Vzbid0IG1hdHRlciB3aGljaCBwaXBlIHdl IGNob29zZSBvbiBhbWRwZ3UuICovDQo+ICsJZGF0YS0+cGlwZV9pZCA9IFBJUEVfQTsNCj4gKwlk YXRhLT5waXBlID0gJmRhdGEtPmRpc3BsYXkucGlwZXNbZGF0YS0+cGlwZV9pZF07DQo+ICsNCj4g KwlpZ3RfZGlzcGxheV9yZXNldChkaXNwbGF5KTsNCj4gKw0KPiArCWRhdGEtPm91dHB1dCA9IGln dF9nZXRfc2luZ2xlX291dHB1dF9mb3JfcGlwZShkaXNwbGF5LCBkYXRhLT5waXBlX2lkKTsNCj4g KwlpZ3RfcmVxdWlyZShkYXRhLT5vdXRwdXQpOw0KPiArDQo+ICsJZGF0YS0+bW9kZSA9IGlndF9v dXRwdXRfZ2V0X21vZGUoZGF0YS0+b3V0cHV0KTsNCj4gKwlpZ3RfYXNzZXJ0KGRhdGEtPm1vZGUp Ow0KPiArDQo+ICsJZGF0YS0+cHJpbWFyeSA9DQo+ICsJCWlndF9waXBlX2dldF9wbGFuZV90eXBl KGRhdGEtPnBpcGUsIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOw0KPiArDQo+ICsJZGF0YS0+cGlw ZV9jcmMgPSBpZ3RfcGlwZV9jcmNfbmV3KGRhdGEtPmZkLCBkYXRhLT5waXBlX2lkLA0KPiArCQkJ CQkgIElOVEVMX1BJUEVfQ1JDX1NPVVJDRV9BVVRPKTsNCj4gKw0KPiArCWlndF9vdXRwdXRfc2V0 X3BpcGUoZGF0YS0+b3V0cHV0LCBkYXRhLT5waXBlX2lkKTsNCj4gKw0KPiArCWRhdGEtPmRlZ2Ft bWFfbHV0X3NpemUgPQ0KPiArCQlpZ3RfcGlwZV9vYmpfZ2V0X3Byb3AoZGF0YS0+cGlwZSwgSUdU X0NSVENfREVHQU1NQV9MVVRfU0laRSk7DQo+ICsJaWd0X2Fzc2VydF9sdCgwLCBkYXRhLT5kZWdh bW1hX2x1dF9zaXplKTsNCj4gKw0KPiArCWRhdGEtPnJlZ2FtbWFfbHV0X3NpemUgPQ0KPiArCQlp Z3RfcGlwZV9vYmpfZ2V0X3Byb3AoZGF0YS0+cGlwZSwgSUdUX0NSVENfR0FNTUFfTFVUX1NJWkUp Ow0KPiArCWlndF9hc3NlcnRfbHQoMCwgZGF0YS0+cmVnYW1tYV9sdXRfc2l6ZSk7DQo+ICsNCj4g KwlkYXRhLT53ID0gZGF0YS0+bW9kZS0+aGRpc3BsYXk7DQo+ICsJZGF0YS0+aCA9IGRhdGEtPm1v ZGUtPnZkaXNwbGF5Ow0KPiArfQ0KPiArDQo+ICsvKiBDb21tb24gdGVzdCBjbGVhbnVwLiAqLw0K PiArc3RhdGljIHZvaWQgdGVzdF9maW5pKGRhdGFfdCAqZGF0YSkNCj4gK3sNCj4gKwlpZ3RfcGlw ZV9jcmNfZnJlZShkYXRhLT5waXBlX2NyYyk7DQo+ICsJaWd0X2Rpc3BsYXlfcmVzZXQoJmRhdGEt PmRpc3BsYXkpOw0KPiArfQ0KPiArDQo+ICsvKg0KPiArICogT2xkZXIgdmVyc2lvbnMgb2YgYW1k Z3B1IHdvdWxkIHB1dCB0aGUgcGlwZSBpbnRvIGJ5cGFzcyBtb2RlIGZvciBkZWdhbW1hDQo+ICsg KiB3aGVuIHBhc3NlZCBhIGxpbmVhciBzUkdCIG1hdHJpeCBidXQgd291bGQgc3RpbGwgdXNlIGFu IHNSR0IgcmVnYW1tYQ0KPiArICogbWF0cml4IGlmIG5vdCBwYXNzZWQgYW55LiBUaGUgd2hvbGUg cGlwZSBzaG91bGQgYmUgaW4gbGluZWFyIGJ5cGFzcyBtb2RlDQo+ICsgKiB3aGVuIGFsbCB0aGUg bWF0cmljZXMgYXJlIE5VTEwgLSBDUkNzIGZvciBhIGxpbmVhciBkZWdhbW1hIG1hdHJpeCBhbmQN Cj4gKyAqIGEgTlVMTCBvbmUgc2hvdWxkIG1hdGNoLg0KPiArICovDQo+ICtzdGF0aWMgdm9pZCB0 ZXN0X2NydGNfbGluZWFyX2RlZ2FtbWEoZGF0YV90ICpkYXRhKQ0KPiArew0KPiArCWlndF9kaXNw bGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsNCj4gKwlpZ3RfY3JjX3QgcmVmX2NyYywg bmV3X2NyYzsNCj4gKwlpZ3RfZmJfdCBhZmI7DQo+ICsJbHV0X3QgbHV0X2xpbmVhcjsNCj4gKw0K PiArCXRlc3RfaW5pdChkYXRhKTsNCj4gKw0KPiArCWx1dF9pbml0KCZsdXRfbGluZWFyLCBkYXRh LT5kZWdhbW1hX2x1dF9zaXplKTsNCj4gKwlsdXRfZ2VuX2xpbmVhcigmbHV0X2xpbmVhciwgMHhm ZmZmKTsNCj4gKw0KPiArCWlndF9jcmVhdGVfZmIoZGF0YS0+ZmQsIGRhdGEtPncsIGRhdGEtPmgs IERSTV9GT1JNQVRfWFJHQjg4ODgsIDAsICZhZmIpOw0KPiArCWRyYXdfZ2FtbWFfdGVzdCgmYWZi KTsNCj4gKw0KPiArCS8qIERyYXcgdGhlIHJlZmVyZW5jZSBpbWFnZS4gKi8NCj4gKwlpZ3RfcGxh bmVfc2V0X2ZiKGRhdGEtPnByaW1hcnksICZhZmIpOw0KPiArCXNldF9yZWdhbW1hX2x1dChkYXRh LCBOVUxMKTsNCj4gKwlzZXRfZGVnYW1tYV9sdXQoZGF0YSwgTlVMTCk7DQo+ICsJaWd0X2Rpc3Bs YXlfY29tbWl0X2F0b21pYyhkaXNwbGF5LCBEUk1fTU9ERV9BVE9NSUNfQUxMT1dfTU9ERVNFVCwg TlVMTCk7DQo+ICsNCj4gKwlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMs ICZyZWZfY3JjKTsNCj4gKw0KPiArCS8qIEFwcGx5IGEgbGluZWFyIGRlZ2FtbWEuIFRoZSByZXN1 bHQgc2hvdWxkIHJlbWFpbiB0aGUgc2FtZS4gKi8NCj4gKwlzZXRfZGVnYW1tYV9sdXQoZGF0YSwg Jmx1dF9saW5lYXIpOw0KPiArCWlndF9kaXNwbGF5X2NvbW1pdF9hdG9taWMoZGlzcGxheSwgMCwg TlVMTCk7DQo+ICsNCj4gKwlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMs ICZuZXdfY3JjKTsNCj4gKwlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmcmVmX2NyYywgJm5ld19jcmMp Ow0KPiArDQo+ICsJdGVzdF9maW5pKGRhdGEpOw0KPiArCWlndF9yZW1vdmVfZmIoZGF0YS0+ZmQs ICZhZmIpOw0KPiArCWx1dF9mcmVlKCZsdXRfbGluZWFyKTsNCj4gK30NCj4gKw0KPiArLyoNCj4g KyAqIE9sZGVyIHZlcnNpb25zIG9mIGFtZGdwdSB3b3VsZCBhcHBseSB0aGUgQ1JUQyByZWdhbW1h IG9uIHRvcCBvZiBhIGN1c3RvbQ0KPiArICogc1JHQiByZWdhbW1hIG1hdHJpeCB3aXRoIGluY29y cmVjdCBjYWxjdWxhdGlvbnMgb3Igcm91bmRpbmcgZXJyb3JzLg0KPiArICogSWYgd2UgcHV0IHRo ZSBwaXBlIGludG8gYnlwYXNzIG9yIHVzZSB0aGUgaGFyZHdhcmUgZGVmaW5lZCBzUkdCIHJlZ2Ft bWENCj4gKyAqIG9uIHRoZSBwbGFuZSB0aGVuIHdlIGNhbiBhbmQgc2hvdWxkIGdldCB0aGUgY29y cmVjdCBDUlRDIHdoZW4gcGFzc2luZyBhDQo+ICsgKiBsaW5lciByZWdhbW1hIG1hdHJpeCB0byBE Uk0uDQo+ICsgKi8NCj4gK3N0YXRpYyB2b2lkIHRlc3RfY3J0Y19saW5lYXJfcmVnYW1tYShkYXRh X3QgKmRhdGEpDQo+ICt7DQo+ICsJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNw bGF5Ow0KPiArCWlndF9jcmNfdCByZWZfY3JjLCBuZXdfY3JjOw0KPiArCWlndF9mYl90IGFmYjsN Cj4gKwlsdXRfdCBsdXRfbGluZWFyOw0KPiArDQo+ICsJdGVzdF9pbml0KGRhdGEpOw0KPiArDQo+ ICsJbHV0X2luaXQoJmx1dF9saW5lYXIsIGRhdGEtPnJlZ2FtbWFfbHV0X3NpemUpOw0KPiArCWx1 dF9nZW5fbGluZWFyKCZsdXRfbGluZWFyLCAweGZmZmYpOw0KPiArDQo+ICsJaWd0X2NyZWF0ZV9m YihkYXRhLT5mZCwgZGF0YS0+dywgZGF0YS0+aCwgRFJNX0ZPUk1BVF9YUkdCODg4OCwgMCwgJmFm Yik7DQo+ICsJZHJhd19nYW1tYV90ZXN0KCZhZmIpOw0KPiArDQo+ICsJLyogRHJhdyB0aGUgcmVm ZXJlbmNlIGltYWdlLiAqLw0KPiArCWlndF9wbGFuZV9zZXRfZmIoZGF0YS0+cHJpbWFyeSwgJmFm Yik7DQo+ICsJc2V0X3JlZ2FtbWFfbHV0KGRhdGEsIE5VTEwpOw0KPiArCXNldF9kZWdhbW1hX2x1 dChkYXRhLCBOVUxMKTsNCj4gKwlpZ3RfZGlzcGxheV9jb21taXRfYXRvbWljKGRpc3BsYXksIERS TV9NT0RFX0FUT01JQ19BTExPV19NT0RFU0VULCBOVUxMKTsNCj4gKw0KPiArCWlndF9waXBlX2Ny Y19jb2xsZWN0X2NyYyhkYXRhLT5waXBlX2NyYywgJnJlZl9jcmMpOw0KPiArDQo+ICsJLyogQXBw bHkgYSBsaW5lYXIgZGVnYW1tYS4gVGhlIHJlc3VsdCBzaG91bGQgcmVtYWluIHRoZSBzYW1lLiAq Lw0KPiArCXNldF9yZWdhbW1hX2x1dChkYXRhLCAmbHV0X2xpbmVhcik7DQo+ICsJaWd0X2Rpc3Bs YXlfY29tbWl0X2F0b21pYyhkaXNwbGF5LCAwLCBOVUxMKTsNCj4gKw0KPiArCWlndF9waXBlX2Ny Y19jb2xsZWN0X2NyYyhkYXRhLT5waXBlX2NyYywgJm5ld19jcmMpOw0KPiArCWlndF9hc3NlcnRf Y3JjX2VxdWFsKCZyZWZfY3JjLCAmbmV3X2NyYyk7DQo+ICsNCj4gKwl0ZXN0X2ZpbmkoZGF0YSk7 DQo+ICsJaWd0X3JlbW92ZV9mYihkYXRhLT5mZCwgJmFmYik7DQo+ICsJbHV0X2ZyZWUoJmx1dF9s aW5lYXIpOw0KPiArfQ0KPiArDQo+ICsvKg0KPiArICogVGVzdHMgTFVUIGFjY3VyYWN5LiBDUlRD IHJlZ2FtbWEgYW5kIENSVEMgZGVnYW1tYSBzaG91bGQgcHJvZHVjZSBhIHZpc3VhbGx5DQo+ICsg KiBjb3JyZWN0IGltYWdlIHdoZW4gdXNlZC4gSGFyZHdhcmUgbGltaXRhdGlvbnMgb24gZGVnYW1t YSBwcmV2ZW50IHRoaXMgZnJvbQ0KPiArICogYmVpbmcgQ1JDIGxldmVsIGFjY3VyYXRlIGFjcm9z cyBhIGZ1bGwgdGVzdCBncmFkaWVudCBidXQgbW9zdCB2YWx1ZXMgc2hvdWxkDQo+ICsgKiBzdGls bCBtYXRjaC4NCj4gKyAqDQo+ICsgKiBUaGlzIHRlc3QgY2FuJ3QgcGFzcyBvbiBEQ0UgYmVjYXVz ZSBpdCBkb2Vzbid0IHN1cHBvcnQgbm9uLWxpbmVhciBkZWdhbW1hLg0KPiArICovDQo+ICtzdGF0 aWMgdm9pZCB0ZXN0X2NydGNfbHV0X2FjY3VyYWN5KGRhdGFfdCAqZGF0YSkNCj4gK3sNCj4gKwkv Kg0KPiArCSAqIENoYW5uZWxzIGFyZSBpbmRlcGVuZGVudCwgc28gd2UgY2FuIHZlcmlmeSBtdWx0 aXBsZSBjb2xvcnMgYXQgdGhlDQo+ICsJICogc2FtZSB0aW1lIGZvciBpbXByb3ZlZCBwZXJmb3Jt YW5jZS4NCj4gKwkgKi8NCj4gKwlzdGF0aWMgY29uc3QgY29sb3JfdCBjb2xvcnNbXSA9IHsNCj4g KwkJeyAxLjAwLCAxLjAwLCAxLjAwIH0sDQo+ICsJCXsgMC45MCwgMC44NSwgMC43NSB9LCAvKiAw Ljk1IGZhaWxzICovDQo+ICsJCXsgMC43MCwgMC42NSwgMC42MCB9LA0KPiArCQl7IDAuNTUsIDAu NTAsIDAuNDUgfSwNCj4gKwkJeyAwLjQwLCAwLjM1LCAwLjMwIH0sDQo+ICsJCXsgMC4yNSwgMC4y MCwgMC4xNSB9LA0KPiArCQl7IDAuMTAsIDAuMDQsIDAuMDIgfSwgLyogMC4wNSBmYWlscyAqLw0K PiArCQl7IDAuMDAsIDAuMDAsIDAuMDAgfSwNCj4gKwl9Ow0KPiArCWlndF9kaXNwbGF5X3QgKmRp c3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsNCj4gKwlpZ3RfY3JjX3QgcmVmX2NyYywgbmV3X2NyYzsN Cj4gKwlpZ3RfZmJfdCBhZmI7DQo+ICsJbHV0X3QgbHV0X2RlZ2FtbWEsIGx1dF9yZWdhbW1hOw0K PiArCWludCBpLCB3LCBoOw0KPiArDQo+ICsJdGVzdF9pbml0KGRhdGEpOw0KPiArDQo+ICsJbHV0 X2luaXQoJmx1dF9kZWdhbW1hLCBkYXRhLT5kZWdhbW1hX2x1dF9zaXplKTsNCj4gKwlsdXRfZ2Vu X2RlZ2FtbWFfc3JnYigmbHV0X2RlZ2FtbWEsIDB4ZmZmZik7DQo+ICsNCj4gKwlsdXRfaW5pdCgm bHV0X3JlZ2FtbWEsIGRhdGEtPnJlZ2FtbWFfbHV0X3NpemUpOw0KPiArCWx1dF9nZW5fcmVnYW1t YV9zcmdiKCZsdXRfcmVnYW1tYSwgMHhmZmZmKTsNCj4gKw0KPiArCS8qIERvbid0IGRyYXcgYWNy b3NzIHRoZSB3aG9sZSBzY3JlZW4gdG8gaW1wcm92ZSBwZXJmLiAqLw0KPiArCXcgPSA2NDsNCj4g KwloID0gNjQ7DQo+ICsNCj4gKwlpZ3RfY3JlYXRlX2ZiKGRhdGEtPmZkLCB3LCBoLCBEUk1fRk9S TUFUX1hSR0I4ODg4LCAwLCAmYWZiKTsNCj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1h cnksICZhZmIpOw0KPiArCWlndF9kaXNwbGF5X2NvbW1pdF9hdG9taWMoZGlzcGxheSwgRFJNX01P REVfQVRPTUlDX0FMTE9XX01PREVTRVQsIE5VTEwpOw0KPiArDQo+ICsJLyogVGVzdCBjb2xvcnMu ICovDQo+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY29sb3JzKTsgKytpKSB7DQo+ICsJ CWNvbG9yX3QgY29sID0gY29sb3JzW2ldOw0KPiArDQo+ICsJCWlndF9pbmZvKCJUZXN0aW5nIGNv bG9yICglLjJmLCAlLjJmLCAlLjJmKSAuLi5cbiIsIGNvbC5yLCBjb2wuZywNCj4gKwkJCSBjb2wu Yik7DQo+ICsNCj4gKwkJZHJhd19jb2xvcigmYWZiLCBjb2wuciwgY29sLmcsIGNvbC5iKTsNCj4g Kw0KPiArCQlzZXRfcmVnYW1tYV9sdXQoZGF0YSwgTlVMTCk7DQo+ICsJCXNldF9kZWdhbW1hX2x1 dChkYXRhLCBOVUxMKTsNCj4gKwkJaWd0X2Rpc3BsYXlfY29tbWl0X2F0b21pYyhkaXNwbGF5LCAw LCBOVUxMKTsNCj4gKw0KPiArCQlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9j cmMsICZyZWZfY3JjKTsNCj4gKw0KPiArCQlzZXRfZGVnYW1tYV9sdXQoZGF0YSwgJmx1dF9kZWdh bW1hKTsNCj4gKwkJc2V0X3JlZ2FtbWFfbHV0KGRhdGEsICZsdXRfcmVnYW1tYSk7DQo+ICsJCWln dF9kaXNwbGF5X2NvbW1pdF9hdG9taWMoZGlzcGxheSwgMCwgTlVMTCk7DQo+ICsNCj4gKwkJaWd0 X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmbmV3X2NyYyk7DQo+ICsNCj4g KwkJaWd0X2Fzc2VydF9jcmNfZXF1YWwoJnJlZl9jcmMsICZuZXdfY3JjKTsNCj4gKwl9DQo+ICsN Cj4gKwl0ZXN0X2ZpbmkoZGF0YSk7DQo+ICsJaWd0X3JlbW92ZV9mYihkYXRhLT5mZCwgJmFmYik7 DQo+ICsJbHV0X2ZyZWUoJmx1dF9yZWdhbW1hKTsNCj4gKwlsdXRfZnJlZSgmbHV0X2RlZ2FtbWEp Ow0KPiArfQ0KPiArDQo+ICtpZ3RfbWFpbg0KPiArew0KPiArCWRhdGFfdCBkYXRhOw0KPiArDQo+ ICsJaWd0X3NraXBfb25fc2ltdWxhdGlvbigpOw0KPiArDQo+ICsJbWVtc2V0KCZkYXRhLCAwLCBz aXplb2YoZGF0YSkpOw0KPiArDQo+ICsJaWd0X2ZpeHR1cmUNCj4gKwl7DQo+ICsJCWRhdGEuZmQg PSBkcm1fb3Blbl9kcml2ZXJfbWFzdGVyKERSSVZFUl9BTURHUFUpOw0KPiArDQo+ICsJCWttc3Rl c3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUoKTsNCj4gKw0KPiArCQlpZ3RfZGlzcGxheV9yZXF1aXJl KCZkYXRhLmRpc3BsYXksIGRhdGEuZmQpOw0KPiArCQlpZ3RfcmVxdWlyZShkYXRhLmRpc3BsYXku aXNfYXRvbWljKTsNCj4gKwkJaWd0X2Rpc3BsYXlfcmVxdWlyZV9vdXRwdXQoJmRhdGEuZGlzcGxh eSk7DQo+ICsJfQ0KPiArDQo+ICsJaWd0X3N1YnRlc3QoImNydGMtbGluZWFyLWRlZ2FtbWEiKSB0 ZXN0X2NydGNfbGluZWFyX2RlZ2FtbWEoJmRhdGEpOw0KPiArCWlndF9zdWJ0ZXN0KCJjcnRjLWxp bmVhci1yZWdhbW1hIikgdGVzdF9jcnRjX2xpbmVhcl9yZWdhbW1hKCZkYXRhKTsNCj4gKwlpZ3Rf c3VidGVzdCgiY3J0Yy1sdXQtYWNjdXJhY3kiKSB0ZXN0X2NydGNfbHV0X2FjY3VyYWN5KCZkYXRh KTsNCj4gKw0KPiArCWlndF9maXh0dXJlDQo+ICsJew0KPiArCQlpZ3RfZGlzcGxheV9maW5pKCZk YXRhLmRpc3BsYXkpOw0KPiArCX0NCj4gK30NCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2FtZGdwdS9t ZXNvbi5idWlsZCBiL3Rlc3RzL2FtZGdwdS9tZXNvbi5idWlsZA0KPiBpbmRleCAxYWZlY2U4Ni4u NDIwODYzNzQgMTAwNjQ0DQo+IC0tLSBhL3Rlc3RzL2FtZGdwdS9tZXNvbi5idWlsZA0KPiArKysg Yi90ZXN0cy9hbWRncHUvbWVzb24uYnVpbGQNCj4gQEAgLTQsNiArNCw3IEBAIGFtZGdwdV9kZXBz ID0gdGVzdF9kZXBzDQo+ICAgaWYgbGliZHJtX2FtZGdwdS5mb3VuZCgpDQo+ICAgCWFtZGdwdV9w cm9ncyArPSBbICdhbWRfYWJtJywNCj4gICAJCQkgICdhbWRfYmFzaWMnLA0KPiArCQkJICAnYW1k X2NvbG9yJywNCj4gICAJCQkgICdhbWRfY3Nfbm9wJywNCj4gICAJCQkgICdhbWRfcHJpbWUnLA0K PiAgIAkJCV0NCj4gDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=