From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH 3/3] drm/i915/glk: Turn on workarounds that apply to Geminilake too Date: Mon, 23 Jan 2017 09:49:42 +0200 Message-ID: <1485157782.3573.21.camel@gmail.com> References: <1484221657-24147-1-git-send-email-ander.conselvan.de.oliveira@intel.com> <1484221657-24147-3-git-send-email-ander.conselvan.de.oliveira@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pf0-x243.google.com (mail-pf0-x243.google.com [IPv6:2607:f8b0:400e:c00::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id D44686E39B for ; Mon, 23 Jan 2017 07:49:48 +0000 (UTC) Received: by mail-pf0-x243.google.com with SMTP id 19so9505018pfo.3 for ; Sun, 22 Jan 2017 23:49:48 -0800 (PST) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi Cc: intel-gfx , "Auld, Matthew" List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAyMDE3LTAxLTIwIGF0IDA4OjA0IC0wODAwLCBSb2RyaWdvIFZpdmkgd3JvdGU6Cj4g T24gVGh1LCBKYW4gMTIsIDIwMTcgYXQgMzo0NyBBTSwgQW5kZXIgQ29uc2VsdmFuIGRlIE9saXZl aXJhCj4gPGFuZGVyLmNvbnNlbHZhbi5kZS5vbGl2ZWlyYUBpbnRlbC5jb20+IHdyb3RlOgo+ID4g Cj4gPiBBcHBseSB3b3JrYXJvdW5kcyB0byBHZW1pbmlsYWtlLCBhbmQgYW5ub2F0YXRlIHRob3Nl IHRoYXQgYXJlIGFwcGxpZWQKPiA+IHVuY29uZGlvbmFsbHkgd2hlbiB0aGV5IGFwcGx5IHRvIEdM SyBiYXNlZCBvbiB0aGUgd29ya2Fyb3VuZCBkYXRhYmFzZS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1i eTogQW5kZXIgQ29uc2VsdmFuIGRlIE9saXZlaXJhIDxhbmRlci5jb25zZWx2YW4uZGUub2xpdmVp cmFAaW50ZQo+ID4gbC5jb20+Cj4gPiAtLS0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmPCoMKgwqDCoMKgfMKgwqA0ICsrLS0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmPCoMKgwqDCoMKgwqDCoMKgfMKgwqA2ICsrKy0tLQo+ID4gwqBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmPCoMKgwqDCoMKgwqDCoHzCoMKgMiArLQo+ID4gwqBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jwqDCoMKgwqDCoMKgwqDCoMKgfCAyMyArKysr KysrKysrKysrKysrLS0tLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmMgfCAzNyArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KPiA+IC0tLQo+ID4gwqA1 IGZpbGVzIGNoYW5nZWQsIDUzIGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQo+ID4gCj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiA+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiA+IGluZGV4IDBlZDk5YWRmLi43 MDI0MTQ0IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gPiBAQCAt MjE2NywxNCArMjE2NywxNCBAQCBzdGF0aWMgdm9pZCBndHRfd3JpdGVfd29ya2Fyb3VuZHMoc3Ry dWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+IMKgwqDCoMKgwqDCoMKgwqDC oCogY2FsbGVkIG9uIGRyaXZlciBsb2FkIGFuZCBhZnRlciBhIEdQVSByZXNldCwgc28geW91IGNh biBwbGFjZQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgKiB3b3JrYXJvdW5kcyBoZXJlIGV2ZW4gaWYg dGhleSBnZXQgb3ZlcndyaXR0ZW4gYnkgR1BVIHJlc2V0Lgo+ID4gwqDCoMKgwqDCoMKgwqDCoMKg Ki8KPiA+IC3CoMKgwqDCoMKgwqDCoC8qIFdhSW5jcmVhc2VEZWZhdWx0VExCRW50cmllczpjaHYs YmR3LHNrbCxieHQgKi8KPiA+ICvCoMKgwqDCoMKgwqDCoC8qIFdhSW5jcmVhc2VEZWZhdWx0VExC RW50cmllczpjaHYsYmR3LHNrbCxieHQsZ2xrICovCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKElT X0JST0FEV0VMTChkZXZfcHJpdikpCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oEk5MTVfV1JJVEUoR0VOOF9MM19MUkFfMV9HUEdQVSwKPiA+IEdFTjhfTDNfTFJBXzFfR1BHUFVf REVGQVVMVF9WQUxVRV9CRFcpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoGVsc2UgaWYgKElTX0NIRVJS WVZJRVcoZGV2X3ByaXYpKQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBJOTE1 X1dSSVRFKEdFTjhfTDNfTFJBXzFfR1BHUFUsCj4gPiBHRU44X0wzX0xSQV8xX0dQR1BVX0RFRkFV TFRfVkFMVUVfQ0hWKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBlbHNlIGlmIChJU19TS1lMQUtFKGRl dl9wcml2KSkKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgSTkxNV9XUklURShH RU44X0wzX0xSQV8xX0dQR1BVLAo+ID4gR0VOOV9MM19MUkFfMV9HUEdQVV9ERUZBVUxUX1ZBTFVF X1NLTCk7Cj4gPiAtwqDCoMKgwqDCoMKgwqBlbHNlIGlmIChJU19CUk9YVE9OKGRldl9wcml2KSkK PiA+ICvCoMKgwqDCoMKgwqDCoGVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBJOTE1X1dSSVRFKEdFTjhfTDNfTFJBXzFfR1BH UFUsCj4gPiBHRU45X0wzX0xSQV8xX0dQR1BVX0RFRkFVTFRfVkFMVUVfQlhUKTsKPiA+IMKgfQo+ ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiA+ IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiA+IGluZGV4IGRiNzE0ZGMuLjdi YjNkMGEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiA+IEBAIC0xMTI2LDEz ICsxMTI2LDEzIEBAIHN0YXRpYyBpbnQgZ2VuOV9pbml0X2luZGlyZWN0Y3R4X2JiKHN0cnVjdAo+ ID4gaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKElTX0JY VF9SRVZJRChkZXZfcHJpdiwgMCwgQlhUX1JFVklEX0ExKSkKPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgd2FfY3R4X2VtaXQoYmF0Y2gsIGluZGV4LCBNSV9BUkJfT05fT0ZGIHwg TUlfQVJCX0RJU0FCTEUpOwo+ID4gCj4gPiAtwqDCoMKgwqDCoMKgwqAvKiBXYUZsdXNoQ29oZXJl bnRMM0NhY2hlTGluZXNBdENvbnRleHRTd2l0Y2g6c2tsLGJ4dCAqLwo+ID4gK8KgwqDCoMKgwqDC oMKgLyogV2FGbHVzaENvaGVyZW50TDNDYWNoZUxpbmVzQXRDb250ZXh0U3dpdGNoOnNrbCxieHQs Z2xrICovCj4gPiDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gZ2VuOF9lbWl0X2ZsdXNoX2NvaGVyZW50 bDNfd2EoZW5naW5lLCBiYXRjaCwgaW5kZXgpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChyZXQg PCAwKQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ID4g wqDCoMKgwqDCoMKgwqDCoGluZGV4ID0gcmV0Owo+ID4gCj4gPiAtwqDCoMKgwqDCoMKgwqAvKiBX YURpc2FibGVHYXRoZXJBdFNldFNoYWRlckNvbW1vblNsaWNlOnNrbCxieHQsa2JsICovCj4gPiAr wqDCoMKgwqDCoMKgwqAvKiBXYURpc2FibGVHYXRoZXJBdFNldFNoYWRlckNvbW1vblNsaWNlOnNr bCxieHQsa2JsLGdsayAqLwo+ID4gwqDCoMKgwqDCoMKgwqDCoHdhX2N0eF9lbWl0KGJhdGNoLCBp bmRleCwgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoHdhX2N0 eF9lbWl0X3JlZyhiYXRjaCwgaW5kZXgsIENPTU1PTl9TTElDRV9DSElDS0VOMik7Cj4gPiDCoMKg wqDCoMKgwqDCoMKgd2FfY3R4X2VtaXQoYmF0Y2gsIGluZGV4LCBfTUFTS0VEX0JJVF9ESVNBQkxF KAo+ID4gQEAgLTExNTYsNyArMTE1Niw3IEBAIHN0YXRpYyBpbnQgZ2VuOV9pbml0X2luZGlyZWN0 Y3R4X2JiKHN0cnVjdAo+ID4gaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdhX2N0eF9lbWl0KGJhdGNoLCBpbmRleCwgMCk7Cj4gPiDC oMKgwqDCoMKgwqDCoMKgfQo+ID4gCj4gPiAtwqDCoMKgwqDCoMKgwqAvKiBXYU1lZGlhUG9vbFN0 YXRlQ21kSW5XQUJCOmJ4dCAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgLyogV2FNZWRpYVBvb2xTdGF0 ZUNtZEluV0FCQjpieHQsZ2xrICovCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKEhBU19QT09MRURf RVUoZW5naW5lLT5pOTE1KSkgewo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAv Kgo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCogRVUgcG9vbCBjb25maWd1 cmF0aW9uIGlzIHNldHVwIGFsb25nIHdpdGggZ29sZGVuIGNvbnRleHQKPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbW9jcy5jCj4gPiBpbmRleCBjNzg3ZmM0Li45YzY3NTM0IDEwMDY0NAo+ID4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMKPiA+IEBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGlj IGJvb2wgZ2V0X21vY3Nfc2V0dGluZ3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ICpkZXZf cHJpdiwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAiUGxhdGZvcm0gdGhhdCBzaG91bGQgaGF2ZSBhIE1PQ1MgdGFibGUgZG9lcwo+ID4gbm90 LlxuIik7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gCj4gPiAtwqDCoMKgwqDCoMKgwqAvKiBX YURpc2FibGVTa2lwQ2FjaGluZzpza2wsYnh0LGtibCAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgLyog V2FEaXNhYmxlU2tpcENhY2hpbmc6c2tsLGJ4dCxrYmwsZ2xrICovCj4gPiDCoMKgwqDCoMKgwqDC oMKgaWYgKElTX0dFTjkoZGV2X3ByaXYpKSB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGludCBpOwo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiBpbmRl eCBiMjU3MzQzLi5jOGViZjFkIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ID4g QEAgLTY1LDEyICs2NSwxMiBAQCBzdGF0aWMgdm9pZCBnZW45X2luaXRfY2xvY2tfZ2F0aW5nKHN0 cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiDCoMKgwqDCoMKgwqDCoMKg STkxNV9XUklURShHRU44X0NPTkZJRzAsCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoEk5MTVfUkVBRChHRU44X0NPTkZJRzApIHwgR0VOOV9ERUZBVUxUX0ZJWEVTKTsK PiA+IAo+ID4gLcKgwqDCoMKgwqDCoMKgLyogV2FFbmFibGVDaGlja2VuRENQUjpza2wsYnh0LGti bCAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgLyogV2FFbmFibGVDaGlja2VuRENQUjpza2wsYnh0LGti bCxnbGsgKi8KPiA+IMKgwqDCoMKgwqDCoMKgwqBJOTE1X1dSSVRFKEdFTjhfQ0hJQ0tFTl9EQ1BS XzEsCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEk5MTVfUkVBRChH RU44X0NISUNLRU5fRENQUl8xKSB8IE1BU0tfV0FLRU1FTSk7Cj4gPiAKPiA+IMKgwqDCoMKgwqDC oMKgwqAvKiBXYUZiY1R1cm5PZmZGYmNXYXRlcm1hcms6c2tsLGJ4dCxrYmwgKi8KPiA+IC3CoMKg wqDCoMKgwqDCoC8qIFdhRmJjV2FrZU1lbU9uOnNrbCxieHQsa2JsICovCj4gPiArwqDCoMKgwqDC oMKgwqAvKiBXYUZiY1dha2VNZW1Pbjpza2wsYnh0LGtibCxnbGsgKi8KPiA+IMKgwqDCoMKgwqDC oMKgwqBJOTE1X1dSSVRFKERJU1BfQVJCX0NUTCwgSTkxNV9SRUFEKERJU1BfQVJCX0NUTCkgfAo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBESVNQX0ZCQ19XTV9ESVMg fAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBESVNQX0ZCQ19NRU1P UllfV0FLRSk7Cj4gPiBAQCAtMTA3LDYgKzEwNywxOSBAQCBzdGF0aWMgdm9pZCBieHRfaW5pdF9j bG9ja19nYXRpbmcoc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFBXTTFf R0FUSU5HX0RJUyB8IFBXTTJfR0FUSU5HX0RJUyk7Cj4gPiDCoH0KPiA+IAo+ID4gK3N0YXRpYyB2 b2lkIGdsa19pbml0X2Nsb2NrX2dhdGluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gPiArewo+ID4gK8KgwqDCoMKgwqDCoMKgZ2VuOV9pbml0X2Nsb2NrX2dhdGluZyhkZXZf cHJpdik7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqAvKgo+ID4gK8KgwqDCoMKgwqDCoMKgwqAq IFdhRGlzYWJsZVBXTUNsb2NrR2F0aW5nOmdsawo+ID4gK8KgwqDCoMKgwqDCoMKgwqAqIEJhY2ts aWdodCBQV00gbWF5IHN0b3AgaW4gdGhlIGFzc2VydGVkIHN0YXRlLCBjYXVzaW5nIGJhY2tsaWdo dAo+ID4gK8KgwqDCoMKgwqDCoMKgwqAqIHRvIHN0YXkgZnVsbHkgb24uCj4gPiArwqDCoMKgwqDC oMKgwqDCoCovCj4gPiArwqDCoMKgwqDCoMKgwqBJOTE1X1dSSVRFKEdFTjlfQ0xLR0FURV9ESVNf MCwgSTkxNV9SRUFEKEdFTjlfQ0xLR0FURV9ESVNfMCkgfAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoFBXTTFfR0FUSU5HX0RJUyB8IFBXTTJfR0FUSU5HX0RJUyk7Cj4g PiArfQo+ID4gKwo+ID4gwqBzdGF0aWMgdm9pZCBpOTE1X3BpbmV2aWV3X2dldF9tZW1fZnJlcShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiDCoHsKPiA+IMKgwqDCoMKgwqDC oMKgwqB1MzIgdG1wOwo+ID4gQEAgLTIxNzYsNyArMjE4OSw3IEBAIHN0YXRpYyB2b2lkIGludGVs X3JlYWRfd21fbGF0ZW5jeShzdHJ1Y3QKPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiAKPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgLyoKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCogV2FXbU1lbW9yeVJlYWRMYXRlbmN5OnNrbAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgKiBXYVdtTWVtb3J5UmVhZExhdGVuY3k6c2tsLGdsawo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCoKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAqIHB1bml0IGRvZXNuJ3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIHJlYWQgbGF0ZW5j eSBzbyB3ZQo+ID4gbmVlZAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCog dG8gYWRkIDJ1cyB0byB0aGUgdmFyaW91cyBsYXRlbmN5IGxldmVscyB3ZSByZXRyaWV2ZSBmcm9t Cj4gPiB0aGUKPiA+IEBAIC03NjU5LDggKzc2NzIsMTAgQEAgdm9pZCBpbnRlbF9pbml0X2Nsb2Nr X2dhdGluZ19ob29rcyhzdHJ1Y3QKPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZXZfcHJpdi0+ZGlzcGxheS5pbml0X2Ns b2NrX2dhdGluZyA9Cj4gPiBza3lsYWtlX2luaXRfY2xvY2tfZ2F0aW5nOwo+ID4gwqDCoMKgwqDC oMKgwqDCoGVsc2UgaWYgKElTX0tBQllMQUtFKGRldl9wcml2KSkKPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZGV2X3ByaXYtPmRpc3BsYXkuaW5pdF9jbG9ja19nYXRpbmcgPQo+ ID4ga2FieWxha2VfaW5pdF9jbG9ja19nYXRpbmc7Cj4gPiAtwqDCoMKgwqDCoMKgwqBlbHNlIGlm IChJU19HRU45X0xQKGRldl9wcml2KSkKPiA+ICvCoMKgwqDCoMKgwqDCoGVsc2UgaWYgKElTX0JS T1hUT04oZGV2X3ByaXYpKQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZXZf cHJpdi0+ZGlzcGxheS5pbml0X2Nsb2NrX2dhdGluZyA9IGJ4dF9pbml0X2Nsb2NrX2dhdGluZzsK PiA+ICvCoMKgwqDCoMKgwqDCoGVsc2UgaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl9wcml2LT5kaXNwbGF5LmluaXRfY2xv Y2tfZ2F0aW5nID0gZ2xrX2luaXRfY2xvY2tfZ2F0aW5nOwo+ID4gwqDCoMKgwqDCoMKgwqDCoGVs c2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGRldl9wcml2LT5kaXNwbGF5LmluaXRfY2xvY2tfZ2F0aW5nID0KPiA+IGJyb2Fk d2VsbF9pbml0X2Nsb2NrX2dhdGluZzsKPiA+IMKgwqDCoMKgwqDCoMKgwqBlbHNlIGlmIChJU19D SEVSUllWSUVXKGRldl9wcml2KSkKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jCj4gPiBpbmRleCBhYjgzZmMyLi5lMTdmMzM5IDEwMDY0NAo+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiA+IEBAIC04MTIsMTAgKzgxMiwxMCBAQCBz dGF0aWMgaW50IGdlbjlfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QKPiA+IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+ID4g Cj4gPiAtwqDCoMKgwqDCoMKgwqAvKiBXYUNvbmV4dFN3aXRjaFdpdGhDb25jdXJyZW50VExCSW52 YWxpZGF0ZTpza2wsYnh0LGtibCAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgLyogV2FDb25leHRTd2l0 Y2hXaXRoQ29uY3VycmVudFRMQkludmFsaWRhdGU6c2tsLGJ4dCxrYmwsZ2xrICovCj4gPiDCoMKg wqDCoMKgwqDCoMKgSTkxNV9XUklURShHRU45X0NTRkVfQ0hJQ0tFTjFfUkNTLAo+ID4gX01BU0tF RF9CSVRfRU5BQkxFKEdFTjlfUFJFRU1QVF9HUEdQVV9TWU5DX1NXSVRDSF9ESVNBQkxFKSk7Cj4g PiAKPiA+IC3CoMKgwqDCoMKgwqDCoC8qIFdhRW5hYmxlTGJzU2xhUmV0cnlUaW1lckRlY3JlbWVu dDpza2wsYnh0LGtibCAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgLyogV2FFbmFibGVMYnNTbGFSZXRy eVRpbWVyRGVjcmVtZW50OnNrbCxieHQsa2JsLGdsayAqLwo+ID4gwqDCoMKgwqDCoMKgwqDCoEk5 MTVfV1JJVEUoQkRXX1NDUkFUQ0gxLCBJOTE1X1JFQUQoQkRXX1NDUkFUQ0gxKSB8Cj4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEdFTjlfTEJTX1NMQV9SRVRSWV9USU1F Ul9ERUNSRU1FTlRfRU5BQkxFKTsKPiA+IAo+ID4gQEAgLTgyMyw4ICs4MjMsOCBAQCBzdGF0aWMg aW50IGdlbjlfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzCj4gPiAqZW5n aW5lKQo+ID4gwqDCoMKgwqDCoMKgwqDCoEk5MTVfV1JJVEUoR0FNX0VDT0NISywgSTkxNV9SRUFE KEdBTV9FQ09DSEspIHwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg RUNPQ0hLX0RJU19UTEIpOwo+ID4gCj4gPiAtwqDCoMKgwqDCoMKgwqAvKiBXYUNsZWFyRmxvd0Nv bnRyb2xHcGdwdUNvbnRleHRTYXZlOnNrbCxieHQsa2JsICovCj4gPiAtwqDCoMKgwqDCoMKgwqAv KiBXYURpc2FibGVQYXJ0aWFsSW5zdFNob290ZG93bjpza2wsYnh0LGtibCAqLwo+ID4gK8KgwqDC oMKgwqDCoMKgLyogV2FDbGVhckZsb3dDb250cm9sR3BncHVDb250ZXh0U2F2ZTpza2wsYnh0LGti bCxnbGsgKi8KPiA+ICvCoMKgwqDCoMKgwqDCoC8qIFdhRGlzYWJsZVBhcnRpYWxJbnN0U2hvb3Rk b3duOnNrbCxieHQsa2JsLGdsayAqLwo+ID4gwqDCoMKgwqDCoMKgwqDCoFdBX1NFVF9CSVRfTUFT S0VEKEdFTjhfUk9XX0NISUNLRU4sCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgRkxPV19DT05UUk9MX0VOQUJMRSB8Cj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgUEFSVElBTF9JTlNUUlVD VElPTl9TSE9PVERPV05fRElTQUJMRSk7Cj4gPiBAQCAtODUzLDEyICs4NTMsMTIgQEAgc3RhdGlj IGludCBnZW45X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0Cj4gPiBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiA+IMKgwqDCoMKgwqDCoMKgwqBXQV9TRVRfQklUX01BU0tFRChHRU45X0hBTEZfU0xJ Q0VfQ0hJQ0tFTjcsCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgR0VOOV9FTkFCTEVfR1BHUFVfUFJFRU1QVElPTik7Cj4gPiAKPiA+IC3CoMKg wqDCoMKgwqDCoC8qIFdhNHg0U1RDT3B0aW1pemF0aW9uRGlzYWJsZTpza2wsYnh0LGtibCAqLwo+ ID4gK8KgwqDCoMKgwqDCoMKgLyogV2E0eDRTVENPcHRpbWl6YXRpb25EaXNhYmxlOnNrbCxieHQs a2JsLGdsayAqLwo+ID4gwqDCoMKgwqDCoMKgwqDCoC8qIFdhRGlzYWJsZVBhcnRpYWxSZXNvbHZl SW5WYzpza2wsYnh0LGtibCAqLwo+ID4gwqDCoMKgwqDCoMKgwqDCoFdBX1NFVF9CSVRfTUFTS0VE KENBQ0hFX01PREVfMSwgKEdFTjhfNHg0X1NUQ19PUFRJTUlaQVRJT05fRElTQUJMRSB8Cj4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgR0VOOV9QQVJUSUFMX1JFU09MVkVfSU5fVkNfRElTQUJM RSkKPiA+ICk7Cj4gPiAKPiA+IC3CoMKgwqDCoMKgwqDCoC8qIFdhQ2NzVGxiUHJlZmV0Y2hEaXNh YmxlOnNrbCxieHQsa2JsICovCj4gPiArwqDCoMKgwqDCoMKgwqAvKiBXYUNjc1RsYlByZWZldGNo RGlzYWJsZTpza2wsYnh0LGtibCxnbGsgKi8KPiA+IMKgwqDCoMKgwqDCoMKgwqBXQV9DTFJfQklU X01BU0tFRChHRU45X0hBTEZfU0xJQ0VfQ0hJQ0tFTjUsCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgR0VOOV9DQ1NfVExCX1BSRUZFVENIX0VO QUJMRSk7Cj4gPiAKPiA+IEBAIC05MDAsMTQgKzkwMCwxNCBAQCBzdGF0aWMgaW50IGdlbjlfaW5p dF93b3JrYXJvdW5kcyhzdHJ1Y3QKPiA+IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBXQV9TRVRfQklUX01BU0tFRChIQUxGX1NMSUNF X0NISUNLRU4zLAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBHRU44X1NBTVBMRVJfUE9XRVJfQllQQVNTX0RJUyk7 Cj4gPiAKPiA+IC3CoMKgwqDCoMKgwqDCoC8qIFdhRGlzYWJsZVNUVW5pdFBvd2VyT3B0aW1pemF0 aW9uOnNrbCxieHQsa2JsICovCj4gPiArwqDCoMKgwqDCoMKgwqAvKiBXYURpc2FibGVTVFVuaXRQ b3dlck9wdGltaXphdGlvbjpza2wsYnh0LGtibCxnbGsgKi8KPiA+IMKgwqDCoMKgwqDCoMKgwqBX QV9TRVRfQklUX01BU0tFRChIQUxGX1NMSUNFX0NISUNLRU4yLCBHRU44X1NUX1BPX0RJU0FCTEUp Owo+ID4gCj4gPiDCoMKgwqDCoMKgwqDCoMKgLyogV2FPQ0xDb2hlcmVudExpbmVGbHVzaDpza2ws Ynh0LGtibCAqLwo+ID4gwqDCoMKgwqDCoMKgwqDCoEk5MTVfV1JJVEUoR0VOOF9MM1NRQ1JFRzQs IChJOTE1X1JFQUQoR0VOOF9MM1NRQ1JFRzQpIHwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEdFTjhfTFFT Q19GTFVTSF9DT0hFUkVOVF9MSU5FUykpOwo+ID4gCj4gPiAtwqDCoMKgwqDCoMKgwqAvKiBXYVZG RVN0YXRlQWZ0ZXJQaXBlQ29udHJvbHdpdGhNZWRpYVN0YXRlQ2xlYXI6c2tsLGJ4dCAqLwo+ID4g K8KgwqDCoMKgwqDCoMKgLyogV2FWRkVTdGF0ZUFmdGVyUGlwZUNvbnRyb2x3aXRoTWVkaWFTdGF0 ZUNsZWFyOnNrbCxieHQsZ2xrICovCj4gPiDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gd2FfcmluZ193 aGl0ZWxpc3RfcmVnKGVuZ2luZSwgR0VOOV9DVFhfUFJFRU1QVF9SRUcpOwo+ID4gwqDCoMKgwqDC oMKgwqDCoGlmIChyZXQpCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVy biByZXQ7Cj4gPiBAQCAtOTE3LDcgKzkxNyw3IEBAIHN0YXRpYyBpbnQgZ2VuOV9pbml0X3dvcmth cm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MKPiA+ICplbmdpbmUpCj4gPiDCoMKgwqDCoMKg wqDCoMKgaWYgKHJldCkKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IHJldDsKPiA+IAo+ID4gLcKgwqDCoMKgwqDCoMKgLyogV2FBbGxvd1VNRFRvTW9kaWZ5SERDQ2hp Y2tlbjE6c2tsLGJ4dCxrYmwgKi8KPiA+ICvCoMKgwqDCoMKgwqDCoC8qIFdhQWxsb3dVTURUb01v ZGlmeUhEQ0NoaWNrZW4xOnNrbCxieHQsa2JsLGdsayAqLwo+ID4gwqDCoMKgwqDCoMKgwqDCoHJl dCA9IHdhX3Jpbmdfd2hpdGVsaXN0X3JlZyhlbmdpbmUsIEdFTjhfSERDX0NISUNLRU4xKTsKPiA+ IMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gcmV0Owo+ID4gQEAgLTExMjgsNiArMTEyOCwyMiBAQCBzdGF0aWMgaW50IGti bF9pbml0X3dvcmthcm91bmRzKHN0cnVjdAo+ID4gaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4g PiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gPiDCoH0KPiA+IAo+ID4gK3N0YXRpYyBpbnQg Z2xrX2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ID4g K3sKPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGVuZ2luZS0+aTkxNTsKPiA+ICvCoMKgwqDCoMKgwqDCoGludCByZXQ7Cj4gPiArCj4gPiArwqDC oMKgwqDCoMKgwqByZXQgPSBnZW45X2luaXRfd29ya2Fyb3VuZHMoZW5naW5lKTsKPiA+ICvCoMKg wqDCoMKgwqDCoGlmIChyZXQpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIHJldDsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoC8qIFdhVG9FbmFibGVId0ZpeEZvclB1 c2hDb25zdEhXQnVnOmdsayAqLwo+IE15IGZpcnN0IHRob3VnaHQgb24gdGhpcyB3YXMgd29uZGVy aW5nIGlmIHdlIHNob3VsZCBoYXZlIHRoYXQgZm9yIEtCTCBhbmQKPiBCWFQuLi4KPiBidXQgdGhl biBJIG5vdGljZWQgaXQgaXMgb25seSB1cCB0byBDMCB0aGVyZSB3aGlsZSBoZXJlIGlzIGZvcmV2 ZXIuLi4uCj4gCj4gPiAKPiA+ICvCoMKgwqDCoMKgwqDCoFdBX1NFVF9CSVRfTUFTS0VEKENPTU1P Tl9TTElDRV9DSElDS0VOMiwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoEdFTjhfU0JFX0RJU0FCTEVfUkVQTEFZX0JVRl9PUFRJTUlaQVRJT04p Owo+IEJ1dCBhbHNvIGhvdyBkaWQgeW91IGNvbWUgdXAgd2l0aCB0aGVzZSBiaXQ/Cj4gUmVzb2x1 dGlvbiBJIHNlZSB0aGVyZSB0ZWxscyB0byByZXNldCBzb21lIGNvdW50ZXIgd2l0aCBpbnZhbGlk YXRlCj4gb3Igc29tZXRoaW5nIGxpa2UgaW5zZXJ0aW5nIDIgemVybyBsZW5ndGggcHVzaCBQUyBh dCBzb21lIHVwZGF0ZS4uLgo+IG5vdCBzdXJlLCBidXQgbm90aW5nIHRoYXQgcG9pbnRlZCBtZSB0 byB0aGlzIGJpdCBoZXJlLi4KCklmIEkgdW5kZXJzdG9vZCBjb3JyZWN0bHksIFdhSW5zZXJ0RHVt bXlQdXNoQ29uc3RQcyBpcyB0aGUgZHVtbXkgcHVzaAp3b3JrYXJvdW5kLiBUaGF0IGlzIGZpeGVk IGluIEdLTCwgQlhUIEMwIGFuZCBLQkwgQzAsIGJ1dCByZXF1aXJlcyB0aGlzIGJpdCB0bwplbmFi bGUgdGhlIGZpeC7CoEVuYWJsaW5nIHRoZSBmaXggaXMgY2FsbGVkwqBXYVRvRW5hYmxlSHdGaXhG b3JQdXNoQ29uc3RIV0J1Zy4KCklzIHRoaXMgY29ycmVjdCBNYXR0aGV3PwoKVGhhbmtzLApBbmRl cgoKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+IMKg aW50IGluaXRfd29ya2Fyb3VuZHNfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gPiDCoHsKPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gPiBAQCAtMTE1Miw2ICsxMTY4LDkgQEAgaW50IGluaXRf d29ya2Fyb3VuZHNfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzCj4gPiAqZW5naW5lKQo+ID4g wqDCoMKgwqDCoMKgwqDCoGlmIChJU19LQUJZTEFLRShkZXZfcHJpdikpCj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBrYmxfaW5pdF93b3JrYXJvdW5kcyhlbmdpbmUp Owo+ID4gCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGdsa19pbml0X3dvcmthcm91 bmRzKGVuZ2luZSk7Cj4gPiArCj4gPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gPiDCoH0K PiA+IAo+ID4gLS0KPiA+IDIuNS41Cj4gPiAKPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCj4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+IAo+IApfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK