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: Thu, 24 May 2018 16:09:22 +0300 Message-ID: <87fu2hjj3x.fsf@intel.com> References: <20180511230059.19387-1-dhinakaran.pandiyan@intel.com> <87zi1238nv.fsf@intel.com> <1526319332.17473.37.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id E6F406E63C for ; Thu, 24 May 2018 13:05:26 +0000 (UTC) In-Reply-To: <1526319332.17473.37.camel@intel.com> 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 T24gTW9uLCAxNCBNYXkgMjAxOCwgRGhpbmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5k aXlhbkBpbnRlbC5jb20+IHdyb3RlOgo+IE9uIE1vbiwgMjAxOC0wNS0xNCBhdCAxMjowOSArMDMw MCwgSmFuaSBOaWt1bGEgd3JvdGU6Cj4+IE9uIEZyaSwgMTEgTWF5IDIwMTgsIERoaW5ha2FyYW4g UGFuZGl5YW4gPGRoaW5ha2FyYW4ucGFuZGl5YW5AaW50ZWwuYwo+PiBvbT4gd3JvdGU6Cj4+ID4g Cj4+ID4gUFNSIGhhcmR3YXJlIGFuZCBoZW5jZSB0aGUgZHJpdmVyIGNvZGUgZm9yIFZMViBhbmQg Q0hWIGRldmlhdGVzIGEKPj4gPiBsb3QgZnJvbQo+PiA+IHRoZWlyIERESSBjb3VudGVycGFydHMu IFdoaWxlIHRoZSBmZWF0dXJlIGhhcyBiZWVuIGRpc2FibGVkIGZvciBhCj4+ID4gbG9uZyB0aW1l Cj4+ID4gbm93LCByZXRhaW5pbmcgc3VwcG9ydCBmb3IgdGhlc2UgcGxhdGZvcm1zIGlzIGEgbWFp bnRlbmFuY2UgYnVyZGVuLgo+PiA+IFRoZXJlCj4+ID4gaGF2ZSBiZWVuIG11bHRpcGxlIHJlZmFj dG9yaW5nIGNvbW1pdHMgdG8ganVzdCBrZWVwIHRoZSBleGlzdGluZwo+PiA+IGNvZGUgZm9yCj4+ ID4gdGhlc2UgcGxhdGZvcm1zIGluIGxpbmUgd2l0aCB0aGUgcmVzdC4gVGhlcmUgYXJlIGtub3du IGlzc3VlcyB0aGF0Cj4+ID4gbmVlZCB0bwo+PiA+IGJlIGZpeGVkIHRvIGVuYWJsZSBQU1Igb24g dGhlc2UgcGxhdGZvcm1zLCBhbmQgdGhlcmUgaXMgbm8gUFNSCj4+ID4gY2FwYWJsZQo+PiA+IHBs YXRmb3JtIGluIENJIHRvIGVuc3VyZSB0aGUgY29kZSBkb2VzIG5vdCBicmVhayBhZ2FpbiBpZiB3 ZSBnZXQKPj4gPiBhcm91bmQgdG8KPj4gPiBmaXhpbmcgdGhlIGV4aXN0aW5nIGlzc3Vlcy4gT24g YWNjb3VudCBvZiBhbGwgdGhlc2UgcmVhc29ucywgbGV0J3MKPj4gPiBudWtlCj4+ID4gdGhpcyBj b2RlIGZvciBub3cgYW5kIGJyaW5nIGl0IGJhY2sgaWYgYSBuZWVkIGFyaXNlcyBpbiB0aGUgZnV0 dXJlLgo+PiA+IAo+PiA+IENjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgo+ PiA+IENjOiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+Cj4+ID4gQ2M6IFZp bGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4+ID4gU2lnbmVk LW9mZi1ieTogRGhpbmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5j b20+Cj4+IEFja2VkLWJ5OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgo+PiAK PiBUaGFuayB5b3UuwqAKPgo+IEluY2x1ZGluZyBSb2RyaWdvJ3MgYWNrIHRoYXQgd2FzIHNlbnQg aW50ZXJuYWxseQo+IEFja2VkLWJ5OiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5j b20+wqAKCgpQdXNoZWQgdG8gZGlucSwgdGhhbmtzIGZvciB0aGUgcGF0Y2guCgpCUiwKSmFuaS4K Cj4KPgo+PiA+IAo+PiA+IC0tLQo+PiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmPCoMKgwqDCoMKgwqB8wqDCoDQyICstLS0tLQo+PiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDEgLQo+PiA+IMKgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuY8KgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDIgLQo+ PiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmjCoMKgwqDCoMKgwqDCoMKgwqB8 wqDCoMKgMiAtCj4+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mcm9udGJ1ZmZlci5j IHzCoMKgwqAyIC0KPj4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jwqDCoMKg wqDCoMKgwqDCoMKgfCAyNDggKysrLS0tLS0tLS0tLS0tLS0KPj4gPiAtLS0tLS0tLS0tLS0tLQo+ PiA+IMKgNiBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAyNzAgZGVsZXRpb25zKC0p Cj4+ID4gCj4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jCj4+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+PiA+IGluZGV4 IDEzZTdiOWU0YTZlNi4uMDA5NmUyMDlmZTA0IDEwMDY0NAo+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKPj4gPiBAQCAtMjYzMCw4ICsyNjMwLDYgQEAgc3RhdGljIGludCBpOTE1 X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdAo+PiA+IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+PiA+ IMKgewo+PiA+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9f aTkxNShtLQo+PiA+ID5wcml2YXRlKTsKPj4gPiDCoAl1MzIgcHNycGVyZiA9IDA7Cj4+ID4gLQl1 MzIgc3RhdFszXTsKPj4gPiAtCWVudW0gcGlwZSBwaXBlOwo+PiA+IMKgCWJvb2wgZW5hYmxlZCA9 IGZhbHNlOwo+PiA+IMKgCWJvb2wgc2lua19zdXBwb3J0Owo+PiA+IMKgCj4+ID4gQEAgLTI2NTIs NDcgKzI2NTAsMTcgQEAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdAo+PiA+ IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+PiA+IMKgCXNlcV9wcmludGYobSwgIlJlLWVuYWJs ZSB3b3JrIHNjaGVkdWxlZDogJXNcbiIsCj4+ID4gwqAJCcKgwqDCoHllc25vKHdvcmtfYnVzeSgm ZGV2X3ByaXYtPnBzci53b3JrLndvcmspKSk7Cj4+ID4gwqAKPj4gPiAtCWlmIChIQVNfRERJKGRl dl9wcml2KSkgewo+PiA+IC0JCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkKPj4gPiAt CQkJZW5hYmxlZCA9IEk5MTVfUkVBRChFRFBfUFNSMl9DVEwpICYKPj4gPiBFRFBfUFNSMl9FTkFC TEU7Cj4+ID4gLQkJZWxzZQo+PiA+IC0JCQllbmFibGVkID0gSTkxNV9SRUFEKEVEUF9QU1JfQ1RM KSAmCj4+ID4gRURQX1BTUl9FTkFCTEU7Cj4+ID4gLQl9IGVsc2Ugewo+PiA+IC0JCWZvcl9lYWNo X3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsKPj4gPiAtCQkJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFu c2NvZGVyID0KPj4gPiAtCQkJCWludGVsX3BpcGVfdG9fY3B1X3RyYW5zY29kZXIoZGV2X3AKPj4g PiByaXYsIHBpcGUpOwo+PiA+IC0JCQllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluCj4+ ID4gcG93ZXJfZG9tYWluOwo+PiA+IC0KPj4gPiAtCQkJcG93ZXJfZG9tYWluID0KPj4gPiBQT1dF Ul9ET01BSU5fVFJBTlNDT0RFUihjcHVfdHJhbnNjb2Rlcik7Cj4+ID4gLQkJCWlmCj4+ID4gKCFp bnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LAo+PiA+IC0JCQkJCQkJ CXBvCj4+ID4gd2VyX2RvbWFpbikpCj4+ID4gLQkJCQljb250aW51ZTsKPj4gPiAtCj4+ID4gLQkJ CXN0YXRbcGlwZV0gPSBJOTE1X1JFQUQoVkxWX1BTUlNUQVQocGlwZSkpCj4+ID4gJgo+PiA+IC0J CQkJVkxWX0VEUF9QU1JfQ1VSUl9TVEFURV9NQVNLOwo+PiA+IC0JCQlpZiAoKHN0YXRbcGlwZV0g PT0KPj4gPiBWTFZfRURQX1BTUl9BQ1RJVkVfTk9SRkJfVVApIHx8Cj4+ID4gLQkJCcKgwqDCoMKg KHN0YXRbcGlwZV0gPT0KPj4gPiBWTFZfRURQX1BTUl9BQ1RJVkVfU0ZfVVBEQVRFKSkKPj4gPiAt CQkJCWVuYWJsZWQgPSB0cnVlOwo+PiA+IC0KPj4gPiAtCQkJaW50ZWxfZGlzcGxheV9wb3dlcl9w dXQoZGV2X3ByaXYsCj4+ID4gcG93ZXJfZG9tYWluKTsKPj4gPiAtCQl9Cj4+ID4gLQl9Cj4+ID4g KwlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpCj4+ID4gKwkJZW5hYmxlZCA9IEk5MTVf UkVBRChFRFBfUFNSMl9DVEwpICYKPj4gPiBFRFBfUFNSMl9FTkFCTEU7Cj4+ID4gKwllbHNlCj4+ ID4gKwkJZW5hYmxlZCA9IEk5MTVfUkVBRChFRFBfUFNSX0NUTCkgJiBFRFBfUFNSX0VOQUJMRTsK Pj4gPiDCoAo+PiA+IMKgCXNlcV9wcmludGYobSwgIk1haW4gbGluayBpbiBzdGFuZGJ5IG1vZGU6 ICVzXG4iLAo+PiA+IMKgCQnCoMKgwqB5ZXNubyhkZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSkp Owo+PiA+IMKgCj4+ID4gLQlzZXFfcHJpbnRmKG0sICJIVyBFbmFibGVkICYgQWN0aXZlIGJpdDog JXMiLAo+PiA+IHllc25vKGVuYWJsZWQpKTsKPj4gPiAtCj4+ID4gLQlpZiAoIUhBU19EREkoZGV2 X3ByaXYpKQo+PiA+IC0JCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsKPj4gPiAtCQkJ aWYgKChzdGF0W3BpcGVdID09Cj4+ID4gVkxWX0VEUF9QU1JfQUNUSVZFX05PUkZCX1VQKSB8fAo+ PiA+IC0JCQnCoMKgwqDCoChzdGF0W3BpcGVdID09Cj4+ID4gVkxWX0VEUF9QU1JfQUNUSVZFX1NG X1VQREFURSkpCj4+ID4gLQkJCQlzZXFfcHJpbnRmKG0sICIgcGlwZSAlYyIsCj4+ID4gcGlwZV9u YW1lKHBpcGUpKTsKPj4gPiAtCQl9Cj4+ID4gLQlzZXFfcHV0cyhtLCAiXG4iKTsKPj4gPiArCXNl cV9wcmludGYobSwgIkhXIEVuYWJsZWQgJiBBY3RpdmUgYml0OiAlc1xuIiwKPj4gPiB5ZXNubyhl bmFibGVkKSk7Cj4+ID4gwqAKPj4gPiDCoAkvKgo+PiA+IC0JwqAqIFZMVi9DSFYgUFNSIGhhcyBu byBraW5kIG9mIHBlcmZvcm1hbmNlIGNvdW50ZXIKPj4gPiDCoAnCoCogU0tMKyBQZXJmIGNvdW50 ZXIgaXMgcmVzZXQgdG8gMCBldmVyeXRpbWUgREMgc3RhdGUgaXMKPj4gPiBlbnRlcmVkCj4+ID4g wqAJwqAqLwo+PiA+IMKgCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwo ZGV2X3ByaXYpKSB7Cj4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gPiBpbmRleCA1 N2ZiM2FhMDlkYjAuLjdlMmE0MDBkMzNjMyAxMDA2NDQKPj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+PiA+IEBAIC02MDcsNyArNjA3LDYgQEAgc3RydWN0IGk5MTVfcHNyIHsKPj4gPiDCoAli b29sIGxpbmtfc3RhbmRieTsKPj4gPiDCoAlib29sIGNvbG9yaW1ldHJ5X3N1cHBvcnQ7Cj4+ID4g wqAJYm9vbCBhbHBtOwo+PiA+IC0JYm9vbCBoYXNfaHdfdHJhY2tpbmc7Cj4+ID4gwqAJYm9vbCBw c3IyX2VuYWJsZWQ7Cj4+ID4gwqAJdTggc2lua19zeW5jX2xhdGVuY3k7Cj4+ID4gwqAJYm9vbCBk ZWJ1ZzsKPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+ PiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+PiA+IGluZGV4IDQzNjQ5MjJl OTM1ZC4uOTdhOTFlNmFmN2UzIDEwMDY0NAo+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcGNpLmMKPj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jCj4+ ID4gQEAgLTM0MCw3ICszNDAsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9p bmZvCj4+ID4gaW50ZWxfdmFsbGV5dmlld19pbmZvID0gewo+PiA+IMKgCUdFTig3KSwKPj4gPiDC oAkuaXNfbHAgPSAxLAo+PiA+IMKgCS5udW1fcGlwZXMgPSAyLAo+PiA+IC0JLmhhc19wc3IgPSAx LAo+PiA+IMKgCS5oYXNfcnVudGltZV9wbSA9IDEsCj4+ID4gwqAJLmhhc19yYzYgPSAxLAo+PiA+ IMKgCS5oYXNfZ21jaF9kaXNwbGF5ID0gMSwKPj4gPiBAQCAtNDMzLDcgKzQzMiw2IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8KPj4gPiBpbnRlbF9jaGVycnl2aWV3X2lu Zm8gPSB7Cj4+ID4gwqAJLmlzX2xwID0gMSwKPj4gPiDCoAkucmluZ19tYXNrID0gUkVOREVSX1JJ TkcgfCBCU0RfUklORyB8IEJMVF9SSU5HIHwKPj4gPiBWRUJPWF9SSU5HLAo+PiA+IMKgCS5oYXNf NjRiaXRfcmVsb2MgPSAxLAo+PiA+IC0JLmhhc19wc3IgPSAxLAo+PiA+IMKgCS5oYXNfcnVudGlt ZV9wbSA9IDEsCj4+ID4gwqAJLmhhc19yZXNvdXJjZV9zdHJlYW1lciA9IDEsCj4+ID4gwqAJLmhh c19yYzYgPSAxLAo+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaAo+PiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gPiBpbmRleCBk N2RiY2ExYWFiZmYuLmEyYjQwMTg4MDNhYiAxMDA2NDQKPj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaAo+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCj4+ID4gQEAgLTE5MTMsOCArMTkxMyw2IEBAIHZvaWQgaW50ZWxfcHNyX2ZsdXNoKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlCj4+ID4gKmRldl9wcml2LAo+PiA+IMKgCQnCoMKgwqDCoMKg dW5zaWduZWQgZnJvbnRidWZmZXJfYml0cywKPj4gPiDCoAkJwqDCoMKgwqDCoGVudW0gZmJfb3Bf b3JpZ2luIG9yaWdpbik7Cj4+ID4gwqB2b2lkIGludGVsX3Bzcl9pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7Cj4+ID4gLXZvaWQgaW50ZWxfcHNyX3NpbmdsZV9mcmFtZV91 cGRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPj4gPiAqZGV2X3ByaXYsCj4+ID4gLQkJCQnC oMKgwqB1bnNpZ25lZCBmcm9udGJ1ZmZlcl9iaXRzKTsKPj4gPiDCoHZvaWQgaW50ZWxfcHNyX2Nv bXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4+ID4gwqAJCQnCoMKgwqDC oMKgwqBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+PiA+ICpjcnRjX3N0YXRlKTsKPj4gPiDCoHZv aWQgaW50ZWxfcHNyX2lycV9jb250cm9sKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgYm9vbAo+PiA+IGRlYnVnKTsKPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZnJvbnRidWZmZXIuYwo+PiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZnJvbnRidWZmZXIuYwo+PiA+IGluZGV4IDdmZmYwYTBlY2ViNC4uYzMzNzliZGUyNjZmIDEwMDY0 NAo+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Zyb250YnVmZmVyLmMKPj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mcm9udGJ1ZmZlci5jCj4+ID4gQEAg LTE1Myw4ICsxNTMsNiBAQCB2b2lkIGludGVsX2Zyb250YnVmZmVyX2ZsaXBfcHJlcGFyZShzdHJ1 Y3QKPj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gPiDCoAkvKiBSZW1vdmUgc3Rh bGUgYnVzeSBiaXRzIGR1ZSB0byB0aGUgb2xkIGJ1ZmZlci4gKi8KPj4gPiDCoAlkZXZfcHJpdi0+ ZmJfdHJhY2tpbmcuYnVzeV9iaXRzICY9IH5mcm9udGJ1ZmZlcl9iaXRzOwo+PiA+IMKgCXNwaW5f dW5sb2NrKCZkZXZfcHJpdi0+ZmJfdHJhY2tpbmcubG9jayk7Cj4+ID4gLQo+PiA+IC0JaW50ZWxf cHNyX3NpbmdsZV9mcmFtZV91cGRhdGUoZGV2X3ByaXYsIGZyb250YnVmZmVyX2JpdHMpOwo+PiA+ IMKgfQo+PiA+IMKgCj4+ID4gwqAvKioKPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcHNyLmMKPj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5j Cj4+ID4gaW5kZXggZGIyN2YyZmFhMWRlLi4yOTQ0M2QyYzM1YmIgMTAwNjQ0Cj4+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPj4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wc3IuYwo+PiA+IEBAIC05NywxMCArOTcsNiBAQCB2b2lkIGludGVsX3Bz cl9pcnFfY29udHJvbChzdHJ1Y3QKPj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9v bCBkZWJ1ZykKPj4gPiDCoHsKPj4gPiDCoAl1MzIgZGVidWdfbWFzaywgbWFzazsKPj4gPiDCoAo+ PiA+IC0JLyogTm8gUFNSIGludGVycnVwdHMgb24gVkxWL0NIViAqLwo+PiA+IC0JaWYgKElTX1ZB TExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+PiA+IC0JCXJl dHVybjsKPj4gPiAtCj4+ID4gwqAJbWFzayA9IEVEUF9QU1JfRVJST1IoVFJBTlNDT0RFUl9FRFAp Owo+PiA+IMKgCWRlYnVnX21hc2sgPSBFRFBfUFNSX1BPU1RfRVhJVChUUkFOU0NPREVSX0VEUCkg fAo+PiA+IMKgCQnCoMKgwqDCoMKgRURQX1BTUl9QUkVfRU5UUlkoVFJBTlNDT0RFUl9FRFApOwo+ PiA+IEBAIC0yODQsMzEgKzI4MCw2IEBAIHZvaWQgaW50ZWxfcHNyX2luaXRfZHBjZChzdHJ1Y3Qg aW50ZWxfZHAKPj4gPiAqaW50ZWxfZHApCj4+ID4gwqAJfQo+PiA+IMKgfQo+PiA+IMKgCj4+ID4g LXN0YXRpYyBib29sIHZsdl9pc19wc3JfYWN0aXZlX29uX3BpcGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgaW50Cj4+ID4gcGlwZSkKPj4gPiAtewo+PiA+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+PiA+IC0JdWludDMyX3QgdmFsOwo+PiA+IC0K Pj4gPiAtCXZhbCA9IEk5MTVfUkVBRChWTFZfUFNSU1RBVChwaXBlKSkgJgo+PiA+IC0JwqDCoMKg wqDCoMKgVkxWX0VEUF9QU1JfQ1VSUl9TVEFURV9NQVNLOwo+PiA+IC0JcmV0dXJuICh2YWwgPT0g VkxWX0VEUF9QU1JfQUNUSVZFX05PUkZCX1VQKSB8fAo+PiA+IC0JwqDCoMKgwqDCoMKgwqAodmFs ID09IFZMVl9FRFBfUFNSX0FDVElWRV9TRl9VUERBVEUpOwo+PiA+IC19Cj4+ID4gLQo+PiA+IC1z dGF0aWMgdm9pZCB2bHZfcHNyX3NldHVwX3ZzYyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ PiA+IC0JCQnCoMKgwqDCoMKgwqBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+PiA+ICpj cnRjX3N0YXRlKQo+PiA+IC17Cj4+ID4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2lu dGVsX2NydGMoY3J0Y19zdGF0ZS0KPj4gPiA+YmFzZS5jcnRjKTsKPj4gPiAtCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0KPj4gPiA+YmFzZS5kZXYpOwo+ PiA+IC0JdWludDMyX3QgdmFsOwo+PiA+IC0KPj4gPiAtCS8qIFZMViBhdXRvLWdlbmVyYXRlIFZT QyBwYWNrYWdlIGFzIHBlciBFRFAgMS4zIHNwZWMsCj4+ID4gVGFibGUgMy4xMCAqLwo+PiA+IC0J dmFswqDCoD0gSTkxNV9SRUFEKFZMVl9WU0NTRFAoY3J0Yy0+cGlwZSkpOwo+PiA+IC0JdmFsICY9 IH5WTFZfRURQX1BTUl9TRFBfRlJFUV9NQVNLOwo+PiA+IC0JdmFsIHw9IFZMVl9FRFBfUFNSX1NE UF9GUkVRX0VWRlJBTUU7Cj4+ID4gLQlJOTE1X1dSSVRFKFZMVl9WU0NTRFAoY3J0Yy0+cGlwZSks IHZhbCk7Cj4+ID4gLX0KPj4gPiAtCj4+ID4gwqBzdGF0aWMgdm9pZCBoc3dfcHNyX3NldHVwX3Zz YyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+PiA+IMKgCQkJwqDCoMKgwqDCoMKgY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUKPj4gPiAqY3J0Y19zdGF0ZSkKPj4gPiDCoHsKPj4gPiBA QCAtMzQxLDEyICszMTIsNiBAQCBzdGF0aWMgdm9pZCBoc3dfcHNyX3NldHVwX3ZzYyhzdHJ1Y3Qg aW50ZWxfZHAKPj4gPiAqaW50ZWxfZHAsCj4+ID4gwqAJCQkJCURQX1NEUF9WU0MsICZwc3JfdnNj LAo+PiA+IHNpemVvZihwc3JfdnNjKSk7Cj4+ID4gwqB9Cj4+ID4gwqAKPj4gPiAtc3RhdGljIHZv aWQgdmx2X3Bzcl9lbmFibGVfc2luayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+PiA+IC17 Cj4+ID4gLQlkcm1fZHBfZHBjZF93cml0ZWIoJmludGVsX2RwLT5hdXgsIERQX1BTUl9FTl9DRkcs Cj4+ID4gLQkJCcKgwqDCoERQX1BTUl9FTkFCTEUgfAo+PiA+IERQX1BTUl9NQUlOX0xJTktfQUNU SVZFKTsKPj4gPiAtfQo+PiA+IC0KPj4gPiDCoHN0YXRpYyB2b2lkIGhzd19wc3Jfc2V0dXBfYXV4 KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4+ID4gwqB7Cj4+ID4gwqAJc3RydWN0IGludGVs X2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQgPQo+PiA+IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsK Pj4gPiBAQCAtNDAzLDM4ICszNjgsNiBAQCBzdGF0aWMgdm9pZCBoc3dfcHNyX2VuYWJsZV9zaW5r KHN0cnVjdAo+PiA+IGludGVsX2RwICppbnRlbF9kcCkKPj4gPiDCoAlkcm1fZHBfZHBjZF93cml0 ZWIoJmludGVsX2RwLT5hdXgsIERQX1NFVF9QT1dFUiwKPj4gPiBEUF9TRVRfUE9XRVJfRDApOwo+ PiA+IMKgfQo+PiA+IMKgCj4+ID4gLXN0YXRpYyB2b2lkIHZsdl9wc3JfZW5hYmxlX3NvdXJjZShz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+PiA+IC0JCQkJwqDCoGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlCj4+ID4gKmNydGNfc3RhdGUpCj4+ID4gLXsKPj4gPiAtCXN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0KPj4gPiBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7 Cj4+ID4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19w b3J0LQo+PiA+ID5iYXNlLmJhc2UuZGV2KTsKPj4gPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRj ID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLQo+PiA+ID5iYXNlLmNydGMpOwo+PiA+IC0KPj4g PiAtCS8qIFRyYW5zaXRpb24gZnJvbSBQU1Jfc3RhdGUgMCAoZGlzYWJsZWQpIHRvIFBTUl9zdGF0 ZSAxCj4+ID4gKGluYWN0aXZlKSAqLwo+PiA+IC0JSTkxNV9XUklURShWTFZfUFNSQ1RMKGNydGMt PnBpcGUpLAo+PiA+IC0JCcKgwqDCoFZMVl9FRFBfUFNSX01PREVfU1dfVElNRVIgfAo+PiA+IC0J CcKgwqDCoFZMVl9FRFBfUFNSX1NSQ19UUkFOU01JVFRFUl9TVEFURSB8Cj4+ID4gLQkJwqDCoMKg VkxWX0VEUF9QU1JfRU5BQkxFKTsKPj4gPiAtfQo+PiA+IC0KPj4gPiAtc3RhdGljIHZvaWQgdmx2 X3Bzcl9hY3RpdmF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+PiA+IC17Cj4+ID4gLQlz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9Cj4+ID4gZHBfdG9fZGlnX3BvcnQo aW50ZWxfZHApOwo+PiA+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRpZ19wb3J0LT5iYXNl LmJhc2UuZGV2Owo+PiA+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShkZXYpOwo+PiA+IC0Jc3RydWN0IGRybV9jcnRjICpjcnRjID0gZGlnX3BvcnQtPmJhc2Uu YmFzZS5jcnRjOwo+PiA+IC0JZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5w aXBlOwo+PiA+IC0KPj4gPiAtCS8qCj4+ID4gLQnCoCogTGV0J3MgZG8gdGhlIHRyYW5zaXRpb24g ZnJvbSBQU1Jfc3RhdGUgMSAoaW5hY3RpdmUpIHRvCj4+ID4gLQnCoCogUFNSX3N0YXRlIDIgKHRy YW5zaXRpb24gdG8gYWN0aXZlIC0gc3RhdGljIGZyYW1lCj4+ID4gdHJhbnNtaXNzaW9uKS4KPj4g PiAtCcKgKiBUaGVuIEhhcmR3YXJlIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgdHJhbnNpdGlvbiB0 bwo+PiA+IC0JwqAqIFBTUl9zdGF0ZSAzIChhY3RpdmUgLSBubyBSZW1vdGUgRnJhbWUgQnVmZmVy IChSRkIpCj4+ID4gdXBkYXRlKS4KPj4gPiAtCcKgKi8KPj4gPiAtCUk5MTVfV1JJVEUoVkxWX1BT UkNUTChwaXBlKSwgSTkxNV9SRUFEKFZMVl9QU1JDVEwocGlwZSkpIHwKPj4gPiAtCQnCoMKgwqBW TFZfRURQX1BTUl9BQ1RJVkVfRU5UUlkpOwo+PiA+IC19Cj4+ID4gLQo+PiA+IMKgc3RhdGljIHZv aWQgaHN3X2FjdGl2YXRlX3BzcjEoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPj4gPiDCoHsK Pj4gPiDCoAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9Cj4+ID4gZHBfdG9f ZGlnX3BvcnQoaW50ZWxfZHApOwo+PiA+IEBAIC02MDIsMTcgKzUzNSwxMSBAQCB2b2lkIGludGVs X3Bzcl9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZHAKPj4gPiAqaW50ZWxfZHAsCj4+ID4g wqAJwqAqIG9uZXMuIFNpbmNlIGJ5IERpc3BsYXkgZGVzaWduIHRyYW5zY29kZXIgRURQIGlzIHRp ZWQgdG8KPj4gPiBwb3J0IEEKPj4gPiDCoAnCoCogd2UgY2FuIHNhZmVseSBlc2NhcGUgYmFzZWQg b24gdGhlIHBvcnQgQS4KPj4gPiDCoAnCoCovCj4+ID4gLQlpZiAoSEFTX0RESShkZXZfcHJpdikg JiYgZGlnX3BvcnQtPmJhc2UucG9ydCAhPSBQT1JUX0EpIHsKPj4gPiArCWlmIChkaWdfcG9ydC0+ YmFzZS5wb3J0ICE9IFBPUlRfQSkgewo+PiA+IMKgCQlEUk1fREVCVUdfS01TKCJQU1IgY29uZGl0 aW9uIGZhaWxlZDogUG9ydCBub3QKPj4gPiBzdXBwb3J0ZWRcbiIpOwo+PiA+IMKgCQlyZXR1cm47 Cj4+ID4gwqAJfQo+PiA+IMKgCj4+ID4gLQlpZiAoKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8 IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+PiA+ICYmCj4+ID4gLQnCoMKgwqDCoCFkZXZfcHJp di0+cHNyLmxpbmtfc3RhbmRieSkgewo+PiA+IC0JCURSTV9FUlJPUigiUFNSIGNvbmRpdGlvbiBm YWlsZWQ6IExpbmsgb2ZmCj4+ID4gcmVxdWVzdGVkIGJ1dCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMg cGxhdGZvcm1cbiIpOwo+PiA+IC0JCXJldHVybjsKPj4gPiAtCX0KPj4gPiAtCj4+ID4gwqAJaWYg KElTX0hBU1dFTEwoZGV2X3ByaXYpICYmCj4+ID4gwqAJwqDCoMKgwqBJOTE1X1JFQUQoSFNXX1NU RVJFT18zRF9DVEwoY3J0Y19zdGF0ZS0KPj4gPiA+Y3B1X3RyYW5zY29kZXIpKSAmCj4+ID4gwqAJ CcKgwqDCoMKgwqDCoFMzRF9FTkFCTEUpIHsKPj4gPiBAQCAtNzYwLDcgKzY4Nyw2IEBAIHZvaWQg aW50ZWxfcHNyX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHAKPj4gPiAqaW50ZWxfZHAsCj4+ID4gwqAJ CcKgKiBlbmFibGVkLgo+PiA+IMKgCQnCoCogSG93ZXZlciBvbiBzb21lIHBsYXRmb3JtcyB3ZSBm YWNlIGlzc3VlcyB3aGVuCj4+ID4gZmlyc3QKPj4gPiDCoAkJwqAqIGFjdGl2YXRpb24gZm9sbG93 cyBhIG1vZGVzZXQgc28gcXVpY2tseS4KPj4gPiAtCQnCoCrCoMKgwqDCoMKgLSBPbiBWTFYvQ0hW IHdlIGdldCBiYW5rIHNjcmVlbiBvbiBmaXJzdAo+PiA+IGFjdGl2YXRpb24KPj4gPiDCoAkJwqAq wqDCoMKgwqDCoC0gT24gSFNXL0JEVyB3ZSBnZXQgYSByZWNvdmVyYWJsZSBmcm96ZW4KPj4gPiBz Y3JlZW4gdW50aWwKPj4gPiDCoAkJwqAqwqDCoMKgwqDCoMKgwqBuZXh0IGV4aXQtYWN0aXZhdGUg c2VxdWVuY2UuCj4+ID4gwqAJCcKgKi8KPj4gPiBAQCAtNzcyLDM2ICs2OTgsNiBAQCB2b2lkIGlu dGVsX3Bzcl9lbmFibGUoc3RydWN0IGludGVsX2RwCj4+ID4gKmludGVsX2RwLAo+PiA+IMKgCW11 dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPj4gPiDCoH0KPj4gPiDCoAo+PiA+IC1z dGF0aWMgdm9pZCB2bHZfcHNyX2Rpc2FibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPj4g PiAtCQkJwqDCoMKgwqBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+PiA+ICpvbGRfY3J0 Y19zdGF0ZSkKPj4gPiAtewo+PiA+IC0Jc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxf ZGlnX3BvcnQgPQo+PiA+IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPj4gPiAtCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNlLmRldjsKPj4gPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPj4gPiAtCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhvbGRfY3J0Y19zdGF0ZS0KPj4g PiA+YmFzZS5jcnRjKTsKPj4gPiAtCXVpbnQzMl90IHZhbDsKPj4gPiAtCj4+ID4gLQlpZiAoZGV2 X3ByaXYtPnBzci5hY3RpdmUpIHsKPj4gPiAtCQkvKiBQdXQgVkxWIFBTUiBiYWNrIHRvIFBTUl9z dGF0ZSAwIChkaXNhYmxlZCkuICovCj4+ID4gLQkJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVy KGRldl9wcml2LAo+PiA+IC0JCQkJCcKgwqDCoMKgVkxWX1BTUlNUQVQoY3J0Yy0KPj4gPiA+cGlw ZSksCj4+ID4gLQkJCQkJwqDCoMKgwqBWTFZfRURQX1BTUl9JTl9UUkFOUywKPj4gPiAtCQkJCQnC oMKgwqDCoDAsCj4+ID4gLQkJCQkJwqDCoMKgwqAxKSkKPj4gPiAtCQkJV0FSTigxLCAiUFNSIHRy YW5zaXRpb24gdG9vayBsb25nZXIgdGhhbgo+PiA+IGV4cGVjdGVkXG4iKTsKPj4gPiAtCj4+ID4g LQkJdmFsID0gSTkxNV9SRUFEKFZMVl9QU1JDVEwoY3J0Yy0+cGlwZSkpOwo+PiA+IC0JCXZhbCAm PSB+VkxWX0VEUF9QU1JfQUNUSVZFX0VOVFJZOwo+PiA+IC0JCXZhbCAmPSB+VkxWX0VEUF9QU1Jf RU5BQkxFOwo+PiA+IC0JCXZhbCAmPSB+VkxWX0VEUF9QU1JfTU9ERV9NQVNLOwo+PiA+IC0JCUk5 MTVfV1JJVEUoVkxWX1BTUkNUTChjcnRjLT5waXBlKSwgdmFsKTsKPj4gPiAtCj4+ID4gLQkJZGV2 X3ByaXYtPnBzci5hY3RpdmUgPSBmYWxzZTsKPj4gPiAtCX0gZWxzZSB7Cj4+ID4gLQkJV0FSTl9P Tih2bHZfaXNfcHNyX2FjdGl2ZV9vbl9waXBlKGRldiwgY3J0Yy0KPj4gPiA+cGlwZSkpOwo+PiA+ IC0JfQo+PiA+IC19Cj4+ID4gLQo+PiA+IMKgc3RhdGljIHZvaWQgaHN3X3Bzcl9kaXNhYmxlKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4+ID4gwqAJCQnCoMKgwqDCoGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlCj4+ID4gKm9sZF9jcnRjX3N0YXRlKQo+PiA+IMKgewo+PiA+IEBAIC04 OTQsMjEgKzc5MCwxMiBAQCBzdGF0aWMgYm9vbCBwc3Jfd2FpdF9mb3JfaWRsZShzdHJ1Y3QKPj4g PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gPiDCoAlpZiAoIWludGVsX2RwKQo+PiA+ IMKgCQlyZXR1cm4gZmFsc2U7Cj4+ID4gwqAKPj4gPiAtCWlmIChIQVNfRERJKGRldl9wcml2KSkg ewo+PiA+IC0JCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkgewo+PiA+IC0JCQlyZWcg PSBFRFBfUFNSMl9TVEFUVVM7Cj4+ID4gLQkJCW1hc2sgPSBFRFBfUFNSMl9TVEFUVVNfU1RBVEVf TUFTSzsKPj4gPiAtCQl9IGVsc2Ugewo+PiA+IC0JCQlyZWcgPSBFRFBfUFNSX1NUQVRVUzsKPj4g PiAtCQkJbWFzayA9IEVEUF9QU1JfU1RBVFVTX1NUQVRFX01BU0s7Cj4+ID4gLQkJfQo+PiA+ICsJ aWYgKGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkKSB7Cj4+ID4gKwkJcmVnID0gRURQX1BTUjJf U1RBVFVTOwo+PiA+ICsJCW1hc2sgPSBFRFBfUFNSMl9TVEFUVVNfU1RBVEVfTUFTSzsKPj4gPiDC oAl9IGVsc2Ugewo+PiA+IC0JCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9Cj4+ID4gLQkJCWRwX3Rv X2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZS5iYXNlLmNydGM7Cj4+ID4gLQkJZW51bSBwaXBlIHBp cGUgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5waXBlOwo+PiA+IC0KPj4gPiAtCQlyZWcgPSBWTFZf UFNSU1RBVChwaXBlKTsKPj4gPiAtCQltYXNrID0gVkxWX0VEUF9QU1JfSU5fVFJBTlM7Cj4+ID4g KwkJcmVnID0gRURQX1BTUl9TVEFUVVM7Cj4+ID4gKwkJbWFzayA9IEVEUF9QU1JfU1RBVFVTX1NU QVRFX01BU0s7Cj4+ID4gwqAJfQo+PiA+IMKgCj4+ID4gwqAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+cHNyLmxvY2spOwo+PiA+IEBAIC05NTMsMTAyICs4NDAsMjMgQEAgc3RhdGljIHZvaWQgaW50 ZWxfcHNyX3dvcmsoc3RydWN0Cj4+ID4gd29ya19zdHJ1Y3QgKndvcmspCj4+ID4gwqAKPj4gPiDC oHN0YXRpYyB2b2lkIGludGVsX3Bzcl9leGl0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPj4gPiDCoHsKPj4gPiAtCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBkZXZfcHJp di0+cHNyLmVuYWJsZWQ7Cj4+ID4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBkcF90b19kaWdf cG9ydChpbnRlbF9kcCktCj4+ID4gPmJhc2UuYmFzZS5jcnRjOwo+PiA+IC0JZW51bSBwaXBlIHBp cGUgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5waXBlOwo+PiA+IMKgCXUzMiB2YWw7Cj4+ID4gwqAK Pj4gPiDCoAlpZiAoIWRldl9wcml2LT5wc3IuYWN0aXZlKQo+PiA+IMKgCQlyZXR1cm47Cj4+ID4g wqAKPj4gPiAtCWlmIChIQVNfRERJKGRldl9wcml2KSkgewo+PiA+IC0JCWlmIChkZXZfcHJpdi0+ cHNyLnBzcjJfZW5hYmxlZCkgewo+PiA+IC0JCQl2YWwgPSBJOTE1X1JFQUQoRURQX1BTUjJfQ1RM KTsKPj4gPiAtCQkJV0FSTl9PTighKHZhbCAmIEVEUF9QU1IyX0VOQUJMRSkpOwo+PiA+IC0JCQlJ OTE1X1dSSVRFKEVEUF9QU1IyX0NUTCwgdmFsICYKPj4gPiB+RURQX1BTUjJfRU5BQkxFKTsKPj4g PiAtCQl9IGVsc2Ugewo+PiA+IC0JCQl2YWwgPSBJOTE1X1JFQUQoRURQX1BTUl9DVEwpOwo+PiA+ IC0JCQlXQVJOX09OKCEodmFsICYgRURQX1BTUl9FTkFCTEUpKTsKPj4gPiAtCQkJSTkxNV9XUklU RShFRFBfUFNSX0NUTCwgdmFsICYKPj4gPiB+RURQX1BTUl9FTkFCTEUpOwo+PiA+IC0JCX0KPj4g PiArCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkgewo+PiA+ICsJCXZhbCA9IEk5MTVf UkVBRChFRFBfUFNSMl9DVEwpOwo+PiA+ICsJCVdBUk5fT04oISh2YWwgJiBFRFBfUFNSMl9FTkFC TEUpKTsKPj4gPiArCQlJOTE1X1dSSVRFKEVEUF9QU1IyX0NUTCwgdmFsICYgfkVEUF9QU1IyX0VO QUJMRSk7Cj4+ID4gwqAJfSBlbHNlIHsKPj4gPiAtCQl2YWwgPSBJOTE1X1JFQUQoVkxWX1BTUkNU TChwaXBlKSk7Cj4+ID4gLQo+PiA+IC0JCS8qCj4+ID4gLQkJwqAqIEhlcmUgd2UgZG8gdGhlIHRy YW5zaXRpb24gZHJpcmVjdGx5IGZyb20KPj4gPiAtCQnCoCogUFNSX3N0YXRlIDMgKGFjdGl2ZSAt IG5vIFJlbW90ZSBGcmFtZSBCdWZmZXIKPj4gPiAoUkZCKSB1cGRhdGUpIHRvCj4+ID4gLQkJwqAq IFBTUl9zdGF0ZSA1IChleGl0KS4KPj4gPiAtCQnCoCogUFNSIFN0YXRlIDQgKGFjdGl2ZSB3aXRo IHNpbmdsZSBmcmFtZSB1cGRhdGUpCj4+ID4gY2FuIGJlIHNraXBwZWQuCj4+ID4gLQkJwqAqIE9u IFBTUl9zdGF0ZSA1IChleGl0KSBIYXJkd2FyZSBpcyByZXNwb25zaWJsZQo+PiA+IHRvIHRyYW5z aXRpb24KPj4gPiAtCQnCoCogYmFjayB0byBQU1Jfc3RhdGUgMSAoaW5hY3RpdmUpLgo+PiA+IC0J CcKgKiBOb3cgd2UgYXJlIGF0IFNhbWUgc3RhdGUgYWZ0ZXIKPj4gPiB2bHZfcHNyX2VuYWJsZV9z b3VyY2UuCj4+ID4gLQkJwqAqLwo+PiA+IC0JCXZhbCAmPSB+VkxWX0VEUF9QU1JfQUNUSVZFX0VO VFJZOwo+PiA+IC0JCUk5MTVfV1JJVEUoVkxWX1BTUkNUTChwaXBlKSwgdmFsKTsKPj4gPiAtCj4+ ID4gLQkJLyoKPj4gPiAtCQnCoCogU2VuZCBBVVggd2FrZSB1cCAtIFNwZWMgc2F5cyBhZnRlcgo+ PiA+IHRyYW5zaXRpb25pbmcgdG8gUFNSCj4+ID4gLQkJwqAqIGFjdGl2ZSB3ZSBoYXZlIHRvIHNl bmQgQVVYIHdha2UgdXAgYnkgd3JpdGluZwo+PiA+IDAxaCBpbiBEUENECj4+ID4gLQkJwqAqIDYw MGggb2Ygc2luayBkZXZpY2UuCj4+ID4gLQkJwqAqIFhYWDogVGhpcyBtaWdodCBzbG93IGRvd24g dGhlIHRyYW5zaXRpb24sIGJ1dAo+PiA+IHdpdGhvdXQgdGhpcwo+PiA+IC0JCcKgKiBIVyBkb2Vz bid0IGNvbXBsZXRlIHRoZSB0cmFuc2l0aW9uIHRvIFBTUl9zdGF0ZQo+PiA+IDEgYW5kIHdlCj4+ ID4gLQkJwqAqIG5ldmVyIGdldCB0aGUgc2NyZWVuIHVwZGF0ZWQuCj4+ID4gLQkJwqAqLwo+PiA+ IC0JCWRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwgRFBfU0VUX1BPV0VSLAo+PiA+ IC0JCQkJwqDCoMKgRFBfU0VUX1BPV0VSX0QwKTsKPj4gPiArCQl2YWwgPSBJOTE1X1JFQUQoRURQ X1BTUl9DVEwpOwo+PiA+ICsJCVdBUk5fT04oISh2YWwgJiBFRFBfUFNSX0VOQUJMRSkpOwo+PiA+ ICsJCUk5MTVfV1JJVEUoRURQX1BTUl9DVEwsIHZhbCAmIH5FRFBfUFNSX0VOQUJMRSk7Cj4+ID4g wqAJfQo+PiA+IC0KPj4gPiDCoAlkZXZfcHJpdi0+cHNyLmFjdGl2ZSA9IGZhbHNlOwo+PiA+IMKg fQo+PiA+IMKgCj4+ID4gLS8qKgo+PiA+IC0gKiBpbnRlbF9wc3Jfc2luZ2xlX2ZyYW1lX3VwZGF0 ZSAtIFNpbmdsZSBGcmFtZSBVcGRhdGUKPj4gPiAtICogQGRldl9wcml2OiBpOTE1IGRldmljZQo+ PiA+IC0gKiBAZnJvbnRidWZmZXJfYml0czogZnJvbnRidWZmZXIgcGxhbmUgdHJhY2tpbmcgYml0 cwo+PiA+IC0gKgo+PiA+IC0gKiBTb21lIHBsYXRmb3JtcyBzdXBwb3J0IGEgc2luZ2xlIGZyYW1l IHVwZGF0ZSBmZWF0dXJlIHRoYXQgaXMKPj4gPiB1c2VkIHRvCj4+ID4gLSAqIHNlbmQgYW5kIHVw ZGF0ZSBvbmx5IG9uZSBmcmFtZSBvbiBSZW1vdGUgRnJhbWUgQnVmZmVyLgo+PiA+IC0gKiBTbyBm YXIgaXQgaXMgb25seSBpbXBsZW1lbnRlZCBmb3IgVmFsbGV5dmlldyBhbmQgQ2hlcnJ5dmlldwo+ PiA+IGJlY2F1c2UKPj4gPiAtICogaGFyZHdhcmUgcmVxdWlyZXMgdGhpcyB0byBiZSBkb25lIGJl Zm9yZSBhIHBhZ2UgZmxpcC4KPj4gPiAtICovCj4+ID4gLXZvaWQgaW50ZWxfcHNyX3NpbmdsZV9m cmFtZV91cGRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPj4gPiAqZGV2X3ByaXYsCj4+ID4g LQkJCQnCoMKgwqB1bnNpZ25lZCBmcm9udGJ1ZmZlcl9iaXRzKQo+PiA+IC17Cj4+ID4gLQlzdHJ1 Y3QgZHJtX2NydGMgKmNydGM7Cj4+ID4gLQllbnVtIHBpcGUgcGlwZTsKPj4gPiAtCXUzMiB2YWw7 Cj4+ID4gLQo+PiA+IC0JaWYgKCFDQU5fUFNSKGRldl9wcml2KSkKPj4gPiAtCQlyZXR1cm47Cj4+ ID4gLQo+PiA+IC0JLyoKPj4gPiAtCcKgKiBTaW5nbGUgZnJhbWUgdXBkYXRlIGlzIGFscmVhZHkg c3VwcG9ydGVkIG9uIEJEVysgYnV0IGl0Cj4+ID4gcmVxdWlyZXMKPj4gPiAtCcKgKiBtYW55IFcv QSBhbmQgaXQgaXNuJ3QgcmVhbGx5IG5lZWRlZC4KPj4gPiAtCcKgKi8KPj4gPiAtCWlmICghSVNf VkFMTEVZVklFVyhkZXZfcHJpdikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+PiA+IC0J CXJldHVybjsKPj4gPiAtCj4+ID4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ PiA+IC0JaWYgKCFkZXZfcHJpdi0+cHNyLmVuYWJsZWQpIHsKPj4gPiAtCQltdXRleF91bmxvY2so JmRldl9wcml2LT5wc3IubG9jayk7Cj4+ID4gLQkJcmV0dXJuOwo+PiA+IC0JfQo+PiA+IC0KPj4g PiAtCWNydGMgPSBkcF90b19kaWdfcG9ydChkZXZfcHJpdi0+cHNyLmVuYWJsZWQpLQo+PiA+ID5i YXNlLmJhc2UuY3J0YzsKPj4gPiAtCXBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5waXBlOwo+ PiA+IC0KPj4gPiAtCWlmIChmcm9udGJ1ZmZlcl9iaXRzICYgSU5URUxfRlJPTlRCVUZGRVJfQUxM X01BU0socGlwZSkpIHsKPj4gPiAtCQl2YWwgPSBJOTE1X1JFQUQoVkxWX1BTUkNUTChwaXBlKSk7 Cj4+ID4gLQo+PiA+IC0JCS8qCj4+ID4gLQkJwqAqIFdlIG5lZWQgdG8gc2V0IHRoaXMgYml0IGJl Zm9yZSB3cml0aW5nCj4+ID4gcmVnaXN0ZXJzIGZvciBhIGZsaXAuCj4+ID4gLQkJwqAqIFRoaXMg Yml0IHdpbGwgYmUgc2VsZi1jbGVhciB3aGVuIGl0IGdldHMgdG8gdGhlCj4+ID4gUFNSIGFjdGl2 ZSBzdGF0ZS4KPj4gPiAtCQnCoCovCj4+ID4gLQkJSTkxNV9XUklURShWTFZfUFNSQ1RMKHBpcGUp LCB2YWwgfAo+PiA+IFZMVl9FRFBfUFNSX1NJTkdMRV9GUkFNRV9VUERBVEUpOwo+PiA+IC0JfQo+ PiA+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+PiA+IC19Cj4+ID4gLQo+ PiA+IMKgLyoqCj4+ID4gwqAgKiBpbnRlbF9wc3JfaW52YWxpZGF0ZSAtIEludmFsaWRhZGUgUFNS Cj4+ID4gwqAgKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlCj4+ID4gQEAgLTEwNzEsNyArODc5LDcg QEAgdm9pZCBpbnRlbF9wc3JfaW52YWxpZGF0ZShzdHJ1Y3QKPj4gPiBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPj4gPiDCoAlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQo+PiA+IMKgCQlyZXR1 cm47Cj4+ID4gwqAKPj4gPiAtCWlmIChkZXZfcHJpdi0+cHNyLmhhc19od190cmFja2luZyAmJiBv cmlnaW4gPT0KPj4gPiBPUklHSU5fRkxJUCkKPj4gPiArCWlmIChvcmlnaW4gPT0gT1JJR0lOX0ZM SVApCj4+ID4gwqAJCXJldHVybjsKPj4gPiDCoAo+PiA+IMKgCW11dGV4X2xvY2soJmRldl9wcml2 LT5wc3IubG9jayk7Cj4+ID4gQEAgLTExMTQsNyArOTIyLDcgQEAgdm9pZCBpbnRlbF9wc3JfZmx1 c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPj4gPiAqZGV2X3ByaXYsCj4+ID4gwqAJaWYgKCFD QU5fUFNSKGRldl9wcml2KSkKPj4gPiDCoAkJcmV0dXJuOwo+PiA+IMKgCj4+ID4gLQlpZiAoZGV2 X3ByaXYtPnBzci5oYXNfaHdfdHJhY2tpbmcgJiYgb3JpZ2luID09Cj4+ID4gT1JJR0lOX0ZMSVAp Cj4+ID4gKwlpZiAob3JpZ2luID09IE9SSUdJTl9GTElQKQo+PiA+IMKgCQlyZXR1cm47Cj4+ID4g wqAKPj4gPiDCoAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+PiA+IEBAIC0xMTMx LDggKzkzOSw3IEBAIHZvaWQgaW50ZWxfcHNyX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl Cj4+ID4gKmRldl9wcml2LAo+PiA+IMKgCj4+ID4gwqAJLyogQnkgZGVmaW5pdGlvbiBmbHVzaCA9 IGludmFsaWRhdGUgKyBmbHVzaCAqLwo+PiA+IMKgCWlmIChmcm9udGJ1ZmZlcl9iaXRzKSB7Cj4+ ID4gLQkJaWYgKGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkIHx8Cj4+ID4gLQkJwqDCoMKgwqBJ U19WQUxMRVlWSUVXKGRldl9wcml2KSB8fAo+PiA+IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7 Cj4+ID4gKwkJaWYgKGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkKSB7Cj4+ID4gwqAJCQlpbnRl bF9wc3JfZXhpdChkZXZfcHJpdik7Cj4+ID4gwqAJCX0gZWxzZSB7Cj4+ID4gwqAJCQkvKgo+PiA+ IEBAIC0xMTg0LDkgKzk5MSw2IEBAIHZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUKPj4gPiAqZGV2X3ByaXYpCj4+ID4gwqAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYp IHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4+ID4gwqAJCS8qIEhTVyBhbmQgQkRXIHJlcXVp cmUgd29ya2Fyb3VuZHMgdGhhdCB3ZSBkb24ndAo+PiA+IGltcGxlbWVudC4gKi8KPj4gPiDCoAkJ ZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkgPSBmYWxzZTsKPj4gPiAtCWVsc2UgaWYgKElTX1ZB TExFWVZJRVcoZGV2X3ByaXYpIHx8Cj4+ID4gSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4+ID4g LQkJLyogT24gVkxWIGFuZCBDSFYgb25seSBzdGFuZGJ5IG1vZGUgaXMgc3VwcG9ydGVkLgo+PiA+ ICovCj4+ID4gLQkJZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkgPSB0cnVlOwo+PiA+IMKgCWVs c2UKPj4gPiDCoAkJLyogRm9yIG5ldyBwbGF0Zm9ybXMgbGV0J3MgcmVzcGVjdCBWQlQgYmFjayBh Z2Fpbgo+PiA+ICovCj4+ID4gwqAJCWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0gZGV2X3By aXYtCj4+ID4gPnZidC5wc3IuZnVsbF9saW5rOwo+PiA+IEBAIC0xMjA0LDE4ICsxMDA4LDEwIEBA IHZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPj4gPiAqZGV2X3By aXYpCj4+ID4gwqAJSU5JVF9ERUxBWUVEX1dPUksoJmRldl9wcml2LT5wc3Iud29yaywgaW50ZWxf cHNyX3dvcmspOwo+PiA+IMKgCW11dGV4X2luaXQoJmRldl9wcml2LT5wc3IubG9jayk7Cj4+ID4g wqAKPj4gPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRl dl9wcml2KSkgewo+PiA+IC0JCWRldl9wcml2LT5wc3IuZW5hYmxlX3NvdXJjZSA9Cj4+ID4gdmx2 X3Bzcl9lbmFibGVfc291cmNlOwo+PiA+IC0JCWRldl9wcml2LT5wc3IuZGlzYWJsZV9zb3VyY2Ug PSB2bHZfcHNyX2Rpc2FibGU7Cj4+ID4gLQkJZGV2X3ByaXYtPnBzci5lbmFibGVfc2luayA9IHZs dl9wc3JfZW5hYmxlX3Npbms7Cj4+ID4gLQkJZGV2X3ByaXYtPnBzci5hY3RpdmF0ZSA9IHZsdl9w c3JfYWN0aXZhdGU7Cj4+ID4gLQkJZGV2X3ByaXYtPnBzci5zZXR1cF92c2MgPSB2bHZfcHNyX3Nl dHVwX3ZzYzsKPj4gPiAtCX0gZWxzZSB7Cj4+ID4gLQkJZGV2X3ByaXYtPnBzci5oYXNfaHdfdHJh Y2tpbmcgPSB0cnVlOwo+PiA+IC0JCWRldl9wcml2LT5wc3IuZW5hYmxlX3NvdXJjZSA9Cj4+ID4g aHN3X3Bzcl9lbmFibGVfc291cmNlOwo+PiA+IC0JCWRldl9wcml2LT5wc3IuZGlzYWJsZV9zb3Vy Y2UgPSBoc3dfcHNyX2Rpc2FibGU7Cj4+ID4gLQkJZGV2X3ByaXYtPnBzci5lbmFibGVfc2luayA9 IGhzd19wc3JfZW5hYmxlX3Npbms7Cj4+ID4gLQkJZGV2X3ByaXYtPnBzci5hY3RpdmF0ZSA9IGhz d19wc3JfYWN0aXZhdGU7Cj4+ID4gLQkJZGV2X3ByaXYtPnBzci5zZXR1cF92c2MgPSBoc3dfcHNy X3NldHVwX3ZzYzsKPj4gPiAtCX0KPj4gPiArCWRldl9wcml2LT5wc3IuZW5hYmxlX3NvdXJjZSA9 IGhzd19wc3JfZW5hYmxlX3NvdXJjZTsKPj4gPiArCWRldl9wcml2LT5wc3IuZGlzYWJsZV9zb3Vy Y2UgPSBoc3dfcHNyX2Rpc2FibGU7Cj4+ID4gKwlkZXZfcHJpdi0+cHNyLmVuYWJsZV9zaW5rID0g aHN3X3Bzcl9lbmFibGVfc2luazsKPj4gPiArCWRldl9wcml2LT5wc3IuYWN0aXZhdGUgPSBoc3df cHNyX2FjdGl2YXRlOwo+PiA+ICsJZGV2X3ByaXYtPnBzci5zZXR1cF92c2MgPSBoc3dfcHNyX3Nl dHVwX3ZzYzsKPj4gPiArCj4+ID4gwqB9CgotLSAKSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291 cmNlIEdyYXBoaWNzIENlbnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK