From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2] drm/i915: Per-DDI I_boost override Date: Fri, 3 Jul 2015 18:21:58 +0300 Message-ID: <20150703152158.GF5176@intel.com> References: <1435922935-834-1-git-send-email-antti.koskipaa@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 64C526E058 for ; Fri, 3 Jul 2015 08:22:10 -0700 (PDT) Content-Disposition: inline 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: Paulo Zanoni Cc: Intel Graphics Development List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKdWwgMDMsIDIwMTUgYXQgMTI6MDk6NDNQTSAtMDMwMCwgUGF1bG8gWmFub25pIHdy b3RlOgo+IDIwMTUtMDctMDMgODoyOCBHTVQtMDM6MDAgQW50dGkgS29za2lwYWEgPGFudHRpLmtv c2tpcGFhQGxpbnV4LmludGVsLmNvbT46Cj4gPiBBbiBPRU0gbWF5IHJlcXVlc3QgaW5jcmVhc2Vk IElfYm9vc3QgYmV5b25kIHRoZSByZWNvbW1lbmRlZCB2YWx1ZXMKPiA+IGJ5IHNwZWNpZnlpbmcg YW4gSV9ib29zdCB2YWx1ZSB0byBiZSBhcHBsaWVkIHRvIGFsbCBzd2luZyBlbnRyaWVzIGZvcgo+ ID4gYSBwb3J0LiBUaGVzZSBvdmVycmlkZSB2YWx1ZXMgYXJlIHNwZWNpZmllZCBpbiBWQlQuCj4g Pgo+ID4gdjI6IHJlYmFzZSBhbmQgcmVtb3ZlIHVudXNlZCBpYm9vc3RfYml0IHZhcmlhYmxlCj4g Pgo+ID4gSXNzdWU6IFZJWi01Njc2Cj4gPiBTaWduZWQtb2ZmLWJ5OiBBbnR0aSBLb3NraXBhYSA8 YW50dGkua29za2lwYWFAbGludXguaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCAgIHwgIDMgKysrCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfYmlvcy5jIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCj4gPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfYmlvcy5oIHwgIDkgKysrKysrKysrCj4gPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGRpLmMgIHwgMzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0KPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDYzIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25z KC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiBpbmRleCAxZGJkOTU3Li42YWE4 MDgzIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gQEAgLTE0MTAsNiArMTQx MCw5IEBAIHN0cnVjdCBkZGlfdmJ0X3BvcnRfaW5mbyB7Cj4gPiAgICAgICAgIHVpbnQ4X3Qgc3Vw cG9ydHNfZHZpOjE7Cj4gPiAgICAgICAgIHVpbnQ4X3Qgc3VwcG9ydHNfaGRtaToxOwo+ID4gICAg ICAgICB1aW50OF90IHN1cHBvcnRzX2RwOjE7Cj4gPiArCj4gPiArICAgICAgIHVpbnQ4X3QgZHBf Ym9vc3RfbGV2ZWw7Cj4gPiArICAgICAgIHVpbnQ4X3QgaGRtaV9ib29zdF9sZXZlbDsKPiA+ICB9 Owo+ID4KPiA+ICBlbnVtIHBzcl9saW5lc190b193YWl0IHsKPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9iaW9zLmMKPiA+IGluZGV4IDJmZjllYjAuLjc2ZTEyZjUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Jpb3MuYwo+ID4gQEAgLTg4Niw2ICs4ODYsMTcgQEAgZXJyOgo+ID4gICAgICAg ICBtZW1zZXQoZGV2X3ByaXYtPnZidC5kc2kuc2VxdWVuY2UsIDAsIHNpemVvZihkZXZfcHJpdi0+ dmJ0LmRzaS5zZXF1ZW5jZSkpOwo+ID4gIH0KPiA+Cj4gPiArc3RhdGljIHU4IHRyYW5zbGF0ZV9p Ym9vc3QodTggdmFsKQo+ID4gK3sKPiA+ICsgICAgICAgc3RhdGljIGNvbnN0IHU4IG1hcHBpbmdb XSA9IHsgMSwgMywgNyB9OyAvKiBTZWUgVkJUIHNwZWMgKi8KPiA+ICsKPiA+ICsgICAgICAgaWYg KHZhbCA+PSBBUlJBWV9TSVpFKG1hcHBpbmcpKSB7Cj4gPiArICAgICAgICAgICAgICAgRFJNX0RF QlVHX0tNUygiVW5zdXBwb3J0ZWQgSV9ib29zdCB2YWx1ZSBmb3VuZCBpbiBWQlQgKCVkKSwgZGlz cGxheSBtYXkgbm90IHdvcmsgcHJvcGVybHlcbiIsIHZhbCk7Cj4gPiArICAgICAgICAgICAgICAg cmV0dXJuIDA7Cj4gPiArICAgICAgIH0KPiA+ICsgICAgICAgcmV0dXJuIG1hcHBpbmdbdmFsXTsK PiA+ICt9Cj4gPiArCj4gPiAgc3RhdGljIHZvaWQgcGFyc2VfZGRpX3BvcnQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCwKPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gPiAgewo+ID4gQEAg LTk4Niw2ICs5OTcsMTYgQEAgc3RhdGljIHZvaWQgcGFyc2VfZGRpX3BvcnQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCwKPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGhkbWlfbGV2ZWxfc2hpZnQpOwo+ID4gICAgICAgICAgICAgICAgIGlu Zm8tPmhkbWlfbGV2ZWxfc2hpZnQgPSBoZG1pX2xldmVsX3NoaWZ0Owo+ID4gICAgICAgICB9Cj4g PiArCj4gPiArICAgICAgIC8qIFBhcnNlIHRoZSBJX2Jvb3N0IGNvbmZpZyBmb3IgU0tMIGFuZCBh Ym92ZSAqLwo+ID4gKyAgICAgICBpZiAoYmRiLT52ZXJzaW9uID49IDE5NiAmJiAoY2hpbGQtPmNv bW1vbi5mbGFnc18xICYgSUJPT1NUX0VOQUJMRSkpIHsKPiA+ICsgICAgICAgICAgICAgICBpbmZv LT5kcF9ib29zdF9sZXZlbCA9IHRyYW5zbGF0ZV9pYm9vc3QoY2hpbGQtPmNvbW1vbi5pYm9vc3Rf bGV2ZWwgJiAweEYpOwo+ID4gKyAgICAgICAgICAgICAgIERSTV9ERUJVR19LTVMoIlZCVCAoZSlE UCBib29zdCBsZXZlbCBmb3IgcG9ydCAlYzogJWRcbiIsCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwb3J0X25hbWUocG9ydCksIGluZm8tPmRwX2Jvb3N0X2xldmVsKTsKPiA+ICsg ICAgICAgICAgICAgICBpbmZvLT5oZG1pX2Jvb3N0X2xldmVsID0gdHJhbnNsYXRlX2lib29zdChj aGlsZC0+Y29tbW9uLmlib29zdF9sZXZlbCA+PiA0KTsKPiA+ICsgICAgICAgICAgICAgICBEUk1f REVCVUdfS01TKCJWQlQgSERNSSBib29zdCBsZXZlbCBmb3IgcG9ydCAlYzogJWRcbiIsCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X25hbWUocG9ydCksIGluZm8tPmhkbWlf Ym9vc3RfbGV2ZWwpOwo+ID4gKyAgICAgICB9Cj4gPiAgfQo+ID4KPiA+ICBzdGF0aWMgdm9pZCBw YXJzZV9kZGlfcG9ydHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Jpb3MuaAo+ID4gaW5kZXggYWYwYjQ3Ni4uOGVkZDc1YyAxMDA2NDQK PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuaAo+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYmlvcy5oCj4gPiBAQCAtMjMxLDYgKzIzMSwxMCBAQCBz dHJ1Y3Qgb2xkX2NoaWxkX2Rldl9jb25maWcgewo+ID4gIC8qIFRoaXMgb25lIGNvbnRhaW5zIGZp ZWxkIG9mZnNldHMgdGhhdCBhcmUga25vd24gdG8gYmUgY29tbW9uIGZvciBhbGwgQkRCCj4gPiAg ICogdmVyc2lvbnMuIE5vdGljZSB0aGF0IHRoZSBtZWFuaW5nIG9mIHRoZSBjb250ZW50cyBjb250 ZW50cyBtYXkgc3RpbGwgY2hhbmdlLAo+ID4gICAqIGJ1dCBhdCBsZWFzdCB0aGUgb2Zmc2V0cyBh cmUgY29uc2lzdGVudC4gKi8KPiA+ICsKPiA+ICsvKiBEZWZpbml0aW9ucyBmb3IgZmxhZ3NfMSAq Lwo+ID4gKyNkZWZpbmUgSUJPT1NUX0VOQUJMRSAoMTw8MykKPiA+ICsKPiA+ICBzdHJ1Y3QgY29t bW9uX2NoaWxkX2Rldl9jb25maWcgewo+ID4gICAgICAgICB1MTYgaGFuZGxlOwo+ID4gICAgICAg ICB1MTYgZGV2aWNlX3R5cGU7Cj4gPiBAQCAtMjM5LDggKzI0MywxMyBAQCBzdHJ1Y3QgY29tbW9u X2NoaWxkX2Rldl9jb25maWcgewo+ID4gICAgICAgICB1OCBub3RfY29tbW9uMlsyXTsKPiA+ICAg ICAgICAgdTggZGRjX3BpbjsKPiA+ICAgICAgICAgdTE2IGVkaWRfcHRyOwo+ID4gKyAgICAgICB1 OCBvYnNvbGV0ZTsKPiA+ICsgICAgICAgdTggZmxhZ3NfMTsKPiA+ICsgICAgICAgdTggbm90X2Nv bW1vbjNbMTNdOwo+ID4gKyAgICAgICB1OCBpYm9vc3RfbGV2ZWw7Cj4gCj4gSW4gdGhlIG9sZCBW QlQgc3BlYyBJIGhhdmUsIGVhY2ggY2hpbGRfZGV2X2NvbmZpZyBpcyBzdXBwb3NlZCB0byBoYXZl Cj4gb25seSAzMyBieXRlcy4gQnV0IGluIHRoaXMgcGF0Y2ggeW91J3JlIGluY3JlYXNpbmcgaXQg dG8gMzguIEkgYmVsaWV2ZQo+IHRoaXMgaXMgd2hhdCdzIGNhdXNpbmcgdGhlIGVycm9ycyBJIHNl ZSB3aGVuIEkgYm9vdCBteSBCRFcuCj4gCj4gQXJlIHlvdSBzdXJlIHRoZXkgaW5jcmVhc2VkIHRo ZSBWQlQncyBDaGlsZERldkluZm8gdG8gbW9yZSB0aGFuIDMzCj4gYnl0ZXM/IEkgZG9uJ3QgaGF2 ZSBhY2Nlc3MgdG8geW91ciBWQlQgc3BlYyByaWdodCBub3csIHNvIEkgY2FuJ3QgZG8gYQo+IHBy b3BlciByZXZpZXcgb3IgYSBzdWdnZXN0aW9uIG9uIGhvdyB0byBmaXggdGhlIHByb2JsZW0uCgpU aGUgc2l6ZSBkZXBlbmRzIG9uIHRoZSB2ZXJzaW9uLiBPbiBCU1cgbGFzdCBJIGxvb2tlZCBpdCB3 YXMgbWF5YmUgMzYgb3IKMzcgYnl0ZXMuCgpJJ20gbm90IHN1cmUgd2Ugd2FudCB0byBjaGFuZ2Ug Y29tbW9uX2NoaWxkX2Rldl9jb25maWcgc2luY2UgaXQncyBtZWFudAp0byBiZSBzb21lIGtpbmQg b2YgY29tbW9uIHN0dWZmLiBTbyBtYXliZSBhZGQgYW5vdGhlciBtZW1iZXIgaW50byB0aGUKdW5p b24gZm9yIHRoaXMgc3R1ZmYuIE9mIGNvdXJzZSB0aGF0IHN0aWxsIGluY3Jhc2VzIHRoZSBzaXpl IG9mIHRoZSB1bmlvbgpzbyBvdGhlciBjaGFuZ2VzIGFyZSByZXF1aXJlZCB0byBtYWtlIGl0IHdv cmsuCgpGb3J0dW5hdGVseSB3ZSBjb3B5IHRoZXNlIHRoaW5ncyBvdXQgZnJvbSB0aGUgVkJULCBz byBJIHRoaW5rIGp1c3QKbWFraW5nIHN1cmUgdGhlIG1lbWNweSgpIGRvZXNuJ3QgdHJ5IHRvIGNv cHkgdG9vIG11Y2ggYW5kIGZpeGluZyB0aGUgc2l6ZQpjaGVjayBzaG91bGQgYmUgYWxsIHRoYXQn cyBuZWVkZWQuIFRoYXQgd291bGQgbGVhdmUgYW55IGV4dHJhIHdlIGRpZG4ndApmaWxsIHdpdGgg dGhlIGNvcHkgemVyb2VkLCBhbmQgaWYgaGF2aW5nIGl0IHplcm9lZCBpc24ndCBnb29kIGVub3Vn aAp3ZSBjYW4gb2YgY291cnNlIHNwcmlua2xlIG1vcmUgdmVyc2lvbiBjaGVja3MgYXJvdW5kLgoK QW5kIEkgZ3Vlc3Mgd2Ugc2hvdWxkIHN0aWxsIGNoZWNrIHRoYXQgdGhlIHNpemUgaXMgYXQgbGVh c3QgMzMgYnl0ZXMKc2luY2UgdGhhdCB3YXMgdGhlIG9mZmljaWFsIHNpemUgZm9yIHRoZSBsb25n ZXN0IHRpbWUuCgo+IAo+ID4gIH0gX19wYWNrZWQ7Cj4gPgo+ID4gKwo+ID4gIC8qIFRoaXMgZmll bGQgY2hhbmdlcyBkZXBlbmRpbmcgb24gdGhlIEJEQiB2ZXJzaW9uLCBzbyB0aGUgbW9zdCByZWxp YWJsZSB3YXkgdG8KPiA+ICAgKiByZWFkIGl0IGlzIGJ5IGNoZWNraW5nIHRoZSBCREIgdmVyc2lv biBhbmQgcmVhZGluZyB0aGUgcmF3IHBvaW50ZXIuICovCj4gPiAgdW5pb24gY2hpbGRfZGV2aWNl X2NvbmZpZyB7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRp LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gaW5kZXggMTVmYzY2YS4u YzgzZjE1ZiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5j Cj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gQEAgLTQ0MCw2 ICs0NDAsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wcmVwYXJlX2RkaV9idWZmZXJzKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGVudW0gcG9ydCBwb3J0LAo+ID4gIHsKPiA+ICAgICAgICAgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ICAgICAg ICAgdTMyIHJlZzsKPiA+ICsgICAgICAgdTMyIGlib29zdF9iaXQgPSAwOwo+ID4gICAgICAgICBp bnQgaSwgbl9oZG1pX2VudHJpZXMsIG5fZHBfZW50cmllcywgbl9lZHBfZW50cmllcywgaGRtaV9k ZWZhdWx0X2VudHJ5LAo+ID4gICAgICAgICAgICAgc2l6ZTsKPiA+ICAgICAgICAgaW50IGhkbWlf bGV2ZWwgPSBkZXZfcHJpdi0+dmJ0LmRkaV9wb3J0X2luZm9bcG9ydF0uaGRtaV9sZXZlbF9zaGlm dDsKPiA+IEBAIC00NjUsNiArNDY2LDEwIEBAIHN0YXRpYyB2b2lkIGludGVsX3ByZXBhcmVfZGRp X2J1ZmZlcnMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwb3J0IHBvcnQsCj4gPiAgICAg ICAgICAgICAgICAgZGRpX3RyYW5zbGF0aW9uc19oZG1pID0KPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2tsX2dldF9idWZfdHJhbnNfaGRtaShkZXYsICZuX2hkbWlfZW50cmll cyk7Cj4gPiAgICAgICAgICAgICAgICAgaGRtaV9kZWZhdWx0X2VudHJ5ID0gODsKPiA+ICsgICAg ICAgICAgICAgICAvKiBJZiB3ZSdyZSBib29zdGluZyB0aGUgY3VycmVudCwgc2V0IGJpdCAzMSBv ZiB0cmFuczEgKi8KPiA+ICsgICAgICAgICAgICAgICBpZiAoZGV2X3ByaXYtPnZidC5kZGlfcG9y dF9pbmZvW3BvcnRdLmhkbWlfYm9vc3RfbGV2ZWwgfHwKPiA+ICsgICAgICAgICAgICAgICAgICAg ZGV2X3ByaXYtPnZidC5kZGlfcG9ydF9pbmZvW3BvcnRdLmRwX2Jvb3N0X2xldmVsKQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgaWJvb3N0X2JpdCA9IDE8PDMxOwo+ID4gICAgICAgICB9IGVs c2UgaWYgKElTX0JST0FEV0VMTChkZXYpKSB7Cj4gPiAgICAgICAgICAgICAgICAgZGRpX3RyYW5z bGF0aW9uc19mZGkgPSBiZHdfZGRpX3RyYW5zbGF0aW9uc19mZGk7Cj4gPiAgICAgICAgICAgICAg ICAgZGRpX3RyYW5zbGF0aW9uc19kcCA9IGJkd19kZGlfdHJhbnNsYXRpb25zX2RwOwo+ID4gQEAg LTUyNSw3ICs1MzAsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wcmVwYXJlX2RkaV9idWZmZXJzKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcG9ydCBwb3J0LAo+ID4gICAgICAgICB9Cj4gPgo+ ID4gICAgICAgICBmb3IgKGkgPSAwLCByZWcgPSBERElfQlVGX1RSQU5TKHBvcnQpOyBpIDwgc2l6 ZTsgaSsrKSB7Cj4gPiAtICAgICAgICAgICAgICAgSTkxNV9XUklURShyZWcsIGRkaV90cmFuc2xh dGlvbnNbaV0udHJhbnMxKTsKPiA+ICsgICAgICAgICAgICAgICBJOTE1X1dSSVRFKHJlZywgZGRp X3RyYW5zbGF0aW9uc1tpXS50cmFuczEgfCBpYm9vc3RfYml0KTsKPiA+ICAgICAgICAgICAgICAg ICByZWcgKz0gNDsKPiA+ICAgICAgICAgICAgICAgICBJOTE1X1dSSVRFKHJlZywgZGRpX3RyYW5z bGF0aW9uc1tpXS50cmFuczIpOwo+ID4gICAgICAgICAgICAgICAgIHJlZyArPSA0Owo+ID4gQEAg LTU0MCw3ICs1NDUsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wcmVwYXJlX2RkaV9idWZmZXJzKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcG9ydCBwb3J0LAo+ID4gICAgICAgICAgICAgICAg IGhkbWlfbGV2ZWwgPSBoZG1pX2RlZmF1bHRfZW50cnk7Cj4gPgo+ID4gICAgICAgICAvKiBFbnRy eSA5IGlzIGZvciBIRE1JOiAqLwo+ID4gLSAgICAgICBJOTE1X1dSSVRFKHJlZywgZGRpX3RyYW5z bGF0aW9uc19oZG1pW2hkbWlfbGV2ZWxdLnRyYW5zMSk7Cj4gPiArICAgICAgIEk5MTVfV1JJVEUo cmVnLCBkZGlfdHJhbnNsYXRpb25zX2hkbWlbaGRtaV9sZXZlbF0udHJhbnMxIHwgaWJvb3N0X2Jp dCk7Cj4gPiAgICAgICAgIHJlZyArPSA0Owo+ID4gICAgICAgICBJOTE1X1dSSVRFKHJlZywgZGRp X3RyYW5zbGF0aW9uc19oZG1pW2hkbWlfbGV2ZWxdLnRyYW5zMik7Cj4gPiAgICAgICAgIHJlZyAr PSA0Owo+ID4gQEAgLTIwODMsMTggKzIwODgsMzUgQEAgc3RhdGljIHZvaWQgc2tsX2RkaV9zZXRf aWJvb3N0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBsZXZlbCwKPiA+ICAgICAgICAgc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ICAg ICAgICAgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKmRkaV90cmFuc2xhdGlvbnM7Cj4gPiAg ICAgICAgIHVpbnQ4X3QgaWJvb3N0Owo+ID4gKyAgICAgICB1aW50OF90IGRwX2lib29zdCwgaGRt aV9pYm9vc3Q7Cj4gPiAgICAgICAgIGludCBuX2VudHJpZXM7Cj4gPiAgICAgICAgIHUzMiByZWc7 Cj4gPgo+ID4gKyAgICAgICAvKiBWQlQgbWF5IG92ZXJyaWRlIHN0YW5kYXJkIGJvb3N0IHZhbHVl cyAqLwo+ID4gKyAgICAgICBkcF9pYm9vc3QgPSBkZXZfcHJpdi0+dmJ0LmRkaV9wb3J0X2luZm9b cG9ydF0uZHBfYm9vc3RfbGV2ZWw7Cj4gPiArICAgICAgIGhkbWlfaWJvb3N0ID0gZGV2X3ByaXYt PnZidC5kZGlfcG9ydF9pbmZvW3BvcnRdLmhkbWlfYm9vc3RfbGV2ZWw7Cj4gPiArCj4gPiAgICAg ICAgIGlmICh0eXBlID09IElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCkgewo+ID4gLSAgICAgICAg ICAgICAgIGRkaV90cmFuc2xhdGlvbnMgPSBza2xfZ2V0X2J1Zl90cmFuc19kcChkZXYsICZuX2Vu dHJpZXMpOwo+ID4gLSAgICAgICAgICAgICAgIGlib29zdCA9IGRkaV90cmFuc2xhdGlvbnNbcG9y dF0uaV9ib29zdDsKPiA+ICsgICAgICAgICAgICAgICBpZiAoZHBfaWJvb3N0KSB7Cj4gPiArICAg ICAgICAgICAgICAgICAgICAgICBpYm9vc3QgPSBkcF9pYm9vc3Q7Cj4gPiArICAgICAgICAgICAg ICAgfSBlbHNlIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRkaV90cmFuc2xhdGlvbnMg PSBza2xfZ2V0X2J1Zl90cmFuc19kcChkZXYsICZuX2VudHJpZXMpOwo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgaWJvb3N0ID0gZGRpX3RyYW5zbGF0aW9uc1twb3J0XS5pX2Jvb3N0Owo+ID4g KyAgICAgICAgICAgICAgIH0KPiA+ICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IElOVEVMX09V VFBVVF9FRFApIHsKPiA+IC0gICAgICAgICAgICAgICBkZGlfdHJhbnNsYXRpb25zID0gc2tsX2dl dF9idWZfdHJhbnNfZWRwKGRldiwgJm5fZW50cmllcyk7Cj4gPiAtICAgICAgICAgICAgICAgaWJv b3N0ID0gZGRpX3RyYW5zbGF0aW9uc1twb3J0XS5pX2Jvb3N0Owo+ID4gKyAgICAgICAgICAgICAg IGlmIChkcF9pYm9vc3QpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlib29zdCA9IGRw X2lib29zdDsKPiA+ICsgICAgICAgICAgICAgICB9IGVsc2Ugewo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgZGRpX3RyYW5zbGF0aW9ucyA9IHNrbF9nZXRfYnVmX3RyYW5zX2VkcChkZXYsICZu X2VudHJpZXMpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWJvb3N0ID0gZGRpX3RyYW5z bGF0aW9uc1twb3J0XS5pX2Jvb3N0Owo+ID4gKyAgICAgICAgICAgICAgIH0KPiA+ICAgICAgICAg fSBlbHNlIGlmICh0eXBlID09IElOVEVMX09VVFBVVF9IRE1JKSB7Cj4gPiAtICAgICAgICAgICAg ICAgZGRpX3RyYW5zbGF0aW9ucyA9IHNrbF9nZXRfYnVmX3RyYW5zX2hkbWkoZGV2LCAmbl9lbnRy aWVzKTsKPiA+IC0gICAgICAgICAgICAgICBpYm9vc3QgPSBkZGlfdHJhbnNsYXRpb25zW3BvcnRd LmlfYm9vc3Q7Cj4gPiArICAgICAgICAgICAgICAgaWYgKGhkbWlfaWJvb3N0KSB7Cj4gPiArICAg ICAgICAgICAgICAgICAgICAgICBpYm9vc3QgPSBoZG1pX2lib29zdDsKPiA+ICsgICAgICAgICAg ICAgICB9IGVsc2Ugewo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZGRpX3RyYW5zbGF0aW9u cyA9IHNrbF9nZXRfYnVmX3RyYW5zX2hkbWkoZGV2LCAmbl9lbnRyaWVzKTsKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIGlib29zdCA9IGRkaV90cmFuc2xhdGlvbnNbcG9ydF0uaV9ib29zdDsK PiA+ICsgICAgICAgICAgICAgICB9Cj4gPiAgICAgICAgIH0gZWxzZSB7Cj4gPiAgICAgICAgICAg ICAgICAgcmV0dXJuOwo+ID4gICAgICAgICB9Cj4gPiAtLQo+ID4gMS44LjEuNQo+ID4KPiA+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiBJbnRlbC1n ZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4g Cj4gCj4gCj4gLS0gCj4gUGF1bG8gWmFub25pCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==