From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH v3 10/12] drm/i915/gen9: Turn DC handling into a power well Date: Mon, 16 Nov 2015 21:28:42 +0200 Message-ID: <1447702122.1377.18.camel@intel.com> References: <1447084107-8521-11-git-send-email-patrik.jakobsson@linux.intel.com> <1447682467-6237-4-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 mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id D0D0C6E1D3 for ; Mon, 16 Nov 2015 11:28:44 -0800 (PST) In-Reply-To: <1447682467-6237-4-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 , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gbWEsIDIwMTUtMTEtMTYgYXQgMTU6MDEgKzAxMDAsIFBhdHJpayBKYWtvYnNzb24gd3JvdGU6 Cj4gSGFuZGxlIERDIG9mZiBhcyBhIHBvd2VyIHdlbGwgd2hlcmUgZW5hYmxpbmcgdGhlIHBvd2Vy IHdlbGwgd2lsbCBwcmV2ZW50Cj4gdGhlIERNQyB0byBlbnRlciBzZWxlY3RlZCBEQyBzdGF0ZXMg KHJlcXVpcmVkIGFyb3VuZCBtb2Rlc2V0cyBhbmQgQXV4Cj4gQSkuIERpc2FibGluZyB0aGUgcG93 ZXIgd2VsbCB3aWxsIGFsbG93IERDIHN0YXRlcyBhZ2Fpbi4gRm9yIG5vdyB0aGUKPiBoaWdoZXN0 IERDIHN0YXRlIGlzIERDNiBmb3IgU2t5bGFrZSBhbmQgREM1IGZvciBCcm94dG9uIGJ1dCB3aWxs IGJlCj4gY29uZmlndXJhYmxlIGZvciBTa3lsYWtlIGluIGEgbGF0ZXIgcGF0Y2guCj4gCj4gdjI6 IENoZWNrIGJvdGggREM1IGFuZCBEQzYgYml0cyBpbiBwb3dlciB3ZWxsIGVuYWJsZWQgZnVuY3Rp b24gKFZpbGxlKQo+IHYzOgo+IC0gUmVtb3ZlIHVubmVlZGVkIERDX09GRiBjYXNlIGluIHNrbF9z ZXRfcG93ZXJfd2VsbCgpIChJbXJlKQo+IC0gQWRkIFBXMiBkZXBlbmRlbmN5IHRvIERDX09GRiAo SW1yZSkKPiAKPiBTaWduZWQtb2ZmLWJ5OiBQYXRyaWsgSmFrb2Jzc29uIDxwYXRyaWsuamFrb2Jz c29uQGxpbnV4LmludGVsLmNvbT4KPiBSZXZpZXdlZC1ieTogSW1yZSBEZWFrIDxpbXJlLmRlYWtA aW50ZWwuY29tPgo+IC0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuY8KgwqDC oMKgwqDCoMKgwqDCoHzCoMKgwqA2IC0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5owqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDEgKwo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jwqDCoMKgwqB8wqDCoMKgNiArKwo+IMKgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcnVudGltZV9wbS5jIHwgMTExICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tCj4gwqA0IGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IGluZGV4IDVhNjNmOWEuLjBjN2Y0MzUgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtMTA3Miw5ICsxMDcyLDYgQEAgc3RhdGlj IGludCBpOTE1X3BtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gwqAKPiDCoHN0YXRpYyBp bnQgc2tsX3N1c3BlbmRfY29tcGxldGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+IMKgewo+IC0JaWYgKGRldl9wcml2LT5jc3IuZG1jX3BheWxvYWQpCj4gLQkJc2tsX2VuYWJs ZV9kYzYoZGV2X3ByaXYpOwo+IC0KPiDCoAlyZXR1cm4gMDsKPiDCoH0KPiDCoAo+IEBAIC0xMTE5 LDkgKzExMTYsNiBAQCBzdGF0aWMgaW50IGJ4dF9yZXN1bWVfcHJlcGFyZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqAKPiDCoHN0YXRpYyBpbnQgc2tsX3Jlc3VtZV9wcmVw YXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoHsKPiAtCWlmIChkZXZf cHJpdi0+Y3NyLmRtY19wYXlsb2FkKQo+IC0JCXNrbF9kaXNhYmxlX2RjNihkZXZfcHJpdik7Cj4g LQo+IMKgCXJldHVybiAwOwo+IMKgfQo+IMKgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5k ZXggMGYzODQ5Zi4uYjZhMzUyNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC02 MzgsNiArNjM4LDcgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4gwqAKPiDCoAkvKiBO b3QgYWN0dWFsIGJpdCBncm91cHMuIFVzZWQgYXMgSURzIGZvciBsb29rdXBfcG93ZXJfd2VsbCgp ICovCj4gwqAJU0tMX0RJU1BfUFdfQUxXQVlTX09OLAo+ICsJU0tMX0RJU1BfUFdfRENfT0ZGLAo+ IMKgfTsKPiDCoAo+IMKgI2RlZmluZSBTS0xfUE9XRVJfV0VMTF9TVEFURShwdykgKDEgPDwgKChw dykgKiAyKSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggOTc4YjFi OS4uMjEzODVhMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAt MTMzMjMsNiArMTMzMjMsOSBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jb21taXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiDCoAkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUp LT51cGRhdGVfcGlwZTsKPiDCoAkJdW5zaWduZWQgbG9uZyBwdXRfZG9tYWlucyA9IDA7Cj4gwqAK PiArCQlpZiAobW9kZXNldCkKPiArCQkJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYs IFBPV0VSX0RPTUFJTl9NT0RFU0VUKTsKPiArCj4gwqAJCWlmIChtb2Rlc2V0ICYmIGNydGMtPnN0 YXRlLT5hY3RpdmUpIHsKPiDCoAkJCXVwZGF0ZV9zY2FubGluZV9vZmZzZXQodG9faW50ZWxfY3J0 YyhjcnRjKSk7Cj4gwqAJCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2VuYWJsZShjcnRjKTsKPiBA QCAtMTMzNDYsNiArMTMzNDksOSBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jb21taXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiDCoAkJCW1vZGVzZXRfcHV0X3Bvd2VyX2RvbWFpbnMoZGV2 X3ByaXYsIHB1dF9kb21haW5zKTsKPiDCoAo+IMKgCQlpbnRlbF9wb3N0X3BsYW5lX3VwZGF0ZShp bnRlbF9jcnRjKTsKPiArCj4gKwkJaWYgKG1vZGVzZXQpCj4gKwkJCWludGVsX2Rpc3BsYXlfcG93 ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fTU9ERVNFVCk7Cj4gwqAJfQo+IMKgCj4gwqAJ LyogRklYTUU6IGFkZCBzdWJwaXhlbCBvcmRlciAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ydW50aW1lX3BtLmMKPiBpbmRleCBlZGY3NTNlLi5iNmVlNDhlIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+IEBAIC00OSw5ICs0OSw2IEBACj4gwqAgKiBw cmVzZW50IGZvciBhIGdpdmVuIHBsYXRmb3JtLgo+IMKgICovCj4gwqAKPiAtI2RlZmluZSBHRU45 X0VOQUJMRV9EQzUoZGV2KSAwCj4gLSNkZWZpbmUgU0tMX0VOQUJMRV9EQzYoZGV2KSBJU19TS1lM QUtFKGRldikKPiAtCj4gwqAjZGVmaW5lIGZvcl9lYWNoX3Bvd2VyX3dlbGwoaSwgcG93ZXJfd2Vs bCwgZG9tYWluX21hc2ssIHBvd2VyX2RvbWFpbnMpCVwKPiDCoAlmb3IgKGkgPSAwOwkJCQkJCQlc Cj4gwqAJwqDCoMKgwqDCoGkgPCAocG93ZXJfZG9tYWlucyktPnBvd2VyX3dlbGxfY291bnQgJiYJ CQlcCj4gQEAgLTMwOSw5ICszMDYsMTUgQEAgc3RhdGljIHZvaWQgaHN3X3NldF9wb3dlcl93ZWxs KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoCNkZWZpbmUgU0tMX0RJU1BM QVlfRERJX0RfUE9XRVJfRE9NQUlOUyAoCQlcCj4gwqAJQklUKFBPV0VSX0RPTUFJTl9QT1JUX0RE SV9EX0xBTkVTKSB8CQlcCj4gwqAJQklUKFBPV0VSX0RPTUFJTl9JTklUKSkKPiArI2RlZmluZSBT S0xfRElTUExBWV9EQ19PRkZfUE9XRVJfRE9NQUlOUyAoCQlcCj4gKwlTS0xfRElTUExBWV9QT1dF UldFTExfMl9QT1dFUl9ET01BSU5TIHwJCVwKPiArCUJJVChQT1dFUl9ET01BSU5fTU9ERVNFVCkg fAkJCVwKPiArCUJJVChQT1dFUl9ET01BSU5fQVVYX0EpIHwJCQlcCj4gKwlCSVQoUE9XRVJfRE9N QUlOX0lOSVQpKQo+IMKgI2RlZmluZSBTS0xfRElTUExBWV9BTFdBWVNfT05fUE9XRVJfRE9NQUlO UyAoCQlcCj4gwqAJKFBPV0VSX0RPTUFJTl9NQVNLICYgfigJCQkJXAo+IC0JU0tMX0RJU1BMQVlf UE9XRVJXRUxMXzJfUE9XRVJfRE9NQUlOUykpIHwJXAo+ICsJU0tMX0RJU1BMQVlfUE9XRVJXRUxM XzJfUE9XRVJfRE9NQUlOUyB8CQlcCj4gKwlTS0xfRElTUExBWV9EQ19PRkZfUE9XRVJfRE9NQUlO UykpIHwJCVwKPiDCoAlCSVQoUE9XRVJfRE9NQUlOX0lOSVQpKQo+IMKgCj4gwqAjZGVmaW5lIEJY VF9ESVNQTEFZX1BPV0VSV0VMTF8yX1BPV0VSX0RPTUFJTlMgKAkJXAo+IEBAIC0zMzksNiArMzQy LDExIEBAIHN0YXRpYyB2b2lkIGhzd19zZXRfcG93ZXJfd2VsbChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gwqAJQklUKFBPV0VSX0RPTUFJTl9BVVhfQSkgfAkJCVwKPiDCoAlC SVQoUE9XRVJfRE9NQUlOX1BMTFMpIHwJCQlcCj4gwqAJQklUKFBPV0VSX0RPTUFJTl9JTklUKSkK PiArI2RlZmluZSBCWFRfRElTUExBWV9EQ19PRkZfUE9XRVJfRE9NQUlOUyAoCQlcCj4gKwlCWFRf RElTUExBWV9QT1dFUldFTExfMl9QT1dFUl9ET01BSU5TIHwJCVwKPiArCUJJVChQT1dFUl9ET01B SU5fTU9ERVNFVCkgfAkJCVwKPiArCUJJVChQT1dFUl9ET01BSU5fQVVYX0EpIHwJCQlcCj4gKwlC SVQoUE9XRVJfRE9NQUlOX0lOSVQpKQo+IMKgI2RlZmluZSBCWFRfRElTUExBWV9BTFdBWVNfT05f UE9XRVJfRE9NQUlOUyAoCQlcCj4gwqAJKFBPV0VSX0RPTUFJTl9NQVNLICYgfihCWFRfRElTUExB WV9QT1dFUldFTExfMV9QT1dFUl9ET01BSU5TIHwJXAo+IMKgCUJYVF9ESVNQTEFZX1BPV0VSV0VM TF8yX1BPV0VSX0RPTUFJTlMpKSB8CVwKPiBAQCAtNDg2LDE1ICs0OTQsNiBAQCBzdGF0aWMgdm9p ZCBnZW45X2VuYWJsZV9kYzUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKg CWdlbjlfc2V0X2RjX3N0YXRlKGRldl9wcml2LCBEQ19TVEFURV9FTl9VUFRPX0RDNSk7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIHZvaWQgZ2VuOV9kaXNhYmxlX2RjNShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gLXsKPiAtCWFzc2VydF9jYW5fZGlzYWJsZV9kYzUoZGV2X3ByaXYp Owo+IC0KPiAtCURSTV9ERUJVR19LTVMoIkRpc2FibGluZyBEQzVcbiIpOwo+IC0KPiAtCWdlbjlf c2V0X2RjX3N0YXRlKGRldl9wcml2LCBEQ19TVEFURV9ESVNBQkxFKTsKPiAtfQo+IC0KPiDCoHN0 YXRpYyB2b2lkIGFzc2VydF9jYW5fZW5hYmxlX2RjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gwqB7Cj4gwqAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5k ZXY7Cj4gQEAgLTUyMiw2ICs1MjEsMTQgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X2Nhbl9kaXNhYmxl X2RjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqAJCcKgwqAiREM2IGFs cmVhZHkgcHJvZ3JhbW1lZCB0byBiZSBkaXNhYmxlZC5cbiIpOwo+IMKgfQo+IMKgCj4gK3N0YXRp YyB2b2lkIGdlbjlfZGlzYWJsZV9kYzVfZGM2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiArewo+ICsJYXNzZXJ0X2Nhbl9kaXNhYmxlX2RjNShkZXZfcHJpdik7Cj4gKwlhc3Nl cnRfY2FuX2Rpc2FibGVfZGM2KGRldl9wcml2KTsKPiArCj4gKwlnZW45X3NldF9kY19zdGF0ZShk ZXZfcHJpdiwgRENfU1RBVEVfRElTQUJMRSk7Cj4gK30KPiArCj4gwqB2b2lkIHNrbF9lbmFibGVf ZGM2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoHsKPiDCoAlhc3NlcnRf Y2FuX2VuYWJsZV9kYzYoZGV2X3ByaXYpOwo+IEBAIC01ODksMTcgKzU5NiwxMyBAQCBzdGF0aWMg dm9pZCBza2xfc2V0X3Bvd2VyX3dlbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+IMKgCQkJCSJJbnZhbGlkIGZvciBwb3dlciB3ZWxsIHN0YXR1cyB0byBiZSBlbmFibGVkLCB1 bmxlc3MgZG9uZSBieSB0aGUgQklPUywgXAo+IMKgCQkJCXdoZW4gcmVxdWVzdCBpcyB0byBkaXNh YmxlIVxuIik7Cj4gwqAJCQlpZiAocG93ZXJfd2VsbC0+ZGF0YSA9PSBTS0xfRElTUF9QV18yKSB7 Cj4gLQkJCQlpZiAoR0VOOV9FTkFCTEVfREM1KGRldikpCj4gLQkJCQkJZ2VuOV9kaXNhYmxlX2Rj NShkZXZfcHJpdik7Cj4gLQkJCQlpZiAoU0tMX0VOQUJMRV9EQzYoZGV2KSkgewo+IC0JCQkJCS8q Cj4gLQkJCQkJwqAqIERESSBidWZmZXIgcHJvZ3JhbW1pbmcgdW5uZWNlc3NhcnkgZHVyaW5nIGRy aXZlci1sb2FkL3Jlc3VtZQo+IC0JCQkJCcKgKiBhcyBpdCdzIGFscmVhZHkgZG9uZSBkdXJpbmcg bW9kZXNldCBpbml0aWFsaXphdGlvbiB0aGVuLgo+IC0JCQkJCcKgKiBJdCdzIGFsc28gaW52YWxp ZCBoZXJlIGFzIGVuY29kZXIgbGlzdCBpcyBzdGlsbCB1bmluaXRpYWxpemVkLgo+IC0JCQkJCcKg Ki8KPiAtCQkJCQlpZiAoIWRldl9wcml2LT5wb3dlcl9kb21haW5zLmluaXRpYWxpemluZykKPiAt CQkJCQkJaW50ZWxfcHJlcGFyZV9kZGkoZGV2KTsKPiAtCQkJCX0KPiArCQkJCS8qCj4gKwkJCQnC oCogRERJIGJ1ZmZlciBwcm9ncmFtbWluZyB1bm5lY2Vzc2FyeSBkdXJpbmcgZHJpdmVyLWxvYWQv cmVzdW1lCj4gKwkJCQnCoCogYXMgaXQncyBhbHJlYWR5IGRvbmUgZHVyaW5nIG1vZGVzZXQgaW5p dGlhbGl6YXRpb24gdGhlbi4KPiArCQkJCcKgKiBJdCdzIGFsc28gaW52YWxpZCBoZXJlIGFzIGVu Y29kZXIgbGlzdCBpcyBzdGlsbCB1bmluaXRpYWxpemVkLgo+ICsJCQkJwqAqLwo+ICsJCQkJaWYg KCFkZXZfcHJpdi0+cG93ZXJfZG9tYWlucy5pbml0aWFsaXppbmcpCj4gKwkJCQkJaW50ZWxfcHJl cGFyZV9kZGkoZGV2KTsKPiDCoAkJCX0KPiDCoAkJCUk5MTVfV1JJVEUoSFNXX1BXUl9XRUxMX0RS SVZFUiwgdG1wIHwgcmVxX21hc2spOwo+IMKgCQl9Cj4gQEAgLTYxNywxMCArNjIwLDYgQEAgc3Rh dGljIHZvaWQgc2tsX3NldF9wb3dlcl93ZWxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiDCoAkJCUk5MTVfV1JJVEUoSFNXX1BXUl9XRUxMX0RSSVZFUiwJdG1wICYgfnJlcV9t YXNrKTsKPiDCoAkJCVBPU1RJTkdfUkVBRChIU1dfUFdSX1dFTExfRFJJVkVSKTsKPiDCoAkJCURS TV9ERUJVR19LTVMoIkRpc2FibGluZyAlc1xuIiwgcG93ZXJfd2VsbC0+bmFtZSk7Cj4gLQo+IC0J CQlpZiAoR0VOOV9FTkFCTEVfREM1KGRldikgJiYKPiAtCQkJCXBvd2VyX3dlbGwtPmRhdGEgPT0g U0tMX0RJU1BfUFdfMikKPiAtCQkJCQlnZW45X2VuYWJsZV9kYzUoZGV2X3ByaXYpOwo+IMKgCQl9 Cj4gwqAJfQo+IMKgCj4gQEAgLTY5NSw2ICs2OTQsNDAgQEAgc3RhdGljIHZvaWQgc2tsX3Bvd2Vy X3dlbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAJc2ts X3NldF9wb3dlcl93ZWxsKGRldl9wcml2LCBwb3dlcl93ZWxsLCBmYWxzZSk7Cj4gwqB9Cj4gwqAK PiArc3RhdGljIGJvb2wgZ2VuOV9kY19vZmZfcG93ZXJfd2VsbF9lbmFibGVkKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJCQnCoMKgc3RydWN0IGk5MTVfcG93ZXJfd2Vs bCAqcG93ZXJfd2VsbCkKPiArewo+ICsJcmV0dXJuIChJOTE1X1JFQUQoRENfU1RBVEVfRU4pICYg RENfU1RBVEVfRU5fVVBUT19EQzVfREM2X01BU0spID09IDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2 b2lkIGdlbjlfZGNfb2ZmX3Bvd2VyX3dlbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiArCQkJCQnCoHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGwp Cj4gK3sKPiArCWdlbjlfZGlzYWJsZV9kYzVfZGM2KGRldl9wcml2KTsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgZ2VuOV9kY19vZmZfcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiArCQkJCQnCoMKgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93 ZXJfd2VsbCkKPiArewo+ICsJaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpKQo+ICsJCXNrbF9lbmFi bGVfZGM2KGRldl9wcml2KTsKPiArCWVsc2UKPiArCQlnZW45X2VuYWJsZV9kYzUoZGV2X3ByaXYp Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBnZW45X2RjX29mZl9wb3dlcl93ZWxsX3N5bmNfaHco c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJCcKgwqBzdHJ1Y3QgaTkx NV9wb3dlcl93ZWxsICpwb3dlcl93ZWxsKQo+ICt7Cj4gKwlpZiAocG93ZXJfd2VsbC0+Y291bnQg PiAwKSB7Cj4gKwkJZ2VuOV9zZXRfZGNfc3RhdGUoZGV2X3ByaXYsIERDX1NUQVRFX0RJU0FCTEUp Owo+ICsJfSBlbHNlIHsKPiArCQlpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikpCj4gKwkJCWdlbjlf c2V0X2RjX3N0YXRlKGRldl9wcml2LCBEQ19TVEFURV9FTl9VUFRPX0RDNik7Cj4gKwkJZWxzZQo+ ICsJCQlnZW45X3NldF9kY19zdGF0ZShkZXZfcHJpdiwgRENfU1RBVEVfRU5fVVBUT19EQzUpOwo+ ICsJfQo+ICt9Cj4gKwo+IMKgc3RhdGljIHZvaWQgaTl4eF9hbHdheXNfb25fcG93ZXJfd2VsbF9u b29wKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAkJCQkJwqDCoMKgc3Ry dWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbCkKPiDCoHsKPiBAQCAtMTUxNyw2ICsxNTUw LDEzIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsX29wcyBza2xfcG93ZXJf d2VsbF9vcHMgPSB7Cj4gwqAJLmlzX2VuYWJsZWQgPSBza2xfcG93ZXJfd2VsbF9lbmFibGVkLAo+ IMKgfTsKPiDCoAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9vcHMgZ2Vu OV9kY19vZmZfcG93ZXJfd2VsbF9vcHMgPSB7Cj4gKwkuc3luY19odyA9IGdlbjlfZGNfb2ZmX3Bv d2VyX3dlbGxfc3luY19odywKPiArCS5lbmFibGUgPSBnZW45X2RjX29mZl9wb3dlcl93ZWxsX2Vu YWJsZSwKPiArCS5kaXNhYmxlID0gZ2VuOV9kY19vZmZfcG93ZXJfd2VsbF9kaXNhYmxlLAo+ICsJ LmlzX2VuYWJsZWQgPSBnZW45X2RjX29mZl9wb3dlcl93ZWxsX2VuYWJsZWQsCj4gK307Cj4gKwo+ IMKgc3RhdGljIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgaHN3X3Bvd2VyX3dlbGxzW10gPSB7Cj4g wqAJewo+IMKgCQkubmFtZSA9ICJhbHdheXMtb24iLAo+IEBAIC0xNjkxLDYgKzE3MzEsMTIgQEAg c3RhdGljIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgc2tsX3Bvd2VyX3dlbGxzW10gPSB7Cj4gwqAJ CS5kYXRhID0gU0tMX0RJU1BfUFdfTUlTQ19JTywKPiDCoAl9LAo+IMKgCXsKPiArCQkubmFtZSA9 ICJEQyBvZmYiLAo+ICsJCS5kb21haW5zID0gU0tMX0RJU1BMQVlfRENfT0ZGX1BPV0VSX0RPTUFJ TlMsCj4gKwkJLm9wcyA9ICZnZW45X2RjX29mZl9wb3dlcl93ZWxsX29wcywKPiArCQkuZGF0YSA9 IFNLTF9ESVNQX1BXX0RDX09GRiwKPiArCX0sCj4gKwl7Cj4gwqAJCS5uYW1lID0gInBvd2VyIHdl bGwgMiIsCj4gwqAJCS5kb21haW5zID0gU0tMX0RJU1BMQVlfUE9XRVJXRUxMXzJfUE9XRVJfRE9N QUlOUywKPiDCoAkJLm9wcyA9ICZza2xfcG93ZXJfd2VsbF9vcHMsCj4gQEAgLTE3NjksNyArMTgx NSwxNCBAQCBzdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCBieHRfcG93ZXJfd2VsbHNbXSA9 IHsKPiDCoAkJLmRvbWFpbnMgPSBCWFRfRElTUExBWV9QT1dFUldFTExfMl9QT1dFUl9ET01BSU5T LAo+IMKgCQkub3BzID0gJnNrbF9wb3dlcl93ZWxsX29wcywKPiDCoAkJLmRhdGEgPSBTS0xfRElT UF9QV18yLAo+IC0JfQo+ICsJfSwKPiArCXsKPiArCQkubmFtZSA9ICJEQyBvZmYiLAo+ICsJCS5k b21haW5zID0gQlhUX0RJU1BMQVlfRENfT0ZGX1BPV0VSX0RPTUFJTlMsCj4gKwkJLm9wcyA9ICZn ZW45X2RjX29mZl9wb3dlcl93ZWxsX29wcywKPiArCQkuZGF0YSA9IFNLTF9ESVNQX1BXX0RDX09G RiwKPiArCX0sCj4gKwoKWW91IGZvcmdvdCB0byBtb3ZlIHRoaXMgb25lLiBXaXRoIHRoYXQgZml4 ZWQgdGhlIHBhdGNoIGxvb2tzIG9rIGFuZCBteQpSLWIgaG9sZHMuCgo+IMKgfTsKPiDCoAo+IMKg I2RlZmluZSBzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywgX19wb3dlcl93ZWxscykgKHsJ CVwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK