From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Pandiyan, Dhinakaran" Subject: Re: [PATCH] drm/i915: Allow control of PSR at runtime through debugfs. Date: Thu, 22 Mar 2018 01:45:12 +0000 Message-ID: <1521684564.19788.53.camel@dk-H97M-D3H> References: <20180314215315.GW3945@intel.com> <20180315102827.30946-1-maarten.lankhorst@linux.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 ESMTPS id 1E1866E10B for ; Thu, 22 Mar 2018 01:45:14 +0000 (UTC) In-Reply-To: <20180315102827.30946-1-maarten.lankhorst@linux.intel.com> Content-Language: en-US Content-ID: <91F2034FE468C844AE5804D2362932BB@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "maarten.lankhorst@linux.intel.com" Cc: "intel-gfx@lists.freedesktop.org" , "Vivi, Rodrigo" List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyMDE4LTAzLTE1IGF0IDExOjI4ICswMTAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90 ZToNCj4gQ3VycmVudGx5IHRlc3RzIG1vZGlmeSBpOTE1LmVuYWJsZV9wc3IgYW5kIHRoZW4gZG8g YSBtb2Rlc2V0IGN5Y2xlDQo+IHRvIGNoYW5nZSBQU1IuIFdlIGNhbiB3cml0ZSBhIHZhbHVlIHRv IGk5MTVfZWRwX3Bzcl9zdGF0dXMgdG8gZm9yY2UNCj4gYSBjZXJ0YWluIHZhbHVlIHdpdGhvdXQg YSBtb2Rlc2V0Lg0KPiANCj4gVG8gcmV0YWluIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB1c2Vy c3BhY2UsIHdlIGFsc28gc3RpbGwgYWxsb3cNCj4gdGhlIG92ZXJyaWRlIHRocm91Z2ggdGhlIG1v ZHVsZSBwYXJhbWV0ZXIsIGFuZCBhZGQgc29tZSB0cmFja2luZw0KPiB0byBjaGVjayB3aGV0aGVy IGEgZGVidWdmcyBtb2RlIGlzIHNwZWNpZmllZC4NCj4gDQoNCldoaWxlIHRoaXMgaXMgc29tZXRo aW5nIHdlIHdhbnQgdG8gYmUgYWJsZSB0byBkbywgSSBhbSBjb25jZXJuZWQgYWJvdXQNCmFkZGlu ZyBtb3JlIGNvbXBsZXhpdHkgdG8gYSBmZWF0dXJlIHRoYXQgaGFzIGJhcmVseSBiZWVuIHRlc3Rl ZC4NCg0KSG93IGFib3V0IGRvaW5nIGEgbW9kZXNldCBiZWZvcmUgZnJvbnRidWZmZXJfdHJhY2tp bmcgUFNSIHN1YnRlc3RzIGFuZA0Kb25lIGF0IHRoZSBlbmQ/IEknbSBhc3N1bWluZyBhbGwgb2Yg dGhlbSBhcmUgZ3JvdXBlZCB0b2dldGhlci4NCg0KQ29tbWVudHMgb24gdGhpcyBwYXRjaCBpdHNl bGYuDQoxKSBwbGVhc2Ugc3BsaXQgaW50ZWxfcHNyX2RlZmF1bHRfbGlua19zdGFuZGJ5KCkgaW50 byBhIHNlcGFyYXRlIHBhdGNoLg0KMikgaG93IGRvZXMgdGhlIHVzZXIga25vdyB3aGF0IHZhbHVl cyB0byB3cml0ZSB3aXRob3V0IGxvb2tpbmcgYXQgdGhlDQpjb2RlPw0KMykgQ2FuIHRoZSBjb25u ZWN0b3IgYW5kIGNydGMgYmUgc3RvcmVkIHNvbWV3aGVyZSB0byBhdm9pZCBsb29wcz8NCjQpIEhh cyB0aGlzIGJlZW4gdGVzdGVkIG9uIGFueSBwbGF0Zm9ybXMgd2l0aCBQU1I/DQo1KSBEbyBzdWJ0 ZXN0cyBuZWVkIGEgZmluZXIgY29udHJvbCBvZiBQU1IgaS5lLiwgcHNyX2V4aXQoKSBhbmQNCnBz cl9hY3RpdmF0ZSgpIGluc3RlYWQgb2YgZW5hYmxlIGFuZCBkaXNhYmxlDQoNCj4gQ2hhbmdlcyBz aW5jZSB2MToNCj4gLSBSZW5hbWUgZGV2X3ByaXYtPnBzci5lbmFibGVkIHRvIC5kcCwgYW5kIC5o d19jb25maWd1cmVkIHRvIC5lbmFibGVkLg0KPiAtIEZpeCBpOTE1X3Bzcl9kZWJ1Z2ZzX21vZGUg dG8gbWF0Y2ggdGhlIHdyaXRlcyB0byBkZWJ1Z2ZzLg0KPiAtIFJlbmFtZSBfX2k5MTVfZWRwX3Bz cl93cml0ZSB0byBpbnRlbF9wc3Jfc2V0X2RlYnVnZnNfbW9kZSwgc2ltcGxpZnkNCj4gICBpdCBh bmQgbW92ZSBpdCB0byBpbnRlbF9wc3IuYy4gVGhpcyBrZWVwcyBhbGwgaW50ZXJuYWxzIGluIGlu dGVsX3Bzci5jDQo+IC0gUGVyZm9ybSBhbiBpbnRlcnJ1cHRpYmxlIHdhaXQgZm9yIGh3IGNvbXBs ZXRpb24gb3V0c2lkZSBvZiB0aGUgcHNyDQo+ICAgbG9jaywgaW5zdGVhZCBvZiBiZWluZyBmb3Jj ZWQgdG8gdHJ5d2FpdCBhbmQgcmV0dXJuIC1FQlVTWS4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE1h YXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+DQo+IENj OiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+DQo+IC0tLQ0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgfCAgNzMgKysrKysrKysrLQ0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgfCAgMTEgKy0NCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oICAgIHwgICAzICsNCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3Bzci5jICAgIHwgMjYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQ0K PiAgNCBmaWxlcyBjaGFuZ2VkLCAyODEgaW5zZXJ0aW9ucygrKSwgNjggZGVsZXRpb25zKC0pDQo+ IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYw0KPiBpbmRleCA1NzRmY2YyMzQwMDcu Ljk4ZTE2OTYzNmY4NiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMNCj4g QEAgLTI1NDYsMTYgKzI1NDYsMTMgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnBzcjJfbGl2ZV9zdGF0 dXModTMyIHZhbCkNCj4gIA0KPiAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkNCj4gIHsNCj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7DQo+ICsJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbS0+cHJpdmF0ZTsNCj4gIAl1MzIgcHNycGVyZiA9 IDA7DQo+ICAJdTMyIHN0YXRbM107DQo+ICAJZW51bSBwaXBlIHBpcGU7DQo+ICAJYm9vbCBlbmFi bGVkID0gZmFsc2U7DQo+ICAJYm9vbCBzaW5rX3N1cHBvcnQ7DQo+ICANCj4gLQlpZiAoIUhBU19Q U1IoZGV2X3ByaXYpKQ0KPiAtCQlyZXR1cm4gLUVOT0RFVjsNCj4gLQ0KPiAgCXNpbmtfc3VwcG9y dCA9IGRldl9wcml2LT5wc3Iuc2lua19zdXBwb3J0Ow0KPiAgCXNlcV9wcmludGYobSwgIlNpbmtf U3VwcG9ydDogJXNcbiIsIHllc25vKHNpbmtfc3VwcG9ydCkpOw0KPiAgCWlmICghc2lua19zdXBw b3J0KQ0KPiBAQCAtMjU2NCw3ICsyNTYxLDcgQEAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3Rh dHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkNCj4gIAlpbnRlbF9ydW50aW1lX3Bt X2dldChkZXZfcHJpdik7DQo+ICANCj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2sp Ow0KPiAtCXNlcV9wcmludGYobSwgIkVuYWJsZWQ6ICVzXG4iLCB5ZXNubygoYm9vbClkZXZfcHJp di0+cHNyLmVuYWJsZWQpKTsNCj4gKwlzZXFfcHJpbnRmKG0sICJFbmFibGVkOiAlc1xuIiwgeWVz bm8oZGV2X3ByaXYtPnBzci5lbmFibGVkKSk7DQo+ICAJc2VxX3ByaW50ZihtLCAiQnVzeSBmcm9u dGJ1ZmZlciBiaXRzOiAweCUwM3hcbiIsDQo+ICAJCSAgIGRldl9wcml2LT5wc3IuYnVzeV9mcm9u dGJ1ZmZlcl9iaXRzKTsNCj4gIAlzZXFfcHJpbnRmKG0sICJSZS1lbmFibGUgd29yayBzY2hlZHVs ZWQ6ICVzXG4iLA0KPiBAQCAtMjYzMSw2ICsyNjI4LDcwIEBAIHN0YXRpYyBpbnQgaTkxNV9lZHBf cHNyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpDQo+ICAJcmV0dXJuIDA7 DQo+ICB9DQo+ICANCj4gK3N0YXRpYyBzc2l6ZV90IGk5MTVfZWRwX3Bzcl93cml0ZShzdHJ1Y3Qg ZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsDQo+ICsJCQkJICBzaXplX3QgbGVu LCBsb2ZmX3QgKm9mZnApDQo+ICt7DQo+ICsJc3RydWN0IHNlcV9maWxlICptID0gZmlsZS0+cHJp dmF0ZV9kYXRhOw0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG0tPnBy aXZhdGU7DQo+ICsJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsNCj4gKwlpbnQg cmV0LCB2YWw7DQo+ICsNCj4gKwlpZiAoIWRldl9wcml2LT5wc3Iuc2lua19zdXBwb3J0KQ0KPiAr CQlyZXR1cm4gLUVOT0RFVjsNCj4gKw0KPiArCXJldCA9IGtzdHJ0b2ludF9mcm9tX3VzZXIodWJ1 ZiwgbGVuLCAxMCwgJnZhbCk7DQo+ICsJaWYgKHJldCA8IDApIHsNCj4gKwkJYm9vbCBlbmFibGU7 DQo+ICsJCXJldCA9IGtzdHJ0b2Jvb2xfZnJvbV91c2VyKHVidWYsIGxlbiwgJmVuYWJsZSk7DQo+ ICsNCj4gKwkJaWYgKHJldCA8IDApDQo+ICsJCQlyZXR1cm4gcmV0Ow0KPiArDQo+ICsJCXZhbCA9 IGVuYWJsZTsNCj4gKwl9DQo+ICsNCj4gKwlpZiAodmFsIDwgLTEgfHwgdmFsID4gMykNCj4gKwkJ cmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKwlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7 DQo+ICsNCj4gKwlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgRFJNX01PREVTRVRfQUNR VUlSRV9JTlRFUlJVUFRJQkxFKTsNCj4gKw0KPiArcmV0cnk6DQo+ICsJcmV0ID0gaW50ZWxfcHNy X3NldF9kZWJ1Z2ZzX21vZGUoZGV2X3ByaXYsICZjdHgsIHZhbCk7DQo+ICsJaWYgKHJldCA9PSAt RUJVU1kpIHsNCj4gKwkJcmV0ID0gZHJtX21vZGVzZXRfYmFja29mZigmY3R4KTsNCj4gKwkJaWYg KCFyZXQpDQo+ICsJCQlnb3RvIHJldHJ5Ow0KPiArCX0NCj4gKw0KPiArCWRybV9tb2Rlc2V0X2Ry b3BfbG9ja3MoJmN0eCk7DQo+ICsJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOw0KPiAr DQo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOw0KPiArDQo+ICsJcmV0dXJuIHJl dCA/OiBsZW47DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX29wZW4oc3Ry dWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpDQo+ICt7DQo+ICsJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gaW5vZGUtPmlfcHJpdmF0ZTsNCj4gKw0KPiArCWlm ICghSEFTX1BTUihkZXZfcHJpdikpDQo+ICsJCXJldHVybiAtRU5PREVWOw0KPiArDQo+ICsJcmV0 dXJuIHNpbmdsZV9vcGVuKGZpbGUsIGk5MTVfZWRwX3Bzcl9zdGF0dXMsIGRldl9wcml2KTsNCj4g K30NCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaTkxNV9lZHBf cHNyX29wcyA9IHsNCj4gKwkub3duZXIgPSBUSElTX01PRFVMRSwNCj4gKwkub3BlbiA9IGk5MTVf ZWRwX3Bzcl9vcGVuLA0KPiArCS5yZWFkID0gc2VxX3JlYWQsDQo+ICsJLmxsc2VlayA9IHNlcV9s c2VlaywNCj4gKwkucmVsZWFzZSA9IHNpbmdsZV9yZWxlYXNlLA0KPiArCS53cml0ZSA9IGk5MTVf ZWRwX3Bzcl93cml0ZQ0KPiArfTsNCj4gKw0KPiAgc3RhdGljIGludCBpOTE1X3NpbmtfY3JjKHN0 cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkNCj4gIHsNCj4gIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7DQo+IEBAIC00NzM0 LDcgKzQ3OTUsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pbmZvX2xpc3QgaTkxNV9kZWJ1 Z2ZzX2xpc3RbXSA9IHsNCj4gIAl7Imk5MTVfc3dpenpsZV9pbmZvIiwgaTkxNV9zd2l6emxlX2lu Zm8sIDB9LA0KPiAgCXsiaTkxNV9wcGd0dF9pbmZvIiwgaTkxNV9wcGd0dF9pbmZvLCAwfSwNCj4g IAl7Imk5MTVfbGxjIiwgaTkxNV9sbGMsIDB9LA0KPiAtCXsiaTkxNV9lZHBfcHNyX3N0YXR1cyIs IGk5MTVfZWRwX3Bzcl9zdGF0dXMsIDB9LA0KPiAgCXsiaTkxNV9zaW5rX2NyY19lRFAxIiwgaTkx NV9zaW5rX2NyYywgMH0sDQo+ICAJeyJpOTE1X2VuZXJneV91SiIsIGk5MTVfZW5lcmd5X3VKLCAw fSwNCj4gIAl7Imk5MTVfcnVudGltZV9wbV9zdGF0dXMiLCBpOTE1X3J1bnRpbWVfcG1fc3RhdHVz LCAwfSwNCj4gQEAgLTQ3NjEsNiArNDgyMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9k ZWJ1Z2ZzX2ZpbGVzIHsNCj4gIAl7Imk5MTVfd2VkZ2VkIiwgJmk5MTVfd2VkZ2VkX2ZvcHN9LA0K PiAgCXsiaTkxNV9tYXhfZnJlcSIsICZpOTE1X21heF9mcmVxX2ZvcHN9LA0KPiAgCXsiaTkxNV9t aW5fZnJlcSIsICZpOTE1X21pbl9mcmVxX2ZvcHN9LA0KPiArCXsiaTkxNV9lZHBfcHNyX3N0YXR1 cyIsICZpOTE1X2VkcF9wc3Jfb3BzfSwNCj4gIAl7Imk5MTVfY2FjaGVfc2hhcmluZyIsICZpOTE1 X2NhY2hlX3NoYXJpbmdfZm9wc30sDQo+ICAJeyJpOTE1X3JpbmdfbWlzc2VkX2lycSIsICZpOTE1 X3JpbmdfbWlzc2VkX2lycV9mb3BzfSwNCj4gIAl7Imk5MTVfcmluZ190ZXN0X2lycSIsICZpOTE1 X3JpbmdfdGVzdF9pcnFfZm9wc30sDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0KPiBpbmRleCBi MzljNWY2OGVmYjIuLjkyNjJjZmI4YWFjMiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o DQo+IEBAIC01OTYsNyArNTk2LDggQEAgc3RydWN0IGk5MTVfZHJycyB7DQo+ICBzdHJ1Y3QgaTkx NV9wc3Igew0KPiAgCXN0cnVjdCBtdXRleCBsb2NrOw0KPiAgCWJvb2wgc2lua19zdXBwb3J0Ow0K PiAtCXN0cnVjdCBpbnRlbF9kcCAqZW5hYmxlZDsNCj4gKwlib29sIGVuYWJsZWQ7DQo+ICsJc3Ry dWN0IGludGVsX2RwICpkcDsNCj4gIAlib29sIGFjdGl2ZTsNCj4gIAlzdHJ1Y3QgZGVsYXllZF93 b3JrIHdvcms7DQo+ICAJdW5zaWduZWQgYnVzeV9mcm9udGJ1ZmZlcl9iaXRzOw0KPiBAQCAtNjA4 LDYgKzYwOSwxNCBAQCBzdHJ1Y3QgaTkxNV9wc3Igew0KPiAgCWJvb2wgYWxwbTsNCj4gIAlib29s IGhhc19od190cmFja2luZzsNCj4gIA0KPiArCWVudW0gaTkxNV9wc3JfZGVidWdmc19tb2RlIHsN Cj4gKwkJUFNSX0RFQlVHRlNfTU9ERV9ERUZBVUxUID0gLTEsDQo+ICsJCVBTUl9ERUJVR0ZTX01P REVfRElTQUJMRUQsDQo+ICsJCVBTUl9ERUJVR0ZTX01PREVfRU5BQkxFRCwNCj4gKwkJUFNSX0RF QlVHRlNfTU9ERV9FTkFCTEVEX0ZPUkNFX0xJTktfU1RBTkRCWSwNCj4gKwkJUFNSX0RFQlVHRlNf TU9ERV9FTkFCTEVEX05PX0xJTktfU1RBTkRCWQ0KPiArCX0gZGVidWdmc19tb2RlOw0KPiArDQo+ ICAJdm9pZCAoKmVuYWJsZV9zb3VyY2UpKHN0cnVjdCBpbnRlbF9kcCAqLA0KPiAgCQkJICAgICAg Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKik7DQo+ICAJdm9pZCAoKmRpc2FibGVfc291 cmNlKShzdHJ1Y3QgaW50ZWxfZHAgKiwNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgNCj4gaW5k ZXggMWYwZThmMWU0NTk0Li5hZjNjNTU3OGQyZWEgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oDQo+IEBAIC0xODc2LDYgKzE4NzYsOSBAQCB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwNCj4gIAkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpOw0KPiAgdm9pZCBpbnRlbF9wc3JfZGlzYWJsZShzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLA0KPiAgCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqb2xkX2NydGNfc3RhdGUpOw0KPiAraW50IGludGVsX3Bzcl9zZXRfZGVidWdmc19tb2Rl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4gKwkJCSAgICAgICBzdHJ1Y3Qg ZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggKmN0eCwNCj4gKwkJCSAgICAgICBlbnVtIGk5MTVfcHNy X2RlYnVnZnNfbW9kZSBtb2RlKTsNCj4gIHZvaWQgaW50ZWxfcHNyX2ludmFsaWRhdGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiAgCQkJICB1bnNpZ25lZCBmcm9udGJ1ZmZl cl9iaXRzLA0KPiAgCQkJICBlbnVtIGZiX29wX29yaWdpbiBvcmlnaW4pOw0KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wc3IuYw0KPiBpbmRleCAzMTdjYjRhMTI2OTMuLjNkYzBlZGE4ZWZlMCAxMDA2NDQN Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMNCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMNCj4gQEAgLTU2LDYgKzU2LDUyIEBADQo+ICAjaW5j bHVkZSAiaW50ZWxfZHJ2LmgiDQo+ICAjaW5jbHVkZSAiaTkxNV9kcnYuaCINCj4gIA0KPiArc3Rh dGljIGJvb2wgaW50ZWxfcHNyX2RlZmF1bHRfbGlua19zdGFuZGJ5KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikNCj4gK3sNCj4gKwkvKiBPdmVycmlkZSBsaW5rX3N0YW5kYnkgeCBs aW5rX29mZiBkZWZhdWx0cyAqLw0KPiArCWlmIChpOTE1X21vZHBhcmFtcy5lbmFibGVfcHNyID09 IDIpIHsNCj4gKwkJRFJNX0RFQlVHX0tNUygiUFNSOiBGb3JjaW5nIGxpbmsgc3RhbmRieVxuIik7 DQo+ICsJCXJldHVybiB0cnVlOw0KPiArCX0NCj4gKw0KPiArCWlmIChpOTE1X21vZHBhcmFtcy5l bmFibGVfcHNyID09IDMpIHsNCj4gKwkJRFJNX0RFQlVHX0tNUygiUFNSOiBGb3JjaW5nIG1haW4g bGluayBvZmZcbiIpOw0KPiArCQlyZXR1cm4gZmFsc2U7DQo+ICsJfQ0KPiArDQo+ICsJLyogU2V0 IGxpbmtfc3RhbmRieSB4IGxpbmtfb2ZmIGRlZmF1bHRzICovDQo+ICsJaWYgKElTX0hBU1dFTEwo ZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpDQo+ICsJCS8qIEhTVyBhbmQgQkRX IHJlcXVpcmUgd29ya2Fyb3VuZHMgdGhhdCB3ZSBkb24ndCBpbXBsZW1lbnQuICovDQo+ICsJCXJl dHVybiBmYWxzZTsNCj4gKwllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19D SEVSUllWSUVXKGRldl9wcml2KSkNCj4gKwkJLyogT24gVkxWIGFuZCBDSFYgb25seSBzdGFuZGJ5 IG1vZGUgaXMgc3VwcG9ydGVkLiAqLw0KPiArCQlyZXR1cm4gdHJ1ZTsNCj4gKwllbHNlDQo+ICsJ CS8qIEZvciBuZXcgcGxhdGZvcm1zIGxldCdzIHJlc3BlY3QgVkJUIGJhY2sgYWdhaW4gKi8NCj4g KwkJcmV0dXJuIGRldl9wcml2LT52YnQucHNyLmZ1bGxfbGluazsNCj4gK30NCj4gKw0KPiArc3Rh dGljIGJvb2wgZ2V0X2xpbmtfc3RhbmRieV9mb3JfbW9kZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsDQo+ICsJCQkJICAgICAgZW51bSBpOTE1X3Bzcl9kZWJ1Z2ZzX21vZGUgbW9k ZSkNCj4gK3sNCj4gKwlpZiAobW9kZSA9PSBQU1JfREVCVUdGU19NT0RFX0VOQUJMRURfRk9SQ0Vf TElOS19TVEFOREJZKQ0KPiArCQlyZXR1cm4gdHJ1ZTsNCj4gKwllbHNlIGlmIChtb2RlID09IFBT Ul9ERUJVR0ZTX01PREVfRU5BQkxFRF9OT19MSU5LX1NUQU5EQlkpDQo+ICsJCXJldHVybiBmYWxz ZTsNCj4gKwllbHNlDQo+ICsJCXJldHVybiBpbnRlbF9wc3JfZGVmYXVsdF9saW5rX3N0YW5kYnko ZGV2X3ByaXYpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgYm9vbCBwc3JfZ2xvYmFsX2VuYWJsZWQo ZW51bSBpOTE1X3Bzcl9kZWJ1Z2ZzX21vZGUgbW9kZSkNCj4gK3sNCj4gKwlpZiAobW9kZSA9PSBQ U1JfREVCVUdGU19NT0RFX0RFRkFVTFQpDQo+ICsJCXJldHVybiBpOTE1X21vZHBhcmFtcy5lbmFi bGVfcHNyOw0KPiArCWVsc2UgaWYgKG1vZGUgPT0gUFNSX0RFQlVHRlNfTU9ERV9ESVNBQkxFRCkN Cj4gKwkJcmV0dXJuIGZhbHNlOw0KPiArCWVsc2UNCj4gKwkJcmV0dXJuIHRydWU7DQo+ICt9DQo+ ICsNCj4gIHN0YXRpYyBpbmxpbmUgZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbg0KPiAg cHNyX2F1eF9kb21haW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gIHsNCj4gQEAgLTUw MiwxMSArNTQ4LDYgQEAgdm9pZCBpbnRlbF9wc3JfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCwNCj4gIAlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQ0KPiAgCQlyZXR1cm47 DQo+ICANCj4gLQlpZiAoIWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9wc3IpIHsNCj4gLQkJRFJNX0RF QlVHX0tNUygiUFNSIGRpc2FibGUgYnkgZmxhZ1xuIik7DQo+IC0JCXJldHVybjsNCj4gLQl9DQo+ IC0NCj4gIAkvKg0KPiAgCSAqIEhTVyBzcGVjIGV4cGxpY2l0bHkgc2F5cyBQU1IgaXMgdGllZCB0 byBwb3J0IEEuDQo+ICAJICogQkRXKyBwbGF0Zm9ybXMgd2l0aCBEREkgaW1wbGVtZW50YXRpb24g b2YgUFNSIGhhdmUgZGlmZmVyZW50DQo+IEBAIC01NTksNyArNjAwLDExIEBAIHZvaWQgaW50ZWxf cHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ICANCj4gIAlj cnRjX3N0YXRlLT5oYXNfcHNyID0gdHJ1ZTsNCj4gIAljcnRjX3N0YXRlLT5oYXNfcHNyMiA9IGlu dGVsX3BzcjJfY29uZmlnX3ZhbGlkKGludGVsX2RwLCBjcnRjX3N0YXRlKTsNCj4gLQlEUk1fREVC VUdfS01TKCJFbmFibGluZyBQU1Ilc1xuIiwgY3J0Y19zdGF0ZS0+aGFzX3BzcjIgPyAiMiIgOiAi Iik7DQo+ICsNCj4gKwlpZiAocHNyX2dsb2JhbF9lbmFibGVkKGRldl9wcml2LT5wc3IuZGVidWdm c19tb2RlKSkNCj4gKwkJRFJNX0RFQlVHX0tNUygiRW5hYmxpbmcgUFNSJXNcbiIsIGNydGNfc3Rh dGUtPmhhc19wc3IyID8gIjIiIDogIiIpOw0KPiArCWVsc2UNCj4gKwkJRFJNX0RFQlVHX0tNUygi UFNSIGRpc2FibGUgYnkgZmxhZ1xuIik7DQo+ICB9DQo+ICANCj4gIHN0YXRpYyB2b2lkIGludGVs X3Bzcl9hY3RpdmF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0KPiBAQCAtNjE3LDYgKzY2 MiwzOCBAQCBzdGF0aWMgdm9pZCBoc3dfcHNyX2VuYWJsZV9zb3VyY2Uoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCwNCj4gIAl9DQo+ICB9DQo+ICANCj4gK3N0YXRpYyB2b2lkIF9faW50ZWxfcHNy X2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ICsJCQkgICAgICAg Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpDQo+ICt7DQo+ICsJc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCA9IGRldl9wcml2LT5wc3IuZHA7DQo+ICsNCj4gKwlpZiAo ZGV2X3ByaXYtPnBzci5lbmFibGVkKQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwlkZXZfcHJpdi0+ cHNyLmVuYWJsZWQgPSB0cnVlOw0KPiArDQo+ICsJZGV2X3ByaXYtPnBzci5zZXR1cF92c2MoaW50 ZWxfZHAsIGNydGNfc3RhdGUpOw0KPiArCWRldl9wcml2LT5wc3IuZW5hYmxlX3NpbmsoaW50ZWxf ZHApOw0KPiArCWRldl9wcml2LT5wc3IuZW5hYmxlX3NvdXJjZShpbnRlbF9kcCwgY3J0Y19zdGF0 ZSk7DQo+ICsNCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7DQo+ICsJCWludGVs X3Bzcl9hY3RpdmF0ZShpbnRlbF9kcCk7DQo+ICsJfSBlbHNlIHsNCj4gKwkJLyoNCj4gKwkJICog RklYTUU6IEFjdGl2YXRpb24gc2hvdWxkIGhhcHBlbiBpbW1lZGlhdGVseSBzaW5jZSB0aGlzDQo+ ICsJCSAqIGZ1bmN0aW9uIGlzIGp1c3QgY2FsbGVkIGFmdGVyIHBpcGUgaXMgZnVsbHkgdHJhaW5l ZCBhbmQNCj4gKwkJICogZW5hYmxlZC4NCj4gKwkJICogSG93ZXZlciBvbiBzb21lIHBsYXRmb3Jt cyB3ZSBmYWNlIGlzc3VlcyB3aGVuIGZpcnN0DQo+ICsJCSAqIGFjdGl2YXRpb24gZm9sbG93cyBh IG1vZGVzZXQgc28gcXVpY2tseS4NCj4gKwkJICogICAgIC0gT24gVkxWL0NIViB3ZSBnZXQgYmFu ayBzY3JlZW4gb24gZmlyc3QgYWN0aXZhdGlvbg0KPiArCQkgKiAgICAgLSBPbiBIU1cvQkRXIHdl IGdldCBhIHJlY292ZXJhYmxlIGZyb3plbiBzY3JlZW4gdW50aWwNCj4gKwkJICogICAgICAgbmV4 dCBleGl0LWFjdGl2YXRlIHNlcXVlbmNlLg0KPiArCQkgKi8NCj4gKwkJc2NoZWR1bGVfZGVsYXll ZF93b3JrKCZkZXZfcHJpdi0+cHNyLndvcmssDQo+ICsJCQkJICAgICAgbXNlY3NfdG9famlmZmll cyhpbnRlbF9kcC0+cGFuZWxfcG93ZXJfY3ljbGVfZGVsYXkgKiA1KSk7DQo+ICsJfQ0KPiArfQ0K PiArDQo+ICAvKioNCj4gICAqIGludGVsX3Bzcl9lbmFibGUgLSBFbmFibGUgUFNSDQo+ICAgKiBA aW50ZWxfZHA6IEludGVsIERQDQo+IEBAIC02MzksNyArNzE2LDcgQEAgdm9pZCBpbnRlbF9wc3Jf ZW5hYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ICANCj4gIAlXQVJOX09OKGRldl9w cml2LT5kcnJzLmRwKTsNCj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOw0KPiAt CWlmIChkZXZfcHJpdi0+cHNyLmVuYWJsZWQpIHsNCj4gKwlpZiAoZGV2X3ByaXYtPnBzci5kcCkg ew0KPiAgCQlEUk1fREVCVUdfS01TKCJQU1IgYWxyZWFkeSBpbiB1c2VcbiIpOw0KPiAgCQlnb3Rv IHVubG9jazsNCj4gIAl9DQo+IEBAIC02NDcsMjcgKzcyNCwxMCBAQCB2b2lkIGludGVsX3Bzcl9l bmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwNCj4gIAlkZXZfcHJpdi0+cHNyLnBzcjJf c3VwcG9ydCA9IGNydGNfc3RhdGUtPmhhc19wc3IyOw0KPiAgCWRldl9wcml2LT5wc3IuYnVzeV9m cm9udGJ1ZmZlcl9iaXRzID0gMDsNCj4gIA0KPiAtCWRldl9wcml2LT5wc3Iuc2V0dXBfdnNjKGlu dGVsX2RwLCBjcnRjX3N0YXRlKTsNCj4gLQlkZXZfcHJpdi0+cHNyLmVuYWJsZV9zaW5rKGludGVs X2RwKTsNCj4gLQlkZXZfcHJpdi0+cHNyLmVuYWJsZV9zb3VyY2UoaW50ZWxfZHAsIGNydGNfc3Rh dGUpOw0KPiAtCWRldl9wcml2LT5wc3IuZW5hYmxlZCA9IGludGVsX2RwOw0KPiArCWRldl9wcml2 LT5wc3IuZHAgPSBpbnRlbF9kcDsNCj4gIA0KPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDkpIHsNCj4gLQkJaW50ZWxfcHNyX2FjdGl2YXRlKGludGVsX2RwKTsNCj4gLQl9IGVsc2Ugew0K PiAtCQkvKg0KPiAtCQkgKiBGSVhNRTogQWN0aXZhdGlvbiBzaG91bGQgaGFwcGVuIGltbWVkaWF0 ZWx5IHNpbmNlIHRoaXMNCj4gLQkJICogZnVuY3Rpb24gaXMganVzdCBjYWxsZWQgYWZ0ZXIgcGlw ZSBpcyBmdWxseSB0cmFpbmVkIGFuZA0KPiAtCQkgKiBlbmFibGVkLg0KPiAtCQkgKiBIb3dldmVy IG9uIHNvbWUgcGxhdGZvcm1zIHdlIGZhY2UgaXNzdWVzIHdoZW4gZmlyc3QNCj4gLQkJICogYWN0 aXZhdGlvbiBmb2xsb3dzIGEgbW9kZXNldCBzbyBxdWlja2x5Lg0KPiAtCQkgKiAgICAgLSBPbiBW TFYvQ0hWIHdlIGdldCBiYW5rIHNjcmVlbiBvbiBmaXJzdCBhY3RpdmF0aW9uDQo+IC0JCSAqICAg ICAtIE9uIEhTVy9CRFcgd2UgZ2V0IGEgcmVjb3ZlcmFibGUgZnJvemVuIHNjcmVlbiB1bnRpbA0K PiAtCQkgKiAgICAgICBuZXh0IGV4aXQtYWN0aXZhdGUgc2VxdWVuY2UuDQo+IC0JCSAqLw0KPiAt CQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmRldl9wcml2LT5wc3Iud29yaywNCj4gLQkJCQkgICAg ICBtc2Vjc190b19qaWZmaWVzKGludGVsX2RwLT5wYW5lbF9wb3dlcl9jeWNsZV9kZWxheSAqIDUp KTsNCj4gLQl9DQo+ICsJaWYgKHBzcl9nbG9iYWxfZW5hYmxlZChkZXZfcHJpdi0+cHNyLmRlYnVn ZnNfbW9kZSkpDQo+ICsJCV9faW50ZWxfcHNyX2VuYWJsZShkZXZfcHJpdiwgY3J0Y19zdGF0ZSk7 DQo+ICANCj4gIHVubG9jazoNCj4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7 DQo+IEBAIC03NTIsNiArODEyLDIxIEBAIHN0YXRpYyB2b2lkIGhzd19wc3JfZGlzYWJsZShzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLA0KPiAgCXBzcl9hdXhfaW9fcG93ZXJfcHV0KGludGVsX2Rw KTsNCj4gIH0NCj4gIA0KPiArc3RhdGljIHZvaWQgX19pbnRlbF9wc3JfZGlzYWJsZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ICsJCQkJY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQ0KPiArew0KPiArCXN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAgPSBkZXZfcHJpdi0+cHNyLmRwOw0KPiArDQo+ICsJaWYgKCFkZXZfcHJpdi0+cHNyLmVu YWJsZWQpDQo+ICsJCXJldHVybjsNCj4gKw0KPiArCWRldl9wcml2LT5wc3IuZGlzYWJsZV9zb3Vy Y2UoaW50ZWxfZHAsIG9sZF9jcnRjX3N0YXRlKTsNCj4gKw0KPiArCS8qIERpc2FibGUgUFNSIG9u IFNpbmsgKi8NCj4gKwlkcm1fZHBfZHBjZF93cml0ZWIoJmludGVsX2RwLT5hdXgsIERQX1BTUl9F Tl9DRkcsIDApOw0KPiArCWRldl9wcml2LT5wc3IuZW5hYmxlZCA9IGZhbHNlOw0KPiArfQ0KPiAr DQo+ICAvKioNCj4gICAqIGludGVsX3Bzcl9kaXNhYmxlIC0gRGlzYWJsZSBQU1INCj4gICAqIEBp bnRlbF9kcDogSW50ZWwgRFANCj4gQEAgLTc3MywyNyArODQ4LDExMCBAQCB2b2lkIGludGVsX3Bz cl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ICAJCXJldHVybjsNCj4gIA0K PiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+IC0JaWYgKCFkZXZfcHJpdi0+ cHNyLmVuYWJsZWQpIHsNCj4gKwlpZiAoaW50ZWxfZHAgIT0gZGV2X3ByaXYtPnBzci5kcCkgew0K PiAgCQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+ICAJCXJldHVybjsNCj4g IAl9DQo+ICANCj4gLQlkZXZfcHJpdi0+cHNyLmRpc2FibGVfc291cmNlKGludGVsX2RwLCBvbGRf Y3J0Y19zdGF0ZSk7DQo+IC0NCj4gLQkvKiBEaXNhYmxlIFBTUiBvbiBTaW5rICovDQo+IC0JZHJt X2RwX2RwY2Rfd3JpdGViKCZpbnRlbF9kcC0+YXV4LCBEUF9QU1JfRU5fQ0ZHLCAwKTsNCj4gKwlf X2ludGVsX3Bzcl9kaXNhYmxlKGRldl9wcml2LCBvbGRfY3J0Y19zdGF0ZSk7DQo+ICANCj4gLQlk ZXZfcHJpdi0+cHNyLmVuYWJsZWQgPSBOVUxMOw0KPiArCWRldl9wcml2LT5wc3IuZHAgPSBOVUxM Ow0KPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gIA0KPiAgCWNhbmNl bF9kZWxheWVkX3dvcmtfc3luYygmZGV2X3ByaXYtPnBzci53b3JrKTsNCj4gIH0NCj4gIA0KPiAr c3RhdGljIHN0cnVjdCBkcm1fY3J0YyAqDQo+ICtmaW5kX2lkbGVfY3J0Y19mb3JfZW5jb2Rlcihz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsDQo+ICsJCQkgICBzdHJ1Y3QgZHJtX21vZGVzZXRf YWNxdWlyZV9jdHggKmN0eCkNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9saXN0X2l0 ZXIgY29ubl9pdGVyOw0KPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5kZXY7 DQo+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsNCj4gKwlzdHJ1Y3QgZHJtX2Ny dGMgKmNydGM7DQo+ICsJYm9vbCBmb3VuZCA9IGZhbHNlOw0KPiArCWludCByZXQ7DQo+ICsNCj4g Kwlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9iZWdpbihkZXYsICZjb25uX2l0ZXIpOw0KPiArCWRy bV9mb3JfZWFjaF9jb25uZWN0b3JfaXRlcihjb25uZWN0b3IsICZjb25uX2l0ZXIpDQo+ICsJCWlm IChjb25uZWN0b3ItPnN0YXRlLT5iZXN0X2VuY29kZXIgPT0gZW5jb2Rlcikgew0KPiArCQkJZm91 bmQgPSB0cnVlOw0KPiArCQkJYnJlYWs7DQo+ICsJCX0NCj4gKwlkcm1fY29ubmVjdG9yX2xpc3Rf aXRlcl9lbmQoJmNvbm5faXRlcik7DQo+ICsNCj4gKwlpZiAoV0FSTl9PTighZm91bmQpKQ0KPiAr CQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsNCj4gKw0KPiArCWNydGMgPSBjb25uZWN0b3ItPnN0 YXRlLT5jcnRjOw0KPiArCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmNydGMtPm11dGV4LCBjdHgp Ow0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiBFUlJfUFRSKHJldCk7DQo+ICsNCj4gKwlpZiAo Y29ubmVjdG9yLT5zdGF0ZS0+Y29tbWl0KQ0KPiArCQlyZXQgPSB3YWl0X2Zvcl9jb21wbGV0aW9u X2ludGVycnVwdGlibGUoJmNvbm5lY3Rvci0+c3RhdGUtPmNvbW1pdC0+aHdfZG9uZSk7DQo+ICsJ aWYgKCFyZXQgJiYgY3J0Yy0+c3RhdGUtPmNvbW1pdCkNCj4gKwkJcmV0ID0gd2FpdF9mb3JfY29t cGxldGlvbl9pbnRlcnJ1cHRpYmxlKCZjcnRjLT5zdGF0ZS0+Y29tbWl0LT5od19kb25lKTsNCj4g KwlpZiAocmV0KQ0KPiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOw0KPiArDQo+ICsJcmV0dXJuIGNy dGM7DQo+ICt9DQo+ICsNCj4gK2ludCBpbnRlbF9wc3Jfc2V0X2RlYnVnZnNfbW9kZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ICsJCQkgICAgICAgc3RydWN0IGRybV9tb2Rl c2V0X2FjcXVpcmVfY3R4ICpjdHgsDQo+ICsJCQkgICAgICAgZW51bSBpOTE1X3Bzcl9kZWJ1Z2Zz X21vZGUgbW9kZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJmRldl9wcml2 LT5kcm07DQo+ICsJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOw0KPiArCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YzsNCj4gKwlpbnQgcmV0Ow0KPiArCWJvb2wgZW5hYmxlLCBsaW5rX3N0YW5kYnk7 DQo+ICsNCj4gKwlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5l Y3Rpb25fbXV0ZXgsIGN0eCk7DQo+ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0K PiArCWxpbmtfc3RhbmRieSA9IGdldF9saW5rX3N0YW5kYnlfZm9yX21vZGUoZGV2X3ByaXYsIG1v ZGUpOw0KPiArCWVuYWJsZSA9IHBzcl9nbG9iYWxfZW5hYmxlZChtb2RlKTsNCj4gKw0KPiArCW11 dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+ICsNCj4gKwlkbyB7DQo+ICsJCWlmICgh ZGV2X3ByaXYtPnBzci5kcCkgew0KPiArCQkJZGV2X3ByaXYtPnBzci5kZWJ1Z2ZzX21vZGUgPSBt b2RlOw0KPiArCQkJZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkgPSBsaW5rX3N0YW5kYnk7DQo+ ICsJCQlnb3RvIGVuZDsNCj4gKwkJfQ0KPiArCQllbmNvZGVyID0gJmRwX3RvX2RpZ19wb3J0KGRl dl9wcml2LT5wc3IuZHApLT5iYXNlLmJhc2U7DQo+ICsJCW11dGV4X3VubG9jaygmZGV2X3ByaXYt PnBzci5sb2NrKTsNCj4gKw0KPiArCQljcnRjID0gZmluZF9pZGxlX2NydGNfZm9yX2VuY29kZXIo ZW5jb2RlciwgY3R4KTsNCj4gKwkJaWYgKElTX0VSUihjcnRjKSkNCj4gKwkJCXJldHVybiBQVFJf RVJSKGNydGMpOw0KPiArDQo+ICsJCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+ ICsJfSB3aGlsZSAoZGV2X3ByaXYtPnBzci5kcCAhPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcikp Ow0KPiArDQo+ICsJaWYgKCFlbmFibGUgfHwgZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkgIT0g bGlua19zdGFuZGJ5KQ0KPiArCQlfX2ludGVsX3Bzcl9kaXNhYmxlKGRldl9wcml2LCB0b19pbnRl bF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKSk7DQo+ICsNCj4gKwlkZXZfcHJpdi0+cHNyLmRlYnVn ZnNfbW9kZSA9IG1vZGU7DQo+ICsJZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkgPSBsaW5rX3N0 YW5kYnk7DQo+ICsNCj4gKwlpZiAoZW5hYmxlKQ0KPiArCQlfX2ludGVsX3Bzcl9lbmFibGUoZGV2 X3ByaXYsIHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpKTsNCj4gKw0KPiArZW5kOg0K PiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gKwlyZXR1cm4gcmV0Ow0K PiArfQ0KPiArDQo+ICBzdGF0aWMgdm9pZCBpbnRlbF9wc3Jfd29yayhzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspDQo+ICB7DQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0N Cj4gIAkJY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqZGV2X3ByaXYpLCBwc3Iud29yay53b3Jr KTsNCj4gLQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZGV2X3ByaXYtPnBzci5lbmFibGVk Ow0KPiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBkZXZfcHJpdi0+cHNyLmRwOw0KPiAg CXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZS5i YXNlLmNydGM7DQo+ICAJZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5waXBl Ow0KPiAgDQo+IEBAIC04MzMsMTEgKzk5MSwxMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3Jfd29y ayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+ICAJCX0NCj4gIAl9DQo+ICAJbXV0ZXhfbG9j aygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gLQlpbnRlbF9kcCA9IGRldl9wcml2LT5wc3IuZW5h YmxlZDsNCj4gLQ0KPiAtCWlmICghaW50ZWxfZHApDQo+ICsJaWYgKCFkZXZfcHJpdi0+cHNyLmVu YWJsZWQpDQo+ICAJCWdvdG8gdW5sb2NrOw0KPiAgDQo+ICsJaW50ZWxfZHAgPSBkZXZfcHJpdi0+ cHNyLmRwOw0KPiArDQo+ICAJLyoNCj4gIAkgKiBUaGUgZGVsYXllZCB3b3JrIGNhbiByYWNlIHdp dGggYW4gaW52YWxpZGF0ZSBoZW5jZSB3ZSBuZWVkIHRvDQo+ICAJICogcmVjaGVjay4gU2luY2Ug cHNyX2ZsdXNoIGZpcnN0IGNsZWFycyB0aGlzIGFuZCB0aGVuIHJlc2NoZWR1bGVzIHdlDQo+IEBA IC04NTMsNyArMTAxMSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl93b3JrKHN0cnVjdCB3b3Jr X3N0cnVjdCAqd29yaykNCj4gIA0KPiAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2V4aXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiAgew0KPiAtCXN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAgPSBkZXZfcHJpdi0+cHNyLmVuYWJsZWQ7DQo+ICsJc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCA9IGRldl9wcml2LT5wc3IuZHA7DQo+ICAJc3RydWN0IGRybV9jcnRjICpjcnRjID0g ZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLT5iYXNlLmJhc2UuY3J0YzsNCj4gIAllbnVtIHBpcGUg cGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7DQo+ICAJdTMyIHZhbDsNCj4gQEAgLTkz OCw3ICsxMDk2LDcgQEAgdm9pZCBpbnRlbF9wc3Jfc2luZ2xlX2ZyYW1lX3VwZGF0ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ICAJCXJldHVybjsNCj4gIAl9DQo+ICANCj4g LQljcnRjID0gZHBfdG9fZGlnX3BvcnQoZGV2X3ByaXYtPnBzci5lbmFibGVkKS0+YmFzZS5iYXNl LmNydGM7DQo+ICsJY3J0YyA9IGRwX3RvX2RpZ19wb3J0KGRldl9wcml2LT5wc3IuZHApLT5iYXNl LmJhc2UuY3J0YzsNCj4gIAlwaXBlID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZTsNCj4gIA0K PiAgCWlmIChmcm9udGJ1ZmZlcl9iaXRzICYgSU5URUxfRlJPTlRCVUZGRVJfQUxMX01BU0socGlw ZSkpIHsNCj4gQEAgLTk4NCw3ICsxMTQyLDcgQEAgdm9pZCBpbnRlbF9wc3JfaW52YWxpZGF0ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ICAJCXJldHVybjsNCj4gIAl9DQo+ ICANCj4gLQljcnRjID0gZHBfdG9fZGlnX3BvcnQoZGV2X3ByaXYtPnBzci5lbmFibGVkKS0+YmFz ZS5iYXNlLmNydGM7DQo+ICsJY3J0YyA9IGRwX3RvX2RpZ19wb3J0KGRldl9wcml2LT5wc3IuZHAp LT5iYXNlLmJhc2UuY3J0YzsNCj4gIAlwaXBlID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZTsN Cj4gIA0KPiAgCWZyb250YnVmZmVyX2JpdHMgJj0gSU5URUxfRlJPTlRCVUZGRVJfQUxMX01BU0so cGlwZSk7DQo+IEBAIC0xMDI3LDcgKzExODUsNyBAQCB2b2lkIGludGVsX3Bzcl9mbHVzaChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ICAJCXJldHVybjsNCj4gIAl9DQo+ICAN Cj4gLQljcnRjID0gZHBfdG9fZGlnX3BvcnQoZGV2X3ByaXYtPnBzci5lbmFibGVkKS0+YmFzZS5i YXNlLmNydGM7DQo+ICsJY3J0YyA9IGRwX3RvX2RpZ19wb3J0KGRldl9wcml2LT5wc3IuZHApLT5i YXNlLmJhc2UuY3J0YzsNCj4gIAlwaXBlID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZTsNCj4g IA0KPiAgCWZyb250YnVmZmVyX2JpdHMgJj0gSU5URUxfRlJPTlRCVUZGRVJfQUxMX01BU0socGlw ZSk7DQo+IEBAIC0xMDgxLDI2ICsxMjM5LDggQEAgdm9pZCBpbnRlbF9wc3JfaW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ICAJaWYgKGk5MTVfbW9kcGFyYW1zLmVuYWJs ZV9wc3IgPT0gLTEpDQo+ICAJCWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9wc3IgPSAwOw0KPiAgDQo+ IC0JLyogU2V0IGxpbmtfc3RhbmRieSB4IGxpbmtfb2ZmIGRlZmF1bHRzICovDQo+IC0JaWYgKElT X0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpDQo+IC0JCS8qIEhT VyBhbmQgQkRXIHJlcXVpcmUgd29ya2Fyb3VuZHMgdGhhdCB3ZSBkb24ndCBpbXBsZW1lbnQuICov DQo+IC0JCWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0gZmFsc2U7DQo+IC0JZWxzZSBpZiAo SVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpDQo+IC0J CS8qIE9uIFZMViBhbmQgQ0hWIG9ubHkgc3RhbmRieSBtb2RlIGlzIHN1cHBvcnRlZC4gKi8NCj4g LQkJZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkgPSB0cnVlOw0KPiAtCWVsc2UNCj4gLQkJLyog Rm9yIG5ldyBwbGF0Zm9ybXMgbGV0J3MgcmVzcGVjdCBWQlQgYmFjayBhZ2FpbiAqLw0KPiAtCQlk ZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSA9IGRldl9wcml2LT52YnQucHNyLmZ1bGxfbGluazsN Cj4gLQ0KPiAtCS8qIE92ZXJyaWRlIGxpbmtfc3RhbmRieSB4IGxpbmtfb2ZmIGRlZmF1bHRzICov DQo+IC0JaWYgKGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9wc3IgPT0gMiAmJiAhZGV2X3ByaXYtPnBz ci5saW5rX3N0YW5kYnkpIHsNCj4gLQkJRFJNX0RFQlVHX0tNUygiUFNSOiBGb3JjaW5nIGxpbmsg c3RhbmRieVxuIik7DQo+IC0JCWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0gdHJ1ZTsNCj4g LQl9DQo+IC0JaWYgKGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9wc3IgPT0gMyAmJiBkZXZfcHJpdi0+ cHNyLmxpbmtfc3RhbmRieSkgew0KPiAtCQlEUk1fREVCVUdfS01TKCJQU1I6IEZvcmNpbmcgbWFp biBsaW5rIG9mZlxuIik7DQo+IC0JCWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0gZmFsc2U7 DQo+IC0JfQ0KPiArCWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0gaW50ZWxfcHNyX2RlZmF1 bHRfbGlua19zdGFuZGJ5KGRldl9wcml2KTsNCj4gKwlkZXZfcHJpdi0+cHNyLmRlYnVnZnNfbW9k ZSA9IFBTUl9ERUJVR0ZTX01PREVfREVGQVVMVDsNCj4gIA0KPiAgCUlOSVRfREVMQVlFRF9XT1JL KCZkZXZfcHJpdi0+cHNyLndvcmssIGludGVsX3Bzcl93b3JrKTsNCj4gIAltdXRleF9pbml0KCZk ZXZfcHJpdi0+cHNyLmxvY2spOw0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==