From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 4/4] drm/i915/psr: Account for sink CRC raciness on some panels Date: Mon, 08 May 2017 21:05:08 +0300 Message-ID: <874lwv9qcr.fsf@intel.com> References: <1494018126-30190-1-git-send-email-jim.bride@linux.intel.com> <1494018126-30190-5-git-send-email-jim.bride@linux.intel.com> <87lgq7af00.fsf@intel.com> <20170508172923.GC3243@shiv> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 82DDB89EA6 for ; Mon, 8 May 2017 18:05:27 +0000 (UTC) In-Reply-To: <20170508172923.GC3243@shiv> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jim Bride Cc: intel-gfx@lists.freedesktop.org, Paulo Zanoni , Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAwOCBNYXkgMjAxNywgSmltIEJyaWRlIDxqaW0uYnJpZGVAbGludXguaW50ZWwuY29t PiB3cm90ZToKPiBPbiBNb24sIE1heSAwOCwgMjAxNyBhdCAxMjoxMjo0N1BNICswMzAwLCBKYW5p IE5pa3VsYSB3cm90ZToKPj4gT24gU2F0LCAwNiBNYXkgMjAxNywgSmltIEJyaWRlIDxqaW0uYnJp ZGVAbGludXguaW50ZWwuY29tPiB3cm90ZToKPj4gPiBBY2NvcmRpbmcgdG8gdGhlIGVEUCBzcGVj LCB3aGVuIHRoZSBjb3VudCBmaWVsZCBpbiBURVNUX1NJTktfTUlTQwo+PiA+IGluY3JlbWVudHMg dGhlbiB0aGUgc2l4IGJ5dGVzIG9mIHNpbmsgQ1JDIGluZm9ybWF0aW9uIGluIHRoZSBEUENECj4+ ID4gc2hvdWxkIGJlIHZhbGlkLiAgVW5mb3J0dW5hdGVseSwgdGhpcyBkb2Vzbid0IHNlZW0gdG8g YmUgdGhlIGNhc2UKPj4gPiBvbiBzb21lIHBhbmVscywgYW5kIGFzIGEgcmVzdWx0IHdlIGdldCBz b21lIGluY29ycmVjdCBhbmQgaW5jb25zaXN0ZW50Cj4+ID4gdmFsdWVzIGZyb20gdGhlIHNpbmsg Q1JDIERQQ0QgbG9jYXRpb25zIGF0IHRpbWVzLiAgVGhpcyBwcm9ibGVtIGV4aGliaXRzCj4+ID4g aXRzZWxmIG1vcmUgb24gZmFzdGVyIHByb2Nlc3NvcnMgKHJlbGF0aXZlIGZhaWx1cmUgcmF0ZXMg SFNXIDwgU0tMIDwgS0JMLikKPj4gPiBJbiBvcmRlciB0byB0cnkgYW5kIGFjY291bnQgZm9yIHRo aXMsIHdlIHRyeSBhIGxvdCBoYXJkZXIgdG8gcmVhZCB0aGUgc2luawo+PiA+IENSQyB1bnRpbCB3 ZSBnZXQgY29uc2lzdGVudCB2YWx1ZXMgdHdpY2UgaW4gYSByb3cgYmVmb3JlIHJldHVybmluZyB3 aGF0IHdlCj4+ID4gcmVhZCBhbmQgZGVsYXkgZm9yIGEgdGltZSBiZWZvcmUgdHJ5aW5nIHRvIHJl YWQuICBXZSBzdGlsbCBzZWUgc29tZQo+PiA+IG9jY2FzaW9uYWwgZmFpbHVyZXMsIGJ1dCByZWFk aW5nIHRoZSBzaW5rIENSQyBpcyBtdWNoIG1vcmUgcmVsaWFibGUsCj4+ID4gcGFydGljdWxhcmx5 IG9uIFNLTCBhbmQgS0JMLCB3aXRoIHRoZXNlIGNoYW5nZXMgdGhhbiB3aXRob3V0Lgo+PiAKPj4g UmV0cnlpbmcgc2VlbXMgbGlrZSBhIGdvb2QgaWRlYS4gQnV0IHRoaXMgcGF0Y2ggcmV0cmllcyB1 cCB0byAzNiB0aW1lcwo+PiBpZiB0aGUgdHdvIGNvbnNlY3V0aXZlIHJlYWRzIGRvbid0IG1hdGNo LCB3aGljaCBpcyBleGNlc3NpdmUuCj4KPiBJIGRvbid0IHNlZSB3aGVyZSB5b3UncmUgZ2V0dGlu ZyAzNiBmcm9tOyB0aGUgbG9vcCBydW5zIHRocm91Z2ggc2l4IHRpbWVzLgoKaTkxNV9zaW5rX2Ny YygpIGNhbGxzIGludGVsX2RwX3NpbmtfY3JjKCksIHJldHJ5aW5nIG9uIEVUSU1FRE9VVC4gSW4K dHVybiwgaW50ZWxfZHBfc2lua19jcmMoKSByZWFkcyBDUkMsIHJldHJ5aW5nIG9uIG1pc21hdGNo ZWQgQ1JDIGFuZApyZXR1cm5pbmcgRVRJTUVET1VUIHRvIGk5MTVfc2lua19jcmMoKSBvbiBlcnJv cnMuIEFkbWl0dGVkbHkgdGhlIGxvb3AgaW4KaW50ZWxfZHBfc2lua19jcmMoKSB3aWxsIGFsd2F5 cyBydW4gYXQgbGVhc3QgdHdpY2UgdG8gZ2V0IHR3byByZXN1bHRzIHRvCmNvbXBhcmUsIHNvIEkg Z3Vlc3MgaXQgd291bGQgYmUgZmFpciB0byBzYXkgdGhlIGNvbWJvIHRyaWVzIENSQyByZWFkIHVw CnRvIDYgKiA1ID0gMzAgdGltZXMuCgo+PiBUaGUgc2xlZXBzIHNob3VsZCBwcm9iYWJseSBiZSBh IHNlcGFyYXRlIGNoYW5nZS4gQWxzbyBub3QgaGFwcHkgYWJvdXQKPj4gdGhlIG1hZ2ljIG51bWJl cnMgdGhlcmUuCj4KPiBMb29waW5nIHcvbyB0aGUgc2xlZXBzIGRvZXNuJ3QgbWFrZSBhIHRvbiBv ZiBzZW5zZSBJTUhPLiAgVGhlIG51bWJlcnMKPiB3ZXJlIGZvdW5kIGV4cGVyaW1lbnRhbGx5IG9u IEtCTCwgd2hpY2ggc2VlbWVkIHRvIG1vcmUgZWFzaWx5Cj4gZXhlcmNpc2UgdGhlIHJhY2UgdGhh dCB0aGlzIHBhdGNoIGlzIG1lYW50IHRvIGFkZHJlc3MuICBJZGVhbGx5IHRoZQo+IHBhbmVscyB3 b3VsZCBub3QgaW5jcmVtZW50IHRoZSBjb3VudGVyIHVudGlsIHRoZXkgd2VyZSBzdXJlIHRoYXQg dGhlCj4gQ1JDIGRhdGEgaW4gdGhlIERQQ0QgYWN0dWFsbHkgcmVmbGVjdGVkIHJlYWxpdHkuICBV bmZvcnR1bmF0ZWx5LCB0aGlzCj4gaXNuJ3Qgd2hhdCB3ZSdyZSBzZWVpbmcuICBJIHdpbGwgY3Jl YXRlIGEgY291cGxlIG9mICNkZWZpbmVzIGZvciB0aGUKPiBzbGVlcCB2YWx1ZXMsIGF0IGxlYXN0 LCB3aXRoIHNvbWUgY29tbWVudHMgYWJvdXQgdGhlbS4gIAoKSXQncyBqdXN0IHRoYXQgdGhlIG1h Z2ljIHNsZWVwcyBhcmUgZWVyaWx5IGNsb3NlIHRvIGEgZnJhbWUgYXQgNjAKSHouIERpZCB5b3Ug dHJ5IGFub3RoZXIgdmJsYW5rIHdhaXQgaW5zdGVhZD8gT3IgbWF5YmUgaXQncyB0aGUgc3luYyB0 bwp2YmxhbmsgdGhhdCBpcyB0aGUgaXNzdWUuCgo+PiBBbHNvLCB0aGVyZSBhcmUgcGxlbnR5IG9m IHdoYXQgc2VlbSBsaWtlIHVucmVsYXRlZCBjaGFuZ2VzLiBXaGl0ZXNwYWNlLAo+PiBkZWJ1ZyBs b2dnaW5nLCBlcnJvciBjaGVja2luZywgZXRjLgo+Cj4gSSBsb29rZWQgYXQgdGhpcyBhcyByZWZh Y3RvcmluZyB0aGUgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24sIHNvIEkKPiB3ZW50IGFoZWFkIGFu ZCBhZGRlZCBzb21lIGRlYnVnZ2luZyBpbmZvOyB0aGUgZXJyb3IgY2hlY2tpbmcgaXMKPiBwYXJ0 IG9mIHRoZSByZWZhY3RvcmluZy4gIEdpdmVuIHRoZSBoaXN0b3J5IG9mIHByb2JsZW1zIHdpdGgg dGhpcwo+IGZ1bmN0aW9uYWxpdHkgdGhhdCBzZWVtZWQgd2FycmFudGVkLiAgSSBkaWQgbm90aWNl IG9uZSBsaW5lIG9mCj4gd2hpdGVzcGFjZSBjaGFuZ2UgdGhhdCBzbnVjayBpbiAod2hlcmUgSSBt aXNzZWQgdGhhdCBJIHJlbW92ZWQgYQo+IGJsYW5rIGxpbmUuKSAgSSBjYW4gdGFrZSBvdXQgdGhl IGRlYnVnIHByaW50cyBmb3IgdGhlIHN1Y2Nlc3MKPiBjYXNlcyBpZiB0aGV5IHNlZW0gZXhjZXNz aXZlIChhbmQgSSdsbCByZXN0b3JlIHRoZSBkZWxldGVkCj4gYmxhbmsgbGluZSBmb3IgdGhlIG5l eHQgdmVyc2lvbiBvZiB0aGUgcGF0Y2guKQoKVGhlIHRoaW5nIGlzLCBieSBub3cgSSdtIGxvb2tp bmcgYXQgYmFzaWNhbGx5IGFueSBzaW5rIHZpc2libGUKZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGVE UCwgYW5kIFBTUiBpbiBwYXJ0aWN1bGFyLCB3aXRoIHRoZSB0aG91Z2h0IHRoYXQKdGhpcyBtYXkg aGF2ZSB0byBiZSByZXZlcnRlZCBkdWUgdG8gcmVncmVzc2lvbnMgbGF0ZXIuIFRoYXQgaGFzIG5v dGhpbmcKdG8gZG8gd2l0aCB0aGVzZSBwYXRjaGVzLCBidXQgcmF0aGVyIG91ciB0cmFjayByZWNv cmQgd2l0aCBlRFAgYW5kClBTUi4gKEFuZCB0aGF0IGFsc28gc2F5cyBhIGxvdCBhYm91dCBlRFAg c2luayBxdWFsaXR5IGluIGdlbmVyYWwuKQoKU28gSSdkIHJhdGhlciBzZWUgdGhlIG90aGVyIGNo YW5nZXMgc3BsaXQgb3V0IHNvIHdlIGhhdmUgYSBzbWFsbGVyIGRpZmYKdG8gcmV2ZXJ0LCBpbiBj YXNlIHdlIGhhdmUgdG8gcmV2ZXJ0LiBUaGUgcGVzc2ltaXN0IGRvZXMgbm90IGdldApkaXNhcHBv aW50ZWQuIEFuZCBzbyBmYXIgUFNSIGhhc24ndCBnaXZlbiB1cyBhbnkgcmVhc29ucyBmb3Igb3B0 aW1pc20uCgpCUiwKSmFuaS4KCgoKPgo+IEppbQo+Cj4KPj4gCj4+IEJSLAo+PiBKYW5pLgo+PiAK Pj4gCj4+ID4KPj4gPiBDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgo+ PiA+IENjOiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KPj4gPiBTaWdu ZWQtb2ZmLWJ5OiBKaW0gQnJpZGUgPGppbS5icmlkZUBsaW51eC5pbnRlbC5jb20+Cj4+ID4gLS0t Cj4+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIHwgMTQgKysrKysrKy0t Cj4+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgIHwgNTcgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLQo+PiA+ICAyIGZpbGVzIGNoYW5nZWQsIDYxIGlu c2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQo+PiA+Cj4+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKPj4gPiBpbmRleCA4NzBjNDcwLi40OTAyNDczIDEwMDY0NAo+PiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPj4gPiBAQCAtMjcxOCw3ICsyNzE4LDcgQEAgc3Rh dGljIGludCBpOTE1X3NpbmtfY3JjKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPj4g PiAgCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPj4gPiAgCXN0cnVjdCBkcm1f Y29ubmVjdG9yX2xpc3RfaXRlciBjb25uX2l0ZXI7Cj4+ID4gIAlzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwID0gTlVMTDsKPj4gPiAtCWludCByZXQ7Cj4+ID4gKwlpbnQgcmV0LCB0cmllcyA9IDY7 Cj4+ID4gIAl1OCBjcmNbNl07Cj4+ID4gIAo+PiA+ICAJZHJtX21vZGVzZXRfbG9ja19hbGwoZGV2 KTsKPj4gPiBAQCAtMjczOCw5ICsyNzM4LDE3IEBAIHN0YXRpYyBpbnQgaTkxNV9zaW5rX2NyYyhz dHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4+ID4gIAo+PiA+ICAJCWludGVsX2RwID0g ZW5jX3RvX2ludGVsX2RwKGNvbm5lY3Rvci0+YmFzZS5zdGF0ZS0+YmVzdF9lbmNvZGVyKTsKPj4g PiAgCj4+ID4gLQkJcmV0ID0gaW50ZWxfZHBfc2lua19jcmMoaW50ZWxfZHAsIGNyYyk7Cj4+ID4g LQkJaWYgKHJldCkKPj4gPiArCQltZW1zZXQoY3JjLCAwLCA2KTsKPj4gPiArCQlkbyB7Cj4+ID4g KwkJCXJldCA9IGludGVsX2RwX3NpbmtfY3JjKGludGVsX2RwLCBjcmMpOwo+PiA+ICsJCQlpZiAo cmV0ID09IC1FVElNRURPVVQpCj4+ID4gKwkJCQl1c2xlZXBfcmFuZ2UoNTAwLCA3MDApOwo+PiA+ ICsJCX0gd2hpbGUgKChyZXQgPT0gLUVUSU1FRE9VVCkgJiYgLS10cmllcyk7Cj4+ID4gKwo+PiA+ ICsJCWlmIChyZXQgIT0gMCkgewo+PiA+ICsJCQlzZXFfcHJpbnRmKG0sICIwMDAwMDAwMDAwMDBc biIpOwo+PiA+ICAJCQlnb3RvIG91dDsKPj4gPiArCQl9Cj4+ID4gIAo+PiA+ICAJCXNlcV9wcmlu dGYobSwgIiUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeFxuIiwKPj4gPiAgCQkJICAgY3JjWzBdLCBj cmNbMV0sIGNyY1syXSwKPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4gPiBpbmRleCAwNmI4 YmQ0Li4yMTdiYzA2IDEwMDY0NAo+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwLmMKPj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4+ID4gQEAg LTM4NzcsMTMgKzM4NzcsMTUgQEAgc3RhdGljIGludCBpbnRlbF9kcF9zaW5rX2NyY19zdG9wKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4+ID4gIAo+PiA+ICAJZG8gewo+PiA+ICAJCWludGVs X3dhaXRfZm9yX3ZibGFuayhkZXZfcHJpdiwgaW50ZWxfY3J0Yy0+cGlwZSk7Cj4+ID4gLQo+PiA+ ICsJCXVzbGVlcF9yYW5nZSgxNjcwMCwgMTcwMDApOwo+PiA+ICAJCWlmIChkcm1fZHBfZHBjZF9y ZWFkYigmaW50ZWxfZHAtPmF1eCwKPj4gPiAgCQkJCSAgICAgIERQX1RFU1RfU0lOS19NSVNDLCAm YnVmKSA8IDApIHsKPj4gPiArCQkJRFJNX0RFQlVHX0tNUygiQ291bGQgbm90IHJlYWQgVEVTVF9T SU5LX01JU0NcbiIpOwo+PiA+ICAJCQlyZXQgPSAtRUlPOwo+PiA+ICAJCQlnb3RvIG91dDsKPj4g PiAgCQl9Cj4+ID4gIAkJY291bnQgPSBidWYgJiBEUF9URVNUX0NPVU5UX01BU0s7Cj4+ID4gKwkJ RFJNX0RFQlVHX0tNUygiUFNSIGNvdW50IGlzICVkXG4iLCBjb3VudCk7Cj4+ID4gIAl9IHdoaWxl ICgtLWF0dGVtcHRzICYmIGNvdW50KTsKPj4gPiAgCj4+ID4gIAlpZiAoYXR0ZW1wdHMgPT0gMCkg ewo+PiA+IEBAIC0zOTI4LDYgKzM5MzAsOCBAQCBzdGF0aWMgaW50IGludGVsX2RwX3NpbmtfY3Jj X3N0YXJ0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4+ID4gIAl9Cj4+ID4gIAo+PiA+ICAJ aW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldl9wcml2LCBpbnRlbF9jcnRjLT5waXBlKTsKPj4gPiAr CXVzbGVlcF9yYW5nZSgxNjcwMCwgMTcwMDApOwo+PiA+ICsJRFJNX0RFQlVHX0tNUygiUFNSIFN1 Y2Nlc3NmdWxseSBzdGFydGVkIHNpbmsgQ1JDXG4iKTsKPj4gPiAgCXJldHVybiAwOwo+PiA+ICB9 Cj4+ID4gIAo+PiA+IEBAIC0zOTM5LDIxICszOTQzLDMwIEBAIGludCBpbnRlbF9kcF9zaW5rX2Ny YyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1OCAqY3JjKQo+PiA+ICAJdTggYnVmOwo+PiA+ ICAJaW50IGNvdW50LCByZXQ7Cj4+ID4gIAlpbnQgYXR0ZW1wdHMgPSA2Owo+PiA+ICsJdTggb2xk X2NyY1s2XTsKPj4gPiArCj4+ID4gKwlpZiAoY3JjICE9IE5VTEwpCj4+ID4gKwkJbWVtc2V0KGNy YywgMCwgNik7Cj4+ID4gKwllbHNlCj4+ID4gKwkJcmV0dXJuIC1FTk9NRU07Cj4+ID4gIAo+PiA+ ICAJcmV0ID0gaW50ZWxfZHBfc2lua19jcmNfc3RhcnQoaW50ZWxfZHApOwo+PiA+IC0JaWYgKHJl dCkKPj4gPiArCWlmIChyZXQpIHsKPj4gPiArCQlEUk1fREVCVUdfS01TKCJDb3VsZCBub3Qgc3Rh cnQgc2luayBjcmM7IHJldCAlZFxuIiwgcmV0KTsKPj4gPiAgCQlyZXR1cm4gcmV0Owo+PiA+ICsJ fQo+PiA+ICAKPj4gPiAgCWRvIHsKPj4gPiAgCQlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2X3By aXYsIGludGVsX2NydGMtPnBpcGUpOwo+PiA+ICsJCXVzbGVlcF9yYW5nZSgxNjcwMCwgMTcwMDAp Owo+PiA+ICAKPj4gPiAgCQlpZiAoZHJtX2RwX2RwY2RfcmVhZGIoJmludGVsX2RwLT5hdXgsCj4+ ID4gIAkJCQkgICAgICBEUF9URVNUX1NJTktfTUlTQywgJmJ1ZikgPCAwKSB7Cj4+ID4gKwkJCURS TV9ERUJVR19LTVMoIkNvdW5kIG5vdCByZWFkIFRFU1RfU0lOS19NSVNDXG4iKTsKPj4gPiAgCQkJ cmV0ID0gLUVJTzsKPj4gPiAgCQkJZ290byBzdG9wOwo+PiA+ICAJCX0KPj4gPiAgCQljb3VudCA9 IGJ1ZiAmIERQX1RFU1RfQ09VTlRfTUFTSzsKPj4gPiAtCj4+ID4gIAl9IHdoaWxlICgtLWF0dGVt cHRzICYmIGNvdW50ID09IDApOwo+PiA+ICAKPj4gPiAgCWlmIChhdHRlbXB0cyA9PSAwKSB7Cj4+ ID4gQEAgLTM5NjIsMTEgKzM5NzUsNDEgQEAgaW50IGludGVsX2RwX3NpbmtfY3JjKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsIHU4ICpjcmMpCj4+ID4gIAkJZ290byBzdG9wOwo+PiA+ICAJfQo+ PiA+ICAKPj4gPiAtCWlmIChkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kcC0+YXV4LCBEUF9URVNU X0NSQ19SX0NSLCBjcmMsIDYpIDwgMCkgewo+PiA+IC0JCXJldCA9IC1FSU87Cj4+ID4gLQkJZ290 byBzdG9wOwo+PiA+IC0JfQo+PiA+ICsJYXR0ZW1wdHMgPSA2Owo+PiA+ICsJbWVtc2V0KG9sZF9j cmMsIDB4RkYsIDYpOwo+PiA+ICsJZG8gewo+PiA+ICsJCWludGVsX3dhaXRfZm9yX3ZibGFuayhk ZXZfcHJpdiwgaW50ZWxfY3J0Yy0+cGlwZSk7Cj4+ID4gKwkJdXNsZWVwX3JhbmdlKDE2NTAwLCAx NzAwMCk7Cj4+ID4gKwkJaWYgKGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RwLT5hdXgsIERQX1RF U1RfQ1JDX1JfQ1IsCj4+ID4gKwkJCQkgICAgIGNyYywgNikgPCAwKSB7Cj4+ID4gKwkJCURSTV9E RUJVR19LTVMoIkNvdWxkIG5vdCByZWFkIHNpbmsgY3JjXG4iKTsKPj4gPiArCQkJcmV0ID0gLUVJ TzsKPj4gPiArCQkJZ290byBzdG9wOwo+PiA+ICsJCX0KPj4gPiArCj4+ID4gKwkJaWYgKG1lbWNt cChvbGRfY3JjLCBjcmMsIDYpID09IDApIHsKPj4gPiArCQkJRFJNX0RFQlVHX0tNUygiUFNSIEFj dGl2ZTogJTNzIE1hdGNoaW5nIGNyYyB2YWx1ZXMgZm91bmQ6Igo+PiA+ICsJCQkJICAgICAgIiUw MnglMDJ4JTAyeCUwMnglMDJ4JTAyeFxuIiwKPj4gPiArCQkJCSAgICAgIHllc25vKGRldl9wcml2 LT5wc3IuYWN0aXZlKSwKPj4gPiArCQkJCSAgICAgIGNyY1swXSwgY3JjWzFdLCBjcmNbMl0sCj4+ ID4gKwkJCQkgICAgICBjcmNbM10sIGNyY1s0XSwgY3JjWzVdKTsKPj4gPiArCQkJcmV0ID0gMDsK Pj4gPiArCQkJZ290byBzdG9wOwo+PiA+ICsJCX0gZWxzZSB7Cj4+ID4gKwkJCURSTV9ERUJVR19L TVMoIlBTUiBBY3RpdmU6ICUzcyBjcmMgJTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4ICIKPj4gPiAr CQkJCSAgICAgICJkb2Vzbid0IG1hdGNoICIKPj4gPiArCQkJCSAgICAgICJwcmV2aW91cyAlMDJ4 JTAyeCUwMnglMDJ4JTAyeCUwMnhcbiIsCj4+ID4gKwkJCQkgICAgICB5ZXNubyhkZXZfcHJpdi0+ cHNyLmFjdGl2ZSksCj4+ID4gKwkJCQkgICAgICBjcmNbMF0sIGNyY1sxXSwgY3JjWzJdLAo+PiA+ ICsJCQkJICAgICAgY3JjWzNdLCBjcmNbNF0sIGNyY1s1XSwKPj4gPiArCQkJCSAgICAgIG9sZF9j cmNbMF0sIG9sZF9jcmNbMV0sIG9sZF9jcmNbMl0sCj4+ID4gKwkJCQkgICAgICBvbGRfY3JjWzNd LCBvbGRfY3JjWzRdLCBvbGRfY3JjWzVdKTsKPj4gPiArCQkJbWVtY3B5KG9sZF9jcmMsIGNyYywg Nik7Cj4+ID4gKwkJfQo+PiA+ICsJfSB3aGlsZSAoLS1hdHRlbXB0cyk7Cj4+ID4gIAo+PiA+ICsJ RFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIGdldCBDUkMgYWZ0ZXIgNiBhdHRlbXB0cy5cbiIpOwo+ PiA+ICsJcmV0ID0gLUVUSU1FRE9VVDsKPj4gPiAgc3RvcDoKPj4gPiAgCWludGVsX2RwX3Npbmtf Y3JjX3N0b3AoaW50ZWxfZHApOwo+PiA+ICAJcmV0dXJuIHJldDsKPj4gCj4+IC0tIAo+PiBKYW5p IE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKCi0tIApKYW5pIE5p a3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==