From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2B6416EEFE for ; Fri, 13 Sep 2019 09:49:21 +0000 (UTC) Date: Fri, 13 Sep 2019 12:49:18 +0300 From: Petri Latvala Message-ID: <20190913094918.GO4019@platvala-desk.ger.corp.intel.com> References: <20190912013139.30869-1-manasi.d.navare@intel.com> <20190912232830.13493-1-manasi.d.navare@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190912232830.13493-1-manasi.d.navare@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: Manasi Navare Cc: igt-dev@lists.freedesktop.org, madhumitha.tp@gmail.com List-ID: T24gVGh1LCBTZXAgMTIsIDIwMTkgYXQgMDQ6Mjg6MzBQTSAtMDcwMCwgTWFuYXNpIE5hdmFyZSB3 cm90ZToKPiBGcm9tOiBNYWRodW1pdGhhIFRvbGFrYW5haGFsbGkgUHJhZGVlcCA8bWFkaHVtaXRo YS50b2xha2FuYWhhbGxpLnByYWRlZXBAaW50ZWwuY29tPgo+IAo+IFRoaXMgdGVzdCB2YWxpZGF0 ZXMgdGhlIHRpbGVkIERQIGRpc3BsYXlzIHRvIGRpc3BsYXkgYSB0ZXN0IHBhdHRlcm4KPiBzZWFt bGVzc2x5IGFjcm9zcyB0aGUgdHdvIHRpbGVzLiBJdCB2YWxpZGF0ZXMgdGhlIHRyYW5zY29kZXIg cG9ydAo+IHN5bmMgZmVhdHVyZSBvbiBpOTE1IHRvIGdldCBhIHRlYXJmcmVlIHRpbGVkIGRpc3Bs YXkgb3V0cHV0Lgo+IAo+IFJlbGF0ZWQga2VybmVsIHdvcmsgcGF0Y2hlcy0KPiBodHRwczovL3Bh dGNod29yay5mcmVlZGVza3RvcC5vcmcvc2VyaWVzLzY2NDAzLwo+IAo+IFRoaXMgdGVzdCBjYW4g ZXZlbnR1YWxseSBiZSBleHRlbmRlZCB0byBjb3ZlciB0aWxlZCBkaXNwbGF5IHN1cHBvcnQKPiBv biBvdGhlciBjb25uZWN0b3IgdHlwZXMuCj4gCj4gdjQ6Cj4gKiBBZGQgdGhlIGxvZ2ljIHRvIGNo ZWNrIHRoZXJlIGFyZQo+IHBhZ2UgZmxpcHMgcGVyIGNvbm5lY3RvciAoU2ltb24pCj4gKiBDYWxs b2MgaW5zdGVhZCBvZiBtYWxsb2MgdG8gaW5pdGlhbGl6ZSAoTWFuYXNpKQo+IAo+IHYzOgo+ICog Rml4IHRoZSBwb2ludGVyIGxlYWtzIChTaW1vbikKPiAqIENvZGUgaW5kZW50YXRpb24gKE1hbmFz aSkKPiAqIENvbXBhcmUgdHdvIGNvbnNlY3V0aXZlIGZsaXAgdGltZXN0YW1wcyAoU2ltb24pCj4g KiBVc2Ugc2luZ2xlIGZiIGFjcm9zcyB0aWxlcyAoU2ltb24pCj4gKiBGaXggcmVzZXQgbW9kZSBs b2dpYyAoTWFuYXNpKQo+IAo+IHYyOiBBZGRlZCBhIGNoZWNrIGZvciBjaGVja2luZyBwYWdlZmxp cCBldmVudCB0aW1lc3RhbXBzIChTaW1vbiwgTWFuYXNpKQo+ICAgICBNaW5vciBzdHlsZSBjaGFu Z2VzIChTaW1vbikKPiAgICBDb2RlIGNsZWFuLXVwIGFuZCByZW9yZGVyaW5nCj4gCj4gQ2M6IE1h bmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4gQ2M6IFBldHJpIExhdHZh bGEgPHBldHJpLmxhdHZhbGFAaW50ZWwuY29tPgo+IENjOiBTaW1vbiBTZXIgPHNpbW9uLnNlckBp bnRlbC5jb20+Cj4gQ2M6IDxtYWRodW1pdGhhLnRwQGdtYWlsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5 OiBNYWRodW1pdGhhIFRvbGFrYW5haGFsbGkgUHJhZGVlcCA8bWFkaHVtaXRoYS50b2xha2FuYWhh bGxpLnByYWRlZXBAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IE1hbmFzaSBOYXZhcmUgPG1h bmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4gLS0tCj4gIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMg ICAgICAgfCAgIDEgKwo+ICB0ZXN0cy9rbXNfZHBfdGlsZWRfZGlzcGxheS5jIHwgMzk3ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIHRlc3RzL21lc29uLmJ1aWxkICAgICAg ICAgICAgfCAgIDEgKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDM5OSBpbnNlcnRpb25zKCspCj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9rbXNfZHBfdGlsZWRfZGlzcGxheS5jCj4gCj4gZGlmZiAt LWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4g aW5kZXggYzAyZTRkOTQuLjc1NjFhYjliIDEwMDY0NAo+IC0tLSBhL3Rlc3RzL01ha2VmaWxlLnNv dXJjZXMKPiArKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gQEAgLTQxLDYgKzQxLDcgQEAg VEVTVFNfcHJvZ3MgPSBcCj4gIAlrbXNfY3Vyc29yX2VkZ2Vfd2FsayBcCj4gIAlrbXNfY3Vyc29y X2xlZ2FjeSBcCj4gIAlrbXNfZHBfZHNjIFwKPiArCWttc19kcF90aWxlZF9kaXNwbGF5IFwKPiAg CWttc19kcmF3X2NyYyBcCj4gIAlrbXNfZmJjb25fZmJ0IFwKPiAgCWttc19mZW5jZV9waW5fbGVh ayBcCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19kcF90aWxlZF9kaXNwbGF5LmMgYi90ZXN0cy9r bXNfZHBfdGlsZWRfZGlzcGxheS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw MDAwMC4uMzA1NWM2YzMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvdGVzdHMva21zX2RwX3RpbGVk X2Rpc3BsYXkuYwo+IEBAIC0wLDAgKzEsMzk3IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAy MDE4IEludGVsIENvcnBvcmF0aW9uCgoKMjAxOT8KCgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg YQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoK PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp Y2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVk IGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3 YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJ TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK PiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVO VC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJF Lgo+ICsgKgo+ICsgKiBBdXRob3JzOgo+ICsgKiAgTWFkaHVtaXRoYSBUb2xha2FuYWhhbGxpIFBy YWRlZXAKPiArICogICAgICA8bWFkaHVtaXRoYS50b2xha2FuYWhhbGxpLnByYWRlZXBAaW50ZWwu Y29tPgo+ICsgKiAgTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KPiAr ICoKPiArICogRGlzcGxheSBQb3J0IFRpbGVkIERpc3BsYXkgVGVzdAo+ICsgKiBUaGlzIHRlc3Qg cGFyc2VzIHRoZSB0aWxlIGluZm9ybWF0aW9uIG9mIHRoZSBjb25uZWN0b3JzIHRoYXQgaGF2ZSBU SUxFCj4gKyAqIHByb3BlcnR5IHNldCwgc2V0cyB1cCB0aGUgZnJhbWVidWZmZXIgd2l0aCBjb3Jy ZWN0IG9mZnNldHMgY29ycmVzcG9uZGluZyB0bwo+ICsgKiB0aGUgdGlsZSBvZmZzZXRzIGFuZCBk b2VzIGFuIGF0b21pYyBtb2Rlc2V0IHdpdGggdHdvIENSVENzIGZvciB0d28KPiArICogY29ubmVj dG9ycy4gUGFnZSBmbGlwIGV2ZW50IHRpbWVzdGFtcCBmcm9tIGVhY2ggQ1JUQyBpcyBjb2xsZWN0 ZWQgYW5kCj4gKyAqIGNvbXBhcmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXkgb2NjdXJyZWQgaW4g YSBzeW5jaHJvbm91cyBtYW5uZXIuCj4gKyAqCj4gKyAqIFRoaXMgdGVzdCBjdXJyZW50bHkgc3Vw cG9ydHMgb25seSBob3Jpem9udGFsbHkgdGlsZWQgZGlzcGxheXMsIGluIGxpbmUgd2l0aAo+ICsg KiB0aGUgZGlzcGxheXMgc3VwcG9ydGVkIGJ5IHRoZSBrZXJuZWwgYXQgdGhlIG1vbWVudC4KPiAr ICovCj4gKwo+ICsjaW5jbHVkZSAiaWd0LmgiCj4gKyNpbmNsdWRlICJwb2xsLmgiCj4gKyNpbmNs dWRlICJkcm1fbW9kZS5oIgo+ICsjaW5jbHVkZSAiZHJtX2ZvdXJjYy5oIgo+ICsKPiArSUdUX1RF U1RfREVTQ1JJUFRJT04oIlRlc3QgZm9yIFRyYW5zY29kZXIgUG9ydCBTeW5jIGZvciBEaXNwbGF5 IFBvcnQgVGlsZWQgRGlzcGxheXMiKTsKPiArCj4gK3R5cGVkZWYgc3RydWN0IHsKPiArCWlndF9v dXRwdXRfdCAqb3V0cHV0Owo+ICsJaWd0X3RpbGVfaW5mb190IHRpbGU7Cj4gKwllbnVtIHBpcGUg cGlwZTsKPiArCWRybU1vZGVDb25uZWN0b3JQdHIgY29ubmVjdG9yOwo+ICsJYm9vbCBnb3RfcGFn ZV9mbGlwOwo+ICt9IGRhdGFfY29ubmVjdG9yX3Q7Cj4gKwo+ICt0eXBlZGVmIHN0cnVjdCB7Cj4g KwlpbnQgZHJtX2ZkOwo+ICsJaW50IG51bV9oX3RpbGVzOwo+ICsJaWd0X2ZiX3QgZmJfdGVzdF9w YXR0ZXJuOwo+ICsJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheTsKPiArCWRhdGFfY29ubmVjdG9yX3Qg KmNvbm5zOwo+ICsJZW51bSBpZ3RfY29tbWl0X3N0eWxlIGNvbW1pdDsKPiArfSBkYXRhX3Q7Cj4g Kwo+ICtzdGF0aWMgaW50IGRybV9wcm9wZXJ0eV9pc190aWxlKGRybU1vZGVQcm9wZXJ0eVB0ciBw cm9wKQo+ICt7Cj4gKwlyZXR1cm4gKHN0cmNtcChwcm9wLT5uYW1lLCAiVElMRSIpID8gMCA6IDEp ICYmCj4gKwkJCSBkcm1fcHJvcGVydHlfdHlwZV9pcyhwcm9wLCBEUk1fTU9ERV9QUk9QX0JMT0Ip Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBnZXRfY29ubmVjdG9yX3RpbGVfcHJvcHMoZGF0YV90 ICpkYXRhLCBkcm1Nb2RlQ29ubmVjdG9yUHRyIGNvbm4sCj4gKwkJCQkgICAgIGlndF90aWxlX2lu Zm9fdCAqdGlsZSkKPiArewo+ICsJaW50IGkgPSAwOwo+ICsJZHJtTW9kZVByb3BlcnR5UHRyIHBy b3A7Cj4gKwlkcm1Nb2RlUHJvcGVydHlCbG9iUHRyIGJsb2I7Cj4gKwo+ICsJZm9yIChpID0gMDsg aSA8IGNvbm4tPmNvdW50X3Byb3BzOyBpKyspIHsKPiArCQlwcm9wID0gZHJtTW9kZUdldFByb3Bl cnR5KGRhdGEtPmRybV9mZCwgY29ubi0+cHJvcHNbaV0pOwo+ICsKPiArCQlpZ3RfYXNzZXJ0KHBy b3ApOwo+ICsKPiArCQlpZiAoIWRybV9wcm9wZXJ0eV9pc190aWxlKHByb3ApKSB7Cj4gKwkJCWRy bU1vZGVGcmVlUHJvcGVydHkocHJvcCk7Cj4gKwkJCWNvbnRpbnVlOwo+ICsJCX0KPiArCj4gKwkJ YmxvYiA9IGRybU1vZGVHZXRQcm9wZXJ0eUJsb2IoZGF0YS0+ZHJtX2ZkLAo+ICsJCQkJY29ubi0+ cHJvcF92YWx1ZXNbaV0pOwo+ICsKPiArCQlpZiAoIWJsb2IpCj4gKwkJCWdvdG8gY2xlYW51cDsK PiArCj4gKwkJaWd0X3BhcnNlX2Nvbm5lY3Rvcl90aWxlX2Jsb2IoYmxvYiwgdGlsZSk7Cj4gKwkJ YnJlYWs7Cj4gKwl9Cj4gKwo+ICtjbGVhbnVwOgo+ICsJZHJtTW9kZUZyZWVQcm9wZXJ0eShwcm9w KTsKPiArCWRybU1vZGVGcmVlUHJvcGVydHlCbG9iKGJsb2IpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg dm9pZCBnZXRfbnVtYmVyX29mX2hfdGlsZXMoZGF0YV90ICpkYXRhKQo+ICt7Cj4gKwlpbnQgaTsK PiArCWRybU1vZGVSZXNQdHIgcmVzOwo+ICsJZHJtTW9kZUNvbm5lY3RvclB0ciBjb25uZWN0b3I7 Cj4gKwlpZ3RfdGlsZV9pbmZvX3QgdGlsZSA9IHsubnVtX2hfdGlsZSA9IDB9Owo+ICsKPiArCWln dF9hc3NlcnQocmVzID0gZHJtTW9kZUdldFJlc291cmNlcyhkYXRhLT5kcm1fZmQpKTsKPiArCj4g Kwlmb3IgKGkgPSAwOyBpIDwgcmVzLT5jb3VudF9jb25uZWN0b3JzOyBpKyspIHsKPiArCQljb25u ZWN0b3IgPSBkcm1Nb2RlR2V0Q29ubmVjdG9yQ3VycmVudChkYXRhLT5kcm1fZmQsCj4gKwkJCQly ZXMtPmNvbm5lY3RvcnNbaV0pOwo+ICsKPiArCQlpZ3RfYXNzZXJ0KGNvbm5lY3Rvcik7Cj4gKwo+ ICsJCWlmIChjb25uZWN0b3ItPmNvbm5lY3Rpb24gIT0gRFJNX01PREVfQ09OTkVDVEVEIHx8Cj4g KwkJICAgIGNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgIT0gRFJNX01PREVfQ09OTkVDVE9SX0Rp c3BsYXlQb3J0KSB7Cj4gKwkJCWRybU1vZGVGcmVlQ29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gKwkJ CWNvbnRpbnVlOwo+ICsJCX0KPiArCj4gKwkJZ2V0X2Nvbm5lY3Rvcl90aWxlX3Byb3BzKGRhdGEs IGNvbm5lY3RvciwgJnRpbGUpOwo+ICsJCWRhdGEtPm51bV9oX3RpbGVzID0gdGlsZS5udW1faF90 aWxlOwo+ICsJCWJyZWFrOwo+ICsJfQo+ICsKPiArCWRybU1vZGVGcmVlUmVzb3VyY2VzKHJlcyk7 Cj4gKwlkcm1Nb2RlRnJlZUNvbm5lY3Rvcihjb25uZWN0b3IpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg dm9pZCBnZXRfY29ubmVjdG9ycyhkYXRhX3QgKmRhdGEpCj4gK3sKPiArCWludCBjb3VudCA9IDA7 Cj4gKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKPiArCWRhdGFfY29ubmVjdG9yX3QgKmNvbm5zID0g ZGF0YS0+Y29ubnM7Cj4gKwo+ICsJZm9yX2VhY2hfY29ubmVjdGVkX291dHB1dChkYXRhLT5kaXNw bGF5LCBvdXRwdXQpIHsKPiArCQljb25uc1tjb3VudF0uY29ubmVjdG9yID0gZHJtTW9kZUdldENv bm5lY3RvcihkYXRhLT5kaXNwbGF5LT5kcm1fZmQsCj4gKwkJCQkJCQkgICAgIG91dHB1dC0+aWQp Owo+ICsKPiArCQlpZ3RfYXNzZXJ0KGNvbm5zW2NvdW50XS5jb25uZWN0b3IpOwo+ICsKPiArCQlp ZiAoY29ubnNbY291bnRdLmNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgIT0KPiArCQkgICAgRFJN X01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0KSB7Cj4gKwkJCWRybU1vZGVGcmVlQ29ubmVjdG9y KGNvbm5zW2NvdW50XS5jb25uZWN0b3IpOwo+ICsJCQljb250aW51ZTsKPiArCQl9Cj4gKwo+ICsJ CWdldF9jb25uZWN0b3JfdGlsZV9wcm9wcyhkYXRhLCBjb25uc1tjb3VudF0uY29ubmVjdG9yLAo+ ICsJCQkJCSAmY29ubnNbY291bnRdLnRpbGUpOwo+ICsKPiArCQkvKiBDaGVjayBpZiB0aGUgY29u bmVjdG9ycyBiZWxvbmcgdG8gdGhlIHNhbWUgdGlsZSBncm91cCAqLwo+ICsJCWlmIChjb3VudCA+ IDApCj4gKwkJCWlndF9hc3NlcnQoY29ubnNbY291bnRdLnRpbGUudGlsZV9ncm91cF9pZCA9PQo+ ICsJCQkJICAgY29ubnNbY291bnQtMV0udGlsZS50aWxlX2dyb3VwX2lkKTsKPiArCj4gKwkJY291 bnQrKzsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQKPiArcmVzZXRfcGxhbmUoaWd0X291 dHB1dF90ICpvdXRwdXQpCj4gK3sKPiArCWlndF9wbGFuZV90ICpwcmltYXJ5Owo+ICsKPiArCXBy aW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKG91dHB1dCwgRFJNX1BMQU5FX1RZUEVf UFJJTUFSWSk7Cj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksIE5VTEwpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCByZXNldF9vdXRwdXQoaWd0X291dHB1dF90ICpvdXRwdXQpCj4gK3sKPiAr CWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBQSVBFX05PTkUpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCByZXNldF9tb2RlKGRhdGFfdCAqZGF0YSkKPiArewo+ICsJaW50IGNvdW50Owo+ICsJ aWd0X291dHB1dF90ICpvdXRwdXQ7Cj4gKwlkYXRhX2Nvbm5lY3Rvcl90ICpjb25ucyA9IGRhdGEt PmNvbm5zOwo+ICsKPiArCWZvciAoY291bnQgPSAwOyBjb3VudCA8IGRhdGEtPm51bV9oX3RpbGVz OyBjb3VudCsrKSB7Cj4gKwkJb3V0cHV0ID0gaWd0X291dHB1dF9mcm9tX2Nvbm5lY3RvcihkYXRh LT5kaXNwbGF5LAo+ICsJCQkJCQkgICBjb25uc1tjb3VudF0uY29ubmVjdG9yKTsKPiArCQlpZ3Rf b3V0cHV0X3NldF9waXBlKG91dHB1dCwgUElQRV9OT05FKTsKPiArCX0KPiArCWlndF9kaXNwbGF5 X2NvbW1pdDIoZGF0YS0+ZGlzcGxheSwgZGF0YS0+Y29tbWl0KTsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgdGVzdF9jbGVhbnVwKGRhdGFfdCAqZGF0YSkKPiArewo+ICsJaW50IGNvdW50Owo+ICsJ ZGF0YV9jb25uZWN0b3JfdCAqY29ubnMgPSBkYXRhLT5jb25uczsKPiArCj4gKwlmb3IgKGNvdW50 ID0gMDsgY291bnQgPCBkYXRhLT5udW1faF90aWxlczsgY291bnQrKykgewo+ICsJCWlmIChjb25u c1tjb3VudF0ub3V0cHV0KSB7Cj4gKwkJCXJlc2V0X3BsYW5lKGNvbm5zW2NvdW50XS5vdXRwdXQp Owo+ICsJCQlyZXNldF9vdXRwdXQoY29ubnNbY291bnRdLm91dHB1dCk7Cj4gKwkJfQo+ICsJfQo+ ICsJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZkYXRhLT5mYl90ZXN0X3BhdHRlcm4pOwo+ ICsJaWd0X2Rpc3BsYXlfY29tbWl0MihkYXRhLT5kaXNwbGF5LCBkYXRhLT5jb21taXQpOwo+ICsJ bWVtc2V0KGNvbm5zLCAwLCBzaXplb2YoZGF0YV9jb25uZWN0b3JfdCkgKiBkYXRhLT5udW1faF90 aWxlcyk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHNldHVwX21vZGUoZGF0YV90ICpkYXRhKQo+ ICt7Cj4gKwlpbnQgY291bnQgPSAwOwo+ICsJZW51bSBwaXBlIHBpcGU7Cj4gKwlpZ3Rfb3V0cHV0 X3QgKm91dHB1dDsKPiArCWRhdGFfY29ubmVjdG9yX3QgKmNvbm5zID0gZGF0YS0+Y29ubnM7Cj4g Kwo+ICsJLyoKPiArCSAqIFRoZSBvdXRwdXQgaXMgc2V0IHRvIFBJUEVfTk9ORSBhbmQgdGhlbiBh c3NpZ25lZCBhIHBpcGUuCj4gKwkgKiBUaGlzIGlzIGRvbmUgdG8gZW5zdXJlIGEgY29tcGxldGUg bW9kZXNldCBvY2N1cmVzIGV2ZXJ5Cj4gKwkgKiB0aW1lIHRoZSB0ZXN0IGlzIHJ1bi4KPiArCSAq Lwo+ICsJcmVzZXRfbW9kZShkYXRhKTsKPiArCj4gKwlmb3IgKGNvdW50ID0gMDsgY291bnQgPCBk YXRhLT5udW1faF90aWxlczsgY291bnQrKykgewo+ICsJCW91dHB1dCA9IGlndF9vdXRwdXRfZnJv bV9jb25uZWN0b3IoZGF0YS0+ZGlzcGxheSwKPiArCQkJCQkJICAgY29ubnNbY291bnRdLmNvbm5l Y3Rvcik7Cj4gKwo+ICsJCWZvcl9lYWNoX3BpcGUoZGF0YS0+ZGlzcGxheSwgcGlwZSkgewo+ICsJ CQlpZiAoY291bnQgPiAwICYmIHBpcGUgPT0gY29ubnNbY291bnQtMV0ucGlwZSkKPiArCQkJCWNv bnRpbnVlOwo+ICsKPiArCQkJaWYgKGlndF9waXBlX2Nvbm5lY3Rvcl92YWxpZChwaXBlLCBvdXRw dXQpKSB7Cj4gKwo+ICsJCQkJY29ubnNbY291bnRdLnBpcGUgPSBwaXBlOwo+ICsJCQkJY29ubnNb Y291bnRdLm91dHB1dCA9IG91dHB1dDsKPiArCj4gKwkJCQlpZ3Rfb3V0cHV0X3NldF9waXBlKGNv bm5zW2NvdW50XS5vdXRwdXQsCj4gKwkJCQkJCSAgICBjb25uc1tjb3VudF0ucGlwZSk7Cj4gKwkJ CQlicmVhazsKPiArCQkJfQo+ICsJCX0KPiArCX0KPiArCWlndF9kaXNwbGF5X2NvbW1pdF9hdG9t aWMoZGF0YS0+ZGlzcGxheSwgRFJNX01PREVfQVRPTUlDX0FMTE9XX01PREVTRVQsCj4gKwkJCQkg IE5VTEwpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBzZXR1cF9mcmFtZWJ1ZmZlcihkYXRhX3Qg KmRhdGEpCj4gK3sKPiArCWludCBjb3VudDsKPiArCWlndF9wbGFuZV90ICpwcmltYXJ5Owo+ICsJ aW50IGZiX2hfc2l6ZSA9IDAsIGZiX3Zfc2l6ZSA9IDA7Cj4gKwlkYXRhX2Nvbm5lY3Rvcl90ICpj b25ucyA9IGRhdGEtPmNvbm5zOwo+ICsKPiArCWZvciAoY291bnQgPSAwOyBjb3VudCA8IGRhdGEt Pm51bV9oX3RpbGVzOyBjb3VudCsrKSB7Cj4gKwo+ICsJCWZiX2hfc2l6ZSArPSBjb25uc1tjb3Vu dF0udGlsZS50aWxlX2hfc2l6ZTsKPiArCQkvKiBXZSBzdXBwb3J0IG9ubHkgaG9yaXpvbnRhbCB0 aWxlcywgc28gdmVydGljYWwgc2l6ZSBpcyBzYW1lCj4gKwkJICogZm9yIGFsbCB0aWxlcyBhbmQg bmVlZHMgdG8gYmUgYXNzaWduZWQgb25seSBvbmNlLgo+ICsJCSAqLwo+ICsJCWlmICghZmJfdl9z aXplKQo+ICsJCQlmYl92X3NpemUgPSBjb25uc1tjb3VudF0udGlsZS50aWxlX3Zfc2l6ZTsKPiAr CX0KPiArCj4gKwlpZ3RfY3JlYXRlX3BhdHRlcm5fZmIoZGF0YS0+ZHJtX2ZkLAo+ICsJCQkgICAg ICBmYl9oX3NpemUsCj4gKwkJCSAgICAgIGZiX3Zfc2l6ZSwKPiArCQkJICAgICAgRFJNX0ZPUk1B VF9YQkdSODg4OCwKPiArCQkJICAgICAgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKPiArCQkJ ICAgICAgJmRhdGEtPmZiX3Rlc3RfcGF0dGVybik7Cj4gKwo+ICsJZm9yIChjb3VudCA9IDA7IGNv dW50IDwgZGF0YS0+bnVtX2hfdGlsZXM7IGNvdW50KyspIHsKPiArCj4gKwkJcHJpbWFyeSA9IGln dF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUoY29ubnNbY291bnRdLm91dHB1dCwKPiArCQkJCQkJICAg IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOwo+ICsKPiArCQlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1h cnksICZkYXRhLT5mYl90ZXN0X3BhdHRlcm4pOwo+ICsKPiArCQlpZ3RfZmJfc2V0X3NpemUoJmRh dGEtPmZiX3Rlc3RfcGF0dGVybiwgcHJpbWFyeSwKPiArCQkJCWNvbm5zW2NvdW50XS50aWxlLnRp bGVfaF9zaXplLAo+ICsJCQkJY29ubnNbY291bnRdLnRpbGUudGlsZV92X3NpemUpOwo+ICsKPiAr CQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkYXRhLT5mYl90ZXN0X3BhdHRlcm4sIHByaW1hcnksCj4g KwkJCQkgICAgKGNvbm5zW2NvdW50XS50aWxlLnRpbGVfaF9zaXplICoKPiArCQkJCSAgICAgY29u bnNbY291bnRdLnRpbGUudGlsZV9oX2xvYyksCj4gKwkJCQkgICAgKGNvbm5zW2NvdW50XS50aWxl LnRpbGVfdl9zaXplICoKPiArCQkJCSAgICAgY29ubnNbY291bnRdLnRpbGUudGlsZV92X2xvYykp Owo+ICsKPiArCQlpZ3RfcGxhbmVfc2V0X3NpemUocHJpbWFyeSwKPiArCQkJCSAgIGNvbm5zW2Nv dW50XS50aWxlLnRpbGVfaF9zaXplLAo+ICsJCQkJICAgY29ubnNbY291bnRdLnRpbGUudGlsZV92 X3NpemUpOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBwYWdlX2ZsaXBfaGFuZGxlcihp bnQgZmQsIHVuc2lnbmVkIGludCBzZXEsCj4gKwkJCSAgICAgIHVuc2lnbmVkIGludCB0dl9zZWMs IHVuc2lnbmVkIGludCB0dl91c2VjLAo+ICsJCQkgICAgICB1bnNpZ25lZCBpbnQgY3J0Y19pZCwg dm9pZCAqX2RhdGEpCj4gK3sKPiArCWRhdGFfdCAqZGF0YSA9IF9kYXRhOwo+ICsJZGF0YV9jb25u ZWN0b3JfdCAqY29ubjsKPiArCWJvb2wgaXNfb25fdGltZSA9IGZhbHNlOwo+ICsJc3RhdGljIHVu c2lnbmVkIGludCBfdHZfc2VjLCBfdHZfdXNlYzsKPiArCWludCBpOwo+ICsKPiArCWlndF9kZWJ1 ZygiUGFnZSBGbGlwIEV2ZW50IHJlY2VpdmVkIGZyb20gQ1JUQzolZCBhdCAldToldVxuIiwgY3J0 Y19pZCwKPiArCQkgIHR2X3NlYywgdHZfdXNlYyk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IGRh dGEtPm51bV9oX3RpbGVzOyBpKyspIHsKPiArCj4gKwkJY29ubiA9ICZkYXRhLT5jb25uc1tpXTsK PiArCQlpZiAoZGF0YS0+ZGlzcGxheS0+cGlwZXNbY29ubi0+cGlwZV0uY3J0Y19pZCA9PSBjcnRj X2lkKSB7Cj4gKwkJCWlndF9hc3NlcnRfZighY29ubi0+Z290X3BhZ2VfZmxpcCwKPiArCQkJCSAg ICAgIkdvdCB0d28gcGFnZS1mbGlwcyBmb3IgQ1JUQyAldVxuIiwKPiArCQkJCSAgICAgY3J0Y19p ZCk7Cj4gKwkJCWNvbm4tPmdvdF9wYWdlX2ZsaXAgPSB0cnVlOwo+ICsKPiArCQkJLyogU2tpcCB0 aGUgZm9sbG93aW5nIGNoZWNrcyBmb3IgdGhlIGZpcnN0IHBhZ2UgZmxpcCBldmVudCAqLwo+ICsJ CQlpZiAoX3R2X3NlYyA9PSAwIHx8IF90dl91c2VjID09IDApIHsKPiArCQkJCV90dl9zZWMgPSB0 dl9zZWM7Cj4gKwkJCQlfdHZfdXNlYyA9IHR2X3VzZWM7Cj4gKwkJCQlyZXR1cm47Cj4gKwkJCX0K PiArCQkJLyoKPiArCQkJICogRm9yIHNlYW1sZXNzIHRlYXItZnJlZSBkaXNwbGF5LCB0aGUgcGFn ZSBmbGlwIGV2ZW50IHRpbWVzdGFtcHMKPiArCQkJICogZnJvbSBhbGwgdGhlIHRpbGVzIHNob3Vs ZCBub3QgZGlmZmVyIGJ5IG1vcmUgdGhhbiAxMHVzLgo+ICsJCQkgKi8KPiArCQkJaXNfb25fdGlt ZSA9IHR2X3NlYyA9PSBfdHZfc2VjICYmIChhYnModHZfdXNlYyAtIF90dl91c2VjKSA8IDEwKTsK PiArCj4gKwkJCWlndF9mYWlsX29uX2YoIWlzX29uX3RpbWUsICJEZWxheWVkIHBhZ2UgZmxpcCBl dmVudCBmcm9tIENSVEM6JWQgYXQgJXU6JXVcbiIsCj4gKwkJCQkgICAgICBjcnRjX2lkLCB0dl9z ZWMsIHR2X3VzZWMpOwo+ICsJCQlyZXR1cm47Cj4gKwkJfQo+ICsJfQo+ICsKPiArCWlndF9hc3Nl cnRfZihmYWxzZSwgIkdvdCBwYWdlLWZsaXAgZXZlbnQgZm9yIHVuZXhwZWN0ZWQgQ1JUQyAldVxu IiwKPiArCQkgICAgIGNydGNfaWQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBnb3RfYWxsX3Bh Z2VfZmxpcHMoZGF0YV90ICpkYXRhKQo+ICt7Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAw OyBpIDwgZGF0YS0+bnVtX2hfdGlsZXM7IGkrKykgewo+ICsJCWlmICghZGF0YS0+Y29ubnNbaV0u Z290X3BhZ2VfZmxpcCkKPiArCQkJcmV0dXJuIGZhbHNlOwo+ICsJfQo+ICsKPiArCXJldHVybiB0 cnVlOwo+ICt9Cj4gKwo+ICtpZ3RfbWFpbgo+ICt7Cj4gKwlpZ3RfZGlzcGxheV90IGRpc3BsYXk7 Cj4gKwlkYXRhX3QgZGF0YSA9IHswfTsKPiArCXN0cnVjdCBwb2xsZmQgcGZkID0gezB9Owo+ICsJ ZHJtRXZlbnRDb250ZXh0IGRybV9ldmVudCA9IHswfTsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWd0 X2ZpeHR1cmUgewo+ICsJCWRhdGEuZHJtX2ZkID0gZHJtX29wZW5fZHJpdmVyX21hc3RlcihEUklW RVJfQU5ZKTsKPiArCj4gKwkJa21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOwo+ICsJCWln dF9kaXNwbGF5X3JlcXVpcmUoJmRpc3BsYXksIGRhdGEuZHJtX2ZkKTsKPiArCQlpZ3RfZGlzcGxh eV9yZXNldCgmZGlzcGxheSk7Cj4gKwo+ICsJCWRhdGEuZGlzcGxheSA9ICZkaXNwbGF5Owo+ICsJ CXBmZC5mZCA9IGRhdGEuZHJtX2ZkOwo+ICsJCXBmZC5ldmVudHMgPSBQT0xMSU47Cj4gKwkJZHJt X2V2ZW50LnZlcnNpb24gPSAzOwo+ICsJCWRybV9ldmVudC5wYWdlX2ZsaXBfaGFuZGxlcjIgPSBw YWdlX2ZsaXBfaGFuZGxlcjsKPiArCQlkYXRhLmNvbW1pdCA9IGRhdGEuZGlzcGxheS0+aXNfYXRv bWljID8gQ09NTUlUX0FUT01JQyA6IENPTU1JVF9MRUdBQ1k7Cj4gKwkJaWd0X3JlcXVpcmUoZGF0 YS5jb21taXQgPT0gQ09NTUlUX0FUT01JQyk7Cj4gKwo+ICsJCWdldF9udW1iZXJfb2ZfaF90aWxl cygmZGF0YSk7Cj4gKwkJaWd0X2RlYnVnKCJOdW1iZXIgb2YgSG9yaXpvbnRhbCBUaWxlczogJWRc biIsIGRhdGEubnVtX2hfdGlsZXMpOwo+ICsJCWlndF9yZXF1aXJlKGRhdGEubnVtX2hfdGlsZXMg PiAwKTsKPiArCQlkYXRhLmNvbm5zID0gY2FsbG9jKGRhdGEubnVtX2hfdGlsZXMsIHNpemVvZihk YXRhX2Nvbm5lY3Rvcl90KSk7Cj4gKwl9Cj4gKwo+ICsJaWd0X3N1YnRlc3QoImJhc2ljLXRlc3Qt cGF0dGVybiIpIHsKClBsZWFzZSBkb2N1bWVudCB0aGlzIHN1YnRlc3Qgd2l0aCBpZ3RfZGVzY3Jp YmUuCgoKLS0gClBldHJpIExhdHZhbGEKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p Z3QtZGV2