From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH v2 10/12] drm/i915/gen9: Turn DC handling into a power well Date: Wed, 11 Nov 2015 20:57:19 +0200 Message-ID: <1447268239.24928.24.camel@intel.com> References: <1447084107-8521-1-git-send-email-patrik.jakobsson@linux.intel.com> <1447084107-8521-11-git-send-email-patrik.jakobsson@linux.intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 888E46EACC for ; Wed, 11 Nov 2015 10:57:25 -0800 (PST) In-Reply-To: <1447084107-8521-11-git-send-email-patrik.jakobsson@linux.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 T24gbWEsIDIwMTUtMTEtMDkgYXQgMTY6NDggKzAxMDAsIFBhdHJpayBKYWtvYnNzb24gd3JvdGU6 Cj4gSGFuZGxlIERDIG9mZiBhcyBhIHBvd2VyIHdlbGwgd2hlcmUgZW5hYmxpbmcgdGhlIHBvd2Vy IHdlbGwgd2lsbAo+IHByZXZlbnQKPiB0aGUgRE1DIHRvIGVudGVyIHNlbGVjdGVkIERDIHN0YXRl cyAocmVxdWlyZWQgYXJvdW5kIG1vZGVzZXRzIGFuZCBBdXgKPiBBKS4gRGlzYWJsaW5nIHRoZSBw b3dlciB3ZWxsIHdpbGwgYWxsb3cgREMgc3RhdGVzIGFnYWluLiBGb3Igbm93IHRoZQo+IGhpZ2hl c3QgREMgc3RhdGUgaXMgREM2IGZvciBTa3lsYWtlIGFuZCBEQzUgZm9yIEJyb3h0b24gYnV0IHdp bGwgYmUKPiBjb25maWd1cmFibGUgZm9yIFNreWxha2UgaW4gYSBsYXRlciBwYXRjaC4KPiAKPiB2 MjogQ2hlY2sgYm90aCBEQzUgYW5kIERDNiBiaXRzIGluIHBvd2VyIHdlbGwgZW5hYmxlZCBmdW5j dGlvbgo+IChWaWxsZSkKPiAKPiBTaWduZWQtb2ZmLWJ5OiBQYXRyaWsgSmFrb2Jzc29uIDxwYXRy aWsuamFrb2Jzc29uQGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYyAgICAgICAgIHwgICA2IC0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmggICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYyAgICB8ICAgNiArKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1l X3BtLmMgfCAxMTAKPiArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQo+ICA0IGZpbGVz IGNoYW5nZWQsIDg4IGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5jCj4gaW5kZXggNWE2M2Y5YS4uMGM3ZjQzNSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYwo+IEBAIC0xMDcyLDkgKzEwNzIsNiBAQCBzdGF0aWMgaW50IGk5MTVfcG1f cmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKPiAgCj4gIHN0YXRpYyBpbnQgc2tsX3N1c3BlbmRf Y29tcGxldGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlpZiAo ZGV2X3ByaXYtPmNzci5kbWNfcGF5bG9hZCkKPiAtCQlza2xfZW5hYmxlX2RjNihkZXZfcHJpdik7 Cj4gLQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTExMTksOSArMTExNiw2IEBAIHN0YXRp YyBpbnQgYnh0X3Jlc3VtZV9wcmVwYXJlKHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAKPiAgc3RhdGljIGludCBza2xfcmVzdW1lX3ByZXBhcmUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlpZiAoZGV2X3ByaXYtPmNzci5kbWNfcGF5bG9h ZCkKPiAtCQlza2xfZGlzYWJsZV9kYzYoZGV2X3ByaXYpOwo+IC0KPiAgCXJldHVybiAwOwo+ICB9 Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5kZXggMzFiM2E4NC4uZGY0NDViYSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC02MzYsNiArNjM2LDcgQEAgZW51bSBz a2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4gIAo+ICAJLyogTm90IGFjdHVhbCBiaXQgZ3JvdXBzLiBV c2VkIGFzIElEcyBmb3IKPiBsb29rdXBfcG93ZXJfd2VsbCgpICovCj4gIAlTS0xfRElTUF9QV19B TFdBWVNfT04sCj4gKwlTS0xfRElTUF9QV19EQ19PRkYsCgpJbW8gaXQgd291bGQgYmUgbGVzcyBj b25mdXNpbmcgdG8gY2FsbCBpdCBEQzMgcG93ZXIgd2VsbC4gTG9va2luZyBhdCB0aAplIERDIHNw ZWMsIERDNCBpcyBvbmx5IGEgdHJhbnNpdG9yeSBzdGF0ZSB0byBEQzUvNiwgc28gd2hhdCB3ZSBl eHBlY3QKd2hlbiB3ZSBkaXNhYmxlIERDNi81IGlzIERDMyBvciBzaGFsbG93ZXIgcG93ZXIgc3Rh dGVzIChEQzIvMS8wKS4KCj4gIH07Cj4gIAo+ICAjZGVmaW5lIFNLTF9QT1dFUl9XRUxMX1NUQVRF KHB3KSAoMSA8PCAoKHB3KSAqIDIpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+IGluZGV4IDY0OWFjMzQuLjg1NmQ4MDEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4gQEAgLTEzMzIwLDYgKzEzMzIwLDkgQEAgc3RhdGljIGludCBpbnRlbF9hdG9t aWNfY29tbWl0KHN0cnVjdAo+IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJdG9faW50ZWxfY3J0Y19z dGF0ZShjcnRjLT5zdGF0ZSkKPiAtPnVwZGF0ZV9waXBlOwo+ICAJCXVuc2lnbmVkIGxvbmcgcHV0 X2RvbWFpbnMgPSAwOwo+ICAKPiArCQlpZiAobW9kZXNldCkKPiArCQkJaW50ZWxfZGlzcGxheV9w b3dlcl9nZXQoZGV2X3ByaXYsCj4gUE9XRVJfRE9NQUlOX01PREVTRVQpOwo+ICsKPiAgCQlpZiAo bW9kZXNldCAmJiBjcnRjLT5zdGF0ZS0+YWN0aXZlKSB7Cj4gIAkJCXVwZGF0ZV9zY2FubGluZV9v ZmZzZXQodG9faW50ZWxfY3J0YyhjcnRjKSk7Cj4gIAkJCWRldl9wcml2LT5kaXNwbGF5LmNydGNf ZW5hYmxlKGNydGMpOwo+IEBAIC0xMzM0Myw2ICsxMzM0Niw5IEBAIHN0YXRpYyBpbnQgaW50ZWxf YXRvbWljX2NvbW1pdChzdHJ1Y3QKPiBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCW1vZGVzZXRfcHV0 X3Bvd2VyX2RvbWFpbnMoZGV2X3ByaXYsCj4gcHV0X2RvbWFpbnMpOwo+ICAKPiAgCQlpbnRlbF9w b3N0X3BsYW5lX3VwZGF0ZShpbnRlbF9jcnRjKTsKPiArCj4gKwkJaWYgKG1vZGVzZXQpCj4gKwkJ CWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LAo+IFBPV0VSX0RPTUFJTl9NT0RFU0VU KTsKPiAgCX0KPiAgCj4gIAkvKiBGSVhNRTogYWRkIHN1YnBpeGVsIG9yZGVyICovCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+IGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gaW5kZXggZWRmNzUzZS4uOTVjM2Zj YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiBAQCAtNDks OSArNDksNiBAQAo+ICAgKiBwcmVzZW50IGZvciBhIGdpdmVuIHBsYXRmb3JtLgo+ICAgKi8KPiAg Cj4gLSNkZWZpbmUgR0VOOV9FTkFCTEVfREM1KGRldikgMAo+IC0jZGVmaW5lIFNLTF9FTkFCTEVf REM2KGRldikgSVNfU0tZTEFLRShkZXYpCj4gLQo+ICAjZGVmaW5lIGZvcl9lYWNoX3Bvd2VyX3dl bGwoaSwgcG93ZXJfd2VsbCwgZG9tYWluX21hc2ssCj4gcG93ZXJfZG9tYWlucykJXAo+ICAJZm9y IChpID0gMDsJCQkJCQkJCj4gXAo+ICAJICAgICBpIDwgKHBvd2VyX2RvbWFpbnMpLT5wb3dlcl93 ZWxsX2NvdW50ICYmCQkKPiAJXAo+IEBAIC0zMDksOSArMzA2LDE0IEBAIHN0YXRpYyB2b2lkIGhz d19zZXRfcG93ZXJfd2VsbChzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAg I2RlZmluZSBTS0xfRElTUExBWV9ERElfRF9QT1dFUl9ET01BSU5TICgJCVwKPiAgCUJJVChQT1dF Ul9ET01BSU5fUE9SVF9ERElfRF9MQU5FUykgfAkJXAo+ICAJQklUKFBPV0VSX0RPTUFJTl9JTklU KSkKPiArI2RlZmluZSBTS0xfRElTUExBWV9EQ19PRkZfUE9XRVJfRE9NQUlOUyAoCQlcCj4gKwlC SVQoUE9XRVJfRE9NQUlOX01PREVTRVQpIHwJCQlcCj4gKwlCSVQoUE9XRVJfRE9NQUlOX0FVWF9B KSB8CQkJXAo+ICsJQklUKFBPV0VSX0RPTUFJTl9JTklUKSkKPiAgI2RlZmluZSBTS0xfRElTUExB WV9BTFdBWVNfT05fUE9XRVJfRE9NQUlOUyAoCQlcCj4gIAkoUE9XRVJfRE9NQUlOX01BU0sgJiB+ KAkJCQlcCj4gLQlTS0xfRElTUExBWV9QT1dFUldFTExfMl9QT1dFUl9ET01BSU5TKSkgfAlcCj4g KwlTS0xfRElTUExBWV9QT1dFUldFTExfMl9QT1dFUl9ET01BSU5TIHwJCVwKPiArCVNLTF9ESVNQ TEFZX0RDX09GRl9QT1dFUl9ET01BSU5TKSkgfAkJXAo+ICAJQklUKFBPV0VSX0RPTUFJTl9JTklU KSkKPiAgCj4gICNkZWZpbmUgQlhUX0RJU1BMQVlfUE9XRVJXRUxMXzJfUE9XRVJfRE9NQUlOUyAo CQlcCj4gQEAgLTMzOSw2ICszNDEsMTAgQEAgc3RhdGljIHZvaWQgaHN3X3NldF9wb3dlcl93ZWxs KHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJQklUKFBPV0VSX0RPTUFJ Tl9BVVhfQSkgfAkJCVwKPiAgCUJJVChQT1dFUl9ET01BSU5fUExMUykgfAkJCVwKPiAgCUJJVChQ T1dFUl9ET01BSU5fSU5JVCkpCj4gKyNkZWZpbmUgQlhUX0RJU1BMQVlfRENfT0ZGX1BPV0VSX0RP TUFJTlMgKAkJXAo+ICsJQklUKFBPV0VSX0RPTUFJTl9NT0RFU0VUKSB8CQkJXAo+ICsJQklUKFBP V0VSX0RPTUFJTl9BVVhfQSkgfAkJCVwKPiArCUJJVChQT1dFUl9ET01BSU5fSU5JVCkpCj4gICNk ZWZpbmUgQlhUX0RJU1BMQVlfQUxXQVlTX09OX1BPV0VSX0RPTUFJTlMgKAkJXAo+ICAJKFBPV0VS X0RPTUFJTl9NQVNLICYgfihCWFRfRElTUExBWV9QT1dFUldFTExfMV9QT1dFUl9ET01BSU5TCj4g fAlcCj4gIAlCWFRfRElTUExBWV9QT1dFUldFTExfMl9QT1dFUl9ET01BSU5TKSkgfAlcCj4gQEAg LTQ4NiwxNSArNDkyLDYgQEAgc3RhdGljIHZvaWQgZ2VuOV9lbmFibGVfZGM1KHN0cnVjdAo+IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJZ2VuOV9zZXRfZGNfc3RhdGUoZGV2X3ByaXYs IERDX1NUQVRFX0VOX1VQVE9fREM1KTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgZ2VuOV9kaXNh YmxlX2RjNShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gLXsKPiAtCWFzc2Vy dF9jYW5fZGlzYWJsZV9kYzUoZGV2X3ByaXYpOwo+IC0KPiAtCURSTV9ERUJVR19LTVMoIkRpc2Fi bGluZyBEQzVcbiIpOwo+IC0KPiAtCWdlbjlfc2V0X2RjX3N0YXRlKGRldl9wcml2LCBEQ19TVEFU RV9ESVNBQkxFKTsKPiAtfQo+IC0KPiAgc3RhdGljIHZvaWQgYXNzZXJ0X2Nhbl9lbmFibGVfZGM2 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7Cj4gQEAgLTUyMiw2ICs1MTksMTQgQEAgc3RhdGlj IHZvaWQgYXNzZXJ0X2Nhbl9kaXNhYmxlX2RjNihzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgCQkgICJEQzYgYWxyZWFkeSBwcm9ncmFtbWVkIHRvIGJlIGRpc2FibGVkLlxu Iik7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIGdlbjlfZGlzYWJsZV9kYzVfZGM2KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJYXNzZXJ0X2Nhbl9kaXNhYmxlX2Rj NShkZXZfcHJpdik7Cj4gKwlhc3NlcnRfY2FuX2Rpc2FibGVfZGM2KGRldl9wcml2KTsKPiArCj4g KwlnZW45X3NldF9kY19zdGF0ZShkZXZfcHJpdiwgRENfU1RBVEVfRElTQUJMRSk7Cj4gK30KPiAr Cj4gIHZvaWQgc2tsX2VuYWJsZV9kYzYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICB7Cj4gIAlhc3NlcnRfY2FuX2VuYWJsZV9kYzYoZGV2X3ByaXYpOwo+IEBAIC01NzEsNiAr NTc2LDcgQEAgc3RhdGljIHZvaWQgc2tsX3NldF9wb3dlcl93ZWxsKHN0cnVjdAo+IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJY2FzZSBTS0xfRElTUF9QV19ERElfQzoKPiAgCWNhc2Ug U0tMX0RJU1BfUFdfRERJX0Q6Cj4gIAljYXNlIFNLTF9ESVNQX1BXX01JU0NfSU86Cj4gKwljYXNl IFNLTF9ESVNQX1BXX0RDX09GRjoKPiAgCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gIAkJV0FSTigx LCAiVW5rbm93biBwb3dlciB3ZWxsICVsdVxuIiwgcG93ZXJfd2VsbAo+IC0+ZGF0YSk7Cj4gQEAg LTU4OSwxNyArNTk1LDEzIEBAIHN0YXRpYyB2b2lkIHNrbF9zZXRfcG93ZXJfd2VsbChzdHJ1Y3QK PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJCSJJbnZhbGlkIGZvciBwb3dlciB3 ZWxsIHN0YXR1cyB0byBiZQo+IGVuYWJsZWQsIHVubGVzcyBkb25lIGJ5IHRoZSBCSU9TLCBcCj4g IAkJCQl3aGVuIHJlcXVlc3QgaXMgdG8gZGlzYWJsZSFcbiIpOwo+ICAJCQlpZiAocG93ZXJfd2Vs bC0+ZGF0YSA9PSBTS0xfRElTUF9QV18yKSB7Cj4gLQkJCQlpZiAoR0VOOV9FTkFCTEVfREM1KGRl dikpCj4gLQkJCQkJZ2VuOV9kaXNhYmxlX2RjNShkZXZfcHJpdik7Cj4gLQkJCQlpZiAoU0tMX0VO QUJMRV9EQzYoZGV2KSkgewo+IC0JCQkJCS8qCj4gLQkJCQkJICogRERJIGJ1ZmZlciBwcm9ncmFt bWluZwo+IHVubmVjZXNzYXJ5IGR1cmluZyBkcml2ZXItbG9hZC9yZXN1bWUKPiAtCQkJCQkgKiBh cyBpdCdzIGFscmVhZHkgZG9uZQo+IGR1cmluZyBtb2Rlc2V0IGluaXRpYWxpemF0aW9uIHRoZW4u Cj4gLQkJCQkJICogSXQncyBhbHNvIGludmFsaWQgaGVyZSBhcwo+IGVuY29kZXIgbGlzdCBpcyBz dGlsbCB1bmluaXRpYWxpemVkLgo+IC0JCQkJCSAqLwo+IC0JCQkJCWlmICghZGV2X3ByaXYKPiAt PnBvd2VyX2RvbWFpbnMuaW5pdGlhbGl6aW5nKQo+IC0JCQkJCQlpbnRlbF9wcmVwYXJlX2RkaShk ZQo+IHYpOwo+IC0JCQkJfQo+ICsJCQkJLyoKPiArCQkJCSAqIERESSBidWZmZXIgcHJvZ3JhbW1p bmcKPiB1bm5lY2Vzc2FyeSBkdXJpbmcgZHJpdmVyLWxvYWQvcmVzdW1lCj4gKwkJCQkgKiBhcyBp dCdzIGFscmVhZHkgZG9uZSBkdXJpbmcKPiBtb2Rlc2V0IGluaXRpYWxpemF0aW9uIHRoZW4uCj4g KwkJCQkgKiBJdCdzIGFsc28gaW52YWxpZCBoZXJlIGFzIGVuY29kZXIKPiBsaXN0IGlzIHN0aWxs IHVuaW5pdGlhbGl6ZWQuCj4gKwkJCQkgKi8KPiArCQkJCWlmICghZGV2X3ByaXYKPiAtPnBvd2Vy X2RvbWFpbnMuaW5pdGlhbGl6aW5nKQo+ICsJCQkJCWludGVsX3ByZXBhcmVfZGRpKGRldik7Cj4g IAkJCX0KPiAgCQkJSTkxNV9XUklURShIU1dfUFdSX1dFTExfRFJJVkVSLCB0bXAgfAo+IHJlcV9t YXNrKTsKPiAgCQl9Cj4gQEAgLTYxNywxMCArNjE5LDYgQEAgc3RhdGljIHZvaWQgc2tsX3NldF9w b3dlcl93ZWxsKHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQlJOTE1 X1dSSVRFKEhTV19QV1JfV0VMTF9EUklWRVIsCXRtcCAmCj4gfnJlcV9tYXNrKTsKPiAgCQkJUE9T VElOR19SRUFEKEhTV19QV1JfV0VMTF9EUklWRVIpOwo+ICAJCQlEUk1fREVCVUdfS01TKCJEaXNh YmxpbmcgJXNcbiIsIHBvd2VyX3dlbGwKPiAtPm5hbWUpOwo+IC0KPiAtCQkJaWYgKEdFTjlfRU5B QkxFX0RDNShkZXYpICYmCj4gLQkJCQlwb3dlcl93ZWxsLT5kYXRhID09IFNLTF9ESVNQX1BXXzIp Cj4gLQkJCQkJZ2VuOV9lbmFibGVfZGM1KGRldl9wcml2KTsKPiAgCQl9Cj4gIAl9Cj4gIAo+IEBA IC02OTUsNiArNjkzLDQwIEBAIHN0YXRpYyB2b2lkIHNrbF9wb3dlcl93ZWxsX2Rpc2FibGUoc3Ry dWN0Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlza2xfc2V0X3Bvd2VyX3dlbGwo ZGV2X3ByaXYsIHBvd2VyX3dlbGwsIGZhbHNlKTsKPiAgfQo+ICAKPiArc3RhdGljIGJvb2wgZ2Vu OV9kY19vZmZfcG93ZXJfd2VsbF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gKmRl dl9wcml2LAo+ICsJCQkJCSAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbAo+ICpwb3dlcl93ZWxsKQo+ ICt7Cj4gKwlyZXR1cm4gKEk5MTVfUkVBRChEQ19TVEFURV9FTikgJgo+IERDX1NUQVRFX0VOX1VQ VE9fREM1X0RDNl9NQVNLKSA9PSAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBnZW45X2RjX29m Zl9wb3dlcl93ZWxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ICpkZXZfcHJpdiwK PiArCQkJCQkgc3RydWN0IGk5MTVfcG93ZXJfd2VsbAo+ICpwb3dlcl93ZWxsKQo+ICt7Cj4gKwln ZW45X2Rpc2FibGVfZGM1X2RjNihkZXZfcHJpdik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGdl bjlfZGNfb2ZmX3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ICpk ZXZfcHJpdiwKPiArCQkJCQkgIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwKPiAqcG93ZXJfd2VsbCkK PiArewo+ICsJaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpKQo+ICsJCXNrbF9lbmFibGVfZGM2KGRl dl9wcml2KTsKPiArCWVsc2UKPiArCQlnZW45X2VuYWJsZV9kYzUoZGV2X3ByaXYpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCBnZW45X2RjX29mZl9wb3dlcl93ZWxsX3N5bmNfaHcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUKPiAqZGV2X3ByaXYsCj4gKwkJCQkJICBzdHJ1Y3QgaTkxNV9wb3dlcl93 ZWxsCj4gKnBvd2VyX3dlbGwpCj4gK3sKPiArCWlmIChwb3dlcl93ZWxsLT5jb3VudCA+IDApIHsK PiArCQlnZW45X3NldF9kY19zdGF0ZShkZXZfcHJpdiwgRENfU1RBVEVfRElTQUJMRSk7Cj4gKwl9 IGVsc2Ugewo+ICsJCWlmIChJU19TS1lMQUtFKGRldl9wcml2KSkKPiArCQkJZ2VuOV9zZXRfZGNf c3RhdGUoZGV2X3ByaXYsCj4gRENfU1RBVEVfRU5fVVBUT19EQzYpOwo+ICsJCWVsc2UKPiArCQkJ Z2VuOV9zZXRfZGNfc3RhdGUoZGV2X3ByaXYsCj4gRENfU1RBVEVfRU5fVVBUT19EQzUpOwo+ICsJ fQo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZCBpOXh4X2Fsd2F5c19vbl9wb3dlcl93ZWxsX25vb3Ao c3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiAqZGV2X3ByaXYsCj4gIAkJCQkJICAgc3RydWN0IGk5 MTVfcG93ZXJfd2VsbAo+ICpwb3dlcl93ZWxsKQo+ICB7Cj4gQEAgLTE1MTcsNiArMTU0OSwxMyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9vcHMKPiBza2xfcG93ZXJfd2Vs bF9vcHMgPSB7Cj4gIAkuaXNfZW5hYmxlZCA9IHNrbF9wb3dlcl93ZWxsX2VuYWJsZWQsCj4gIH07 Cj4gIAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9vcHMgZ2VuOV9kY19v ZmZfcG93ZXJfd2VsbF9vcHMgPQo+IHsKPiArCS5zeW5jX2h3ID0gZ2VuOV9kY19vZmZfcG93ZXJf d2VsbF9zeW5jX2h3LAo+ICsJLmVuYWJsZSA9IGdlbjlfZGNfb2ZmX3Bvd2VyX3dlbGxfZW5hYmxl LAo+ICsJLmRpc2FibGUgPSBnZW45X2RjX29mZl9wb3dlcl93ZWxsX2Rpc2FibGUsCj4gKwkuaXNf ZW5hYmxlZCA9IGdlbjlfZGNfb2ZmX3Bvd2VyX3dlbGxfZW5hYmxlZCwKPiArfTsKPiArCj4gIHN0 YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIGhzd19wb3dlcl93ZWxsc1tdID0gewo+ICAJewo+ ICAJCS5uYW1lID0gImFsd2F5cy1vbiIsCj4gQEAgLTE2OTcsNiArMTczNiwxMiBAQCBzdGF0aWMg c3RydWN0IGk5MTVfcG93ZXJfd2VsbAo+IHNrbF9wb3dlcl93ZWxsc1tdID0gewo+ICAJCS5kYXRh ID0gU0tMX0RJU1BfUFdfMiwKPiAgCX0sCj4gIAl7Cj4gKwkJLm5hbWUgPSAiREMgb2ZmIiwKPiAr CQkuZG9tYWlucyA9IFNLTF9ESVNQTEFZX0RDX09GRl9QT1dFUl9ET01BSU5TLAo+ICsJCS5vcHMg PSAmZ2VuOV9kY19vZmZfcG93ZXJfd2VsbF9vcHMsCj4gKwkJLmRhdGEgPSBTS0xfRElTUF9QV19E Q19PRkYsCj4gKwl9LAo+ICsJewo+ICAJCS5uYW1lID0gIkRESSBBL0UgcG93ZXIgd2VsbCIsCj4g IAkJLmRvbWFpbnMgPSBTS0xfRElTUExBWV9ERElfQV9FX1BPV0VSX0RPTUFJTlMsCj4gIAkJLm9w cyA9ICZza2xfcG93ZXJfd2VsbF9vcHMsCj4gQEAgLTE3NjksNyArMTgxNCwxNCBAQCBzdGF0aWMg c3RydWN0IGk5MTVfcG93ZXJfd2VsbAo+IGJ4dF9wb3dlcl93ZWxsc1tdID0gewo+ICAJCS5kb21h aW5zID0gQlhUX0RJU1BMQVlfUE9XRVJXRUxMXzJfUE9XRVJfRE9NQUlOUywKPiAgCQkub3BzID0g JnNrbF9wb3dlcl93ZWxsX29wcywKPiAgCQkuZGF0YSA9IFNLTF9ESVNQX1BXXzIsCj4gLQl9Cj4g Kwl9LAo+ICsJewo+ICsJCS5uYW1lID0gIkRDIG9mZiIsCj4gKwkJLmRvbWFpbnMgPSBCWFRfRElT UExBWV9EQ19PRkZfUE9XRVJfRE9NQUlOUywKPiArCQkub3BzID0gJmdlbjlfZGNfb2ZmX3Bvd2Vy X3dlbGxfb3BzLAo+ICsJCS5kYXRhID0gU0tMX0RJU1BfUFdfRENfT0ZGLAo+ICsJfSwKPiArCj4g IH07Cj4gIAo+ICAjZGVmaW5lIHNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBfX3Bvd2Vy X3dlbGxzKSAoewkJCj4gXApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=