From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5A531892BD for ; Mon, 8 Apr 2019 09:47:39 +0000 (UTC) From: "Lisovskiy, Stanislav" Date: Mon, 8 Apr 2019 09:47:36 +0000 Message-ID: <3e9a1daf60c3db34d9b6f02e6c884491a8646de6.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: 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+ICANCg0KQWxzbyB0YWtlIGEgbG9vayBoZXJl OiANCmh0dHBzOi8vaW50ZWwtZ2Z4LWNpLjAxLm9yZy90cmVlL2RybS10aXAvSUdUUFdfMjgwNy8N Cg0KVGhpcyBjb2RlIGhhcyBqdXN0IGJyb2tlbiBhbGwga21zX2F0b21pY190cmFuc2l0aW9uIHRl c3QNCmNhc2VzIGZvciBzb21lIHBsYXRmb3Jtcy4gDQpZb3UgdG9sZCB0aGF0IG15IHBhdGNoIGhh cyBmbGF3cywgZGlkbid0IGV4cGxhaW4gd2hpY2ggYW5kIHRoZW4NCnNlbnQgYSBwYXRjaCB3aGlj aCBoYXMgbW9yZSBjb2RlLCBjb25kaXRpb25zLCBjeWNsZXMgYW5kIGludHJvZHVjaW5nDQpwcm9i bGVtcy4uLiBTbyB3aHkgaXMgaXQgYmV0dGVyPw0KDQo+ICtlbnVtIGdyb3VwX3R5cGUgew0KPiAr CUdST1VQX1RZUEVfTk9ORSA9IDAsDQo+ICsJR1JPVVBfVFlQRV9QUklNQVJZID0gMSA8PCAwLA0K PiArCUdST1VQX1RZUEVfQ1VSU09SID0gMSA8PCAxLA0KPiArCUdST1VQX1RZUEVfT1ZFUkxBWSA9 IDEgPDwgMiwNCj4gKwlHUk9VUF9UWVBFX09WRVJMQVkyID0gMSA8PCAzDQo+ICt9Ow0KPiArDQo+ ICBzdHJ1Y3QgcGxhbmVfcGFybXMgew0KPiAgCXN0cnVjdCBpZ3RfZmIgKmZiOw0KPiAtCXVpbnQz Ml90IHdpZHRoLCBoZWlnaHQsIG1hc2s7DQo+ICsJdWludDMyX3Qgd2lkdGgsIGhlaWdodDsNCj4g KwllbnVtIGdyb3VwX3R5cGUgbWFzazsNCj4gIH07DQo+ICANCj4gIC8qIGdsb2JhbHMgZm9yIGZl bmNlIHN1cHBvcnQgKi8NCj4gQEAgLTIwMywxMiArMjEyLDExIEBAIHN0YXRpYyB2b2lkIHNldHVw X3Bhcm1zKGlndF9kaXNwbGF5X3QgKmRpc3BsYXksDQo+IGVudW0gcGlwZSBwaXBlLA0KPiAgCQkJ dW5zaWduZWQgKml0ZXJfbWF4KQ0KPiAgew0KPiAgCXVpbnQ2NF90IGN1cnNvcl93aWR0aCwgY3Vy c29yX2hlaWdodDsNCj4gLQl1bnNpZ25lZCBzcHJpdGVfd2lkdGgsIHNwcml0ZV9oZWlnaHQsIHBy ZXZfdywgcHJldl9oOw0KPiAtCWJvb2wgbWF4X3Nwcml0ZV93aWR0aCwgbWF4X3Nwcml0ZV9oZWln aHQsIGFscGhhID0gdHJ1ZTsNCj4gLQl1aW50MzJfdCBuX3BsYW5lcyA9IGRpc3BsYXktPnBpcGVz W3BpcGVdLm5fcGxhbmVzOw0KPiAtCXVpbnQzMl90IG5fb3ZlcmxheXMgPSAwLCBvdmVybGF5c1tu X3BsYW5lc107DQo+ICsJdWludDMyX3Qgc3ByaXRlX3dpZHRoLCBzcHJpdGVfaGVpZ2h0LCBwcmV2 X3csIHByZXZfaDsNCj4gIAlpZ3RfcGxhbmVfdCAqcGxhbmU7DQo+IC0JdWludDMyX3QgaXRlcl9t YXNrID0gMzsNCj4gKwl1aW50MzJfdCBpdGVyX21hc2sgPSAwLCBtYXhfb3ZlcmxheXMsIG5fb3Zl cmxheXMgPSAwOw0KPiArCWJvb2wgYWxwaGEgPSB0cnVlOw0KPiArCWludCByZXQ7DQo+ICANCj4g IAlkb19vcl9kaWUoZHJtR2V0Q2FwKGRpc3BsYXktPmRybV9mZCwgRFJNX0NBUF9DVVJTT1JfV0lE VEgsDQo+ICZjdXJzb3Jfd2lkdGgpKTsNCj4gIAlpZiAoY3Vyc29yX3dpZHRoID49IG1vZGUtPmhk aXNwbGF5KQ0KPiBAQCAtMjI1LDEyMyArMjMzLDE1NiBAQCBzdGF0aWMgdm9pZCBzZXR1cF9wYXJt cyhpZ3RfZGlzcGxheV90DQo+ICpkaXNwbGF5LCBlbnVtIHBpcGUgcGlwZSwNCj4gIAkJCXBhcm1z W2ldLmZiID0gcHJpbWFyeV9mYjsNCj4gIAkJCXBhcm1zW2ldLndpZHRoID0gbW9kZS0+aGRpc3Bs YXk7DQo+ICAJCQlwYXJtc1tpXS5oZWlnaHQgPSBtb2RlLT52ZGlzcGxheTsNCj4gLQkJCXBhcm1z W2ldLm1hc2sgPSAxIDw8IDA7DQo+ICsJCQlwYXJtc1tpXS5tYXNrID0gR1JPVVBfVFlQRV9QUklN QVJZOw0KPiArCQkJaXRlcl9tYXNrIHw9IEdST1VQX1RZUEVfUFJJTUFSWTsNCj4gIAkJfSBlbHNl IGlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpIHsNCj4gIAkJCXBhcm1z W2ldLmZiID0gYXJnYl9mYjsNCj4gIAkJCXBhcm1zW2ldLndpZHRoID0gY3Vyc29yX3dpZHRoOw0K PiAgCQkJcGFybXNbaV0uaGVpZ2h0ID0gY3Vyc29yX2hlaWdodDsNCj4gLQkJCXBhcm1zW2ldLm1h c2sgPSAxIDw8IDE7DQo+ICsJCQlwYXJtc1tpXS5tYXNrID0gR1JPVVBfVFlQRV9DVVJTT1I7DQo+ ICsJCQlpdGVyX21hc2sgfD0gR1JPVVBfVFlQRV9DVVJTT1I7DQo+ICAJCX0gZWxzZSB7DQo+ICAJ CQlwYXJtc1tpXS5mYiA9IHNwcml0ZV9mYjsNCj4gLQkJCXBhcm1zW2ldLm1hc2sgPSAxIDw8IDI7 DQo+IC0NCj4gLQkJCWl0ZXJfbWFzayB8PSAxIDw8IDI7DQo+IC0NCj4gLQkJCW92ZXJsYXlzW25f b3ZlcmxheXMrK10gPSBpOw0KPiArCQkJcGFybXNbaV0ubWFzayA9IEdST1VQX1RZUEVfT1ZFUkxB WTsNCj4gKwkJCWl0ZXJfbWFzayB8PSBHUk9VUF9UWVBFX09WRVJMQVk7DQo+ICsJCQluX292ZXJs YXlzKys7DQo+ICsJCQlpZiAoYWxwaGEpDQo+ICsJCQkJYWxwaGEgPSBpZ3RfcGxhbmVfaGFzX2Zv cm1hdF9tb2QocGxhbmUsDQo+ICsJCQkJCQkJCSBEUk1fRk8NCj4gUk1BVF9BUkdCODg4OCwNCj4g KwkJCQkJCQkJIExPQ0FMXw0KPiBEUk1fRk9STUFUX01PRF9OT05FKTsNCj4gIAkJfQ0KPiAgCX0N Cj4gIA0KPiAtCWlmIChuX292ZXJsYXlzID49IDIpIHsNCj4gLQkJdWludDMyX3QgaTsNCj4gKwlw cmV2X3cgPSBzcHJpdGVfd2lkdGggPSBjdXJzb3Jfd2lkdGg7DQo+ICsJcHJldl9oID0gc3ByaXRl X2hlaWdodCA9IGN1cnNvcl9oZWlnaHQ7DQo+ICsNCj4gKwlpZ3RfY3JlYXRlX2ZiKGRpc3BsYXkt PmRybV9mZCwgY3Vyc29yX3dpZHRoLCBjdXJzb3JfaGVpZ2h0LA0KPiArCQkgICAgICBEUk1fRk9S TUFUX0FSR0I4ODg4LCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLA0KPiBhcmdiX2ZiKTsNCj4g Kw0KPiArCWlndF9jcmVhdGVfZmIoZGlzcGxheS0+ZHJtX2ZkLCBzcHJpdGVfd2lkdGgsIHNwcml0 ZV9oZWlnaHQsDQo+ICsJCSAgICAgIGFscGhhID8gRFJNX0ZPUk1BVF9BUkdCODg4OCA6DQo+IERS TV9GT1JNQVRfWFJHQjg4ODgsDQo+ICsJCSAgICAgIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUs IHNwcml0ZV9mYik7DQo+ICsNCj4gKwltYXhfb3ZlcmxheXMgPSBuX292ZXJsYXlzOw0KPiArcmV0 cnlfYnc6DQo+ICsJLyogTGltaXQgdGhlIG51bWJlciBvZiBwbGFuZXMgKi8NCj4gKwl3aGlsZSAo bWF4X292ZXJsYXlzIDwgbl9vdmVybGF5cykgew0KPiArCQlpbnQgaSA9IGhhcnNfcGV0cnVza2Ff ZjU0XzFfcmFuZG9tX3Vuc2FmZV9tYXgoZGlzcGxheS0NCj4gPnBpcGVzW3BpcGVdLm5fcGxhbmVz KTsNCj4gIA0KPiAgCQkvKg0KPiAtCQkgKiBDcmVhdGUgMiBncm91cHMgZm9yIG92ZXJsYXlzLCBt YWtlIHN1cmUgMSBwbGFuZSBpcw0KPiBwdXQNCj4gLQkJICogaW4gZWFjaCB0aGVuIHNwcmVhZCB0 aGUgcmVzdCBvdXQuDQo+ICsJCSAqIEFsd2F5cyBrZWVwIHByaW1hcnkgYW5kIGN1cnNvciBhbmQg ZGlzY2FyZCBhbHJlYWR5DQo+ICsJCSAqIHJlbW92ZWQgcGxhbmVzDQo+ICAJCSAqLw0KPiAtCQlp dGVyX21hc2sgfD0gMSA8PCAzOw0KPiAtCQlwYXJtc1tvdmVybGF5c1tuX292ZXJsYXlzIC0gMV1d Lm1hc2sgPSAxIDw8IDM7DQo+ICsJCWlmIChwYXJtc1tpXS5tYXNrICE9IEdST1VQX1RZUEVfT1ZF UkxBWSkNCj4gKwkJCWNvbnRpbnVlOw0KPiAgDQo+IC0JCWZvciAoaSA9IDE7IGkgPCBuX292ZXJs YXlzIC0gMTsgaSsrKSB7DQo+IC0JCQlpbnQgdmFsID0NCj4gaGFyc19wZXRydXNrYV9mNTRfMV9y YW5kb21fdW5zYWZlX21heCgyKTsNCj4gKwkJcGFybXNbaV0ubWFzayA9IEdST1VQX1RZUEVfTk9O RTsNCj4gKwkJbl9vdmVybGF5cy0tOw0KPiArCX0NCj4gIA0KPiAtCQkJcGFybXNbb3ZlcmxheXNb aV1dLm1hc2sgPSAxIDw8ICgyICsgdmFsKTsNCj4gLQkJfQ0KPiArCS8qDQo+ICsJICogQ2hlY2sg aWYgdGhlcmUgaXMgZW5vdWdoIGJhbmR3aWR0aCBmb3IgdGhlIGN1cnJlbnQgbnVtYmVyIG9mDQo+ IHBsYW5lcy4NCj4gKwkgKiBBcyB0aGUgcGxhbmUgc2l6ZSBhbmQgcG9zaXRpb24gaXMgbm90IHRh a2VuIGludG8gYWNjb3VudCB3ZQ0KPiBjYW4gZG8NCj4gKwkgKiB0aGlzIGVhcmxpZXIuDQo+ICsJ ICovDQo+ICsJc2V0X3Nwcml0ZV93aChkaXNwbGF5LCBwaXBlLCBwYXJtcywgc3ByaXRlX2ZiLCBh bHBoYSwNCj4gc3ByaXRlX3dpZHRoLA0KPiArCQkgICAgICBzcHJpdGVfaGVpZ2h0KTsNCj4gKwl3 bV9zZXR1cF9wbGFuZShkaXNwbGF5LCBwaXBlLCBpdGVyX21hc2ssIHBhcm1zLCBmYWxzZSk7DQo+ ICsNCj4gKwkvKiBJdCBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgYXQgbGVhc3QgcHJpbWFyeSBh bmQgY3Vyc29yICovDQo+ICsJaWYgKCFtYXhfb3ZlcmxheXMpIHsNCj4gKwkJaXRlcl9tYXNrICY9 IH5HUk9VUF9UWVBFX09WRVJMQVk7DQo+ICsJCSppdGVyX21heCA9IGl0ZXJfbWFzayArIDE7DQo+ ICsJCXJldHVybjsNCj4gIAl9DQo+ICANCj4gLQlpZ3RfY3JlYXRlX2ZiKGRpc3BsYXktPmRybV9m ZCwgY3Vyc29yX3dpZHRoLCBjdXJzb3JfaGVpZ2h0LA0KPiAtCQkgICAgICBEUk1fRk9STUFUX0FS R0I4ODg4LCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLA0KPiBhcmdiX2ZiKTsNCj4gKwlyZXQg PSBpZ3RfZGlzcGxheV90cnlfY29tbWl0X2F0b21pYyhkaXNwbGF5LA0KPiBEUk1fTU9ERV9BVE9N SUNfVEVTVF9PTkxZIHwNCj4gKwkJCQkJICAgIERSTV9NT0RFX0FUT01JQ19BTExPV19NT0RFUw0K PiBFVCwNCj4gKwkJCQkJICAgIE5VTEwpOw0KPiArCS8qDQo+ICsJICogQ291bGQgbWVhbiBvdGhl ciBlcnJvcnMgYnV0IHRoaXMgaXMgYWxzbyB0aGUgZXJyb3IgcmV0dXJuZWQNCj4gd2hlbg0KPiAr CSAqIHRoZXJlIGlzIG5vdCBlbm91Z2ggYmFuZHdpZHRoIGZvciBhbGwgdGhlIHBsYW5lcw0KPiAr CSAqLw0KPiArCWlmIChyZXQgPT0gLUVJTlZBTCkgew0KPiArCQltYXhfb3ZlcmxheXMtLTsNCj4g KwkJZ290byByZXRyeV9idzsNCj4gKwl9DQo+ICANCj4gLQlpZ3RfY3JlYXRlX2ZiKGRpc3BsYXkt PmRybV9mZCwgY3Vyc29yX3dpZHRoLCBjdXJzb3JfaGVpZ2h0LA0KPiAtCQkgICAgICBEUk1fRk9S TUFUX0FSR0I4ODg4LCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLA0KPiBzcHJpdGVfZmIpOw0K PiArCWlndF9hc3NlcnRfZighcmV0LCAiRXJyb3IgJWkgbm90IGV4cGVjdGVkIGJ5IHRyeV9jb21t aXQoKVxuIiwNCj4gcmV0KTsNCj4gIA0KPiAtCSppdGVyX21heCA9IGl0ZXJfbWFzayArIDE7DQo+ IC0JaWYgKCFuX292ZXJsYXlzKQ0KPiAtCQlyZXR1cm47DQo+ICsJLyogU28gaXQgaGF2ZSBlbm91 Z2ggYmFuZHdpZHRoIGZvciBuX292ZXJsYXlzIHBsYW5lcyAqLw0KPiAgDQo+ICAJLyoNCj4gLQkg KiBQcmUgZ2VuOSBub3QgYWxsIHNpemVzIGFyZSBzdXBwb3J0ZWQsIGZpbmQgdGhlIGJpZ2dlc3QN Cj4gcG9zc2libGUNCj4gLQkgKiBzaXplIHRoYXQgY2FuIGJlIGVuYWJsZWQgb24gYWxsIHNwcml0 ZSBwbGFuZXMuDQo+ICsJICogQ3JlYXRlIDIgZ3JvdXBzIGZvciBvdmVybGF5cywgbWFrZSBzdXJl IDEgcGxhbmUgaXMgcHV0IGluDQo+IGVhY2ggdGhlbg0KPiArCSAqIHNwcmVhZCB0aGUgcmVzdCBv dXQuDQo+ICAJICovDQo+IC1yZXRyeToNCj4gLQlwcmV2X3cgPSBzcHJpdGVfd2lkdGggPSBjdXJz b3Jfd2lkdGg7DQo+IC0JcHJldl9oID0gc3ByaXRlX2hlaWdodCA9IGN1cnNvcl9oZWlnaHQ7DQo+ ICsJaXRlcl9tYXNrICY9IH5HUk9VUF9UWVBFX09WRVJMQVk7DQo+ICsJZm9yX2VhY2hfcGxhbmVf b25fcGlwZShkaXNwbGF5LCBwaXBlLCBwbGFuZSkgew0KPiArCQlpbnQgaSA9IHBsYW5lLT5pbmRl eDsNCj4gIA0KPiAtCW1heF9zcHJpdGVfd2lkdGggPSAoc3ByaXRlX3dpZHRoID09IG1vZGUtPmhk aXNwbGF5KTsNCj4gLQltYXhfc3ByaXRlX2hlaWdodCA9IChzcHJpdGVfaGVpZ2h0ID09IG1vZGUt PnZkaXNwbGF5KTsNCj4gKwkJaWYgKHBhcm1zW2ldLm1hc2sgIT0gR1JPVVBfVFlQRV9PVkVSTEFZ KQ0KPiArCQkJY29udGludWU7DQo+ICANCj4gLQl3aGlsZSAoMSkgew0KPiAtCQlpbnQgcmV0Ow0K PiArCQkvKiBGaXJzdCBvdmVybGF5IHBsYW5lIHdpbGwgYmUgb3ZlcmxheSBncm91cCAxICovDQo+ ICsJCWlmICghKGl0ZXJfbWFzayAmIEdST1VQX1RZUEVfT1ZFUkxBWSkpIHsNCj4gKwkJCWl0ZXJf bWFzayB8PSBHUk9VUF9UWVBFX09WRVJMQVk7DQo+ICsJCQljb250aW51ZTsNCj4gKwkJfQ0KPiAg DQo+IC0JCXNldF9zcHJpdGVfd2goZGlzcGxheSwgcGlwZSwgcGFybXMsIHNwcml0ZV9mYiwNCj4g LQkJCSAgICAgIGFscGhhLCBzcHJpdGVfd2lkdGgsIHNwcml0ZV9oZWlnaHQpOw0KPiArCQkvKiBT ZWNvbmQgb3ZlcmxheSBwbGFuZSB3aWxsIGJlIG92ZXJsYXkgZ3JvdXAgMSAqLw0KPiArCQlpZiAo IShpdGVyX21hc2sgJiBHUk9VUF9UWVBFX09WRVJMQVkyKSkgew0KPiArCQkJaXRlcl9tYXNrIHw9 IEdST1VQX1RZUEVfT1ZFUkxBWTI7DQo+ICsJCQlwYXJtc1tpXS5tYXNrID0gR1JPVVBfVFlQRV9P VkVSTEFZMjsNCj4gKwkJCWNvbnRpbnVlOw0KPiArCQl9DQo+ICANCj4gLQkJd21fc2V0dXBfcGxh bmUoZGlzcGxheSwgcGlwZSwgKDEgPDwgbl9wbGFuZXMpIC0gMSwNCj4gcGFybXMsIGZhbHNlKTsN Cj4gLQkJcmV0ID0gaWd0X2Rpc3BsYXlfdHJ5X2NvbW1pdF9hdG9taWMoZGlzcGxheSwNCj4gRFJN X01PREVfQVRPTUlDX1RFU1RfT05MWSB8IERSTV9NT0RFX0FUT01JQ19BTExPV19NT0RFU0VULCBO VUxMKTsNCj4gLQkJaWd0X2Fzc2VydCghaXNfYXRvbWljX2NoZWNrX2ZhaWx1cmVfZXJybm8ocmV0 KSk7DQo+ICsJCS8qIFNvcnQgdGhlIGdyb3VwIG9mIHRoZSByZXN0IG9mIG92ZXJsYXkgcGxhbmVz ICovDQo+ICsJCWlmIChoYXJzX3BldHJ1c2thX2Y1NF8xX3JhbmRvbV91bnNhZmVfbWF4KDIpKQ0K PiArCQkJcGFybXNbaV0ubWFzayA9IEdST1VQX1RZUEVfT1ZFUkxBWTI7DQo+ICsJfQ0KPiAgDQo+ IC0JCWlmIChpc19hdG9taWNfY2hlY2tfcGxhbmVfc2l6ZV9lcnJubyhyZXQpKSB7DQo+IC0JCQlp ZiAoY3Vyc29yX3dpZHRoID09IHNwcml0ZV93aWR0aCAmJg0KPiAtCQkJICAgIGN1cnNvcl9oZWln aHQgPT0gc3ByaXRlX2hlaWdodCkgew0KPiAtCQkJCWlndF9hc3NlcnRfZihhbHBoYSwNCj4gLQkJ CQkJICAgICAgIkNhbm5vdCBjb25maWd1cmUgdGhlDQo+IHRlc3Qgd2l0aCBhbGwgc3ByaXRlIHBs YW5lcyBlbmFibGVkXG4iKTsNCj4gLQ0KPiAtCQkJCS8qIHJldHJ5IG9uY2Ugd2l0aCBYUkdCIGZv cm1hdC4gKi8NCj4gLQkJCQlhbHBoYSA9IGZhbHNlOw0KPiAtCQkJCWdvdG8gcmV0cnk7DQo+IC0J CQl9DQo+ICsJKml0ZXJfbWF4ID0gaXRlcl9tYXNrICsgMTsNCj4gIA0KPiArCS8qDQo+ICsJICog UHJlIGdlbjkgbm90IGFsbCBzaXplcyBhcmUgc3VwcG9ydGVkLCBmaW5kIHRoZSBiaWdnZXN0DQo+ IHBvc3NpYmxlDQo+ICsJICogc2l6ZSB0aGF0IGNhbiBiZSBlbmFibGVkIG9uIGFsbCBzcHJpdGUg cGxhbmVzLg0KPiArCSAqLw0KPiArCXdoaWxlICgxKSB7DQo+ICsJCS8qIFNpemUgbGltaXQgcmVh Y2hlZCAqLw0KPiArCQlpZiAoaXNfYXRvbWljX2NoZWNrX3BsYW5lX3NpemVfZXJybm8ocmV0KSkg ew0KPiAgCQkJc3ByaXRlX3dpZHRoID0gcHJldl93Ow0KPiAgCQkJc3ByaXRlX2hlaWdodCA9IHBy ZXZfaDsNCj4gLQ0KPiAtCQkJaWYgKG1heF9zcHJpdGVfd2lkdGggJiYgbWF4X3Nwcml0ZV9oZWln aHQpIHsNCj4gLQkJCQlzZXRfc3ByaXRlX3doKGRpc3BsYXksIHBpcGUsIHBhcm1zLA0KPiBzcHJp dGVfZmIsDQo+IC0JCQkJCSAgICAgIGFscGhhLCBzcHJpdGVfd2lkdGgsDQo+IHNwcml0ZV9oZWln aHQpOw0KPiAtCQkJCWJyZWFrOw0KPiAtCQkJfQ0KPiAtDQo+IC0JCQlpZiAoIW1heF9zcHJpdGVf d2lkdGgpDQo+IC0JCQkJbWF4X3Nwcml0ZV93aWR0aCA9IHRydWU7DQo+IC0JCQllbHNlDQo+IC0J CQkJbWF4X3Nwcml0ZV9oZWlnaHQgPSB0cnVlOw0KPiAtCQl9IGVsc2Ugew0KPiAtCQkJcHJldl93 ID0gc3ByaXRlX3dpZHRoOw0KPiAtCQkJcHJldl9oID0gc3ByaXRlX2hlaWdodDsNCj4gKwkJCWJy ZWFrOw0KPiAgCQl9DQo+ICANCj4gLQkJaWYgKCFtYXhfc3ByaXRlX3dpZHRoKSB7DQo+IC0JCQlz cHJpdGVfd2lkdGggKj0gMjsNCj4gKwkJLyogQ29tbWl0IGlzIHZhbGlkIGFuZCBpdCByZWFjaGVk IG1heCBzaXplLCB1c2UgdGhpcw0KPiBzaXplICovDQo+ICsJCWlmIChzcHJpdGVfd2lkdGggPT0g bW9kZS0+aGRpc3BsYXkgfHwNCj4gKwkJICAgIHNwcml0ZV9oZWlnaHQgPT0gbW9kZS0+dmRpc3Bs YXkpDQo+ICsJCQlicmVhazsNCj4gIA0KPiAtCQkJaWYgKHNwcml0ZV93aWR0aCA+PSBtb2RlLT5o ZGlzcGxheSkgew0KPiAtCQkJCW1heF9zcHJpdGVfd2lkdGggPSB0cnVlOw0KPiArCQlwcmV2X3cg PSBzcHJpdGVfd2lkdGg7DQo+ICsJCXByZXZfaCA9IHNwcml0ZV9oZWlnaHQ7DQo+ICANCj4gLQkJ CQlzcHJpdGVfd2lkdGggPSBtb2RlLT5oZGlzcGxheTsNCj4gLQkJCX0NCj4gLQkJfSBlbHNlIGlm ICghbWF4X3Nwcml0ZV9oZWlnaHQpIHsNCj4gLQkJCXNwcml0ZV9oZWlnaHQgKj0gMjsNCj4gKwkJ c3ByaXRlX3dpZHRoICo9IDI7DQo+ICsJCWlmIChzcHJpdGVfd2lkdGggPj0gbW9kZS0+aGRpc3Bs YXkpDQo+ICsJCQlzcHJpdGVfd2lkdGggPSBtb2RlLT5oZGlzcGxheTsNCj4gIA0KPiAtCQkJaWYg KHNwcml0ZV9oZWlnaHQgPj0gbW9kZS0+dmRpc3BsYXkpIHsNCj4gLQkJCQltYXhfc3ByaXRlX2hl aWdodCA9IHRydWU7DQo+ICsJCXNwcml0ZV9oZWlnaHQgKj0gMjsNCj4gKwkJaWYgKHNwcml0ZV9o ZWlnaHQgPj0gbW9kZS0+dmRpc3BsYXkpDQo+ICsJCQlzcHJpdGVfaGVpZ2h0ID0gbW9kZS0+dmRp c3BsYXk7DQo+ICANCj4gLQkJCQlzcHJpdGVfaGVpZ2h0ID0gbW9kZS0+dmRpc3BsYXk7DQo+IC0J CQl9DQo+IC0JCX0gZWxzZQ0KPiAtCQkJLyogTWF4IHNpemVkIHNwcml0ZXMgZm9yIGFsbCEgKi8N Cj4gLQkJCWJyZWFrOw0KPiArCQlzZXRfc3ByaXRlX3doKGRpc3BsYXksIHBpcGUsIHBhcm1zLCBz cHJpdGVfZmIsDQo+IHNwcml0ZV93aWR0aCwNCj4gKwkJCSAgICAgIHNwcml0ZV9oZWlnaHQsIGFs cGhhKTsNCj4gKwkJd21fc2V0dXBfcGxhbmUoZGlzcGxheSwgcGlwZSwgaXRlcl9tYXNrLCBwYXJt cywgZmFsc2UpOw0KPiArCQlyZXQgPSBpZ3RfZGlzcGxheV90cnlfY29tbWl0X2F0b21pYyhkaXNw bGF5LA0KPiArCQkJCQkJICAgIERSTV9NT0RFX0FUT01JQ19URVMNCj4gVF9PTkxZIHwNCj4gKwkJ CQkJCSAgICBEUk1fTU9ERV9BVE9NSUNfQUxMDQo+IE9XX01PREVTRVQsDQo+ICsJCQkJCQkgICAg TlVMTCk7DQo+ICAJfQ0KPiAgDQo+IC0JaWd0X2luZm8oIlJ1bm5pbmcgdGVzdCBvbiBwaXBlICVz IHdpdGggcmVzb2x1dGlvbiAlZHglZCBhbmQNCj4gc3ByaXRlIHNpemUgJWR4JWQgYWxwaGEgJWlc biIsDQo+ICsJaWd0X2luZm8oIlJ1bm5pbmcgdGVzdCBvbiBwaXBlICVzIHdpdGggcmVzb2x1dGlv biAlZHglZCwgc3ByaXRlDQo+IHNpemUgJWR4JWQsIGFscGhhICVpIGFuZCAlaSBvdmVybGF5IHBs YW5lc1xuIiwNCj4gIAkJIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpLCBtb2RlLT5oZGlzcGxheSwg bW9kZS0NCj4gPnZkaXNwbGF5LA0KPiAtCQkgc3ByaXRlX3dpZHRoLCBzcHJpdGVfaGVpZ2h0LCBh bHBoYSk7DQo+ICsJCSBzcHJpdGVfd2lkdGgsIHNwcml0ZV9oZWlnaHQsIGFscGhhLCBuX292ZXJs YXlzKTsNCj4gIH0NCj4gIA0KPiAgc3RhdGljIHZvaWQgcHJlcGFyZV9mZW5jaW5nKGlndF9kaXNw bGF5X3QgKmRpc3BsYXksIGVudW0gcGlwZSBwaXBlKQ0KPiBAQCAtNTE5LDggKzU2MCwxMCBAQCBy dW5fdHJhbnNpdGlvbl90ZXN0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGVudW0NCj4gcGlwZSBw aXBlLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dA0KPiAgCQl9DQo+ICANCj4gIAkJLyogZm9yY2UgcGxh bmVzIHRvIGJlIHBhcnQgb2YgY29tbWl0ICovDQo+IC0JCWZvcl9lYWNoX3BsYW5lX29uX3BpcGUo ZGlzcGxheSwgcGlwZSwgcGxhbmUpDQo+IC0JCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKHBsYW5l LCAwLCAwKTsNCj4gKwkJZm9yX2VhY2hfcGxhbmVfb25fcGlwZShkaXNwbGF5LCBwaXBlLCBwbGFu ZSkgew0KPiArCQkJaWYgKHBhcm1zW3BsYW5lLT5pbmRleF0ubWFzayAhPQ0KPiBHUk9VUF9UWVBF X05PTkUpDQo+ICsJCQkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihwbGFuZSwgMCwgMCk7DQo+ICsJ CX0NCj4gIA0KPiAgCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMp Ow0KPiAgDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpp Z3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=