From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm/i915: Per-DDI I_boost override Date: Thu, 25 Jun 2015 09:37:22 +0200 Message-ID: <20150625073722.GM25769@phenom.ffwll.local> References: <1434626617-26549-1-git-send-email-antti.koskipaa@linux.intel.com> <20150625061409.GM14570@boom> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f42.google.com (mail-wg0-f42.google.com [74.125.82.42]) by gabe.freedesktop.org (Postfix) with ESMTP id 54C136E0C1 for ; Thu, 25 Jun 2015 00:34:35 -0700 (PDT) Received: by wgqq4 with SMTP id q4so54889484wgq.1 for ; Thu, 25 Jun 2015 00:34:34 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20150625061409.GM14570@boom> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Antti Koskipaa , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBKdW4gMjUsIDIwMTUgYXQgMDk6MTQ6MDlBTSArMDMwMCwgRGF2aWQgV2VpbmVoYWxs IHdyb3RlOgo+IExvb2tzIGdvb2QuCj4gCj4gUmV2aWV3ZWQtYnk6IERhdmlkIFdlaW5laGFsbCA8 ZGF2aWQud2VpbmVoYWxsQGxpbnV4LmludGVsLmNvbT4KPiAKPiBPbiBUaHUsIEp1biAxOCwgMjAx NSBhdCAwMjoyMzozN1BNICswMzAwLCBBbnR0aSBLb3NraXBhYSB3cm90ZToKPiA+IEFuIE9FTSBt YXkgcmVxdWVzdCBpbmNyZWFzZWQgSV9ib29zdCBiZXlvbmQgdGhlIHJlY29tbWVuZGVkIHZhbHVl cwo+ID4gYnkgc3BlY2lmeWluZyBhbiBJX2Jvb3N0IHZhbHVlIHRvIGJlIGFwcGxpZWQgdG8gYWxs IHN3aW5nIGVudHJpZXMgZm9yCj4gPiBhIHBvcnQuIFRoZXNlIG92ZXJyaWRlIHZhbHVlcyBhcmUg c3BlY2lmaWVkIGluIFZCVC4KPiA+IAo+ID4gSXNzdWU6IFZJWi01Njc2Cj4gPiBTaWduZWQtb2Zm LWJ5OiBBbnR0aSBLb3NraXBhYSA8YW50dGkua29za2lwYWFAbGludXguaW50ZWwuY29tPgoKV2hh dCBkZXBlbmNpZXMgaGFzIHRoaXMgcGF0Y2g/IFBsZWFzZSBlaXRoZXIgbWVudGlvbiB0aGF0IG9y IGluY2x1ZGUgdGhpcwpwYXRjaCBpbiB3aGF0ZXZlciBvdGhlciBwYXRjaCBzZXJpZXMgaXQgbmVl ZHMsIHNpbmNlIEkgY2FuJ3QgYXBwbHkgdGhpcy4KTWF5YmUgaXQgYWxzbyBzaW1wbHkgbmVlZHMg YSByZWJhc2UsIGJ1dCBjb25mbGljdHMgZG9uJ3QgbG9vayBsaWtlIHRoYXQuCi1EYW5pZWwKCj4g PiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgfCAgMyArKysKPiA+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMgfCAyMSArKysrKysrKysrKysrKysr KysrKysKPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmggfCAgOSArKysrKysr KysKPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyAgfCAzOSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDY0IGlu c2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+ID4gaW5kZXggMDlhNTdhNS4uZTE3ZmQ1NiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPiA+IEBAIC0xNDAyLDYgKzE0MDIsOSBAQCBzdHJ1Y3QgZGRpX3ZidF9wb3J0X2luZm8g ewo+ID4gIAl1aW50OF90IHN1cHBvcnRzX2R2aToxOwo+ID4gIAl1aW50OF90IHN1cHBvcnRzX2hk bWk6MTsKPiA+ICAJdWludDhfdCBzdXBwb3J0c19kcDoxOwo+ID4gKwo+ID4gKwl1aW50OF90IGRw X2Jvb3N0X2xldmVsOwo+ID4gKwl1aW50OF90IGhkbWlfYm9vc3RfbGV2ZWw7Cj4gPiAgfTsKPiA+ ICAKPiA+ICBlbnVtIHBzcl9saW5lc190b193YWl0IHsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9i aW9zLmMKPiA+IGluZGV4IDE5OGZjM2MuLjA2YjVkYzMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Jpb3MuYwo+ID4gQEAgLTk0Niw2ICs5NDYsMTcgQEAgZXJyOgo+ID4gIAltZW1zZXQo ZGV2X3ByaXYtPnZidC5kc2kuc2VxdWVuY2UsIDAsIHNpemVvZihkZXZfcHJpdi0+dmJ0LmRzaS5z ZXF1ZW5jZSkpOwo+ID4gIH0KPiA+ICAKPiA+ICtzdGF0aWMgdTggdHJhbnNsYXRlX2lib29zdCh1 OCB2YWwpCj4gPiArewo+ID4gKwlzdGF0aWMgY29uc3QgdTggbWFwcGluZ1tdID0geyAxLCAzLCA3 IH07IC8qIFNlZSBWQlQgc3BlYyAqLwo+ID4gKwo+ID4gKwlpZiAodmFsID49IEFSUkFZX1NJWkUo bWFwcGluZykpIHsKPiA+ICsJCURSTV9ERUJVR19LTVMoIlVuc3VwcG9ydGVkIElfYm9vc3QgdmFs dWUgZm91bmQgaW4gVkJUICglZCksIGRpc3BsYXkgbWF5IG5vdCB3b3JrIHByb3Blcmx5XG4iLCB2 YWwpOwo+ID4gKwkJcmV0dXJuIDA7Cj4gPiArCX0KPiA+ICsJcmV0dXJuIG1hcHBpbmdbdmFsXTsK PiA+ICt9Cj4gPiArCj4gPiAgc3RhdGljIHZvaWQgcGFyc2VfZGRpX3BvcnQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCwKPiA+ICAJCQkgICBjb25zdCBz dHJ1Y3QgYmRiX2hlYWRlciAqYmRiKQo+ID4gIHsKPiA+IEBAIC0xMDQ2LDYgKzEwNTcsMTYgQEAg c3RhdGljIHZvaWQgcGFyc2VfZGRpX3BvcnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCBlbnVtIHBvcnQgcG9ydCwKPiA+ICAJCQkgICAgICBoZG1pX2xldmVsX3NoaWZ0KTsKPiA+ ICAJCWluZm8tPmhkbWlfbGV2ZWxfc2hpZnQgPSBoZG1pX2xldmVsX3NoaWZ0Owo+ID4gIAl9Cj4g PiArCj4gPiArCS8qIFBhcnNlIHRoZSBJX2Jvb3N0IGNvbmZpZyBmb3IgU0tMIGFuZCBhYm92ZSAq Lwo+ID4gKwlpZiAoYmRiLT52ZXJzaW9uID49IDE5NiAmJiAoY2hpbGQtPmNvbW1vbi5mbGFnc18x ICYgSUJPT1NUX0VOQUJMRSkpIHsKPiA+ICsJCWluZm8tPmRwX2Jvb3N0X2xldmVsID0gdHJhbnNs YXRlX2lib29zdChjaGlsZC0+Y29tbW9uLmlib29zdF9sZXZlbCAmIDB4Rik7Cj4gPiArCQlEUk1f REVCVUdfS01TKCJWQlQgKGUpRFAgYm9vc3QgbGV2ZWwgZm9yIHBvcnQgJWM6ICVkXG4iLAo+ID4g KwkJCSAgICAgIHBvcnRfbmFtZShwb3J0KSwgaW5mby0+ZHBfYm9vc3RfbGV2ZWwpOwo+ID4gKwkJ aW5mby0+aGRtaV9ib29zdF9sZXZlbCA9IHRyYW5zbGF0ZV9pYm9vc3QoY2hpbGQtPmNvbW1vbi5p Ym9vc3RfbGV2ZWwgPj4gNCk7Cj4gPiArCQlEUk1fREVCVUdfS01TKCJWQlQgSERNSSBib29zdCBs ZXZlbCBmb3IgcG9ydCAlYzogJWRcbiIsCj4gPiArCQkJICAgICAgcG9ydF9uYW1lKHBvcnQpLCBp bmZvLT5oZG1pX2Jvb3N0X2xldmVsKTsKPiA+ICsJfQo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMg dm9pZCBwYXJzZV9kZGlfcG9ydHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuaAo+ID4gaW5kZXggYWYwYjQ3Ni4uOGVkZDc1YyAx MDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuaAo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYmlvcy5oCj4gPiBAQCAtMjMxLDYgKzIzMSwx MCBAQCBzdHJ1Y3Qgb2xkX2NoaWxkX2Rldl9jb25maWcgewo+ID4gIC8qIFRoaXMgb25lIGNvbnRh aW5zIGZpZWxkIG9mZnNldHMgdGhhdCBhcmUga25vd24gdG8gYmUgY29tbW9uIGZvciBhbGwgQkRC Cj4gPiAgICogdmVyc2lvbnMuIE5vdGljZSB0aGF0IHRoZSBtZWFuaW5nIG9mIHRoZSBjb250ZW50 cyBjb250ZW50cyBtYXkgc3RpbGwgY2hhbmdlLAo+ID4gICAqIGJ1dCBhdCBsZWFzdCB0aGUgb2Zm c2V0cyBhcmUgY29uc2lzdGVudC4gKi8KPiA+ICsKPiA+ICsvKiBEZWZpbml0aW9ucyBmb3IgZmxh Z3NfMSAqLwo+ID4gKyNkZWZpbmUgSUJPT1NUX0VOQUJMRSAoMTw8MykKPiA+ICsKPiA+ICBzdHJ1 Y3QgY29tbW9uX2NoaWxkX2Rldl9jb25maWcgewo+ID4gIAl1MTYgaGFuZGxlOwo+ID4gIAl1MTYg ZGV2aWNlX3R5cGU7Cj4gPiBAQCAtMjM5LDggKzI0MywxMyBAQCBzdHJ1Y3QgY29tbW9uX2NoaWxk X2Rldl9jb25maWcgewo+ID4gIAl1OCBub3RfY29tbW9uMlsyXTsKPiA+ICAJdTggZGRjX3BpbjsK PiA+ICAJdTE2IGVkaWRfcHRyOwo+ID4gKwl1OCBvYnNvbGV0ZTsKPiA+ICsJdTggZmxhZ3NfMTsK PiA+ICsJdTggbm90X2NvbW1vbjNbMTNdOwo+ID4gKwl1OCBpYm9vc3RfbGV2ZWw7Cj4gPiAgfSBf X3BhY2tlZDsKPiA+ICAKPiA+ICsKPiA+ICAvKiBUaGlzIGZpZWxkIGNoYW5nZXMgZGVwZW5kaW5n IG9uIHRoZSBCREIgdmVyc2lvbiwgc28gdGhlIG1vc3QgcmVsaWFibGUgd2F5IHRvCj4gPiAgICog cmVhZCBpdCBpcyBieSBjaGVja2luZyB0aGUgQkRCIHZlcnNpb24gYW5kIHJlYWRpbmcgdGhlIHJh dyBwb2ludGVyLiAqLwo+ID4gIHVuaW9uIGNoaWxkX2RldmljZV9jb25maWcgewo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGRpLmMKPiA+IGluZGV4IDNhYmNiNDMuLjhlNWU5NGMgMTAwNjQ0Cj4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+IEBAIC00MzQsNiArNDM0LDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfcHJlcGFyZV9kZGlfYnVmZmVycyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVt IHBvcnQgcG9ydCwKPiA+ICB7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gPiAgCXUzMiByZWc7Cj4gPiArCXUzMiBpYm9vc3RfYml0 ID0gMDsKPiA+ICAJaW50IGksIG5faGRtaV9lbnRyaWVzLCBuX2RwX2VudHJpZXMsIG5fZWRwX2Vu dHJpZXMsIGhkbWlfZGVmYXVsdF9lbnRyeSwKPiA+ICAJICAgIHNpemU7Cj4gPiAgCWludCBoZG1p X2xldmVsID0gZGV2X3ByaXYtPnZidC5kZGlfcG9ydF9pbmZvW3BvcnRdLmhkbWlfbGV2ZWxfc2hp ZnQ7Cj4gPiBAQCAtNDU5LDYgKzQ2MCwxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wcmVwYXJlX2Rk aV9idWZmZXJzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcG9ydCBwb3J0LAo+ID4gIAkJ ZGRpX3RyYW5zbGF0aW9uc19oZG1pID0KPiA+ICAJCQkJc2tsX2dldF9idWZfdHJhbnNfaGRtaShk ZXYsICZuX2hkbWlfZW50cmllcyk7Cj4gPiAgCQloZG1pX2RlZmF1bHRfZW50cnkgPSA4Owo+ID4g KwkJLyogSWYgd2UncmUgYm9vc3RpbmcgdGhlIGN1cnJlbnQsIHNldCBiaXQgMzEgb2YgdHJhbnMx ICovCj4gPiArCQlpZiAoZGV2X3ByaXYtPnZidC5kZGlfcG9ydF9pbmZvW3BvcnRdLmhkbWlfYm9v c3RfbGV2ZWwgfHwKPiA+ICsJCSAgICBkZXZfcHJpdi0+dmJ0LmRkaV9wb3J0X2luZm9bcG9ydF0u ZHBfYm9vc3RfbGV2ZWwpCj4gPiArCQkJaWJvb3N0X2JpdCA9IDE8PDMxOwo+ID4gIAl9IGVsc2Ug aWYgKElTX0JST0FEV0VMTChkZXYpKSB7Cj4gPiAgCQlkZGlfdHJhbnNsYXRpb25zX2ZkaSA9IGJk d19kZGlfdHJhbnNsYXRpb25zX2ZkaTsKPiA+ICAJCWRkaV90cmFuc2xhdGlvbnNfZHAgPSBiZHdf ZGRpX3RyYW5zbGF0aW9uc19kcDsKPiA+IEBAIC01MTksNyArNTI0LDcgQEAgc3RhdGljIHZvaWQg aW50ZWxfcHJlcGFyZV9kZGlfYnVmZmVycyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBv cnQgcG9ydCwKPiA+ICAJfQo+ID4gIAo+ID4gIAlmb3IgKGkgPSAwLCByZWcgPSBERElfQlVGX1RS QU5TKHBvcnQpOyBpIDwgc2l6ZTsgaSsrKSB7Cj4gPiAtCQlJOTE1X1dSSVRFKHJlZywgZGRpX3Ry YW5zbGF0aW9uc1tpXS50cmFuczEpOwo+ID4gKwkJSTkxNV9XUklURShyZWcsIGRkaV90cmFuc2xh dGlvbnNbaV0udHJhbnMxIHwgaWJvb3N0X2JpdCk7Cj4gPiAgCQlyZWcgKz0gNDsKPiA+ICAJCUk5 MTVfV1JJVEUocmVnLCBkZGlfdHJhbnNsYXRpb25zW2ldLnRyYW5zMik7Cj4gPiAgCQlyZWcgKz0g NDsKPiA+IEBAIC01MzQsNyArNTM5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJlcGFyZV9kZGlf YnVmZmVycyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBvcnQgcG9ydCwKPiA+ICAJCWhk bWlfbGV2ZWwgPSBoZG1pX2RlZmF1bHRfZW50cnk7Cj4gPiAgCj4gPiAgCS8qIEVudHJ5IDkgaXMg Zm9yIEhETUk6ICovCj4gPiAtCUk5MTVfV1JJVEUocmVnLCBkZGlfdHJhbnNsYXRpb25zX2hkbWlb aGRtaV9sZXZlbF0udHJhbnMxKTsKPiA+ICsJSTkxNV9XUklURShyZWcsIGRkaV90cmFuc2xhdGlv bnNfaGRtaVtoZG1pX2xldmVsXS50cmFuczEgfCBpYm9vc3RfYml0KTsKPiA+ICAJcmVnICs9IDQ7 Cj4gPiAgCUk5MTVfV1JJVEUocmVnLCBkZGlfdHJhbnNsYXRpb25zX2hkbWlbaGRtaV9sZXZlbF0u dHJhbnMyKTsKPiA+ICAJcmVnICs9IDQ7Cj4gPiBAQCAtMTk3OCwxOCArMTk4MywzNiBAQCB2b2lk IHNrbF9kZGlfc2V0X2lib29zdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgbGV2ZWwsCj4g PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Cj4gPiAgCWNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICpkZGlfdHJhbnNsYXRpb25zOwo+ID4g IAl1aW50OF90IGlib29zdDsKPiA+ICsJdWludDhfdCBkcF9pYm9vc3QsIGhkbWlfaWJvb3N0Owo+ ID4gIAlpbnQgbl9lbnRyaWVzOwo+ID4gIAl1MzIgcmVnOwo+ID4gKwl1MzIgaWJvb3N0X2JpdCA9 IDA7Cj4gPiArCj4gPiArCS8qIFZCVCBtYXkgb3ZlcnJpZGUgc3RhbmRhcmQgYm9vc3QgdmFsdWVz ICovCj4gPiArCWRwX2lib29zdCA9IGRldl9wcml2LT52YnQuZGRpX3BvcnRfaW5mb1twb3J0XS5k cF9ib29zdF9sZXZlbDsKPiA+ICsJaGRtaV9pYm9vc3QgPSBkZXZfcHJpdi0+dmJ0LmRkaV9wb3J0 X2luZm9bcG9ydF0uaGRtaV9ib29zdF9sZXZlbDsKPiA+ICAKPiA+ICAJaWYgKHR5cGUgPT0gSU5U RUxfT1VUUFVUX0RJU1BMQVlQT1JUKSB7Cj4gPiAtCQlkZGlfdHJhbnNsYXRpb25zID0gc2tsX2dl dF9idWZfdHJhbnNfZHAoZGV2LCAmbl9lbnRyaWVzKTsKPiA+IC0JCWlib29zdCA9IGRkaV90cmFu c2xhdGlvbnNbcG9ydF0uaV9ib29zdDsKPiA+ICsJCWlmIChkcF9pYm9vc3QpIHsKPiA+ICsJCQlp Ym9vc3QgPSBkcF9pYm9vc3Q7Cj4gPiArCQl9IGVsc2Ugewo+ID4gKwkJCWRkaV90cmFuc2xhdGlv bnMgPSBza2xfZ2V0X2J1Zl90cmFuc19kcChkZXYsICZuX2VudHJpZXMpOwo+ID4gKwkJCWlib29z dCA9IGRkaV90cmFuc2xhdGlvbnNbcG9ydF0uaV9ib29zdDsKPiA+ICsJCX0KPiA+ICAJfSBlbHNl IGlmICh0eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKPiA+IC0JCWRkaV90cmFuc2xhdGlvbnMg PSBza2xfZ2V0X2J1Zl90cmFuc19lZHAoZGV2LCAmbl9lbnRyaWVzKTsKPiA+IC0JCWlib29zdCA9 IGRkaV90cmFuc2xhdGlvbnNbcG9ydF0uaV9ib29zdDsKPiA+ICsJCWlmIChkcF9pYm9vc3QpIHsK PiA+ICsJCQlpYm9vc3QgPSBkcF9pYm9vc3Q7Cj4gPiArCQl9IGVsc2Ugewo+ID4gKwkJCWRkaV90 cmFuc2xhdGlvbnMgPSBza2xfZ2V0X2J1Zl90cmFuc19lZHAoZGV2LCAmbl9lbnRyaWVzKTsKPiA+ ICsJCQlpYm9vc3QgPSBkZGlfdHJhbnNsYXRpb25zW3BvcnRdLmlfYm9vc3Q7Cj4gPiArCQl9Cj4g PiAgCX0gZWxzZSBpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkgewo+ID4gLQkJZGRpX3Ry YW5zbGF0aW9ucyA9IHNrbF9nZXRfYnVmX3RyYW5zX2hkbWkoZGV2LCAmbl9lbnRyaWVzKTsKPiA+ IC0JCWlib29zdCA9IGRkaV90cmFuc2xhdGlvbnNbcG9ydF0uaV9ib29zdDsKPiA+ICsJCWlmICho ZG1pX2lib29zdCkgewo+ID4gKwkJCWlib29zdCA9IGhkbWlfaWJvb3N0Owo+ID4gKwkJfSBlbHNl IHsKPiA+ICsJCQlkZGlfdHJhbnNsYXRpb25zID0gc2tsX2dldF9idWZfdHJhbnNfaGRtaShkZXYs ICZuX2VudHJpZXMpOwo+ID4gKwkJCWlib29zdCA9IGRkaV90cmFuc2xhdGlvbnNbcG9ydF0uaV9i b29zdDsKPiA+ICsJCX0KPiA+ICAJfSBlbHNlIHsKPiA+ICAJCXJldHVybjsKPiA+ICAJfQo+ID4g LS0gCj4gPiAxLjguMy4yCj4gPiAKPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVy LCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=