From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9E85F8933C for ; Mon, 8 Apr 2019 08:38:23 +0000 (UTC) From: "Lisovskiy, Stanislav" Date: Mon, 8 Apr 2019 08:38:19 +0000 Message-ID: <408a528b534a3017f0a2d32561cd7cea0bb50441.camel@intel.com> References: <20190405233118.23045-1-jose.souza@intel.com> In-Reply-To: <20190405233118.23045-1-jose.souza@intel.com> Content-Language: en-US Content-ID: <48D1C7E2CA8F0544B1980B28E400676C@intel.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t 1/2] HAX: tests/kms_atomic_transition: Don't test more planes than memory bandwidth can support 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" , "Souza, Jose" List-ID: T24gRnJpLCAyMDE5LTA0LTA1IGF0IDE2OjMxIC0wNzAwLCBKb3PDqSBSb2JlcnRvIGRlIFNvdXph IHdyb3RlOg0KPiBDYzogU3RhbmlzbGF2IExpc292c2tpeSA8c3RhbmlzbGF2Lmxpc292c2tpeUBp bnRlbC5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IEpvc8OpIFJvYmVydG8gZGUgU291emEgPGpvc2Uu c291emFAaW50ZWwuY29tPg0KPiAtLS0NCj4gIHRlc3RzL2ttc19hdG9taWNfdHJhbnNpdGlvbi5j IHwgMjE3ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQ0KPiAtLS0tDQo+ICAxIGZpbGUg Y2hhbmdlZCwgMTMwIGluc2VydGlvbnMoKyksIDg3IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAt LWdpdCBhL3Rlc3RzL2ttc19hdG9taWNfdHJhbnNpdGlvbi5jDQo+IGIvdGVzdHMva21zX2F0b21p Y190cmFuc2l0aW9uLmMNCj4gaW5kZXggMThmNzMzMTcuLjk5ODhmMzAzIDEwMDY0NA0KPiAtLS0g YS90ZXN0cy9rbXNfYXRvbWljX3RyYW5zaXRpb24uYw0KPiArKysgYi90ZXN0cy9rbXNfYXRvbWlj X3RyYW5zaXRpb24uYw0KPiBAQCAtNDAsOSArNDAsMTggQEANCj4gICNkZWZpbmUgRFJNX0NBUF9D VVJTT1JfSEVJR0hUIDB4OQ0KPiAgI2VuZGlmDQo+ICANCj4gK2VudW0gZ3JvdXBfdHlwZSB7DQo+ ICsJR1JPVVBfVFlQRV9OT05FID0gMCwNCj4gKwlHUk9VUF9UWVBFX1BSSU1BUlkgPSAxIDw8IDAs DQo+ICsJR1JPVVBfVFlQRV9DVVJTT1IgPSAxIDw8IDEsDQo+ICsJR1JPVVBfVFlQRV9PVkVSTEFZ ID0gMSA8PCAyLA0KPiArCUdST1VQX1RZUEVfT1ZFUkxBWTIgPSAxIDw8IDMNCj4gK307DQo+ICsN Cj4gIHN0cnVjdCBwbGFuZV9wYXJtcyB7DQo+ICAJc3RydWN0IGlndF9mYiAqZmI7DQo+IC0JdWlu dDMyX3Qgd2lkdGgsIGhlaWdodCwgbWFzazsNCj4gKwl1aW50MzJfdCB3aWR0aCwgaGVpZ2h0Ow0K PiArCWVudW0gZ3JvdXBfdHlwZSBtYXNrOw0KPiAgfTsNCj4gIA0KPiAgLyogZ2xvYmFscyBmb3Ig ZmVuY2Ugc3VwcG9ydCAqLw0KPiBAQCAtMjAzLDEyICsyMTIsMTEgQEAgc3RhdGljIHZvaWQgc2V0 dXBfcGFybXMoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwNCj4gZW51bSBwaXBlIHBpcGUsDQo+ICAJ CQl1bnNpZ25lZCAqaXRlcl9tYXgpDQo+ICB7DQo+ICAJdWludDY0X3QgY3Vyc29yX3dpZHRoLCBj dXJzb3JfaGVpZ2h0Ow0KPiAtCXVuc2lnbmVkIHNwcml0ZV93aWR0aCwgc3ByaXRlX2hlaWdodCwg cHJldl93LCBwcmV2X2g7DQo+IC0JYm9vbCBtYXhfc3ByaXRlX3dpZHRoLCBtYXhfc3ByaXRlX2hl aWdodCwgYWxwaGEgPSB0cnVlOw0KPiAtCXVpbnQzMl90IG5fcGxhbmVzID0gZGlzcGxheS0+cGlw ZXNbcGlwZV0ubl9wbGFuZXM7DQo+IC0JdWludDMyX3Qgbl9vdmVybGF5cyA9IDAsIG92ZXJsYXlz W25fcGxhbmVzXTsNCj4gKwl1aW50MzJfdCBzcHJpdGVfd2lkdGgsIHNwcml0ZV9oZWlnaHQsIHBy ZXZfdywgcHJldl9oOw0KPiAgCWlndF9wbGFuZV90ICpwbGFuZTsNCj4gLQl1aW50MzJfdCBpdGVy X21hc2sgPSAzOw0KPiArCXVpbnQzMl90IGl0ZXJfbWFzayA9IDAsIG1heF9vdmVybGF5cywgbl9v dmVybGF5cyA9IDA7DQo+ICsJYm9vbCBhbHBoYSA9IHRydWU7DQo+ICsJaW50IHJldDsNCj4gIA0K PiAgCWRvX29yX2RpZShkcm1HZXRDYXAoZGlzcGxheS0+ZHJtX2ZkLCBEUk1fQ0FQX0NVUlNPUl9X SURUSCwNCj4gJmN1cnNvcl93aWR0aCkpOw0KPiAgCWlmIChjdXJzb3Jfd2lkdGggPj0gbW9kZS0+ aGRpc3BsYXkpDQo+IEBAIC0yMjUsMTIzICsyMzMsMTU2IEBAIHN0YXRpYyB2b2lkIHNldHVwX3Bh cm1zKGlndF9kaXNwbGF5X3QNCj4gKmRpc3BsYXksIGVudW0gcGlwZSBwaXBlLA0KPiAgCQkJcGFy bXNbaV0uZmIgPSBwcmltYXJ5X2ZiOw0KPiAgCQkJcGFybXNbaV0ud2lkdGggPSBtb2RlLT5oZGlz cGxheTsNCj4gIAkJCXBhcm1zW2ldLmhlaWdodCA9IG1vZGUtPnZkaXNwbGF5Ow0KPiAtCQkJcGFy bXNbaV0ubWFzayA9IDEgPDwgMDsNCj4gKwkJCXBhcm1zW2ldLm1hc2sgPSBHUk9VUF9UWVBFX1BS SU1BUlk7DQo+ICsJCQlpdGVyX21hc2sgfD0gR1JPVVBfVFlQRV9QUklNQVJZOw0KPiAgCQl9IGVs c2UgaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUikgew0KPiAgCQkJcGFy bXNbaV0uZmIgPSBhcmdiX2ZiOw0KPiAgCQkJcGFybXNbaV0ud2lkdGggPSBjdXJzb3Jfd2lkdGg7 DQo+ICAJCQlwYXJtc1tpXS5oZWlnaHQgPSBjdXJzb3JfaGVpZ2h0Ow0KPiAtCQkJcGFybXNbaV0u bWFzayA9IDEgPDwgMTsNCj4gKwkJCXBhcm1zW2ldLm1hc2sgPSBHUk9VUF9UWVBFX0NVUlNPUjsN Cj4gKwkJCWl0ZXJfbWFzayB8PSBHUk9VUF9UWVBFX0NVUlNPUjsNCj4gIAkJfSBlbHNlIHsNCj4g IAkJCXBhcm1zW2ldLmZiID0gc3ByaXRlX2ZiOw0KPiAtCQkJcGFybXNbaV0ubWFzayA9IDEgPDwg MjsNCj4gLQ0KPiAtCQkJaXRlcl9tYXNrIHw9IDEgPDwgMjsNCj4gLQ0KPiAtCQkJb3ZlcmxheXNb bl9vdmVybGF5cysrXSA9IGk7DQo+ICsJCQlwYXJtc1tpXS5tYXNrID0gR1JPVVBfVFlQRV9PVkVS TEFZOw0KPiArCQkJaXRlcl9tYXNrIHw9IEdST1VQX1RZUEVfT1ZFUkxBWTsNCj4gKwkJCW5fb3Zl cmxheXMrKzsNCj4gKwkJCWlmIChhbHBoYSkNCj4gKwkJCQlhbHBoYSA9IGlndF9wbGFuZV9oYXNf Zm9ybWF0X21vZChwbGFuZSwNCj4gKwkJCQkJCQkJIERSTV9GTw0KPiBSTUFUX0FSR0I4ODg4LA0K PiArCQkJCQkJCQkgTE9DQUxfDQo+IERSTV9GT1JNQVRfTU9EX05PTkUpOw0KPiAgCQl9DQo+ICAJ fQ0KPiAgDQo+IC0JaWYgKG5fb3ZlcmxheXMgPj0gMikgew0KPiAtCQl1aW50MzJfdCBpOw0KPiAr CXByZXZfdyA9IHNwcml0ZV93aWR0aCA9IGN1cnNvcl93aWR0aDsNCj4gKwlwcmV2X2ggPSBzcHJp dGVfaGVpZ2h0ID0gY3Vyc29yX2hlaWdodDsNCj4gKw0KPiArCWlndF9jcmVhdGVfZmIoZGlzcGxh eS0+ZHJtX2ZkLCBjdXJzb3Jfd2lkdGgsIGN1cnNvcl9oZWlnaHQsDQo+ICsJCSAgICAgIERSTV9G T1JNQVRfQVJHQjg4ODgsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsDQo+IGFyZ2JfZmIpOw0K PiArDQo+ICsJaWd0X2NyZWF0ZV9mYihkaXNwbGF5LT5kcm1fZmQsIHNwcml0ZV93aWR0aCwgc3By aXRlX2hlaWdodCwNCj4gKwkJICAgICAgYWxwaGEgPyBEUk1fRk9STUFUX0FSR0I4ODg4IDoNCj4g RFJNX0ZPUk1BVF9YUkdCODg4OCwNCj4gKwkJICAgICAgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9O RSwgc3ByaXRlX2ZiKTsNCj4gKw0KPiArCW1heF9vdmVybGF5cyA9IG5fb3ZlcmxheXM7DQo+ICty ZXRyeV9idzoNCj4gKwkvKiBMaW1pdCB0aGUgbnVtYmVyIG9mIHBsYW5lcyAqLw0KPiArCXdoaWxl IChtYXhfb3ZlcmxheXMgPCBuX292ZXJsYXlzKSB7DQo+ICsJCWludCBpID0gaGFyc19wZXRydXNr YV9mNTRfMV9yYW5kb21fdW5zYWZlX21heChkaXNwbGF5LQ0KPiA+cGlwZXNbcGlwZV0ubl9wbGFu ZXMpOw0KPiAgDQo+ICAJCS8qDQo+IC0JCSAqIENyZWF0ZSAyIGdyb3VwcyBmb3Igb3ZlcmxheXMs IG1ha2Ugc3VyZSAxIHBsYW5lIGlzDQo+IHB1dA0KPiAtCQkgKiBpbiBlYWNoIHRoZW4gc3ByZWFk IHRoZSByZXN0IG91dC4NCj4gKwkJICogQWx3YXlzIGtlZXAgcHJpbWFyeSBhbmQgY3Vyc29yIGFu ZCBkaXNjYXJkIGFscmVhZHkNCj4gKwkJICogcmVtb3ZlZCBwbGFuZXMNCj4gIAkJICovDQo+IC0J CWl0ZXJfbWFzayB8PSAxIDw8IDM7DQo+IC0JCXBhcm1zW292ZXJsYXlzW25fb3ZlcmxheXMgLSAx XV0ubWFzayA9IDEgPDwgMzsNCj4gKwkJaWYgKHBhcm1zW2ldLm1hc2sgIT0gR1JPVVBfVFlQRV9P VkVSTEFZKQ0KPiArCQkJY29udGludWU7DQo+ICANCj4gLQkJZm9yIChpID0gMTsgaSA8IG5fb3Zl cmxheXMgLSAxOyBpKyspIHsNCj4gLQkJCWludCB2YWwgPQ0KPiBoYXJzX3BldHJ1c2thX2Y1NF8x X3JhbmRvbV91bnNhZmVfbWF4KDIpOw0KPiArCQlwYXJtc1tpXS5tYXNrID0gR1JPVVBfVFlQRV9O T05FOw0KDQpZb3Ugd2VyZSBhcmd1aW5nIHRoYXQgcGFybXNbaV0ubWFzayBjYW4ndCBiZSAwLiBO b3cgd2hhdCBpZiB5b3UgY2FsbA0Kbm93IHdtX3NldHVwX3BsYW5lIHdpdGggaXQgYXMgYSBwYXJh bWV0ZXI/IDopDQoNCj4gKwkJbl9vdmVybGF5cy0tOw0KPiArCX0NCj4gIA0KPiAtCQkJcGFybXNb b3ZlcmxheXNbaV1dLm1hc2sgPSAxIDw8ICgyICsgdmFsKTsNCj4gLQkJfQ0KDQo+ICsJLyoNCj4g KwkgKiBDaGVjayBpZiB0aGVyZSBpcyBlbm91Z2ggYmFuZHdpZHRoIGZvciB0aGUgY3VycmVudCBu dW1iZXIgb2YNCj4gcGxhbmVzLg0KPiArCSAqIEFzIHRoZSBwbGFuZSBzaXplIGFuZCBwb3NpdGlv biBpcyBub3QgdGFrZW4gaW50byBhY2NvdW50IHdlDQo+IGNhbiBkbw0KPiArCSAqIHRoaXMgZWFy bGllci4NCj4gKwkgKi8NCj4gKwlzZXRfc3ByaXRlX3doKGRpc3BsYXksIHBpcGUsIHBhcm1zLCBz cHJpdGVfZmIsIGFscGhhLA0KPiBzcHJpdGVfd2lkdGgsDQo+ICsJCSAgICAgIHNwcml0ZV9oZWln aHQpOw0KPiArCXdtX3NldHVwX3BsYW5lKGRpc3BsYXksIHBpcGUsIGl0ZXJfbWFzaywgcGFybXMs IGZhbHNlKTsNCj4gKw0KPiArCS8qIEl0IHNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSBhdCBsZWFz dCBwcmltYXJ5IGFuZCBjdXJzb3IgKi8NCj4gKwlpZiAoIW1heF9vdmVybGF5cykgew0KPiArCQlp dGVyX21hc2sgJj0gfkdST1VQX1RZUEVfT1ZFUkxBWTsNCj4gKwkJKml0ZXJfbWF4ID0gaXRlcl9t YXNrICsgMTsNCj4gKwkJcmV0dXJuOw0KPiAgCX0NCg0KWW91IGNvdWxkIGp1c3QgdGFrZSBjYXJl IGFib3V0IHRoaXMgb3JnYW5pemluZyBjeWNsZSBhYm92ZSBwcm9wZXJseS4NCk1vcmVvdmVyIHlv dSBjb3VsZCBiYWlsIG91dCwgY2hlY2tpbmcgdGhhdCBtdWNoIGVhcmxpZXIsIHRodXMgcmVkdWNp bmcNCnRoZSBhbW91bnQgb2YgY29kZSBleGVjdXRlZC4NCg0KPiAgDQo+IC0JaWd0X2NyZWF0ZV9m YihkaXNwbGF5LT5kcm1fZmQsIGN1cnNvcl93aWR0aCwgY3Vyc29yX2hlaWdodCwNCj4gLQkJICAg ICAgRFJNX0ZPUk1BVF9BUkdCODg4OCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwNCj4gYXJn Yl9mYik7DQo+ICsJcmV0ID0gaWd0X2Rpc3BsYXlfdHJ5X2NvbW1pdF9hdG9taWMoZGlzcGxheSwN Cj4gRFJNX01PREVfQVRPTUlDX1RFU1RfT05MWSB8DQo+ICsJCQkJCSAgICBEUk1fTU9ERV9BVE9N SUNfQUxMT1dfTU9ERVMNCj4gRVQsDQo+ICsJCQkJCSAgICBOVUxMKTsNCj4gKwkvKg0KPiArCSAq IENvdWxkIG1lYW4gb3RoZXIgZXJyb3JzIGJ1dCB0aGlzIGlzIGFsc28gdGhlIGVycm9yIHJldHVy bmVkDQo+IHdoZW4NCj4gKwkgKiB0aGVyZSBpcyBub3QgZW5vdWdoIGJhbmR3aWR0aCBmb3IgYWxs IHRoZSBwbGFuZXMNCj4gKwkgKi8NCj4gKwlpZiAocmV0ID09IC1FSU5WQUwpIHsNCj4gKwkJbWF4 X292ZXJsYXlzLS07DQo+ICsJCWdvdG8gcmV0cnlfYnc7DQo+ICsJfQ0KDQpUaGVyZSB3YXMgYSBt YWNybyBmb3IgdGhhdCwgaW4gZmFjdCBJIGhhdmUgYWdyZWVkIHdpdGggRGFuaWVsLCBzbyANCnRo YXQgd2UnbGwgaGF2ZSBhIG1hY3JvIGhlcmUgdG8gc2VlIGlmIHRoZXJlIGlzIGEgImNvcnJlY3Qi IHJldHVybg0KdmFsdWUgb3IgaWYgd2UgbmVlZCB0byBmYWlsLiBXaGF0IGlmIHJldCBpcyBFTk9T UEFDRT8gT3Igc29tZXRoaW5nDQplbHNlPyBXZSBoYWQgYSBidWcgYWJvdXQgdGhpcy4gTm93IHlv dSBhcmUgZ29pbmcgdG8gbWFrZSBpdCBmYWlsDQpzb21ld2hlcmUgZWxzZSBhZ2Fpbi4NCg0KQWxz byANCg0KPiAgDQo+IC0JaWd0X2NyZWF0ZV9mYihkaXNwbGF5LT5kcm1fZmQsIGN1cnNvcl93aWR0 aCwgY3Vyc29yX2hlaWdodCwNCj4gLQkJICAgICAgRFJNX0ZPUk1BVF9BUkdCODg4OCwgTE9DQUxf RFJNX0ZPUk1BVF9NT0RfTk9ORSwNCj4gc3ByaXRlX2ZiKTsNCj4gKwlpZ3RfYXNzZXJ0X2YoIXJl dCwgIkVycm9yICVpIG5vdCBleHBlY3RlZCBieSB0cnlfY29tbWl0KClcbiIsDQo+IHJldCk7DQo+ ICANCj4gLQkqaXRlcl9tYXggPSBpdGVyX21hc2sgKyAxOw0KPiAtCWlmICghbl9vdmVybGF5cykN Cj4gLQkJcmV0dXJuOw0KPiArCS8qIFNvIGl0IGhhdmUgZW5vdWdoIGJhbmR3aWR0aCBmb3Igbl9v dmVybGF5cyBwbGFuZXMgKi8NCj4gIA0KPiAgCS8qDQo+IC0JICogUHJlIGdlbjkgbm90IGFsbCBz aXplcyBhcmUgc3VwcG9ydGVkLCBmaW5kIHRoZSBiaWdnZXN0DQo+IHBvc3NpYmxlDQo+IC0JICog c2l6ZSB0aGF0IGNhbiBiZSBlbmFibGVkIG9uIGFsbCBzcHJpdGUgcGxhbmVzLg0KPiArCSAqIENy ZWF0ZSAyIGdyb3VwcyBmb3Igb3ZlcmxheXMsIG1ha2Ugc3VyZSAxIHBsYW5lIGlzIHB1dCBpbg0K PiBlYWNoIHRoZW4NCj4gKwkgKiBzcHJlYWQgdGhlIHJlc3Qgb3V0Lg0KPiAgCSAqLw0KPiAtcmV0 cnk6DQo+IC0JcHJldl93ID0gc3ByaXRlX3dpZHRoID0gY3Vyc29yX3dpZHRoOw0KPiAtCXByZXZf aCA9IHNwcml0ZV9oZWlnaHQgPSBjdXJzb3JfaGVpZ2h0Ow0KPiArCWl0ZXJfbWFzayAmPSB+R1JP VVBfVFlQRV9PVkVSTEFZOw0KPiArCWZvcl9lYWNoX3BsYW5lX29uX3BpcGUoZGlzcGxheSwgcGlw ZSwgcGxhbmUpIHsNCj4gKwkJaW50IGkgPSBwbGFuZS0+aW5kZXg7DQo+ICANCj4gLQltYXhfc3By aXRlX3dpZHRoID0gKHNwcml0ZV93aWR0aCA9PSBtb2RlLT5oZGlzcGxheSk7DQo+IC0JbWF4X3Nw cml0ZV9oZWlnaHQgPSAoc3ByaXRlX2hlaWdodCA9PSBtb2RlLT52ZGlzcGxheSk7DQo+ICsJCWlm IChwYXJtc1tpXS5tYXNrICE9IEdST1VQX1RZUEVfT1ZFUkxBWSkNCj4gKwkJCWNvbnRpbnVlOw0K PiAgDQo+IC0Jd2hpbGUgKDEpIHsNCj4gLQkJaW50IHJldDsNCj4gKwkJLyogRmlyc3Qgb3Zlcmxh eSBwbGFuZSB3aWxsIGJlIG92ZXJsYXkgZ3JvdXAgMSAqLw0KPiArCQlpZiAoIShpdGVyX21hc2sg JiBHUk9VUF9UWVBFX09WRVJMQVkpKSB7DQo+ICsJCQlpdGVyX21hc2sgfD0gR1JPVVBfVFlQRV9P VkVSTEFZOw0KPiArCQkJY29udGludWU7DQo+ICsJCX0NCj4gIA0KPiAtCQlzZXRfc3ByaXRlX3do KGRpc3BsYXksIHBpcGUsIHBhcm1zLCBzcHJpdGVfZmIsDQo+IC0JCQkgICAgICBhbHBoYSwgc3By aXRlX3dpZHRoLCBzcHJpdGVfaGVpZ2h0KTsNCj4gKwkJLyogU2Vjb25kIG92ZXJsYXkgcGxhbmUg d2lsbCBiZSBvdmVybGF5IGdyb3VwIDEgKi8NCj4gKwkJaWYgKCEoaXRlcl9tYXNrICYgR1JPVVBf VFlQRV9PVkVSTEFZMikpIHsNCj4gKwkJCWl0ZXJfbWFzayB8PSBHUk9VUF9UWVBFX09WRVJMQVky Ow0KPiArCQkJcGFybXNbaV0ubWFzayA9IEdST1VQX1RZUEVfT1ZFUkxBWTI7DQo+ICsJCQljb250 aW51ZTsNCj4gKwkJfQ0KPiAgDQoNCldoeSBpdCBpcyBzbyBjb21wbGV4PyBQcmV2aW91c2x5IHdl IHdlcmUgc2V0dGluZyBpdCBvbmx5IG9uY2UuDQpOb3cgeW91IGhhdmUgdHdvIG1vcmUgY29uZGl0 aW9ucywgY2hlY2tpbmcgYW5kIHNldHRpbmcgaXQgc2Vjb25kIHRpbWUsDQppbnRyb2R1Y2luZyBt b3JlIGVudHJvcHkuDQoNCk1vcmVvdmVyIHRoaXMgaXMgdmVyeSB1bnJlYWRhYmxlIGFuZCBoYXJk IHRvIGNoZWNrIHdoaWNoIGVycm9ycw0KaXQgY2FuIGJyaW5nLiANCg0KPiAtCQl3bV9zZXR1cF9w bGFuZShkaXNwbGF5LCBwaXBlLCAoMSA8PCBuX3BsYW5lcykgLSAxLA0KPiBwYXJtcywgZmFsc2Up Ow0KPiAtCQlyZXQgPSBpZ3RfZGlzcGxheV90cnlfY29tbWl0X2F0b21pYyhkaXNwbGF5LA0KPiBE Uk1fTU9ERV9BVE9NSUNfVEVTVF9PTkxZIHwgRFJNX01PREVfQVRPTUlDX0FMTE9XX01PREVTRVQs IE5VTEwpOw0KPiAtCQlpZ3RfYXNzZXJ0KCFpc19hdG9taWNfY2hlY2tfZmFpbHVyZV9lcnJubyhy ZXQpKTsNCj4gKwkJLyogU29ydCB0aGUgZ3JvdXAgb2YgdGhlIHJlc3Qgb2Ygb3ZlcmxheSBwbGFu ZXMgKi8NCj4gKwkJaWYgKGhhcnNfcGV0cnVza2FfZjU0XzFfcmFuZG9tX3Vuc2FmZV9tYXgoMikp DQo+ICsJCQlwYXJtc1tpXS5tYXNrID0gR1JPVVBfVFlQRV9PVkVSTEFZMjsNCj4gKwl9DQo+ICAN Cj4gLQkJaWYgKGlzX2F0b21pY19jaGVja19wbGFuZV9zaXplX2Vycm5vKHJldCkpIHsNCj4gLQkJ CWlmIChjdXJzb3Jfd2lkdGggPT0gc3ByaXRlX3dpZHRoICYmDQo+IC0JCQkgICAgY3Vyc29yX2hl aWdodCA9PSBzcHJpdGVfaGVpZ2h0KSB7DQo+IC0JCQkJaWd0X2Fzc2VydF9mKGFscGhhLA0KPiAt CQkJCQkgICAgICAiQ2Fubm90IGNvbmZpZ3VyZSB0aGUNCj4gdGVzdCB3aXRoIGFsbCBzcHJpdGUg cGxhbmVzIGVuYWJsZWRcbiIpOw0KPiAtDQo+IC0JCQkJLyogcmV0cnkgb25jZSB3aXRoIFhSR0Ig Zm9ybWF0LiAqLw0KPiAtCQkJCWFscGhhID0gZmFsc2U7DQo+IC0JCQkJZ290byByZXRyeTsNCj4g LQkJCX0NCj4gKwkqaXRlcl9tYXggPSBpdGVyX21hc2sgKyAxOw0KPiAgDQo+ICsJLyoNCj4gKwkg KiBQcmUgZ2VuOSBub3QgYWxsIHNpemVzIGFyZSBzdXBwb3J0ZWQsIGZpbmQgdGhlIGJpZ2dlc3QN Cj4gcG9zc2libGUNCj4gKwkgKiBzaXplIHRoYXQgY2FuIGJlIGVuYWJsZWQgb24gYWxsIHNwcml0 ZSBwbGFuZXMuDQo+ICsJICovDQo+ICsJd2hpbGUgKDEpIHsNCj4gKwkJLyogU2l6ZSBsaW1pdCBy ZWFjaGVkICovDQo+ICsJCWlmIChpc19hdG9taWNfY2hlY2tfcGxhbmVfc2l6ZV9lcnJubyhyZXQp KSB7DQo+ICAJCQlzcHJpdGVfd2lkdGggPSBwcmV2X3c7DQo+ICAJCQlzcHJpdGVfaGVpZ2h0ID0g cHJldl9oOw0KPiAtDQo+IC0JCQlpZiAobWF4X3Nwcml0ZV93aWR0aCAmJiBtYXhfc3ByaXRlX2hl aWdodCkgew0KPiAtCQkJCXNldF9zcHJpdGVfd2goZGlzcGxheSwgcGlwZSwgcGFybXMsDQo+IHNw cml0ZV9mYiwNCj4gLQkJCQkJICAgICAgYWxwaGEsIHNwcml0ZV93aWR0aCwNCj4gc3ByaXRlX2hl aWdodCk7DQo+IC0JCQkJYnJlYWs7DQo+IC0JCQl9DQo+IC0NCj4gLQkJCWlmICghbWF4X3Nwcml0 ZV93aWR0aCkNCj4gLQkJCQltYXhfc3ByaXRlX3dpZHRoID0gdHJ1ZTsNCj4gLQkJCWVsc2UNCj4g LQkJCQltYXhfc3ByaXRlX2hlaWdodCA9IHRydWU7DQo+IC0JCX0gZWxzZSB7DQo+IC0JCQlwcmV2 X3cgPSBzcHJpdGVfd2lkdGg7DQo+IC0JCQlwcmV2X2ggPSBzcHJpdGVfaGVpZ2h0Ow0KPiArCQkJ YnJlYWs7DQo+ICAJCX0NCj4gIA0KPiAtCQlpZiAoIW1heF9zcHJpdGVfd2lkdGgpIHsNCj4gLQkJ CXNwcml0ZV93aWR0aCAqPSAyOw0KPiArCQkvKiBDb21taXQgaXMgdmFsaWQgYW5kIGl0IHJlYWNo ZWQgbWF4IHNpemUsIHVzZSB0aGlzDQo+IHNpemUgKi8NCj4gKwkJaWYgKHNwcml0ZV93aWR0aCA9 PSBtb2RlLT5oZGlzcGxheSB8fA0KPiArCQkgICAgc3ByaXRlX2hlaWdodCA9PSBtb2RlLT52ZGlz cGxheSkNCj4gKwkJCWJyZWFrOw0KPiAgDQo+IC0JCQlpZiAoc3ByaXRlX3dpZHRoID49IG1vZGUt PmhkaXNwbGF5KSB7DQo+IC0JCQkJbWF4X3Nwcml0ZV93aWR0aCA9IHRydWU7DQo+ICsJCXByZXZf dyA9IHNwcml0ZV93aWR0aDsNCj4gKwkJcHJldl9oID0gc3ByaXRlX2hlaWdodDsNCj4gIA0KPiAt CQkJCXNwcml0ZV93aWR0aCA9IG1vZGUtPmhkaXNwbGF5Ow0KPiAtCQkJfQ0KPiAtCQl9IGVsc2Ug aWYgKCFtYXhfc3ByaXRlX2hlaWdodCkgew0KPiAtCQkJc3ByaXRlX2hlaWdodCAqPSAyOw0KPiAr CQlzcHJpdGVfd2lkdGggKj0gMjsNCj4gKwkJaWYgKHNwcml0ZV93aWR0aCA+PSBtb2RlLT5oZGlz cGxheSkNCj4gKwkJCXNwcml0ZV93aWR0aCA9IG1vZGUtPmhkaXNwbGF5Ow0KPiAgDQo+IC0JCQlp ZiAoc3ByaXRlX2hlaWdodCA+PSBtb2RlLT52ZGlzcGxheSkgew0KPiAtCQkJCW1heF9zcHJpdGVf aGVpZ2h0ID0gdHJ1ZTsNCj4gKwkJc3ByaXRlX2hlaWdodCAqPSAyOw0KPiArCQlpZiAoc3ByaXRl X2hlaWdodCA+PSBtb2RlLT52ZGlzcGxheSkNCj4gKwkJCXNwcml0ZV9oZWlnaHQgPSBtb2RlLT52 ZGlzcGxheTsNCj4gIA0KPiAtCQkJCXNwcml0ZV9oZWlnaHQgPSBtb2RlLT52ZGlzcGxheTsNCj4g LQkJCX0NCj4gLQkJfSBlbHNlDQo+IC0JCQkvKiBNYXggc2l6ZWQgc3ByaXRlcyBmb3IgYWxsISAq Lw0KPiAtCQkJYnJlYWs7DQo+ICsJCXNldF9zcHJpdGVfd2goZGlzcGxheSwgcGlwZSwgcGFybXMs IHNwcml0ZV9mYiwNCj4gc3ByaXRlX3dpZHRoLA0KPiArCQkJICAgICAgc3ByaXRlX2hlaWdodCwg YWxwaGEpOw0KPiArCQl3bV9zZXR1cF9wbGFuZShkaXNwbGF5LCBwaXBlLCBpdGVyX21hc2ssIHBh cm1zLCBmYWxzZSk7DQo+ICsJCXJldCA9IGlndF9kaXNwbGF5X3RyeV9jb21taXRfYXRvbWljKGRp c3BsYXksDQo+ICsJCQkJCQkgICAgRFJNX01PREVfQVRPTUlDX1RFUw0KPiBUX09OTFkgfA0KPiAr CQkJCQkJICAgIERSTV9NT0RFX0FUT01JQ19BTEwNCj4gT1dfTU9ERVNFVCwNCj4gKwkJCQkJCSAg ICBOVUxMKTsNCj4gIAl9DQo+ICANCj4gLQlpZ3RfaW5mbygiUnVubmluZyB0ZXN0IG9uIHBpcGUg JXMgd2l0aCByZXNvbHV0aW9uICVkeCVkIGFuZA0KPiBzcHJpdGUgc2l6ZSAlZHglZCBhbHBoYSAl aVxuIiwNCj4gKwlpZ3RfaW5mbygiUnVubmluZyB0ZXN0IG9uIHBpcGUgJXMgd2l0aCByZXNvbHV0 aW9uICVkeCVkLCBzcHJpdGUNCj4gc2l6ZSAlZHglZCwgYWxwaGEgJWkgYW5kICVpIG92ZXJsYXkg cGxhbmVzXG4iLA0KPiAgCQkga21zdGVzdF9waXBlX25hbWUocGlwZSksIG1vZGUtPmhkaXNwbGF5 LCBtb2RlLQ0KPiA+dmRpc3BsYXksDQo+IC0JCSBzcHJpdGVfd2lkdGgsIHNwcml0ZV9oZWlnaHQs IGFscGhhKTsNCj4gKwkJIHNwcml0ZV93aWR0aCwgc3ByaXRlX2hlaWdodCwgYWxwaGEsIG5fb3Zl cmxheXMpOw0KPiAgfQ0KPiAgDQo+ICBzdGF0aWMgdm9pZCBwcmVwYXJlX2ZlbmNpbmcoaWd0X2Rp c3BsYXlfdCAqZGlzcGxheSwgZW51bSBwaXBlIHBpcGUpDQo+IEBAIC01MTksOCArNTYwLDEwIEBA IHJ1bl90cmFuc2l0aW9uX3Rlc3QoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgZW51bQ0KPiBwaXBl IHBpcGUsIGlndF9vdXRwdXRfdCAqb3V0cHV0DQo+ICAJCX0NCj4gIA0KPiAgCQkvKiBmb3JjZSBw bGFuZXMgdG8gYmUgcGFydCBvZiBjb21taXQgKi8NCj4gLQkJZm9yX2VhY2hfcGxhbmVfb25fcGlw ZShkaXNwbGF5LCBwaXBlLCBwbGFuZSkNCj4gLQkJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24ocGxh bmUsIDAsIDApOw0KPiArCQlmb3JfZWFjaF9wbGFuZV9vbl9waXBlKGRpc3BsYXksIHBpcGUsIHBs YW5lKSB7DQo+ICsJCQlpZiAocGFybXNbcGxhbmUtPmluZGV4XS5tYXNrICE9DQo+IEdST1VQX1RZ UEVfTk9ORSkNCj4gKwkJCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKHBsYW5lLCAwLCAwKTsNCj4g KwkJfQ0KPiAgDQo+ICAJCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01J Qyk7DQo+ICANCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==