From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH v3] drm/i915/glk: Turn on workarounds that apply to Geminilake too Date: Mon, 30 Jan 2017 10:37:48 +0200 Message-ID: <1485765468.5343.1.camel@gmail.com> References: <1485421057-7259-1-git-send-email-ander.conselvan.de.oliveira@intel.com> <1485422218-9102-1-git-send-email-ander.conselvan.de.oliveira@intel.com> <20170126120608.nbvjm7xqt4mtjvpp@boom> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg0-x241.google.com (mail-pg0-x241.google.com [IPv6:2607:f8b0:400e:c05::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 340996E384 for ; Mon, 30 Jan 2017 08:37:54 +0000 (UTC) Received: by mail-pg0-x241.google.com with SMTP id 75so30991538pgf.3 for ; Mon, 30 Jan 2017 00:37:54 -0800 (PST) In-Reply-To: <20170126120608.nbvjm7xqt4mtjvpp@boom> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: David Weinehall Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyMDE3LTAxLTI2IGF0IDE0OjA2ICswMjAwLCBEYXZpZCBXZWluZWhhbGwgd3JvdGU6 Cj4gT24gVGh1LCBKYW4gMjYsIDIwMTcgYXQgMTE6MTY6NThBTSArMDIwMCwgQW5kZXIgQ29uc2Vs dmFuIGRlIE9saXZlaXJhIHdyb3RlOgo+ID4gQXBwbHkgd29ya2Fyb3VuZHMgdG8gR2VtaW5pbGFr ZSwgYW5kIGFubm90YXRlIHRob3NlIHRoYXQgYXJlIGFwcGxpZWQKPiA+IHVuY29uZGl0aW9uYWxs eSB3aGVuIHRoZXkgYXBwbHkgdG8gR0xLIGJhc2VkIG9uIHRoZSB3b3JrYXJvdW5kIGRhdGFiYXNl Lgo+ID4gCj4gPiB2MjogRml4IGNvbW1pdCBtZXNzYWdlIHR5cG9zLiAoRGF2aWQpCj4gPiB2Mzog UmViYXNlLgo+ID4gQ2M6IERhdmlkIFdlaW5laGFsbCA8ZGF2aWQud2VpbmVoYWxsQGxpbnV4Lmlu dGVsLmNvbT4KPiA+IENjOiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBnbWFpbC5jb20+Cj4g PiBTaWduZWQtb2ZmLWJ5OiBBbmRlciBDb25zZWx2YW4gZGUgT2xpdmVpcmEgPGFuZGVyLmNvbnNl bHZhbi5kZS5vbGl2ZWlyYUBpbnRlbC5jb20+Cj4gCj4gUmV2aWV3ZWQtYnk6IERhdmlkIFdlaW5l aGFsbCA8ZGF2aWQud2VpbmVoYWxsQGxpbnV4LmludGVsLmNvbT4KClRoYW5rcy4gSSBwdXNoZWQg dGhpcyBvbmUuCgpBbmRlcgoKPiAKPiA+IC0tLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuY8KgwqDCoMKgwqB8wqDCoDQgKystLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9scmMuY8KgwqDCoMKgwqDCoMKgwqB8wqDCoDYgKysrLS0tCj4gPiDCoGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuY8KgwqDCoMKgwqDCoMKgfMKgwqAyICstCj4gPiDC oGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmPCoMKgwqDCoMKgwqDCoMKgwqB8IDIzICsr KysrKysrKysrKysrKystLS0tCj4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuYyB8IDM3ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQo+ID4gLS0tCj4gPiDC oDUgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCj4gPiAK PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ID4g Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ID4gaW5kZXggNDA2ODVjNi4u MDQ4MDQwZSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ID4gQEAg LTIxODQsMTQgKzIxODQsMTQgQEAgc3RhdGljIHZvaWQgZ3R0X3dyaXRlX3dvcmthcm91bmRzKHN0 cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiDCoAnCoCogY2FsbGVkIG9u IGRyaXZlciBsb2FkIGFuZCBhZnRlciBhIEdQVSByZXNldCwgc28geW91IGNhbiBwbGFjZQo+ID4g wqAJwqAqIHdvcmthcm91bmRzIGhlcmUgZXZlbiBpZiB0aGV5IGdldCBvdmVyd3JpdHRlbiBieSBH UFUgcmVzZXQuCj4gPiDCoAnCoCovCj4gPiAtCS8qIFdhSW5jcmVhc2VEZWZhdWx0VExCRW50cmll czpjaHYsYmR3LHNrbCxieHQsa2JsICovCj4gPiArCS8qIFdhSW5jcmVhc2VEZWZhdWx0VExCRW50 cmllczpjaHYsYmR3LHNrbCxieHQsa2JsLGdsayAqLwo+ID4gwqAJaWYgKElTX0JST0FEV0VMTChk ZXZfcHJpdikpCj4gPiDCoAkJSTkxNV9XUklURShHRU44X0wzX0xSQV8xX0dQR1BVLAo+ID4gR0VO OF9MM19MUkFfMV9HUEdQVV9ERUZBVUxUX1ZBTFVFX0JEVyk7Cj4gPiDCoAllbHNlIGlmIChJU19D SEVSUllWSUVXKGRldl9wcml2KSkKPiA+IMKgCQlJOTE1X1dSSVRFKEdFTjhfTDNfTFJBXzFfR1BH UFUsCj4gPiBHRU44X0wzX0xSQV8xX0dQR1BVX0RFRkFVTFRfVkFMVUVfQ0hWKTsKPiA+IMKgCWVs c2UgaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKQo+ID4gwqAJCUk5MTVfV1JJVEUoR0VOOF9MM19M UkFfMV9HUEdQVSwKPiA+IEdFTjlfTDNfTFJBXzFfR1BHUFVfREVGQVVMVF9WQUxVRV9TS0wpOwo+ ID4gLQllbHNlIGlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKPiA+ICsJZWxzZSBpZiAoSVNfR0VO OV9MUChkZXZfcHJpdikpCj4gPiDCoAkJSTkxNV9XUklURShHRU44X0wzX0xSQV8xX0dQR1BVLAo+ ID4gR0VOOV9MM19MUkFfMV9HUEdQVV9ERUZBVUxUX1ZBTFVFX0JYVCk7Cj4gPiDCoH0KPiA+IMKg Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiA+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiA+IGluZGV4IGJlZTlkNTYuLjBlN2I5 NTAgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiA+IEBAIC0xMTAxLDEzICsx MTAxLDEzIEBAIHN0YXRpYyBpbnQgZ2VuOV9pbml0X2luZGlyZWN0Y3R4X2JiKHN0cnVjdAo+ID4g aW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gPiDCoAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gPiDCoAl1aW50MzJfdCBpbmRleCA9IHdhX2N0eF9z dGFydCh3YV9jdHgsICpvZmZzZXQsIENBQ0hFTElORV9EV09SRFMpOwo+ID4gwqAKPiA+IC0JLyog V2FGbHVzaENvaGVyZW50TDNDYWNoZUxpbmVzQXRDb250ZXh0U3dpdGNoOnNrbCxieHQgKi8KPiA+ ICsJLyogV2FGbHVzaENvaGVyZW50TDNDYWNoZUxpbmVzQXRDb250ZXh0U3dpdGNoOnNrbCxieHQs Z2xrICovCj4gPiDCoAlyZXQgPSBnZW44X2VtaXRfZmx1c2hfY29oZXJlbnRsM193YShlbmdpbmUs IGJhdGNoLCBpbmRleCk7Cj4gPiDCoAlpZiAocmV0IDwgMCkKPiA+IMKgCQlyZXR1cm4gcmV0Owo+ ID4gwqAJaW5kZXggPSByZXQ7Cj4gPiDCoAo+ID4gLQkvKiBXYURpc2FibGVHYXRoZXJBdFNldFNo YWRlckNvbW1vblNsaWNlOnNrbCxieHQsa2JsICovCj4gPiArCS8qIFdhRGlzYWJsZUdhdGhlckF0 U2V0U2hhZGVyQ29tbW9uU2xpY2U6c2tsLGJ4dCxrYmwsZ2xrICovCj4gPiDCoAl3YV9jdHhfZW1p dChiYXRjaCwgaW5kZXgsIE1JX0xPQURfUkVHSVNURVJfSU1NKDEpKTsKPiA+IMKgCXdhX2N0eF9l bWl0X3JlZyhiYXRjaCwgaW5kZXgsIENPTU1PTl9TTElDRV9DSElDS0VOMik7Cj4gPiDCoAl3YV9j dHhfZW1pdChiYXRjaCwgaW5kZXgsIF9NQVNLRURfQklUX0RJU0FCTEUoCj4gPiBAQCAtMTEzMSw3 ICsxMTMxLDcgQEAgc3RhdGljIGludCBnZW45X2luaXRfaW5kaXJlY3RjdHhfYmIoc3RydWN0Cj4g PiBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiA+IMKgCQl3YV9jdHhfZW1pdChiYXRjaCwgaW5k ZXgsIDApOwo+ID4gwqAJfQo+ID4gwqAKPiA+IC0JLyogV2FNZWRpYVBvb2xTdGF0ZUNtZEluV0FC QjpieHQgKi8KPiA+ICsJLyogV2FNZWRpYVBvb2xTdGF0ZUNtZEluV0FCQjpieHQsZ2xrICovCj4g PiDCoAlpZiAoSEFTX1BPT0xFRF9FVShlbmdpbmUtPmk5MTUpKSB7Cj4gPiDCoAkJLyoKPiA+IMKg CQnCoCogRVUgcG9vbCBjb25maWd1cmF0aW9uIGlzIHNldHVwIGFsb25nIHdpdGggZ29sZGVuIGNv bnRleHQKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMK PiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCj4gPiBpbmRleCA4Zjk4ZmM3 Li43NzNlMzYyIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9j cy5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMKPiA+IEBAIC0x OTEsNyArMTkxLDcgQEAgc3RhdGljIGJvb2wgZ2V0X21vY3Nfc2V0dGluZ3Moc3RydWN0IGRybV9p OTE1X3ByaXZhdGUKPiA+ICpkZXZfcHJpdiwKPiA+IMKgCQkJwqDCoCJQbGF0Zm9ybSB0aGF0IHNo b3VsZCBoYXZlIGEgTU9DUyB0YWJsZSBkb2VzCj4gPiBub3QuXG4iKTsKPiA+IMKgCX0KPiA+IMKg Cj4gPiAtCS8qIFdhRGlzYWJsZVNraXBDYWNoaW5nOnNrbCxieHQsa2JsICovCj4gPiArCS8qIFdh RGlzYWJsZVNraXBDYWNoaW5nOnNrbCxieHQsa2JsLGdsayAqLwo+ID4gwqAJaWYgKElTX0dFTjko ZGV2X3ByaXYpKSB7Cj4gPiDCoAkJaW50IGk7Cj4gPiDCoAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcG0uYwo+ID4gaW5kZXggMDg1NDhhNC4uOGZjMWU4OWYgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jCj4gPiBAQCAtNjUsMTIgKzY1LDEyIEBAIHN0YXRpYyB2b2lkIGdlbjlfaW5p dF9jbG9ja19nYXRpbmcoc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ IMKgCUk5MTVfV1JJVEUoR0VOOF9DT05GSUcwLAo+ID4gwqAJCcKgwqDCoEk5MTVfUkVBRChHRU44 X0NPTkZJRzApIHwgR0VOOV9ERUZBVUxUX0ZJWEVTKTsKPiA+IMKgCj4gPiAtCS8qIFdhRW5hYmxl Q2hpY2tlbkRDUFI6c2tsLGJ4dCxrYmwgKi8KPiA+ICsJLyogV2FFbmFibGVDaGlja2VuRENQUjpz a2wsYnh0LGtibCxnbGsgKi8KPiA+IMKgCUk5MTVfV1JJVEUoR0VOOF9DSElDS0VOX0RDUFJfMSwK PiA+IMKgCQnCoMKgwqBJOTE1X1JFQUQoR0VOOF9DSElDS0VOX0RDUFJfMSkgfCBNQVNLX1dBS0VN RU0pOwo+ID4gwqAKPiA+IMKgCS8qIFdhRmJjVHVybk9mZkZiY1dhdGVybWFyazpza2wsYnh0LGti bCAqLwo+ID4gLQkvKiBXYUZiY1dha2VNZW1Pbjpza2wsYnh0LGtibCAqLwo+ID4gKwkvKiBXYUZi Y1dha2VNZW1Pbjpza2wsYnh0LGtibCxnbGsgKi8KPiA+IMKgCUk5MTVfV1JJVEUoRElTUF9BUkJf Q1RMLCBJOTE1X1JFQUQoRElTUF9BUkJfQ1RMKSB8Cj4gPiDCoAkJwqDCoMKgRElTUF9GQkNfV01f RElTIHwKPiA+IMKgCQnCoMKgwqBESVNQX0ZCQ19NRU1PUllfV0FLRSk7Cj4gPiBAQCAtMTA3LDYg KzEwNywxOSBAQCBzdGF0aWMgdm9pZCBieHRfaW5pdF9jbG9ja19nYXRpbmcoc3RydWN0Cj4gPiBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+IMKgCQkJwqDCoMKgUFdNMV9HQVRJTkdfRElT IHwgUFdNMl9HQVRJTkdfRElTKTsKPiA+IMKgfQo+ID4gwqAKPiA+ICtzdGF0aWMgdm9pZCBnbGtf aW5pdF9jbG9ja19nYXRpbmcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4g K3sKPiA+ICsJZ2VuOV9pbml0X2Nsb2NrX2dhdGluZyhkZXZfcHJpdik7Cj4gPiArCj4gPiArCS8q Cj4gPiArCcKgKiBXYURpc2FibGVQV01DbG9ja0dhdGluZzpnbGsKPiA+ICsJwqAqIEJhY2tsaWdo dCBQV00gbWF5IHN0b3AgaW4gdGhlIGFzc2VydGVkIHN0YXRlLCBjYXVzaW5nIGJhY2tsaWdodAo+ ID4gKwnCoCogdG8gc3RheSBmdWxseSBvbi4KPiA+ICsJwqAqLwo+ID4gKwlJOTE1X1dSSVRFKEdF TjlfQ0xLR0FURV9ESVNfMCwgSTkxNV9SRUFEKEdFTjlfQ0xLR0FURV9ESVNfMCkgfAo+ID4gKwkJ wqDCoMKgUFdNMV9HQVRJTkdfRElTIHwgUFdNMl9HQVRJTkdfRElTKTsKPiA+ICt9Cj4gPiArCj4g PiDCoHN0YXRpYyB2b2lkIGk5MTVfcGluZXZpZXdfZ2V0X21lbV9mcmVxKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiA+IMKgewo+ID4gwqAJdTMyIHRtcDsKPiA+IEBAIC0yMTc2 LDcgKzIxODksNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9yZWFkX3dtX2xhdGVuY3koc3RydWN0Cj4g PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+IMKgCQl9Cj4gPiDCoAo+ID4gwqAJCS8q Cj4gPiAtCQnCoCogV2FXbU1lbW9yeVJlYWRMYXRlbmN5OnNrbAo+ID4gKwkJwqAqIFdhV21NZW1v cnlSZWFkTGF0ZW5jeTpza2wsZ2xrCj4gPiDCoAkJwqAqCj4gPiDCoAkJwqAqIHB1bml0IGRvZXNu J3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIHJlYWQgbGF0ZW5jeSBzbyB3ZQo+ID4gbmVlZAo+ID4g wqAJCcKgKiB0byBhZGQgMnVzIHRvIHRoZSB2YXJpb3VzIGxhdGVuY3kgbGV2ZWxzIHdlIHJldHJp ZXZlCj4gPiBmcm9tIHRoZQo+ID4gQEAgLTc2NTgsOCArNzY3MSwxMCBAQCB2b2lkIGludGVsX2lu aXRfY2xvY2tfZ2F0aW5nX2hvb2tzKHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gPiDCoAkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdF9jbG9ja19nYXRpbmcgPQo+ID4gc2t5 bGFrZV9pbml0X2Nsb2NrX2dhdGluZzsKPiA+IMKgCWVsc2UgaWYgKElTX0tBQllMQUtFKGRldl9w cml2KSkKPiA+IMKgCQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0X2Nsb2NrX2dhdGluZyA9Cj4gPiBr YWJ5bGFrZV9pbml0X2Nsb2NrX2dhdGluZzsKPiA+IC0JZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZf cHJpdikpCj4gPiArCWVsc2UgaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQo+ID4gwqAJCWRldl9w cml2LT5kaXNwbGF5LmluaXRfY2xvY2tfZ2F0aW5nID0KPiA+IGJ4dF9pbml0X2Nsb2NrX2dhdGlu ZzsKPiA+ICsJZWxzZSBpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gPiArCQlkZXZfcHJp di0+ZGlzcGxheS5pbml0X2Nsb2NrX2dhdGluZyA9Cj4gPiBnbGtfaW5pdF9jbG9ja19nYXRpbmc7 Cj4gPiDCoAllbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+ID4gwqAJCWRldl9wcml2 LT5kaXNwbGF5LmluaXRfY2xvY2tfZ2F0aW5nID0KPiA+IGJyb2Fkd2VsbF9pbml0X2Nsb2NrX2dh dGluZzsKPiA+IMKgCWVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ID4gYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiA+IGluZGV4IDY5MDM1ZTQuLmQz MmNiYmEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ ID4gQEAgLTgxMiwxMCArODEyLDEwIEBAIHN0YXRpYyBpbnQgZ2VuOV9pbml0X3dvcmthcm91bmRz KHN0cnVjdAo+ID4gaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gPiDCoAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gPiDCoAlpbnQgcmV0Owo+ID4g wqAKPiA+IC0JLyogV2FDb25leHRTd2l0Y2hXaXRoQ29uY3VycmVudFRMQkludmFsaWRhdGU6c2ts LGJ4dCxrYmwgKi8KPiA+ICsJLyogV2FDb25leHRTd2l0Y2hXaXRoQ29uY3VycmVudFRMQkludmFs aWRhdGU6c2tsLGJ4dCxrYmwsZ2xrICovCj4gPiDCoAlJOTE1X1dSSVRFKEdFTjlfQ1NGRV9DSElD S0VOMV9SQ1MsCj4gPiBfTUFTS0VEX0JJVF9FTkFCTEUoR0VOOV9QUkVFTVBUX0dQR1BVX1NZTkNf U1dJVENIX0RJU0FCTEUpKTsKPiA+IMKgCj4gPiAtCS8qIFdhRW5hYmxlTGJzU2xhUmV0cnlUaW1l ckRlY3JlbWVudDpza2wsYnh0LGtibCAqLwo+ID4gKwkvKiBXYUVuYWJsZUxic1NsYVJldHJ5VGlt ZXJEZWNyZW1lbnQ6c2tsLGJ4dCxrYmwsZ2xrICovCj4gPiDCoAlJOTE1X1dSSVRFKEJEV19TQ1JB VENIMSwgSTkxNV9SRUFEKEJEV19TQ1JBVENIMSkgfAo+ID4gwqAJCcKgwqDCoEdFTjlfTEJTX1NM QV9SRVRSWV9USU1FUl9ERUNSRU1FTlRfRU5BQkxFKTsKPiA+IMKgCj4gPiBAQCAtODIzLDggKzgy Myw4IEBAIHN0YXRpYyBpbnQgZ2VuOV9pbml0X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MKPiA+ICplbmdpbmUpCj4gPiDCoAlJOTE1X1dSSVRFKEdBTV9FQ09DSEssIEk5MTVfUkVB RChHQU1fRUNPQ0hLKSB8Cj4gPiDCoAkJwqDCoMKgRUNPQ0hLX0RJU19UTEIpOwo+ID4gwqAKPiA+ IC0JLyogV2FDbGVhckZsb3dDb250cm9sR3BncHVDb250ZXh0U2F2ZTpza2wsYnh0LGtibCAqLwo+ ID4gLQkvKiBXYURpc2FibGVQYXJ0aWFsSW5zdFNob290ZG93bjpza2wsYnh0LGtibCAqLwo+ID4g KwkvKiBXYUNsZWFyRmxvd0NvbnRyb2xHcGdwdUNvbnRleHRTYXZlOnNrbCxieHQsa2JsLGdsayAq Lwo+ID4gKwkvKiBXYURpc2FibGVQYXJ0aWFsSW5zdFNob290ZG93bjpza2wsYnh0LGtibCxnbGsg Ki8KPiA+IMKgCVdBX1NFVF9CSVRfTUFTS0VEKEdFTjhfUk9XX0NISUNLRU4sCj4gPiDCoAkJCcKg wqBGTE9XX0NPTlRST0xfRU5BQkxFIHwKPiA+IMKgCQkJwqDCoFBBUlRJQUxfSU5TVFJVQ1RJT05f U0hPT1RET1dOX0RJU0FCTEUpOwo+ID4gQEAgLTg1MywxMiArODUzLDEyIEBAIHN0YXRpYyBpbnQg Z2VuOV9pbml0X3dvcmthcm91bmRzKHN0cnVjdAo+ID4gaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gPiDCoAlXQV9TRVRfQklUX01BU0tFRChHRU45X0hBTEZfU0xJQ0VfQ0hJQ0tFTjcsCj4gPiDC oAkJCcKgwqBHRU45X0VOQUJMRV9HUEdQVV9QUkVFTVBUSU9OKTsKPiA+IMKgCj4gPiAtCS8qIFdh NHg0U1RDT3B0aW1pemF0aW9uRGlzYWJsZTpza2wsYnh0LGtibCAqLwo+ID4gKwkvKiBXYTR4NFNU Q09wdGltaXphdGlvbkRpc2FibGU6c2tsLGJ4dCxrYmwsZ2xrICovCj4gPiDCoAkvKiBXYURpc2Fi bGVQYXJ0aWFsUmVzb2x2ZUluVmM6c2tsLGJ4dCxrYmwgKi8KPiA+IMKgCVdBX1NFVF9CSVRfTUFT S0VEKENBQ0hFX01PREVfMSwgKEdFTjhfNHg0X1NUQ19PUFRJTUlaQVRJT05fRElTQUJMRQo+ID4g fAo+ID4gwqAJCQkJCcKgR0VOOV9QQVJUSUFMX1JFU09MVkVfSU5fVkNfRElTQUJMRQo+ID4gKSk7 Cj4gPiDCoAo+ID4gLQkvKiBXYUNjc1RsYlByZWZldGNoRGlzYWJsZTpza2wsYnh0LGtibCAqLwo+ ID4gKwkvKiBXYUNjc1RsYlByZWZldGNoRGlzYWJsZTpza2wsYnh0LGtibCxnbGsgKi8KPiA+IMKg CVdBX0NMUl9CSVRfTUFTS0VEKEdFTjlfSEFMRl9TTElDRV9DSElDS0VONSwKPiA+IMKgCQkJwqDC oEdFTjlfQ0NTX1RMQl9QUkVGRVRDSF9FTkFCTEUpOwo+ID4gwqAKPiA+IEBAIC05MDAsMTQgKzkw MCwxNCBAQCBzdGF0aWMgaW50IGdlbjlfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QKPiA+IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+ID4gwqAJCVdBX1NFVF9CSVRfTUFTS0VEKEhBTEZfU0xJQ0Vf Q0hJQ0tFTjMsCj4gPiDCoAkJCQnCoMKgR0VOOF9TQU1QTEVSX1BPV0VSX0JZUEFTU19ESVMpOwo+ ID4gwqAKPiA+IC0JLyogV2FEaXNhYmxlU1RVbml0UG93ZXJPcHRpbWl6YXRpb246c2tsLGJ4dCxr YmwgKi8KPiA+ICsJLyogV2FEaXNhYmxlU1RVbml0UG93ZXJPcHRpbWl6YXRpb246c2tsLGJ4dCxr YmwsZ2xrICovCj4gPiDCoAlXQV9TRVRfQklUX01BU0tFRChIQUxGX1NMSUNFX0NISUNLRU4yLCBH RU44X1NUX1BPX0RJU0FCTEUpOwo+ID4gwqAKPiA+IMKgCS8qIFdhT0NMQ29oZXJlbnRMaW5lRmx1 c2g6c2tsLGJ4dCxrYmwgKi8KPiA+IMKgCUk5MTVfV1JJVEUoR0VOOF9MM1NRQ1JFRzQsIChJOTE1 X1JFQUQoR0VOOF9MM1NRQ1JFRzQpIHwKPiA+IMKgCQkJCcKgwqDCoMKgR0VOOF9MUVNDX0ZMVVNI X0NPSEVSRU5UX0xJTkVTKSk7Cj4gPiDCoAo+ID4gLQkvKiBXYVZGRVN0YXRlQWZ0ZXJQaXBlQ29u dHJvbHdpdGhNZWRpYVN0YXRlQ2xlYXI6c2tsLGJ4dCAqLwo+ID4gKwkvKiBXYVZGRVN0YXRlQWZ0 ZXJQaXBlQ29udHJvbHdpdGhNZWRpYVN0YXRlQ2xlYXI6c2tsLGJ4dCxnbGsgKi8KPiA+IMKgCXJl dCA9IHdhX3Jpbmdfd2hpdGVsaXN0X3JlZyhlbmdpbmUsIEdFTjlfQ1RYX1BSRUVNUFRfUkVHKTsK PiA+IMKgCWlmIChyZXQpCj4gPiDCoAkJcmV0dXJuIHJldDsKPiA+IEBAIC05MTcsNyArOTE3LDcg QEAgc3RhdGljIGludCBnZW45X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9j cwo+ID4gKmVuZ2luZSkKPiA+IMKgCWlmIChyZXQpCj4gPiDCoAkJcmV0dXJuIHJldDsKPiA+IMKg Cj4gPiAtCS8qIFdhQWxsb3dVTURUb01vZGlmeUhEQ0NoaWNrZW4xOnNrbCxieHQsa2JsICovCj4g PiArCS8qIFdhQWxsb3dVTURUb01vZGlmeUhEQ0NoaWNrZW4xOnNrbCxieHQsa2JsLGdsayAqLwo+ ID4gwqAJcmV0ID0gd2FfcmluZ193aGl0ZWxpc3RfcmVnKGVuZ2luZSwgR0VOOF9IRENfQ0hJQ0tF TjEpOwo+ID4gwqAJaWYgKHJldCkKPiA+IMKgCQlyZXR1cm4gcmV0Owo+ID4gQEAgLTExMjAsNiAr MTEyMCwyMiBAQCBzdGF0aWMgaW50IGtibF9pbml0X3dvcmthcm91bmRzKHN0cnVjdAo+ID4gaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gPiDCoAlyZXR1cm4gMDsKPiA+IMKgfQo+ID4gwqAKPiA+ ICtzdGF0aWMgaW50IGdsa19pbml0X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGVuZ2luZS0+aTkxNTsKPiA+ICsJaW50IHJldDsKPiA+ICsKPiA+ICsJcmV0ID0gZ2VuOV9pbml0 X3dvcmthcm91bmRzKGVuZ2luZSk7Cj4gPiArCWlmIChyZXQpCj4gPiArCQlyZXR1cm4gcmV0Owo+ ID4gKwo+ID4gKwkvKiBXYVRvRW5hYmxlSHdGaXhGb3JQdXNoQ29uc3RIV0J1ZzpnbGsgKi8KPiA+ ICsJV0FfU0VUX0JJVF9NQVNLRUQoQ09NTU9OX1NMSUNFX0NISUNLRU4yLAo+ID4gKwkJCcKgwqBH RU44X1NCRV9ESVNBQkxFX1JFUExBWV9CVUZfT1BUSU1JWkFUSU9OKTsKPiA+ICsKPiA+ICsJcmV0 dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gwqBpbnQgaW5pdF93b3JrYXJvdW5kc19yaW5nKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiA+IMKgewo+ID4gwqAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ID4gQEAgLTExNDQsNiArMTE2MCw5 IEBAIGludCBpbml0X3dvcmthcm91bmRzX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcwo+ID4g KmVuZ2luZSkKPiA+IMKgCWlmIChJU19LQUJZTEFLRShkZXZfcHJpdikpCj4gPiDCoAkJcmV0dXJu IGtibF9pbml0X3dvcmthcm91bmRzKGVuZ2luZSk7Cj4gPiDCoAo+ID4gKwlpZiAoSVNfR0VNSU5J TEFLRShkZXZfcHJpdikpCj4gPiArCQlyZXR1cm4gZ2xrX2luaXRfd29ya2Fyb3VuZHMoZW5naW5l KTsKPiA+ICsKPiA+IMKgCXJldHVybiAwOwo+ID4gwqB9Cj4gPiDCoAo+ID4gLS3CoAo+ID4gMi41 LjUKPiA+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK