From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 6/8] drm/i915/skl: Turn DC handling into a power well Date: Wed, 4 Nov 2015 19:53:47 +0200 Message-ID: <20151104175347.GZ4437@intel.com> References: <1446553874-22986-1-git-send-email-patrik.jakobsson@linux.intel.com> <1446553874-22986-7-git-send-email-patrik.jakobsson@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 EA3606E8BD for ; Wed, 4 Nov 2015 09:53:50 -0800 (PST) Content-Disposition: inline In-Reply-To: <1446553874-22986-7-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 T24gVHVlLCBOb3YgMDMsIDIwMTUgYXQgMDE6MzE6MTJQTSArMDEwMCwgUGF0cmlrIEpha29ic3Nv biB3cm90ZToKPiBIYW5kbGUgREMgb2ZmIGFzIGEgcG93ZXIgd2VsbCB3aGVyZSBlbmFibGluZyB0 aGUgcG93ZXIgd2VsbCB3aWxsIHByZXZlbnQKPiB0aGUgRE1DIHRvIGVudGVyIHNlbGVjdGVkIERD IHN0YXRlcyAocmVxdWlyZWQgYXJvdW5kIG1vZGVzZXRzIGFuZCBBdXgKPiBBKS4gRGlzYWJsaW5n IHRoZSBwb3dlciB3ZWxsIHdpbGwgYWxsb3cgREMgc3RhdGVzIGFnYWluLiBGb3Igbm93IHRoZQo+ IGhpZ2hlc3QgREMgc3RhdGUgaXMgREM2IGJ1dCB3aWxsIGJlIGNvbmZpZ3VyYWJsZSBpbiBhIGxh dGVyIHBhdGNoLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFBhdHJpayBKYWtvYnNzb24gPHBhdHJpay5q YWtvYnNzb25AbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5jICAgICAgICAgfCAgIDYgLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jICAgIHwgICA2ICsrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRp bWVfcG0uYyB8IDEwNyArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQo+ICAzIGZpbGVz IGNoYW5nZWQsIDc4IGluc2VydGlvbnMoKyksIDQxIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYwo+IGluZGV4IDM3MzE5YjAuLmUxOTAyMzcgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMKPiBAQCAtMTA2OSw5ICsxMDY5LDYgQEAgc3RhdGljIGludCBza2xfc3VzcGVu ZF9jb21wbGV0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCXNr bF91bmluaXRfY2RjbGsoZGV2X3ByaXYpOwo+ICAKPiAtCWlmIChkZXZfcHJpdi0+Y3NyLmRtY19w YXlsb2FkKQo+IC0JCXNrbF9lbmFibGVfZGM2KGRldl9wcml2KTsKPiAtCj4gIAlyZXR1cm4gMDsK PiAgfQo+ICAKPiBAQCAtMTExNiw5ICsxMTEzLDYgQEAgc3RhdGljIGludCBieHRfcmVzdW1lX3By ZXBhcmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgc3RhdGljIGlu dCBza2xfcmVzdW1lX3ByZXBhcmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICB7Cj4gLQlpZiAoZGV2X3ByaXYtPmNzci5kbWNfcGF5bG9hZCkKPiAtCQlza2xfZGlzYWJsZV9k YzYoZGV2X3ByaXYpOwo+IC0KPiAgCXNrbF9pbml0X2NkY2xrKGRldl9wcml2KTsKPiAgCWludGVs X2Nzcl9sb2FkX3Byb2dyYW0oZGV2X3ByaXYpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4gaW5kZXggYzZkNjBiOC4uZTQwMTg3MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMTMyOTYsNiArMTMyOTYsOSBAQCBzdGF0aWMgaW50IGlu dGVsX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJdG9faW50ZWxf Y3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSktPnVwZGF0ZV9waXBlOwo+ICAJCXVuc2lnbmVkIGxvbmcg cHV0X2RvbWFpbnMgPSAwOwo+ICAKPiArCQlpZiAobW9kZXNldCkKPiArCQkJaW50ZWxfZGlzcGxh eV9wb3dlcl9nZXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9NT0RFU0VUKTsKPiArCj4gIAkJaWYg KG1vZGVzZXQgJiYgY3J0Yy0+c3RhdGUtPmFjdGl2ZSkgewo+ICAJCQl1cGRhdGVfc2NhbmxpbmVf b2Zmc2V0KHRvX2ludGVsX2NydGMoY3J0YykpOwo+ICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRj X2VuYWJsZShjcnRjKTsKPiBAQCAtMTMzMTksNiArMTMzMjIsOSBAQCBzdGF0aWMgaW50IGludGVs X2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJbW9kZXNldF9wdXRf cG93ZXJfZG9tYWlucyhkZXZfcHJpdiwgcHV0X2RvbWFpbnMpOwo+ICAKPiAgCQlpbnRlbF9wb3N0 X3BsYW5lX3VwZGF0ZShpbnRlbF9jcnRjKTsKPiArCj4gKwkJaWYgKG1vZGVzZXQpCj4gKwkJCWlu dGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fTU9ERVNFVCk7Cj4g IAl9Cj4gIAo+ICAJLyogRklYTUU6IGFkZCBzdWJwaXhlbCBvcmRlciAqLwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiBpbmRleCBjOTAxYjE5Li4wNDJkOTJmIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+IEBAIC00OSw5ICs0OSw2 IEBACj4gICAqIHByZXNlbnQgZm9yIGEgZ2l2ZW4gcGxhdGZvcm0uCj4gICAqLwo+ICAKPiAtI2Rl ZmluZSBHRU45X0VOQUJMRV9EQzUoZGV2KSAwCj4gLSNkZWZpbmUgU0tMX0VOQUJMRV9EQzYoZGV2 KSBJU19TS1lMQUtFKGRldikKPiAtCj4gICNkZWZpbmUgZm9yX2VhY2hfcG93ZXJfd2VsbChpLCBw b3dlcl93ZWxsLCBkb21haW5fbWFzaywgcG93ZXJfZG9tYWlucykJXAo+ICAJZm9yIChpID0gMDsJ CQkJCQkJXAo+ICAJICAgICBpIDwgKHBvd2VyX2RvbWFpbnMpLT5wb3dlcl93ZWxsX2NvdW50ICYm CQkJXAo+IEBAIC0zMzYsMTAgKzMzMywxNSBAQCBzdGF0aWMgdm9pZCBoc3dfc2V0X3Bvd2VyX3dl bGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJU0tMX0RJU1BMQVlfUE9X RVJXRUxMXzFfUE9XRVJfRE9NQUlOUyB8CQlcCj4gIAlCSVQoUE9XRVJfRE9NQUlOX1BMTFMpIHwJ CQlcCj4gIAlCSVQoUE9XRVJfRE9NQUlOX0lOSVQpKQo+ICsjZGVmaW5lIFNLTF9ESVNQTEFZX0RD X09GRl9QT1dFUl9ET01BSU5TICgJCVwKPiArCUJJVChQT1dFUl9ET01BSU5fTU9ERVNFVCkgfAkJ CVwKPiArCUJJVChQT1dFUl9ET01BSU5fQVVYX0EpIHwJCQlcCj4gKwlCSVQoUE9XRVJfRE9NQUlO X0lOSVQpKQo+ICAjZGVmaW5lIFNLTF9ESVNQTEFZX0FMV0FZU19PTl9QT1dFUl9ET01BSU5TICgJ CVwKPiAgCShQT1dFUl9ET01BSU5fTUFTSyAmIH4oU0tMX0RJU1BMQVlfUE9XRVJXRUxMXzFfUE9X RVJfRE9NQUlOUyB8CVwKPiAgCVNLTF9ESVNQTEFZX1BPV0VSV0VMTF8yX1BPV0VSX0RPTUFJTlMg fAkJXAo+IC0JU0tMX0RJU1BMQVlfTUlTQ19JT19QT1dFUl9ET01BSU5TKSkgfAkJXAo+ICsJU0tM X0RJU1BMQVlfTUlTQ19JT19QT1dFUl9ET01BSU5TIHwJCVwKPiArCVNLTF9ESVNQTEFZX0RDX09G Rl9QT1dFUl9ET01BSU5TKSkgfAkJXAo+ICAJQklUKFBPV0VSX0RPTUFJTl9JTklUKSkKPiAgCj4g ICNkZWZpbmUgQlhUX0RJU1BMQVlfUE9XRVJXRUxMXzJfUE9XRVJfRE9NQUlOUyAoCQlcCj4gQEAg LTUxMSwyMCArNTEzLDYgQEAgc3RhdGljIHZvaWQgZ2VuOV9lbmFibGVfZGM1KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCVBPU1RJTkdfUkVBRChEQ19TVEFURV9FTik7Cj4g IH0KPiAgCj4gLXN0YXRpYyB2b2lkIGdlbjlfZGlzYWJsZV9kYzUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+IC17Cj4gLQl1aW50MzJfdCB2YWw7Cj4gLQo+IC0JYXNzZXJ0X2Nh bl9kaXNhYmxlX2RjNShkZXZfcHJpdik7Cj4gLQo+IC0JRFJNX0RFQlVHX0tNUygiRGlzYWJsaW5n IERDNVxuIik7Cj4gLQo+IC0JdmFsID0gSTkxNV9SRUFEKERDX1NUQVRFX0VOKTsKPiAtCXZhbCAm PSB+RENfU1RBVEVfRU5fVVBUT19EQzU7Cj4gLQlJOTE1X1dSSVRFKERDX1NUQVRFX0VOLCB2YWwp Owo+IC0JUE9TVElOR19SRUFEKERDX1NUQVRFX0VOKTsKPiAtfQo+IC0KPiAgc3RhdGljIHZvaWQg YXNzZXJ0X2Nhbl9lbmFibGVfZGM2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7Cj4gQEAgLTU1 Myw2ICs1NDEsMjEgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X2Nhbl9kaXNhYmxlX2RjNihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJICAiREM2IGFscmVhZHkgcHJvZ3JhbW1l ZCB0byBiZSBkaXNhYmxlZC5cbiIpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBnZW45X2Rpc2Fi bGVfZGM1X2RjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCXVp bnQzMl90IHZhbDsKPiArCj4gKwlhc3NlcnRfY2FuX2Rpc2FibGVfZGM1KGRldl9wcml2KTsKPiAr CWFzc2VydF9jYW5fZGlzYWJsZV9kYzYoZGV2X3ByaXYpOwo+ICsKPiArCURSTV9ERUJVR19LTVMo IkRpc2FibGluZyBEQzUgYW5kIERDNlxuIik7Cj4gKwo+ICsJdmFsID0gSTkxNV9SRUFEKERDX1NU QVRFX0VOKTsKPiArCXZhbCAmPSB+RENfU1RBVEVfRU5fVVBUT19EQzVfREM2X01BU0s7Cj4gKwlJ OTE1X1dSSVRFKERDX1NUQVRFX0VOLCB2YWwpOwo+ICsJUE9TVElOR19SRUFEKERDX1NUQVRFX0VO KTsKPiArfQo+ICsKPiAgdm9pZCBza2xfZW5hYmxlX2RjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCXVpbnQzMl90IHZhbDsKPiBAQCAtNjMyLDE3ICs2MzUsMTMg QEAgc3RhdGljIHZvaWQgc2tsX3NldF9wb3dlcl93ZWxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgCQkJCSJJbnZhbGlkIGZvciBwb3dlciB3ZWxsIHN0YXR1cyB0byBiZSBl bmFibGVkLCB1bmxlc3MgZG9uZSBieSB0aGUgQklPUywgXAo+ICAJCQkJd2hlbiByZXF1ZXN0IGlz IHRvIGRpc2FibGUhXG4iKTsKPiAgCQkJaWYgKHBvd2VyX3dlbGwtPmRhdGEgPT0gU0tMX0RJU1Bf UFdfMikgewo+IC0JCQkJaWYgKEdFTjlfRU5BQkxFX0RDNShkZXYpKQo+IC0JCQkJCWdlbjlfZGlz YWJsZV9kYzUoZGV2X3ByaXYpOwo+IC0JCQkJaWYgKFNLTF9FTkFCTEVfREM2KGRldikpIHsKPiAt CQkJCQkvKgo+IC0JCQkJCSAqIERESSBidWZmZXIgcHJvZ3JhbW1pbmcgdW5uZWNlc3NhcnkgZHVy aW5nIGRyaXZlci1sb2FkL3Jlc3VtZQo+IC0JCQkJCSAqIGFzIGl0J3MgYWxyZWFkeSBkb25lIGR1 cmluZyBtb2Rlc2V0IGluaXRpYWxpemF0aW9uIHRoZW4uCj4gLQkJCQkJICogSXQncyBhbHNvIGlu dmFsaWQgaGVyZSBhcyBlbmNvZGVyIGxpc3QgaXMgc3RpbGwgdW5pbml0aWFsaXplZC4KPiAtCQkJ CQkgKi8KPiAtCQkJCQlpZiAoIWRldl9wcml2LT5wb3dlcl9kb21haW5zLmluaXRpYWxpemluZykK PiAtCQkJCQkJaW50ZWxfcHJlcGFyZV9kZGkoZGV2KTsKPiAtCQkJCX0KPiArCQkJCS8qCj4gKwkJ CQkgKiBEREkgYnVmZmVyIHByb2dyYW1taW5nIHVubmVjZXNzYXJ5IGR1cmluZyBkcml2ZXItbG9h ZC9yZXN1bWUKPiArCQkJCSAqIGFzIGl0J3MgYWxyZWFkeSBkb25lIGR1cmluZyBtb2Rlc2V0IGlu aXRpYWxpemF0aW9uIHRoZW4uCj4gKwkJCQkgKiBJdCdzIGFsc28gaW52YWxpZCBoZXJlIGFzIGVu Y29kZXIgbGlzdCBpcyBzdGlsbCB1bmluaXRpYWxpemVkLgo+ICsJCQkJICovCj4gKwkJCQlpZiAo IWRldl9wcml2LT5wb3dlcl9kb21haW5zLmluaXRpYWxpemluZykKPiArCQkJCQlpbnRlbF9wcmVw YXJlX2RkaShkZXYpOwo+ICAJCQl9Cj4gIAkJCUk5MTVfV1JJVEUoSFNXX1BXUl9XRUxMX0RSSVZF UiwgdG1wIHwgcmVxX21hc2spOwo+ICAJCX0KPiBAQCAtNjU4LDE3ICs2NTcsMTMgQEAgc3RhdGlj IHZvaWQgc2tsX3NldF9wb3dlcl93ZWxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiAgCX0gZWxzZSB7Cj4gIAkJaWYgKGVuYWJsZV9yZXF1ZXN0ZWQpIHsKPiAgCQkJaWYgKElT X1NLWUxBS0UoZGV2KSAmJgo+IC0JCQkJKHBvd2VyX3dlbGwtPmRhdGEgPT0gU0tMX0RJU1BfUFdf MSkpCj4gKwkJCQkocG93ZXJfd2VsbC0+ZGF0YSA9PSBTS0xfRElTUF9QV18xKSkgewo+ICAJCQkJ RFJNX0RFQlVHX0tNUygiTm90IERpc2FibGluZyBQVzEsIGRtYyB3aWxsIGhhbmRsZVxuIik7Cj4g LQkJCWVsc2Ugewo+ICsJCQl9IGVsc2Ugewo+ICAJCQkJSTkxNV9XUklURShIU1dfUFdSX1dFTExf RFJJVkVSLAl0bXAgJiB+cmVxX21hc2spOwo+ICAJCQkJUE9TVElOR19SRUFEKEhTV19QV1JfV0VM TF9EUklWRVIpOwo+ICAJCQkJRFJNX0RFQlVHX0tNUygiRGlzYWJsaW5nICVzXG4iLCBwb3dlcl93 ZWxsLT5uYW1lKTsKPiAgCQkJfQo+IC0KPiAtCQkJaWYgKEdFTjlfRU5BQkxFX0RDNShkZXYpICYm Cj4gLQkJCQlwb3dlcl93ZWxsLT5kYXRhID09IFNLTF9ESVNQX1BXXzIpCj4gLQkJCQkJZ2VuOV9l bmFibGVfZGM1KGRldl9wcml2KTsKPiAgCQl9Cj4gIAl9Cj4gIAo+IEBAIC03NDMsNiArNzM4LDM2 IEBAIHN0YXRpYyB2b2lkIHNrbF9wb3dlcl93ZWxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICAJc2tsX3NldF9wb3dlcl93ZWxsKGRldl9wcml2LCBwb3dlcl93 ZWxsLCBmYWxzZSk7Cj4gIH0KPiAgCj4gK3N0YXRpYyBib29sIHNrbF9kY19vZmZfcG93ZXJfd2Vs bF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJCQkgIHN0 cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGwpCj4gK3sKPiArCXJldHVybiAhKEk5MTVf UkVBRChEQ19TVEFURV9FTikgJiBEQ19TVEFURV9FTl9VUFRPX0RDNik7CgpUaGlzIGRvZXNuJ3Qg aGFuZGxlIERDNS4uLgoKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgc2tsX2RjX29mZl9wb3dlcl93 ZWxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQkJIHN0 cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGwpCj4gK3sKPiArCWdlbjlfZGlzYWJsZV9k YzVfZGM2KGRldl9wcml2KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgc2tsX2RjX29mZl9wb3dl cl93ZWxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJ CSAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbCkKPiArewo+ICsJaWYgKElTX1NL WUxBS0UoZGV2X3ByaXYpKQo+ICsJCXNrbF9lbmFibGVfZGM2KGRldl9wcml2KTsKPiArCWVsc2UK PiArCQlnZW45X2VuYWJsZV9kYzUoZGV2X3ByaXYpOwoKLi4ud2hlcmVhcyB0aGlzIG9uZSB0cmll cyB0byBoYW5kbGUgREM1LgoKQXNzdW1pbmcgd2Ugd2FudCB0byBoYW5kbGUgREM1IGFuZCBEQzYg d2l0aCBhIHNpbmdsZSBwb3dlciB3ZWxsICh0byBtYWtlCml0IGVhc2llciB0byBjaGFuZ2UgYmV0 d2VlbiBEQzUgYW5kIERDNiB1c2luZyBhIG1vZHVsZSBwYXJhbWV0ZXIgb24gU0tMLApza2xfZGNf b2ZmX3Bvd2VyX3dlbGxfZW5hYmxlZCgpIHNob3VsZCBwcm9iYWJseSBqdXN0IGJlOgoKewoJcmV0 dXJuIChJOTE1X1JFQUQoRENfU1RBVEVfRU4pICYgRENfU1RBVEVfRU5fVVBUT19EQzVfREM2X01B U0spID09IDA7Cn0KCk90aGVyd2lzZSB0aGUgREMgb2ZmIHBvd2VyIHdlbGwgYml0cyBsb29rIGFs bCByaWdodCB0byBtZS4gVGhlIHJlc3QKcHJlc3VtYWJseSBuZWVkcyBzb21lIGNvb3JkaW5hdGlv biB3aXRoIEltcmUncyB3b3JrIHNpbmNlIHRoZSBQVzEgYW5kCk1JU0MgSU8gc3R1ZmYgc2hvdWxk IGJlIGdvaW5nIGF3YXkgZnJvbSBoZXJlLgoKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgc2tsX2Rj X29mZl9wb3dlcl93ZWxsX3N5bmNfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ICsJCQkJCSAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbCkKPiArewo+ICsJ aWYgKHBvd2VyX3dlbGwtPmNvdW50ID4gMCkKPiArCQlza2xfZGNfb2ZmX3Bvd2VyX3dlbGxfZW5h YmxlKGRldl9wcml2LCBwb3dlcl93ZWxsKTsKPiArCWVsc2UKPiArCQlza2xfZGNfb2ZmX3Bvd2Vy X3dlbGxfZGlzYWJsZShkZXZfcHJpdiwgcG93ZXJfd2VsbCk7Cj4gK30KPiArCj4gIHN0YXRpYyB2 b2lkIGk5eHhfYWx3YXlzX29uX3Bvd2VyX3dlbGxfbm9vcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gIAkJCQkJICAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2Vs bCkKPiAgewo+IEBAIC0xNTc0LDYgKzE1OTksMTMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1 X3Bvd2VyX3dlbGxfb3BzIHNrbF9wb3dlcl93ZWxsX29wcyA9IHsKPiAgCS5pc19lbmFibGVkID0g c2tsX3Bvd2VyX3dlbGxfZW5hYmxlZCwKPiAgfTsKPiAgCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9wb3dlcl93ZWxsX29wcyBza2xfZGNfb2ZmX3Bvd2VyX3dlbGxfb3BzID0gewo+ICsJLnN5 bmNfaHcgPSBza2xfZGNfb2ZmX3Bvd2VyX3dlbGxfc3luY19odywKPiArCS5lbmFibGUgPSBza2xf ZGNfb2ZmX3Bvd2VyX3dlbGxfZW5hYmxlLAo+ICsJLmRpc2FibGUgPSBza2xfZGNfb2ZmX3Bvd2Vy X3dlbGxfZGlzYWJsZSwKPiArCS5pc19lbmFibGVkID0gc2tsX2RjX29mZl9wb3dlcl93ZWxsX2Vu YWJsZWQsCj4gK307Cj4gKwo+ICBzdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCBoc3dfcG93 ZXJfd2VsbHNbXSA9IHsKPiAgCXsKPiAgCQkubmFtZSA9ICJhbHdheXMtb24iLAo+IEBAIC0xNzM4 LDYgKzE3NzAsMTEgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgc2tsX3Bvd2VyX3dl bGxzW10gPSB7Cj4gIAkJLmRhdGEgPSBTS0xfRElTUF9QV18xLAo+ICAJfSwKPiAgCXsKPiArCQku bmFtZSA9ICJEQyBvZmYiLAo+ICsJCS5kb21haW5zID0gU0tMX0RJU1BMQVlfRENfT0ZGX1BPV0VS X0RPTUFJTlMsCj4gKwkJLm9wcyA9ICZza2xfZGNfb2ZmX3Bvd2VyX3dlbGxfb3BzLAo+ICsJfSwK PiArCXsKPiAgCQkubmFtZSA9ICJNSVNDIElPIHBvd2VyIHdlbGwiLAo+ICAJCS5kb21haW5zID0g U0tMX0RJU1BMQVlfTUlTQ19JT19QT1dFUl9ET01BSU5TLAo+ICAJCS5vcHMgPSAmc2tsX3Bvd2Vy X3dlbGxfb3BzLAo+IC0tIAo+IDIuMS40CgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=