From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dhinakaran Pandiyan Subject: Re: [PATCH] drm/i915/psr: Nuke PSR support for VLV and CHV Date: Mon, 14 May 2018 10:35:32 -0700 Message-ID: <1526319332.17473.37.camel@intel.com> References: <20180511230059.19387-1-dhinakaran.pandiyan@intel.com> <87zi1238nv.fsf@intel.com> Reply-To: dhinakaran.pandiyan@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 0F5126E0D9 for ; Mon, 14 May 2018 17:10:13 +0000 (UTC) In-Reply-To: <87zi1238nv.fsf@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula , intel-gfx@lists.freedesktop.org Cc: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAyMDE4LTA1LTE0IGF0IDEyOjA5ICswMzAwLCBKYW5pIE5pa3VsYSB3cm90ZToKPiBP biBGcmksIDExIE1heSAyMDE4LCBEaGluYWthcmFuIFBhbmRpeWFuIDxkaGluYWthcmFuLnBhbmRp eWFuQGludGVsLmMKPiBvbT4gd3JvdGU6Cj4gPiAKPiA+IFBTUiBoYXJkd2FyZSBhbmQgaGVuY2Ug dGhlIGRyaXZlciBjb2RlIGZvciBWTFYgYW5kIENIViBkZXZpYXRlcyBhCj4gPiBsb3QgZnJvbQo+ ID4gdGhlaXIgRERJIGNvdW50ZXJwYXJ0cy4gV2hpbGUgdGhlIGZlYXR1cmUgaGFzIGJlZW4gZGlz YWJsZWQgZm9yIGEKPiA+IGxvbmcgdGltZQo+ID4gbm93LCByZXRhaW5pbmcgc3VwcG9ydCBmb3Ig dGhlc2UgcGxhdGZvcm1zIGlzIGEgbWFpbnRlbmFuY2UgYnVyZGVuLgo+ID4gVGhlcmUKPiA+IGhh dmUgYmVlbiBtdWx0aXBsZSByZWZhY3RvcmluZyBjb21taXRzIHRvIGp1c3Qga2VlcCB0aGUgZXhp c3RpbmcKPiA+IGNvZGUgZm9yCj4gPiB0aGVzZSBwbGF0Zm9ybXMgaW4gbGluZSB3aXRoIHRoZSBy ZXN0LiBUaGVyZSBhcmUga25vd24gaXNzdWVzIHRoYXQKPiA+IG5lZWQgdG8KPiA+IGJlIGZpeGVk IHRvIGVuYWJsZSBQU1Igb24gdGhlc2UgcGxhdGZvcm1zLCBhbmQgdGhlcmUgaXMgbm8gUFNSCj4g PiBjYXBhYmxlCj4gPiBwbGF0Zm9ybSBpbiBDSSB0byBlbnN1cmUgdGhlIGNvZGUgZG9lcyBub3Qg YnJlYWsgYWdhaW4gaWYgd2UgZ2V0Cj4gPiBhcm91bmQgdG8KPiA+IGZpeGluZyB0aGUgZXhpc3Rp bmcgaXNzdWVzLiBPbiBhY2NvdW50IG9mIGFsbCB0aGVzZSByZWFzb25zLCBsZXQncwo+ID4gbnVr ZQo+ID4gdGhpcyBjb2RlIGZvciBub3cgYW5kIGJyaW5nIGl0IGJhY2sgaWYgYSBuZWVkIGFyaXNl cyBpbiB0aGUgZnV0dXJlLgo+ID4gCj4gPiBDYzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGlu dGVsLmNvbT4KPiA+IENjOiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+Cj4g PiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+ IFNpZ25lZC1vZmYtYnk6IERoaW5ha2FyYW4gUGFuZGl5YW4gPGRoaW5ha2FyYW4ucGFuZGl5YW5A aW50ZWwuY29tPgo+IEFja2VkLWJ5OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29t Pgo+IApUaGFuayB5b3UuwqAKCkluY2x1ZGluZyBSb2RyaWdvJ3MgYWNrIHRoYXQgd2FzIHNlbnQg aW50ZXJuYWxseQpBY2tlZC1ieTogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29t PsKgCgoKPiA+IAo+ID4gLS0tCj4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jwqDCoMKgwqDCoMKgfMKgwqA0MiArLS0tLS0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDEgLQo+ID4gwqBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BjaS5jwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKgMiAtCj4gPiDC oGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5owqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDC oDIgLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mcm9udGJ1ZmZlci5jIHzCoMKg wqAyIC0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmPCoMKgwqDCoMKgwqDC oMKgwqB8IDI0OCArKystLS0tLS0tLS0tLS0tLQo+ID4gLS0tLS0tLS0tLS0tLS0KPiA+IMKgNiBm aWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAyNzAgZGVsZXRpb25zKC0pCj4gPiAKPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ID4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ID4gaW5kZXggMTNlN2I5ZTRhNmU2 Li4wMDk2ZTIwOWZlMDQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK PiA+IEBAIC0yNjMwLDggKzI2MzAsNiBAQCBzdGF0aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMo c3RydWN0Cj4gPiBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiA+IMKgewo+ID4gwqAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tCj4gPiA+cHJpdmF0 ZSk7Cj4gPiDCoAl1MzIgcHNycGVyZiA9IDA7Cj4gPiAtCXUzMiBzdGF0WzNdOwo+ID4gLQllbnVt IHBpcGUgcGlwZTsKPiA+IMKgCWJvb2wgZW5hYmxlZCA9IGZhbHNlOwo+ID4gwqAJYm9vbCBzaW5r X3N1cHBvcnQ7Cj4gPiDCoAo+ID4gQEAgLTI2NTIsNDcgKzI2NTAsMTcgQEAgc3RhdGljIGludCBp OTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdAo+ID4gc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4g PiDCoAlzZXFfcHJpbnRmKG0sICJSZS1lbmFibGUgd29yayBzY2hlZHVsZWQ6ICVzXG4iLAo+ID4g wqAJCcKgwqDCoHllc25vKHdvcmtfYnVzeSgmZGV2X3ByaXYtPnBzci53b3JrLndvcmspKSk7Cj4g PiDCoAo+ID4gLQlpZiAoSEFTX0RESShkZXZfcHJpdikpIHsKPiA+IC0JCWlmIChkZXZfcHJpdi0+ cHNyLnBzcjJfZW5hYmxlZCkKPiA+IC0JCQllbmFibGVkID0gSTkxNV9SRUFEKEVEUF9QU1IyX0NU TCkgJgo+ID4gRURQX1BTUjJfRU5BQkxFOwo+ID4gLQkJZWxzZQo+ID4gLQkJCWVuYWJsZWQgPSBJ OTE1X1JFQUQoRURQX1BTUl9DVEwpICYKPiA+IEVEUF9QU1JfRU5BQkxFOwo+ID4gLQl9IGVsc2Ug ewo+ID4gLQkJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkgewo+ID4gLQkJCWVudW0gdHJh bnNjb2RlciBjcHVfdHJhbnNjb2RlciA9Cj4gPiAtCQkJCWludGVsX3BpcGVfdG9fY3B1X3RyYW5z Y29kZXIoZGV2X3AKPiA+IHJpdiwgcGlwZSk7Cj4gPiAtCQkJZW51bSBpbnRlbF9kaXNwbGF5X3Bv d2VyX2RvbWFpbgo+ID4gcG93ZXJfZG9tYWluOwo+ID4gLQo+ID4gLQkJCXBvd2VyX2RvbWFpbiA9 Cj4gPiBQT1dFUl9ET01BSU5fVFJBTlNDT0RFUihjcHVfdHJhbnNjb2Rlcik7Cj4gPiAtCQkJaWYK PiA+ICghaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwKPiA+IC0J CQkJCQkJCXBvCj4gPiB3ZXJfZG9tYWluKSkKPiA+IC0JCQkJY29udGludWU7Cj4gPiAtCj4gPiAt CQkJc3RhdFtwaXBlXSA9IEk5MTVfUkVBRChWTFZfUFNSU1RBVChwaXBlKSkKPiA+ICYKPiA+IC0J CQkJVkxWX0VEUF9QU1JfQ1VSUl9TVEFURV9NQVNLOwo+ID4gLQkJCWlmICgoc3RhdFtwaXBlXSA9 PQo+ID4gVkxWX0VEUF9QU1JfQUNUSVZFX05PUkZCX1VQKSB8fAo+ID4gLQkJCcKgwqDCoMKgKHN0 YXRbcGlwZV0gPT0KPiA+IFZMVl9FRFBfUFNSX0FDVElWRV9TRl9VUERBVEUpKQo+ID4gLQkJCQll bmFibGVkID0gdHJ1ZTsKPiA+IC0KPiA+IC0JCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZf cHJpdiwKPiA+IHBvd2VyX2RvbWFpbik7Cj4gPiAtCQl9Cj4gPiAtCX0KPiA+ICsJaWYgKGRldl9w cml2LT5wc3IucHNyMl9lbmFibGVkKQo+ID4gKwkJZW5hYmxlZCA9IEk5MTVfUkVBRChFRFBfUFNS Ml9DVEwpICYKPiA+IEVEUF9QU1IyX0VOQUJMRTsKPiA+ICsJZWxzZQo+ID4gKwkJZW5hYmxlZCA9 IEk5MTVfUkVBRChFRFBfUFNSX0NUTCkgJiBFRFBfUFNSX0VOQUJMRTsKPiA+IMKgCj4gPiDCoAlz ZXFfcHJpbnRmKG0sICJNYWluIGxpbmsgaW4gc3RhbmRieSBtb2RlOiAlc1xuIiwKPiA+IMKgCQnC oMKgwqB5ZXNubyhkZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSkpOwo+ID4gwqAKPiA+IC0Jc2Vx X3ByaW50ZihtLCAiSFcgRW5hYmxlZCAmIEFjdGl2ZSBiaXQ6ICVzIiwKPiA+IHllc25vKGVuYWJs ZWQpKTsKPiA+IC0KPiA+IC0JaWYgKCFIQVNfRERJKGRldl9wcml2KSkKPiA+IC0JCWZvcl9lYWNo X3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsKPiA+IC0JCQlpZiAoKHN0YXRbcGlwZV0gPT0KPiA+IFZM Vl9FRFBfUFNSX0FDVElWRV9OT1JGQl9VUCkgfHwKPiA+IC0JCQnCoMKgwqDCoChzdGF0W3BpcGVd ID09Cj4gPiBWTFZfRURQX1BTUl9BQ1RJVkVfU0ZfVVBEQVRFKSkKPiA+IC0JCQkJc2VxX3ByaW50 ZihtLCAiIHBpcGUgJWMiLAo+ID4gcGlwZV9uYW1lKHBpcGUpKTsKPiA+IC0JCX0KPiA+IC0Jc2Vx X3B1dHMobSwgIlxuIik7Cj4gPiArCXNlcV9wcmludGYobSwgIkhXIEVuYWJsZWQgJiBBY3RpdmUg Yml0OiAlc1xuIiwKPiA+IHllc25vKGVuYWJsZWQpKTsKPiA+IMKgCj4gPiDCoAkvKgo+ID4gLQnC oCogVkxWL0NIViBQU1IgaGFzIG5vIGtpbmQgb2YgcGVyZm9ybWFuY2UgY291bnRlcgo+ID4gwqAJ wqAqIFNLTCsgUGVyZiBjb3VudGVyIGlzIHJlc2V0IHRvIDAgZXZlcnl0aW1lIERDIHN0YXRlIGlz Cj4gPiBlbnRlcmVkCj4gPiDCoAnCoCovCj4gPiDCoAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikg fHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+ID4gaW5kZXggNTdmYjNhYTA5ZGIwLi43ZTJhNDAwZDMzYzMgMTAwNjQ0Cj4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4gPiBAQCAtNjA3LDcgKzYwNyw2IEBAIHN0cnVjdCBpOTE1X3BzciB7 Cj4gPiDCoAlib29sIGxpbmtfc3RhbmRieTsKPiA+IMKgCWJvb2wgY29sb3JpbWV0cnlfc3VwcG9y dDsKPiA+IMKgCWJvb2wgYWxwbTsKPiA+IC0JYm9vbCBoYXNfaHdfdHJhY2tpbmc7Cj4gPiDCoAli b29sIHBzcjJfZW5hYmxlZDsKPiA+IMKgCXU4IHNpbmtfc3luY19sYXRlbmN5Owo+ID4gwqAJYm9v bCBkZWJ1ZzsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5j Cj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKPiA+IGluZGV4IDQzNjQ5MjJl OTM1ZC4uOTdhOTFlNmFmN2UzIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9wY2kuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+ID4g QEAgLTM0MCw3ICszNDAsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZv Cj4gPiBpbnRlbF92YWxsZXl2aWV3X2luZm8gPSB7Cj4gPiDCoAlHRU4oNyksCj4gPiDCoAkuaXNf bHAgPSAxLAo+ID4gwqAJLm51bV9waXBlcyA9IDIsCj4gPiAtCS5oYXNfcHNyID0gMSwKPiA+IMKg CS5oYXNfcnVudGltZV9wbSA9IDEsCj4gPiDCoAkuaGFzX3JjNiA9IDEsCj4gPiDCoAkuaGFzX2dt Y2hfZGlzcGxheSA9IDEsCj4gPiBAQCAtNDMzLDcgKzQzMiw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgaW50ZWxfZGV2aWNlX2luZm8KPiA+IGludGVsX2NoZXJyeXZpZXdfaW5mbyA9IHsKPiA+IMKg CS5pc19scCA9IDEsCj4gPiDCoAkucmluZ19tYXNrID0gUkVOREVSX1JJTkcgfCBCU0RfUklORyB8 IEJMVF9SSU5HIHwKPiA+IFZFQk9YX1JJTkcsCj4gPiDCoAkuaGFzXzY0Yml0X3JlbG9jID0gMSwK PiA+IC0JLmhhc19wc3IgPSAxLAo+ID4gwqAJLmhhc19ydW50aW1lX3BtID0gMSwKPiA+IMKgCS5o YXNfcmVzb3VyY2Vfc3RyZWFtZXIgPSAxLAo+ID4gwqAJLmhhc19yYzYgPSAxLAo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiBpbmRleCBkN2RiY2ExYWFiZmYuLmEyYjQwMTg4MDNh YiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gQEAgLTE5MTMsOCArMTkx Myw2IEBAIHZvaWQgaW50ZWxfcHNyX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiAq ZGV2X3ByaXYsCj4gPiDCoAkJwqDCoMKgwqDCoHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMsCj4g PiDCoAkJwqDCoMKgwqDCoGVudW0gZmJfb3Bfb3JpZ2luIG9yaWdpbik7Cj4gPiDCoHZvaWQgaW50 ZWxfcHNyX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+IC12b2lk IGludGVsX3Bzcl9zaW5nbGVfZnJhbWVfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4g PiAqZGV2X3ByaXYsCj4gPiAtCQkJCcKgwqDCoHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMpOwo+ ID4gwqB2b2lkIGludGVsX3Bzcl9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwLAo+ID4gwqAJCQnCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ID4gKmNy dGNfc3RhdGUpOwo+ID4gwqB2b2lkIGludGVsX3Bzcl9pcnFfY29udHJvbChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wKPiA+IGRlYnVnKTsKPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mcm9udGJ1ZmZlci5jCj4gPiBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Zyb250YnVmZmVyLmMKPiA+IGluZGV4IDdmZmYwYTBlY2ViNC4uYzMz NzliZGUyNjZmIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZnJv bnRidWZmZXIuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZnJvbnRidWZm ZXIuYwo+ID4gQEAgLTE1Myw4ICsxNTMsNiBAQCB2b2lkIGludGVsX2Zyb250YnVmZmVyX2ZsaXBf cHJlcGFyZShzdHJ1Y3QKPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gwqAJLyog UmVtb3ZlIHN0YWxlIGJ1c3kgYml0cyBkdWUgdG8gdGhlIG9sZCBidWZmZXIuICovCj4gPiDCoAlk ZXZfcHJpdi0+ZmJfdHJhY2tpbmcuYnVzeV9iaXRzICY9IH5mcm9udGJ1ZmZlcl9iaXRzOwo+ID4g wqAJc3Bpbl91bmxvY2soJmRldl9wcml2LT5mYl90cmFja2luZy5sb2NrKTsKPiA+IC0KPiA+IC0J aW50ZWxfcHNyX3NpbmdsZV9mcmFtZV91cGRhdGUoZGV2X3ByaXYsIGZyb250YnVmZmVyX2JpdHMp Owo+ID4gwqB9Cj4gPiDCoAo+ID4gwqAvKioKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wc3IuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3Iu Ywo+ID4gaW5kZXggZGIyN2YyZmFhMWRlLi4yOTQ0M2QyYzM1YmIgMTAwNjQ0Cj4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcHNyLmMKPiA+IEBAIC05NywxMCArOTcsNiBAQCB2b2lkIGludGVsX3Bzcl9p cnFfY29udHJvbChzdHJ1Y3QKPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIGRl YnVnKQo+ID4gwqB7Cj4gPiDCoAl1MzIgZGVidWdfbWFzaywgbWFzazsKPiA+IMKgCj4gPiAtCS8q IE5vIFBTUiBpbnRlcnJ1cHRzIG9uIFZMVi9DSFYgKi8KPiA+IC0JaWYgKElTX1ZBTExFWVZJRVco ZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ID4gLQkJcmV0dXJuOwo+ID4g LQo+ID4gwqAJbWFzayA9IEVEUF9QU1JfRVJST1IoVFJBTlNDT0RFUl9FRFApOwo+ID4gwqAJZGVi dWdfbWFzayA9IEVEUF9QU1JfUE9TVF9FWElUKFRSQU5TQ09ERVJfRURQKSB8Cj4gPiDCoAkJwqDC oMKgwqDCoEVEUF9QU1JfUFJFX0VOVFJZKFRSQU5TQ09ERVJfRURQKTsKPiA+IEBAIC0yODQsMzEg KzI4MCw2IEBAIHZvaWQgaW50ZWxfcHNyX2luaXRfZHBjZChzdHJ1Y3QgaW50ZWxfZHAKPiA+ICpp bnRlbF9kcCkKPiA+IMKgCX0KPiA+IMKgfQo+ID4gwqAKPiA+IC1zdGF0aWMgYm9vbCB2bHZfaXNf cHNyX2FjdGl2ZV9vbl9waXBlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludAo+ID4gcGlwZSkK PiA+IC17Cj4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZGV2KTsKPiA+IC0JdWludDMyX3QgdmFsOwo+ID4gLQo+ID4gLQl2YWwgPSBJOTE1X1JFQUQoVkxW X1BTUlNUQVQocGlwZSkpICYKPiA+IC0JwqDCoMKgwqDCoMKgVkxWX0VEUF9QU1JfQ1VSUl9TVEFU RV9NQVNLOwo+ID4gLQlyZXR1cm4gKHZhbCA9PSBWTFZfRURQX1BTUl9BQ1RJVkVfTk9SRkJfVVAp IHx8Cj4gPiAtCcKgwqDCoMKgwqDCoMKgKHZhbCA9PSBWTFZfRURQX1BTUl9BQ1RJVkVfU0ZfVVBE QVRFKTsKPiA+IC19Cj4gPiAtCj4gPiAtc3RhdGljIHZvaWQgdmx2X3Bzcl9zZXR1cF92c2Moc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwKPiA+IC0JCQnCoMKgwqDCoMKgwqBjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZQo+ID4gKmNydGNfc3RhdGUpCj4gPiAtewo+ID4gLQlzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0KPiA+ID5iYXNlLmNydGMp Owo+ID4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMt Cj4gPiA+YmFzZS5kZXYpOwo+ID4gLQl1aW50MzJfdCB2YWw7Cj4gPiAtCj4gPiAtCS8qIFZMViBh dXRvLWdlbmVyYXRlIFZTQyBwYWNrYWdlIGFzIHBlciBFRFAgMS4zIHNwZWMsCj4gPiBUYWJsZSAz LjEwICovCj4gPiAtCXZhbMKgwqA9IEk5MTVfUkVBRChWTFZfVlNDU0RQKGNydGMtPnBpcGUpKTsK PiA+IC0JdmFsICY9IH5WTFZfRURQX1BTUl9TRFBfRlJFUV9NQVNLOwo+ID4gLQl2YWwgfD0gVkxW X0VEUF9QU1JfU0RQX0ZSRVFfRVZGUkFNRTsKPiA+IC0JSTkxNV9XUklURShWTFZfVlNDU0RQKGNy dGMtPnBpcGUpLCB2YWwpOwo+ID4gLX0KPiA+IC0KPiA+IMKgc3RhdGljIHZvaWQgaHN3X3Bzcl9z ZXR1cF92c2Moc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiA+IMKgCQkJwqDCoMKgwqDCoMKg Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUKPiA+ICpjcnRjX3N0YXRlKQo+ID4gwqB7Cj4g PiBAQCAtMzQxLDEyICszMTIsNiBAQCBzdGF0aWMgdm9pZCBoc3dfcHNyX3NldHVwX3ZzYyhzdHJ1 Y3QgaW50ZWxfZHAKPiA+ICppbnRlbF9kcCwKPiA+IMKgCQkJCQlEUF9TRFBfVlNDLCAmcHNyX3Zz YywKPiA+IHNpemVvZihwc3JfdnNjKSk7Cj4gPiDCoH0KPiA+IMKgCj4gPiAtc3RhdGljIHZvaWQg dmx2X3Bzcl9lbmFibGVfc2luayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gLXsKPiA+ IC0JZHJtX2RwX2RwY2Rfd3JpdGViKCZpbnRlbF9kcC0+YXV4LCBEUF9QU1JfRU5fQ0ZHLAo+ID4g LQkJCcKgwqDCoERQX1BTUl9FTkFCTEUgfAo+ID4gRFBfUFNSX01BSU5fTElOS19BQ1RJVkUpOwo+ ID4gLX0KPiA+IC0KPiA+IMKgc3RhdGljIHZvaWQgaHN3X3Bzcl9zZXR1cF9hdXgoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCkKPiA+IMKgewo+ID4gwqAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9y dCAqZGlnX3BvcnQgPQo+ID4gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwo+ID4gQEAgLTQwMywz OCArMzY4LDYgQEAgc3RhdGljIHZvaWQgaHN3X3Bzcl9lbmFibGVfc2luayhzdHJ1Y3QKPiA+IGlu dGVsX2RwICppbnRlbF9kcCkKPiA+IMKgCWRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1 eCwgRFBfU0VUX1BPV0VSLAo+ID4gRFBfU0VUX1BPV0VSX0QwKTsKPiA+IMKgfQo+ID4gwqAKPiA+ IC1zdGF0aWMgdm9pZCB2bHZfcHNyX2VuYWJsZV9zb3VyY2Uoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCwKPiA+IC0JCQkJwqDCoGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlCj4gPiAqY3J0 Y19zdGF0ZSkKPiA+IC17Cj4gPiAtCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0 ID0KPiA+IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiA+IC0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkaWdfcG9ydC0KPiA+ID5iYXNlLmJhc2UuZGV2KTsK PiA+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUt Cj4gPiA+YmFzZS5jcnRjKTsKPiA+IC0KPiA+IC0JLyogVHJhbnNpdGlvbiBmcm9tIFBTUl9zdGF0 ZSAwIChkaXNhYmxlZCkgdG8gUFNSX3N0YXRlIDEKPiA+IChpbmFjdGl2ZSkgKi8KPiA+IC0JSTkx NV9XUklURShWTFZfUFNSQ1RMKGNydGMtPnBpcGUpLAo+ID4gLQkJwqDCoMKgVkxWX0VEUF9QU1Jf TU9ERV9TV19USU1FUiB8Cj4gPiAtCQnCoMKgwqBWTFZfRURQX1BTUl9TUkNfVFJBTlNNSVRURVJf U1RBVEUgfAo+ID4gLQkJwqDCoMKgVkxWX0VEUF9QU1JfRU5BQkxFKTsKPiA+IC19Cj4gPiAtCj4g PiAtc3RhdGljIHZvaWQgdmx2X3Bzcl9hY3RpdmF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQo+ID4gLXsKPiA+IC0Jc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQgPQo+ID4g ZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwo+ID4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g ZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXY7Cj4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+IC0Jc3RydWN0IGRybV9jcnRjICpjcnRjID0gZGln X3BvcnQtPmJhc2UuYmFzZS5jcnRjOwo+ID4gLQllbnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2Ny dGMoY3J0YyktPnBpcGU7Cj4gPiAtCj4gPiAtCS8qCj4gPiAtCcKgKiBMZXQncyBkbyB0aGUgdHJh bnNpdGlvbiBmcm9tIFBTUl9zdGF0ZSAxIChpbmFjdGl2ZSkgdG8KPiA+IC0JwqAqIFBTUl9zdGF0 ZSAyICh0cmFuc2l0aW9uIHRvIGFjdGl2ZSAtIHN0YXRpYyBmcmFtZQo+ID4gdHJhbnNtaXNzaW9u KS4KPiA+IC0JwqAqIFRoZW4gSGFyZHdhcmUgaXMgcmVzcG9uc2libGUgZm9yIHRoZSB0cmFuc2l0 aW9uIHRvCj4gPiAtCcKgKiBQU1Jfc3RhdGUgMyAoYWN0aXZlIC0gbm8gUmVtb3RlIEZyYW1lIEJ1 ZmZlciAoUkZCKQo+ID4gdXBkYXRlKS4KPiA+IC0JwqAqLwo+ID4gLQlJOTE1X1dSSVRFKFZMVl9Q U1JDVEwocGlwZSksIEk5MTVfUkVBRChWTFZfUFNSQ1RMKHBpcGUpKSB8Cj4gPiAtCQnCoMKgwqBW TFZfRURQX1BTUl9BQ1RJVkVfRU5UUlkpOwo+ID4gLX0KPiA+IC0KPiA+IMKgc3RhdGljIHZvaWQg aHN3X2FjdGl2YXRlX3BzcjEoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+IMKgewo+ID4g wqAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQgPQo+ID4gZHBfdG9fZGlnX3Bv cnQoaW50ZWxfZHApOwo+ID4gQEAgLTYwMiwxNyArNTM1LDExIEBAIHZvaWQgaW50ZWxfcHNyX2Nv bXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcAo+ID4gKmludGVsX2RwLAo+ID4gwqAJwqAqIG9u ZXMuIFNpbmNlIGJ5IERpc3BsYXkgZGVzaWduIHRyYW5zY29kZXIgRURQIGlzIHRpZWQgdG8KPiA+ IHBvcnQgQQo+ID4gwqAJwqAqIHdlIGNhbiBzYWZlbHkgZXNjYXBlIGJhc2VkIG9uIHRoZSBwb3J0 IEEuCj4gPiDCoAnCoCovCj4gPiAtCWlmIChIQVNfRERJKGRldl9wcml2KSAmJiBkaWdfcG9ydC0+ YmFzZS5wb3J0ICE9IFBPUlRfQSkgewo+ID4gKwlpZiAoZGlnX3BvcnQtPmJhc2UucG9ydCAhPSBQ T1JUX0EpIHsKPiA+IMKgCQlEUk1fREVCVUdfS01TKCJQU1IgY29uZGl0aW9uIGZhaWxlZDogUG9y dCBub3QKPiA+IHN1cHBvcnRlZFxuIik7Cj4gPiDCoAkJcmV0dXJuOwo+ID4gwqAJfQo+ID4gwqAK PiA+IC0JaWYgKChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9w cml2KSkKPiA+ICYmCj4gPiAtCcKgwqDCoMKgIWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5KSB7 Cj4gPiAtCQlEUk1fRVJST1IoIlBTUiBjb25kaXRpb24gZmFpbGVkOiBMaW5rIG9mZgo+ID4gcmVx dWVzdGVkIGJ1dCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm1cbiIpOwo+ID4gLQkJcmV0 dXJuOwo+ID4gLQl9Cj4gPiAtCj4gPiDCoAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgJiYKPiA+ IMKgCcKgwqDCoMKgSTkxNV9SRUFEKEhTV19TVEVSRU9fM0RfQ1RMKGNydGNfc3RhdGUtCj4gPiA+ Y3B1X3RyYW5zY29kZXIpKSAmCj4gPiDCoAkJwqDCoMKgwqDCoMKgUzNEX0VOQUJMRSkgewo+ID4g QEAgLTc2MCw3ICs2ODcsNiBAQCB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGludGVsX2Rw Cj4gPiAqaW50ZWxfZHAsCj4gPiDCoAkJwqAqIGVuYWJsZWQuCj4gPiDCoAkJwqAqIEhvd2V2ZXIg b24gc29tZSBwbGF0Zm9ybXMgd2UgZmFjZSBpc3N1ZXMgd2hlbgo+ID4gZmlyc3QKPiA+IMKgCQnC oCogYWN0aXZhdGlvbiBmb2xsb3dzIGEgbW9kZXNldCBzbyBxdWlja2x5Lgo+ID4gLQkJwqAqwqDC oMKgwqDCoC0gT24gVkxWL0NIViB3ZSBnZXQgYmFuayBzY3JlZW4gb24gZmlyc3QKPiA+IGFjdGl2 YXRpb24KPiA+IMKgCQnCoCrCoMKgwqDCoMKgLSBPbiBIU1cvQkRXIHdlIGdldCBhIHJlY292ZXJh YmxlIGZyb3plbgo+ID4gc2NyZWVuIHVudGlsCj4gPiDCoAkJwqAqwqDCoMKgwqDCoMKgwqBuZXh0 IGV4aXQtYWN0aXZhdGUgc2VxdWVuY2UuCj4gPiDCoAkJwqAqLwo+ID4gQEAgLTc3MiwzNiArNjk4 LDYgQEAgdm9pZCBpbnRlbF9wc3JfZW5hYmxlKHN0cnVjdCBpbnRlbF9kcAo+ID4gKmludGVsX2Rw LAo+ID4gwqAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ID4gwqB9Cj4gPiDC oAo+ID4gLXN0YXRpYyB2b2lkIHZsdl9wc3JfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwLAo+ID4gLQkJCcKgwqDCoMKgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUKPiA+ICpv bGRfY3J0Y19zdGF0ZSkKPiA+IC17Cj4gPiAtCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmlu dGVsX2RpZ19wb3J0ID0KPiA+IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiA+IC0Jc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2Owo+ID4gLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPiAtCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhvbGRfY3J0Y19zdGF0ZS0KPiA+ ID5iYXNlLmNydGMpOwo+ID4gLQl1aW50MzJfdCB2YWw7Cj4gPiAtCj4gPiAtCWlmIChkZXZfcHJp di0+cHNyLmFjdGl2ZSkgewo+ID4gLQkJLyogUHV0IFZMViBQU1IgYmFjayB0byBQU1Jfc3RhdGUg MCAoZGlzYWJsZWQpLiAqLwo+ID4gLQkJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9w cml2LAo+ID4gLQkJCQkJwqDCoMKgwqBWTFZfUFNSU1RBVChjcnRjLQo+ID4gPnBpcGUpLAo+ID4g LQkJCQkJwqDCoMKgwqBWTFZfRURQX1BTUl9JTl9UUkFOUywKPiA+IC0JCQkJCcKgwqDCoMKgMCwK PiA+IC0JCQkJCcKgwqDCoMKgMSkpCj4gPiAtCQkJV0FSTigxLCAiUFNSIHRyYW5zaXRpb24gdG9v ayBsb25nZXIgdGhhbgo+ID4gZXhwZWN0ZWRcbiIpOwo+ID4gLQo+ID4gLQkJdmFsID0gSTkxNV9S RUFEKFZMVl9QU1JDVEwoY3J0Yy0+cGlwZSkpOwo+ID4gLQkJdmFsICY9IH5WTFZfRURQX1BTUl9B Q1RJVkVfRU5UUlk7Cj4gPiAtCQl2YWwgJj0gflZMVl9FRFBfUFNSX0VOQUJMRTsKPiA+IC0JCXZh bCAmPSB+VkxWX0VEUF9QU1JfTU9ERV9NQVNLOwo+ID4gLQkJSTkxNV9XUklURShWTFZfUFNSQ1RM KGNydGMtPnBpcGUpLCB2YWwpOwo+ID4gLQo+ID4gLQkJZGV2X3ByaXYtPnBzci5hY3RpdmUgPSBm YWxzZTsKPiA+IC0JfSBlbHNlIHsKPiA+IC0JCVdBUk5fT04odmx2X2lzX3Bzcl9hY3RpdmVfb25f cGlwZShkZXYsIGNydGMtCj4gPiA+cGlwZSkpOwo+ID4gLQl9Cj4gPiAtfQo+ID4gLQo+ID4gwqBz dGF0aWMgdm9pZCBoc3dfcHNyX2Rpc2FibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiA+ IMKgCQkJwqDCoMKgwqBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ID4gKm9sZF9jcnRj X3N0YXRlKQo+ID4gwqB7Cj4gPiBAQCAtODk0LDIxICs3OTAsMTIgQEAgc3RhdGljIGJvb2wgcHNy X3dhaXRfZm9yX2lkbGUoc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ IMKgCWlmICghaW50ZWxfZHApCj4gPiDCoAkJcmV0dXJuIGZhbHNlOwo+ID4gwqAKPiA+IC0JaWYg KEhBU19EREkoZGV2X3ByaXYpKSB7Cj4gPiAtCQlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJs ZWQpIHsKPiA+IC0JCQlyZWcgPSBFRFBfUFNSMl9TVEFUVVM7Cj4gPiAtCQkJbWFzayA9IEVEUF9Q U1IyX1NUQVRVU19TVEFURV9NQVNLOwo+ID4gLQkJfSBlbHNlIHsKPiA+IC0JCQlyZWcgPSBFRFBf UFNSX1NUQVRVUzsKPiA+IC0JCQltYXNrID0gRURQX1BTUl9TVEFUVVNfU1RBVEVfTUFTSzsKPiA+ IC0JCX0KPiA+ICsJaWYgKGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkKSB7Cj4gPiArCQlyZWcg PSBFRFBfUFNSMl9TVEFUVVM7Cj4gPiArCQltYXNrID0gRURQX1BTUjJfU1RBVFVTX1NUQVRFX01B U0s7Cj4gPiDCoAl9IGVsc2Ugewo+ID4gLQkJc3RydWN0IGRybV9jcnRjICpjcnRjID0KPiA+IC0J CQlkcF90b19kaWdfcG9ydChpbnRlbF9kcCktPmJhc2UuYmFzZS5jcnRjOwo+ID4gLQkJZW51bSBw aXBlIHBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5waXBlOwo+ID4gLQo+ID4gLQkJcmVnID0g VkxWX1BTUlNUQVQocGlwZSk7Cj4gPiAtCQltYXNrID0gVkxWX0VEUF9QU1JfSU5fVFJBTlM7Cj4g PiArCQlyZWcgPSBFRFBfUFNSX1NUQVRVUzsKPiA+ICsJCW1hc2sgPSBFRFBfUFNSX1NUQVRVU19T VEFURV9NQVNLOwo+ID4gwqAJfQo+ID4gwqAKPiA+IMKgCW11dGV4X3VubG9jaygmZGV2X3ByaXYt PnBzci5sb2NrKTsKPiA+IEBAIC05NTMsMTAyICs4NDAsMjMgQEAgc3RhdGljIHZvaWQgaW50ZWxf cHNyX3dvcmsoc3RydWN0Cj4gPiB3b3JrX3N0cnVjdCAqd29yaykKPiA+IMKgCj4gPiDCoHN0YXRp YyB2b2lkIGludGVsX3Bzcl9leGl0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiA+IMKgewo+ID4gLQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZGV2X3ByaXYtPnBzci5l bmFibGVkOwo+ID4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBkcF90b19kaWdfcG9ydChpbnRl bF9kcCktCj4gPiA+YmFzZS5iYXNlLmNydGM7Cj4gPiAtCWVudW0gcGlwZSBwaXBlID0gdG9faW50 ZWxfY3J0YyhjcnRjKS0+cGlwZTsKPiA+IMKgCXUzMiB2YWw7Cj4gPiDCoAo+ID4gwqAJaWYgKCFk ZXZfcHJpdi0+cHNyLmFjdGl2ZSkKPiA+IMKgCQlyZXR1cm47Cj4gPiDCoAo+ID4gLQlpZiAoSEFT X0RESShkZXZfcHJpdikpIHsKPiA+IC0JCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkg ewo+ID4gLQkJCXZhbCA9IEk5MTVfUkVBRChFRFBfUFNSMl9DVEwpOwo+ID4gLQkJCVdBUk5fT04o ISh2YWwgJiBFRFBfUFNSMl9FTkFCTEUpKTsKPiA+IC0JCQlJOTE1X1dSSVRFKEVEUF9QU1IyX0NU TCwgdmFsICYKPiA+IH5FRFBfUFNSMl9FTkFCTEUpOwo+ID4gLQkJfSBlbHNlIHsKPiA+IC0JCQl2 YWwgPSBJOTE1X1JFQUQoRURQX1BTUl9DVEwpOwo+ID4gLQkJCVdBUk5fT04oISh2YWwgJiBFRFBf UFNSX0VOQUJMRSkpOwo+ID4gLQkJCUk5MTVfV1JJVEUoRURQX1BTUl9DVEwsIHZhbCAmCj4gPiB+ RURQX1BTUl9FTkFCTEUpOwo+ID4gLQkJfQo+ID4gKwlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2Vu YWJsZWQpIHsKPiA+ICsJCXZhbCA9IEk5MTVfUkVBRChFRFBfUFNSMl9DVEwpOwo+ID4gKwkJV0FS Tl9PTighKHZhbCAmIEVEUF9QU1IyX0VOQUJMRSkpOwo+ID4gKwkJSTkxNV9XUklURShFRFBfUFNS Ml9DVEwsIHZhbCAmIH5FRFBfUFNSMl9FTkFCTEUpOwo+ID4gwqAJfSBlbHNlIHsKPiA+IC0JCXZh bCA9IEk5MTVfUkVBRChWTFZfUFNSQ1RMKHBpcGUpKTsKPiA+IC0KPiA+IC0JCS8qCj4gPiAtCQnC oCogSGVyZSB3ZSBkbyB0aGUgdHJhbnNpdGlvbiBkcmlyZWN0bHkgZnJvbQo+ID4gLQkJwqAqIFBT Ul9zdGF0ZSAzIChhY3RpdmUgLSBubyBSZW1vdGUgRnJhbWUgQnVmZmVyCj4gPiAoUkZCKSB1cGRh dGUpIHRvCj4gPiAtCQnCoCogUFNSX3N0YXRlIDUgKGV4aXQpLgo+ID4gLQkJwqAqIFBTUiBTdGF0 ZSA0IChhY3RpdmUgd2l0aCBzaW5nbGUgZnJhbWUgdXBkYXRlKQo+ID4gY2FuIGJlIHNraXBwZWQu Cj4gPiAtCQnCoCogT24gUFNSX3N0YXRlIDUgKGV4aXQpIEhhcmR3YXJlIGlzIHJlc3BvbnNpYmxl Cj4gPiB0byB0cmFuc2l0aW9uCj4gPiAtCQnCoCogYmFjayB0byBQU1Jfc3RhdGUgMSAoaW5hY3Rp dmUpLgo+ID4gLQkJwqAqIE5vdyB3ZSBhcmUgYXQgU2FtZSBzdGF0ZSBhZnRlcgo+ID4gdmx2X3Bz cl9lbmFibGVfc291cmNlLgo+ID4gLQkJwqAqLwo+ID4gLQkJdmFsICY9IH5WTFZfRURQX1BTUl9B Q1RJVkVfRU5UUlk7Cj4gPiAtCQlJOTE1X1dSSVRFKFZMVl9QU1JDVEwocGlwZSksIHZhbCk7Cj4g PiAtCj4gPiAtCQkvKgo+ID4gLQkJwqAqIFNlbmQgQVVYIHdha2UgdXAgLSBTcGVjIHNheXMgYWZ0 ZXIKPiA+IHRyYW5zaXRpb25pbmcgdG8gUFNSCj4gPiAtCQnCoCogYWN0aXZlIHdlIGhhdmUgdG8g c2VuZCBBVVggd2FrZSB1cCBieSB3cml0aW5nCj4gPiAwMWggaW4gRFBDRAo+ID4gLQkJwqAqIDYw MGggb2Ygc2luayBkZXZpY2UuCj4gPiAtCQnCoCogWFhYOiBUaGlzIG1pZ2h0IHNsb3cgZG93biB0 aGUgdHJhbnNpdGlvbiwgYnV0Cj4gPiB3aXRob3V0IHRoaXMKPiA+IC0JCcKgKiBIVyBkb2Vzbid0 IGNvbXBsZXRlIHRoZSB0cmFuc2l0aW9uIHRvIFBTUl9zdGF0ZQo+ID4gMSBhbmQgd2UKPiA+IC0J CcKgKiBuZXZlciBnZXQgdGhlIHNjcmVlbiB1cGRhdGVkLgo+ID4gLQkJwqAqLwo+ID4gLQkJZHJt X2RwX2RwY2Rfd3JpdGViKCZpbnRlbF9kcC0+YXV4LCBEUF9TRVRfUE9XRVIsCj4gPiAtCQkJCcKg wqDCoERQX1NFVF9QT1dFUl9EMCk7Cj4gPiArCQl2YWwgPSBJOTE1X1JFQUQoRURQX1BTUl9DVEwp Owo+ID4gKwkJV0FSTl9PTighKHZhbCAmIEVEUF9QU1JfRU5BQkxFKSk7Cj4gPiArCQlJOTE1X1dS SVRFKEVEUF9QU1JfQ1RMLCB2YWwgJiB+RURQX1BTUl9FTkFCTEUpOwo+ID4gwqAJfQo+ID4gLQo+ ID4gwqAJZGV2X3ByaXYtPnBzci5hY3RpdmUgPSBmYWxzZTsKPiA+IMKgfQo+ID4gwqAKPiA+IC0v KioKPiA+IC0gKiBpbnRlbF9wc3Jfc2luZ2xlX2ZyYW1lX3VwZGF0ZSAtIFNpbmdsZSBGcmFtZSBV cGRhdGUKPiA+IC0gKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlCj4gPiAtICogQGZyb250YnVmZmVy X2JpdHM6IGZyb250YnVmZmVyIHBsYW5lIHRyYWNraW5nIGJpdHMKPiA+IC0gKgo+ID4gLSAqIFNv bWUgcGxhdGZvcm1zIHN1cHBvcnQgYSBzaW5nbGUgZnJhbWUgdXBkYXRlIGZlYXR1cmUgdGhhdCBp cwo+ID4gdXNlZCB0bwo+ID4gLSAqIHNlbmQgYW5kIHVwZGF0ZSBvbmx5IG9uZSBmcmFtZSBvbiBS ZW1vdGUgRnJhbWUgQnVmZmVyLgo+ID4gLSAqIFNvIGZhciBpdCBpcyBvbmx5IGltcGxlbWVudGVk IGZvciBWYWxsZXl2aWV3IGFuZCBDaGVycnl2aWV3Cj4gPiBiZWNhdXNlCj4gPiAtICogaGFyZHdh cmUgcmVxdWlyZXMgdGhpcyB0byBiZSBkb25lIGJlZm9yZSBhIHBhZ2UgZmxpcC4KPiA+IC0gKi8K PiA+IC12b2lkIGludGVsX3Bzcl9zaW5nbGVfZnJhbWVfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlCj4gPiAqZGV2X3ByaXYsCj4gPiAtCQkJCcKgwqDCoHVuc2lnbmVkIGZyb250YnVmZmVy X2JpdHMpCj4gPiAtewo+ID4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gPiAtCWVudW0gcGlw ZSBwaXBlOwo+ID4gLQl1MzIgdmFsOwo+ID4gLQo+ID4gLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYp KQo+ID4gLQkJcmV0dXJuOwo+ID4gLQo+ID4gLQkvKgo+ID4gLQnCoCogU2luZ2xlIGZyYW1lIHVw ZGF0ZSBpcyBhbHJlYWR5IHN1cHBvcnRlZCBvbiBCRFcrIGJ1dCBpdAo+ID4gcmVxdWlyZXMKPiA+ IC0JwqAqIG1hbnkgVy9BIGFuZCBpdCBpc24ndCByZWFsbHkgbmVlZGVkLgo+ID4gLQnCoCovCj4g PiAtCWlmICghSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2X3By aXYpKQo+ID4gLQkJcmV0dXJuOwo+ID4gLQo+ID4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNy LmxvY2spOwo+ID4gLQlpZiAoIWRldl9wcml2LT5wc3IuZW5hYmxlZCkgewo+ID4gLQkJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ID4gLQkJcmV0dXJuOwo+ID4gLQl9Cj4gPiAt Cj4gPiAtCWNydGMgPSBkcF90b19kaWdfcG9ydChkZXZfcHJpdi0+cHNyLmVuYWJsZWQpLQo+ID4g PmJhc2UuYmFzZS5jcnRjOwo+ID4gLQlwaXBlID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZTsK PiA+IC0KPiA+IC0JaWYgKGZyb250YnVmZmVyX2JpdHMgJiBJTlRFTF9GUk9OVEJVRkZFUl9BTExf TUFTSyhwaXBlKSkgewo+ID4gLQkJdmFsID0gSTkxNV9SRUFEKFZMVl9QU1JDVEwocGlwZSkpOwo+ ID4gLQo+ID4gLQkJLyoKPiA+IC0JCcKgKiBXZSBuZWVkIHRvIHNldCB0aGlzIGJpdCBiZWZvcmUg d3JpdGluZwo+ID4gcmVnaXN0ZXJzIGZvciBhIGZsaXAuCj4gPiAtCQnCoCogVGhpcyBiaXQgd2ls bCBiZSBzZWxmLWNsZWFyIHdoZW4gaXQgZ2V0cyB0byB0aGUKPiA+IFBTUiBhY3RpdmUgc3RhdGUu Cj4gPiAtCQnCoCovCj4gPiAtCQlJOTE1X1dSSVRFKFZMVl9QU1JDVEwocGlwZSksIHZhbCB8Cj4g PiBWTFZfRURQX1BTUl9TSU5HTEVfRlJBTUVfVVBEQVRFKTsKPiA+IC0JfQo+ID4gLQltdXRleF91 bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gPiAtfQo+ID4gLQo+ID4gwqAvKioKPiA+IMKg ICogaW50ZWxfcHNyX2ludmFsaWRhdGUgLSBJbnZhbGlkYWRlIFBTUgo+ID4gwqAgKiBAZGV2X3By aXY6IGk5MTUgZGV2aWNlCj4gPiBAQCAtMTA3MSw3ICs4NzksNyBAQCB2b2lkIGludGVsX3Bzcl9p bnZhbGlkYXRlKHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiDCoAlp ZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQo+ID4gwqAJCXJldHVybjsKPiA+IMKgCj4gPiAtCWlmIChk ZXZfcHJpdi0+cHNyLmhhc19od190cmFja2luZyAmJiBvcmlnaW4gPT0KPiA+IE9SSUdJTl9GTElQ KQo+ID4gKwlpZiAob3JpZ2luID09IE9SSUdJTl9GTElQKQo+ID4gwqAJCXJldHVybjsKPiA+IMKg Cj4gPiDCoAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ID4gQEAgLTExMTQsNyAr OTIyLDcgQEAgdm9pZCBpbnRlbF9wc3JfZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ ICpkZXZfcHJpdiwKPiA+IMKgCWlmICghQ0FOX1BTUihkZXZfcHJpdikpCj4gPiDCoAkJcmV0dXJu Owo+ID4gwqAKPiA+IC0JaWYgKGRldl9wcml2LT5wc3IuaGFzX2h3X3RyYWNraW5nICYmIG9yaWdp biA9PQo+ID4gT1JJR0lOX0ZMSVApCj4gPiArCWlmIChvcmlnaW4gPT0gT1JJR0lOX0ZMSVApCj4g PiDCoAkJcmV0dXJuOwo+ID4gwqAKPiA+IMKgCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9j ayk7Cj4gPiBAQCAtMTEzMSw4ICs5MzksNyBAQCB2b2lkIGludGVsX3Bzcl9mbHVzaChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZQo+ID4gKmRldl9wcml2LAo+ID4gwqAKPiA+IMKgCS8qIEJ5IGRlZmlu aXRpb24gZmx1c2ggPSBpbnZhbGlkYXRlICsgZmx1c2ggKi8KPiA+IMKgCWlmIChmcm9udGJ1ZmZl cl9iaXRzKSB7Cj4gPiAtCQlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQgfHwKPiA+IC0J CcKgwqDCoMKgSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwKPiA+IElTX0NIRVJSWVZJRVcoZGV2 X3ByaXYpKSB7Cj4gPiArCQlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpIHsKPiA+IMKg CQkJaW50ZWxfcHNyX2V4aXQoZGV2X3ByaXYpOwo+ID4gwqAJCX0gZWxzZSB7Cj4gPiDCoAkJCS8q Cj4gPiBAQCAtMTE4NCw5ICs5OTEsNiBAQCB2b2lkIGludGVsX3Bzcl9pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlCj4gPiAqZGV2X3ByaXYpCj4gPiDCoAlpZiAoSVNfSEFTV0VMTChkZXZfcHJp dikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKPiA+IMKgCQkvKiBIU1cgYW5kIEJEVyByZXF1 aXJlIHdvcmthcm91bmRzIHRoYXQgd2UgZG9uJ3QKPiA+IGltcGxlbWVudC4gKi8KPiA+IMKgCQlk ZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSA9IGZhbHNlOwo+ID4gLQllbHNlIGlmIChJU19WQUxM RVlWSUVXKGRldl9wcml2KSB8fAo+ID4gSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gPiAtCQkv KiBPbiBWTFYgYW5kIENIViBvbmx5IHN0YW5kYnkgbW9kZSBpcyBzdXBwb3J0ZWQuCj4gPiAqLwo+ ID4gLQkJZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkgPSB0cnVlOwo+ID4gwqAJZWxzZQo+ID4g wqAJCS8qIEZvciBuZXcgcGxhdGZvcm1zIGxldCdzIHJlc3BlY3QgVkJUIGJhY2sgYWdhaW4KPiA+ ICovCj4gPiDCoAkJZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkgPSBkZXZfcHJpdi0KPiA+ID52 YnQucHNyLmZ1bGxfbGluazsKPiA+IEBAIC0xMjA0LDE4ICsxMDA4LDEwIEBAIHZvaWQgaW50ZWxf cHNyX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ICpkZXZfcHJpdikKPiA+IMKgCUlO SVRfREVMQVlFRF9XT1JLKCZkZXZfcHJpdi0+cHNyLndvcmssIGludGVsX3Bzcl93b3JrKTsKPiA+ IMKgCW11dGV4X2luaXQoJmRldl9wcml2LT5wc3IubG9jayk7Cj4gPiDCoAo+ID4gLQlpZiAoSVNf VkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiA+IC0J CWRldl9wcml2LT5wc3IuZW5hYmxlX3NvdXJjZSA9Cj4gPiB2bHZfcHNyX2VuYWJsZV9zb3VyY2U7 Cj4gPiAtCQlkZXZfcHJpdi0+cHNyLmRpc2FibGVfc291cmNlID0gdmx2X3Bzcl9kaXNhYmxlOwo+ ID4gLQkJZGV2X3ByaXYtPnBzci5lbmFibGVfc2luayA9IHZsdl9wc3JfZW5hYmxlX3Npbms7Cj4g PiAtCQlkZXZfcHJpdi0+cHNyLmFjdGl2YXRlID0gdmx2X3Bzcl9hY3RpdmF0ZTsKPiA+IC0JCWRl dl9wcml2LT5wc3Iuc2V0dXBfdnNjID0gdmx2X3Bzcl9zZXR1cF92c2M7Cj4gPiAtCX0gZWxzZSB7 Cj4gPiAtCQlkZXZfcHJpdi0+cHNyLmhhc19od190cmFja2luZyA9IHRydWU7Cj4gPiAtCQlkZXZf cHJpdi0+cHNyLmVuYWJsZV9zb3VyY2UgPQo+ID4gaHN3X3Bzcl9lbmFibGVfc291cmNlOwo+ID4g LQkJZGV2X3ByaXYtPnBzci5kaXNhYmxlX3NvdXJjZSA9IGhzd19wc3JfZGlzYWJsZTsKPiA+IC0J CWRldl9wcml2LT5wc3IuZW5hYmxlX3NpbmsgPSBoc3dfcHNyX2VuYWJsZV9zaW5rOwo+ID4gLQkJ ZGV2X3ByaXYtPnBzci5hY3RpdmF0ZSA9IGhzd19wc3JfYWN0aXZhdGU7Cj4gPiAtCQlkZXZfcHJp di0+cHNyLnNldHVwX3ZzYyA9IGhzd19wc3Jfc2V0dXBfdnNjOwo+ID4gLQl9Cj4gPiArCWRldl9w cml2LT5wc3IuZW5hYmxlX3NvdXJjZSA9IGhzd19wc3JfZW5hYmxlX3NvdXJjZTsKPiA+ICsJZGV2 X3ByaXYtPnBzci5kaXNhYmxlX3NvdXJjZSA9IGhzd19wc3JfZGlzYWJsZTsKPiA+ICsJZGV2X3By aXYtPnBzci5lbmFibGVfc2luayA9IGhzd19wc3JfZW5hYmxlX3Npbms7Cj4gPiArCWRldl9wcml2 LT5wc3IuYWN0aXZhdGUgPSBoc3dfcHNyX2FjdGl2YXRlOwo+ID4gKwlkZXZfcHJpdi0+cHNyLnNl dHVwX3ZzYyA9IGhzd19wc3Jfc2V0dXBfdnNjOwo+ID4gKwo+ID4gwqB9Cl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=