From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5126A89781 for ; Fri, 22 Feb 2019 16:14:01 +0000 (UTC) Date: Fri, 22 Feb 2019 18:13:58 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Message-ID: <20190222161358.GR20097@intel.com> References: <20190221144109.28220-1-dhinakaran.pandiyan@intel.com> <20190221144109.28220-7-dhinakaran.pandiyan@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190221144109.28220-7-dhinakaran.pandiyan@intel.com> Subject: Re: [igt-dev] [PATCH i-g-t 6/7] tests/kms_ccs: Generate compressed surfaces with rendercopy 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: Dhinakaran Pandiyan Cc: igt-dev@lists.freedesktop.org, Clinton Taylor List-ID: T24gVGh1LCBGZWIgMjEsIDIwMTkgYXQgMDY6NDE6MDhBTSAtMDgwMCwgRGhpbmFrYXJhbiBQYW5k aXlhbiB3cm90ZToKPiBsaWIvaWd0X2ZiLmMgbm93IGhhcyBjYXBhYmlsaXR5IHRvIG1ha2UgdXNl IG9mIHJlbmRlcmNvcHksIHdoaWNoIG1lYW5zCj4gd2UgZG8gbm90IGhhdmUgdG8gaGFuZHdyaXRl IGNvbXByZXNzZWQgYnVmZmVycy4KPiAKPiBDYzogQ2xpbnRvbiBUYXlsb3IgPGNsaW50b24uYS50 YXlsb3JAaW50ZWwuY29tPgo+IENjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGlu dXguaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IERoaW5ha2FyYW4gUGFuZGl5YW4gPGRoaW5h a2FyYW4ucGFuZGl5YW5AaW50ZWwuY29tPgo+IC0tLQo+ICB0ZXN0cy9rbXNfY2NzLmMgfCAyMDIg KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIDEgZmls ZSBjaGFuZ2VkLCA0OSBpbnNlcnRpb25zKCspLCAxNTMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAt LWdpdCBhL3Rlc3RzL2ttc19jY3MuYyBiL3Rlc3RzL2ttc19jY3MuYwo+IGluZGV4IDQyNTk2YTQ1 Li44Y2JmMTAwZiAxMDA2NDQKPiAtLS0gYS90ZXN0cy9rbXNfY2NzLmMKPiArKysgYi90ZXN0cy9r bXNfY2NzLmMKPiBAQCAtNjAsMTMgKzYwLDE0IEBAIHR5cGVkZWYgc3RydWN0IHsKPiAgCWlndF9w aXBlX2NyY190ICpwaXBlX2NyYzsKPiAgfSBkYXRhX3Q7Cj4gIAo+IC0jZGVmaW5lIFJFRAkJCTB4 MDBmZjAwMDAKPiAtI2RlZmluZSBDT01QUkVTU0VEX1JFRAkJMHgwZmYwMDAwZgo+IC0jZGVmaW5l IEdSRUVOCQkJMHgwMDAwZmYwMAo+IC0jZGVmaW5lIENPTVBSRVNTRURfR1JFRU4JMHgwMDBmZjAw Zgo+IC0KPiAtI2RlZmluZSBDQ1NfVU5DT01QUkVTU0VECTB4MAo+IC0jZGVmaW5lIENDU19DT01Q UkVTU0VECQkweDU1Cj4gK2NvbnN0IHN0cnVjdCB7CgpzdGF0aWMKCj4gKwlkb3VibGUgcjsKPiAr CWRvdWJsZSBnOwo+ICsJZG91YmxlIGI7Cj4gK30gY29sb3JzWzJdID0gewo+ICsJezEuMCwgMC4w LCAwLjB9LAo+ICsJezAuMCwgMS4wLCAwLjB9Cj4gK307Cj4gIAo+ICAvKgo+ICAgKiBMaW1pdCBt YXhpbXVtIHVzZWQgc3ByaXRlIHBsYW5lIHdpZHRoIHNvIHRoaXMgdGVzdCB3aWxsIG5vdCBtaXN0 YWtlbmx5Cj4gQEAgLTE5MiwxMDQgKzE5MywzMiBAQCBzdGF0aWMgYm9vbCBwbGFuZV9oYXNfZm9y bWF0X3dpdGhfY2NzKGRhdGFfdCAqZGF0YSwgaWd0X3BsYW5lX3QgKnBsYW5lLCB1aW50MzJfdAo+ ICAJcmV0dXJuIGZhbHNlOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCByZW5kZXJfZmIoZGF0YV90 ICpkYXRhLCB1aW50MzJfdCBnZW1faGFuZGxlLCB1bnNpZ25lZCBpbnQgc2l6ZSwKPiAtCQkgICAg ICBlbnVtIHRlc3RfZmJfZmxhZ3MgZmJfZmxhZ3MsCj4gLQkJICAgICAgaW50IGhlaWdodCwgdW5z aWduZWQgaW50IHN0cmlkZSkKPiArc3RhdGljIHZvaWQgYWRkZmJfaW5pdChzdHJ1Y3QgaWd0X2Zi ICpmYiwgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKmYpCj4gIHsKPiAtCXVpbnQzMl90ICpwdHI7 Cj4gLQl1bnNpZ25lZCBpbnQgaGFsZl9oZWlnaHQsIGhhbGZfc2l6ZTsKPiAtCXVpbnQzMl90IHVu Y29tcHJlc3NlZF9jb2xvciA9IGRhdGEtPnBsYW5lID8gR1JFRU4gOiBSRUQ7Cj4gLQl1aW50MzJf dCBjb21wcmVzc2VkX2NvbG9yID0KPiAtCQlkYXRhLT5wbGFuZSA/IENPTVBSRVNTRURfR1JFRU4g OiBDT01QUkVTU0VEX1JFRDsKPiAtCXVpbnQzMl90IGJhZF9jb2xvciA9IFJFRDsKPiAgCWludCBp Owo+ICAKPiAtCXB0ciA9IGdlbV9tbWFwX19jcHUoZGF0YS0+ZHJtX2ZkLCBnZW1faGFuZGxlLCAw LCBzaXplLAo+IC0JCQkgICAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7Cj4gKwlmLT53aWR0aCA9 IGZiLT53aWR0aDsKPiArCWYtPmhlaWdodCA9IGZiLT5oZWlnaHQ7Cj4gKwlmLT5waXhlbF9mb3Jt YXQgPSBmYi0+ZHJtX2Zvcm1hdDsKPiArCWYtPmZsYWdzID0gTE9DQUxfRFJNX01PREVfRkJfTU9E SUZJRVJTOwo+ICAKPiAtCWlmIChmYl9mbGFncyAmIEZCX0NPTVBSRVNTRUQpIHsKPiAtCQkvKiBJ biB0aGUgY29tcHJlc3NlZCBjYXNlLCB3ZSB3YW50IHRoZSB0b3AgaGFsZiBvZiB0aGUKPiAtCQkg KiBzdXJmYWNlIHRvIGJlIHVuY29tcHJlc3NlZCBhbmQgdGhlIGJvdHRvbSBoYWxmIHRvIGJlCj4g LQkJICogY29tcHJlc3NlZC4KPiAtCQkgKgo+IC0JCSAqIFdlIG5lZWQgdG8gY3V0IHRoZSBzdXJm YWNlIG9uIGEgQ0NTIGNhY2hlLWxpbmUgYm91bmRhcnksCj4gLQkJICogb3RoZXJ3aXNlLCB3ZSdy ZSBnb2luZyB0byBiZSBpbiB0cm91YmxlIHdoZW4gd2UgdHJ5IHRvCj4gLQkJICogZ2VuZXJhdGUg Q0NTIGRhdGEgZm9yIHRoZSBzdXJmYWNlLiAgQSBjYWNoZSBsaW5lIGluIHRoZQo+IC0JCSAqIEND UyBpcyAxNngxNiBjYWNoZS1saW5lLXBhaXJzIGluIHRoZSBtYWluIHN1cmZhY2UuICAxNgo+IC0J CSAqIGNhY2hlIGxpbmVzIGlzIDY0IHJvd3MgaGlnaC4KPiAtCQkgKi8KPiAtCQloYWxmX2hlaWdo dCA9IEFMSUdOKGhlaWdodCwgMTI4KSAvIDI7Cj4gLQkJaGFsZl9zaXplID0gaGFsZl9oZWlnaHQg KiBzdHJpZGU7Cj4gLQkJZm9yIChpID0gMDsgaSA8IHNpemUgLyA0OyBpKyspIHsKPiAtCQkJaWYg KGkgPCBoYWxmX3NpemUgLyA0KQo+IC0JCQkJcHRyW2ldID0gdW5jb21wcmVzc2VkX2NvbG9yOwo+ IC0JCQllbHNlCj4gLQkJCQlwdHJbaV0gPSBjb21wcmVzc2VkX2NvbG9yOwo+IC0JCX0KPiAtCX0g ZWxzZSB7Cj4gLQkJLyogV2hlbiB3ZSdyZSBkaXNwbGF5aW5nIHRoZSBwcmltYXJ5IHBsYW5lIHVu ZGVybmVhdGggYQo+IC0JCSAqIHNwcml0ZSBwbGFuZSwgY3V0IG91dCBhIDEyOCB4IDEyOCBhcmVh IChsZXNzIHRoYW4gdGhlIHNwcml0ZSkKPiAtCQkgKiBwbGFuZSBzaXplIHdoaWNoIHdlIHBhaW50 IHJlZCwgc28gd2Uga25vdyBlYXNpbHkgaWYgaXQncwo+IC0JCSAqIGJhZC4KPiAtCQkgKi8KPiAt CQlmb3IgKGkgPSAwOyBpIDwgc2l6ZSAvIDQ7IGkrKykgewo+IC0JCQlpZiAoKGZiX2ZsYWdzICYg RkJfSEFTX1BMQU5FKSAmJgo+IC0JCQkgICAgKGkgLyAoc3RyaWRlIC8gNCkpIDwgMTI4ICYmCj4g LQkJCSAgICAoaSAlIChzdHJpZGUgLyA0KSkgPCAxMjgpIHsKPiAtCQkJCXB0cltpXSA9IGJhZF9j b2xvcjsKPiAtCQkJfSBlbHNlIHsKPiAtCQkJCXB0cltpXSA9IHVuY29tcHJlc3NlZF9jb2xvcjsK PiAtCQkJfQo+IC0JCX0KPiArCWZvciAoaSA9IDA7IGkgPCBmYi0+bnVtX3BsYW5lczsgaSsrKSB7 Cj4gKwkJZi0+aGFuZGxlc1tpXSA9IGZiLT5nZW1faGFuZGxlOwo+ICsJCWYtPm1vZGlmaWVyW2ld ID0gZmItPm1vZGlmaWVyOwo+ICsJCWYtPnBpdGNoZXNbaV0gPSBmYi0+c3RyaWRlc1tpXTsKPiAr CQlmLT5vZmZzZXRzW2ldID0gZmItPm9mZnNldHNbaV07Cj4gIAl9Cj4gLQo+IC0JbXVubWFwKHB0 ciwgc2l6ZSk7Cj4gLX0KPiAtCj4gLXN0YXRpYyB1bnNpZ25lZCBpbnQKPiAteV90aWxlX3lfcG9z KHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBzdHJpZGUpCj4gLXsKPiAtCXVuc2ln bmVkIGludCB5X3RpbGVzLCB5Owo+IC0JeV90aWxlcyA9IChvZmZzZXQgLyA0MDk2KSAvIChzdHJp ZGUgLyAxMjgpOwo+IC0JeSA9IHlfdGlsZXMgKiAzMiArICgob2Zmc2V0ICYgMHgxZjApID4+IDQp Owo+IC0JcmV0dXJuIHk7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIHJlbmRlcl9jY3MoZGF0YV90 ICpkYXRhLCB1aW50MzJfdCBnZW1faGFuZGxlLAo+IC0JCSAgICAgICB1aW50MzJfdCBvZmZzZXQs IHVpbnQzMl90IHNpemUsCj4gLQkJICAgICAgIGludCBoZWlnaHQsIHVuc2lnbmVkIGludCBjY3Nf c3RyaWRlKQo+IC17Cj4gLQl1bnNpZ25lZCBpbnQgaGFsZl9oZWlnaHQsIGNjc19oYWxmX2hlaWdo dDsKPiAtCXVpbnQ4X3QgKnB0cjsKPiAtCWludCBpOwo+IC0KPiAtCWhhbGZfaGVpZ2h0ID0gQUxJ R04oaGVpZ2h0LCAxMjgpIC8gMjsKPiAtCWNjc19oYWxmX2hlaWdodCA9IGhhbGZfaGVpZ2h0IC8g MTY7Cj4gLQo+IC0JcHRyID0gZ2VtX21tYXBfX2NwdShkYXRhLT5kcm1fZmQsIGdlbV9oYW5kbGUs IG9mZnNldCwgc2l6ZSwKPiAtCQkJICAgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwo+IC0KPiAt CWZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKPiAtCQlpZiAoeV90aWxlX3lfcG9zKGksIGNj c19zdHJpZGUpIDwgY2NzX2hhbGZfaGVpZ2h0KQo+IC0JCQlwdHJbaV0gPSBDQ1NfVU5DT01QUkVT U0VEOwo+IC0JCWVsc2UKPiAtCQkJcHRyW2ldID0gQ0NTX0NPTVBSRVNTRUQ7Cj4gLQl9Cj4gLQo+ IC0JbXVubWFwKHB0ciwgc2l6ZSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGdlbmVyYXRlX2Zi KGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9mYiAqZmIsCj4gIAkJCWludCB3aWR0aCwgaW50IGhl aWdodCwKPiAgCQkJZW51bSB0ZXN0X2ZiX2ZsYWdzIGZiX2ZsYWdzKQo+ICB7Cj4gLQlzdHJ1Y3Qg bG9jYWxfZHJtX21vZGVfZmJfY21kMiBmID0ge307Cj4gLQl1bnNpZ25lZCBpbnQgc2l6ZVsyXTsK PiArCXN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyIGYgPSB7MH07Cj4gKwl1aW50MzJfdCBmb3JtYXQ7 Cj4gIAl1aW50NjRfdCBtb2RpZmllcjsKPiArCWNhaXJvX3QgKmNyOwo+ICAJaW50IHJldDsKPiAt CXVpbnQzMl90IGNjc19oYW5kbGU7Cj4gLQo+IC0JbWVtc2V0KGZiLCAwLCBzaXplb2YoKmZiKSk7 Cj4gIAo+ICAJLyogVXNlIGVpdGhlciBjb21wcmVzc2VkIG9yIFktdGlsZWQgdG8gdGVzdC4gSG93 ZXZlciwgZ2l2ZW4gdGhlIGxhY2sgb2YKPiAgCSAqIGF2YWlsYWJsZSBiYW5kd2lkdGgsIHdlIHVz ZSBsaW5lYXIgZm9yIHRoZSBwcmltYXJ5IHBsYW5lIHdoZW4KPiBAQCAtMzAzLDc0ICsyMzIsNTIg QEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVfZmIoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2ZiICpm YiwKPiAgCWVsc2UKPiAgCQltb2RpZmllciA9IDA7Cj4gIAo+IC0JZi5mbGFncyA9IExPQ0FMX0RS TV9NT0RFX0ZCX01PRElGSUVSUzsKPiAtCWYud2lkdGggPSB3aWR0aDsKPiAtCWYuaGVpZ2h0ID0g aGVpZ2h0Owo+IC0KPiAgCWlmIChkYXRhLT5mbGFncyAmIFRFU1RfQkFEX1BJWEVMX0ZPUk1BVCkK PiAtCQlmLnBpeGVsX2Zvcm1hdCA9IERSTV9GT1JNQVRfUkdCNTY1Owo+ICsJCWZvcm1hdCA9IERS TV9GT1JNQVRfUkdCNTY1Owo+ICAJZWxzZQo+IC0JCWYucGl4ZWxfZm9ybWF0ID0gRFJNX0ZPUk1B VF9YUkdCODg4ODsKPiArCQlmb3JtYXQgPSBEUk1fRk9STUFUX1hSR0I4ODg4Owo+ICAKPiAtCWYu cGl0Y2hlc1swXSA9IEFMSUdOKHdpZHRoICogNCwgMTI4KTsKPiAtCWYubW9kaWZpZXJbMF0gPSBt b2RpZmllcjsKPiAtCWYub2Zmc2V0c1swXSA9IDA7Cj4gLQlzaXplWzBdID0gZi5waXRjaGVzWzBd ICogQUxJR04oaGVpZ2h0LCAzMik7Cj4gKwlpZ3RfY3JlYXRlX2JvX2Zvcl9mYihkYXRhLT5kcm1f ZmQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgbW9kaWZpZXIsIGZiKTsKCkhtbS4gU28gd2UncmUg YWxsb2NhdGluZyB0aGUgYm8gYmFzZWQgb24gdGhlIG9yaWdpbmFsIHBhcmFtZXRlcnMuIFRoZQpv cmlnaW5hbCBjb2RlIGFsbG9jYXRlcyBiYXNlZCBvbiB0aGUgYWRqdXN0IGF1eCBzdHJpZGUgZm9y CkZCX01JU0FMSUdOX0FVWF9TVFJJREUgYW5kIEZCX1NNQUxMX0FVWF9TVFJJREUuIEJ1dCBzaW5j ZSB0aG9zZSBqdXN0CnJlZHVjZSB0aGUgc3RyaWRlIHRoZXkgY2FuJ3QgZmFpbCBzcHVyaW91c2x5 IHNpbmNlIHRoZSBvcmlnaW5hbCBidWZmZXIKc2l6ZSB3aWxsIGJlIGJpZyBlbm91Z2guCgpTbyBs b29rcyBsaWtlIHRoaXMgc2hvdWxkIHdvcmsganVzdCBmaW5lClJldmlld2VkLWJ5OiBWaWxsZSBT eXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgoKPiArCWlndF9hc3NlcnQo ZmItPmdlbV9oYW5kbGUgPiAwKTsKPiAgCj4gLQlpZiAoZmJfZmxhZ3MgJiBGQl9DT01QUkVTU0VE KSB7Cj4gLQkJLyogRnJvbSB0aGUgU2t5IExha2UgUFJNLCBWb2wgMTIsICJDb2xvciBDb250cm9s IFN1cmZhY2UiOgo+IC0JCSAqCj4gLQkJICogICAgIlRoZSBjb21wcmVzc2lvbiBzdGF0ZSBvZiB0 aGUgY2FjaGUtbGluZSBwYWlyIGlzCj4gLQkJICogICAgc3BlY2lmaWVkIGJ5IDIgYml0cyBpbiB0 aGUgQ0NTLiAgRWFjaCBDQ1MgY2FjaGUtbGluZQo+IC0JCSAqICAgIHJlcHJlc2VudHMgYW4gYXJl YSBvbiB0aGUgbWFpbiBzdXJmYWNlIG9mIDE2eDE2IHNldHMKPiAtCQkgKiAgICBvZiAxMjggYnl0 ZSBZLXRpbGVkIGNhY2hlLWxpbmUtcGFpcnMuIENDUyBpcyBhbHdheXMgWQo+IC0JCSAqICAgIHRp bGVkLiIKPiAtCQkgKgo+IC0JCSAqIEEgImNhY2hlLWxpbmUtcGFpciIgZm9yIGEgWS10aWxlZCBz dXJmYWNlIGlzIHR3bwo+IC0JCSAqIGhvcml6b250YWxseSBhZGphY2VudCBjYWNoZSBsaW5lcy4g IFdoZW4gb3BlcmF0aW5nIGluCj4gLQkJICogYnl0ZXMgYW5kIHJvd3MsIHRoaXMgZ2l2ZXMgdXMg YSBzY2FsZS1kb3duIGZhY3RvciBvZgo+IC0JCSAqIDMyeDE2LiAgU2luY2UgdGhlIG1haW4gc3Vy ZmFjZSBoYXMgYSAzMi1iaXQgZm9ybWF0LCB3ZQo+IC0JCSAqIG5lZWQgdG8gbXVsdGlwbHkgd2lk dGggYnkgNCB0byBnZXQgYnl0ZXMuCj4gLQkJICovCj4gLQkJaW50IGNjc193aWR0aCA9IEFMSUdO KHdpZHRoICogNCwgMzIpIC8gMzI7Cj4gLQkJaW50IGNjc19oZWlnaHQgPSBBTElHTihoZWlnaHQs IDE2KSAvIDE2Owo+IC0JCWludCBjY3NfcGl0Y2hlcyA9IEFMSUdOKGNjc193aWR0aCAqIDEsIDEy OCk7Cj4gLQkJaW50IGNjc19vZmZzZXRzID0gc2l6ZVswXTsKPiArCWFkZGZiX2luaXQoZmIsICZm KTsKPiAgCj4gKwlpZiAoZmJfZmxhZ3MgJiBGQl9DT01QUkVTU0VEKSB7Cj4gIAkJaWYgKGZiX2Zs YWdzICYgRkJfTUlTQUxJR05fQVVYX1NUUklERSkgewo+ICAJCQlpZ3Rfc2tpcF9vbl9mKHdpZHRo IDw9IDEwMjQsCj4gIAkJCQkgICAgICAiRkIgYWxyZWFkeSBoYXMgdGhlIHNtYWxsZXN0IHBvc3Np YmxlIHN0cmlkZVxuIik7Cj4gLQkJCWNjc19waXRjaGVzIC09IDY0Owo+ICsJCQlmLnBpdGNoZXNb MV0gLT0gNjQ7Cj4gIAkJfQo+IC0JCWVsc2UgaWYgKGZiX2ZsYWdzICYgRkJfU01BTExfQVVYX1NU UklERSkgewo+ICsKPiArCQlpZiAoZmJfZmxhZ3MgJiBGQl9TTUFMTF9BVVhfU1RSSURFKSB7Cj4g IAkJCWlndF9za2lwX29uX2Yod2lkdGggPD0gMTAyNCwKPiAgCQkJCSAgICAgICJGQiBhbHJlYWR5 IGhhcyB0aGUgc21hbGxlc3QgcG9zc2libGUgc3RyaWRlXG4iKTsKPiAtCQkJY2NzX3BpdGNoZXMg PSBBTElHTihjY3Nfd2lkdGgvMiwgMTI4KTsKPiArCQkJZi5waXRjaGVzWzFdID0gQUxJR04oZi5w aXRjaGVzWzFdLzIsIDEyOCk7Cj4gIAkJfQo+ICAKPiAtCQlzaXplWzFdID0gY2NzX3BpdGNoZXMg KiBBTElHTihjY3NfaGVpZ2h0LCAzMik7Cj4gLQo+IC0JCWYuaGFuZGxlc1swXSA9IGdlbV9jcmVh dGUoZGF0YS0+ZHJtX2ZkLCBzaXplWzBdICsgc2l6ZVsxXSk7Cj4gLQkJaWYgKGRhdGEtPmZsYWdz ICYgVEVTVF9CQURfQ0NTX0hBTkRMRSkgewo+IC0JCQkvKiBQdXQgdGhlIENDUyBidWZmZXIgb24g YSBkaWZmZXJlbnQgQk8uICovCj4gLQkJCWNjc19oYW5kbGUgPSBnZW1fY3JlYXRlKGRhdGEtPmRy bV9mZCwgc2l6ZVswXSArIHNpemVbMV0pOwo+IC0JCX0gZWxzZQo+IC0JCQljY3NfaGFuZGxlID0g Zi5oYW5kbGVzWzBdOwo+ICsJCWlmIChmYl9mbGFncyAmIEZCX1pFUk9fQVVYX1NUUklERSkKPiAr CQkJZi5waXRjaGVzWzFdID0gMDsKPiAgCj4gLQkJaWYgKCEoZGF0YS0+ZmxhZ3MgJiBURVNUX05P X0FVWF9CVUZGRVIpKSB7Cj4gLQkJCWYubW9kaWZpZXJbMV0gPSBtb2RpZmllcjsKPiAtCQkJZi5o YW5kbGVzWzFdID0gY2NzX2hhbmRsZTsKPiAtCQkJZi5vZmZzZXRzWzFdID0gY2NzX29mZnNldHM7 Cj4gLQkJCWYucGl0Y2hlc1sxXSA9IChmYl9mbGFncyAmIEZCX1pFUk9fQVVYX1NUUklERSk/IDA6 Y2NzX3BpdGNoZXM7Cj4gKwkJLyogUHV0IHRoZSBDQ1MgYnVmZmVyIG9uIGEgZGlmZmVyZW50IEJP LiAqLwo+ICsJCWlmIChkYXRhLT5mbGFncyAmIFRFU1RfQkFEX0NDU19IQU5ETEUpCj4gKwkJCWYu aGFuZGxlc1sxXSA9IGdlbV9jcmVhdGUoZGF0YS0+ZHJtX2ZkLCBmYi0+c2l6ZSk7Cj4gIAo+IC0J CQlyZW5kZXJfY2NzKGRhdGEsIGYuaGFuZGxlc1sxXSwgZi5vZmZzZXRzWzFdLCBzaXplWzFdLAo+ IC0JCQkJICAgaGVpZ2h0LCBjY3NfcGl0Y2hlcyk7Cj4gKwkJaWYgKGRhdGEtPmZsYWdzICYgVEVT VF9OT19BVVhfQlVGRkVSKSB7Cj4gKwkJCWYuaGFuZGxlc1sxXSA9IDA7Cj4gKwkJCWYubW9kaWZp ZXJbMV0gPSAwOwo+ICsJCQlmLnBpdGNoZXNbMV0gPSAwOwo+ICsJCQlmLm9mZnNldHNbMV0gPSAw Owo+ICAJCX0KPiAtCX0gZWxzZSB7Cj4gLQkJZi5oYW5kbGVzWzBdID0gZ2VtX2NyZWF0ZShkYXRh LT5kcm1fZmQsIHNpemVbMF0pOwo+ICAJfQo+ICAKPiAtCXJlbmRlcl9mYihkYXRhLCBmLmhhbmRs ZXNbMF0sIHNpemVbMF0sIGZiX2ZsYWdzLCBoZWlnaHQsIGYucGl0Y2hlc1swXSk7Cj4gKwlpZiAo IShkYXRhLT5mbGFncyAmIFRFU1RfQkFEX1BJWEVMX0ZPUk1BVCkpIHsKPiArCQlpbnQgYyA9ICEh ZGF0YS0+cGxhbmU7Cj4gKwo+ICsJCWNyID0gaWd0X2dldF9jYWlyb19jdHgoZGF0YS0+ZHJtX2Zk LCBmYik7Cj4gKwkJaWd0X3BhaW50X2NvbG9yKGNyLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LAo+ICsJ CQkJY29sb3JzW2NdLnIsIGNvbG9yc1tjXS5nLCBjb2xvcnNbY10uYik7Cj4gKwkJaWd0X3B1dF9j YWlyb19jdHgoZGF0YS0+ZHJtX2ZkLCBmYiwgY3IpOwo+ICsJfQo+ICAKPiAgCXJldCA9IGRybUlv Y3RsKGRhdGEtPmRybV9mZCwgTE9DQUxfRFJNX0lPQ1RMX01PREVfQURERkIyLCAmZik7Cj4gIAlp ZiAoZGF0YS0+ZmxhZ3MgJiBURVNUX0ZBSUxfT05fQURERkIyKSB7Cj4gQEAgLTM4MSwxNyArMjg4 LDYgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVfZmIoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2Zi ICpmYiwKPiAgCQlpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7Cj4gIAo+ICAJZmItPmZiX2lkID0gZi5m Yl9pZDsKPiAtCWZiLT5mZCA9IGRhdGEtPmRybV9mZDsKPiAtCWZiLT5nZW1faGFuZGxlID0gZi5o YW5kbGVzWzBdOwo+IC0JZmItPmlzX2R1bWIgPSBmYWxzZTsKPiAtCWZiLT5kcm1fZm9ybWF0ID0g Zi5waXhlbF9mb3JtYXQ7Cj4gLQlmYi0+d2lkdGggPSBmLndpZHRoOwo+IC0JZmItPmhlaWdodCA9 IGYuaGVpZ2h0Owo+IC0JZmItPnN0cmlkZXNbMF0gPSBmLnBpdGNoZXNbMF07Cj4gLQlmYi0+bW9k aWZpZXIgPSBmLm1vZGlmaWVyWzBdOwo+IC0JZmItPnNpemUgPSBzaXplWzBdOwo+IC0JZmItPmNh aXJvX3N1cmZhY2UgPSBOVUxMOwo+IC0JZmItPmRvbWFpbiA9IDA7Cj4gIH0KPiAgCj4gIHN0YXRp YyBib29sIHRyeV9jb25maWcoZGF0YV90ICpkYXRhLCBlbnVtIHRlc3RfZmJfZmxhZ3MgZmJfZmxh Z3MsCj4gLS0gCj4gMi4xNy4xCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0 CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==