From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH] drm/i915: Beef up the IPS vs. CRC workaround Date: Wed, 21 Dec 2016 15:04:43 -0200 Message-ID: <1482339883.2641.54.camel@intel.com> References: <20161221093105.19120-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 252E76E0A9 for ; Wed, 21 Dec 2016 17:04:50 +0000 (UTC) In-Reply-To: <20161221093105.19120-1-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: ville.syrjala@linux.intel.com, intel-gfx@lists.freedesktop.org Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org RW0gUXVhLCAyMDE2LTEyLTIxIMOgcyAxMTozMSArMDIwMCwgdmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20KZXNjcmV2ZXU6Cj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxh QGxpbnV4LmludGVsLmNvbT4KPiAKPiBPbmVzaG90IGRpc2FibGluZyBvZiBJUFMgd2hlbiBDUkMg Y2FwdHVyaW5nIGlzIHN0YXJ0ZWQgaXMKPiBpbnN1ZmZpY2llbnQuCj4gSVBTIG1heSBnZXQgcmUt ZW5hYmxlZCBieSBhbnkgcGxhbmUgdXBkYXRlLCBhbmQgaGVuY2UgdGVzdHMgdGhhdCBrZWVwCj4g Q1JDIGNhcHR1cmluZyBvbiBhY3Jvc3MgcGxhbmUgdXBkYXRlcyB3aWxsIHN0YXJ0IHRvIHNlZSBp bmNvbnNpc3RlbnQKPiByZXN1bHRzIGFzIHNvb24gYXMgSVBTIGtpY2tzIGJhY2sgaW4uIEFkZCBh IG5ldyBrbm9iIGludG8gdGhlIGNydGMKPiBzdGF0ZQo+IHRvIG1ha2Ugc3VyZSBJUFMgc3RheXMg ZGlzYWJsZWQgYXMgbG9uZyBhcyBDUkMgY2FwdHVyaW5nIGlzIGVuYWJsZWQuCj4KPiBGb3JjaW5n IGEgbW9kZXNldCBpcyB0aGUgZWFzaWVzdCB3YXkgdG8gaGFuZGxlIHRoaXMgc2luY2UgdGhhdCdz Cj4gYWxyZWFkeQo+IGhvdyB3ZSBkbyB0aGUgcGFuZWwgZml0dGVyIHdvcmthcm91bmQuIEl0J3Mg YSBsaXR0bGUgaGVhdnkgaGFuZGVkCj4ganVzdAo+IGZvciBJUFMsIGJ1dCBzZWVpbmcgYXMgd2Ug bWlnaHQgYWxyZWFkeSBkbyB0aGUgcGFuZWwgZml0dGVyCj4gd29ya2Fyb3VuZAo+IEkgdGhpbmsg aXQncyBiZXR0ZXIgdG8gZm9sbG93IHRoYXQuIFdlIG1pZ3RoIHdhbnQgdG8gb3B0aW1pemUgYm90 aAo+IGNhc2VzCj4gbGF0ZXIgaWYgc29tZW9uZSBnZXRzIHRvbyB1cHNldCBieSB0aGUgZXh0cmEg ZGVsYXkgZnJvbSB0aGUgbW9kZXNldC4KPiAKClBsZWFzZSBhZGQgYSAiVGVzdGNhc2U6IiB0YWcg bGlzdGluZyB0aGUgSUdUcyB0aGlzIHBhdGNoIHVuYnJlYWtzLgpNYXliZSBhbHNvICJCdWd6aWxs YToiIGlmIHRoZXJlJ3MgYW55LgoKCj4gQ2M6IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlA aW50ZWwuY29tPgo+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+ IFNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRl bC5jb20+Cj4gLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmPCoMKg fMKgwqA1ICsrKy0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5owqDCoMKgwqDC oMKgfMKgwqAxICsKPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BpcGVfY3JjLmMgfCA0 MyArKysrKysrKysrKysrKysrKysrLS0tLQo+IC0tLS0tLS0tLS0tLQo+IMKgMyBmaWxlcyBjaGFu Z2VkLCAyOCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCBlZjVkZGU1YWIxY2YuLjFjZTQ3OTYxNGY1MiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtNzE4OSw2ICs3MTg5 LDcgQEAgc3RhdGljIHZvaWQgaHN3X2NvbXB1dGVfaXBzX2NvbmZpZyhzdHJ1Y3QKPiBpbnRlbF9j cnRjICpjcnRjLAo+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZGV2KTsKPiDCoAo+IMKgCXBpcGVfY29uZmlnLT5pcHNfZW5hYmxlZCA9IGk5MTUuZW5hYmxl X2lwcyAmJgo+ICsJCSFwaXBlX2NvbmZpZy0+aXBzX2ZvcmNlX2Rpc2FibGUgJiYKPiDCoAkJaHN3 X2NydGNfc3VwcG9ydHNfaXBzKGNydGMpICYmCj4gwqAJCXBpcGVfY29uZmlnX3N1cHBvcnRzX2lw cyhkZXZfcHJpdiwgcGlwZV9jb25maWcpOwo+IMKgfQo+IEBAIC0xMjk1OCw3ICsxMjk1OSw3IEBA IGNsZWFyX2ludGVsX2NydGNfc3RhdGUoc3RydWN0Cj4gaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSkKPiDCoAlzdHJ1Y3QgaW50ZWxfY3J0Y19zY2FsZXJfc3RhdGUgc2NhbGVyX3N0YXRlOwo+ IMKgCXN0cnVjdCBpbnRlbF9kcGxsX2h3X3N0YXRlIGRwbGxfaHdfc3RhdGU7Cj4gwqAJc3RydWN0 IGludGVsX3NoYXJlZF9kcGxsICpzaGFyZWRfZHBsbDsKPiAtCWJvb2wgZm9yY2VfdGhydTsKPiAr CWJvb2wgZm9yY2VfdGhydSwgaXBzX2ZvcmNlX2Rpc2FibGU7Cj4gwqAKPiDCoAkvKiBGSVhNRTog YmVmb3JlIHRoZSBzd2l0Y2ggdG8gYXRvbWljIHN0YXJ0ZWQsIGEgbmV3Cj4gcGlwZV9jb25maWcg d2FzCj4gwqAJwqAqIGt6YWxsb2MnZC4gQ29kZSB0aGF0IGRlcGVuZHMgb24gYW55IGZpZWxkIGJl aW5nIHplcm8KPiBzaG91bGQgYmUKPiBAQCAtMTI5NzAsNiArMTI5NzEsNyBAQCBjbGVhcl9pbnRl bF9jcnRjX3N0YXRlKHN0cnVjdAo+IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gwqAJ c2hhcmVkX2RwbGwgPSBjcnRjX3N0YXRlLT5zaGFyZWRfZHBsbDsKPiDCoAlkcGxsX2h3X3N0YXRl ID0gY3J0Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZTsKPiDCoAlmb3JjZV90aHJ1ID0gY3J0Y19zdGF0 ZS0+cGNoX3BmaXQuZm9yY2VfdGhydTsKPiArCWlwc19mb3JjZV9kaXNhYmxlID0gY3J0Y19zdGF0 ZS0+aXBzX2ZvcmNlX2Rpc2FibGU7Cj4gwqAKPiDCoAltZW1zZXQoY3J0Y19zdGF0ZSwgMCwgc2l6 ZW9mICpjcnRjX3N0YXRlKTsKPiDCoAo+IEBAIC0xMjk3OCw2ICsxMjk4MCw3IEBAIGNsZWFyX2lu dGVsX2NydGNfc3RhdGUoc3RydWN0Cj4gaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiDC oAljcnRjX3N0YXRlLT5zaGFyZWRfZHBsbCA9IHNoYXJlZF9kcGxsOwo+IMKgCWNydGNfc3RhdGUt PmRwbGxfaHdfc3RhdGUgPSBkcGxsX2h3X3N0YXRlOwo+IMKgCWNydGNfc3RhdGUtPnBjaF9wZml0 LmZvcmNlX3RocnUgPSBmb3JjZV90aHJ1Owo+ICsJY3J0Y19zdGF0ZS0+aXBzX2ZvcmNlX2Rpc2Fi bGUgPSBpcHNfZm9yY2VfZGlzYWJsZTsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCAwMjVlNGM4YjNlNjMuLmNhZGJhOWI5MmNjOSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTY1MSw2ICs2NTEsNyBAQCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSB7Cj4gwqAJc3RydWN0IGludGVsX2xpbmtfbV9uIGZkaV9tX247 Cj4gwqAKPiDCoAlib29sIGlwc19lbmFibGVkOwo+ICsJYm9vbCBpcHNfZm9yY2VfZGlzYWJsZTsK PiDCoAo+IMKgCWJvb2wgZW5hYmxlX2ZiYzsKPiDCoAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9waXBlX2NyYy5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9waXBlX2NyYy5jCj4gaW5kZXggZWYwYzBlMTk1MTY0Li43MDhjZjFkNDE5ZDQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGlwZV9jcmMuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BpcGVfY3JjLmMKPiBAQCAtNTQ3LDggKzU0Nyw4IEBAIHN0 YXRpYyBpbnQgaWxrX3BpcGVfY3JjX2N0bF9yZWcoZW51bQo+IGludGVsX3BpcGVfY3JjX3NvdXJj ZSAqc291cmNlLAo+IMKgCXJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyB2b2lkIGhzd190 cmFuc19lZHBfcGlwZV9BX2NyY193YShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ICpkZXZfcHJp diwKPiAtCQkJCQlib29sIGVuYWJsZSkKPiArc3RhdGljIHZvaWQgaHN3X3BpcGVfQV9jcmNfd2Eo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQnCoMKgwqDCoMKgwqBib29s IGVuYWJsZSkKCk5vdyB3ZSBhcHBseSBtb3JlIHRoYW4gb25lIFdBLiBTbyBtYXliZTogaHN3X3Bp cGVfYV9jcmNfd29ya2Fyb3VuZHMoKQpvciBqdXN0IGhzd19waXBlX2NyY193b3JrYXJvdW5kcygp IChvciBhcHBseV93b3JrYXJvdW5kcykuIEp1c3QgIndhcyIKaXMgY29uZnVzaW5nIHNpbmNlIGl0 IGxvb2tzIGxpa2UgYSB2ZXJiIGlzIG1pc3NpbmcuIEFsc28sIHRoYXQgY2FwaXRhbApBIGlzIG5v dCBleGFjdGx5IGZvbGxvd2luZyBvdXIgY29kaW5nIHN0eWxlLgoKCj4gwqB7Cj4gwqAJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOwo+IMKgCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjID0gaW50ZWxfZ2V0X2NydGNfZm9yX3BpcGUoZGV2X3ByaXYsCj4gUElQRV9BKTsKPiBA QCAtNTcwLDExICs1NzAsMjMgQEAgc3RhdGljIHZvaWQgaHN3X3RyYW5zX2VkcF9waXBlX0FfY3Jj X3dhKHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgCQlnb3RvIG91dDsK PiDCoAl9Cj4gwqAKPiAtCXBpcGVfY29uZmlnLT5wY2hfcGZpdC5mb3JjZV90aHJ1ID0gZW5hYmxl Owo+IC0JaWYgKHBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCAm Jgo+IC0JwqDCoMKgwqBwaXBlX2NvbmZpZy0+cGNoX3BmaXQuZW5hYmxlZCAhPSBlbmFibGUpCj4g KwkvKgo+ICsJwqAqIFdoZW4gSVBTIGdldHMgZW5hYmxlZCwgdGhlIHBpcGUgQ1JDIGNoYW5nZXMu IFNpbmNlIElQUwo+IGdldHMKPiArCcKgKiBlbmFibGVkIGFuZCBkaXNhYmxlZCBkeW5hbWljYWxs eSBiYXNlZCBvbiBwYWNrYWdlIEMKPiBzdGF0ZXMsCj4gKwnCoCogdXNlciBzcGFjZSBjYW4ndCBt YWtlIHJlbGlhYmxlIHVzZSBvZiB0aGUgQ1JDcywgc28gbGV0J3MKPiBqdXN0Cj4gKwnCoCogY29t cGxldGVseSBkaXNhYmxlIGl0Lgo+ICsJwqAqLwo+ICsJcGlwZV9jb25maWctPmlwc19mb3JjZV9k aXNhYmxlID0gZW5hYmxlOwo+ICsJaWYgKHBpcGVfY29uZmlnLT5pcHNfZm9yY2VfZGlzYWJsZSAh PSBlbmFibGUpCgpUaGUgZml4IG1lbnRpb25lZCBpbiB5b3VyIG90aGVyIGVtYWlsIG1ha2VzIHNl bnNlLCBidXQgSSBmaW5kIGl0IGVhc2llcgp0byByZWFkICJpZiAocGlwZV9jb25maWctPmlwc19l bmFibGUgPT0gcGlwZV9jb25maWctCj5pcHNfZm9yY2VfZGlzYWJsZSkiLgoKPiDCoAkJcGlwZV9j b25maWctPmJhc2UuY29ubmVjdG9yc19jaGFuZ2VkID0gdHJ1ZTsKPiDCoAo+ICsJaWYgKElTX0hB U1dFTEwoZGV2X3ByaXYpKSB7Cj4gKwkJcGlwZV9jb25maWctPnBjaF9wZml0LmZvcmNlX3RocnUg PSBlbmFibGU7Cj4gKwkJaWYgKHBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NP REVSX0VEUCAmJgo+ICsJCcKgwqDCoMKgcGlwZV9jb25maWctPnBjaF9wZml0LmVuYWJsZWQgIT0g ZW5hYmxlKQo+ICsJCQlwaXBlX2NvbmZpZy0+YmFzZS5jb25uZWN0b3JzX2NoYW5nZWQgPSB0cnVl Owo+ICsJfQo+ICsKPiDCoAlyZXQgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7Cj4gwqBvdXQ6 Cj4gwqAJV0FSTihyZXQsICJUb2dnbGluZyB3b3JrYXJvdW5kIHRvICVpIHJldHVybnMgJWlcbiIs IGVuYWJsZSwKPiByZXQpOwo+IEBAIC01OTgsOCArNjEwLDkgQEAgc3RhdGljIGludCBpdmJfcGlw ZV9jcmNfY3RsX3JlZyhzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAkJ KnZhbCA9IFBJUEVfQ1JDX0VOQUJMRSB8IFBJUEVfQ1JDX1NPVVJDRV9TUFJJVEVfSVZCOwo+IMKg CQlicmVhazsKPiDCoAljYXNlIElOVEVMX1BJUEVfQ1JDX1NPVVJDRV9QRjoKPiAtCQlpZiAoSVNf SEFTV0VMTChkZXZfcHJpdikgJiYgcGlwZSA9PSBQSVBFX0EpCj4gLQkJCWhzd190cmFuc19lZHBf cGlwZV9BX2NyY193YShkZXZfcHJpdiwgdHJ1ZSk7Cj4gKwkJaWYgKChJU19IQVNXRUxMKGRldl9w cml2KSB8fAo+ICsJCcKgwqDCoMKgwqBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSAmJiBwaXBlID09 IFBJUEVfQSkKPiArCQkJaHN3X3BpcGVfQV9jcmNfd2EoZGV2X3ByaXYsIHRydWUpOwoKSSBrbm93 IHRoaXMgcHJvYmxlbSBpcyBub3QgY2F1c2VkIGJ5IHlvdXIgcGF0Y2gsIGJ1dCBpbiBjYXNlIHlv dSB3YW50OgpJIHdvbmRlciBpZiB0aGVyZSdzIGEgYmV0dGVyIHBsYWNlIHRvIGNhbGwgdGhpcy4g TWF5YmUgb3V0c2lkZSB0aGlzCmZ1bmN0aW9uLiBDYWxsaW5nIGl0IGhlcmUgc291bmRzIGxpa2Ug YW4gdW5yZWxhdGVkIHNpZGUtZWZmZWN0IG9mIGEKZnVuY3Rpb24gdGhhdCdzIHN1cHBvc2VkIHRv IGp1c3QgcmV0dXJuIGEgdmFsdWUgZm9yIGEgcmVnaXN0ZXIuCgoKPiDCoAo+IMKgCQkqdmFsID0g UElQRV9DUkNfRU5BQkxFIHwgUElQRV9DUkNfU09VUkNFX1BGX0lWQjsKPiDCoAkJYnJlYWs7Cj4g QEAgLTYxOCw3ICs2MzEsNiBAQCBzdGF0aWMgaW50IHBpcGVfY3JjX3NldF9zb3VyY2Uoc3RydWN0 Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAJCQnCoMKgwqDCoMKgwqDCoGVudW0g aW50ZWxfcGlwZV9jcmNfc291cmNlIHNvdXJjZSkKPiDCoHsKPiDCoAlzdHJ1Y3QgaW50ZWxfcGlw ZV9jcmMgKnBpcGVfY3JjID0gJmRldl9wcml2LT5waXBlX2NyY1twaXBlXTsKPiAtCXN0cnVjdCBp bnRlbF9jcnRjICpjcnRjID0gaW50ZWxfZ2V0X2NydGNfZm9yX3BpcGUoZGV2X3ByaXYsCj4gcGlw ZSk7Cj4gwqAJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47Cj4g wqAJdTMyIHZhbCA9IDA7IC8qIHNodXQgdXAgZ2NjICovCj4gwqAJaW50IHJldDsKPiBAQCAtNjY1 LDE0ICs2NzcsNiBAQCBzdGF0aWMgaW50IHBpcGVfY3JjX3NldF9zb3VyY2Uoc3RydWN0Cj4gZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAJCQlnb3RvIG91dDsKPiDCoAkJfQo+IMKgCj4g LQkJLyoKPiAtCQnCoCogV2hlbiBJUFMgZ2V0cyBlbmFibGVkLCB0aGUgcGlwZSBDUkMgY2hhbmdl cy4KPiBTaW5jZSBJUFMgZ2V0cwo+IC0JCcKgKiBlbmFibGVkIGFuZCBkaXNhYmxlZCBkeW5hbWlj YWxseSBiYXNlZCBvbiBwYWNrYWdlCj4gQyBzdGF0ZXMsCj4gLQkJwqAqIHVzZXIgc3BhY2UgY2Fu J3QgbWFrZSByZWxpYWJsZSB1c2Ugb2YgdGhlIENSQ3MsCj4gc28gbGV0J3MganVzdAo+IC0JCcKg KiBjb21wbGV0ZWx5IGRpc2FibGUgaXQuCj4gLQkJwqAqLwo+IC0JCWhzd19kaXNhYmxlX2lwcyhj cnRjKTsKPiAtCj4gwqAJCXNwaW5fbG9ja19pcnEoJnBpcGVfY3JjLT5sb2NrKTsKPiDCoAkJa2Zy ZWUocGlwZV9jcmMtPmVudHJpZXMpOwo+IMKgCQlwaXBlX2NyYy0+ZW50cmllcyA9IGVudHJpZXM7 Cj4gQEAgLTcxMywxMCArNzE3LDkgQEAgc3RhdGljIGludCBwaXBlX2NyY19zZXRfc291cmNlKHN0 cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgCQkJZzR4X3VuZG9fcGlwZV9z Y3JhbWJsZV9yZXNldChkZXZfcHJpdiwKPiBwaXBlKTsKPiDCoAkJZWxzZSBpZiAoSVNfVkFMTEVZ VklFVyhkZXZfcHJpdikgfHwKPiBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiDCoAkJCXZsdl91 bmRvX3BpcGVfc2NyYW1ibGVfcmVzZXQoZGV2X3ByaXYsCj4gcGlwZSk7Cj4gLQkJZWxzZSBpZiAo SVNfSEFTV0VMTChkZXZfcHJpdikgJiYgcGlwZSA9PSBQSVBFX0EpCj4gLQkJCWhzd190cmFuc19l ZHBfcGlwZV9BX2NyY193YShkZXZfcHJpdiwKPiBmYWxzZSk7Cj4gLQo+IC0JCWhzd19lbmFibGVf aXBzKGNydGMpOwo+ICsJCWVsc2UgaWYgKChJU19IQVNXRUxMKGRldl9wcml2KSB8fAo+ICsJCQnC oMKgSVNfQlJPQURXRUxMKGRldl9wcml2KSkgJiYgcGlwZSA9PSBQSVBFX0EpCgpNb3ZpbmcgdGhl IGdlbitwaXBlIGNoZWNrcyB0byBpbnNpZGUgdGhlIGZ1bmN0aW9uIHdvdWxkIGRlZHVwbGljYXRl CnRoZW0gYW5kLCBJTUhPLCBtYWtlIHRoZSBjb2RlIHNsaWdodGx5IGVhc2llciB0byByZWFkLgoK Tm93IGhlcmUncyBhIHF1ZXN0aW9uIHRoYXQgbWF5YmUgSSBuZXZlciBhc2tlZCBteXNlbGYgYmVm b3JlOiBpZiB3ZQpoYXZlIHR3byBwaXBlcyBlbmFibGVkIChBIGFuZCBCKSwgYW5kIG91ciBzeXN0 ZW0gaXMgcHJvcGVybHkgY29uZmlndXJlZApmb3IgcG93ZXIgbWFuYWdlbWVudCBzbyB3ZSdyZSBy ZWFjaGluZyB0aGUgZGVlcCBQQyBzdGF0ZXMgKGRlcGVuZGluZyBvbgp5b3VyIG1hY2hpbmUsIGFs bCB5b3UgbmVlZCB0byBkbyBpcyB0byBydW4gcG93ZXJ0b3AgLS1hdXRvLXR1bmUpLCBkb2VzCnBp cGUgQiBhbHNvIGNoYW5nZSBpdHMgQ1JDcyB3aGVuIElQUyBpcyBlbmFibGVkIG9uIHBpcGUgQT8g VGhlIHJlYXNvbiBJCmFzayB0aGlzIGlzIGJlY2F1c2UgSVBTIGVuYWJsZXMgZGVlcGVyIFBDIHN0 YXRlcywgYnV0IG1heWJlIGl0J3MgdGhlCmRlZXBlciBQQyBzdGF0ZXMgdGhhdCBjYXVzZXMgZGlm ZmVyZW50IENSQyBjYWxjdWxhdGlvbiwgbm90IElQUywgYW5kCnRoZW4gdGhpcyB3b3VsZCBhbHNv IGFmZmVjdCB0aGUgQ1JDcyBmb3Igbm9uLUlQUyBwaXBlcyAoQUtBIHBpcGUgQikuIEl0CndvdWxk IGJlIGdyZWF0IGlmIHlvdSBjb3VsZCBjaGVjayB0aGlzLCBiZWNhdXNlIEkgZG9uJ3QgcmVhbGx5 IHJlbWVtYmVyCmlmIEkgY2hlY2tlZCBmb3IgdGhpcyB3aGVuIEkgd3JvdGUgdGhpcyBjb2RlLiBP ZiBjb3Vyc2UsIHRoZSBmaXggZm9yCnRoaXMgd291bGQgYmUgYSBzZXBhcmF0ZSBwYXRjaCBzaW5j ZSBpdCdzIG5vdCB0aGUgcHJvYmxlbSB5b3UncmUKdG91Y2hpbmcgaGVyZS4gQnV0IHRoZW4sIG1h eWJlIHdlIGNvdWxkIGRvIHNvbWV0aGluZyBlbHNlIHRvIHByZXZlbnQKZGVlcCBQQyBzdGF0ZXMg aW5zdGVhZCBvZiBkaXNhYmxpbmcgSVBTLgoKTW9zdCBvZiAoYWxsPykgbXkgc3VnZ2VzdGlvbnMg YWJvdmUgYXJlIGJpa2VzaGVkcywgc28gd2l0aCBvciB3aXRob3V0CnRoZW06ClJldmlld2VkLWJ5 OiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KCj4gKwkJCWhzd19waXBl X0FfY3JjX3dhKGRldl9wcml2LCBmYWxzZSk7Cj4gwqAJfQo+IMKgCj4gwqAJcmV0ID0gMDsKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==