From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 08/46] drm/i915: Mark up debugfs with rpm wakeref tracking Date: Wed, 09 Jan 2019 12:20:26 +0200 Message-ID: <8736q22kut.fsf@gaia.fi.intel.com> References: <20190107115509.12523-1-chris@chris-wilson.co.uk> <20190107115509.12523-8-chris@chris-wilson.co.uk> 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 ESMTPS id D1E356EBFB for ; Wed, 9 Jan 2019 10:22:06 +0000 (UTC) In-Reply-To: <20190107115509.12523-8-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org Cc: Jani Nikula List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gQXMgZGVi dWdmcyBoYXMgYSBzaW1wbGUgcGF0dGVybiBvZiB0YWtpbmcgYSBycG0gd2FrZXJlZiBhcm91bmQg dGhlIHVzZXIKPiBhY2Nlc3MsIHdlIGNhbiB0cmFjayB0aGUgbG9jYWwgcmVmZXJlbmNlIGFuZCBk cm9wIGl0IGFzIHNvb24gYXMKPiBwb3NzaWJsZS4KPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBKYW5pIE5pa3VsYSA8amFuaS5u aWt1bGFAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYyB8IDEzNSArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCj4gIDEgZmlsZSBjaGFuZ2Vk LCA4MiBpbnNlcnRpb25zKCspLCA1MyBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCj4gaW5kZXggNmI4ZGExNGYyMTNiLi5kNjY3YjA1ZTdjYTQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC02NzQsOSArNjc0LDEwIEBAIHN0YXRp YyBpbnQgaTkxNV9pbnRlcnJ1cHRfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEp Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+ cHJpdmF0ZSk7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gIAllbnVtIGlu dGVsX2VuZ2luZV9pZCBpZDsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJaW50IGks IHBpcGU7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICsJd2FrZXJl ZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAgCj4gIAlpZiAoSVNfQ0hFUlJZ VklFVyhkZXZfcHJpdikpIHsKPiAgCQlzZXFfcHJpbnRmKG0sICJNYXN0ZXIgSW50ZXJydXB0IENv bnRyb2w6XHQlMDh4XG4iLAo+IEBAIC04NzcsNyArODc4LDcgQEAgc3RhdGljIGludCBpOTE1X2lu dGVycnVwdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgCQl9Cj4gIAl9 Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKPiArCWlu dGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsKPiAgCj4gIAlyZXR1cm4gMDsK PiAgfQo+IEBAIC05NTAsMTAgKzk1MSwxMSBAQCBzdGF0aWMgaW50IGk5MTVfZ3B1X2luZm9fb3Bl bihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKPiAgewo+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBpbm9kZS0+aV9wcml2YXRlOwo+ICAJc3RydWN0IGk5 MTVfZ3B1X3N0YXRlICpncHU7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCj4gLQlp bnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3Bt X2dldChpOTE1KTsKPiAgCWdwdSA9IGk5MTVfY2FwdHVyZV9ncHVfc3RhdGUoaTkxNSk7Cj4gLQlp bnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gKwlpbnRlbF9ydW50aW1lX3Bt X3B1dChpOTE1LCB3YWtlcmVmKTsKPiAgCWlmIChJU19FUlIoZ3B1KSkKPiAgCQlyZXR1cm4gUFRS X0VSUihncHUpOwo+ICAKPiBAQCAtMTAxMiw5ICsxMDE0LDEwIEBAIHN0YXRpYyBpbnQgaTkxNV9m cmVxdWVuY3lfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgewo+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZh dGUpOwo+ICAJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5ndF9wbS5ycHM7Cj4g KwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCWludCByZXQgPSAwOwo+ICAKPiAtCWludGVs X3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3Bt X2dldChkZXZfcHJpdik7Cj4gIAo+ICAJaWYgKElTX0dFTihkZXZfcHJpdiwgNSkpIHsKPiAgCQl1 MTYgcmd2c3djdGwgPSBJOTE1X1JFQUQxNihNRU1TV0NUTCk7Cj4gQEAgLTEyMjYsNyArMTIyOSw3 IEBAIHN0YXRpYyBpbnQgaTkxNV9mcmVxdWVuY3lfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZv aWQgKnVudXNlZCkKPiAgCXNlcV9wcmludGYobSwgIk1heCBDRCBjbG9jayBmcmVxdWVuY3k6ICVk IGtIelxuIiwgZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxKTsKPiAgCXNlcV9wcmludGYobSwgIk1h eCBwaXhlbCBjbG9jayBmcmVxdWVuY3k6ICVkIGtIelxuIiwgZGV2X3ByaXYtPm1heF9kb3RjbGtf ZnJlcSk7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsK PiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsKPiAgCXJldHVybiBy ZXQ7Cj4gIH0KPiAgCj4gQEAgLTEyNjUsNiArMTI2OCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9oYW5n Y2hlY2tfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCXU2NCBhY3Ro ZFtJOTE1X05VTV9FTkdJTkVTXTsKPiAgCXUzMiBzZXFub1tJOTE1X05VTV9FTkdJTkVTXTsKPiAg CXN0cnVjdCBpbnRlbF9pbnN0ZG9uZSBpbnN0ZG9uZTsKPiArCWludGVsX3dha2VyZWZfdCB3YWtl cmVmOwo+ICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gIAo+ICAJaWYgKHRlc3RfYml0KEk5 MTVfV0VER0VELCAmZGV2X3ByaXYtPmdwdV9lcnJvci5mbGFncykpCj4gQEAgLTEyODMsNyArMTI4 Nyw3IEBAIHN0YXRpYyBpbnQgaTkxNV9oYW5nY2hlY2tfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKnVudXNlZCkKPiAgCQlyZXR1cm4gMDsKPiAgCX0KPiAgCj4gLQlpbnRlbF9ydW50aW1l X3BtX2dldChkZXZfcHJpdik7Cj4gKwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2 X3ByaXYpOwo+ICAKPiAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkgewo+ ICAJCWFjdGhkW2lkXSA9IGludGVsX2VuZ2luZV9nZXRfYWN0aXZlX2hlYWQoZW5naW5lKTsKPiBA QCAtMTI5Miw3ICsxMjk2LDcgQEAgc3RhdGljIGludCBpOTE1X2hhbmdjaGVja19pbmZvKHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAKPiAgCWludGVsX2VuZ2luZV9nZXRfaW5z dGRvbmUoZGV2X3ByaXYtPmVuZ2luZVtSQ1NdLCAmaW5zdGRvbmUpOwo+ICAKPiAtCWludGVsX3J1 bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1 dChkZXZfcHJpdiwgd2FrZXJlZik7Cj4gIAo+ICAJaWYgKHRpbWVyX3BlbmRpbmcoJmRldl9wcml2 LT5ncHVfZXJyb3IuaGFuZ2NoZWNrX3dvcmsudGltZXIpKQo+ICAJCXNlcV9wcmludGYobSwgIkhh bmdjaGVjayBhY3RpdmUsIHRpbWVyIGZpcmVzIGluICVkbXNcbiIsCj4gQEAgLTE1NjgsOSArMTU3 MiwxMCBAQCBzdGF0aWMgaW50IGdlbjZfZHJwY19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSkKPiAg c3RhdGljIGludCBpOTE1X2RycGNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNl ZCkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19p OTE1KG0tPnByaXZhdGUpOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAlpbnQgZXJy Owo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiArCXdha2VyZWYgPSBp bnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gIAo+ICAJaWYgKElTX1ZBTExFWVZJRVco ZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ICAJCWVyciA9IHZsdl9kcnBj X2luZm8obSk7Cj4gQEAgLTE1NzksNyArMTU4NCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kcnBjX2lu Zm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gIAllbHNlCj4gIAkJZXJyID0g aXJvbmxha2VfZHJwY19pbmZvKG0pOwo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hl Y2tlZChkZXZfcHJpdik7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJl Zik7Cj4gIAo+ICAJcmV0dXJuIGVycjsKPiAgfQo+IEBAIC0xNjAxLDExICsxNjA2LDEyIEBAIHN0 YXRpYyBpbnQgaTkxNV9mYmNfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2Vk KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5 MTUobS0+cHJpdmF0ZSk7Cj4gIAlzdHJ1Y3QgaW50ZWxfZmJjICpmYmMgPSAmZGV2X3ByaXYtPmZi YzsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAKPiAgCWlmICghSEFTX0ZCQyhkZXZf cHJpdikpCj4gIAkJcmV0dXJuIC1FTk9ERVY7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9nZXQo ZGV2X3ByaXYpOwo+ICsJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsK PiAgCW11dGV4X2xvY2soJmZiYy0+bG9jayk7Cj4gIAo+ICAJaWYgKGludGVsX2ZiY19pc19hY3Rp dmUoZGV2X3ByaXYpKQo+IEBAIC0xNjMyLDcgKzE2MzgsNyBAQCBzdGF0aWMgaW50IGk5MTVfZmJj X3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCX0KPiAgCj4gIAlt dXRleF91bmxvY2soJmZiYy0+bG9jayk7Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNr ZWQoZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYp Owo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gQEAgLTE2NzcsMTEgKzE2ODMsMTIgQEAgREVGSU5F X1NJTVBMRV9BVFRSSUJVVEUoaTkxNV9mYmNfZmFsc2VfY29sb3JfZm9wcywKPiAgc3RhdGljIGlu dCBpOTE1X2lwc19zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gIHsK PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5w cml2YXRlKTsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAKPiAgCWlmICghSEFTX0lQ UyhkZXZfcHJpdikpCj4gIAkJcmV0dXJuIC1FTk9ERVY7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9w bV9nZXQoZGV2X3ByaXYpOwo+ICsJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9w cml2KTsKPiAgCj4gIAlzZXFfcHJpbnRmKG0sICJFbmFibGVkIGJ5IGtlcm5lbCBwYXJhbWV0ZXI6 ICVzXG4iLAo+ICAJCSAgIHllc25vKGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9pcHMpKTsKPiBAQCAt MTY5NSw3ICsxNzAyLDcgQEAgc3RhdGljIGludCBpOTE1X2lwc19zdGF0dXMoc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICp1bnVzZWQpCj4gIAkJCXNlcV9wdXRzKG0sICJDdXJyZW50bHk6IGRpc2Fi bGVkXG4iKTsKPiAgCX0KPiAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2 X3ByaXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwo+ICAK PiAgCXJldHVybiAwOwo+ICB9Cj4gQEAgLTE3MDMsOSArMTcxMCwxMCBAQCBzdGF0aWMgaW50IGk5 MTVfaXBzX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgc3RhdGlj IGludCBpOTE1X3NyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAg ewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0t PnByaXZhdGUpOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAlib29sIHNyX2VuYWJs ZWQgPSBmYWxzZTsKPiAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gKwl3 YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICAJaW50ZWxfZGlzcGxh eV9wb3dlcl9nZXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9JTklUKTsKPiAgCj4gIAlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA5KQo+IEBAIC0xNzIzLDcgKzE3MzEsNyBAQCBzdGF0aWMgaW50 IGk5MTVfc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJCXNy X2VuYWJsZWQgPSBJOTE1X1JFQUQoRldfQkxDX1NFTEZfVkxWKSAmIEZXX0NTUFdSRFdORU47Cj4g IAo+ICAJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9JTklU KTsKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4gKwlpbnRl bF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7Cj4gIAo+ICAJc2VxX3ByaW50Ziht LCAic2VsZi1yZWZyZXNoOiAlc1xuIiwgZW5hYmxlZGRpc2FibGVkKHNyX2VuYWJsZWQpKTsKPiAg Cj4gQEAgLTE3MzUsMjkgKzE3NDMsMzAgQEAgc3RhdGljIGludCBpOTE1X2Vtb25fc3RhdHVzKHN0 cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwo+ICAJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOwo+ICAJdW5zaWduZWQgbG9uZyB0ZW1wLCBjaGlw c2V0LCBnZng7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCWludCByZXQ7Cj4gIAo+ ICAJaWYgKCFJU19HRU4oZGV2X3ByaXYsIDUpKQo+ICAJCXJldHVybiAtRU5PREVWOwo+ICAKPiAt CWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAtCj4gIAlyZXQgPSBtdXRleF9sb2Nr X2ludGVycnVwdGlibGUoJmRldi0+c3RydWN0X211dGV4KTsKPiAgCWlmIChyZXQpCj4gIAkJcmV0 dXJuIHJldDsKPiAgCj4gKwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYp Owo+ICsKPiAgCXRlbXAgPSBpOTE1X21jaF92YWwoZGV2X3ByaXYpOwo+ICAJY2hpcHNldCA9IGk5 MTVfY2hpcHNldF92YWwoZGV2X3ByaXYpOwo+ICAJZ2Z4ID0gaTkxNV9nZnhfdmFsKGRldl9wcml2 KTsKPiAgCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAKPiArCWludGVsX3J1 bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsKPiArCgpJIGFtIGEgbGl0dGxlIHN1cnBy aXNlZCBpZiB0aGlzIHdhcyB0aGUgb25seSBjYWxsc2l0ZQpmb3IgdGlnaHRlciBzY29waW5nIGlu IHRoaXMgZmlsZS4KCk5pdHBpY2sgZm9yIHN5bW1ldHJ5OiByZWxlYXNpbmcgdGhlIG11dGV4IHNo b3VsZCBoYXZlIGJlZW4gZG9uZQphZnRlci4KClJldmlld2VkLWJ5OiBNaWthIEt1b3BwYWxhIDxt aWthLmt1b3BwYWxhQGxpbnV4LmludGVsLmNvbT4KCj4gIAlzZXFfcHJpbnRmKG0sICJHTUNIIHRl bXA6ICVsZFxuIiwgdGVtcCk7Cj4gIAlzZXFfcHJpbnRmKG0sICJDaGlwc2V0IHBvd2VyOiAlbGRc biIsIGNoaXBzZXQpOwo+ICAJc2VxX3ByaW50ZihtLCAiR0ZYIHBvd2VyOiAlbGRcbiIsIGdmeCk7 Cj4gIAlzZXFfcHJpbnRmKG0sICJUb3RhbCBwb3dlcjogJWxkXG4iLCBjaGlwc2V0ICsgZ2Z4KTsK PiAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYpOwo+IC0KPiAg CXJldHVybiAwOwo+ICB9Cj4gIAo+IEBAIC0xNzY2LDEzICsxNzc1LDE0IEBAIHN0YXRpYyBpbnQg aTkxNV9yaW5nX2ZyZXFfdGFibGUoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJp dmF0ZSk7Cj4gIAlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2X3ByaXYtPmd0X3BtLnJwczsK PiAgCXVuc2lnbmVkIGludCBtYXhfZ3B1X2ZyZXEsIG1pbl9ncHVfZnJlcTsKPiArCWludGVsX3dh a2VyZWZfdCB3YWtlcmVmOwo+ICAJaW50IGdwdV9mcmVxLCBpYV9mcmVxOwo+ICAJaW50IHJldDsK PiAgCj4gIAlpZiAoIUhBU19MTEMoZGV2X3ByaXYpKQo+ICAJCXJldHVybiAtRU5PREVWOwo+ICAK PiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiArCXdha2VyZWYgPSBpbnRlbF9y dW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gIAo+ICAJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1 cHRpYmxlKCZkZXZfcHJpdi0+cGN1X2xvY2spOwo+ICAJaWYgKHJldCkKPiBAQCAtMTgwNSw3ICsx ODE1LDcgQEAgc3RhdGljIGludCBpOTE1X3JpbmdfZnJlcV90YWJsZShzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHZvaWQgKnVudXNlZCkKPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsK PiAgCj4gIG91dDoKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7 Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7Cj4gIAlyZXR1cm4g cmV0Owo+ICB9Cj4gIAo+IEBAIC0xOTc4LDggKzE5ODgsOSBAQCBzdGF0aWMgY29uc3QgY2hhciAq c3dpenpsZV9zdHJpbmcodW5zaWduZWQgc3dpenpsZSkKPiAgc3RhdGljIGludCBpOTE1X3N3aXp6 bGVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIHsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKPiAr CWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRl dl9wcml2KTsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4g IAo+ICAJc2VxX3ByaW50ZihtLCAiYml0NiBzd2l6emxlIGZvciBYLXRpbGluZyA9ICVzXG4iLAo+ ICAJCSAgIHN3aXp6bGVfc3RyaW5nKGRldl9wcml2LT5tbS5iaXRfNl9zd2l6emxlX3gpKTsKPiBA QCAtMjAxNyw3ICsyMDI4LDcgQEAgc3RhdGljIGludCBpOTE1X3N3aXp6bGVfaW5mbyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIAlpZiAoZGV2X3ByaXYtPnF1aXJrcyAmIFFVSVJL X1BJTl9TV0laWkxFRF9QQUdFUykKPiAgCQlzZXFfcHV0cyhtLCAiTC1zaGFwZWQgbWVtb3J5IGRl dGVjdGVkXG4iKTsKPiAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3By aXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwo+ICAKPiAg CXJldHVybiAwOwo+ICB9Cj4gQEAgLTIwNTQsOSArMjA2NSwxMSBAQCBzdGF0aWMgaW50IGk5MTVf cnBzX2Jvb3N0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOwo+ICAJc3RydWN0IGludGVsX3JwcyAq cnBzID0gJmRldl9wcml2LT5ndF9wbS5ycHM7Cj4gIAl1MzIgYWN0X2ZyZXEgPSBycHMtPmN1cl9m cmVxOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAlzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGU7Cj4gIAo+IC0JaWYgKGludGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShkZXZfcHJpdikp IHsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2UoZGV2X3ByaXYp Owo+ICsJaWYgKHdha2VyZWYpIHsKPiAgCQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwg SVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiAgCQkJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBj dV9sb2NrKTsKPiAgCQkJYWN0X2ZyZXEgPSB2bHZfcHVuaXRfcmVhZChkZXZfcHJpdiwKPiBAQCAt MjA2Nyw3ICsyMDgwLDcgQEAgc3RhdGljIGludCBpOTE1X3Jwc19ib29zdF9pbmZvKHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgCQkJYWN0X2ZyZXEgPSBpbnRlbF9nZXRfY2FnZihk ZXZfcHJpdiwKPiAgCQkJCQkJICBJOTE1X1JFQUQoR0VONl9SUFNUQVQxKSk7Cj4gIAkJfQo+IC0J CWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4gKwkJaW50ZWxfcnVu dGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwo+ICAJfQo+ICAKPiAgCXNlcV9wcmludGYo bSwgIlJQUyBlbmFibGVkPyAlZFxuIiwgcnBzLT5lbmFibGVkKTsKPiBAQCAtMjE1MCw2ICsyMTYz LDcgQEAgc3RhdGljIGludCBpOTE1X2xsYyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEp Cj4gIHN0YXRpYyBpbnQgaTkxNV9odWNfbG9hZF9zdGF0dXNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHZvaWQgKmRhdGEpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVm Owo+ICAJc3RydWN0IGRybV9wcmludGVyIHA7Cj4gIAo+ICAJaWYgKCFIQVNfSFVDKGRldl9wcml2 KSkKPiBAQCAtMjE1OCw5ICsyMTcyLDkgQEAgc3RhdGljIGludCBpOTE1X2h1Y19sb2FkX3N0YXR1 c19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgCXAgPSBkcm1fc2VxX2Zp bGVfcHJpbnRlcihtKTsKPiAgCWludGVsX3VjX2Z3X2R1bXAoJmRldl9wcml2LT5odWMuZncsICZw KTsKPiAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gKwl3YWtlcmVmID0g aW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICAJc2VxX3ByaW50ZihtLCAiXG5IdUMg c3RhdHVzIDB4JTA4eDpcbiIsIEk5MTVfUkVBRChIVUNfU1RBVFVTMikpOwo+IC0JaW50ZWxfcnVu dGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0 KGRldl9wcml2LCB3YWtlcmVmKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC0yMTY4LDYg KzIxODIsNyBAQCBzdGF0aWMgaW50IGk5MTVfaHVjX2xvYWRfc3RhdHVzX2luZm8oc3RydWN0IHNl cV9maWxlICptLCB2b2lkICpkYXRhKQo+ICBzdGF0aWMgaW50IGk5MTVfZ3VjX2xvYWRfc3RhdHVz X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7Cj4gKwlp bnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCXN0cnVjdCBkcm1fcHJpbnRlciBwOwo+ICAJdTMy IHRtcCwgaTsKPiAgCj4gQEAgLTIxNzcsNyArMjE5Miw3IEBAIHN0YXRpYyBpbnQgaTkxNV9ndWNf bG9hZF9zdGF0dXNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIAlwID0g ZHJtX3NlcV9maWxlX3ByaW50ZXIobSk7Cj4gIAlpbnRlbF91Y19md19kdW1wKCZkZXZfcHJpdi0+ Z3VjLmZ3LCAmcCk7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICsJ d2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAgCj4gIAl0bXAgPSBJ OTE1X1JFQUQoR1VDX1NUQVRVUyk7Cj4gIAo+IEBAIC0yMTkyLDcgKzIyMDcsNyBAQCBzdGF0aWMg aW50IGk5MTVfZ3VjX2xvYWRfc3RhdHVzX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpk YXRhKQo+ICAJZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCj4gIAkJc2VxX3ByaW50ZihtLCAiXHQl MmQ6IFx0MHgleFxuIiwgaSwgSTkxNV9SRUFEKFNPRlRfU0NSQVRDSChpKSkpOwo+ICAKPiAtCWlu dGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4gKwlpbnRlbF9ydW50aW1l X3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAt MjU1MCw2ICsyNTY1LDcgQEAgcHNyX3NvdXJjZV9zdGF0dXMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCj4gIHN0YXRpYyBpbnQgaTkxNV9lZHBf cHNyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIHsKPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsK PiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJdTMyIHBzcnBlcmYgPSAwOwo+ICAJYm9v bCBlbmFibGVkID0gZmFsc2U7Cj4gIAlib29sIHNpbmtfc3VwcG9ydDsKPiBAQCAtMjU2Miw3ICsy NTc4LDcgQEAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAq bSwgdm9pZCAqZGF0YSkKPiAgCWlmICghc2lua19zdXBwb3J0KQo+ICAJCXJldHVybiAwOwo+ICAK PiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiArCXdha2VyZWYgPSBpbnRlbF9y dW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gIAo+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBz ci5sb2NrKTsKPiAgCXNlcV9wcmludGYobSwgIlBTUiBtb2RlOiAlc1xuIiwKPiBAQCAtMjYwMSw3 ICsyNjE3LDcgQEAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmls ZSAqbSwgdm9pZCAqZGF0YSkKPiAgCQkJICAgZGV2X3ByaXYtPnBzci5sYXN0X2V4aXQpOwo+ICAJ fQo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4gKwlp bnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7Cj4gIAlyZXR1cm4gMDsKPiAg fQo+ICAKPiBAQCAtMjYxMCw2ICsyNjI2LDcgQEAgaTkxNV9lZHBfcHNyX2RlYnVnX3NldCh2b2lk ICpkYXRhLCB1NjQgdmFsKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkYXRhOwo+ICAJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsKPiArCWlu dGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJaW50IHJldDsKPiAgCj4gIAlpZiAoIUNBTl9QU1Io ZGV2X3ByaXYpKQo+IEBAIC0yNjE3LDcgKzI2MzQsNyBAQCBpOTE1X2VkcF9wc3JfZGVidWdfc2V0 KHZvaWQgKmRhdGEsIHU2NCB2YWwpCj4gIAo+ICAJRFJNX0RFQlVHX0tNUygiU2V0dGluZyBQU1Ig ZGVidWcgdG8gJWxseFxuIiwgdmFsKTsKPiAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZf cHJpdik7Cj4gKwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICAK PiAgCWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCBEUk1fTU9ERVNFVF9BQ1FVSVJFX0lO VEVSUlVQVElCTEUpOwo+ICAKPiBAQCAtMjYzMiw3ICsyNjQ5LDcgQEAgaTkxNV9lZHBfcHNyX2Rl YnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQo+ICAJZHJtX21vZGVzZXRfZHJvcF9sb2Nrcygm Y3R4KTsKPiAgCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKPiAgCj4gLQlpbnRlbF9y dW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9w dXQoZGV2X3ByaXYsIHdha2VyZWYpOwo+ICAKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiBAQCAtMjY1 NywxNSArMjY3NCwxNiBAQCBzdGF0aWMgaW50IGk5MTVfZW5lcmd5X3VKKHN0cnVjdCBzZXFfZmls ZSAqbSwgdm9pZCAqZGF0YSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwo+ICAJdW5zaWduZWQgbG9uZyBsb25nIHBv d2VyOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAl1MzIgdW5pdHM7Cj4gIAo+ICAJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA2KQo+ICAJCXJldHVybiAtRU5PREVWOwo+ICAKPiAt CWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50 aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gIAo+ICAJaWYgKHJkbXNybF9zYWZlKE1TUl9SQVBMX1BP V0VSX1VOSVQsICZwb3dlcikpIHsKPiAtCQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQo ZGV2X3ByaXYpOwo+ICsJCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsK PiAgCQlyZXR1cm4gLUVOT0RFVjsKPiAgCX0KPiAgCj4gQEAgLTI2NzMsNyArMjY5MSw3IEBAIHN0 YXRpYyBpbnQgaTkxNV9lbmVyZ3lfdUooc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ ICAJcG93ZXIgPSBJOTE1X1JFQUQoTUNIX1NFQ1BfTlJHX1NUVFMpOwo+ICAJcG93ZXIgPSAoMTAw MDAwMCAqIHBvd2VyKSA+PiB1bml0czsgLyogY29udmVydCB0byB1SiAqLwo+ICAKPiAtCWludGVs X3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4gKwlpbnRlbF9ydW50aW1lX3Bt X3B1dChkZXZfcHJpdiwgd2FrZXJlZik7Cj4gIAo+ICAJc2VxX3ByaW50ZihtLCAiJWxsdSIsIHBv d2VyKTsKPiAgCj4gQEAgLTI3NDIsNiArMjc2MCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9wb3dlcl9k b21haW5faW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgc3RhdGljIGlu dCBpOTE1X2RtY19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICB7Cj4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJp dmF0ZSk7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCXN0cnVjdCBpbnRlbF9jc3Ig KmNzcjsKPiAgCj4gIAlpZiAoIUhBU19DU1IoZGV2X3ByaXYpKQo+IEBAIC0yNzQ5LDcgKzI3Njgs NyBAQCBzdGF0aWMgaW50IGk5MTVfZG1jX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1 bnVzZWQpCj4gIAo+ICAJY3NyID0gJmRldl9wcml2LT5jc3I7Cj4gIAo+IC0JaW50ZWxfcnVudGlt ZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICsJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRl dl9wcml2KTsKPiAgCj4gIAlzZXFfcHJpbnRmKG0sICJmdyBsb2FkZWQ6ICVzXG4iLCB5ZXNubyhj c3ItPmRtY19wYXlsb2FkICE9IE5VTEwpKTsKPiAgCXNlcV9wcmludGYobSwgInBhdGg6ICVzXG4i LCBjc3ItPmZ3X3BhdGgpOwo+IEBAIC0yNzc1LDcgKzI3OTQsNyBAQCBzdGF0aWMgaW50IGk5MTVf ZG1jX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gIAlzZXFfcHJpbnRm KG0sICJzc3AgYmFzZTogMHglMDh4XG4iLCBJOTE1X1JFQUQoQ1NSX1NTUF9CQVNFKSk7Cj4gIAlz ZXFfcHJpbnRmKG0sICJodHA6IDB4JTA4eFxuIiwgSTkxNV9SRUFEKENTUl9IVFBfU0tMKSk7Cj4g IAo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKPiArCWludGVs X3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAg fQo+IEBAIC0zMDY1LDggKzMwODQsMTAgQEAgc3RhdGljIGludCBpOTE1X2Rpc3BsYXlfaW5mbyhz dHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjOwo+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiAgCXN0cnVjdCBkcm1f Y29ubmVjdG9yX2xpc3RfaXRlciBjb25uX2l0ZXI7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJl ZjsKPiArCj4gKwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICAK PiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAgCXNlcV9wcmludGYobSwgIkNS VEMgaW5mb1xuIik7Cj4gIAlzZXFfcHJpbnRmKG0sICItLS0tLS0tLS1cbiIpOwo+ICAJZm9yX2Vh Y2hfaW50ZWxfY3J0YyhkZXYsIGNydGMpIHsKPiBAQCAtMzExNCw3ICszMTM1LDcgQEAgc3RhdGlj IGludCBpOTE1X2Rpc3BsYXlfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkK PiAgCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2VuZCgmY29ubl9pdGVyKTsKPiAgCW11dGV4X3Vu bG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9w dXRfdW5jaGVja2VkKGRldl9wcml2KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2 LCB3YWtlcmVmKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC0zMTIzLDEwICszMTQ0LDEx IEBAIHN0YXRpYyBpbnQgaTkxNV9lbmdpbmVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQg KnVudXNlZCkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9k ZV90b19pOTE1KG0tPnByaXZhdGUpOwo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l Owo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAllbnVtIGludGVsX2VuZ2luZV9pZCBp ZDsKPiAgCXN0cnVjdCBkcm1fcHJpbnRlciBwOwo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0 KGRldl9wcml2KTsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7 Cj4gIAo+ICAJc2VxX3ByaW50ZihtLCAiR1QgYXdha2U/ICVzIChlcG9jaCAldSlcbiIsCj4gIAkJ ICAgeWVzbm8oZGV2X3ByaXYtPmd0LmF3YWtlKSwgZGV2X3ByaXYtPmd0LmVwb2NoKTsKPiBAQCAt MzEzOSw3ICszMTYxLDcgQEAgc3RhdGljIGludCBpOTE1X2VuZ2luZV9pbmZvKHN0cnVjdCBzZXFf ZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3By aXYsIGlkKQo+ICAJCWludGVsX2VuZ2luZV9kdW1wKGVuZ2luZSwgJnAsICIlc1xuIiwgZW5naW5l LT5uYW1lKTsKPiAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYp Owo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwo+ICAKPiAgCXJl dHVybiAwOwo+ICB9Cj4gQEAgLTMyNTIsNiArMzI3NCw3IEBAIHN0YXRpYyBzc2l6ZV90IGk5MTVf aXBjX3N0YXR1c193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVi dWYsCj4gIHsKPiAgCXN0cnVjdCBzZXFfZmlsZSAqbSA9IGZpbGUtPnByaXZhdGVfZGF0YTsKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG0tPnByaXZhdGU7Cj4gKwlpbnRl bF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCWludCByZXQ7Cj4gIAlib29sIGVuYWJsZTsKPiAgCj4g QEAgLTMyNTksMTMgKzMyODIsMTUgQEAgc3RhdGljIHNzaXplX3QgaTkxNV9pcGNfc3RhdHVzX3dy aXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZiwKPiAgCWlmIChy ZXQgPCAwKQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2 X3ByaXYpOwo+ICsJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAr Cj4gIAlpZiAoIWRldl9wcml2LT5pcGNfZW5hYmxlZCAmJiBlbmFibGUpCj4gIAkJRFJNX0lORk8o IkVuYWJsaW5nIElQQzogV00gd2lsbCBiZSBwcm9wZXIgb25seSBhZnRlciBuZXh0IGNvbW1pdFxu Iik7Cj4gIAlkZXZfcHJpdi0+d20uZGlzdHJ1c3RfYmlvc193bSA9IHRydWU7Cj4gIAlkZXZfcHJp di0+aXBjX2VuYWJsZWQgPSBlbmFibGU7Cj4gIAlpbnRlbF9lbmFibGVfaXBjKGRldl9wcml2KTsK PiAtCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4gKwo+ICsJaW50 ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwo+ICAKPiAgCXJldHVybiBsZW47 Cj4gIH0KPiBAQCAtNDAzMSwxMSArNDA1NiwxMiBAQCBzdGF0aWMgaW50Cj4gIGk5MTVfZHJvcF9j YWNoZXNfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1ID0gZGF0YTsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJaW50 IHJldCA9IDA7Cj4gIAo+ICAJRFJNX0RFQlVHKCJEcm9wcGluZyBjYWNoZXM6IDB4JTA4bGx4IFsw eCUwOGxseF1cbiIsCj4gIAkJICB2YWwsIHZhbCAmIERST1BfQUxMKTsKPiAtCWludGVsX3J1bnRp bWVfcG1fZ2V0KGk5MTUpOwo+ICsJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUp Owo+ICAKPiAgCWlmICh2YWwgJiBEUk9QX1JFU0VUX0FDVElWRSAmJiAhaW50ZWxfZW5naW5lc19h cmVfaWRsZShpOTE1KSkKPiAgCQlpOTE1X2dlbV9zZXRfd2VkZ2VkKGk5MTUpOwo+IEBAIC00MDkw LDcgKzQxMTYsNyBAQCBpOTE1X2Ryb3BfY2FjaGVzX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQo+ ICAJCWk5MTVfZ2VtX2RyYWluX2ZyZWVkX29iamVjdHMoaTkxNSk7Cj4gIAo+ICBvdXQ6Cj4gLQlp bnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gKwlpbnRlbF9ydW50aW1lX3Bt X3B1dChpOTE1LCB3YWtlcmVmKTsKPiAgCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTQxMDMs MTYgKzQxMjksMTcgQEAgc3RhdGljIGludAo+ICBpOTE1X2NhY2hlX3NoYXJpbmdfZ2V0KHZvaWQg KmRhdGEsIHU2NCAqdmFsKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkYXRhOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAl1MzIgc25wY3I7Cj4g IAo+ICAJaWYgKCEoSVNfR0VOX1JBTkdFKGRldl9wcml2LCA2LCA3KSkpCj4gIAkJcmV0dXJuIC1F Tk9ERVY7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICsJd2FrZXJl ZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAgCj4gIAlzbnBjciA9IEk5MTVf UkVBRChHRU42X01CQ1VOSVRfU05QQ1IpOwo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0X3Vu Y2hlY2tlZChkZXZfcHJpdik7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2Fr ZXJlZik7Cj4gIAo+ICAJKnZhbCA9IChzbnBjciAmIEdFTjZfTUJDX1NOUENSX01BU0spID4+IEdF TjZfTUJDX1NOUENSX1NISUZUOwo+ICAKPiBAQCAtNDEyMyw2ICs0MTUwLDcgQEAgc3RhdGljIGlu dAo+ICBpOTE1X2NhY2hlX3NoYXJpbmdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCj4gIHsKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRhdGE7Cj4gKwlpbnRlbF93YWtl cmVmX3Qgd2FrZXJlZjsKPiAgCXUzMiBzbnBjcjsKPiAgCj4gIAlpZiAoIShJU19HRU5fUkFOR0Uo ZGV2X3ByaXYsIDYsIDcpKSkKPiBAQCAtNDEzMSw3ICs0MTU5LDcgQEAgaTkxNV9jYWNoZV9zaGFy aW5nX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQo+ICAJaWYgKHZhbCA+IDMpCj4gIAkJcmV0dXJu IC1FSU5WQUw7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICsJd2Fr ZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAgCURSTV9ERUJVR19EUklW RVIoIk1hbnVhbGx5IHNldHRpbmcgdW5jb3JlIHNoYXJpbmcgdG8gJWxsdVxuIiwgdmFsKTsKPiAg Cj4gIAkvKiBVcGRhdGUgdGhlIGNhY2hlIHNoYXJpbmcgcG9saWN5IGhlcmUgYXMgd2VsbCAqLwo+ IEBAIC00MTQwLDcgKzQxNjgsNyBAQCBpOTE1X2NhY2hlX3NoYXJpbmdfc2V0KHZvaWQgKmRhdGEs IHU2NCB2YWwpCj4gIAlzbnBjciB8PSAodmFsIDw8IEdFTjZfTUJDX1NOUENSX1NISUZUKTsKPiAg CUk5MTVfV1JJVEUoR0VONl9NQkNVTklUX1NOUENSLCBzbnBjcik7Cj4gIAo+IC0JaW50ZWxfcnVu dGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0 KGRldl9wcml2LCB3YWtlcmVmKTsKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IEBAIC00MzYyLDYg KzQzOTAsNyBAQCBzdGF0aWMgaW50IGk5MTVfc3NldV9zdGF0dXMoc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICp1bnVzZWQpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKPiAgCXN0cnVjdCBzc2V1X2Rldl9pbmZvIHNz ZXU7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCj4gIAlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA8IDgpCj4gIAkJcmV0dXJuIC1FTk9ERVY7Cj4gQEAgLTQzNzYsNyArNDQwNSw3IEBA IHN0YXRpYyBpbnQgaTkxNV9zc2V1X3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVu dXNlZCkKPiAgCXNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2UgPQo+ICAJCVJVTlRJTUVfSU5GTyhk ZXZfcHJpdiktPnNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2U7Cj4gIAo+IC0JaW50ZWxfcnVudGlt ZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICsJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRl dl9wcml2KTsKPiAgCj4gIAlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiAgCQljaGVy cnl2aWV3X3NzZXVfZGV2aWNlX3N0YXR1cyhkZXZfcHJpdiwgJnNzZXUpOwo+IEBAIC00Mzg4LDcg KzQ0MTcsNyBAQCBzdGF0aWMgaW50IGk5MTVfc3NldV9zdGF0dXMoc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICp1bnVzZWQpCj4gIAkJZ2VuMTBfc3NldV9kZXZpY2Vfc3RhdHVzKGRldl9wcml2LCAm c3NldSk7Cj4gIAl9Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9w cml2KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsKPiAgCj4g IAlpOTE1X3ByaW50X3NzZXVfaW5mbyhtLCBmYWxzZSwgJnNzZXUpOwo+ICAKPiAtLSAKPiAyLjIw LjEKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK