From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm/i915/psr: Nuke PSR support for VLV and CHV Date: Mon, 14 May 2018 12:09:56 +0300 Message-ID: <87zi1238nv.fsf@intel.com> References: <20180511230059.19387-1-dhinakaran.pandiyan@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 6A6AE89F53 for ; Mon, 14 May 2018 09:07:22 +0000 (UTC) In-Reply-To: <20180511230059.19387-1-dhinakaran.pandiyan@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Dhinakaran Pandiyan , Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAxMSBNYXkgMjAxOCwgRGhpbmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5k aXlhbkBpbnRlbC5jb20+IHdyb3RlOgo+IFBTUiBoYXJkd2FyZSBhbmQgaGVuY2UgdGhlIGRyaXZl ciBjb2RlIGZvciBWTFYgYW5kIENIViBkZXZpYXRlcyBhIGxvdCBmcm9tCj4gdGhlaXIgRERJIGNv dW50ZXJwYXJ0cy4gV2hpbGUgdGhlIGZlYXR1cmUgaGFzIGJlZW4gZGlzYWJsZWQgZm9yIGEgbG9u ZyB0aW1lCj4gbm93LCByZXRhaW5pbmcgc3VwcG9ydCBmb3IgdGhlc2UgcGxhdGZvcm1zIGlzIGEg bWFpbnRlbmFuY2UgYnVyZGVuLiBUaGVyZQo+IGhhdmUgYmVlbiBtdWx0aXBsZSByZWZhY3Rvcmlu ZyBjb21taXRzIHRvIGp1c3Qga2VlcCB0aGUgZXhpc3RpbmcgY29kZSBmb3IKPiB0aGVzZSBwbGF0 Zm9ybXMgaW4gbGluZSB3aXRoIHRoZSByZXN0LiBUaGVyZSBhcmUga25vd24gaXNzdWVzIHRoYXQg bmVlZCB0bwo+IGJlIGZpeGVkIHRvIGVuYWJsZSBQU1Igb24gdGhlc2UgcGxhdGZvcm1zLCBhbmQg dGhlcmUgaXMgbm8gUFNSIGNhcGFibGUKPiBwbGF0Zm9ybSBpbiBDSSB0byBlbnN1cmUgdGhlIGNv ZGUgZG9lcyBub3QgYnJlYWsgYWdhaW4gaWYgd2UgZ2V0IGFyb3VuZCB0bwo+IGZpeGluZyB0aGUg ZXhpc3RpbmcgaXNzdWVzLiBPbiBhY2NvdW50IG9mIGFsbCB0aGVzZSByZWFzb25zLCBsZXQncyBu dWtlCj4gdGhpcyBjb2RlIGZvciBub3cgYW5kIGJyaW5nIGl0IGJhY2sgaWYgYSBuZWVkIGFyaXNl cyBpbiB0aGUgZnV0dXJlLgo+Cj4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5j b20+Cj4gQ2M6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KPiBDYzogVmls bGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiBTaWduZWQtb2Zm LWJ5OiBEaGluYWthcmFuIFBhbmRpeWFuIDxkaGluYWthcmFuLnBhbmRpeWFuQGludGVsLmNvbT4K CkFja2VkLWJ5OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgoKPiAtLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICB8ICA0MiArLS0tLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICB8ICAgMSAtCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMgICAgICAgICAgfCAgIDIgLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgIHwgICAyIC0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZnJvbnRidWZmZXIuYyB8ICAgMiAtCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3Bzci5jICAgICAgICAgfCAyNDggKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQo+ICA2IGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDI3MCBkZWxldGlvbnMoLSkK Pgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggMTNlN2I5ZTRhNmU2Li4w MDk2ZTIwOWZlMDQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0y NjMwLDggKzI2MzAsNiBAQCBzdGF0aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0IHNl cV9maWxlICptLCB2b2lkICpkYXRhKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7Cj4gIAl1MzIgcHNycGVyZiA9IDA7 Cj4gLQl1MzIgc3RhdFszXTsKPiAtCWVudW0gcGlwZSBwaXBlOwo+ICAJYm9vbCBlbmFibGVkID0g ZmFsc2U7Cj4gIAlib29sIHNpbmtfc3VwcG9ydDsKPiAgCj4gQEAgLTI2NTIsNDcgKzI2NTAsMTcg QEAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9p ZCAqZGF0YSkKPiAgCXNlcV9wcmludGYobSwgIlJlLWVuYWJsZSB3b3JrIHNjaGVkdWxlZDogJXNc biIsCj4gIAkJICAgeWVzbm8od29ya19idXN5KCZkZXZfcHJpdi0+cHNyLndvcmsud29yaykpKTsK PiAgCj4gLQlpZiAoSEFTX0RESShkZXZfcHJpdikpIHsKPiAtCQlpZiAoZGV2X3ByaXYtPnBzci5w c3IyX2VuYWJsZWQpCj4gLQkJCWVuYWJsZWQgPSBJOTE1X1JFQUQoRURQX1BTUjJfQ1RMKSAmIEVE UF9QU1IyX0VOQUJMRTsKPiAtCQllbHNlCj4gLQkJCWVuYWJsZWQgPSBJOTE1X1JFQUQoRURQX1BT Ul9DVEwpICYgRURQX1BTUl9FTkFCTEU7Cj4gLQl9IGVsc2Ugewo+IC0JCWZvcl9lYWNoX3BpcGUo ZGV2X3ByaXYsIHBpcGUpIHsKPiAtCQkJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0K PiAtCQkJCWludGVsX3BpcGVfdG9fY3B1X3RyYW5zY29kZXIoZGV2X3ByaXYsIHBpcGUpOwo+IC0J CQllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIHBvd2VyX2RvbWFpbjsKPiAtCj4gLQkJ CXBvd2VyX2RvbWFpbiA9IFBPV0VSX0RPTUFJTl9UUkFOU0NPREVSKGNwdV90cmFuc2NvZGVyKTsK PiAtCQkJaWYgKCFpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LAo+ IC0JCQkJCQkJCXBvd2VyX2RvbWFpbikpCj4gLQkJCQljb250aW51ZTsKPiAtCj4gLQkJCXN0YXRb cGlwZV0gPSBJOTE1X1JFQUQoVkxWX1BTUlNUQVQocGlwZSkpICYKPiAtCQkJCVZMVl9FRFBfUFNS X0NVUlJfU1RBVEVfTUFTSzsKPiAtCQkJaWYgKChzdGF0W3BpcGVdID09IFZMVl9FRFBfUFNSX0FD VElWRV9OT1JGQl9VUCkgfHwKPiAtCQkJICAgIChzdGF0W3BpcGVdID09IFZMVl9FRFBfUFNSX0FD VElWRV9TRl9VUERBVEUpKQo+IC0JCQkJZW5hYmxlZCA9IHRydWU7Cj4gLQo+IC0JCQlpbnRlbF9k aXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKTsKPiAtCQl9Cj4gLQl9Cj4g KwlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpCj4gKwkJZW5hYmxlZCA9IEk5MTVfUkVB RChFRFBfUFNSMl9DVEwpICYgRURQX1BTUjJfRU5BQkxFOwo+ICsJZWxzZQo+ICsJCWVuYWJsZWQg PSBJOTE1X1JFQUQoRURQX1BTUl9DVEwpICYgRURQX1BTUl9FTkFCTEU7Cj4gIAo+ICAJc2VxX3By aW50ZihtLCAiTWFpbiBsaW5rIGluIHN0YW5kYnkgbW9kZTogJXNcbiIsCj4gIAkJICAgeWVzbm8o ZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkpKTsKPiAgCj4gLQlzZXFfcHJpbnRmKG0sICJIVyBF bmFibGVkICYgQWN0aXZlIGJpdDogJXMiLCB5ZXNubyhlbmFibGVkKSk7Cj4gLQo+IC0JaWYgKCFI QVNfRERJKGRldl9wcml2KSkKPiAtCQlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKSB7Cj4g LQkJCWlmICgoc3RhdFtwaXBlXSA9PSBWTFZfRURQX1BTUl9BQ1RJVkVfTk9SRkJfVVApIHx8Cj4g LQkJCSAgICAoc3RhdFtwaXBlXSA9PSBWTFZfRURQX1BTUl9BQ1RJVkVfU0ZfVVBEQVRFKSkKPiAt CQkJCXNlcV9wcmludGYobSwgIiBwaXBlICVjIiwgcGlwZV9uYW1lKHBpcGUpKTsKPiAtCQl9Cj4g LQlzZXFfcHV0cyhtLCAiXG4iKTsKPiArCXNlcV9wcmludGYobSwgIkhXIEVuYWJsZWQgJiBBY3Rp dmUgYml0OiAlc1xuIiwgeWVzbm8oZW5hYmxlZCkpOwo+ICAKPiAgCS8qCj4gLQkgKiBWTFYvQ0hW IFBTUiBoYXMgbm8ga2luZCBvZiBwZXJmb3JtYW5jZSBjb3VudGVyCj4gIAkgKiBTS0wrIFBlcmYg Y291bnRlciBpcyByZXNldCB0byAwIGV2ZXJ5dGltZSBEQyBzdGF0ZSBpcyBlbnRlcmVkCj4gIAkg Ki8KPiAgCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYp KSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggNTdmYjNhYTA5ZGIwLi43ZTJhNDAw ZDMzYzMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtNjA3LDcgKzYwNyw2IEBA IHN0cnVjdCBpOTE1X3BzciB7Cj4gIAlib29sIGxpbmtfc3RhbmRieTsKPiAgCWJvb2wgY29sb3Jp bWV0cnlfc3VwcG9ydDsKPiAgCWJvb2wgYWxwbTsKPiAtCWJvb2wgaGFzX2h3X3RyYWNraW5nOwo+ ICAJYm9vbCBwc3IyX2VuYWJsZWQ7Cj4gIAl1OCBzaW5rX3N5bmNfbGF0ZW5jeTsKPiAgCWJvb2wg ZGVidWc7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jCj4gaW5kZXggNDM2NDkyMmU5MzVkLi45N2E5 MWU2YWY3ZTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKPiBAQCAtMzQwLDcgKzM0MCw2 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfdmFsbGV5dmll d19pbmZvID0gewo+ICAJR0VOKDcpLAo+ICAJLmlzX2xwID0gMSwKPiAgCS5udW1fcGlwZXMgPSAy LAo+IC0JLmhhc19wc3IgPSAxLAo+ICAJLmhhc19ydW50aW1lX3BtID0gMSwKPiAgCS5oYXNfcmM2 ID0gMSwKPiAgCS5oYXNfZ21jaF9kaXNwbGF5ID0gMSwKPiBAQCAtNDMzLDcgKzQzMiw2IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfY2hlcnJ5dmlld19pbmZv ID0gewo+ICAJLmlzX2xwID0gMSwKPiAgCS5yaW5nX21hc2sgPSBSRU5ERVJfUklORyB8IEJTRF9S SU5HIHwgQkxUX1JJTkcgfCBWRUJPWF9SSU5HLAo+ICAJLmhhc182NGJpdF9yZWxvYyA9IDEsCj4g LQkuaGFzX3BzciA9IDEsCj4gIAkuaGFzX3J1bnRpbWVfcG0gPSAxLAo+ICAJLmhhc19yZXNvdXJj ZV9zdHJlYW1lciA9IDEsCj4gIAkuaGFzX3JjNiA9IDEsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiBpbmRleCBkN2RiY2ExYWFiZmYuLmEyYjQwMTg4MDNhYiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCj4gQEAgLTE5MTMsOCArMTkxMyw2IEBAIHZvaWQgaW50ZWxfcHNyX2ZsdXNo KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkgICAgIHVuc2lnbmVkIGZy b250YnVmZmVyX2JpdHMsCj4gIAkJICAgICBlbnVtIGZiX29wX29yaWdpbiBvcmlnaW4pOwo+ICB2 b2lkIGludGVsX3Bzcl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4g LXZvaWQgaW50ZWxfcHNyX3NpbmdsZV9mcmFtZV91cGRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+IC0JCQkJICAgdW5zaWduZWQgZnJvbnRidWZmZXJfYml0cyk7Cj4gIHZv aWQgaW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4g IAkJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPiAgdm9pZCBp bnRlbF9wc3JfaXJxX2NvbnRyb2woc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBi b29sIGRlYnVnKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZnJv bnRidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Zyb250YnVmZmVyLmMKPiBp bmRleCA3ZmZmMGEwZWNlYjQuLmMzMzc5YmRlMjY2ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9mcm9udGJ1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZnJvbnRidWZmZXIuYwo+IEBAIC0xNTMsOCArMTUzLDYgQEAgdm9pZCBpbnRlbF9m cm9udGJ1ZmZlcl9mbGlwX3ByZXBhcmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ICAJLyogUmVtb3ZlIHN0YWxlIGJ1c3kgYml0cyBkdWUgdG8gdGhlIG9sZCBidWZmZXIuICov Cj4gIAlkZXZfcHJpdi0+ZmJfdHJhY2tpbmcuYnVzeV9iaXRzICY9IH5mcm9udGJ1ZmZlcl9iaXRz Owo+ICAJc3Bpbl91bmxvY2soJmRldl9wcml2LT5mYl90cmFja2luZy5sb2NrKTsKPiAtCj4gLQlp bnRlbF9wc3Jfc2luZ2xlX2ZyYW1lX3VwZGF0ZShkZXZfcHJpdiwgZnJvbnRidWZmZXJfYml0cyk7 Cj4gIH0KPiAgCj4gIC8qKgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wc3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCj4gaW5kZXggZGIyN2Yy ZmFhMWRlLi4yOTQ0M2QyYzM1YmIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcHNyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYwo+IEBA IC05NywxMCArOTcsNiBAQCB2b2lkIGludGVsX3Bzcl9pcnFfY29udHJvbChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgZGVidWcpCj4gIHsKPiAgCXUzMiBkZWJ1Z19tYXNr LCBtYXNrOwo+ICAKPiAtCS8qIE5vIFBTUiBpbnRlcnJ1cHRzIG9uIFZMVi9DSFYgKi8KPiAtCWlm IChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiAt CQlyZXR1cm47Cj4gLQo+ICAJbWFzayA9IEVEUF9QU1JfRVJST1IoVFJBTlNDT0RFUl9FRFApOwo+ ICAJZGVidWdfbWFzayA9IEVEUF9QU1JfUE9TVF9FWElUKFRSQU5TQ09ERVJfRURQKSB8Cj4gIAkJ ICAgICBFRFBfUFNSX1BSRV9FTlRSWShUUkFOU0NPREVSX0VEUCk7Cj4gQEAgLTI4NCwzMSArMjgw LDYgQEAgdm9pZCBpbnRlbF9wc3JfaW5pdF9kcGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp Cj4gIAl9Cj4gIH0KPiAgCj4gLXN0YXRpYyBib29sIHZsdl9pc19wc3JfYWN0aXZlX29uX3BpcGUo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHBpcGUpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAtCXVpbnQzMl90IHZhbDsKPiAt Cj4gLQl2YWwgPSBJOTE1X1JFQUQoVkxWX1BTUlNUQVQocGlwZSkpICYKPiAtCSAgICAgIFZMVl9F RFBfUFNSX0NVUlJfU1RBVEVfTUFTSzsKPiAtCXJldHVybiAodmFsID09IFZMVl9FRFBfUFNSX0FD VElWRV9OT1JGQl9VUCkgfHwKPiAtCSAgICAgICAodmFsID09IFZMVl9FRFBfUFNSX0FDVElWRV9T Rl9VUERBVEUpOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCB2bHZfcHNyX3NldHVwX3ZzYyhzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+IC0JCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAtewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0 b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAtCXVpbnQzMl90 IHZhbDsKPiAtCj4gLQkvKiBWTFYgYXV0by1nZW5lcmF0ZSBWU0MgcGFja2FnZSBhcyBwZXIgRURQ IDEuMyBzcGVjLCBUYWJsZSAzLjEwICovCj4gLQl2YWwgID0gSTkxNV9SRUFEKFZMVl9WU0NTRFAo Y3J0Yy0+cGlwZSkpOwo+IC0JdmFsICY9IH5WTFZfRURQX1BTUl9TRFBfRlJFUV9NQVNLOwo+IC0J dmFsIHw9IFZMVl9FRFBfUFNSX1NEUF9GUkVRX0VWRlJBTUU7Cj4gLQlJOTE1X1dSSVRFKFZMVl9W U0NTRFAoY3J0Yy0+cGlwZSksIHZhbCk7Cj4gLX0KPiAtCj4gIHN0YXRpYyB2b2lkIGhzd19wc3Jf c2V0dXBfdnNjKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAkJCSAgICAgIGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gQEAgLTM0MSwxMiArMzEy LDYgQEAgc3RhdGljIHZvaWQgaHN3X3Bzcl9zZXR1cF92c2Moc3RydWN0IGludGVsX2RwICppbnRl bF9kcCwKPiAgCQkJCQlEUF9TRFBfVlNDLCAmcHNyX3ZzYywgc2l6ZW9mKHBzcl92c2MpKTsKPiAg fQo+ICAKPiAtc3RhdGljIHZvaWQgdmx2X3Bzcl9lbmFibGVfc2luayhzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwKQo+IC17Cj4gLQlkcm1fZHBfZHBjZF93cml0ZWIoJmludGVsX2RwLT5hdXgsIERQ X1BTUl9FTl9DRkcsCj4gLQkJCSAgIERQX1BTUl9FTkFCTEUgfCBEUF9QU1JfTUFJTl9MSU5LX0FD VElWRSk7Cj4gLX0KPiAtCj4gIHN0YXRpYyB2b2lkIGhzd19wc3Jfc2V0dXBfYXV4KHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHApCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRp Z19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwo+IEBAIC00MDMsMzggKzM2OCw2IEBA IHN0YXRpYyB2b2lkIGhzd19wc3JfZW5hYmxlX3Npbmsoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCkKPiAgCWRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwgRFBfU0VUX1BPV0VSLCBE UF9TRVRfUE9XRVJfRDApOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCB2bHZfcHNyX2VuYWJsZV9z b3VyY2Uoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAtCQkJCSAgY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgKmRpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwo+IC0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkaWdfcG9ydC0+YmFzZS5iYXNlLmRl dik7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0 ZS0+YmFzZS5jcnRjKTsKPiAtCj4gLQkvKiBUcmFuc2l0aW9uIGZyb20gUFNSX3N0YXRlIDAgKGRp c2FibGVkKSB0byBQU1Jfc3RhdGUgMSAoaW5hY3RpdmUpICovCj4gLQlJOTE1X1dSSVRFKFZMVl9Q U1JDVEwoY3J0Yy0+cGlwZSksCj4gLQkJICAgVkxWX0VEUF9QU1JfTU9ERV9TV19USU1FUiB8Cj4g LQkJICAgVkxWX0VEUF9QU1JfU1JDX1RSQU5TTUlUVEVSX1NUQVRFIHwKPiAtCQkgICBWTFZfRURQ X1BTUl9FTkFCTEUpOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCB2bHZfcHNyX2FjdGl2YXRlKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3Bv cnQgKmRpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwo+IC0Jc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+IC0Jc3RydWN0IGRybV9jcnRjICpj cnRjID0gZGlnX3BvcnQtPmJhc2UuYmFzZS5jcnRjOwo+IC0JZW51bSBwaXBlIHBpcGUgPSB0b19p bnRlbF9jcnRjKGNydGMpLT5waXBlOwo+IC0KPiAtCS8qCj4gLQkgKiBMZXQncyBkbyB0aGUgdHJh bnNpdGlvbiBmcm9tIFBTUl9zdGF0ZSAxIChpbmFjdGl2ZSkgdG8KPiAtCSAqIFBTUl9zdGF0ZSAy ICh0cmFuc2l0aW9uIHRvIGFjdGl2ZSAtIHN0YXRpYyBmcmFtZSB0cmFuc21pc3Npb24pLgo+IC0J ICogVGhlbiBIYXJkd2FyZSBpcyByZXNwb25zaWJsZSBmb3IgdGhlIHRyYW5zaXRpb24gdG8KPiAt CSAqIFBTUl9zdGF0ZSAzIChhY3RpdmUgLSBubyBSZW1vdGUgRnJhbWUgQnVmZmVyIChSRkIpIHVw ZGF0ZSkuCj4gLQkgKi8KPiAtCUk5MTVfV1JJVEUoVkxWX1BTUkNUTChwaXBlKSwgSTkxNV9SRUFE KFZMVl9QU1JDVEwocGlwZSkpIHwKPiAtCQkgICBWTFZfRURQX1BTUl9BQ1RJVkVfRU5UUlkpOwo+ IC19Cj4gLQo+ICBzdGF0aWMgdm9pZCBoc3dfYWN0aXZhdGVfcHNyMShzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9 IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiBAQCAtNjAyLDE3ICs1MzUsMTEgQEAgdm9pZCBp bnRlbF9wc3JfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCSAq IG9uZXMuIFNpbmNlIGJ5IERpc3BsYXkgZGVzaWduIHRyYW5zY29kZXIgRURQIGlzIHRpZWQgdG8g cG9ydCBBCj4gIAkgKiB3ZSBjYW4gc2FmZWx5IGVzY2FwZSBiYXNlZCBvbiB0aGUgcG9ydCBBLgo+ ICAJICovCj4gLQlpZiAoSEFTX0RESShkZXZfcHJpdikgJiYgZGlnX3BvcnQtPmJhc2UucG9ydCAh PSBQT1JUX0EpIHsKPiArCWlmIChkaWdfcG9ydC0+YmFzZS5wb3J0ICE9IFBPUlRfQSkgewo+ICAJ CURSTV9ERUJVR19LTVMoIlBTUiBjb25kaXRpb24gZmFpbGVkOiBQb3J0IG5vdCBzdXBwb3J0ZWRc biIpOwo+ICAJCXJldHVybjsKPiAgCX0KPiAgCj4gLQlpZiAoKElTX1ZBTExFWVZJRVcoZGV2X3By aXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSAmJgo+IC0JICAgICFkZXZfcHJpdi0+cHNy Lmxpbmtfc3RhbmRieSkgewo+IC0JCURSTV9FUlJPUigiUFNSIGNvbmRpdGlvbiBmYWlsZWQ6IExp bmsgb2ZmIHJlcXVlc3RlZCBidXQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtXG4iKTsK PiAtCQlyZXR1cm47Cj4gLQl9Cj4gLQo+ICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpICYmCj4g IAkgICAgSTkxNV9SRUFEKEhTV19TVEVSRU9fM0RfQ1RMKGNydGNfc3RhdGUtPmNwdV90cmFuc2Nv ZGVyKSkgJgo+ICAJCSAgICAgIFMzRF9FTkFCTEUpIHsKPiBAQCAtNzYwLDcgKzY4Nyw2IEBAIHZv aWQgaW50ZWxfcHNyX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJCSAqIGVu YWJsZWQuCj4gIAkJICogSG93ZXZlciBvbiBzb21lIHBsYXRmb3JtcyB3ZSBmYWNlIGlzc3VlcyB3 aGVuIGZpcnN0Cj4gIAkJICogYWN0aXZhdGlvbiBmb2xsb3dzIGEgbW9kZXNldCBzbyBxdWlja2x5 Lgo+IC0JCSAqICAgICAtIE9uIFZMVi9DSFYgd2UgZ2V0IGJhbmsgc2NyZWVuIG9uIGZpcnN0IGFj dGl2YXRpb24KPiAgCQkgKiAgICAgLSBPbiBIU1cvQkRXIHdlIGdldCBhIHJlY292ZXJhYmxlIGZy b3plbiBzY3JlZW4gdW50aWwKPiAgCQkgKiAgICAgICBuZXh0IGV4aXQtYWN0aXZhdGUgc2VxdWVu Y2UuCj4gIAkJICovCj4gQEAgLTc3MiwzNiArNjk4LDYgQEAgdm9pZCBpbnRlbF9wc3JfZW5hYmxl KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5w c3IubG9jayk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIHZsdl9wc3JfZGlzYWJsZShzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLAo+IC0JCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKm9sZF9jcnRjX3N0YXRlKQo+IC17Cj4gLQlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpp bnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiAtCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNlLmRldjsKPiAtCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAtCXN0cnVjdCBpbnRl bF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhvbGRfY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsK PiAtCXVpbnQzMl90IHZhbDsKPiAtCj4gLQlpZiAoZGV2X3ByaXYtPnBzci5hY3RpdmUpIHsKPiAt CQkvKiBQdXQgVkxWIFBTUiBiYWNrIHRvIFBTUl9zdGF0ZSAwIChkaXNhYmxlZCkuICovCj4gLQkJ aWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LAo+IC0JCQkJCSAgICBWTFZfUFNS U1RBVChjcnRjLT5waXBlKSwKPiAtCQkJCQkgICAgVkxWX0VEUF9QU1JfSU5fVFJBTlMsCj4gLQkJ CQkJICAgIDAsCj4gLQkJCQkJICAgIDEpKQo+IC0JCQlXQVJOKDEsICJQU1IgdHJhbnNpdGlvbiB0 b29rIGxvbmdlciB0aGFuIGV4cGVjdGVkXG4iKTsKPiAtCj4gLQkJdmFsID0gSTkxNV9SRUFEKFZM Vl9QU1JDVEwoY3J0Yy0+cGlwZSkpOwo+IC0JCXZhbCAmPSB+VkxWX0VEUF9QU1JfQUNUSVZFX0VO VFJZOwo+IC0JCXZhbCAmPSB+VkxWX0VEUF9QU1JfRU5BQkxFOwo+IC0JCXZhbCAmPSB+VkxWX0VE UF9QU1JfTU9ERV9NQVNLOwo+IC0JCUk5MTVfV1JJVEUoVkxWX1BTUkNUTChjcnRjLT5waXBlKSwg dmFsKTsKPiAtCj4gLQkJZGV2X3ByaXYtPnBzci5hY3RpdmUgPSBmYWxzZTsKPiAtCX0gZWxzZSB7 Cj4gLQkJV0FSTl9PTih2bHZfaXNfcHNyX2FjdGl2ZV9vbl9waXBlKGRldiwgY3J0Yy0+cGlwZSkp Owo+IC0JfQo+IC19Cj4gLQo+ICBzdGF0aWMgdm9pZCBoc3dfcHNyX2Rpc2FibGUoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCwKPiAgCQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpvbGRfY3J0Y19zdGF0ZSkKPiAgewo+IEBAIC04OTQsMjEgKzc5MCwxMiBAQCBzdGF0aWMgYm9v bCBwc3Jfd2FpdF9mb3JfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IAlpZiAoIWludGVsX2RwKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gLQlpZiAoSEFTX0RESShk ZXZfcHJpdikpIHsKPiAtCQlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpIHsKPiAtCQkJ cmVnID0gRURQX1BTUjJfU1RBVFVTOwo+IC0JCQltYXNrID0gRURQX1BTUjJfU1RBVFVTX1NUQVRF X01BU0s7Cj4gLQkJfSBlbHNlIHsKPiAtCQkJcmVnID0gRURQX1BTUl9TVEFUVVM7Cj4gLQkJCW1h c2sgPSBFRFBfUFNSX1NUQVRVU19TVEFURV9NQVNLOwo+IC0JCX0KPiArCWlmIChkZXZfcHJpdi0+ cHNyLnBzcjJfZW5hYmxlZCkgewo+ICsJCXJlZyA9IEVEUF9QU1IyX1NUQVRVUzsKPiArCQltYXNr ID0gRURQX1BTUjJfU1RBVFVTX1NUQVRFX01BU0s7Cj4gIAl9IGVsc2Ugewo+IC0JCXN0cnVjdCBk cm1fY3J0YyAqY3J0YyA9Cj4gLQkJCWRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZS5iYXNl LmNydGM7Cj4gLQkJZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5waXBlOwo+ IC0KPiAtCQlyZWcgPSBWTFZfUFNSU1RBVChwaXBlKTsKPiAtCQltYXNrID0gVkxWX0VEUF9QU1Jf SU5fVFJBTlM7Cj4gKwkJcmVnID0gRURQX1BTUl9TVEFUVVM7Cj4gKwkJbWFzayA9IEVEUF9QU1Jf U1RBVFVTX1NUQVRFX01BU0s7Cj4gIAl9Cj4gIAo+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ cHNyLmxvY2spOwo+IEBAIC05NTMsMTAyICs4NDAsMjMgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNy X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxf cHNyX2V4aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZGV2X3ByaXYtPnBzci5lbmFibGVkOwo+IC0Jc3RydWN0 IGRybV9jcnRjICpjcnRjID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLT5iYXNlLmJhc2UuY3J0 YzsKPiAtCWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZTsKPiAgCXUz MiB2YWw7Cj4gIAo+ICAJaWYgKCFkZXZfcHJpdi0+cHNyLmFjdGl2ZSkKPiAgCQlyZXR1cm47Cj4g IAo+IC0JaWYgKEhBU19EREkoZGV2X3ByaXYpKSB7Cj4gLQkJaWYgKGRldl9wcml2LT5wc3IucHNy Ml9lbmFibGVkKSB7Cj4gLQkJCXZhbCA9IEk5MTVfUkVBRChFRFBfUFNSMl9DVEwpOwo+IC0JCQlX QVJOX09OKCEodmFsICYgRURQX1BTUjJfRU5BQkxFKSk7Cj4gLQkJCUk5MTVfV1JJVEUoRURQX1BT UjJfQ1RMLCB2YWwgJiB+RURQX1BTUjJfRU5BQkxFKTsKPiAtCQl9IGVsc2Ugewo+IC0JCQl2YWwg PSBJOTE1X1JFQUQoRURQX1BTUl9DVEwpOwo+IC0JCQlXQVJOX09OKCEodmFsICYgRURQX1BTUl9F TkFCTEUpKTsKPiAtCQkJSTkxNV9XUklURShFRFBfUFNSX0NUTCwgdmFsICYgfkVEUF9QU1JfRU5B QkxFKTsKPiAtCQl9Cj4gKwlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpIHsKPiArCQl2 YWwgPSBJOTE1X1JFQUQoRURQX1BTUjJfQ1RMKTsKPiArCQlXQVJOX09OKCEodmFsICYgRURQX1BT UjJfRU5BQkxFKSk7Cj4gKwkJSTkxNV9XUklURShFRFBfUFNSMl9DVEwsIHZhbCAmIH5FRFBfUFNS Ml9FTkFCTEUpOwo+ICAJfSBlbHNlIHsKPiAtCQl2YWwgPSBJOTE1X1JFQUQoVkxWX1BTUkNUTChw aXBlKSk7Cj4gLQo+IC0JCS8qCj4gLQkJICogSGVyZSB3ZSBkbyB0aGUgdHJhbnNpdGlvbiBkcmly ZWN0bHkgZnJvbQo+IC0JCSAqIFBTUl9zdGF0ZSAzIChhY3RpdmUgLSBubyBSZW1vdGUgRnJhbWUg QnVmZmVyIChSRkIpIHVwZGF0ZSkgdG8KPiAtCQkgKiBQU1Jfc3RhdGUgNSAoZXhpdCkuCj4gLQkJ ICogUFNSIFN0YXRlIDQgKGFjdGl2ZSB3aXRoIHNpbmdsZSBmcmFtZSB1cGRhdGUpIGNhbiBiZSBz a2lwcGVkLgo+IC0JCSAqIE9uIFBTUl9zdGF0ZSA1IChleGl0KSBIYXJkd2FyZSBpcyByZXNwb25z aWJsZSB0byB0cmFuc2l0aW9uCj4gLQkJICogYmFjayB0byBQU1Jfc3RhdGUgMSAoaW5hY3RpdmUp Lgo+IC0JCSAqIE5vdyB3ZSBhcmUgYXQgU2FtZSBzdGF0ZSBhZnRlciB2bHZfcHNyX2VuYWJsZV9z b3VyY2UuCj4gLQkJICovCj4gLQkJdmFsICY9IH5WTFZfRURQX1BTUl9BQ1RJVkVfRU5UUlk7Cj4g LQkJSTkxNV9XUklURShWTFZfUFNSQ1RMKHBpcGUpLCB2YWwpOwo+IC0KPiAtCQkvKgo+IC0JCSAq IFNlbmQgQVVYIHdha2UgdXAgLSBTcGVjIHNheXMgYWZ0ZXIgdHJhbnNpdGlvbmluZyB0byBQU1IK PiAtCQkgKiBhY3RpdmUgd2UgaGF2ZSB0byBzZW5kIEFVWCB3YWtlIHVwIGJ5IHdyaXRpbmcgMDFo IGluIERQQ0QKPiAtCQkgKiA2MDBoIG9mIHNpbmsgZGV2aWNlLgo+IC0JCSAqIFhYWDogVGhpcyBt aWdodCBzbG93IGRvd24gdGhlIHRyYW5zaXRpb24sIGJ1dCB3aXRob3V0IHRoaXMKPiAtCQkgKiBI VyBkb2Vzbid0IGNvbXBsZXRlIHRoZSB0cmFuc2l0aW9uIHRvIFBTUl9zdGF0ZSAxIGFuZCB3ZQo+ IC0JCSAqIG5ldmVyIGdldCB0aGUgc2NyZWVuIHVwZGF0ZWQuCj4gLQkJICovCj4gLQkJZHJtX2Rw X2RwY2Rfd3JpdGViKCZpbnRlbF9kcC0+YXV4LCBEUF9TRVRfUE9XRVIsCj4gLQkJCQkgICBEUF9T RVRfUE9XRVJfRDApOwo+ICsJCXZhbCA9IEk5MTVfUkVBRChFRFBfUFNSX0NUTCk7Cj4gKwkJV0FS Tl9PTighKHZhbCAmIEVEUF9QU1JfRU5BQkxFKSk7Cj4gKwkJSTkxNV9XUklURShFRFBfUFNSX0NU TCwgdmFsICYgfkVEUF9QU1JfRU5BQkxFKTsKPiAgCX0KPiAtCj4gIAlkZXZfcHJpdi0+cHNyLmFj dGl2ZSA9IGZhbHNlOwo+ICB9Cj4gIAo+IC0vKioKPiAtICogaW50ZWxfcHNyX3NpbmdsZV9mcmFt ZV91cGRhdGUgLSBTaW5nbGUgRnJhbWUgVXBkYXRlCj4gLSAqIEBkZXZfcHJpdjogaTkxNSBkZXZp Y2UKPiAtICogQGZyb250YnVmZmVyX2JpdHM6IGZyb250YnVmZmVyIHBsYW5lIHRyYWNraW5nIGJp dHMKPiAtICoKPiAtICogU29tZSBwbGF0Zm9ybXMgc3VwcG9ydCBhIHNpbmdsZSBmcmFtZSB1cGRh dGUgZmVhdHVyZSB0aGF0IGlzIHVzZWQgdG8KPiAtICogc2VuZCBhbmQgdXBkYXRlIG9ubHkgb25l IGZyYW1lIG9uIFJlbW90ZSBGcmFtZSBCdWZmZXIuCj4gLSAqIFNvIGZhciBpdCBpcyBvbmx5IGlt cGxlbWVudGVkIGZvciBWYWxsZXl2aWV3IGFuZCBDaGVycnl2aWV3IGJlY2F1c2UKPiAtICogaGFy ZHdhcmUgcmVxdWlyZXMgdGhpcyB0byBiZSBkb25lIGJlZm9yZSBhIHBhZ2UgZmxpcC4KPiAtICov Cj4gLXZvaWQgaW50ZWxfcHNyX3NpbmdsZV9mcmFtZV91cGRhdGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+IC0JCQkJICAgdW5zaWduZWQgZnJvbnRidWZmZXJfYml0cykKPiAt ewo+IC0Jc3RydWN0IGRybV9jcnRjICpjcnRjOwo+IC0JZW51bSBwaXBlIHBpcGU7Cj4gLQl1MzIg dmFsOwo+IC0KPiAtCWlmICghQ0FOX1BTUihkZXZfcHJpdikpCj4gLQkJcmV0dXJuOwo+IC0KPiAt CS8qCj4gLQkgKiBTaW5nbGUgZnJhbWUgdXBkYXRlIGlzIGFscmVhZHkgc3VwcG9ydGVkIG9uIEJE VysgYnV0IGl0IHJlcXVpcmVzCj4gLQkgKiBtYW55IFcvQSBhbmQgaXQgaXNuJ3QgcmVhbGx5IG5l ZWRlZC4KPiAtCSAqLwo+IC0JaWYgKCFJU19WQUxMRVlWSUVXKGRldl9wcml2KSAmJiAhSVNfQ0hF UlJZVklFVyhkZXZfcHJpdikpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCW11dGV4X2xvY2soJmRldl9w cml2LT5wc3IubG9jayk7Cj4gLQlpZiAoIWRldl9wcml2LT5wc3IuZW5hYmxlZCkgewo+IC0JCW11 dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiAtCQlyZXR1cm47Cj4gLQl9Cj4gLQo+ IC0JY3J0YyA9IGRwX3RvX2RpZ19wb3J0KGRldl9wcml2LT5wc3IuZW5hYmxlZCktPmJhc2UuYmFz ZS5jcnRjOwo+IC0JcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7Cj4gLQo+IC0JaWYg KGZyb250YnVmZmVyX2JpdHMgJiBJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFTSyhwaXBlKSkgewo+ IC0JCXZhbCA9IEk5MTVfUkVBRChWTFZfUFNSQ1RMKHBpcGUpKTsKPiAtCj4gLQkJLyoKPiAtCQkg KiBXZSBuZWVkIHRvIHNldCB0aGlzIGJpdCBiZWZvcmUgd3JpdGluZyByZWdpc3RlcnMgZm9yIGEg ZmxpcC4KPiAtCQkgKiBUaGlzIGJpdCB3aWxsIGJlIHNlbGYtY2xlYXIgd2hlbiBpdCBnZXRzIHRv IHRoZSBQU1IgYWN0aXZlIHN0YXRlLgo+IC0JCSAqLwo+IC0JCUk5MTVfV1JJVEUoVkxWX1BTUkNU TChwaXBlKSwgdmFsIHwgVkxWX0VEUF9QU1JfU0lOR0xFX0ZSQU1FX1VQREFURSk7Cj4gLQl9Cj4g LQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gLX0KPiAtCj4gIC8qKgo+ICAg KiBpbnRlbF9wc3JfaW52YWxpZGF0ZSAtIEludmFsaWRhZGUgUFNSCj4gICAqIEBkZXZfcHJpdjog aTkxNSBkZXZpY2UKPiBAQCAtMTA3MSw3ICs4NzksNyBAQCB2b2lkIGludGVsX3Bzcl9pbnZhbGlk YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCWlmICghQ0FOX1BTUihk ZXZfcHJpdikpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCWlmIChkZXZfcHJpdi0+cHNyLmhhc19od190 cmFja2luZyAmJiBvcmlnaW4gPT0gT1JJR0lOX0ZMSVApCj4gKwlpZiAob3JpZ2luID09IE9SSUdJ Tl9GTElQKQo+ICAJCXJldHVybjsKPiAgCj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxv Y2spOwo+IEBAIC0xMTE0LDcgKzkyMiw3IEBAIHZvaWQgaW50ZWxfcHNyX2ZsdXNoKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCWlmICghQ0FOX1BTUihkZXZfcHJpdikpCj4g IAkJcmV0dXJuOwo+ICAKPiAtCWlmIChkZXZfcHJpdi0+cHNyLmhhc19od190cmFja2luZyAmJiBv cmlnaW4gPT0gT1JJR0lOX0ZMSVApCj4gKwlpZiAob3JpZ2luID09IE9SSUdJTl9GTElQKQo+ICAJ CXJldHVybjsKPiAgCj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+IEBAIC0x MTMxLDggKzkzOSw3IEBAIHZvaWQgaW50ZWxfcHNyX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgCj4gIAkvKiBCeSBkZWZpbml0aW9uIGZsdXNoID0gaW52YWxpZGF0 ZSArIGZsdXNoICovCj4gIAlpZiAoZnJvbnRidWZmZXJfYml0cykgewo+IC0JCWlmIChkZXZfcHJp di0+cHNyLnBzcjJfZW5hYmxlZCB8fAo+IC0JCSAgICBJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8 fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewo+ICsJCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJf ZW5hYmxlZCkgewo+ICAJCQlpbnRlbF9wc3JfZXhpdChkZXZfcHJpdik7Cj4gIAkJfSBlbHNlIHsK PiAgCQkJLyoKPiBAQCAtMTE4NCw5ICs5OTEsNiBAQCB2b2lkIGludGVsX3Bzcl9pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWlmIChJU19IQVNXRUxMKGRldl9wcml2 KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+ICAJCS8qIEhTVyBhbmQgQkRXIHJlcXVpcmUg d29ya2Fyb3VuZHMgdGhhdCB3ZSBkb24ndCBpbXBsZW1lbnQuICovCj4gIAkJZGV2X3ByaXYtPnBz ci5saW5rX3N0YW5kYnkgPSBmYWxzZTsKPiAtCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3By aXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+IC0JCS8qIE9uIFZMViBhbmQgQ0hWIG9u bHkgc3RhbmRieSBtb2RlIGlzIHN1cHBvcnRlZC4gKi8KPiAtCQlkZXZfcHJpdi0+cHNyLmxpbmtf c3RhbmRieSA9IHRydWU7Cj4gIAllbHNlCj4gIAkJLyogRm9yIG5ldyBwbGF0Zm9ybXMgbGV0J3Mg cmVzcGVjdCBWQlQgYmFjayBhZ2FpbiAqLwo+ICAJCWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5 ID0gZGV2X3ByaXYtPnZidC5wc3IuZnVsbF9saW5rOwo+IEBAIC0xMjA0LDE4ICsxMDA4LDEwIEBA IHZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICAJSU5JVF9ERUxBWUVEX1dPUksoJmRldl9wcml2LT5wc3Iud29yaywgaW50ZWxfcHNyX3dvcmsp Owo+ICAJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiAgCj4gLQlpZiAoSVNfVkFM TEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiAtCQlkZXZf cHJpdi0+cHNyLmVuYWJsZV9zb3VyY2UgPSB2bHZfcHNyX2VuYWJsZV9zb3VyY2U7Cj4gLQkJZGV2 X3ByaXYtPnBzci5kaXNhYmxlX3NvdXJjZSA9IHZsdl9wc3JfZGlzYWJsZTsKPiAtCQlkZXZfcHJp di0+cHNyLmVuYWJsZV9zaW5rID0gdmx2X3Bzcl9lbmFibGVfc2luazsKPiAtCQlkZXZfcHJpdi0+ cHNyLmFjdGl2YXRlID0gdmx2X3Bzcl9hY3RpdmF0ZTsKPiAtCQlkZXZfcHJpdi0+cHNyLnNldHVw X3ZzYyA9IHZsdl9wc3Jfc2V0dXBfdnNjOwo+IC0JfSBlbHNlIHsKPiAtCQlkZXZfcHJpdi0+cHNy Lmhhc19od190cmFja2luZyA9IHRydWU7Cj4gLQkJZGV2X3ByaXYtPnBzci5lbmFibGVfc291cmNl ID0gaHN3X3Bzcl9lbmFibGVfc291cmNlOwo+IC0JCWRldl9wcml2LT5wc3IuZGlzYWJsZV9zb3Vy Y2UgPSBoc3dfcHNyX2Rpc2FibGU7Cj4gLQkJZGV2X3ByaXYtPnBzci5lbmFibGVfc2luayA9IGhz d19wc3JfZW5hYmxlX3Npbms7Cj4gLQkJZGV2X3ByaXYtPnBzci5hY3RpdmF0ZSA9IGhzd19wc3Jf YWN0aXZhdGU7Cj4gLQkJZGV2X3ByaXYtPnBzci5zZXR1cF92c2MgPSBoc3dfcHNyX3NldHVwX3Zz YzsKPiAtCX0KPiArCWRldl9wcml2LT5wc3IuZW5hYmxlX3NvdXJjZSA9IGhzd19wc3JfZW5hYmxl X3NvdXJjZTsKPiArCWRldl9wcml2LT5wc3IuZGlzYWJsZV9zb3VyY2UgPSBoc3dfcHNyX2Rpc2Fi bGU7Cj4gKwlkZXZfcHJpdi0+cHNyLmVuYWJsZV9zaW5rID0gaHN3X3Bzcl9lbmFibGVfc2luazsK PiArCWRldl9wcml2LT5wc3IuYWN0aXZhdGUgPSBoc3dfcHNyX2FjdGl2YXRlOwo+ICsJZGV2X3By aXYtPnBzci5zZXR1cF92c2MgPSBoc3dfcHNyX3NldHVwX3ZzYzsKPiArCj4gIH0KCi0tIApKYW5p IE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==