From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH v4 10/12] drm/i915/gen9: Turn DC handling into a power well Date: Tue, 24 Nov 2015 01:09:03 +0200 Message-ID: <1448320143.3085.7.camel@intel.com> References: <1447682467-6237-4-git-send-email-patrik.jakobsson@linux.intel.com> <1447687201-24759-1-git-send-email-patrik.jakobsson@linux.intel.com> <20151123225852.GA23476@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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 5C2496E291 for ; Mon, 23 Nov 2015 15:09:28 -0800 (PST) In-Reply-To: <20151123225852.GA23476@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper , Patrik Jakobsson Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAyMDE1LTExLTIzIGF0IDE0OjU4IC0wODAwLCBNYXR0IFJvcGVyIHdyb3RlOgo+IE9u IE1vbiwgTm92IDE2LCAyMDE1IGF0IDA0OjIwOjAxUE0gKzAxMDAsIFBhdHJpayBKYWtvYnNzb24g d3JvdGU6Cj4gPiBIYW5kbGUgREMgb2ZmIGFzIGEgcG93ZXIgd2VsbCB3aGVyZSBlbmFibGluZyB0 aGUgcG93ZXIgd2VsbCB3aWxsCj4gPiBwcmV2ZW50Cj4gPiB0aGUgRE1DIHRvIGVudGVyIHNlbGVj dGVkIERDIHN0YXRlcyAocmVxdWlyZWQgYXJvdW5kIG1vZGVzZXRzIGFuZAo+ID4gQXV4Cj4gPiBB KS4gRGlzYWJsaW5nIHRoZSBwb3dlciB3ZWxsIHdpbGwgYWxsb3cgREMgc3RhdGVzIGFnYWluLiBG b3Igbm93Cj4gPiB0aGUKPiA+IGhpZ2hlc3QgREMgc3RhdGUgaXMgREM2IGZvciBTa3lsYWtlIGFu ZCBEQzUgZm9yIEJyb3h0b24gYnV0IHdpbGwgYmUKPiA+IGNvbmZpZ3VyYWJsZSBmb3IgU2t5bGFr ZSBpbiBhIGxhdGVyIHBhdGNoLgo+ID4gCj4gPiB2MjogQ2hlY2sgYm90aCBEQzUgYW5kIERDNiBi aXRzIGluIHBvd2VyIHdlbGwgZW5hYmxlZCBmdW5jdGlvbgo+ID4gKFZpbGxlKQo+ID4gdjM6Cj4g PiAtIFJlbW92ZSB1bm5lZWRlZCBEQ19PRkYgY2FzZSBpbiBza2xfc2V0X3Bvd2VyX3dlbGwoKSAo SW1yZSkKPiA+IC0gQWRkIFBXMiBkZXBlbmRlbmN5IHRvIERDX09GRiAoSW1yZSkKPiA+IHY0OiBQ dXQgRENfT0ZGIGJlZm9yZSBQVzIgaW4gQlhUIHBvd2VyIHdlbGwgYXJyYXkKPiA+IAo+ID4gU2ln bmVkLW9mZi1ieTogUGF0cmlrIEpha29ic3NvbiA8cGF0cmlrLmpha29ic3NvbkBsaW51eC5pbnRl bC5jb20+Cj4gPiBSZXZpZXdlZC1ieTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgo+ IAo+IEkndmUgYmVlbiBzZWVpbmcgYSBCWFQgcmVncmVzc2lvbiBvbiByZWNlbnQgZGktbmlnaHRs eSB3aGVyZSBEUE1TIG9mZgo+IGNhdXNlcyB0aGUgZW50aXJlIHBsYXRmb3JtIHRvIHBvd2VyIGRv d25bMV0gaW5zdGVhZCBvZiBqdXN0IHRoZQo+IGRpc3BsYXk7Cj4gbXkgYmlzZWN0IGxhbmRzIG9u IHRoaXMgY29tbWl0IGFzIHRoZSBjdWxwcml0LsKgwqBBbnkgaWRlYSB3aGF0IHRoZQo+IGNhdXNl Cj4gY291bGQgYmU/wqDCoEkgY2FuIHJlcHJvZHVjZSBieSBlaXRoZXIgbGV0dGluZyB0aGUgc3lz dGVtIHNpdCBpZGxlIGxvbmcKPiBlbm91Z2ggYXQgYW4gZmIgY29uc29sZSwgb3IgYnkgZG9pbmcg YW4gInhzZXQgZHBtcyBmb3JjZSBvZmYiIGluIFguCj4gVW5mb3J0dW5hdGVseSBJIGRvbid0IGhh dmUgYSBmdW5jdGlvbmluZyBzZXJpYWwgY29uc29sZSBvbiB0aGlzCj4gcGxhdGZvcm0sIHNvIEkg Y2FuJ3QgZ2V0IGFueSBtZXNzYWdlcyB0aGF0IG1heSBzaG93IHVwIGFyb3VuZCB0aGUKPiBEUE1T Cj4gb3BlcmF0aW9uLsKgwqBJJ3ZlIGF0dGFjaGVkIG15IGJvb3QtdGltZSBkbWVzZyBvdXRwdXQg aW4gY2FzZSB0aGF0Cj4gaGVscHMuCj4gCj4gU3Vic2VxdWVudCBjb21taXRzIHNlZW0gdG8gZGVw ZW5kIG9uIHRoZSBjaGFuZ2VzIGhlcmUsIHNvIEkgaGF2ZW4ndAo+IHJldmVydGVkIHRoaXMgY29t bWl0IGRpcmVjdGx5IG9uIGRpLW5pZ2h0bHksIGJ1dCBJIGNvbmZpcm1lZCB0aGF0IGlmCj4gSQo+ IGNoZWNrb3V0IHRoaXMgY29tbWl0IGRpcmVjdGx5IEkgc2VlIERQTVMgcHJvYmxlbXMsIHdoZXJl YXMgaXRzIEhFQUR+MQo+IHdvcmtzIGFzIGV4cGVjdGVkLgoKVGhlIHBvd2VyIHdlbGwgc3VwcG9y dCBvbiBCWFQgaXMgbm90IHN0YWJsZSBhdG0sIHdlIG5lZWQgdG8gYXBwbHkgYXQKbGVhc3QgYSBz aW1pbGFyIHNldCBvZiBmaXhlcyBhcyB3ZSBkaWQgZm9yIFNLTC4gU28gZm9yIG5vdyBJIHdvdWxk CnN1Z2dlc3QgZGlzYWJsaW5nIGl0LCBieSBib290aW5nIHdpdGggaTkxNS5kaXNhYmxlX3Bvd2Vy X3dlbGw9MCB1bnRpbAp0aGluZ3MgYXJlIGZpeGVkLiBUaGlzIHNob3VsZCd2ZSBiZWVuIG1hZGUg dGhlIGRlZmF1bHQgb3B0aW9uIGVhcmxpZXIsCkkgZm9yZ290IGFib3V0IHRoaXMuIEkgd2lsbCBm b2xsb3cgdXAgd2l0aCB0aGUgcGF0Y2ggdG8gdGhhdCBleHRlbnQuCgpUaGFua3MgZm9yIHRoZSBy ZXBvcnQsCkltcmUKCj4gTWF0dAo+IAo+IAo+IFsxXSBNeSBCSU9TIGFuZC9vciBoYXJkd2FyZSBp cyBhIGJpdCBmbGFreSBzbyBldmVuIHdoZW4gb3BlcmF0aW5nCj4gIm5vcm1hbGx5IiBtb3N0IGF0 dGVtcHRzIHRvIHJlYm9vdC9wb3dlcm9mZi9TMyBzdXNwZW5kIGFsbCByZXN1bHQgaW4KPiB0aGUK PiBwbGF0Zm9ybSBnb2luZyBpbnRvIHNvbWUgIm1vc3RseSBvZmYiIHN0YXRlIHdpdGggYW4gZXJy b3IgTEVEIGxpdCBhbmQKPiByZXF1aXJlIGEgZnVsbCBwb3dlciBjeWNsZSB0byByZXN1cnJlY3Qu wqDCoFRoYXQncyB0aGUgc2FtZSBzdGF0ZSBJCj4gd2luZAo+IHVwIGluIGFmdGVyIERQTVMgb2Zm IHdoZW4gdGhpcyBwYXRjaCBpcyBwcmVzZW50Lgo+IAo+ID4gLS0tCj4gPiDCoGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmPCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKgNiAtLQo+ID4gwqBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5owqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDEg Kwo+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmPCoMKgwqDCoHzCoMKg wqA2ICsrCj4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYyB8IDEx MAo+ID4gKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KPiA+IMKgNCBmaWxlcyBjaGFu Z2VkLCA4OCBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiA+IGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuYwo+ID4gaW5kZXggNWE2M2Y5YS4uMGM3ZjQzNSAxMDA2NDQKPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiA+IEBAIC0xMDcyLDkgKzEwNzIsNiBAQCBzdGF0aWMgaW50 IGk5MTVfcG1fcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKPiA+IMKgCj4gPiDCoHN0YXRpYyBp bnQgc2tsX3N1c3BlbmRfY29tcGxldGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ID4gwqB7Cj4gPiAtCWlmIChkZXZfcHJpdi0+Y3NyLmRtY19wYXlsb2FkKQo+ID4gLQkJc2ts X2VuYWJsZV9kYzYoZGV2X3ByaXYpOwo+ID4gLQo+ID4gwqAJcmV0dXJuIDA7Cj4gPiDCoH0KPiA+ IMKgCj4gPiBAQCAtMTExOSw5ICsxMTE2LDYgQEAgc3RhdGljIGludCBieHRfcmVzdW1lX3ByZXBh cmUoc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+IMKgCj4gPiDCoHN0 YXRpYyBpbnQgc2tsX3Jlc3VtZV9wcmVwYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiA+IMKgewo+ID4gLQlpZiAoZGV2X3ByaXYtPmNzci5kbWNfcGF5bG9hZCkKPiA+IC0J CXNrbF9kaXNhYmxlX2RjNihkZXZfcHJpdik7Cj4gPiAtCj4gPiDCoAlyZXR1cm4gMDsKPiA+IMKg fQo+ID4gwqAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o Cj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+IGluZGV4IDBmMzg0OWYu LmI2YTM1MjUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o Cj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiBAQCAtNjM4LDYg KzYzOCw3IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+ID4gwqAKPiA+IMKgCS8qIE5v dCBhY3R1YWwgYml0IGdyb3Vwcy4gVXNlZCBhcyBJRHMgZm9yCj4gPiBsb29rdXBfcG93ZXJfd2Vs bCgpICovCj4gPiDCoAlTS0xfRElTUF9QV19BTFdBWVNfT04sCj4gPiArCVNLTF9ESVNQX1BXX0RD X09GRiwKPiA+IMKgfTsKPiA+IMKgCj4gPiDCoCNkZWZpbmUgU0tMX1BPV0VSX1dFTExfU1RBVEUo cHcpICgxIDw8ICgocHcpICogMikpCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwo+ID4gaW5kZXggOTc4YjFiOS4uMjEzODVhMCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCj4gPiBAQCAtMTMzMjMsNiArMTMzMjMsOSBAQCBzdGF0aWMgaW50 IGludGVsX2F0b21pY19jb21taXQoc3RydWN0Cj4gPiBkcm1fZGV2aWNlICpkZXYsCj4gPiDCoAkJ CXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpLQo+ID4gPnVwZGF0ZV9waXBlOwo+ID4g wqAJCXVuc2lnbmVkIGxvbmcgcHV0X2RvbWFpbnMgPSAwOwo+ID4gwqAKPiA+ICsJCWlmIChtb2Rl c2V0KQo+ID4gKwkJCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LAo+ID4gUE9XRVJf RE9NQUlOX01PREVTRVQpOwo+ID4gKwo+ID4gwqAJCWlmIChtb2Rlc2V0ICYmIGNydGMtPnN0YXRl LT5hY3RpdmUpIHsKPiA+IMKgCQkJdXBkYXRlX3NjYW5saW5lX29mZnNldCh0b19pbnRlbF9jcnRj KGNydGMpCj4gPiApOwo+ID4gwqAJCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2VuYWJsZShjcnRj KTsKPiA+IEBAIC0xMzM0Niw2ICsxMzM0OSw5IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2Nv bW1pdChzdHJ1Y3QKPiA+IGRybV9kZXZpY2UgKmRldiwKPiA+IMKgCQkJbW9kZXNldF9wdXRfcG93 ZXJfZG9tYWlucyhkZXZfcHJpdiwKPiA+IHB1dF9kb21haW5zKTsKPiA+IMKgCj4gPiDCoAkJaW50 ZWxfcG9zdF9wbGFuZV91cGRhdGUoaW50ZWxfY3J0Yyk7Cj4gPiArCj4gPiArCQlpZiAobW9kZXNl dCkKPiA+ICsJCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwKPiA+IFBPV0VSX0RP TUFJTl9NT0RFU0VUKTsKPiA+IMKgCX0KPiA+IMKgCj4gPiDCoAkvKiBGSVhNRTogYWRkIHN1YnBp eGVsIG9yZGVyICovCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cnVudGltZV9wbS5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0u Ywo+ID4gaW5kZXggZWRmNzUzZS4uMGZmMTY0NiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gPiBAQCAtNDksOSArNDksNiBAQAo+ID4gwqAgKiBwcmVz ZW50IGZvciBhIGdpdmVuIHBsYXRmb3JtLgo+ID4gwqAgKi8KPiA+IMKgCj4gPiAtI2RlZmluZSBH RU45X0VOQUJMRV9EQzUoZGV2KSAwCj4gPiAtI2RlZmluZSBTS0xfRU5BQkxFX0RDNihkZXYpIElT X1NLWUxBS0UoZGV2KQo+ID4gLQo+ID4gwqAjZGVmaW5lIGZvcl9lYWNoX3Bvd2VyX3dlbGwoaSwg cG93ZXJfd2VsbCwgZG9tYWluX21hc2ssCj4gPiBwb3dlcl9kb21haW5zKQlcCj4gPiDCoAlmb3Ig KGkgPSAwOwkJCQkJCQo+ID4gCVwKPiA+IMKgCcKgwqDCoMKgwqBpIDwgKHBvd2VyX2RvbWFpbnMp LT5wb3dlcl93ZWxsX2NvdW50ICYmCQkKPiA+IAlcCj4gPiBAQCAtMzA5LDkgKzMwNiwxNSBAQCBz dGF0aWMgdm9pZCBoc3dfc2V0X3Bvd2VyX3dlbGwoc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiA+IMKgI2RlZmluZSBTS0xfRElTUExBWV9ERElfRF9QT1dFUl9ET01BSU5T ICgJCVwKPiA+IMKgCUJJVChQT1dFUl9ET01BSU5fUE9SVF9ERElfRF9MQU5FUykgfAkJXAo+ID4g wqAJQklUKFBPV0VSX0RPTUFJTl9JTklUKSkKPiA+ICsjZGVmaW5lIFNLTF9ESVNQTEFZX0RDX09G Rl9QT1dFUl9ET01BSU5TICgJCVwKPiA+ICsJU0tMX0RJU1BMQVlfUE9XRVJXRUxMXzJfUE9XRVJf RE9NQUlOUyB8CQlcCj4gPiArCUJJVChQT1dFUl9ET01BSU5fTU9ERVNFVCkgfAkJCVwKPiA+ICsJ QklUKFBPV0VSX0RPTUFJTl9BVVhfQSkgfAkJCVwKPiA+ICsJQklUKFBPV0VSX0RPTUFJTl9JTklU KSkKPiA+IMKgI2RlZmluZSBTS0xfRElTUExBWV9BTFdBWVNfT05fUE9XRVJfRE9NQUlOUyAoCQlc Cj4gPiDCoAkoUE9XRVJfRE9NQUlOX01BU0sgJiB+KAkJCQlcCj4gPiAtCVNLTF9ESVNQTEFZX1BP V0VSV0VMTF8yX1BPV0VSX0RPTUFJTlMpKSB8CVwKPiA+ICsJU0tMX0RJU1BMQVlfUE9XRVJXRUxM XzJfUE9XRVJfRE9NQUlOUyB8CQlcCj4gPiArCVNLTF9ESVNQTEFZX0RDX09GRl9QT1dFUl9ET01B SU5TKSkgfAkJXAo+ID4gwqAJQklUKFBPV0VSX0RPTUFJTl9JTklUKSkKPiA+IMKgCj4gPiDCoCNk ZWZpbmUgQlhUX0RJU1BMQVlfUE9XRVJXRUxMXzJfUE9XRVJfRE9NQUlOUyAoCQlcCj4gPiBAQCAt MzM5LDYgKzM0MiwxMSBAQCBzdGF0aWMgdm9pZCBoc3dfc2V0X3Bvd2VyX3dlbGwoc3RydWN0Cj4g PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+IMKgCUJJVChQT1dFUl9ET01BSU5fQVVY X0EpIHwJCQlcCj4gPiDCoAlCSVQoUE9XRVJfRE9NQUlOX1BMTFMpIHwJCQlcCj4gPiDCoAlCSVQo UE9XRVJfRE9NQUlOX0lOSVQpKQo+ID4gKyNkZWZpbmUgQlhUX0RJU1BMQVlfRENfT0ZGX1BPV0VS X0RPTUFJTlMgKAkJXAo+ID4gKwlCWFRfRElTUExBWV9QT1dFUldFTExfMl9QT1dFUl9ET01BSU5T IHwJCVwKPiA+ICsJQklUKFBPV0VSX0RPTUFJTl9NT0RFU0VUKSB8CQkJXAo+ID4gKwlCSVQoUE9X RVJfRE9NQUlOX0FVWF9BKSB8CQkJXAo+ID4gKwlCSVQoUE9XRVJfRE9NQUlOX0lOSVQpKQo+ID4g wqAjZGVmaW5lIEJYVF9ESVNQTEFZX0FMV0FZU19PTl9QT1dFUl9ET01BSU5TICgJCVwKPiA+IMKg CShQT1dFUl9ET01BSU5fTUFTSyAmCj4gPiB+KEJYVF9ESVNQTEFZX1BPV0VSV0VMTF8xX1BPV0VS X0RPTUFJTlMgfAlcCj4gPiDCoAlCWFRfRElTUExBWV9QT1dFUldFTExfMl9QT1dFUl9ET01BSU5T KSkgfAlcCj4gPiBAQCAtNDg2LDE1ICs0OTQsNiBAQCBzdGF0aWMgdm9pZCBnZW45X2VuYWJsZV9k YzUoc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+IMKgCWdlbjlfc2V0 X2RjX3N0YXRlKGRldl9wcml2LCBEQ19TVEFURV9FTl9VUFRPX0RDNSk7Cj4gPiDCoH0KPiA+IMKg Cj4gPiAtc3RhdGljIHZvaWQgZ2VuOV9kaXNhYmxlX2RjNShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gPiAtewo+ID4gLQlhc3NlcnRfY2FuX2Rpc2FibGVfZGM1KGRldl9wcml2 KTsKPiA+IC0KPiA+IC0JRFJNX0RFQlVHX0tNUygiRGlzYWJsaW5nIERDNVxuIik7Cj4gPiAtCj4g PiAtCWdlbjlfc2V0X2RjX3N0YXRlKGRldl9wcml2LCBEQ19TVEFURV9ESVNBQkxFKTsKPiA+IC19 Cj4gPiAtCj4gPiDCoHN0YXRpYyB2b2lkIGFzc2VydF9jYW5fZW5hYmxlX2RjNihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZQo+ID4gKmRldl9wcml2KQo+ID4gwqB7Cj4gPiDCoAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKPiA+IEBAIC01MjIsNiArNTIxLDE0IEBAIHN0YXRp YyB2b2lkIGFzc2VydF9jYW5fZGlzYWJsZV9kYzYoc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiA+IMKgCQnCoMKgIkRDNiBhbHJlYWR5IHByb2dyYW1tZWQgdG8gYmUgZGlz YWJsZWQuXG4iKTsKPiA+IMKgfQo+ID4gwqAKPiA+ICtzdGF0aWMgdm9pZCBnZW45X2Rpc2FibGVf ZGM1X2RjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gKmRldl9wcml2KQo+ID4gK3sKPiA+ ICsJYXNzZXJ0X2Nhbl9kaXNhYmxlX2RjNShkZXZfcHJpdik7Cj4gPiArCWFzc2VydF9jYW5fZGlz YWJsZV9kYzYoZGV2X3ByaXYpOwo+ID4gKwo+ID4gKwlnZW45X3NldF9kY19zdGF0ZShkZXZfcHJp diwgRENfU1RBVEVfRElTQUJMRSk7Cj4gPiArfQo+ID4gKwo+ID4gwqB2b2lkIHNrbF9lbmFibGVf ZGM2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+IMKgewo+ID4gwqAJYXNz ZXJ0X2Nhbl9lbmFibGVfZGM2KGRldl9wcml2KTsKPiA+IEBAIC01ODksMTcgKzU5NiwxMyBAQCBz dGF0aWMgdm9pZCBza2xfc2V0X3Bvd2VyX3dlbGwoc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiA+IMKgCQkJCSJJbnZhbGlkIGZvciBwb3dlciB3ZWxsIHN0YXR1cyB0bwo+ ID4gYmUgZW5hYmxlZCwgdW5sZXNzIGRvbmUgYnkgdGhlIEJJT1MsIFwKPiA+IMKgCQkJCXdoZW4g cmVxdWVzdCBpcyB0byBkaXNhYmxlIVxuIik7Cj4gPiDCoAkJCWlmIChwb3dlcl93ZWxsLT5kYXRh ID09IFNLTF9ESVNQX1BXXzIpIHsKPiA+IC0JCQkJaWYgKEdFTjlfRU5BQkxFX0RDNShkZXYpKQo+ ID4gLQkJCQkJZ2VuOV9kaXNhYmxlX2RjNShkZXZfcHJpdikKPiA+IDsKPiA+IC0JCQkJaWYgKFNL TF9FTkFCTEVfREM2KGRldikpIHsKPiA+IC0JCQkJCS8qCj4gPiAtCQkJCQnCoCogRERJIGJ1ZmZl ciBwcm9ncmFtbWluZwo+ID4gdW5uZWNlc3NhcnkgZHVyaW5nIGRyaXZlci1sb2FkL3Jlc3VtZQo+ ID4gLQkJCQkJwqAqIGFzIGl0J3MgYWxyZWFkeSBkb25lCj4gPiBkdXJpbmcgbW9kZXNldCBpbml0 aWFsaXphdGlvbiB0aGVuLgo+ID4gLQkJCQkJwqAqIEl0J3MgYWxzbyBpbnZhbGlkIGhlcmUKPiA+ IGFzIGVuY29kZXIgbGlzdCBpcyBzdGlsbCB1bmluaXRpYWxpemVkLgo+ID4gLQkJCQkJwqAqLwo+ ID4gLQkJCQkJaWYgKCFkZXZfcHJpdi0KPiA+ID5wb3dlcl9kb21haW5zLmluaXRpYWxpemluZykK PiA+IC0JCQkJCQlpbnRlbF9wcmVwYXJlX2RkaSgKPiA+IGRldik7Cj4gPiAtCQkJCX0KPiA+ICsJ CQkJLyoKPiA+ICsJCQkJwqAqIERESSBidWZmZXIgcHJvZ3JhbW1pbmcKPiA+IHVubmVjZXNzYXJ5 IGR1cmluZyBkcml2ZXItbG9hZC9yZXN1bWUKPiA+ICsJCQkJwqAqIGFzIGl0J3MgYWxyZWFkeSBk b25lIGR1cmluZwo+ID4gbW9kZXNldCBpbml0aWFsaXphdGlvbiB0aGVuLgo+ID4gKwkJCQnCoCog SXQncyBhbHNvIGludmFsaWQgaGVyZSBhcwo+ID4gZW5jb2RlciBsaXN0IGlzIHN0aWxsIHVuaW5p dGlhbGl6ZWQuCj4gPiArCQkJCcKgKi8KPiA+ICsJCQkJaWYgKCFkZXZfcHJpdi0KPiA+ID5wb3dl cl9kb21haW5zLmluaXRpYWxpemluZykKPiA+ICsJCQkJCWludGVsX3ByZXBhcmVfZGRpKGRldik7 Cj4gPiDCoAkJCX0KPiA+IMKgCQkJSTkxNV9XUklURShIU1dfUFdSX1dFTExfRFJJVkVSLCB0bXAg fAo+ID4gcmVxX21hc2spOwo+ID4gwqAJCX0KPiA+IEBAIC02MTcsMTAgKzYyMCw2IEBAIHN0YXRp YyB2b2lkIHNrbF9zZXRfcG93ZXJfd2VsbChzdHJ1Y3QKPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ID4gwqAJCQlJOTE1X1dSSVRFKEhTV19QV1JfV0VMTF9EUklWRVIsCXRtcAo+ID4g JiB+cmVxX21hc2spOwo+ID4gwqAJCQlQT1NUSU5HX1JFQUQoSFNXX1BXUl9XRUxMX0RSSVZFUik7 Cj4gPiDCoAkJCURSTV9ERUJVR19LTVMoIkRpc2FibGluZyAlc1xuIiwKPiA+IHBvd2VyX3dlbGwt Pm5hbWUpOwo+ID4gLQo+ID4gLQkJCWlmIChHRU45X0VOQUJMRV9EQzUoZGV2KSAmJgo+ID4gLQkJ CQlwb3dlcl93ZWxsLT5kYXRhID09IFNLTF9ESVNQX1BXXzIpCj4gPiAtCQkJCQlnZW45X2VuYWJs ZV9kYzUoZGV2X3ByaXYpOwo+ID4gwqAJCX0KPiA+IMKgCX0KPiA+IMKgCj4gPiBAQCAtNjk1LDYg KzY5NCw0MCBAQCBzdGF0aWMgdm9pZCBza2xfcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVjdAo+ID4g ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiDCoAlza2xfc2V0X3Bvd2VyX3dlbGwoZGV2 X3ByaXYsIHBvd2VyX3dlbGwsIGZhbHNlKTsKPiA+IMKgfQo+ID4gwqAKPiA+ICtzdGF0aWMgYm9v bCBnZW45X2RjX29mZl9wb3dlcl93ZWxsX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUK PiA+ICpkZXZfcHJpdiwKPiA+ICsJCQkJCcKgwqBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsCj4gPiAq cG93ZXJfd2VsbCkKPiA+ICt7Cj4gPiArCXJldHVybiAoSTkxNV9SRUFEKERDX1NUQVRFX0VOKSAm Cj4gPiBEQ19TVEFURV9FTl9VUFRPX0RDNV9EQzZfTUFTSykgPT0gMDsKPiA+ICt9Cj4gPiArCj4g PiArc3RhdGljIHZvaWQgZ2VuOV9kY19vZmZfcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUKPiA+ICpkZXZfcHJpdiwKPiA+ICsJCQkJCcKgc3RydWN0IGk5MTVfcG93ZXJf d2VsbAo+ID4gKnBvd2VyX3dlbGwpCj4gPiArewo+ID4gKwlnZW45X2Rpc2FibGVfZGM1X2RjNihk ZXZfcHJpdik7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIGdlbjlfZGNfb2ZmX3Bvd2Vy X3dlbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gKmRldl9wcml2LAo+ID4g KwkJCQkJwqDCoHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwKPiA+ICpwb3dlcl93ZWxsKQo+ID4gK3sK PiA+ICsJaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpKQo+ID4gKwkJc2tsX2VuYWJsZV9kYzYoZGV2 X3ByaXYpOwo+ID4gKwllbHNlCj4gPiArCQlnZW45X2VuYWJsZV9kYzUoZGV2X3ByaXYpOwo+ID4g K30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBnZW45X2RjX29mZl9wb3dlcl93ZWxsX3N5bmNfaHco c3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ICpkZXZfcHJpdiwKPiA+ICsJCQkJCcKgwqBzdHJ1 Y3QgaTkxNV9wb3dlcl93ZWxsCj4gPiAqcG93ZXJfd2VsbCkKPiA+ICt7Cj4gPiArCWlmIChwb3dl cl93ZWxsLT5jb3VudCA+IDApIHsKPiA+ICsJCWdlbjlfc2V0X2RjX3N0YXRlKGRldl9wcml2LCBE Q19TVEFURV9ESVNBQkxFKTsKPiA+ICsJfSBlbHNlIHsKPiA+ICsJCWlmIChJU19TS1lMQUtFKGRl dl9wcml2KSkKPiA+ICsJCQlnZW45X3NldF9kY19zdGF0ZShkZXZfcHJpdiwKPiA+IERDX1NUQVRF X0VOX1VQVE9fREM2KTsKPiA+ICsJCWVsc2UKPiA+ICsJCQlnZW45X3NldF9kY19zdGF0ZShkZXZf cHJpdiwKPiA+IERDX1NUQVRFX0VOX1VQVE9fREM1KTsKPiA+ICsJfQo+ID4gK30KPiA+ICsKPiA+ IMKgc3RhdGljIHZvaWQgaTl4eF9hbHdheXNfb25fcG93ZXJfd2VsbF9ub29wKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlCj4gPiAqZGV2X3ByaXYsCj4gPiDCoAkJCQkJwqDCoMKgc3RydWN0IGk5MTVf cG93ZXJfd2VsbAo+ID4gKnBvd2VyX3dlbGwpCj4gPiDCoHsKPiA+IEBAIC0xNTE3LDYgKzE1NTAs MTMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfb3BzCj4gPiBza2xfcG93 ZXJfd2VsbF9vcHMgPSB7Cj4gPiDCoAkuaXNfZW5hYmxlZCA9IHNrbF9wb3dlcl93ZWxsX2VuYWJs ZWQsCj4gPiDCoH07Cj4gPiDCoAo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9wb3dlcl93 ZWxsX29wcyBnZW45X2RjX29mZl9wb3dlcl93ZWxsX29wcwo+ID4gPSB7Cj4gPiArCS5zeW5jX2h3 ID0gZ2VuOV9kY19vZmZfcG93ZXJfd2VsbF9zeW5jX2h3LAo+ID4gKwkuZW5hYmxlID0gZ2VuOV9k Y19vZmZfcG93ZXJfd2VsbF9lbmFibGUsCj4gPiArCS5kaXNhYmxlID0gZ2VuOV9kY19vZmZfcG93 ZXJfd2VsbF9kaXNhYmxlLAo+ID4gKwkuaXNfZW5hYmxlZCA9IGdlbjlfZGNfb2ZmX3Bvd2VyX3dl bGxfZW5hYmxlZCwKPiA+ICt9Owo+ID4gKwo+ID4gwqBzdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJf d2VsbCBoc3dfcG93ZXJfd2VsbHNbXSA9IHsKPiA+IMKgCXsKPiA+IMKgCQkubmFtZSA9ICJhbHdh eXMtb24iLAo+ID4gQEAgLTE2OTEsNiArMTczMSwxMiBAQCBzdGF0aWMgc3RydWN0IGk5MTVfcG93 ZXJfd2VsbAo+ID4gc2tsX3Bvd2VyX3dlbGxzW10gPSB7Cj4gPiDCoAkJLmRhdGEgPSBTS0xfRElT UF9QV19NSVNDX0lPLAo+ID4gwqAJfSwKPiA+IMKgCXsKPiA+ICsJCS5uYW1lID0gIkRDIG9mZiIs Cj4gPiArCQkuZG9tYWlucyA9IFNLTF9ESVNQTEFZX0RDX09GRl9QT1dFUl9ET01BSU5TLAo+ID4g KwkJLm9wcyA9ICZnZW45X2RjX29mZl9wb3dlcl93ZWxsX29wcywKPiA+ICsJCS5kYXRhID0gU0tM X0RJU1BfUFdfRENfT0ZGLAo+ID4gKwl9LAo+ID4gKwl7Cj4gPiDCoAkJLm5hbWUgPSAicG93ZXIg d2VsbCAyIiwKPiA+IMKgCQkuZG9tYWlucyA9IFNLTF9ESVNQTEFZX1BPV0VSV0VMTF8yX1BPV0VS X0RPTUFJTlMsCj4gPiDCoAkJLm9wcyA9ICZza2xfcG93ZXJfd2VsbF9vcHMsCj4gPiBAQCAtMTc2 NSwxMSArMTgxMSwxNyBAQCBzdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2VsbAo+ID4gYnh0X3Bv d2VyX3dlbGxzW10gPSB7Cj4gPiDCoAkJLmRhdGEgPSBTS0xfRElTUF9QV18xLAo+ID4gwqAJfSwK PiA+IMKgCXsKPiA+ICsJCS5uYW1lID0gIkRDIG9mZiIsCj4gPiArCQkuZG9tYWlucyA9IEJYVF9E SVNQTEFZX0RDX09GRl9QT1dFUl9ET01BSU5TLAo+ID4gKwkJLm9wcyA9ICZnZW45X2RjX29mZl9w b3dlcl93ZWxsX29wcywKPiA+ICsJCS5kYXRhID0gU0tMX0RJU1BfUFdfRENfT0ZGLAo+ID4gKwl9 LAo+ID4gKwl7Cj4gPiDCoAkJLm5hbWUgPSAicG93ZXIgd2VsbCAyIiwKPiA+IMKgCQkuZG9tYWlu cyA9IEJYVF9ESVNQTEFZX1BPV0VSV0VMTF8yX1BPV0VSX0RPTUFJTlMsCj4gPiDCoAkJLm9wcyA9 ICZza2xfcG93ZXJfd2VsbF9vcHMsCj4gPiDCoAkJLmRhdGEgPSBTS0xfRElTUF9QV18yLAo+ID4g LQl9Cj4gPiArCX0sCj4gPiDCoH07Cj4gPiDCoAo+ID4gwqAjZGVmaW5lIHNldF9wb3dlcl93ZWxs cyhwb3dlcl9kb21haW5zLCBfX3Bvd2VyX3dlbGxzKSAoewkJCj4gPiBcCj4gPiAtLSAKPiA+IDIu NS4wCj4gPiAKPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCj4gPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==