From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915: Beef up the IPS vs. CRC workaround Date: Thu, 22 Dec 2016 14:24:09 +0200 Message-ID: <20161222122409.GJ31595@intel.com> References: <20161221093105.19120-1-ville.syrjala@linux.intel.com> <1482339883.2641.54.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id A538D6F249 for ; Thu, 22 Dec 2016 12:24:13 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1482339883.2641.54.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Paulo Zanoni Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBEZWMgMjEsIDIwMTYgYXQgMDM6MDQ6NDNQTSAtMDIwMCwgUGF1bG8gWmFub25pIHdy b3RlOgo+IEVtIFF1YSwgMjAxNi0xMi0yMSDDoHMgMTE6MzEgKzAyMDAsIHZpbGxlLnN5cmphbGFA bGludXguaW50ZWwuY29tCj4gZXNjcmV2ZXU6Cj4gPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4gCj4gPiBPbmVzaG90IGRpc2FibGluZyBv ZiBJUFMgd2hlbiBDUkMgY2FwdHVyaW5nIGlzIHN0YXJ0ZWQgaXMKPiA+IGluc3VmZmljaWVudC4K PiA+IElQUyBtYXkgZ2V0IHJlLWVuYWJsZWQgYnkgYW55IHBsYW5lIHVwZGF0ZSwgYW5kIGhlbmNl IHRlc3RzIHRoYXQga2VlcAo+ID4gQ1JDIGNhcHR1cmluZyBvbiBhY3Jvc3MgcGxhbmUgdXBkYXRl cyB3aWxsIHN0YXJ0IHRvIHNlZSBpbmNvbnNpc3RlbnQKPiA+IHJlc3VsdHMgYXMgc29vbiBhcyBJ UFMga2lja3MgYmFjayBpbi4gQWRkIGEgbmV3IGtub2IgaW50byB0aGUgY3J0Ywo+ID4gc3RhdGUK PiA+IHRvIG1ha2Ugc3VyZSBJUFMgc3RheXMgZGlzYWJsZWQgYXMgbG9uZyBhcyBDUkMgY2FwdHVy aW5nIGlzIGVuYWJsZWQuCj4gPgo+ID4gRm9yY2luZyBhIG1vZGVzZXQgaXMgdGhlIGVhc2llc3Qg d2F5IHRvIGhhbmRsZSB0aGlzIHNpbmNlIHRoYXQncwo+ID4gYWxyZWFkeQo+ID4gaG93IHdlIGRv IHRoZSBwYW5lbCBmaXR0ZXIgd29ya2Fyb3VuZC4gSXQncyBhIGxpdHRsZSBoZWF2eSBoYW5kZWQK PiA+IGp1c3QKPiA+IGZvciBJUFMsIGJ1dCBzZWVpbmcgYXMgd2UgbWlnaHQgYWxyZWFkeSBkbyB0 aGUgcGFuZWwgZml0dGVyCj4gPiB3b3JrYXJvdW5kCj4gPiBJIHRoaW5rIGl0J3MgYmV0dGVyIHRv IGZvbGxvdyB0aGF0LiBXZSBtaWd0aCB3YW50IHRvIG9wdGltaXplIGJvdGgKPiA+IGNhc2VzCj4g PiBsYXRlciBpZiBzb21lb25lIGdldHMgdG9vIHVwc2V0IGJ5IHRoZSBleHRyYSBkZWxheSBmcm9t IHRoZSBtb2Rlc2V0Lgo+ID4gCj4gCj4gUGxlYXNlIGFkZCBhICJUZXN0Y2FzZToiIHRhZyBsaXN0 aW5nIHRoZSBJR1RzIHRoaXMgcGF0Y2ggdW5icmVha3MuCgpUaGUgb25seSB0aGluIEkgbm90aWNl ZCBzbyBmYXIgd2FzIG15IGttc19wbGFuZV9ibGlua2VyIHdoaWNoIGlzbid0IGluCnlldC4KCj4g TWF5YmUgYWxzbyAiQnVnemlsbGE6IiBpZiB0aGVyZSdzIGFueS4KCkRvbid0IHJlY2FsbCBhbnku IEkgY2FuIG1ha2UgYSBxdWljayBzY2FuIG9mIHRoZSBsaXN0IHRob3VnaC4KCj4gCj4gCj4gPiBD YzogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+Cj4gPiBDYzogRGFuaWVs IFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPiA+IFNpZ25lZC1vZmYtYnk6IFZpbGxl IFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiAtLS0KPiA+IMKg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jwqDCoHzCoMKgNSArKystCj4gPiDC oGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5owqDCoMKgwqDCoMKgfMKgwqAxICsKPiA+ IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGlwZV9jcmMuYyB8IDQzICsrKysrKysrKysr KysrKysrKystLS0tCj4gPiAtLS0tLS0tLS0tLS0KPiA+IMKgMyBmaWxlcyBjaGFuZ2VkLCAyOCBp bnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMKPiA+IGluZGV4IGVmNWRkZTVhYjFjZi4uMWNlNDc5NjE0ZjUyIDEw MDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+IEBAIC03MTg5LDYg KzcxODksNyBAQCBzdGF0aWMgdm9pZCBoc3dfY29tcHV0ZV9pcHNfY29uZmlnKHN0cnVjdAo+ID4g aW50ZWxfY3J0YyAqY3J0YywKPiA+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZGV2KTsKPiA+IMKgCj4gPiDCoAlwaXBlX2NvbmZpZy0+aXBzX2VuYWJsZWQg PSBpOTE1LmVuYWJsZV9pcHMgJiYKPiA+ICsJCSFwaXBlX2NvbmZpZy0+aXBzX2ZvcmNlX2Rpc2Fi bGUgJiYKPiA+IMKgCQloc3dfY3J0Y19zdXBwb3J0c19pcHMoY3J0YykgJiYKPiA+IMKgCQlwaXBl X2NvbmZpZ19zdXBwb3J0c19pcHMoZGV2X3ByaXYsIHBpcGVfY29uZmlnKTsKPiA+IMKgfQo+ID4g QEAgLTEyOTU4LDcgKzEyOTU5LDcgQEAgY2xlYXJfaW50ZWxfY3J0Y19zdGF0ZShzdHJ1Y3QKPiA+ IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gPiDCoAlzdHJ1Y3QgaW50ZWxfY3J0Y19z Y2FsZXJfc3RhdGUgc2NhbGVyX3N0YXRlOwo+ID4gwqAJc3RydWN0IGludGVsX2RwbGxfaHdfc3Rh dGUgZHBsbF9od19zdGF0ZTsKPiA+IMKgCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqc2hhcmVk X2RwbGw7Cj4gPiAtCWJvb2wgZm9yY2VfdGhydTsKPiA+ICsJYm9vbCBmb3JjZV90aHJ1LCBpcHNf Zm9yY2VfZGlzYWJsZTsKPiA+IMKgCj4gPiDCoAkvKiBGSVhNRTogYmVmb3JlIHRoZSBzd2l0Y2gg dG8gYXRvbWljIHN0YXJ0ZWQsIGEgbmV3Cj4gPiBwaXBlX2NvbmZpZyB3YXMKPiA+IMKgCcKgKiBr emFsbG9jJ2QuIENvZGUgdGhhdCBkZXBlbmRzIG9uIGFueSBmaWVsZCBiZWluZyB6ZXJvCj4gPiBz aG91bGQgYmUKPiA+IEBAIC0xMjk3MCw2ICsxMjk3MSw3IEBAIGNsZWFyX2ludGVsX2NydGNfc3Rh dGUoc3RydWN0Cj4gPiBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4gwqAJc2hhcmVk X2RwbGwgPSBjcnRjX3N0YXRlLT5zaGFyZWRfZHBsbDsKPiA+IMKgCWRwbGxfaHdfc3RhdGUgPSBj cnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlOwo+ID4gwqAJZm9yY2VfdGhydSA9IGNydGNfc3RhdGUt PnBjaF9wZml0LmZvcmNlX3RocnU7Cj4gPiArCWlwc19mb3JjZV9kaXNhYmxlID0gY3J0Y19zdGF0 ZS0+aXBzX2ZvcmNlX2Rpc2FibGU7Cj4gPiDCoAo+ID4gwqAJbWVtc2V0KGNydGNfc3RhdGUsIDAs IHNpemVvZiAqY3J0Y19zdGF0ZSk7Cj4gPiDCoAo+ID4gQEAgLTEyOTc4LDYgKzEyOTgwLDcgQEAg Y2xlYXJfaW50ZWxfY3J0Y19zdGF0ZShzdHJ1Y3QKPiA+IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUpCj4gPiDCoAljcnRjX3N0YXRlLT5zaGFyZWRfZHBsbCA9IHNoYXJlZF9kcGxsOwo+ID4g wqAJY3J0Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZSA9IGRwbGxfaHdfc3RhdGU7Cj4gPiDCoAljcnRj X3N0YXRlLT5wY2hfcGZpdC5mb3JjZV90aHJ1ID0gZm9yY2VfdGhydTsKPiA+ICsJY3J0Y19zdGF0 ZS0+aXBzX2ZvcmNlX2Rpc2FibGUgPSBpcHNfZm9yY2VfZGlzYWJsZTsKPiA+IMKgfQo+ID4gwqAK PiA+IMKgc3RhdGljIGludAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiBpbmRl eCAwMjVlNGM4YjNlNjMuLmNhZGJhOWI5MmNjOSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAo+ID4gQEAgLTY1MSw2ICs2NTEsNyBAQCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSB7 Cj4gPiDCoAlzdHJ1Y3QgaW50ZWxfbGlua19tX24gZmRpX21fbjsKPiA+IMKgCj4gPiDCoAlib29s IGlwc19lbmFibGVkOwo+ID4gKwlib29sIGlwc19mb3JjZV9kaXNhYmxlOwo+ID4gwqAKPiA+IMKg CWJvb2wgZW5hYmxlX2ZiYzsKPiA+IMKgCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcGlwZV9jcmMuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w aXBlX2NyYy5jCj4gPiBpbmRleCBlZjBjMGUxOTUxNjQuLjcwOGNmMWQ0MTlkNCAxMDA2NDQKPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BpcGVfY3JjLmMKPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BpcGVfY3JjLmMKPiA+IEBAIC01NDcsOCArNTQ3LDgg QEAgc3RhdGljIGludCBpbGtfcGlwZV9jcmNfY3RsX3JlZyhlbnVtCj4gPiBpbnRlbF9waXBlX2Ny Y19zb3VyY2UgKnNvdXJjZSwKPiA+IMKgCXJldHVybiAwOwo+ID4gwqB9Cj4gPiDCoAo+ID4gLXN0 YXRpYyB2b2lkIGhzd190cmFuc19lZHBfcGlwZV9BX2NyY193YShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZQo+ID4gKmRldl9wcml2LAo+ID4gLQkJCQkJYm9vbCBlbmFibGUpCj4gPiArc3RhdGljIHZv aWQgaHN3X3BpcGVfQV9jcmNfd2Eoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ID4gKwkJCcKgwqDCoMKgwqDCoGJvb2wgZW5hYmxlKQo+IAo+IE5vdyB3ZSBhcHBseSBtb3JlIHRo YW4gb25lIFdBLiBTbyBtYXliZTogaHN3X3BpcGVfYV9jcmNfd29ya2Fyb3VuZHMoKQo+IG9yIGp1 c3QgaHN3X3BpcGVfY3JjX3dvcmthcm91bmRzKCkgKG9yIGFwcGx5X3dvcmthcm91bmRzKS4gSnVz dCAid2FzIgo+IGlzIGNvbmZ1c2luZyBzaW5jZSBpdCBsb29rcyBsaWtlIGEgdmVyYiBpcyBtaXNz aW5nLiBBbHNvLCB0aGF0IGNhcGl0YWwKPiBBIGlzIG5vdCBleGFjdGx5IGZvbGxvd2luZyBvdXIg Y29kaW5nIHN0eWxlLgo+IAo+IAo+ID4gwqB7Cj4gPiDCoAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gJmRldl9wcml2LT5kcm07Cj4gPiDCoAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IGludGVs X2dldF9jcnRjX2Zvcl9waXBlKGRldl9wcml2LAo+ID4gUElQRV9BKTsKPiA+IEBAIC01NzAsMTEg KzU3MCwyMyBAQCBzdGF0aWMgdm9pZCBoc3dfdHJhbnNfZWRwX3BpcGVfQV9jcmNfd2Eoc3RydWN0 Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+IMKgCQlnb3RvIG91dDsKPiA+IMKg CX0KPiA+IMKgCj4gPiAtCXBpcGVfY29uZmlnLT5wY2hfcGZpdC5mb3JjZV90aHJ1ID0gZW5hYmxl Owo+ID4gLQlpZiAocGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQ ICYmCj4gPiAtCcKgwqDCoMKgcGlwZV9jb25maWctPnBjaF9wZml0LmVuYWJsZWQgIT0gZW5hYmxl KQo+ID4gKwkvKgo+ID4gKwnCoCogV2hlbiBJUFMgZ2V0cyBlbmFibGVkLCB0aGUgcGlwZSBDUkMg Y2hhbmdlcy4gU2luY2UgSVBTCj4gPiBnZXRzCj4gPiArCcKgKiBlbmFibGVkIGFuZCBkaXNhYmxl ZCBkeW5hbWljYWxseSBiYXNlZCBvbiBwYWNrYWdlIEMKPiA+IHN0YXRlcywKPiA+ICsJwqAqIHVz ZXIgc3BhY2UgY2FuJ3QgbWFrZSByZWxpYWJsZSB1c2Ugb2YgdGhlIENSQ3MsIHNvIGxldCdzCj4g PiBqdXN0Cj4gPiArCcKgKiBjb21wbGV0ZWx5IGRpc2FibGUgaXQuCj4gPiArCcKgKi8KPiA+ICsJ cGlwZV9jb25maWctPmlwc19mb3JjZV9kaXNhYmxlID0gZW5hYmxlOwo+ID4gKwlpZiAocGlwZV9j b25maWctPmlwc19mb3JjZV9kaXNhYmxlICE9IGVuYWJsZSkKPiAKPiBUaGUgZml4IG1lbnRpb25l ZCBpbiB5b3VyIG90aGVyIGVtYWlsIG1ha2VzIHNlbnNlLCBidXQgSSBmaW5kIGl0IGVhc2llcgo+ IHRvIHJlYWQgImlmIChwaXBlX2NvbmZpZy0+aXBzX2VuYWJsZSA9PSBwaXBlX2NvbmZpZy0KPiA+ aXBzX2ZvcmNlX2Rpc2FibGUpIi4KPiAKPiA+IMKgCQlwaXBlX2NvbmZpZy0+YmFzZS5jb25uZWN0 b3JzX2NoYW5nZWQgPSB0cnVlOwo+ID4gwqAKPiA+ICsJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYp KSB7Cj4gPiArCQlwaXBlX2NvbmZpZy0+cGNoX3BmaXQuZm9yY2VfdGhydSA9IGVuYWJsZTsKPiA+ ICsJCWlmIChwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFAgJiYK PiA+ICsJCcKgwqDCoMKgcGlwZV9jb25maWctPnBjaF9wZml0LmVuYWJsZWQgIT0gZW5hYmxlKQo+ ID4gKwkJCXBpcGVfY29uZmlnLT5iYXNlLmNvbm5lY3RvcnNfY2hhbmdlZCA9IHRydWU7Cj4gPiAr CX0KPiA+ICsKPiA+IMKgCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKPiA+IMKgb3V0 Ogo+ID4gwqAJV0FSTihyZXQsICJUb2dnbGluZyB3b3JrYXJvdW5kIHRvICVpIHJldHVybnMgJWlc biIsIGVuYWJsZSwKPiA+IHJldCk7Cj4gPiBAQCAtNTk4LDggKzYxMCw5IEBAIHN0YXRpYyBpbnQg aXZiX3BpcGVfY3JjX2N0bF9yZWcoc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiA+IMKgCQkqdmFsID0gUElQRV9DUkNfRU5BQkxFIHwgUElQRV9DUkNfU09VUkNFX1NQUklU RV9JVkI7Cj4gPiDCoAkJYnJlYWs7Cj4gPiDCoAljYXNlIElOVEVMX1BJUEVfQ1JDX1NPVVJDRV9Q RjoKPiA+IC0JCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSAmJiBwaXBlID09IFBJUEVfQSkKPiA+ IC0JCQloc3dfdHJhbnNfZWRwX3BpcGVfQV9jcmNfd2EoZGV2X3ByaXYsIHRydWUpOwo+ID4gKwkJ aWYgKChJU19IQVNXRUxMKGRldl9wcml2KSB8fAo+ID4gKwkJwqDCoMKgwqDCoElTX0JST0FEV0VM TChkZXZfcHJpdikpICYmIHBpcGUgPT0gUElQRV9BKQo+ID4gKwkJCWhzd19waXBlX0FfY3JjX3dh KGRldl9wcml2LCB0cnVlKTsKPiAKPiBJIGtub3cgdGhpcyBwcm9ibGVtIGlzIG5vdCBjYXVzZWQg YnkgeW91ciBwYXRjaCwgYnV0IGluIGNhc2UgeW91IHdhbnQ6Cj4gSSB3b25kZXIgaWYgdGhlcmUn cyBhIGJldHRlciBwbGFjZSB0byBjYWxsIHRoaXMuIE1heWJlIG91dHNpZGUgdGhpcwo+IGZ1bmN0 aW9uLiBDYWxsaW5nIGl0IGhlcmUgc291bmRzIGxpa2UgYW4gdW5yZWxhdGVkIHNpZGUtZWZmZWN0 IG9mIGEKPiBmdW5jdGlvbiB0aGF0J3Mgc3VwcG9zZWQgdG8ganVzdCByZXR1cm4gYSB2YWx1ZSBm b3IgYSByZWdpc3Rlci4KClllYWgsIHRoZSBkaXNhYmxlIGNhbGwgaGFwcGVucyBmcm9tIGEgaGln aGVyIGxldmVsIElJUkMsIHNvIG1vdmluZyB0aGlzCm1pZ2h0IG1ha2Ugc2Vuc2UgZnJvbSBhIGNv bnNpc3RlbmN5IFBPViBhcyB3ZWxsLiBJJ2xsIHRha2UgYW5vdGhlciBsb29rCmF0IGl0LgoKPiAK PiAKPiA+IMKgCj4gPiDCoAkJKnZhbCA9IFBJUEVfQ1JDX0VOQUJMRSB8IFBJUEVfQ1JDX1NPVVJD RV9QRl9JVkI7Cj4gPiDCoAkJYnJlYWs7Cj4gPiBAQCAtNjE4LDcgKzYzMSw2IEBAIHN0YXRpYyBp bnQgcGlwZV9jcmNfc2V0X3NvdXJjZShzdHJ1Y3QKPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ID4gwqAJCQnCoMKgwqDCoMKgwqDCoGVudW0gaW50ZWxfcGlwZV9jcmNfc291cmNlIHNv dXJjZSkKPiA+IMKgewo+ID4gwqAJc3RydWN0IGludGVsX3BpcGVfY3JjICpwaXBlX2NyYyA9ICZk ZXZfcHJpdi0+cGlwZV9jcmNbcGlwZV07Cj4gPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0g aW50ZWxfZ2V0X2NydGNfZm9yX3BpcGUoZGV2X3ByaXYsCj4gPiBwaXBlKTsKPiA+IMKgCWVudW0g aW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gcG93ZXJfZG9tYWluOwo+ID4gwqAJdTMyIHZhbCA9 IDA7IC8qIHNodXQgdXAgZ2NjICovCj4gPiDCoAlpbnQgcmV0Owo+ID4gQEAgLTY2NSwxNCArNjc3 LDYgQEAgc3RhdGljIGludCBwaXBlX2NyY19zZXRfc291cmNlKHN0cnVjdAo+ID4gZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiDCoAkJCWdvdG8gb3V0Owo+ID4gwqAJCX0KPiA+IMKgCj4g PiAtCQkvKgo+ID4gLQkJwqAqIFdoZW4gSVBTIGdldHMgZW5hYmxlZCwgdGhlIHBpcGUgQ1JDIGNo YW5nZXMuCj4gPiBTaW5jZSBJUFMgZ2V0cwo+ID4gLQkJwqAqIGVuYWJsZWQgYW5kIGRpc2FibGVk IGR5bmFtaWNhbGx5IGJhc2VkIG9uIHBhY2thZ2UKPiA+IEMgc3RhdGVzLAo+ID4gLQkJwqAqIHVz ZXIgc3BhY2UgY2FuJ3QgbWFrZSByZWxpYWJsZSB1c2Ugb2YgdGhlIENSQ3MsCj4gPiBzbyBsZXQn cyBqdXN0Cj4gPiAtCQnCoCogY29tcGxldGVseSBkaXNhYmxlIGl0Lgo+ID4gLQkJwqAqLwo+ID4g LQkJaHN3X2Rpc2FibGVfaXBzKGNydGMpOwo+ID4gLQo+ID4gwqAJCXNwaW5fbG9ja19pcnEoJnBp cGVfY3JjLT5sb2NrKTsKPiA+IMKgCQlrZnJlZShwaXBlX2NyYy0+ZW50cmllcyk7Cj4gPiDCoAkJ cGlwZV9jcmMtPmVudHJpZXMgPSBlbnRyaWVzOwo+ID4gQEAgLTcxMywxMCArNzE3LDkgQEAgc3Rh dGljIGludCBwaXBlX2NyY19zZXRfc291cmNlKHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gPiDCoAkJCWc0eF91bmRvX3BpcGVfc2NyYW1ibGVfcmVzZXQoZGV2X3ByaXYs Cj4gPiBwaXBlKTsKPiA+IMKgCQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fAo+ ID4gSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gPiDCoAkJCXZsdl91bmRvX3BpcGVfc2NyYW1i bGVfcmVzZXQoZGV2X3ByaXYsCj4gPiBwaXBlKTsKPiA+IC0JCWVsc2UgaWYgKElTX0hBU1dFTEwo ZGV2X3ByaXYpICYmIHBpcGUgPT0gUElQRV9BKQo+ID4gLQkJCWhzd190cmFuc19lZHBfcGlwZV9B X2NyY193YShkZXZfcHJpdiwKPiA+IGZhbHNlKTsKPiA+IC0KPiA+IC0JCWhzd19lbmFibGVfaXBz KGNydGMpOwo+ID4gKwkJZWxzZSBpZiAoKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8Cj4gPiArCQkJ wqDCoElTX0JST0FEV0VMTChkZXZfcHJpdikpICYmIHBpcGUgPT0gUElQRV9BKQo+IAo+IE1vdmlu ZyB0aGUgZ2VuK3BpcGUgY2hlY2tzIHRvIGluc2lkZSB0aGUgZnVuY3Rpb24gd291bGQgZGVkdXBs aWNhdGUKPiB0aGVtIGFuZCwgSU1ITywgbWFrZSB0aGUgY29kZSBzbGlnaHRseSBlYXNpZXIgdG8g cmVhZC4KCkhtbS4gTm90IHN1cmUuIFRoZSBzY3JhbWJsZXIgcmVzZXQgc3R1ZmYgaXMgaGVyZSBh bnl3YXkuIE9yIHBlcmhhcHMKd2UgY291bGQgbW92ZSB0aGF0IHN0dWZmIGludG8gc29tZSBmdW5j dGlvbiBhcyB3ZWxsLgoKPiAKPiBOb3cgaGVyZSdzIGEgcXVlc3Rpb24gdGhhdCBtYXliZSBJIG5l dmVyIGFza2VkIG15c2VsZiBiZWZvcmU6IGlmIHdlCj4gaGF2ZSB0d28gcGlwZXMgZW5hYmxlZCAo QSBhbmQgQiksIGFuZCBvdXIgc3lzdGVtIGlzIHByb3Blcmx5IGNvbmZpZ3VyZWQKPiBmb3IgcG93 ZXIgbWFuYWdlbWVudCBzbyB3ZSdyZSByZWFjaGluZyB0aGUgZGVlcCBQQyBzdGF0ZXMgKGRlcGVu ZGluZyBvbgo+IHlvdXIgbWFjaGluZSwgYWxsIHlvdSBuZWVkIHRvIGRvIGlzIHRvIHJ1biBwb3dl cnRvcCAtLWF1dG8tdHVuZSksIGRvZXMKPiBwaXBlIEIgYWxzbyBjaGFuZ2UgaXRzIENSQ3Mgd2hl biBJUFMgaXMgZW5hYmxlZCBvbiBwaXBlIEE/IFRoZSByZWFzb24gSQo+IGFzayB0aGlzIGlzIGJl Y2F1c2UgSVBTIGVuYWJsZXMgZGVlcGVyIFBDIHN0YXRlcywgYnV0IG1heWJlIGl0J3MgdGhlCj4g ZGVlcGVyIFBDIHN0YXRlcyB0aGF0IGNhdXNlcyBkaWZmZXJlbnQgQ1JDIGNhbGN1bGF0aW9uLCBu b3QgSVBTLCBhbmQKPiB0aGVuIHRoaXMgd291bGQgYWxzbyBhZmZlY3QgdGhlIENSQ3MgZm9yIG5v bi1JUFMgcGlwZXMgKEFLQSBwaXBlIEIpLiBJdAo+IHdvdWxkIGJlIGdyZWF0IGlmIHlvdSBjb3Vs ZCBjaGVjayB0aGlzLCBiZWNhdXNlIEkgZG9uJ3QgcmVhbGx5IHJlbWVtYmVyCj4gaWYgSSBjaGVj a2VkIGZvciB0aGlzIHdoZW4gSSB3cm90ZSB0aGlzIGNvZGUuIE9mIGNvdXJzZSwgdGhlIGZpeCBm b3IKPiB0aGlzIHdvdWxkIGJlIGEgc2VwYXJhdGUgcGF0Y2ggc2luY2UgaXQncyBub3QgdGhlIHBy b2JsZW0geW91J3JlCj4gdG91Y2hpbmcgaGVyZS4gQnV0IHRoZW4sIG1heWJlIHdlIGNvdWxkIGRv IHNvbWV0aGluZyBlbHNlIHRvIHByZXZlbnQKPiBkZWVwIFBDIHN0YXRlcyBpbnN0ZWFkIG9mIGRp c2FibGluZyBJUFMuCgpJIHdvdWxkIGFzc3VtZSBpdCdzIElQUyBpdHNlbGYgY2F1c2luZyB0aGUg cHJvYmxlbS4gVGhlIHBhY2thZ2UgQwpzdGF0ZSBoYXZpbmcgc29tZSB1bmRvY3VtZW50ZWQgZWZm ZWN0IG9uIHRoZSBwaXBlIHdvdWxkIHNvdW5kIHF1aXRlIGJhZAp0byBtZS4gQnV0IEkgbXVzdCBh ZG1pdCB0aGF0IEkgaGF2ZW4ndCB0cmllZCBpdCBlaXRoZXIuIEkgZ3Vlc3MgSSBuZWVkCnRvIGZp cmUgdXAgbXkgSFNXIGFnYWluIGFuZCBzZWUgaG93IGl0IGJlaGF2ZXMuCgo+IAo+IE1vc3Qgb2Yg KGFsbD8pIG15IHN1Z2dlc3Rpb25zIGFib3ZlIGFyZSBiaWtlc2hlZHMsIHNvIHdpdGggb3Igd2l0 aG91dAo+IHRoZW06Cj4gUmV2aWV3ZWQtYnk6IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlA aW50ZWwuY29tPgo+IAo+ID4gKwkJCWhzd19waXBlX0FfY3JjX3dhKGRldl9wcml2LCBmYWxzZSk7 Cj4gPiDCoAl9Cj4gPiDCoAo+ID4gwqAJcmV0ID0gMDsKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50 ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=