From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH 1/2] drm/i915: Allow control of PSR at runtime through debugfs, v4. Date: Wed, 8 Aug 2018 11:00:40 +0200 Message-ID: References: <1532755389.7639.59.camel@intel.com> <20180731133559.6892-1-maarten.lankhorst@linux.intel.com> <1f20f635274c99c516cf52b16bb65e6a5a34f457.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 83BC68969E for ; Wed, 8 Aug 2018 09:00:43 +0000 (UTC) In-Reply-To: <1f20f635274c99c516cf52b16bb65e6a5a34f457.camel@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: dhinakaran.pandiyan@intel.com, intel-gfx@lists.freedesktop.org Cc: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T3AgMDgtMDgtMTggb20gMDI6MDcgc2NocmVlZiBEaGluYWthcmFuIFBhbmRpeWFuOgo+IE9uIFR1 ZSwgMjAxOC0wNy0zMSBhdCAxNTozNSArMDIwMCwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6Cj4+ IEN1cnJlbnRseSB0ZXN0cyBtb2RpZnkgaTkxNS5lbmFibGVfcHNyIGFuZCB0aGVuIGRvIGEgbW9k ZXNldCBjeWNsZQo+PiB0byBjaGFuZ2UgUFNSLiBXZSBjYW4gd3JpdGUgYSB2YWx1ZSB0byBpOTE1 X2VkcF9wc3JfZGVidWcgdG8gZm9yY2UKPj4gYSBjZXJ0YWluIFBTUiBtb2RlIHdpdGhvdXQgYSBt b2Rlc2V0Lgo+Pgo+PiBUbyByZXRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHVzZXJzcGFj ZSwgd2UgYWxzbyBzdGlsbCBhbGxvdwo+PiB0aGUgb3ZlcnJpZGUgdGhyb3VnaCB0aGUgbW9kdWxl IHBhcmFtZXRlciwgYW5kIGFkZCBzb21lIHRyYWNraW5nCj4+IHRvIGNoZWNrIHdoZXRoZXIgYSBk ZWJ1Z2ZzIG1vZGUgaXMgc3BlY2lmaWVkLgo+Pgo+PiBDaGFuZ2VzIHNpbmNlIHYxOgo+PiAtIFJl bmFtZSBkZXZfcHJpdi0+cHNyLmVuYWJsZWQgdG8gLmRwLCBhbmQgLmh3X2NvbmZpZ3VyZWQgdG8K Pj4gLmVuYWJsZWQuCj4+IC0gRml4IGk5MTVfcHNyX2RlYnVnZnNfbW9kZSB0byBtYXRjaCB0aGUg d3JpdGVzIHRvIGRlYnVnZnMuCj4+IC0gUmVuYW1lIF9faTkxNV9lZHBfcHNyX3dyaXRlIHRvIGlu dGVsX3Bzcl9zZXRfZGVidWdmc19tb2RlLCBzaW1wbGlmeQo+PiAgIGl0IGFuZCBtb3ZlIGl0IHRv IGludGVsX3Bzci5jLiBUaGlzIGtlZXBzIGFsbCBpbnRlcm5hbHMgaW4KPj4gaW50ZWxfcHNyLmMK Pj4gLSBQZXJmb3JtIGFuIGludGVycnVwdGlibGUgd2FpdCBmb3IgaHcgY29tcGxldGlvbiBvdXRz aWRlIG9mIHRoZSBwc3IKPj4gICBsb2NrLCBpbnN0ZWFkIG9mIGJlaW5nIGZvcmNlZCB0byB0cnl3 YWl0IGFuZCByZXR1cm4gLUVCVVNZLgo+PiBDaGFuZ2VzIHNpbmNlIHYyOgo+PiAtIFJlYmFzZSBv biB0b3Agb2YgaW50ZWxfcHNyIGNoYW5nZXMuCj4+IENoYW5nZXMgc2luY2UgdjM6Cj4+IC0gQXNz aWduIHBzci5kcCBkdXJpbmcgaW5pdC4gKGRobmtybikKPj4gLSBBZGQgcHJlcGFyZWQgYm9vbCwg d2hpY2ggc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBvZiByZWx5aW5nIG9uCj4+IHBzci5kcC4gKGRo bmtybikKPj4gLSBGaXggLUVERUFETEsgaGFuZGxpbmcgaW4gZGVidWdmcy4gKGRobmtybikKPj4g LSBDbGVhbiB1cCB3YWl0aW5nIGZvciBpZGxlIGluIGludGVsX3Bzcl9zZXRfZGVidWdmc19tb2Rl Lgo+PiAtIFByaW50IFBTUiBtb2RlIHdoZW4gdHJ5aW5nIHRvIGVuYWJsZSBQU1IuIChkaG5rcm4p Cj4+IC0gTW92ZSBjaGFuZ2luZyBwc3IgZGVidWcgc2V0dGluZyB0byBpOTE1X2VkcF9wc3JfZGVi dWdfc2V0LiAoZGhua3JuKQo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8 bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+PiBDYzogUm9kcmlnbyBWaXZpIDxy b2RyaWdvLnZpdmlAaW50ZWwuY29tPgo+PiBDYzogRGhpbmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFr YXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+Cj4+IC0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMgfCAgMjEgKysrKy0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggICAgIHwgIDEyICsrLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAg ICAgfCAgIDIgKy0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgIHwgICA1 ICstCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYyAgICB8IDEzNiArKysrKysr KysrKysrKysrKysrKysrKy0tLQo+PiAtLQo+PiAgNSBmaWxlcyBjaGFuZ2VkLCAxNDQgaW5zZXJ0 aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCj4+IGluZGV4IDU5ZGMwNjEwZWE0NC4uYTdlOTI3NDEzZThlIDEwMDY0NAo+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+PiBAQCAtMjcwNSw3ICsyNzA1LDcgQEAgc3RhdGlj IGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZQo+PiAqbSwgdm9pZCAqZGF0 YSkKPj4gIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4+ICAKPj4gIAltdXRleF9s b2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+PiAtCXNlcV9wcmludGYobSwgIkVuYWJsZWQ6ICVz XG4iLCB5ZXNubygoYm9vbClkZXZfcHJpdi0KPj4+IHBzci5lbmFibGVkKSk7Cj4+ICsJc2VxX3By aW50ZihtLCAiRW5hYmxlZDogJXNcbiIsIHllc25vKGRldl9wcml2LQo+Pj4gcHNyLmVuYWJsZWQp KTsKPj4gIAlzZXFfcHJpbnRmKG0sICJCdXN5IGZyb250YnVmZmVyIGJpdHM6IDB4JTAzeFxuIiwK Pj4gIAkJICAgZGV2X3ByaXYtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMpOwo+PiAgCj4+IEBA IC0yNzQ3LDE0ICsyNzQ3LDI5IEBAIHN0YXRpYyBpbnQKPj4gIGk5MTVfZWRwX3Bzcl9kZWJ1Z19z ZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKPj4gIHsKPj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkYXRhOwo+PiArCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBj dHg7Cj4+ICsJaW50IHJldDsKPj4gIAo+PiAgCWlmICghQ0FOX1BTUihkZXZfcHJpdikpCj4+ICAJ CXJldHVybiAtRU5PREVWOwo+PiAgCj4+IC0JRFJNX0RFQlVHX0tNUygiUFNSIGRlYnVnICVzXG4i LCBlbmFibGVkZGlzYWJsZWQodmFsKSk7Cj4+ICsJRFJNX0RFQlVHX0tNUygiU2V0dGluZyBQU1Ig ZGVidWcgdG8gJWxseFxuIiwgdmFsKTsKPj4gIAo+PiAgCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRl dl9wcml2KTsKPj4gLQlpbnRlbF9wc3JfaXJxX2NvbnRyb2woZGV2X3ByaXYsICEhdmFsKTsKPj4g Kwo+PiArCWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LAo+PiBEUk1fTU9ERVNFVF9BQ1FV SVJFX0lOVEVSUlVQVElCTEUpOwo+PiArCj4+ICtyZXRyeToKPj4gKwlyZXQgPSBpbnRlbF9wc3Jf c2V0X2RlYnVnZnNfbW9kZShkZXZfcHJpdiwgJmN0eCwgdmFsKTsKPj4gKwlpZiAocmV0ID09IC1F REVBRExLKSB7Cj4+ICsJCXJldCA9IGRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7Cj4gSXMgdGhl cmUgYW55IHJlYXNvbiBub3QgYmFja29mZiB3aGVyZSBtb2Rlc2V0X2xvY2soKSBpcyBjYWxsZWQs IGkuZS4sCj4gaW5zaWRlIHNldF9kZWJ1Z2ZzX21vZGUoKT8KUmVhZGFiaWxpdHksIHNhbWUgcmVh c29uIHdoeSBydW50aW1lX3BtX3B1dCBpcyBhbHNvIGtlcHQgaW4gaTkxNV9lZHBfcHNyX2RlYnVn X3NldC4KClRoZSBhY3R1YWwgZGVidWdmcyBzZXQgZnVuY3Rpb24gc2hvdWxkbid0IGhhdmUgdG8g d29ycnkgYWJvdXQgaXQsIHNhbWUgYXMgd2UgZG8gaW4gYXRvbWljIGNvbW1pdHMuCj4+ICsJCWlm ICghcmV0KQo+PiArCQkJZ290byByZXRyeTsKPj4gKwl9Cj4+ICsKPj4gKwlkcm1fbW9kZXNldF9k cm9wX2xvY2tzKCZjdHgpOwo+IFNhbWUgd2l0aCB0aGlzPwo+Cj4+ICsJZHJtX21vZGVzZXRfYWNx dWlyZV9maW5pKCZjdHgpOwo+PiArCj4+ICAJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYp Owo+PiAgCj4+ICAJcmV0dXJuIDA7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBpbmRl eCAwZjQ5Zjk5ODhkZmEuLmVmMDRiNmNkNzg2MyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4+IEBAIC02MTEsOCArNjExLDE3IEBAIHN0cnVjdCBpOTE1X2RycnMgewo+PiAgCj4+ICBz dHJ1Y3QgaTkxNV9wc3Igewo+PiAgCXN0cnVjdCBtdXRleCBsb2NrOwo+PiArCj4+ICsjZGVmaW5l IEk5MTVfUFNSX0RFQlVHX0lSUQlCSVQoMCkKPiBuaXQ6IGxvb2tzIGEgYml0IG9kZCB0byB1c2Ug dGhlIEJJVCBtYWNybyBvbmx5IGZvciB0aGUgZmlyc3QgYml0LiBJcwo+IHRoaXMgdGhlIG5ldyBn dWlkZWxpbmUgZm9yIHNpbmdsZSBiaXQgZGVmaW5pdGlvbnM/CkkgdHJpZWQgdG8gcHJlc2VydmUg dGhlIG9sZCBiZWhhdmlvciwgc28gZWNobyAxID4gZGVidWcgd291bGQgc3RpbGwgZW5hYmxlIGly cSBkZWJ1Z2dpbmcuCgpJJ20gYWxsIGZvciBicmVha2luZyB0aGlzIGlmIGl0IG1ha2VzIHlvdXIg bGlmZSBlYXNpZXIuIDopCj4KPj4gKyNkZWZpbmUgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLICg3 IDw8IDEpCj4+ICsjZGVmaW5lIEk5MTVfUFNSX0RFQlVHX0RFRkFVTFQJKDAgPDwgMSkKPj4gKyNk ZWZpbmUgSTkxNV9QU1JfREVCVUdfRElTQUJMRQkoMSA8PCAxKQo+PiArI2RlZmluZSBJOTE1X1BT Ul9ERUJVR19FTkFCTEUJKDIgPDwgMSkKPiBDYW4gd2UgYWxzbyBwbGVhc2UgZGVmaW5lIHRoZSBl bmFibGUvZGlzYWJsZSBiaXRzIGZyb20gMCBhbmQgbW92ZSB0aGUKPiBkZWJ1ZyBvbmUgdG93YXJk cyBNU0I/IFRoZSBlbmFibGUvZGlzYWJsZSBiaXRzIHdpbGwgYmUgdGhlIG1vc3QKPiBjb21tb25s eSB1c2VkIG9uZXMgYW5kIGl0J2QgYmUgZWFzeSB0byByZW1lbWJlciBpZiB0aGVyZSB3YXMgbm8g c2hpZnQ/Cj4gSSdtIGZpbmUgaWYgeW91IGRvbid0IHdhbnQgdG8gY2hhbmdlIHRvby4KWWVhaCB0 aGF0J3MgZmluZS4KPj4gKwo+PiArCXUzMiBkZWJ1ZzsKPj4gIAlib29sIHNpbmtfc3VwcG9ydDsK Pj4gLQlzdHJ1Y3QgaW50ZWxfZHAgKmVuYWJsZWQ7Cj4+ICsJYm9vbCBwcmVwYXJlZCwgZW5hYmxl ZDsKPj4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmRwOwo+PiAgCWJvb2wgYWN0aXZlOwo+PiAgCXN0cnVj dCB3b3JrX3N0cnVjdCB3b3JrOwo+PiAgCXVuc2lnbmVkIGJ1c3lfZnJvbnRidWZmZXJfYml0czsK Pj4gQEAgLTYyMiw3ICs2MzEsNiBAQCBzdHJ1Y3QgaTkxNV9wc3Igewo+PiAgCWJvb2wgYWxwbTsK Pj4gIAlib29sIHBzcjJfZW5hYmxlZDsKPj4gIAl1OCBzaW5rX3N5bmNfbGF0ZW5jeTsKPj4gLQli b29sIGRlYnVnOwo+PiAgCWt0aW1lX3QgbGFzdF9lbnRyeV9hdHRlbXB0Owo+PiAgCWt0aW1lX3Qg bGFzdF9leGl0Owo+PiAgfTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfaXJxLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4+IGluZGV4IDVk YWRlZmNhMmFkMi4uZGVmZDY5NmU3MWZjIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2lycS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMK Pj4gQEAgLTQwNTEsNyArNDA1MSw3IEBAIHN0YXRpYyBpbnQgaXJvbmxha2VfaXJxX3Bvc3RpbnN0 YWxsKHN0cnVjdAo+PiBkcm1fZGV2aWNlICpkZXYpCj4+ICAKPj4gIAlpZiAoSVNfSEFTV0VMTChk ZXZfcHJpdikpIHsKPj4gIAkJZ2VuM19hc3NlcnRfaWlyX2lzX3plcm8oZGV2X3ByaXYsIEVEUF9Q U1JfSUlSKTsKPj4gLQkJaW50ZWxfcHNyX2lycV9jb250cm9sKGRldl9wcml2LCBkZXZfcHJpdi0K Pj4+IHBzci5kZWJ1Zyk7Cj4+ICsJCWludGVsX3Bzcl9pcnFfY29udHJvbChkZXZfcHJpdiwgZGV2 X3ByaXYtPnBzci5kZWJ1Zwo+PiAmIEk5MTVfUFNSX0RFQlVHX0lSUSk7Cj4+ICAJCWRpc3BsYXlf bWFzayB8PSBERV9FRFBfUFNSX0lOVF9IU1c7Cj4+ICAJfQo+PiAgCj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCj4+IGluZGV4IDk5YTVmNWJlNWI4Mi4uZjRjZmI3ZWQyMjYyIDEwMDY0NAo+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBAQCAtMTkzMCw2ICsxOTMwLDkgQEAgdm9pZCBp bnRlbF9wc3JfZW5hYmxlKHN0cnVjdCBpbnRlbF9kcAo+PiAqaW50ZWxfZHAsCj4+ICAJCSAgICAg IGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPj4gIHZvaWQgaW50 ZWxfcHNyX2Rpc2FibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPj4gIAkJICAgICAgY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUKPj4gKm9sZF9jcnRjX3N0YXRlKTsKPj4gK2ludCBp bnRlbF9wc3Jfc2V0X2RlYnVnZnNfbW9kZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4+ICsJCQkgICAgICAgc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4ICpjdHgsCj4+ ICsJCQkgICAgICAgdTY0IHZhbHVlKTsKPj4gIHZvaWQgaW50ZWxfcHNyX2ludmFsaWRhdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgCQkJICB1bnNpZ25lZCBmcm9udGJ1 ZmZlcl9iaXRzLAo+PiAgCQkJICBlbnVtIGZiX29wX29yaWdpbiBvcmlnaW4pOwo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPj4gYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wc3IuYwo+PiBpbmRleCA0YmQ1NzY4NzMxZWUuLjc4NDg4MjkwOTRjYSAx MDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPj4gQEAgLTU2LDYgKzU2LDE4IEBACj4+ ICAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4+ICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPj4gIAo+ PiArc3RhdGljIGJvb2wgcHNyX2dsb2JhbF9lbmFibGVkKHUzMiBkZWJ1ZykKPj4gK3sKPj4gKwlz d2l0Y2ggKGRlYnVnICYgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLKSB7Cj4+ICsJY2FzZSBJOTE1 X1BTUl9ERUJVR19ERUZBVUxUOgo+PiArCQlyZXR1cm4gaTkxNV9tb2RwYXJhbXMuZW5hYmxlX3Bz cjsKPj4gKwljYXNlIEk5MTVfUFNSX0RFQlVHX0RJU0FCTEU6Cj4+ICsJCXJldHVybiBmYWxzZTsK Pj4gKwlkZWZhdWx0Ogo+PiArCQlyZXR1cm4gdHJ1ZTsKPj4gKwl9Cj4+ICt9Cj4+ICsKPj4gIHZv aWQgaW50ZWxfcHNyX2lycV9jb250cm9sKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgYm9vbAo+PiBkZWJ1ZykKPj4gIHsKPj4gIAl1MzIgZGVidWdfbWFzaywgbWFzazsKPj4gQEAg LTgwLDcgKzkyLDYgQEAgdm9pZCBpbnRlbF9wc3JfaXJxX2NvbnRyb2woc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUKPj4gKmRldl9wcml2LCBib29sIGRlYnVnKQo+PiAgCWlmIChkZWJ1ZykKPj4gIAkJ bWFzayB8PSBkZWJ1Z19tYXNrOwo+PiAgCj4+IC0JV1JJVEVfT05DRShkZXZfcHJpdi0+cHNyLmRl YnVnLCBkZWJ1Zyk7Cj4+ICAJSTkxNV9XUklURShFRFBfUFNSX0lNUiwgfm1hc2spOwo+PiAgfQo+ PiAgCj4+IEBAIC0yMTIsNiArMjIzLDcgQEAgdm9pZCBpbnRlbF9wc3JfaW5pdF9kcGNkKHN0cnVj dCBpbnRlbF9kcAo+PiAqaW50ZWxfZHApCj4+ICAJZGV2X3ByaXYtPnBzci5zaW5rX3N1cHBvcnQg PSB0cnVlOwo+PiAgCWRldl9wcml2LT5wc3Iuc2lua19zeW5jX2xhdGVuY3kgPQo+PiAgCQlpbnRl bF9kcF9nZXRfc2lua19zeW5jX2xhdGVuY3koaW50ZWxfZHApOwo+PiArCWRldl9wcml2LT5wc3Iu ZHAgPSBpbnRlbF9kcDsKPj4gIAo+PiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkgJiYK Pj4gIAkgICAgKGludGVsX2RwLT5wc3JfZHBjZFswXSA9PQo+PiBEUF9QU1IyX1dJVEhfWV9DT09S RF9JU19TVVBQT1JURUQpKSB7Cj4+IEBAIC00NzEsMTEgKzQ4Myw2IEBAIHZvaWQgaW50ZWxfcHNy X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcAo+PiAqaW50ZWxfZHAsCj4+ICAJaWYgKCFD QU5fUFNSKGRldl9wcml2KSkKPj4gIAkJcmV0dXJuOwo+PiAgCj4+IC0JaWYgKCFpOTE1X21vZHBh cmFtcy5lbmFibGVfcHNyKSB7Cj4+IC0JCURSTV9ERUJVR19LTVMoIlBTUiBkaXNhYmxlIGJ5IGZs YWdcbiIpOwo+PiAtCQlyZXR1cm47Cj4+IC0JfQo+PiAtCj4+ICAJLyoKPj4gIAkgKiBIU1cgc3Bl YyBleHBsaWNpdGx5IHNheXMgUFNSIGlzIHRpZWQgdG8gcG9ydCBBLgo+PiAgCSAqIEJEVysgcGxh dGZvcm1zIHdpdGggRERJIGltcGxlbWVudGF0aW9uIG9mIFBTUiBoYXZlCj4+IGRpZmZlcmVudAo+ PiBAQCAtNTE3LDcgKzUyNCw2IEBAIHZvaWQgaW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKHN0cnVj dCBpbnRlbF9kcAo+PiAqaW50ZWxfZHAsCj4+ICAKPj4gIAljcnRjX3N0YXRlLT5oYXNfcHNyID0g dHJ1ZTsKPj4gIAljcnRjX3N0YXRlLT5oYXNfcHNyMiA9IGludGVsX3BzcjJfY29uZmlnX3ZhbGlk KGludGVsX2RwLAo+PiBjcnRjX3N0YXRlKTsKPj4gLQlEUk1fREVCVUdfS01TKCJFbmFibGluZyBQ U1Ilc1xuIiwgY3J0Y19zdGF0ZS0+aGFzX3BzcjIgPyAiMiIKPj4gOiAiIik7Cj4+ICB9Cj4+ICAK Pj4gIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9hY3RpdmF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQo+PiBAQCAtNTg5LDYgKzU5NSwyMyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxl X3NvdXJjZShzdHJ1Y3QKPj4gaW50ZWxfZHAgKmludGVsX2RwLAo+PiAgCX0KPj4gIH0KPj4gIAo+ PiArc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUKPj4gKmRldl9wcml2LAo+PiArCQkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZQo+PiAqY3J0Y19zdGF0ZSkKPj4gK3sKPj4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw ID0gZGV2X3ByaXYtPnBzci5kcDsKPj4gKwo+PiArCWlmIChkZXZfcHJpdi0+cHNyLmVuYWJsZWQp Cj4+ICsJCXJldHVybjsKPj4gKwo+PiArCURSTV9ERUJVR19LTVMoIkVuYWJsaW5nIFBTUiVzXG4i LCBkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCAKPj4gPyAiMiIgOiAiMSIpOwo+PiArCWludGVs X3Bzcl9zZXR1cF92c2MoaW50ZWxfZHAsIGNydGNfc3RhdGUpOwo+PiArCWludGVsX3Bzcl9lbmFi bGVfc2luayhpbnRlbF9kcCk7Cj4+ICsJaW50ZWxfcHNyX2VuYWJsZV9zb3VyY2UoaW50ZWxfZHAs IGNydGNfc3RhdGUpOwo+PiArCWRldl9wcml2LT5wc3IuZW5hYmxlZCA9IHRydWU7Cj4+ICsKPj4g KwlpbnRlbF9wc3JfYWN0aXZhdGUoaW50ZWxfZHApOwo+PiArfQo+PiArCj4+ICAvKioKPj4gICAq IGludGVsX3Bzcl9lbmFibGUgLSBFbmFibGUgUFNSCj4+ICAgKiBAaW50ZWxfZHA6IEludGVsIERQ Cj4+IEBAIC02MTEsMjAgKzYzNCwyMCBAQCB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGlu dGVsX2RwCj4+ICppbnRlbF9kcCwKPj4gIAo+PiAgCVdBUk5fT04oZGV2X3ByaXYtPmRycnMuZHAp Owo+IFdlIGNvdWxkIGFkZCBhIG5ldyBsaW5lIGhlcmU/CkluZGVlZCwgbWF5YmUgY2hhbmdlIHRv IGlmIChXQVJOX09OKGludGVsX2RwICE9IGRldl9wcml2LT5kcnJzLmRwKSkgcmV0dXJuOyA/Cj4K Pj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+PiAtCWlmIChkZXZfcHJpdi0+ cHNyLmVuYWJsZWQpIHsKPj4gKwlpZiAoZGV2X3ByaXYtPnBzci5wcmVwYXJlZCkgewo+PiAgCQlE Uk1fREVCVUdfS01TKCJQU1IgYWxyZWFkeSBpbiB1c2VcbiIpOwo+PiAgCQlnb3RvIHVubG9jazsK Pj4gIAl9Cj4+ICAKPj4gIAlkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCA9IGNydGNfc3RhdGUt Pmhhc19wc3IyOwo+PiAgCWRldl9wcml2LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzID0gMDsK Pj4gKwlkZXZfcHJpdi0+cHNyLnByZXBhcmVkID0gdHJ1ZTsKPj4gKwlkZXZfcHJpdi0+cHNyLmRw ID0gaW50ZWxfZHA7Cj4gLmRwIGlzIGFscmVhZHkgc2V0IGluIGluaXRfZHBjZCgpClBhcmFub2lh LCBpbiBjYXNlIHdlIHNvbWVob3cgZW5kZWQgdXAgd2l0aCAyIGVEUCdzIGR1ZSB0byBhIGJ1Zy4g TWF5YmUgdGhlIGNoYW5nZSBhYm92ZT8KCj4+ICAKPj4gLQlpbnRlbF9wc3Jfc2V0dXBfdnNjKGlu dGVsX2RwLCBjcnRjX3N0YXRlKTsKPj4gLQlpbnRlbF9wc3JfZW5hYmxlX3NpbmsoaW50ZWxfZHAp Owo+PiAtCWludGVsX3Bzcl9lbmFibGVfc291cmNlKGludGVsX2RwLCBjcnRjX3N0YXRlKTsKPj4g LQlkZXZfcHJpdi0+cHNyLmVuYWJsZWQgPSBpbnRlbF9kcDsKPj4gLQo+PiAtCWludGVsX3Bzcl9h Y3RpdmF0ZShpbnRlbF9kcCk7Cj4+ICsJaWYgKHBzcl9nbG9iYWxfZW5hYmxlZChkZXZfcHJpdi0+ cHNyLmRlYnVnKSkKPj4gKwkJaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoZGV2X3ByaXYsIGNydGNf c3RhdGUpOwo+PiArCWVsc2UKPj4gKwkJRFJNX0RFQlVHX0tNUygiUFNSIGRpc2FibGVkIGJ5IGZs YWdcbiIpOwo+PiAgCj4+ICB1bmxvY2s6Cj4+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNy LmxvY2spOwo+PiBAQCAtNjgzLDEyICs3MDYsMTMgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2Rp c2FibGVfbG9ja2VkKHN0cnVjdAo+PiBpbnRlbF9kcCAqaW50ZWxfZHApCj4+ICAJaWYgKCFkZXZf cHJpdi0+cHNyLmVuYWJsZWQpCj4+ICAJCXJldHVybjsKPj4gIAo+PiArCURSTV9ERUJVR19LTVMo IkRpc2FibGluZyBQU1JcbiIpOwo+IFByaW50IFBTUjEvMiB0b28/IExpa2UgeW91J3ZlIGRvbmUg aW4gdGhlIGVuYWJsZSBjb3VudGVyIHBhcnQuClRob3VnaHQgYWJvdXQgaXQsIG1pZ2h0IGFzIHdl bGwgZG8gc28uCj4KPj4gIAlpbnRlbF9wc3JfZGlzYWJsZV9zb3VyY2UoaW50ZWxfZHApOwo+PiAg Cj4+ICAJLyogRGlzYWJsZSBQU1Igb24gU2luayAqLwo+PiAgCWRybV9kcF9kcGNkX3dyaXRlYigm aW50ZWxfZHAtPmF1eCwgRFBfUFNSX0VOX0NGRywgMCk7Cj4+ICAKPj4gLQlkZXZfcHJpdi0+cHNy LmVuYWJsZWQgPSBOVUxMOwo+PiArCWRldl9wcml2LT5wc3IuZW5hYmxlZCA9IGZhbHNlOwo+PiAg fQo+PiAgCj4+ICAvKioKPj4gQEAgLTcxMiw3ICs3MzYsMTQgQEAgdm9pZCBpbnRlbF9wc3JfZGlz YWJsZShzdHJ1Y3QgaW50ZWxfZHAKPj4gKmludGVsX2RwLAo+PiAgCQlyZXR1cm47Cj4+ICAKPj4g IAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+PiArCWlmIChpbnRlbF9kcCAhPSBk ZXZfcHJpdi0+cHNyLmRwIHx8ICFkZXZfcHJpdi0+cHNyLnByZXBhcmVkKQo+IFdvbid0IGludGVs X2RwID09IGRldl9wcml2LT5wc3IuZHAgaWYgb2xkX2NydGNfc3RhdGUtPmhhc19wc3Igd2FzIHRy dWU/CkluIGNhc2Ugd2UgaGF2ZSAyIGVEUCdzIHNvbWVob3csIGFnYWluLgo+Cj4+ICB7Cj4+ICsJ CW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPj4gKwkJcmV0dXJuOwo+PiArCX0K Pj4gKwo+PiAgCWludGVsX3Bzcl9kaXNhYmxlX2xvY2tlZChpbnRlbF9kcCk7Cj4+ICsKPj4gKwlk ZXZfcHJpdi0+cHNyLnByZXBhcmVkID0gZmFsc2U7Cj4+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+cHNyLmxvY2spOwo+PiAgCWNhbmNlbF93b3JrX3N5bmMoJmRldl9wcml2LT5wc3Iud29yayk7 Cj4+ICB9Cj4+IEBAIC03MjQsOSArNzU1LDYgQEAgaW50IGludGVsX3Bzcl93YWl0X2Zvcl9pZGxl KGNvbnN0IHN0cnVjdAo+PiBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKPj4gIAlp OTE1X3JlZ190IHJlZzsKPj4gIAl1MzIgbWFzazsKPj4gIAo+PiAtCWlmICghbmV3X2NydGNfc3Rh dGUtPmhhc19wc3IpCj4+IC0JCXJldHVybiAwOwo+PiAtCj4+ICAJLyoKPj4gIAkgKiBUaGUgc29s ZSB1c2VyIHJpZ2h0IG5vdyBpcyBpbnRlbF9waXBlX3VwZGF0ZV9zdGFydCgpLAo+PiAgCSAqIHdo aWNoIHdvbid0IHJhY2Ugd2l0aCBwc3JfZW5hYmxlL2Rpc2FibGUsIHdoaWNoIGlzCj4+IEBAIC03 MzcsNiArNzY1LDkgQEAgaW50IGludGVsX3Bzcl93YWl0X2Zvcl9pZGxlKGNvbnN0IHN0cnVjdAo+ PiBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKPj4gIAkgKiBub3QgbmVlZGVkIGFu ZCB3aWxsIGluZHVjZSBsYXRlbmNpZXMgaW4gdGhlIGF0b21pYwo+PiAgCSAqIHVwZGF0ZSBwYXRo Lgo+PiAgCSAqLwo+PiArCWlmICghZGV2X3ByaXYtPnBzci5lbmFibGVkKQo+PiArCQlyZXR1cm4g MDsKPj4gKwo+PiAgCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkgewo+PiAgCQlyZWcg PSBFRFBfUFNSMl9TVEFUVVM7Cj4+ICAJCW1hc2sgPSBFRFBfUFNSMl9TVEFUVVNfU1RBVEVfTUFT SzsKPj4gQEAgLTc1NiwxMyArNzg3LDExIEBAIGludCBpbnRlbF9wc3Jfd2FpdF9mb3JfaWRsZShj b25zdCBzdHJ1Y3QKPj4gaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpCj4+ICAKPj4g IHN0YXRpYyBib29sIF9fcHNyX3dhaXRfZm9yX2lkbGVfbG9ja2VkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlCj4+ICpkZXZfcHJpdikKPj4gIHsKPj4gLQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw Owo+PiAgCWk5MTVfcmVnX3QgcmVnOwo+PiAgCXUzMiBtYXNrOwo+PiAgCWludCBlcnI7Cj4+ICAK Pj4gLQlpbnRlbF9kcCA9IGRldl9wcml2LT5wc3IuZW5hYmxlZDsKPj4gLQlpZiAoIWludGVsX2Rw KQo+PiArCWlmICghZGV2X3ByaXYtPnBzci5lbmFibGVkKQo+PiAgCQlyZXR1cm4gZmFsc2U7Cj4+ ICAKPj4gIAlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpIHsKPj4gQEAgLTc4NCw2ICs4 MTMsNjIgQEAgc3RhdGljIGJvb2wgX19wc3Jfd2FpdF9mb3JfaWRsZV9sb2NrZWQoc3RydWN0Cj4+ IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgCXJldHVybiBlcnIgPT0gMCAmJiBkZXZf cHJpdi0+cHNyLmVuYWJsZWQ7Cj4+ICB9Cj4+ICAKPj4gK2ludCBpbnRlbF9wc3Jfc2V0X2RlYnVn ZnNfbW9kZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICsJCQkgICAgICAg c3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4ICpjdHgsCj4+ICsJCQkgICAgICAgdTY0IHZh bCkKPj4gK3sKPj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJmRldl9wcml2LT5kcm07Cj4+ ICsJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGU7Cj4+ICsJc3RydWN0IGRy bV9jcnRjICpjcnRjOwo+PiArCXN0cnVjdCBpbnRlbF9kcCAqZHA7Cj4+ICsJaW50IHJldDsKPj4g Kwlib29sIGVuYWJsZTsKPj4gKwo+PiArCWlmICh2YWwgJiB+KEk5MTVfUFNSX0RFQlVHX0lSUSB8 IEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSykKPj4gfHwKPj4gKwkgICAgKHZhbCAmIEk5MTVfUFNS X0RFQlVHX01PREVfTUFTSykgPgo+PiBJOTE1X1BTUl9ERUJVR19FTkFCTEUpIHsKPj4gKwkJRFJN X0RFQlVHX0tNUygiSW52YWxpZCBkZWJ1ZyBtYXNrICVsbHhcbiIsIHZhbCk7Cj4+ICsJCXJldHVy biAtRUlOVkFMOwo+PiArCX0KPj4gKwo+PiArCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmRldi0+ bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCwKPj4gY3R4KTsKPj4gKwlpZiAocmV0KQo+PiAr CQlyZXR1cm4gcmV0Owo+PiArCj4+ICsJLyogZGV2X3ByaXYtPnBzci5kcCBzaG91bGQgYmUgc2V0 IG9uY2UgYW5kIHRoZW4gbmV2ZXIKPj4gdG91Y2hlZCBhZ2Fpbi4gKi8KPj4gKwlkcCA9IFJFQURf T05DRShkZXZfcHJpdi0+cHNyLmRwKTsKPj4gKwljb25uX3N0YXRlID0gZHAtPmF0dGFjaGVkX2Nv bm5lY3Rvci0+YmFzZS5zdGF0ZTsKPj4gKwljcnRjID0gY29ubl9zdGF0ZS0+Y3J0YzsKPj4gKwlp ZiAoY3J0Yykgewo+PiArCQlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5tdXRleCwgY3R4 KTsKPj4gKwkJaWYgKHJldCkKPj4gKwkJCXJldHVybiByZXQ7Cj4+ICsKPj4gKwkJcmV0ID0gd2Fp dF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlKCZjcnRjLQo+Pj4gc3RhdGUtPmNvbW1pdC0+ aHdfZG9uZSk7Cj4+ICsJfSBlbHNlCj4+ICsJCXJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25faW50 ZXJydXB0aWJsZSgmY29ubl9zdGF0ZS0KPj4+IGNvbW1pdC0+aHdfZG9uZSk7Cj4gU2hvdWxkbid0 IHRoaXMgd2FpdCBvbiBjb25uZWN0aW9uIHN0YXRlIGJlIGRvbmUgZXZlbiBpZiBhIGNydGMgd2Fz Cj4gcHJlc2VudD8KSWYgdGhlIGNvbm5lY3RvciBpcyBib3VuZCB0byBhIGNydGMsIHRoZW4gaGF2 aW5nIHRoYXQgaWRsZSB3aWxsIG1lYW4gY29ubmVjdG9yIGlzIGlkbGUgdG9vLgoKU2VlIGRybV9h dG9taWNfaGVscGVyX3NldHVwX2NvbW1pdCgpCgpPdGhlciB3YXkgYXJvdW5kIGlzIG5vdCBhbHdh eXMgdHJ1ZS4KCj4+ICsKPj4gKwlpZiAocmV0KQo+PiArCQlyZXR1cm4gcmV0Owo+PiArCj4+ICsJ cmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+PiAr CWlmIChyZXQpCj4+ICsJCXJldHVybiByZXQ7Cj4+ICsKPj4gKwllbmFibGUgPSBwc3JfZ2xvYmFs X2VuYWJsZWQodmFsKTsKPj4gKwo+PiArCWlmICghZW5hYmxlKQo+PiArCQlpbnRlbF9wc3JfZGlz YWJsZV9sb2NrZWQoZGV2X3ByaXYtPnBzci5kcCk7Cj4+ICsKPj4gKwlkZXZfcHJpdi0+cHNyLmRl YnVnID0gdmFsOwo+PiArCWludGVsX3Bzcl9pcnFfY29udHJvbChkZXZfcHJpdiwgZGV2X3ByaXYt PnBzci5kZWJ1ZyAmCj4+IEk5MTVfUFNSX0RFQlVHX0lSUSk7Cj4+ICsKPj4gKwlpZiAoZGV2X3By aXYtPnBzci5wcmVwYXJlZCAmJiBlbmFibGUpCj4+ICsJCWludGVsX3Bzcl9lbmFibGVfbG9ja2Vk KGRldl9wcml2LAo+PiB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKSk7Cj4+ICsKPj4g KwltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4+ICsJcmV0dXJuIHJldDsKPj4g K30KPj4gKwo+PiAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0 ICp3b3JrKQo+PiAgewo+PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4+ IEBAIC04MTEsNyArODk2LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX3dvcmsoc3RydWN0IHdv cmtfc3RydWN0Cj4+ICp3b3JrKQo+PiAgCWlmIChkZXZfcHJpdi0+cHNyLmJ1c3lfZnJvbnRidWZm ZXJfYml0cyB8fCBkZXZfcHJpdi0KPj4+IHBzci5hY3RpdmUpCj4+ICAJCWdvdG8gdW5sb2NrOwo+ PiAgCj4+IC0JaW50ZWxfcHNyX2FjdGl2YXRlKGRldl9wcml2LT5wc3IuZW5hYmxlZCk7Cj4+ICsJ aW50ZWxfcHNyX2FjdGl2YXRlKGRldl9wcml2LT5wc3IuZHAKPj4gKyk7Cj4gXnR5cG8KSW5kZWVk ISBXaWxsIGZpeC4KPj4gIHVubG9jazoKPj4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3Iu bG9jayk7Cj4+ICB9Cj4+IEBAIC04NjYsNyArOTUyLDcgQEAgdm9pZCBpbnRlbF9wc3JfaW52YWxp ZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+PiAqZGV2X3ByaXYsCj4+ICAJCXJldHVybjsK Pj4gIAl9Cj4+ICAKPj4gLQljcnRjID0gZHBfdG9fZGlnX3BvcnQoZGV2X3ByaXYtPnBzci5lbmFi bGVkKS0KPj4+IGJhc2UuYmFzZS5jcnRjOwo+PiArCWNydGMgPSBkcF90b19kaWdfcG9ydChkZXZf cHJpdi0+cHNyLmRwKS0+YmFzZS5iYXNlLmNydGM7Cj4+ICAJcGlwZSA9IHRvX2ludGVsX2NydGMo Y3J0YyktPnBpcGU7Cj4+ICAKPj4gIAlmcm9udGJ1ZmZlcl9iaXRzICY9IElOVEVMX0ZST05UQlVG RkVSX0FMTF9NQVNLKHBpcGUpOwo+PiBAQCAtOTA5LDcgKzk5NSw3IEBAIHZvaWQgaW50ZWxfcHNy X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4+ICpkZXZfcHJpdiwKPj4gIAkJcmV0dXJu Owo+PiAgCX0KPj4gIAo+PiAtCWNydGMgPSBkcF90b19kaWdfcG9ydChkZXZfcHJpdi0+cHNyLmVu YWJsZWQpLQo+Pj4gYmFzZS5iYXNlLmNydGM7Cj4+ICsJY3J0YyA9IGRwX3RvX2RpZ19wb3J0KGRl dl9wcml2LT5wc3IuZHApLT5iYXNlLmJhc2UuY3J0YzsKPj4gIAlwaXBlID0gdG9faW50ZWxfY3J0 YyhjcnRjKS0+cGlwZTsKPj4gIAo+PiAgCWZyb250YnVmZmVyX2JpdHMgJj0gSU5URUxfRlJPTlRC VUZGRVJfQUxMX01BU0socGlwZSk7Cj4+IEBAIC05OTEsNyArMTA3Nyw3IEBAIHZvaWQgaW50ZWxf cHNyX3Nob3J0X3B1bHNlKHN0cnVjdCBpbnRlbF9kcAo+PiAqaW50ZWxfZHApCj4+ICAKPj4gIAlt dXRleF9sb2NrKCZwc3ItPmxvY2spOwo+PiAgCj4+IC0JaWYgKHBzci0+ZW5hYmxlZCAhPSBpbnRl bF9kcCkKPj4gKwlpZiAoIXBzci0+ZW5hYmxlZCB8fCBwc3ItPmRwICE9IGludGVsX2RwKQo+PiAg CQlnb3RvIGV4aXQ7Cj4+ICAKPj4gIAlpZiAoZHJtX2RwX2RwY2RfcmVhZGIoJmludGVsX2RwLT5h dXgsIERQX1BTUl9TVEFUVVMsICZ2YWwpCj4+ICE9IDEpIHsKClRoYW5rcyBmb3IgcmV2aWV3LCB3 aWxsIHNlbmQgYSBuZXcgdmVyc2lvbiB0b2RheS4KCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=