From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8CDC26F42F for ; Fri, 13 Sep 2019 18:14:54 +0000 (UTC) Date: Fri, 13 Sep 2019 11:16:27 -0700 From: Manasi Navare Message-ID: <20190913181626.GA18520@intel.com> References: <20190912013139.30869-1-manasi.d.navare@intel.com> <20190912232830.13493-1-manasi.d.navare@intel.com> <20190913094918.GO4019@platvala-desk.ger.corp.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190913094918.GO4019@platvala-desk.ger.corp.intel.com> Subject: Re: [igt-dev] [PATCH i-g-t v4] igt/tests/kms_dp_tiled_display: kms test for display port tiled displays 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, Madhumitha Tolakanahalli Pradeep , Simon Ser , madhumitha.tp@gmail.com List-ID: T24gRnJpLCBTZXAgMTMsIDIwMTkgYXQgMTI6NDk6MThQTSArMDMwMCwgUGV0cmkgTGF0dmFsYSB3 cm90ZToKPiBPbiBUaHUsIFNlcCAxMiwgMjAxOSBhdCAwNDoyODozMFBNIC0wNzAwLCBNYW5hc2kg TmF2YXJlIHdyb3RlOgo+ID4gRnJvbTogTWFkaHVtaXRoYSBUb2xha2FuYWhhbGxpIFByYWRlZXAg PG1hZGh1bWl0aGEudG9sYWthbmFoYWxsaS5wcmFkZWVwQGludGVsLmNvbT4KPiA+IAo+ID4gVGhp cyB0ZXN0IHZhbGlkYXRlcyB0aGUgdGlsZWQgRFAgZGlzcGxheXMgdG8gZGlzcGxheSBhIHRlc3Qg cGF0dGVybgo+ID4gc2VhbWxlc3NseSBhY3Jvc3MgdGhlIHR3byB0aWxlcy4gSXQgdmFsaWRhdGVz IHRoZSB0cmFuc2NvZGVyIHBvcnQKPiA+IHN5bmMgZmVhdHVyZSBvbiBpOTE1IHRvIGdldCBhIHRl YXJmcmVlIHRpbGVkIGRpc3BsYXkgb3V0cHV0Lgo+ID4gCj4gPiBSZWxhdGVkIGtlcm5lbCB3b3Jr IHBhdGNoZXMtCj4gPiBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvc2VyaWVzLzY2 NDAzLwo+ID4gCj4gPiBUaGlzIHRlc3QgY2FuIGV2ZW50dWFsbHkgYmUgZXh0ZW5kZWQgdG8gY292 ZXIgdGlsZWQgZGlzcGxheSBzdXBwb3J0Cj4gPiBvbiBvdGhlciBjb25uZWN0b3IgdHlwZXMuCj4g PiAKPiA+IHY0Ogo+ID4gKiBBZGQgdGhlIGxvZ2ljIHRvIGNoZWNrIHRoZXJlIGFyZQo+ID4gcGFn ZSBmbGlwcyBwZXIgY29ubmVjdG9yIChTaW1vbikKPiA+ICogQ2FsbG9jIGluc3RlYWQgb2YgbWFs bG9jIHRvIGluaXRpYWxpemUgKE1hbmFzaSkKPiA+IAo+ID4gdjM6Cj4gPiAqIEZpeCB0aGUgcG9p bnRlciBsZWFrcyAoU2ltb24pCj4gPiAqIENvZGUgaW5kZW50YXRpb24gKE1hbmFzaSkKPiA+ICog Q29tcGFyZSB0d28gY29uc2VjdXRpdmUgZmxpcCB0aW1lc3RhbXBzIChTaW1vbikKPiA+ICogVXNl IHNpbmdsZSBmYiBhY3Jvc3MgdGlsZXMgKFNpbW9uKQo+ID4gKiBGaXggcmVzZXQgbW9kZSBsb2dp YyAoTWFuYXNpKQo+ID4gCj4gPiB2MjogQWRkZWQgYSBjaGVjayBmb3IgY2hlY2tpbmcgcGFnZWZs aXAgZXZlbnQgdGltZXN0YW1wcyAoU2ltb24sIE1hbmFzaSkKPiA+ICAgICBNaW5vciBzdHlsZSBj aGFuZ2VzIChTaW1vbikKPiA+ICAgIENvZGUgY2xlYW4tdXAgYW5kIHJlb3JkZXJpbmcKPiA+IAo+ ID4gQ2M6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4gPiBDYzog UGV0cmkgTGF0dmFsYSA8cGV0cmkubGF0dmFsYUBpbnRlbC5jb20+Cj4gPiBDYzogU2ltb24gU2Vy IDxzaW1vbi5zZXJAaW50ZWwuY29tPgo+ID4gQ2M6IDxtYWRodW1pdGhhLnRwQGdtYWlsLmNvbT4K PiA+IFNpZ25lZC1vZmYtYnk6IE1hZGh1bWl0aGEgVG9sYWthbmFoYWxsaSBQcmFkZWVwIDxtYWRo dW1pdGhhLnRvbGFrYW5haGFsbGkucHJhZGVlcEBpbnRlbC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5 OiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAg dGVzdHMvTWFrZWZpbGUuc291cmNlcyAgICAgICB8ICAgMSArCj4gPiAgdGVzdHMva21zX2RwX3Rp bGVkX2Rpc3BsYXkuYyB8IDM5NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ ID4gIHRlc3RzL21lc29uLmJ1aWxkICAgICAgICAgICAgfCAgIDEgKwo+ID4gIDMgZmlsZXMgY2hh bmdlZCwgMzk5IGluc2VydGlvbnMoKykKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMva21z X2RwX3RpbGVkX2Rpc3BsYXkuYwo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUu c291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPiA+IGluZGV4IGMwMmU0ZDk0Li43NTYx YWI5YiAxMDA2NDQKPiA+IC0tLSBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPiA+ICsrKyBiL3Rl c3RzL01ha2VmaWxlLnNvdXJjZXMKPiA+IEBAIC00MSw2ICs0MSw3IEBAIFRFU1RTX3Byb2dzID0g XAo+ID4gIAlrbXNfY3Vyc29yX2VkZ2Vfd2FsayBcCj4gPiAgCWttc19jdXJzb3JfbGVnYWN5IFwK PiA+ICAJa21zX2RwX2RzYyBcCj4gPiArCWttc19kcF90aWxlZF9kaXNwbGF5IFwKPiA+ICAJa21z X2RyYXdfY3JjIFwKPiA+ICAJa21zX2ZiY29uX2ZidCBcCj4gPiAgCWttc19mZW5jZV9waW5fbGVh ayBcCj4gPiBkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2RwX3RpbGVkX2Rpc3BsYXkuYyBiL3Rlc3Rz L2ttc19kcF90aWxlZF9kaXNwbGF5LmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRl eCAwMDAwMDAwMC4uMzA1NWM2YzMKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL3Rlc3RzL2tt c19kcF90aWxlZF9kaXNwbGF5LmMKPiA+IEBAIC0wLDAgKzEsMzk3IEBACj4gPiArLyoKPiA+ICsg KiBDb3B5cmlnaHQgwqkgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgo+IAo+IAo+IDIwMTk/CgpZZXMg d2lsbCB1cGRhdGUgdGhpcwoKPiAKPiAKPiA+ICsgKgo+ID4gKyAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4g PiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiA+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gPiArICog dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsIHN1YmxpY2Vuc2UsCj4gPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gPiArICogU29mdHdhcmUgaXMg ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK PiA+ICsgKgo+ID4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiA+ICsgKiBwYXJhZ3JhcGgpIHNoYWxs IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl Cj4gPiArICogU29mdHdhcmUuCj4gPiArICoKPiA+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklE RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ID4g KyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZLAo+ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ID4gKyAqIFRIRSBB VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTIE9SIE9USEVSCj4gPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD T05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiA+ICsgKiBGUk9NLCBPVVQgT0Yg T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERF QUxJTkdTCj4gPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ID4gKyAqCj4gPiArICogQXV0aG9yczoK PiA+ICsgKiAgTWFkaHVtaXRoYSBUb2xha2FuYWhhbGxpIFByYWRlZXAKPiA+ICsgKiAgICAgIDxt YWRodW1pdGhhLnRvbGFrYW5haGFsbGkucHJhZGVlcEBpbnRlbC5jb20+Cj4gPiArICogIE1hbmFz aSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4gPiArICoKPiA+ICsgKiBEaXNw bGF5IFBvcnQgVGlsZWQgRGlzcGxheSBUZXN0Cj4gPiArICogVGhpcyB0ZXN0IHBhcnNlcyB0aGUg dGlsZSBpbmZvcm1hdGlvbiBvZiB0aGUgY29ubmVjdG9ycyB0aGF0IGhhdmUgVElMRQo+ID4gKyAq IHByb3BlcnR5IHNldCwgc2V0cyB1cCB0aGUgZnJhbWVidWZmZXIgd2l0aCBjb3JyZWN0IG9mZnNl dHMgY29ycmVzcG9uZGluZyB0bwo+ID4gKyAqIHRoZSB0aWxlIG9mZnNldHMgYW5kIGRvZXMgYW4g YXRvbWljIG1vZGVzZXQgd2l0aCB0d28gQ1JUQ3MgZm9yIHR3bwo+ID4gKyAqIGNvbm5lY3RvcnMu IFBhZ2UgZmxpcCBldmVudCB0aW1lc3RhbXAgZnJvbSBlYWNoIENSVEMgaXMgY29sbGVjdGVkIGFu ZAo+ID4gKyAqIGNvbXBhcmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXkgb2NjdXJyZWQgaW4gYSBz eW5jaHJvbm91cyBtYW5uZXIuCj4gPiArICoKPiA+ICsgKiBUaGlzIHRlc3QgY3VycmVudGx5IHN1 cHBvcnRzIG9ubHkgaG9yaXpvbnRhbGx5IHRpbGVkIGRpc3BsYXlzLCBpbiBsaW5lIHdpdGgKPiA+ ICsgKiB0aGUgZGlzcGxheXMgc3VwcG9ydGVkIGJ5IHRoZSBrZXJuZWwgYXQgdGhlIG1vbWVudC4K PiA+ICsgKi8KPiA+ICsKPiA+ICsjaW5jbHVkZSAiaWd0LmgiCj4gPiArI2luY2x1ZGUgInBvbGwu aCIKPiA+ICsjaW5jbHVkZSAiZHJtX21vZGUuaCIKPiA+ICsjaW5jbHVkZSAiZHJtX2ZvdXJjYy5o Igo+ID4gKwo+ID4gK0lHVF9URVNUX0RFU0NSSVBUSU9OKCJUZXN0IGZvciBUcmFuc2NvZGVyIFBv cnQgU3luYyBmb3IgRGlzcGxheSBQb3J0IFRpbGVkIERpc3BsYXlzIik7Cj4gPiArCj4gPiArdHlw ZWRlZiBzdHJ1Y3Qgewo+ID4gKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKPiA+ICsJaWd0X3RpbGVf aW5mb190IHRpbGU7Cj4gPiArCWVudW0gcGlwZSBwaXBlOwo+ID4gKwlkcm1Nb2RlQ29ubmVjdG9y UHRyIGNvbm5lY3RvcjsKPiA+ICsJYm9vbCBnb3RfcGFnZV9mbGlwOwo+ID4gK30gZGF0YV9jb25u ZWN0b3JfdDsKPiA+ICsKPiA+ICt0eXBlZGVmIHN0cnVjdCB7Cj4gPiArCWludCBkcm1fZmQ7Cj4g PiArCWludCBudW1faF90aWxlczsKPiA+ICsJaWd0X2ZiX3QgZmJfdGVzdF9wYXR0ZXJuOwo+ID4g KwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5Owo+ID4gKwlkYXRhX2Nvbm5lY3Rvcl90ICpjb25uczsK PiA+ICsJZW51bSBpZ3RfY29tbWl0X3N0eWxlIGNvbW1pdDsKPiA+ICt9IGRhdGFfdDsKPiA+ICsK PiA+ICtzdGF0aWMgaW50IGRybV9wcm9wZXJ0eV9pc190aWxlKGRybU1vZGVQcm9wZXJ0eVB0ciBw cm9wKQo+ID4gK3sKPiA+ICsJcmV0dXJuIChzdHJjbXAocHJvcC0+bmFtZSwgIlRJTEUiKSA/IDAg OiAxKSAmJgo+ID4gKwkJCSBkcm1fcHJvcGVydHlfdHlwZV9pcyhwcm9wLCBEUk1fTU9ERV9QUk9Q X0JMT0IpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBnZXRfY29ubmVjdG9yX3RpbGVf cHJvcHMoZGF0YV90ICpkYXRhLCBkcm1Nb2RlQ29ubmVjdG9yUHRyIGNvbm4sCj4gPiArCQkJCSAg ICAgaWd0X3RpbGVfaW5mb190ICp0aWxlKQo+ID4gK3sKPiA+ICsJaW50IGkgPSAwOwo+ID4gKwlk cm1Nb2RlUHJvcGVydHlQdHIgcHJvcDsKPiA+ICsJZHJtTW9kZVByb3BlcnR5QmxvYlB0ciBibG9i Owo+ID4gKwo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgY29ubi0+Y291bnRfcHJvcHM7IGkrKykgewo+ ID4gKwkJcHJvcCA9IGRybU1vZGVHZXRQcm9wZXJ0eShkYXRhLT5kcm1fZmQsIGNvbm4tPnByb3Bz W2ldKTsKPiA+ICsKPiA+ICsJCWlndF9hc3NlcnQocHJvcCk7Cj4gPiArCj4gPiArCQlpZiAoIWRy bV9wcm9wZXJ0eV9pc190aWxlKHByb3ApKSB7Cj4gPiArCQkJZHJtTW9kZUZyZWVQcm9wZXJ0eShw cm9wKTsKPiA+ICsJCQljb250aW51ZTsKPiA+ICsJCX0KPiA+ICsKPiA+ICsJCWJsb2IgPSBkcm1N b2RlR2V0UHJvcGVydHlCbG9iKGRhdGEtPmRybV9mZCwKPiA+ICsJCQkJY29ubi0+cHJvcF92YWx1 ZXNbaV0pOwo+ID4gKwo+ID4gKwkJaWYgKCFibG9iKQo+ID4gKwkJCWdvdG8gY2xlYW51cDsKPiA+ ICsKPiA+ICsJCWlndF9wYXJzZV9jb25uZWN0b3JfdGlsZV9ibG9iKGJsb2IsIHRpbGUpOwo+ID4g KwkJYnJlYWs7Cj4gPiArCX0KPiA+ICsKPiA+ICtjbGVhbnVwOgo+ID4gKwlkcm1Nb2RlRnJlZVBy b3BlcnR5KHByb3ApOwo+ID4gKwlkcm1Nb2RlRnJlZVByb3BlcnR5QmxvYihibG9iKTsKPiA+ICt9 Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgZ2V0X251bWJlcl9vZl9oX3RpbGVzKGRhdGFfdCAqZGF0 YSkKPiA+ICt7Cj4gPiArCWludCBpOwo+ID4gKwlkcm1Nb2RlUmVzUHRyIHJlczsKPiA+ICsJZHJt TW9kZUNvbm5lY3RvclB0ciBjb25uZWN0b3I7Cj4gPiArCWlndF90aWxlX2luZm9fdCB0aWxlID0g ey5udW1faF90aWxlID0gMH07Cj4gPiArCj4gPiArCWlndF9hc3NlcnQocmVzID0gZHJtTW9kZUdl dFJlc291cmNlcyhkYXRhLT5kcm1fZmQpKTsKPiA+ICsKPiA+ICsJZm9yIChpID0gMDsgaSA8IHJl cy0+Y291bnRfY29ubmVjdG9yczsgaSsrKSB7Cj4gPiArCQljb25uZWN0b3IgPSBkcm1Nb2RlR2V0 Q29ubmVjdG9yQ3VycmVudChkYXRhLT5kcm1fZmQsCj4gPiArCQkJCXJlcy0+Y29ubmVjdG9yc1tp XSk7Cj4gPiArCj4gPiArCQlpZ3RfYXNzZXJ0KGNvbm5lY3Rvcik7Cj4gPiArCj4gPiArCQlpZiAo Y29ubmVjdG9yLT5jb25uZWN0aW9uICE9IERSTV9NT0RFX0NPTk5FQ1RFRCB8fAo+ID4gKwkJICAg IGNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgIT0gRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQ b3J0KSB7Cj4gPiArCQkJZHJtTW9kZUZyZWVDb25uZWN0b3IoY29ubmVjdG9yKTsKPiA+ICsJCQlj b250aW51ZTsKPiA+ICsJCX0KPiA+ICsKPiA+ICsJCWdldF9jb25uZWN0b3JfdGlsZV9wcm9wcyhk YXRhLCBjb25uZWN0b3IsICZ0aWxlKTsKPiA+ICsJCWRhdGEtPm51bV9oX3RpbGVzID0gdGlsZS5u dW1faF90aWxlOwo+ID4gKwkJYnJlYWs7Cj4gPiArCX0KPiA+ICsKPiA+ICsJZHJtTW9kZUZyZWVS ZXNvdXJjZXMocmVzKTsKPiA+ICsJZHJtTW9kZUZyZWVDb25uZWN0b3IoY29ubmVjdG9yKTsKPiA+ ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgZ2V0X2Nvbm5lY3RvcnMoZGF0YV90ICpkYXRhKQo+ ID4gK3sKPiA+ICsJaW50IGNvdW50ID0gMDsKPiA+ICsJaWd0X291dHB1dF90ICpvdXRwdXQ7Cj4g PiArCWRhdGFfY29ubmVjdG9yX3QgKmNvbm5zID0gZGF0YS0+Y29ubnM7Cj4gPiArCj4gPiArCWZv cl9lYWNoX2Nvbm5lY3RlZF9vdXRwdXQoZGF0YS0+ZGlzcGxheSwgb3V0cHV0KSB7Cj4gPiArCQlj b25uc1tjb3VudF0uY29ubmVjdG9yID0gZHJtTW9kZUdldENvbm5lY3RvcihkYXRhLT5kaXNwbGF5 LT5kcm1fZmQsCj4gPiArCQkJCQkJCSAgICAgb3V0cHV0LT5pZCk7Cj4gPiArCj4gPiArCQlpZ3Rf YXNzZXJ0KGNvbm5zW2NvdW50XS5jb25uZWN0b3IpOwo+ID4gKwo+ID4gKwkJaWYgKGNvbm5zW2Nv dW50XS5jb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlICE9Cj4gPiArCQkgICAgRFJNX01PREVfQ09O TkVDVE9SX0Rpc3BsYXlQb3J0KSB7Cj4gPiArCQkJZHJtTW9kZUZyZWVDb25uZWN0b3IoY29ubnNb Y291bnRdLmNvbm5lY3Rvcik7Cj4gPiArCQkJY29udGludWU7Cj4gPiArCQl9Cj4gPiArCj4gPiAr CQlnZXRfY29ubmVjdG9yX3RpbGVfcHJvcHMoZGF0YSwgY29ubnNbY291bnRdLmNvbm5lY3RvciwK PiA+ICsJCQkJCSAmY29ubnNbY291bnRdLnRpbGUpOwo+ID4gKwo+ID4gKwkJLyogQ2hlY2sgaWYg dGhlIGNvbm5lY3RvcnMgYmVsb25nIHRvIHRoZSBzYW1lIHRpbGUgZ3JvdXAgKi8KPiA+ICsJCWlm IChjb3VudCA+IDApCj4gPiArCQkJaWd0X2Fzc2VydChjb25uc1tjb3VudF0udGlsZS50aWxlX2dy b3VwX2lkID09Cj4gPiArCQkJCSAgIGNvbm5zW2NvdW50LTFdLnRpbGUudGlsZV9ncm91cF9pZCk7 Cj4gPiArCj4gPiArCQljb3VudCsrOwo+ID4gKwl9Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2 b2lkCj4gPiArcmVzZXRfcGxhbmUoaWd0X291dHB1dF90ICpvdXRwdXQpCj4gPiArewo+ID4gKwlp Z3RfcGxhbmVfdCAqcHJpbWFyeTsKPiA+ICsKPiA+ICsJcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0 X3BsYW5lX3R5cGUob3V0cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKPiA+ICsJaWd0X3Bs YW5lX3NldF9mYihwcmltYXJ5LCBOVUxMKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQg cmVzZXRfb3V0cHV0KGlndF9vdXRwdXRfdCAqb3V0cHV0KQo+ID4gK3sKPiA+ICsJaWd0X291dHB1 dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVfTk9ORSk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2 b2lkIHJlc2V0X21vZGUoZGF0YV90ICpkYXRhKQo+ID4gK3sKPiA+ICsJaW50IGNvdW50Owo+ID4g KwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKPiA+ICsJZGF0YV9jb25uZWN0b3JfdCAqY29ubnMgPSBk YXRhLT5jb25uczsKPiA+ICsKPiA+ICsJZm9yIChjb3VudCA9IDA7IGNvdW50IDwgZGF0YS0+bnVt X2hfdGlsZXM7IGNvdW50KyspIHsKPiA+ICsJCW91dHB1dCA9IGlndF9vdXRwdXRfZnJvbV9jb25u ZWN0b3IoZGF0YS0+ZGlzcGxheSwKPiA+ICsJCQkJCQkgICBjb25uc1tjb3VudF0uY29ubmVjdG9y KTsKPiA+ICsJCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBQSVBFX05PTkUpOwo+ID4gKwl9 Cj4gPiArCWlndF9kaXNwbGF5X2NvbW1pdDIoZGF0YS0+ZGlzcGxheSwgZGF0YS0+Y29tbWl0KTsK PiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgdGVzdF9jbGVhbnVwKGRhdGFfdCAqZGF0YSkK PiA+ICt7Cj4gPiArCWludCBjb3VudDsKPiA+ICsJZGF0YV9jb25uZWN0b3JfdCAqY29ubnMgPSBk YXRhLT5jb25uczsKPiA+ICsKPiA+ICsJZm9yIChjb3VudCA9IDA7IGNvdW50IDwgZGF0YS0+bnVt X2hfdGlsZXM7IGNvdW50KyspIHsKPiA+ICsJCWlmIChjb25uc1tjb3VudF0ub3V0cHV0KSB7Cj4g PiArCQkJcmVzZXRfcGxhbmUoY29ubnNbY291bnRdLm91dHB1dCk7Cj4gPiArCQkJcmVzZXRfb3V0 cHV0KGNvbm5zW2NvdW50XS5vdXRwdXQpOwo+ID4gKwkJfQo+ID4gKwl9Cj4gPiArCWlndF9yZW1v dmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ZmJfdGVzdF9wYXR0ZXJuKTsKPiA+ICsJaWd0X2Rp c3BsYXlfY29tbWl0MihkYXRhLT5kaXNwbGF5LCBkYXRhLT5jb21taXQpOwo+ID4gKwltZW1zZXQo Y29ubnMsIDAsIHNpemVvZihkYXRhX2Nvbm5lY3Rvcl90KSAqIGRhdGEtPm51bV9oX3RpbGVzKTsK PiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgc2V0dXBfbW9kZShkYXRhX3QgKmRhdGEpCj4g PiArewo+ID4gKwlpbnQgY291bnQgPSAwOwo+ID4gKwllbnVtIHBpcGUgcGlwZTsKPiA+ICsJaWd0 X291dHB1dF90ICpvdXRwdXQ7Cj4gPiArCWRhdGFfY29ubmVjdG9yX3QgKmNvbm5zID0gZGF0YS0+ Y29ubnM7Cj4gPiArCj4gPiArCS8qCj4gPiArCSAqIFRoZSBvdXRwdXQgaXMgc2V0IHRvIFBJUEVf Tk9ORSBhbmQgdGhlbiBhc3NpZ25lZCBhIHBpcGUuCj4gPiArCSAqIFRoaXMgaXMgZG9uZSB0byBl bnN1cmUgYSBjb21wbGV0ZSBtb2Rlc2V0IG9jY3VyZXMgZXZlcnkKPiA+ICsJICogdGltZSB0aGUg dGVzdCBpcyBydW4uCj4gPiArCSAqLwo+ID4gKwlyZXNldF9tb2RlKGRhdGEpOwo+ID4gKwo+ID4g Kwlmb3IgKGNvdW50ID0gMDsgY291bnQgPCBkYXRhLT5udW1faF90aWxlczsgY291bnQrKykgewo+ ID4gKwkJb3V0cHV0ID0gaWd0X291dHB1dF9mcm9tX2Nvbm5lY3RvcihkYXRhLT5kaXNwbGF5LAo+ ID4gKwkJCQkJCSAgIGNvbm5zW2NvdW50XS5jb25uZWN0b3IpOwo+ID4gKwo+ID4gKwkJZm9yX2Vh Y2hfcGlwZShkYXRhLT5kaXNwbGF5LCBwaXBlKSB7Cj4gPiArCQkJaWYgKGNvdW50ID4gMCAmJiBw aXBlID09IGNvbm5zW2NvdW50LTFdLnBpcGUpCj4gPiArCQkJCWNvbnRpbnVlOwo+ID4gKwo+ID4g KwkJCWlmIChpZ3RfcGlwZV9jb25uZWN0b3JfdmFsaWQocGlwZSwgb3V0cHV0KSkgewo+ID4gKwo+ ID4gKwkJCQljb25uc1tjb3VudF0ucGlwZSA9IHBpcGU7Cj4gPiArCQkJCWNvbm5zW2NvdW50XS5v dXRwdXQgPSBvdXRwdXQ7Cj4gPiArCj4gPiArCQkJCWlndF9vdXRwdXRfc2V0X3BpcGUoY29ubnNb Y291bnRdLm91dHB1dCwKPiA+ICsJCQkJCQkgICAgY29ubnNbY291bnRdLnBpcGUpOwo+ID4gKwkJ CQlicmVhazsKPiA+ICsJCQl9Cj4gPiArCQl9Cj4gPiArCX0KPiA+ICsJaWd0X2Rpc3BsYXlfY29t bWl0X2F0b21pYyhkYXRhLT5kaXNwbGF5LCBEUk1fTU9ERV9BVE9NSUNfQUxMT1dfTU9ERVNFVCwK PiA+ICsJCQkJICBOVUxMKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgc2V0dXBfZnJh bWVidWZmZXIoZGF0YV90ICpkYXRhKQo+ID4gK3sKPiA+ICsJaW50IGNvdW50Owo+ID4gKwlpZ3Rf cGxhbmVfdCAqcHJpbWFyeTsKPiA+ICsJaW50IGZiX2hfc2l6ZSA9IDAsIGZiX3Zfc2l6ZSA9IDA7 Cj4gPiArCWRhdGFfY29ubmVjdG9yX3QgKmNvbm5zID0gZGF0YS0+Y29ubnM7Cj4gPiArCj4gPiAr CWZvciAoY291bnQgPSAwOyBjb3VudCA8IGRhdGEtPm51bV9oX3RpbGVzOyBjb3VudCsrKSB7Cj4g PiArCj4gPiArCQlmYl9oX3NpemUgKz0gY29ubnNbY291bnRdLnRpbGUudGlsZV9oX3NpemU7Cj4g PiArCQkvKiBXZSBzdXBwb3J0IG9ubHkgaG9yaXpvbnRhbCB0aWxlcywgc28gdmVydGljYWwgc2l6 ZSBpcyBzYW1lCj4gPiArCQkgKiBmb3IgYWxsIHRpbGVzIGFuZCBuZWVkcyB0byBiZSBhc3NpZ25l ZCBvbmx5IG9uY2UuCj4gPiArCQkgKi8KPiA+ICsJCWlmICghZmJfdl9zaXplKQo+ID4gKwkJCWZi X3Zfc2l6ZSA9IGNvbm5zW2NvdW50XS50aWxlLnRpbGVfdl9zaXplOwo+ID4gKwl9Cj4gPiArCj4g PiArCWlndF9jcmVhdGVfcGF0dGVybl9mYihkYXRhLT5kcm1fZmQsCj4gPiArCQkJICAgICAgZmJf aF9zaXplLAo+ID4gKwkJCSAgICAgIGZiX3Zfc2l6ZSwKPiA+ICsJCQkgICAgICBEUk1fRk9STUFU X1hCR1I4ODg4LAo+ID4gKwkJCSAgICAgIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCj4gPiAr CQkJICAgICAgJmRhdGEtPmZiX3Rlc3RfcGF0dGVybik7Cj4gPiArCj4gPiArCWZvciAoY291bnQg PSAwOyBjb3VudCA8IGRhdGEtPm51bV9oX3RpbGVzOyBjb3VudCsrKSB7Cj4gPiArCj4gPiArCQlw cmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShjb25uc1tjb3VudF0ub3V0cHV0LAo+ ID4gKwkJCQkJCSAgICBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKPiA+ICsKPiA+ICsJCWlndF9w bGFuZV9zZXRfZmIocHJpbWFyeSwgJmRhdGEtPmZiX3Rlc3RfcGF0dGVybik7Cj4gPiArCj4gPiAr CQlpZ3RfZmJfc2V0X3NpemUoJmRhdGEtPmZiX3Rlc3RfcGF0dGVybiwgcHJpbWFyeSwKPiA+ICsJ CQkJY29ubnNbY291bnRdLnRpbGUudGlsZV9oX3NpemUsCj4gPiArCQkJCWNvbm5zW2NvdW50XS50 aWxlLnRpbGVfdl9zaXplKTsKPiA+ICsKPiA+ICsJCWlndF9mYl9zZXRfcG9zaXRpb24oJmRhdGEt PmZiX3Rlc3RfcGF0dGVybiwgcHJpbWFyeSwKPiA+ICsJCQkJICAgIChjb25uc1tjb3VudF0udGls ZS50aWxlX2hfc2l6ZSAqCj4gPiArCQkJCSAgICAgY29ubnNbY291bnRdLnRpbGUudGlsZV9oX2xv YyksCj4gPiArCQkJCSAgICAoY29ubnNbY291bnRdLnRpbGUudGlsZV92X3NpemUgKgo+ID4gKwkJ CQkgICAgIGNvbm5zW2NvdW50XS50aWxlLnRpbGVfdl9sb2MpKTsKPiA+ICsKPiA+ICsJCWlndF9w bGFuZV9zZXRfc2l6ZShwcmltYXJ5LAo+ID4gKwkJCQkgICBjb25uc1tjb3VudF0udGlsZS50aWxl X2hfc2l6ZSwKPiA+ICsJCQkJICAgY29ubnNbY291bnRdLnRpbGUudGlsZV92X3NpemUpOwo+ID4g Kwl9Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIHBhZ2VfZmxpcF9oYW5kbGVyKGludCBm ZCwgdW5zaWduZWQgaW50IHNlcSwKPiA+ICsJCQkgICAgICB1bnNpZ25lZCBpbnQgdHZfc2VjLCB1 bnNpZ25lZCBpbnQgdHZfdXNlYywKPiA+ICsJCQkgICAgICB1bnNpZ25lZCBpbnQgY3J0Y19pZCwg dm9pZCAqX2RhdGEpCj4gPiArewo+ID4gKwlkYXRhX3QgKmRhdGEgPSBfZGF0YTsKPiA+ICsJZGF0 YV9jb25uZWN0b3JfdCAqY29ubjsKPiA+ICsJYm9vbCBpc19vbl90aW1lID0gZmFsc2U7Cj4gPiAr CXN0YXRpYyB1bnNpZ25lZCBpbnQgX3R2X3NlYywgX3R2X3VzZWM7Cj4gPiArCWludCBpOwo+ID4g Kwo+ID4gKwlpZ3RfZGVidWcoIlBhZ2UgRmxpcCBFdmVudCByZWNlaXZlZCBmcm9tIENSVEM6JWQg YXQgJXU6JXVcbiIsIGNydGNfaWQsCj4gPiArCQkgIHR2X3NlYywgdHZfdXNlYyk7Cj4gPiArCj4g PiArCWZvciAoaSA9IDA7IGkgPCBkYXRhLT5udW1faF90aWxlczsgaSsrKSB7Cj4gPiArCj4gPiAr CQljb25uID0gJmRhdGEtPmNvbm5zW2ldOwo+ID4gKwkJaWYgKGRhdGEtPmRpc3BsYXktPnBpcGVz W2Nvbm4tPnBpcGVdLmNydGNfaWQgPT0gY3J0Y19pZCkgewo+ID4gKwkJCWlndF9hc3NlcnRfZigh Y29ubi0+Z290X3BhZ2VfZmxpcCwKPiA+ICsJCQkJICAgICAiR290IHR3byBwYWdlLWZsaXBzIGZv ciBDUlRDICV1XG4iLAo+ID4gKwkJCQkgICAgIGNydGNfaWQpOwo+ID4gKwkJCWNvbm4tPmdvdF9w YWdlX2ZsaXAgPSB0cnVlOwo+ID4gKwo+ID4gKwkJCS8qIFNraXAgdGhlIGZvbGxvd2luZyBjaGVj a3MgZm9yIHRoZSBmaXJzdCBwYWdlIGZsaXAgZXZlbnQgKi8KPiA+ICsJCQlpZiAoX3R2X3NlYyA9 PSAwIHx8IF90dl91c2VjID09IDApIHsKPiA+ICsJCQkJX3R2X3NlYyA9IHR2X3NlYzsKPiA+ICsJ CQkJX3R2X3VzZWMgPSB0dl91c2VjOwo+ID4gKwkJCQlyZXR1cm47Cj4gPiArCQkJfQo+ID4gKwkJ CS8qCj4gPiArCQkJICogRm9yIHNlYW1sZXNzIHRlYXItZnJlZSBkaXNwbGF5LCB0aGUgcGFnZSBm bGlwIGV2ZW50IHRpbWVzdGFtcHMKPiA+ICsJCQkgKiBmcm9tIGFsbCB0aGUgdGlsZXMgc2hvdWxk IG5vdCBkaWZmZXIgYnkgbW9yZSB0aGFuIDEwdXMuCj4gPiArCQkJICovCj4gPiArCQkJaXNfb25f dGltZSA9IHR2X3NlYyA9PSBfdHZfc2VjICYmIChhYnModHZfdXNlYyAtIF90dl91c2VjKSA8IDEw KTsKPiA+ICsKPiA+ICsJCQlpZ3RfZmFpbF9vbl9mKCFpc19vbl90aW1lLCAiRGVsYXllZCBwYWdl IGZsaXAgZXZlbnQgZnJvbSBDUlRDOiVkIGF0ICV1OiV1XG4iLAo+ID4gKwkJCQkgICAgICBjcnRj X2lkLCB0dl9zZWMsIHR2X3VzZWMpOwo+ID4gKwkJCXJldHVybjsKPiA+ICsJCX0KPiA+ICsJfQo+ ID4gKwo+ID4gKwlpZ3RfYXNzZXJ0X2YoZmFsc2UsICJHb3QgcGFnZS1mbGlwIGV2ZW50IGZvciB1 bmV4cGVjdGVkIENSVEMgJXVcbiIsCj4gPiArCQkgICAgIGNydGNfaWQpOwo+ID4gK30KPiA+ICsK PiA+ICtzdGF0aWMgYm9vbCBnb3RfYWxsX3BhZ2VfZmxpcHMoZGF0YV90ICpkYXRhKQo+ID4gK3sK PiA+ICsJaW50IGk7Cj4gPiArCj4gPiArCWZvciAoaSA9IDA7IGkgPCBkYXRhLT5udW1faF90aWxl czsgaSsrKSB7Cj4gPiArCQlpZiAoIWRhdGEtPmNvbm5zW2ldLmdvdF9wYWdlX2ZsaXApCj4gPiAr CQkJcmV0dXJuIGZhbHNlOwo+ID4gKwl9Cj4gPiArCj4gPiArCXJldHVybiB0cnVlOwo+ID4gK30K PiA+ICsKPiA+ICtpZ3RfbWFpbgo+ID4gK3sKPiA+ICsJaWd0X2Rpc3BsYXlfdCBkaXNwbGF5Owo+ ID4gKwlkYXRhX3QgZGF0YSA9IHswfTsKPiA+ICsJc3RydWN0IHBvbGxmZCBwZmQgPSB7MH07Cj4g PiArCWRybUV2ZW50Q29udGV4dCBkcm1fZXZlbnQgPSB7MH07Cj4gPiArCWludCByZXQ7Cj4gPiAr Cj4gPiArCWlndF9maXh0dXJlIHsKPiA+ICsJCWRhdGEuZHJtX2ZkID0gZHJtX29wZW5fZHJpdmVy X21hc3RlcihEUklWRVJfQU5ZKTsKPiA+ICsKPiA+ICsJCWttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNz X21vZGUoKTsKPiA+ICsJCWlndF9kaXNwbGF5X3JlcXVpcmUoJmRpc3BsYXksIGRhdGEuZHJtX2Zk KTsKPiA+ICsJCWlndF9kaXNwbGF5X3Jlc2V0KCZkaXNwbGF5KTsKPiA+ICsKPiA+ICsJCWRhdGEu ZGlzcGxheSA9ICZkaXNwbGF5Owo+ID4gKwkJcGZkLmZkID0gZGF0YS5kcm1fZmQ7Cj4gPiArCQlw ZmQuZXZlbnRzID0gUE9MTElOOwo+ID4gKwkJZHJtX2V2ZW50LnZlcnNpb24gPSAzOwo+ID4gKwkJ ZHJtX2V2ZW50LnBhZ2VfZmxpcF9oYW5kbGVyMiA9IHBhZ2VfZmxpcF9oYW5kbGVyOwo+ID4gKwkJ ZGF0YS5jb21taXQgPSBkYXRhLmRpc3BsYXktPmlzX2F0b21pYyA/IENPTU1JVF9BVE9NSUMgOiBD T01NSVRfTEVHQUNZOwo+ID4gKwkJaWd0X3JlcXVpcmUoZGF0YS5jb21taXQgPT0gQ09NTUlUX0FU T01JQyk7Cj4gPiArCj4gPiArCQlnZXRfbnVtYmVyX29mX2hfdGlsZXMoJmRhdGEpOwo+ID4gKwkJ aWd0X2RlYnVnKCJOdW1iZXIgb2YgSG9yaXpvbnRhbCBUaWxlczogJWRcbiIsIGRhdGEubnVtX2hf dGlsZXMpOwo+ID4gKwkJaWd0X3JlcXVpcmUoZGF0YS5udW1faF90aWxlcyA+IDApOwo+ID4gKwkJ ZGF0YS5jb25ucyA9IGNhbGxvYyhkYXRhLm51bV9oX3RpbGVzLCBzaXplb2YoZGF0YV9jb25uZWN0 b3JfdCkpOwo+ID4gKwl9Cj4gPiArCj4gPiArCWlndF9zdWJ0ZXN0KCJiYXNpYy10ZXN0LXBhdHRl cm4iKSB7Cj4gCj4gUGxlYXNlIGRvY3VtZW50IHRoaXMgc3VidGVzdCB3aXRoIGlndF9kZXNjcmli ZS4KClllcyB3aWxsIGFkZCBpZ3RfZGVzY3JpYmUgb24gdG9wIG9mIGlndF9zdWJ0ZXN0LCB0aGFu a3MgZm9yIHBvaW50aW5nIHRoaXMgb3V0CgpSZWdhcmRzCk1hbmFzaQo+IAo+IAo+IC0tIAo+IFBl dHJpIExhdHZhbGEKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2