From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [RFC PATCH] drm/i915/skl: Add DC6 disabling as a power well Date: Thu, 17 Sep 2015 14:45:34 +0300 Message-ID: <20150917114534.GN26517@intel.com> References: <1441972522-31367-1-git-send-email-patrik.jakobsson@linux.intel.com> <20150916201007.GK26517@intel.com> <20150917111437.GM26517@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 0EE5F6E68D for ; Thu, 17 Sep 2015 04:45:37 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20150917111437.GM26517@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Patrik Jakobsson Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBTZXAgMTcsIDIwMTUgYXQgMDI6MTQ6MzdQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFdlZCwgU2VwIDE2LCAyMDE1IGF0IDExOjEwOjA3UE0gKzAzMDAsIFZpbGxl IFN5cmrDpGzDpCB3cm90ZToKPiA+IE9uIEZyaSwgU2VwIDExLCAyMDE1IGF0IDAxOjU1OjIyUE0g KzAyMDAsIFBhdHJpayBKYWtvYnNzb24gd3JvdGU6Cj4gPiA+IFdlIG5lZWQgdG8gYmUgYWJsZSB0 byBjb250cm9sIGlmIERDNiBpcyBhbGxvd2VkIG9yIG5vdC4gTXVjaCBsaWtlCj4gPiA+IHJlcXVl c3RpbmcgcG93ZXIgdG8gYSBzcGVjaWZpYyBwaWVjZSBvZiB0aGUgaGFyZHdhcmUgd2UgbmVlZCB0 byBiZSBhYmxlCj4gPiA+IHRvIHJlcXVlc3QgdGhhdCB3ZSBkb24ndCBlbnRlciBEQzYgZHVyaW5n IGNlcnRhaW4gaHcgYWNjZXNzLgo+ID4gPiAKPiA+ID4gVG8gc29sdmUgdGhpcyB3aXRob3V0IGlu dHJvZHVjaW5nIHRvbyBtdWNoIGluZnJhc3RydWN0dXJlIEknbSBob29raW5nCj4gPiA+IGludG8g dGhlIHBvd2VyIHdlbGwgLyBwb3dlciBkb21haW4gZnJhbWV3b3JrLiBEQzYgcHJldmVudGlvbiBp cyBtb2RlbGVkCj4gPiA+IG11Y2ggbGlrZSBhbiBlbmFibGVkIHBvd2VyIHdlbGwuIFRodXMgSSdt IHVzaW5nIHRoZSB0ZXJtaW5vbG9neSBvbi9vZmYKPiA+ID4gZm9yIERDIHN0YXRlcyBpbnN0ZWFk IG9mIGVuYWJsZS9kaXNhYmxlLgo+ID4gPiAKPiA+ID4gVGhlIHByb2JsZW0gdGhhdCBzdGFydGVk IHRoaXMgd29yayBpcyB0aGUgbmVlZCBmb3IgREM2IHRvIGJlIGRpc2FibGVkCj4gPiA+IHdoZW4g YWNjZXNzaW5nIERQX0FVWF9BIGR1cmluZyBDUlRDIG9uL29mZi4gVGhhdCBpcyBhbHNvIGZpeGVk IGluIHRoaXMKPiA+ID4gcGF0Y2guCj4gPiA+IAo+ID4gPiBUaGlzIGlzIHBvc3RlZCBhcyBhbiBS RkMgc2luY2UgRE1DIGFuZCBEQyBzdGF0ZSBoYW5kbGluZyBpcyBiZWluZwo+ID4gPiByZXdvcmtl ZCBhbmQgd2lsbCBwb3NzaWJseSBhZmZlY3QgdGhlIG91dGNvbWUgb2YgdGhpcyBwYXRjaC4gVGhl IHBhdGNoCj4gPiA+IGhhcyBrbm93biB3YXJuaW5ncy4KPiA+ID4gCj4gPiA+IFNpZ25lZC1vZmYt Ynk6IFBhdHJpayBKYWtvYnNzb24gPHBhdHJpay5qYWtvYnNzb25AbGludXguaW50ZWwuY29tPgo+ ID4gPiAtLS0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jICAgICAgICB8 ICA5ICsrKysrCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAg fCAgMiArCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgfCA2 OSArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KPiA+ID4gIDMgZmlsZXMgY2hhbmdl ZCwgNjQgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCj4gPiA+IAo+ID4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kZGkuYwo+ID4gPiBpbmRleCA0ODIzMTg0Li5jMmMxYWQyIDEwMDY0NAo+ID4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gPiBAQCAtMjI4OCw2ICsyMjg4LDggQEAg c3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmlu dGVsX2VuY29kZXIpCj4gPiA+ICAJaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JU IHx8IHR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgewo+ID4gPiAgCQlzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwo+ID4gPiAgCj4gPiA+ICsJCWlu dGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fQVVYX0EpOwo+ID4g PiArCj4gPiAKPiA+IFRoZXNlIEkgdGhpbmsgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSB3aXRoIG15 Cj4gPiBpbnRlbF9kaXNwbGF5X3BvcnRfYXV4X3Bvd2VyX2RvbWFpbigpIHN0dWZmIHNpbmNlIGlu dGVsX2RwX2F1eF9jaCgpIHdpbGwKPiA+IGl0c2VsZiBncmFiIHRoZSBhcHByb3ByaWF0ZSBwb3dl ciBkb21haW4uCj4gPiAKPiA+IFRoYXQncyBvZiBjb3Vyc2UgYXNzdW1pbmcgdGhhdCBBVVggaXMg dGhlIG9ubHkgcmVhc29uIHdoeSB3ZSBuZWVkIHRvCj4gPiBrZWVwIERDNiBkaXNhYmxlZCBoZXJl Lgo+ID4gCj4gPiA+ICAJCWludGVsX2RwX3NldF9saW5rX3BhcmFtcyhpbnRlbF9kcCwgY3J0Yy0+ Y29uZmlnKTsKPiA+ID4gIAo+ID4gPiAgCQlpbnRlbF9kZGlfaW5pdF9kcF9idWZfcmVnKGludGVs X2VuY29kZXIpOwo+ID4gPiBAQCAtMjI5Nyw2ICsyMjk5LDggQEAgc3RhdGljIHZvaWQgaW50ZWxf ZGRpX3ByZV9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpCj4gPiA+ ICAJCWludGVsX2RwX2NvbXBsZXRlX2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ID4gPiAgCQlpZiAo cG9ydCAhPSBQT1JUX0EgfHwgSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkKPiA+ID4gIAkJCWlu dGVsX2RwX3N0b3BfbGlua190cmFpbihpbnRlbF9kcCk7Cj4gPiA+ICsKPiA+ID4gKwkJaW50ZWxf ZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9BVVhfQSk7Cj4gPiA+ICAJ fSBlbHNlIGlmICh0eXBlID09IElOVEVMX09VVFBVVF9IRE1JKSB7Cj4gPiA+ICAJCXN0cnVjdCBp bnRlbF9oZG1pICppbnRlbF9oZG1pID0gZW5jX3RvX2ludGVsX2hkbWkoZW5jb2Rlcik7Cj4gPiA+ ICAKPiA+ID4gQEAgLTIzMzksOSArMjM0MywxNCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcG9z dF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQo+ID4gPiAgCj4g PiA+ICAJaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUIHx8IHR5cGUgPT0gSU5U RUxfT1VUUFVUX0VEUCkgewo+ID4gPiAgCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5j X3RvX2ludGVsX2RwKGVuY29kZXIpOwo+ID4gPiArCj4gPiA+ICsJCWludGVsX2Rpc3BsYXlfcG93 ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fQVVYX0EpOwo+ID4gPiArCj4gPiA+ICAJCWlu dGVsX2RwX3NpbmtfZHBtcyhpbnRlbF9kcCwgRFJNX01PREVfRFBNU19PRkYpOwo+ID4gPiAgCQlp bnRlbF9lZHBfcGFuZWxfdmRkX29uKGludGVsX2RwKTsKPiA+ID4gIAkJaW50ZWxfZWRwX3BhbmVs X29mZihpbnRlbF9kcCk7Cj4gPiA+ICsKPiA+ID4gKwkJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQo ZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9BVVhfQSk7Cj4gPiA+ICAJfQo+ID4gPiAgCj4gPiA+ICAJ aWYgKElTX1NLWUxBS0UoZGV2KSkKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4g aW5kZXggNDY0ODRlNC4uODI0ODlhZCAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiA+ID4gQEAgLTEzNjcsNiArMTM2Nyw4IEBAIHZvaWQgY2h2X3BoeV9wb3dlcmdhdGVf bGFuZXMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiA+ICAJCQkgICAgIGJvb2wg b3ZlcnJpZGUsIHVuc2lnbmVkIGludCBtYXNrKTsKPiA+ID4gIGJvb2wgY2h2X3BoeV9wb3dlcmdh dGVfY2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIGRwaW9fcGh5IHBo eSwKPiA+ID4gIAkJCSAgZW51bSBkcGlvX2NoYW5uZWwgY2gsIGJvb2wgb3ZlcnJpZGUpOwo+ID4g PiArdm9pZCBza2xfZW5hYmxlX2RjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Owo+ID4gPiArdm9pZCBza2xfZGlzYWJsZV9kYzYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KTsKPiA+ID4gIAo+ID4gPiAgCj4gPiA+ICAvKiBpbnRlbF9wbS5jICovCj4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiA+ID4gaW5kZXggM2Y2ODJhMS4u ZTMwYzlhNiAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVu dGltZV9wbS5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVf cG0uYwo+ID4gPiBAQCAtMzM1LDYgKzMzNSwxMCBAQCBzdGF0aWMgdm9pZCBoc3dfc2V0X3Bvd2Vy X3dlbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiAgCVNLTF9ESVNQ TEFZX1BPV0VSV0VMTF8xX1BPV0VSX0RPTUFJTlMgfAkJXAo+ID4gPiAgCUJJVChQT1dFUl9ET01B SU5fUExMUykgfAkJCVwKPiA+ID4gIAlCSVQoUE9XRVJfRE9NQUlOX0lOSVQpKQo+ID4gPiArI2Rl ZmluZSBTS0xfRElTUExBWV9EQzZfT0ZGX1BPV0VSX0RPTUFJTlMgKAkJXAo+ID4gPiArCVNLTF9E SVNQTEFZX1BPV0VSV0VMTF8yX1BPV0VSX0RPTUFJTlMgfAkJXAo+ID4gPiArCUJJVChQT1dFUl9E T01BSU5fQVVYX0EpKQo+ID4gPiArCj4gPiA+ICAjZGVmaW5lIFNLTF9ESVNQTEFZX0FMV0FZU19P Tl9QT1dFUl9ET01BSU5TICgJCVwKPiA+ID4gIAkoUE9XRVJfRE9NQUlOX01BU0sgJiB+KFNLTF9E SVNQTEFZX1BPV0VSV0VMTF8xX1BPV0VSX0RPTUFJTlMgfAlcCj4gPiA+ICAJU0tMX0RJU1BMQVlf UE9XRVJXRUxMXzJfUE9XRVJfRE9NQUlOUyB8CQlcCj4gPiA+IEBAIC01NTAsNyArNTU0LDcgQEAg c3RhdGljIHZvaWQgYXNzZXJ0X2Nhbl9kaXNhYmxlX2RjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gPiA+ICAJCSJEQzYgYWxyZWFkeSBwcm9ncmFtbWVkIHRvIGJlIGRpc2Fi bGVkLlxuIik7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gLXN0YXRpYyB2b2lkIHNrbF9lbmFibGVf ZGM2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4gK3ZvaWQgc2tsX2Vu YWJsZV9kYzYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiAgewo+ID4g PiAgCXVpbnQzMl90IHZhbDsKPiA+ID4gIAo+ID4gPiBAQCAtNTY3LDcgKzU3MSw3IEBAIHN0YXRp YyB2b2lkIHNrbF9lbmFibGVfZGM2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiA+ID4gIAlQT1NUSU5HX1JFQUQoRENfU1RBVEVfRU4pOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+ IC1zdGF0aWMgdm9pZCBza2xfZGlzYWJsZV9kYzYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ID4gPiArdm9pZCBza2xfZGlzYWJsZV9kYzYoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ID4gPiAgewo+ID4gPiAgCXVpbnQzMl90IHZhbDsKPiA+ID4gIAo+ID4g PiBAQCAtNjI4LDEwICs2MzIsOCBAQCBzdGF0aWMgdm9pZCBza2xfc2V0X3Bvd2VyX3dlbGwoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiAgCQkJCSFJOTE1X1JFQUQoSFNX X1BXUl9XRUxMX0JJT1MpLAo+ID4gPiAgCQkJCSJJbnZhbGlkIGZvciBwb3dlciB3ZWxsIHN0YXR1 cyB0byBiZSBlbmFibGVkLCB1bmxlc3MgZG9uZSBieSB0aGUgQklPUywgXAo+ID4gPiAgCQkJCXdo ZW4gcmVxdWVzdCBpcyB0byBkaXNhYmxlIVxuIik7Cj4gPiA+IC0JCQlpZiAoKEdFTjlfRU5BQkxF X0RDNShkZXYpIHx8IFNLTF9FTkFCTEVfREM2KGRldikpICYmCj4gPiA+IC0JCQkJcG93ZXJfd2Vs bC0+ZGF0YSA9PSBTS0xfRElTUF9QV18yKSB7Cj4gPiA+ICsJCQlpZiAocG93ZXJfd2VsbC0+ZGF0 YSA9PSBTS0xfRElTUF9QV18yKSB7Cj4gPiA+ICAJCQkJaWYgKFNLTF9FTkFCTEVfREM2KGRldikp IHsKPiA+ID4gLQkJCQkJc2tsX2Rpc2FibGVfZGM2KGRldl9wcml2KTsKPiA+IAo+ID4gSG1tLiBT byB0aGUgb3JkZXJpbmcgbmVlZHMgdG8gYmUgCj4gPiBkaXNhYmxlIGRjNiAtPiBlbmFibGUgcHcy Cj4gPiAKPiA+ID4gIAkJCQkJLyoKPiA+ID4gIAkJCQkJICogRERJIGJ1ZmZlciBwcm9ncmFtbWlu ZyB1bm5lY2Vzc2FyeSBkdXJpbmcgZHJpdmVyLWxvYWQvcmVzdW1lCj4gPiA+ICAJCQkJCSAqIGFz IGl0J3MgYWxyZWFkeSBkb25lIGR1cmluZyBtb2Rlc2V0IGluaXRpYWxpemF0aW9uIHRoZW4uCj4g PiA+IEBAIC02MzksMTAgKzY0MSw5IEBAIHN0YXRpYyB2b2lkIHNrbF9zZXRfcG93ZXJfd2VsbChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ICAJCQkJCSAqLwo+ID4gPiAg CQkJCQlpZiAoIWRldl9wcml2LT5wb3dlcl9kb21haW5zLmluaXRpYWxpemluZykKPiA+ID4gIAkJ CQkJCWludGVsX3ByZXBhcmVfZGRpKGRldik7Cj4gPiA+IC0JCQkJfSBlbHNlIHsKPiA+ID4gLQkJ CQkJZ2VuOV9kaXNhYmxlX2RjNShkZXZfcHJpdik7Cj4gPiA+ICAJCQkJfQo+ID4gPiAgCQkJfQo+ ID4gPiArCj4gPiA+ICAJCQlJOTE1X1dSSVRFKEhTV19QV1JfV0VMTF9EUklWRVIsIHRtcCB8IHJl cV9tYXNrKTsKPiA+ID4gIAkJfQo+ID4gPiAgCj4gPiA+IEBAIC02NjAsOCArNjYxLDcgQEAgc3Rh dGljIHZvaWQgc2tsX3NldF9wb3dlcl93ZWxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiA+ID4gIAkJCVBPU1RJTkdfUkVBRChIU1dfUFdSX1dFTExfRFJJVkVSKTsKPiA+ID4g IAkJCURSTV9ERUJVR19LTVMoIkRpc2FibGluZyAlc1xuIiwgcG93ZXJfd2VsbC0+bmFtZSk7Cj4g PiA+ICAKPiA+ID4gLQkJCWlmICgoR0VOOV9FTkFCTEVfREM1KGRldikgfHwgU0tMX0VOQUJMRV9E QzYoZGV2KSkgJiYKPiA+ID4gLQkJCQlwb3dlcl93ZWxsLT5kYXRhID09IFNLTF9ESVNQX1BXXzIp IHsKPiA+ID4gKwkJCWlmIChwb3dlcl93ZWxsLT5kYXRhID09IFNLTF9ESVNQX1BXXzIpIHsKPiA+ ID4gIAkJCQllbnVtIGNzcl9zdGF0ZSBzdGF0ZTsKPiA+ID4gIAkJCQkvKiBUT0RPOiB3YWl0IGZv ciBhIGNvbXBsZXRpb24gZXZlbnQgb3IKPiA+ID4gIAkJCQkgKiBzaW1pbGFyIGhlcmUgaW5zdGVh ZCBvZiBidXN5Cj4gPiA+IEBAIC02NjksMTQgKzY2OSwxMCBAQCBzdGF0aWMgdm9pZCBza2xfc2V0 X3Bvd2VyX3dlbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiAgCQkJ CSAqLwo+ID4gPiAgCQkJCXdhaXRfZm9yKChzdGF0ZSA9IGludGVsX2Nzcl9sb2FkX3N0YXR1c19n ZXQoZGV2X3ByaXYpKSAhPQo+ID4gPiAgCQkJCQkJRldfVU5JTklUSUFMSVpFRCwgMTAwMCk7Cj4g PiA+IC0JCQkJaWYgKHN0YXRlICE9IEZXX0xPQURFRCkKPiA+ID4gKwkJCQlpZiAoc3RhdGUgIT0g RldfTE9BREVEKSB7Cj4gPiA+ICAJCQkJCURSTV9FUlJPUigiQ1NSIGZpcm13YXJlIG5vdCByZWFk eSAoJWQpXG4iLAo+ID4gPiAtCQkJCQkJCXN0YXRlKTsKPiA+ID4gLQkJCQllbHNlCj4gPiA+IC0J CQkJCWlmIChTS0xfRU5BQkxFX0RDNihkZXYpKQo+ID4gPiAtCQkJCQkJc2tsX2VuYWJsZV9kYzYo ZGV2X3ByaXYpOwo+ID4gPiAtCQkJCQllbHNlCj4gPiA+IC0JCQkJCQlnZW45X2VuYWJsZV9kYzUo ZGV2X3ByaXYpOwo+ID4gPiArCQkJCQkJICBzdGF0ZSk7Cj4gPiA+ICsJCQkJfQo+ID4gCj4gPiBh bmQgaGVyZSB3ZSBuZWVkIAo+ID4gZGlzYWJsZSBwdzIgLT4gZW5hYmxlIGRjNgo+ID4gCj4gPiBU aGF0J3Mgc3ltbWV0cmljIHdoaWNoIGlzIGdyZWF0IGZvciB1c2luZyBwb3dlciB3ZWxscyBoZXJl IHNpbmNlIHdlIHdhbGsKPiA+IHRoZSBwb3dlciB3ZWxscyBhcnJheSBmb3J3YXJkIHdoZW4gZW5h YmxpbmcsIGFuZCBiYWNrd2FyZHMgd2hlbgo+ID4gZGlzYWJsaW5nLgo+ID4gCj4gPiBJJ20gdGhp bmtpbmcgdGhhdCB3ZSBjb3VsZCBhbHNvIG1vdmUgdGhlIGRjNSBzdHVmZiBpbnRvIGEgcG93ZXIg d2VsbC4KPiA+IFdvdWxkIHJlZHVjZSB0aGUgY2x1dHRlciBpbiBza2xfc2V0X3Bvd2VyX3dlbGwo KSBhdCBsZWFzdC4gSSdtIG5vdCBzdXJlCj4gPiB3aGF0IHRoZSByZXF1aXJlbWVudHMgd3J0LiBk YzUgYXJlLiBJZiB0aGV5IGFyZSB0aGUgc2FtZSBhcyBmb3IgZGM2LAo+ID4gdGhlbiBhIHNpbmds ZSBkYyBwb3dlciB3ZWxsIHdvdWxkIGRvLCBvdGhlcndpc2Ugd2Ugd291bGQgbmVlZCB0d28sIGVh Y2gKPiA+IHdpdGggaXRzIG93biBkb21haW5zLgo+IAo+IEJUVyBhZnRlciBhIGJpdCBtb3JlIGxv b2ssIEkgdGhpbmsgd2UgY291bGQgcHJvYmFibHkgc2ltcGxpZnkgdGhpbmdzCj4gcXVpdGUgYSBi aXQgd2l0aCB0aGlzIG1vdmUuIFdlIGNvdWxkIHBlcmhhcHMgdGhlbiBzZXQgcG93ZXJfd2VsbC0+ ZGF0YQo+IHRvIERDX1NUQVRFX0VOX1VQVE9fREM1IG9yIERDX1NUQVRFX0VOX1VQVE9fREM2IGZv ciBlYWNoIHdlbGwsIGFuZAo+IGNvbnZlcnQgdGhlIGVuYWJsZS9kaXNhYmxlIGRjNS82IGludG8g c29tZWh0aW5nIGxpa2U6Cj4gCj4gZ2VuOV9lbmFibGVfZGNfc3RhdGUoZGV2X3ByaXYsIHVpbnQz Ml90IHN0YXRlKQo+IHsKPiAJLy8gY3NyIHdhaXQgYW5kIHRoZSBkZWJ1Z21hc2sgdGhpbmcgY291 bGQgZ28gaGVyZQo+IAo+IAl2YWwgPSBJOTE1X1JFQUQoRENfU1RBVEVfRU4pOwo+IAl2YWwgJj0g fkRDX1NUQVRFX0VOX1VQVE9fREM1X0RDNl9NQVNLOwo+IAl2YWwgfD0gc3RhdGU7Cj4gCUk5MTVf V1JJVEUoRENfU1RBVEVfRU4sIHZhbCk7Cj4gCVBPU1RJTkdfUkVBRChEQ19TVEFURV9FTik7Cj4g fQo+IAo+IGdlbjlfZGlzYWJsZV9kY19zdGF0ZShkZXZfcHJpdiwgdWludDMyX3QgdmFsKQo+IHsK PiAJdWludDMyX3QgdmFsOwo+IAo+IAl2YWwgPSBJOTE1X1JFQUQoRENfU1RBVEVfRU4pOwo+IAl2 YWwgJj0gfnN0YXRlOwo+IAlJOTE1X1dSSVRFKERDX1NUQVRFX0VOLCB2YWwpOwo+IAlQT1NUSU5H X1JFQUQoRENfU1RBVEVfRU4pOwo+IH0KPiAKPiBXZSBjb3VsZCBldmVuIHB1dCB0aGVzZSBkaXJl Y3RseSBpbiB0aGUgcG93ZXIgd2VsbCBob29rcywgYW5kIHNoYXJlCj4gdGhvc2UgZm9yIERDNSBh bmQgREM2LiBCdXQgdGhhdCB3b3VsZCBwZXJoYXBzIG1lYW4gbG9zaW5nIHRoZQo+IGNhbl9lbmFi bGVfZGlzYWJsZV9kYzUvNiBhc3NlcnRzIG9yIHdlJ2QgbmVlZCBzb21lIGlmcyBmb3IgdGhvc2Uu Cj4gQnV0IHBlcmhhcHMgaXQgd291bGQgYmUgY2xlYW5lcnMgdG8gaGF2ZSBzZXBhcmF0ZSBwb3dl ciB3ZWxsIG9wcyBmb3IgZGM1Cj4gYW5kIGRjNiwgYW5kIGVhY2ggd291bGQganVzdCBjYWxsIHRo ZSBwcm9wb3NlZCBnZW45X2VuYWJsZS9kaXNhYmxlX2RjX3N0YXRlKCkKPiBmdW5jdGlvbnMuIE9o IGFuZCB3ZSBhbHNvIGhhdmUgdGhlIEdFTjlfRU5BQkxFX0RDNSBhbmQgU0tMX0VOQUJMRV9EQzYK PiBtYWNyb3Mgd2hpY2ggSSBzdXBwb3NlZCB3ZSdkIG5lZWQgdG8gY2hlY2sgaW4gdGhlIHBvd2Vy IHdlbGwgaG9va3MuCj4gCj4gQnV0IHRoaXMgdW5pZmljYXRpb24gY291bGQgYmUgYSBzZXBhcmF0 ZSBwYXRjaC4gRmlyc3Qgd2UgY2FuIGp1c3QKPiBpbnRyb2R1Y2UgdGhlIG5ldyBwb3dlciB3ZWxs cyB1c2luZyB0aGUgZXhpc3RpbmcgZGM1L2RjNiBlbmFibGUvZGlzYWJsZQo+IGZ1bmN0aW9ucyB3 ZSBoYXZlLgo+IAo+IEkgZGlkbid0IGxvb2sgYXQgdGhlIGRjOSBzdHVmZiB5ZXQsIHNvIG5vdCBz dXJlIGlmIHRoYXQgY291bGQgYmUgaGFuZGxlZAo+IGluIGEgc2ltaWxhciBmYXNoaW9uLgo+IAo+ IEFsc28gSSB0aGluayBjdXJyZW50bHkgd2UganVzdCBkaXNhYmxlIHJ1bnRpbWUgUE0gd2hlbiB0 aGUgZmlybXdhcmUKPiBoYXNuJ3QgeWV0IGJlZW4gbG9hZGVkLiBCdXQgSSB0aGluayB3ZSB3b3Vs ZCBuZWVkIHRvIGNoYW5nZSB0aGF0IHRvIGhvbGQKPiBhIERDNS9EQzUgcmVmZXJlbmNlcy4gSSBn dWVzcyB0byBkbyB0aGlzIHByb3Blcmx5IHdlIHNob3VsZCBhIG5ldyBwb3dlcgo+IGRvbWFpbiBm b3IgdGhpcyBwdXJwb3NlLCBidXQgSSdtIG5vdCBzdXJlIHRoYXQncyByZWFsbHkgd29ydGggaXQg Zm9yIGEKPiBzaW5nbGUgdXNlciB1c2UgY2FzZS4KCkkganVzdCBoYWQgdGhlIGlkZWEgdGhhdCBQ T1dFUl9ET01BSU5fSU5JVCBtaWdodCBiZSBhIG5pY2UgZml0IGZvciB0aGlzLApidXQgdGhhdCB3 b3VsZCBhbHNvIGtlZXAgdGhlIERESSBwb3dlciB3ZWxscyBvbiBldmVuIHRob3VnaCB3ZSBkb24n dApuZWVkIHRoZSBmaXJtd2FyZSBmb3IgdGhvc2UuCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVs IE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=