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: Thu, 12 Nov 2015 15:30:42 +0200 Message-ID: <1447335042.6396.18.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> <1447268239.24928.24.camel@intel.com> <20151112122434.GB30759@patrik-desktop.isw.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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id E79FB6E42C for ; Thu, 12 Nov 2015 05:30:44 -0800 (PST) In-Reply-To: <20151112122434.GB30759@patrik-desktop.isw.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 T24gdG8sIDIwMTUtMTEtMTIgYXQgMTM6MjQgKzAxMDAsIFBhdHJpayBKYWtvYnNzb24gd3JvdGU6 Cj4gT24gV2VkLCBOb3YgMTEsIDIwMTUgYXQgMDg6NTc6MTlQTSArMDIwMCwgSW1yZSBEZWFrIHdy b3RlOgo+ID4gT24gbWEsIDIwMTUtMTEtMDkgYXQgMTY6NDggKzAxMDAsIFBhdHJpayBKYWtvYnNz b24gd3JvdGU6Cj4gPiA+IEhhbmRsZSBEQyBvZmYgYXMgYSBwb3dlciB3ZWxsIHdoZXJlIGVuYWJs aW5nIHRoZSBwb3dlciB3ZWxsIHdpbGwKPiA+ID4gcHJldmVudAo+ID4gPiB0aGUgRE1DIHRvIGVu dGVyIHNlbGVjdGVkIERDIHN0YXRlcyAocmVxdWlyZWQgYXJvdW5kIG1vZGVzZXRzIGFuZAo+ID4g PiBBdXgKPiA+ID4gQSkuIERpc2FibGluZyB0aGUgcG93ZXIgd2VsbCB3aWxsIGFsbG93IERDIHN0 YXRlcyBhZ2Fpbi4gRm9yIG5vdwo+ID4gPiB0aGUKPiA+ID4gaGlnaGVzdCBEQyBzdGF0ZSBpcyBE QzYgZm9yIFNreWxha2UgYW5kIERDNSBmb3IgQnJveHRvbiBidXQgd2lsbAo+ID4gPiBiZQo+ID4g PiBjb25maWd1cmFibGUgZm9yIFNreWxha2UgaW4gYSBsYXRlciBwYXRjaC4KPiA+ID4gCj4gPiA+ IHYyOiBDaGVjayBib3RoIERDNSBhbmQgREM2IGJpdHMgaW4gcG93ZXIgd2VsbCBlbmFibGVkIGZ1 bmN0aW9uCj4gPiA+IChWaWxsZSkKPiA+ID4gCj4gPiA+IFNpZ25lZC1vZmYtYnk6IFBhdHJpayBK YWtvYnNzb24gPHBhdHJpay5qYWtvYnNzb25AbGludXguaW50ZWwuY29tCj4gPiA+ID4KPiA+ID4g LS0tCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgfCAgIDYg LS0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICAgICB8ICAgMSAr Cj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgfCAgIDYgKysK PiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYyB8IDExMAo+ID4g PiArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQo+ID4gPiAgNCBmaWxlcyBjaGFuZ2Vk LCA4OCBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkKPiA+ID4gCj4gPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gPiA+IGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuYwo+ID4gPiBpbmRleCA1YTYzZjlhLi4wYzdmNDM1IDEwMDY0NAo+ ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiA+ID4gQEAgLTEwNzIsOSArMTA3Miw2IEBA IHN0YXRpYyBpbnQgaTkxNV9wbV9yZXN1bWUoc3RydWN0IGRldmljZQo+ID4gPiAqZGV2KQo+ID4g PiAgCj4gPiA+ICBzdGF0aWMgaW50IHNrbF9zdXNwZW5kX2NvbXBsZXRlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlCj4gPiA+ICpkZXZfcHJpdikKPiA+ID4gIHsKPiA+ID4gLQlpZiAoZGV2X3ByaXYt PmNzci5kbWNfcGF5bG9hZCkKPiA+ID4gLQkJc2tsX2VuYWJsZV9kYzYoZGV2X3ByaXYpOwo+ID4g PiAtCj4gPiA+ICAJcmV0dXJuIDA7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gQEAgLTExMTksOSAr MTExNiw2IEBAIHN0YXRpYyBpbnQgYnh0X3Jlc3VtZV9wcmVwYXJlKHN0cnVjdAo+ID4gPiBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4gIAo+ID4gPiAgc3RhdGljIGludCBza2xfcmVz dW1lX3ByZXBhcmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiAgewo+ ID4gPiAtCWlmIChkZXZfcHJpdi0+Y3NyLmRtY19wYXlsb2FkKQo+ID4gPiAtCQlza2xfZGlzYWJs ZV9kYzYoZGV2X3ByaXYpOwo+ID4gPiAtCj4gPiA+ICAJcmV0dXJuIDA7Cj4gPiA+ICB9Cj4gPiA+ ICAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiA+IGluZGV4IDMxYjNhODQu LmRmNDQ1YmEgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVn LmgKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gPiBAQCAt NjM2LDYgKzYzNiw3IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+ID4gPiAgCj4gPiA+ ICAJLyogTm90IGFjdHVhbCBiaXQgZ3JvdXBzLiBVc2VkIGFzIElEcyBmb3IKPiA+ID4gbG9va3Vw X3Bvd2VyX3dlbGwoKSAqLwo+ID4gPiAgCVNLTF9ESVNQX1BXX0FMV0FZU19PTiwKPiA+ID4gKwlT S0xfRElTUF9QV19EQ19PRkYsCj4gPiAKPiA+IEltbyBpdCB3b3VsZCBiZSBsZXNzIGNvbmZ1c2lu ZyB0byBjYWxsIGl0IERDMyBwb3dlciB3ZWxsLiBMb29raW5nCj4gPiBhdCB0aAo+ID4gZSBEQyBz cGVjLCBEQzQgaXMgb25seSBhIHRyYW5zaXRvcnkgc3RhdGUgdG8gREM1LzYsIHNvIHdoYXQgd2UK PiA+IGV4cGVjdAo+ID4gd2hlbiB3ZSBkaXNhYmxlIERDNi81IGlzIERDMyBvciBzaGFsbG93ZXIg cG93ZXIgc3RhdGVzIChEQzIvMS8wKS4KPiAKPiBJJ3ZlIGJlZW4gY2hhbmdpbmcgdGhlIG5hbWUg cXVpdGUgYSBmZXcgdGltZXMgYnV0IHNldHRsZWQgb24gIkRDIG9mZiIKPiB0byBrZWVwIGl0Cj4g Z2VuZXJpYy4gVGhlIG1haW4gbWVjaGFuaXNtIGZvciB0aGUgcG93ZXIgd2VsbCBpcyB0byBwcmV2 ZW50IGFueSBEQwo+IHN0YXRlcyB0aGF0Cj4gY2FuIGNhdXNlIHVzIHByb2JsZW1zIGR1cmluZyBj ZXJ0YWluIG9wZXJhdGlvbnMgKGkuZS4gbW9kZXNldCkuIFRoZQo+IERDIHN0YXRlcyB3ZQo+IG5l ZWQgdG8gYmxvY2sgY291bGQgY2hhbmdlIG9yIGJlIGRpZmZlcmVudCBiZXR3ZWVuIHBsYXRmb3Jt cy4gRm9yCj4gdGhhdCByZWFzb24gSQo+IHdvdWxkIHByZWZlciBub3QgdG8gYmUgYXMgc3BlY2lm aWMgd2l0aCB0aGUgbmFtaW5nLgoKQWxsIHRoZSBwb3dlciB3ZWxsIG5hbWVzIGFyZSBwbGF0Zm9y bSBzcGVjaWZpYyBzbyBpdCB3b3VsZCBiZSBsb2dpY2FsCmFuZCBtb3JlIG1lYW5pbmdmdWwgdG8g Z2l2ZSB0aGlzIG9uZSBhIHBsYXRmb3JtIHNwZWNpZmljIG5hbWUgdG9vLiBBbHNvCidEQyBvZmYn IGlzIGtpbmQgb2YgYSBkb3VibGUgbmVnYXRpb24gbGVhZGluZyB0byBkZWJ1ZyBtZXNzYWdlcyBs aWtlCidlbmFibGUgREMgb2ZmJyB3aGljaCBpc24ndCB0aGF0IG5pY2UuIEJ1dCBub3cgdGhhdCBJ IHRoaW5rIG9mIGl0IG15CmlkZWEgaXNuJ3QgdGhhdCBncmVhdCBlaXRoZXIuICdlbmFibGUgREMz JyBpcyBjb25mdXNpbmcgdG9vLCBvbmUgY291bGQKdGhpbmsgd2UgZW5hYmxlIHNvbWUgcG93ZXIg c2F2aW5nIHN0YXRlIGF0IHRoYXQgcG9pbnQsIHdoaWNoIGlzIG5vdCB0aGUKY2FzZS4gU28gbGV0 J3Mga2VlcCB0aGluZ3MgYXMtaXMgZm9yIG5vdyBhdCBsZWFzdDoKClJldmlld2VkLWJ5OiBJbXJl IERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+Cgo+IAo+ID4gCj4gPiA+ICB9Owo+ID4gPiAgCj4g PiA+ICAjZGVmaW5lIFNLTF9QT1dFUl9XRUxMX1NUQVRFKHB3KSAoMSA8PCAoKHB3KSAqIDIpKQo+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4g PiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiA+IGluZGV4IDY0 OWFjMzQuLjg1NmQ4MDEgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKPiA+ID4gQEAgLTEzMzIwLDYgKzEzMzIwLDkgQEAgc3RhdGljIGludCBpbnRlbF9hdG9t aWNfY29tbWl0KHN0cnVjdAo+ID4gPiBkcm1fZGV2aWNlICpkZXYsCj4gPiA+ICAJCQl0b19pbnRl bF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKQo+ID4gPiAtPnVwZGF0ZV9waXBlOwo+ID4gPiAgCQl1 bnNpZ25lZCBsb25nIHB1dF9kb21haW5zID0gMDsKPiA+ID4gIAo+ID4gPiArCQlpZiAobW9kZXNl dCkKPiA+ID4gKwkJCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LAo+ID4gPiBQT1dF Ul9ET01BSU5fTU9ERVNFVCk7Cj4gPiA+ICsKPiA+ID4gIAkJaWYgKG1vZGVzZXQgJiYgY3J0Yy0+ c3RhdGUtPmFjdGl2ZSkgewo+ID4gPiAgCQkJdXBkYXRlX3NjYW5saW5lX29mZnNldCh0b19pbnRl bF9jcnRjKGNydAo+ID4gPiBjKSk7Cj4gPiA+ICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2Vu YWJsZShjcnRjKTsKPiA+ID4gQEAgLTEzMzQzLDYgKzEzMzQ2LDkgQEAgc3RhdGljIGludCBpbnRl bF9hdG9taWNfY29tbWl0KHN0cnVjdAo+ID4gPiBkcm1fZGV2aWNlICpkZXYsCj4gPiA+ICAJCQlt b2Rlc2V0X3B1dF9wb3dlcl9kb21haW5zKGRldl9wcml2LAo+ID4gPiBwdXRfZG9tYWlucyk7Cj4g PiA+ICAKPiA+ID4gIAkJaW50ZWxfcG9zdF9wbGFuZV91cGRhdGUoaW50ZWxfY3J0Yyk7Cj4gPiA+ ICsKPiA+ID4gKwkJaWYgKG1vZGVzZXQpCj4gPiA+ICsJCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1 dChkZXZfcHJpdiwKPiA+ID4gUE9XRVJfRE9NQUlOX01PREVTRVQpOwo+ID4gPiAgCX0KPiA+ID4g IAo+ID4gPiAgCS8qIEZJWE1FOiBhZGQgc3VicGl4ZWwgb3JkZXIgKi8KPiA+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+ID4gPiBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+ID4gPiBpbmRleCBlZGY3NTNlLi45 NWMzZmNjIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50 aW1lX3BtLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9w bS5jCj4gPiA+IEBAIC00OSw5ICs0OSw2IEBACj4gPiA+ICAgKiBwcmVzZW50IGZvciBhIGdpdmVu IHBsYXRmb3JtLgo+ID4gPiAgICovCj4gPiA+ICAKPiA+ID4gLSNkZWZpbmUgR0VOOV9FTkFCTEVf REM1KGRldikgMAo+ID4gPiAtI2RlZmluZSBTS0xfRU5BQkxFX0RDNihkZXYpIElTX1NLWUxBS0Uo ZGV2KQo+ID4gPiAtCj4gPiA+ICAjZGVmaW5lIGZvcl9lYWNoX3Bvd2VyX3dlbGwoaSwgcG93ZXJf d2VsbCwgZG9tYWluX21hc2ssCj4gPiA+IHBvd2VyX2RvbWFpbnMpCVwKPiA+ID4gIAlmb3IgKGkg PSAwOwkJCQkJCQo+ID4gPiAJCj4gPiA+IFwKPiA+ID4gIAkgICAgIGkgPCAocG93ZXJfZG9tYWlu cyktPnBvd2VyX3dlbGxfY291bnQgJiYJCQo+ID4gPiAJXAo+ID4gPiBAQCAtMzA5LDkgKzMwNiwx NCBAQCBzdGF0aWMgdm9pZCBoc3dfc2V0X3Bvd2VyX3dlbGwoc3RydWN0Cj4gPiA+IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiAgI2RlZmluZSBTS0xfRElTUExBWV9ERElfRF9QT1dF Ul9ET01BSU5TICgJCVwKPiA+ID4gIAlCSVQoUE9XRVJfRE9NQUlOX1BPUlRfRERJX0RfTEFORVMp IHwJCVwKPiA+ID4gIAlCSVQoUE9XRVJfRE9NQUlOX0lOSVQpKQo+ID4gPiArI2RlZmluZSBTS0xf RElTUExBWV9EQ19PRkZfUE9XRVJfRE9NQUlOUyAoCQlcCj4gPiA+ICsJQklUKFBPV0VSX0RPTUFJ Tl9NT0RFU0VUKSB8CQkJXAo+ID4gPiArCUJJVChQT1dFUl9ET01BSU5fQVVYX0EpIHwJCQlcCj4g PiA+ICsJQklUKFBPV0VSX0RPTUFJTl9JTklUKSkKPiA+ID4gICNkZWZpbmUgU0tMX0RJU1BMQVlf QUxXQVlTX09OX1BPV0VSX0RPTUFJTlMgKAkJXAo+ID4gPiAgCShQT1dFUl9ET01BSU5fTUFTSyAm IH4oCQkJCVwKPiA+ID4gLQlTS0xfRElTUExBWV9QT1dFUldFTExfMl9QT1dFUl9ET01BSU5TKSkg fAlcCj4gPiA+ICsJU0tMX0RJU1BMQVlfUE9XRVJXRUxMXzJfUE9XRVJfRE9NQUlOUyB8CQlcCj4g PiA+ICsJU0tMX0RJU1BMQVlfRENfT0ZGX1BPV0VSX0RPTUFJTlMpKSB8CQlcCj4gPiA+ICAJQklU KFBPV0VSX0RPTUFJTl9JTklUKSkKPiA+ID4gIAo+ID4gPiAgI2RlZmluZSBCWFRfRElTUExBWV9Q T1dFUldFTExfMl9QT1dFUl9ET01BSU5TICgJCVwKPiA+ID4gQEAgLTMzOSw2ICszNDEsMTAgQEAg c3RhdGljIHZvaWQgaHN3X3NldF9wb3dlcl93ZWxsKHN0cnVjdAo+ID4gPiBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiA+ID4gIAlCSVQoUE9XRVJfRE9NQUlOX0FVWF9BKSB8CQkJXAo+ID4g PiAgCUJJVChQT1dFUl9ET01BSU5fUExMUykgfAkJCVwKPiA+ID4gIAlCSVQoUE9XRVJfRE9NQUlO X0lOSVQpKQo+ID4gPiArI2RlZmluZSBCWFRfRElTUExBWV9EQ19PRkZfUE9XRVJfRE9NQUlOUyAo CQlcCj4gPiA+ICsJQklUKFBPV0VSX0RPTUFJTl9NT0RFU0VUKSB8CQkJXAo+ID4gPiArCUJJVChQ T1dFUl9ET01BSU5fQVVYX0EpIHwJCQlcCj4gPiA+ICsJQklUKFBPV0VSX0RPTUFJTl9JTklUKSkK PiA+ID4gICNkZWZpbmUgQlhUX0RJU1BMQVlfQUxXQVlTX09OX1BPV0VSX0RPTUFJTlMgKAkJXAo+ ID4gPiAgCShQT1dFUl9ET01BSU5fTUFTSyAmCj4gPiA+IH4oQlhUX0RJU1BMQVlfUE9XRVJXRUxM XzFfUE9XRVJfRE9NQUlOUwo+ID4gPiA+IAlcCj4gPiA+ICAJQlhUX0RJU1BMQVlfUE9XRVJXRUxM XzJfUE9XRVJfRE9NQUlOUykpIHwJXAo+ID4gPiBAQCAtNDg2LDE1ICs0OTIsNiBAQCBzdGF0aWMg dm9pZCBnZW45X2VuYWJsZV9kYzUoc3RydWN0Cj4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ID4gPiAgCWdlbjlfc2V0X2RjX3N0YXRlKGRldl9wcml2LCBEQ19TVEFURV9FTl9VUFRP X0RDNSk7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gLXN0YXRpYyB2b2lkIGdlbjlfZGlzYWJsZV9k YzUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiAtewo+ID4gPiAtCWFz c2VydF9jYW5fZGlzYWJsZV9kYzUoZGV2X3ByaXYpOwo+ID4gPiAtCj4gPiA+IC0JRFJNX0RFQlVH X0tNUygiRGlzYWJsaW5nIERDNVxuIik7Cj4gPiA+IC0KPiA+ID4gLQlnZW45X3NldF9kY19zdGF0 ZShkZXZfcHJpdiwgRENfU1RBVEVfRElTQUJMRSk7Cj4gPiA+IC19Cj4gPiA+IC0KPiA+ID4gIHN0 YXRpYyB2b2lkIGFzc2VydF9jYW5fZW5hYmxlX2RjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ ID4gPiAqZGV2X3ByaXYpCj4gPiA+ICB7Cj4gPiA+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGRldl9wcml2LT5kZXY7Cj4gPiA+IEBAIC01MjIsNiArNTE5LDE0IEBAIHN0YXRpYyB2b2lkIGFz c2VydF9jYW5fZGlzYWJsZV9kYzYoc3RydWN0Cj4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ID4gPiAgCQkgICJEQzYgYWxyZWFkeSBwcm9ncmFtbWVkIHRvIGJlIGRpc2FibGVkLlxu Iik7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gK3N0YXRpYyB2b2lkIGdlbjlfZGlzYWJsZV9kYzVf ZGM2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiA+ICpkZXZfcHJpdikKPiA+ID4gK3sKPiA+ ID4gKwlhc3NlcnRfY2FuX2Rpc2FibGVfZGM1KGRldl9wcml2KTsKPiA+ID4gKwlhc3NlcnRfY2Fu X2Rpc2FibGVfZGM2KGRldl9wcml2KTsKPiA+ID4gKwo+ID4gPiArCWdlbjlfc2V0X2RjX3N0YXRl KGRldl9wcml2LCBEQ19TVEFURV9ESVNBQkxFKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAgdm9p ZCBza2xfZW5hYmxlX2RjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+ ICB7Cj4gPiA+ICAJYXNzZXJ0X2Nhbl9lbmFibGVfZGM2KGRldl9wcml2KTsKPiA+ID4gQEAgLTU3 MSw2ICs1NzYsNyBAQCBzdGF0aWMgdm9pZCBza2xfc2V0X3Bvd2VyX3dlbGwoc3RydWN0Cj4gPiA+ IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiAgCWNhc2UgU0tMX0RJU1BfUFdfRERJ X0M6Cj4gPiA+ICAJY2FzZSBTS0xfRElTUF9QV19ERElfRDoKPiA+ID4gIAljYXNlIFNLTF9ESVNQ X1BXX01JU0NfSU86Cj4gPiA+ICsJY2FzZSBTS0xfRElTUF9QV19EQ19PRkY6Cj4gPiA+ICAJCWJy ZWFrOwo+ID4gPiAgCWRlZmF1bHQ6Cj4gPiA+ICAJCVdBUk4oMSwgIlVua25vd24gcG93ZXIgd2Vs bCAlbHVcbiIsIHBvd2VyX3dlbGwKPiA+ID4gLT5kYXRhKTsKPiA+ID4gQEAgLTU4OSwxNyArNTk1 LDEzIEBAIHN0YXRpYyB2b2lkIHNrbF9zZXRfcG93ZXJfd2VsbChzdHJ1Y3QKPiA+ID4gZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ICAJCQkJIkludmFsaWQgZm9yIHBvd2VyIHdlbGwg c3RhdHVzCj4gPiA+IHRvIGJlCj4gPiA+IGVuYWJsZWQsIHVubGVzcyBkb25lIGJ5IHRoZSBCSU9T LCBcCj4gPiA+ICAJCQkJd2hlbiByZXF1ZXN0IGlzIHRvIGRpc2FibGUhXG4iKTsKPiA+ID4gIAkJ CWlmIChwb3dlcl93ZWxsLT5kYXRhID09IFNLTF9ESVNQX1BXXzIpIHsKPiA+ID4gLQkJCQlpZiAo R0VOOV9FTkFCTEVfREM1KGRldikpCj4gPiA+IC0JCQkJCWdlbjlfZGlzYWJsZV9kYzUoZGV2X3By aQo+ID4gPiB2KTsKPiA+ID4gLQkJCQlpZiAoU0tMX0VOQUJMRV9EQzYoZGV2KSkgewo+ID4gPiAt CQkJCQkvKgo+ID4gPiAtCQkJCQkgKiBEREkgYnVmZmVyCj4gPiA+IHByb2dyYW1taW5nCj4gPiA+ IHVubmVjZXNzYXJ5IGR1cmluZyBkcml2ZXItbG9hZC9yZXN1bWUKPiA+ID4gLQkJCQkJICogYXMg aXQncyBhbHJlYWR5IGRvbmUKPiA+ID4gZHVyaW5nIG1vZGVzZXQgaW5pdGlhbGl6YXRpb24gdGhl bi4KPiA+ID4gLQkJCQkJICogSXQncyBhbHNvIGludmFsaWQKPiA+ID4gaGVyZSBhcwo+ID4gPiBl bmNvZGVyIGxpc3QgaXMgc3RpbGwgdW5pbml0aWFsaXplZC4KPiA+ID4gLQkJCQkJICovCj4gPiA+ IC0JCQkJCWlmICghZGV2X3ByaXYKPiA+ID4gLT5wb3dlcl9kb21haW5zLmluaXRpYWxpemluZykK PiA+ID4gLQkJCQkJCWludGVsX3ByZXBhcmVfZGQKPiA+ID4gaShkZQo+ID4gPiB2KTsKPiA+ID4g LQkJCQl9Cj4gPiA+ICsJCQkJLyoKPiA+ID4gKwkJCQkgKiBEREkgYnVmZmVyIHByb2dyYW1taW5n Cj4gPiA+IHVubmVjZXNzYXJ5IGR1cmluZyBkcml2ZXItbG9hZC9yZXN1bWUKPiA+ID4gKwkJCQkg KiBhcyBpdCdzIGFscmVhZHkgZG9uZSBkdXJpbmcKPiA+ID4gbW9kZXNldCBpbml0aWFsaXphdGlv biB0aGVuLgo+ID4gPiArCQkJCSAqIEl0J3MgYWxzbyBpbnZhbGlkIGhlcmUgYXMKPiA+ID4gZW5j b2Rlcgo+ID4gPiBsaXN0IGlzIHN0aWxsIHVuaW5pdGlhbGl6ZWQuCj4gPiA+ICsJCQkJICovCj4g PiA+ICsJCQkJaWYgKCFkZXZfcHJpdgo+ID4gPiAtPnBvd2VyX2RvbWFpbnMuaW5pdGlhbGl6aW5n KQo+ID4gPiArCQkJCQlpbnRlbF9wcmVwYXJlX2RkaShkZXYpOwo+ID4gPiAgCQkJfQo+ID4gPiAg CQkJSTkxNV9XUklURShIU1dfUFdSX1dFTExfRFJJVkVSLCB0bXAgfAo+ID4gPiByZXFfbWFzayk7 Cj4gPiA+ICAJCX0KPiA+ID4gQEAgLTYxNywxMCArNjE5LDYgQEAgc3RhdGljIHZvaWQgc2tsX3Nl dF9wb3dlcl93ZWxsKHN0cnVjdAo+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ ID4gIAkJCUk5MTVfV1JJVEUoSFNXX1BXUl9XRUxMX0RSSVZFUiwJdAo+ID4gPiBtcCAmCj4gPiA+ IH5yZXFfbWFzayk7Cj4gPiA+ICAJCQlQT1NUSU5HX1JFQUQoSFNXX1BXUl9XRUxMX0RSSVZFUik7 Cj4gPiA+ICAJCQlEUk1fREVCVUdfS01TKCJEaXNhYmxpbmcgJXNcbiIsCj4gPiA+IHBvd2VyX3dl bGwKPiA+ID4gLT5uYW1lKTsKPiA+ID4gLQo+ID4gPiAtCQkJaWYgKEdFTjlfRU5BQkxFX0RDNShk ZXYpICYmCj4gPiA+IC0JCQkJcG93ZXJfd2VsbC0+ZGF0YSA9PQo+ID4gPiBTS0xfRElTUF9QV18y KQo+ID4gPiAtCQkJCQlnZW45X2VuYWJsZV9kYzUoZGV2X3ByaXYKPiA+ID4gKTsKPiA+ID4gIAkJ fQo+ID4gPiAgCX0KPiA+ID4gIAo+ID4gPiBAQCAtNjk1LDYgKzY5Myw0MCBAQCBzdGF0aWMgdm9p ZCBza2xfcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVjdAo+ID4gPiBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiA+ID4gIAlza2xfc2V0X3Bvd2VyX3dlbGwoZGV2X3ByaXYsIHBvd2VyX3dlbGws IGZhbHNlKTsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiArc3RhdGljIGJvb2wgZ2VuOV9kY19vZmZf cG93ZXJfd2VsbF9lbmFibGVkKHN0cnVjdAo+ID4gPiBkcm1faTkxNV9wcml2YXRlCj4gPiA+ICpk ZXZfcHJpdiwKPiA+ID4gKwkJCQkJICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsCj4gPiA+ICpwb3dl cl93ZWxsKQo+ID4gPiArewo+ID4gPiArCXJldHVybiAoSTkxNV9SRUFEKERDX1NUQVRFX0VOKSAm Cj4gPiA+IERDX1NUQVRFX0VOX1VQVE9fREM1X0RDNl9NQVNLKSA9PSAwOwo+ID4gPiArfQo+ID4g PiArCj4gPiA+ICtzdGF0aWMgdm9pZCBnZW45X2RjX29mZl9wb3dlcl93ZWxsX2VuYWJsZShzdHJ1 Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiAqZGV2X3ByaXYsCj4gPiA+ICsJCQkJCSBz dHJ1Y3QgaTkxNV9wb3dlcl93ZWxsCj4gPiA+ICpwb3dlcl93ZWxsKQo+ID4gPiArewo+ID4gPiAr CWdlbjlfZGlzYWJsZV9kYzVfZGM2KGRldl9wcml2KTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAr c3RhdGljIHZvaWQgZ2VuOV9kY19vZmZfcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVjdAo+ID4gPiBk cm1faTkxNV9wcml2YXRlCj4gPiA+ICpkZXZfcHJpdiwKPiA+ID4gKwkJCQkJICBzdHJ1Y3QgaTkx NV9wb3dlcl93ZWxsCj4gPiA+ICpwb3dlcl93ZWxsKQo+ID4gPiArewo+ID4gPiArCWlmIChJU19T S1lMQUtFKGRldl9wcml2KSkKPiA+ID4gKwkJc2tsX2VuYWJsZV9kYzYoZGV2X3ByaXYpOwo+ID4g PiArCWVsc2UKPiA+ID4gKwkJZ2VuOV9lbmFibGVfZGM1KGRldl9wcml2KTsKPiA+ID4gK30KPiA+ ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgZ2VuOV9kY19vZmZfcG93ZXJfd2VsbF9zeW5jX2h3KHN0 cnVjdAo+ID4gPiBkcm1faTkxNV9wcml2YXRlCj4gPiA+ICpkZXZfcHJpdiwKPiA+ID4gKwkJCQkJ ICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsCj4gPiA+ICpwb3dlcl93ZWxsKQo+ID4gPiArewo+ID4g PiArCWlmIChwb3dlcl93ZWxsLT5jb3VudCA+IDApIHsKPiA+ID4gKwkJZ2VuOV9zZXRfZGNfc3Rh dGUoZGV2X3ByaXYsIERDX1NUQVRFX0RJU0FCTEUpOwo+ID4gPiArCX0gZWxzZSB7Cj4gPiA+ICsJ CWlmIChJU19TS1lMQUtFKGRldl9wcml2KSkKPiA+ID4gKwkJCWdlbjlfc2V0X2RjX3N0YXRlKGRl dl9wcml2LAo+ID4gPiBEQ19TVEFURV9FTl9VUFRPX0RDNik7Cj4gPiA+ICsJCWVsc2UKPiA+ID4g KwkJCWdlbjlfc2V0X2RjX3N0YXRlKGRldl9wcml2LAo+ID4gPiBEQ19TVEFURV9FTl9VUFRPX0RD NSk7Cj4gPiA+ICsJfQo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICBzdGF0aWMgdm9pZCBpOXh4X2Fs d2F5c19vbl9wb3dlcl93ZWxsX25vb3Aoc3RydWN0Cj4gPiA+IGRybV9pOTE1X3ByaXZhdGUKPiA+ ID4gKmRldl9wcml2LAo+ID4gPiAgCQkJCQkgICBzdHJ1Y3QKPiA+ID4gaTkxNV9wb3dlcl93ZWxs Cj4gPiA+ICpwb3dlcl93ZWxsKQo+ID4gPiAgewo+ID4gPiBAQCAtMTUxNyw2ICsxNTQ5LDEzIEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsX29wcwo+ID4gPiBza2xfcG93ZXJf d2VsbF9vcHMgPSB7Cj4gPiA+ICAJLmlzX2VuYWJsZWQgPSBza2xfcG93ZXJfd2VsbF9lbmFibGVk LAo+ID4gPiAgfTsKPiA+ID4gIAo+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2Vy X3dlbGxfb3BzCj4gPiA+IGdlbjlfZGNfb2ZmX3Bvd2VyX3dlbGxfb3BzID0KPiA+ID4gewo+ID4g PiArCS5zeW5jX2h3ID0gZ2VuOV9kY19vZmZfcG93ZXJfd2VsbF9zeW5jX2h3LAo+ID4gPiArCS5l bmFibGUgPSBnZW45X2RjX29mZl9wb3dlcl93ZWxsX2VuYWJsZSwKPiA+ID4gKwkuZGlzYWJsZSA9 IGdlbjlfZGNfb2ZmX3Bvd2VyX3dlbGxfZGlzYWJsZSwKPiA+ID4gKwkuaXNfZW5hYmxlZCA9IGdl bjlfZGNfb2ZmX3Bvd2VyX3dlbGxfZW5hYmxlZCwKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gIHN0 YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIGhzd19wb3dlcl93ZWxsc1tdID0gewo+ID4gPiAg CXsKPiA+ID4gIAkJLm5hbWUgPSAiYWx3YXlzLW9uIiwKPiA+ID4gQEAgLTE2OTcsNiArMTczNiwx MiBAQCBzdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2VsbAo+ID4gPiBza2xfcG93ZXJfd2VsbHNb XSA9IHsKPiA+ID4gIAkJLmRhdGEgPSBTS0xfRElTUF9QV18yLAo+ID4gPiAgCX0sCj4gPiA+ICAJ ewo+ID4gPiArCQkubmFtZSA9ICJEQyBvZmYiLAo+ID4gPiArCQkuZG9tYWlucyA9IFNLTF9ESVNQ TEFZX0RDX09GRl9QT1dFUl9ET01BSU5TLAo+ID4gPiArCQkub3BzID0gJmdlbjlfZGNfb2ZmX3Bv d2VyX3dlbGxfb3BzLAo+ID4gPiArCQkuZGF0YSA9IFNLTF9ESVNQX1BXX0RDX09GRiwKPiA+ID4g Kwl9LAo+ID4gPiArCXsKPiA+ID4gIAkJLm5hbWUgPSAiRERJIEEvRSBwb3dlciB3ZWxsIiwKPiA+ ID4gIAkJLmRvbWFpbnMgPSBTS0xfRElTUExBWV9ERElfQV9FX1BPV0VSX0RPTUFJTlMsCj4gPiA+ ICAJCS5vcHMgPSAmc2tsX3Bvd2VyX3dlbGxfb3BzLAo+ID4gPiBAQCAtMTc2OSw3ICsxODE0LDE0 IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsCj4gPiA+IGJ4dF9wb3dlcl93ZWxsc1td ID0gewo+ID4gPiAgCQkuZG9tYWlucyA9Cj4gPiA+IEJYVF9ESVNQTEFZX1BPV0VSV0VMTF8yX1BP V0VSX0RPTUFJTlMsCj4gPiA+ICAJCS5vcHMgPSAmc2tsX3Bvd2VyX3dlbGxfb3BzLAo+ID4gPiAg CQkuZGF0YSA9IFNLTF9ESVNQX1BXXzIsCj4gPiA+IC0JfQo+ID4gPiArCX0sCj4gPiA+ICsJewo+ ID4gPiArCQkubmFtZSA9ICJEQyBvZmYiLAo+ID4gPiArCQkuZG9tYWlucyA9IEJYVF9ESVNQTEFZ X0RDX09GRl9QT1dFUl9ET01BSU5TLAo+ID4gPiArCQkub3BzID0gJmdlbjlfZGNfb2ZmX3Bvd2Vy X3dlbGxfb3BzLAo+ID4gPiArCQkuZGF0YSA9IFNLTF9ESVNQX1BXX0RDX09GRiwKPiA+ID4gKwl9 LAo+ID4gPiArCj4gPiA+ICB9Owo+ID4gPiAgCj4gPiA+ICAjZGVmaW5lIHNldF9wb3dlcl93ZWxs cyhwb3dlcl9kb21haW5zLCBfX3Bvd2VyX3dlbGxzKSAoewkJCj4gPiA+IFwKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK