From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 2/2] drm/i915: Use intel_ types more consistently for color management code Date: Mon, 10 Dec 2018 15:07:25 -0800 Message-ID: <20181210230725.GA20196@mdroper-desk.amr.corp.intel.com> References: <20181207005401.13988-1-matthew.d.roper@intel.com> <20181207005401.13988-3-matthew.d.roper@intel.com> <20181210193155.GK9144@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 64C8589E14 for ; Mon, 10 Dec 2018 23:07:26 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20181210193155.GK9144@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBEZWMgMTAsIDIwMTggYXQgMDk6MzE6NTVQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFRodSwgRGVjIDA2LCAyMDE4IGF0IDA0OjU0OjAxUE0gLTA4MDAsIE1hdHQg Um9wZXIgd3JvdGU6Cj4gPiBUcnkgdG8gYmUgbW9yZSBjb25zaXN0ZW50IGFib3V0IGludGVsXyog dHlwZXMgcmF0aGVyIHRoYW4gZHJtXyogdHlwZXMKPiA+IGZvciBsb3dlci1sZXZlbCBkcml2ZXIg ZnVuY3Rpb25zLiAgV2hpbGUgd2UncmUgYXQgaXQsIGxldCdzIGFsc28gYmUgbW9yZQo+ID4gY29u c2lzdGVudCB3aXRoIHN0YXRlIHZhcmlhYmxlIG5hbWluZyAoaGFsZiBvZiB0aGUgcGxhdGZvcm1z IHVzZSB0aGUKPiA+IG5hbWUgJ3N0YXRlJyB3aGVyZWFzIHRoZSBvdGhlciBoYWxmIHVzZWQgJ2Ny dGNfc3RhdGUnKS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5k LnJvcGVyQGludGVsLmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggICAgICB8ICAgNCArLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9y LmMgICB8IDIwNyArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICAyMCArKy0tCj4gPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICA4ICstCj4gPiAgNCBmaWxlcyBjaGFuZ2Vk LCAxMTIgaW5zZXJ0aW9ucygrKSwgMTI3IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiA+IGluZGV4IDc0NjlhNzc4NTI1My4uNDhmYjVlOWJkMDhiIDEwMDY0NAo+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gQEAgLTMyMSw4ICszMjEsOCBAQCBzdHJ1Y3Qg ZHJtX2k5MTVfZGlzcGxheV9mdW5jcyB7Cj4gPiAgCS8qIGRpc3BsYXkgY2xvY2sgaW5jcmVhc2Uv ZGVjcmVhc2UgKi8KPiA+ICAJLyogcGxsIGNsb2NrIGluY3JlYXNlL2RlY3JlYXNlICovCj4gPiAg Cj4gPiAtCXZvaWQgKCpsb2FkX2NzY19tYXRyaXgpKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSk7Cj4gPiAtCXZvaWQgKCpsb2FkX2x1dHMpKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSk7Cj4gPiArCXZvaWQgKCpsb2FkX2NzY19tYXRyaXgpKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpzdGF0ZSk7Cj4gPiArCXZvaWQgKCpsb2FkX2x1dHMpKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpzdGF0ZSk7Cj4gPiAgfTsKPiA+ICAKPiA+ICAjZGVmaW5lIENTUl9WRVJTSU9O KG1ham9yLCBtaW5vcikJKChtYWpvcikgPDwgMTYgfCAobWlub3IpKQo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9jb2xvci5jCj4gPiBpbmRleCA1MTI3ZGEyODZhMmIuLjMzNWM0NzAyZmNmYiAxMDA2 NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMKPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMKPiA+IEBAIC03NCwxMiArNzQsMTIg QEAKPiA+ICAjZGVmaW5lIElMS19DU0NfQ09FRkZfMV8wCQlcCj4gPiAgCSgoNyA8PCAxMikgfCBJ TEtfQ1NDX0NPRUZGX0ZQKENUTV9DT0VGRl8xXzAsIDgpKQo+ID4gIAo+ID4gLXN0YXRpYyBib29s IGNydGNfc3RhdGVfaXNfbGVnYWN5X2dhbW1hKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUp Cj4gPiArc3RhdGljIGJvb2wgY3J0Y19zdGF0ZV9pc19sZWdhY3lfZ2FtbWEoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnN0YXRlKQo+IAo+IEknZCBsa2lrZSBzL3N0YXRlL2NydGNfc3RhdGUvLCBh dCBsZWFzdCBpbiB0aGUgY2FzZXMgd2hlcmUgaXQgZG9lc24ndAo+IG1ha2UgdGhlIGRpZmYgdG9v IG5vaXN5Lgo+IAo+IE9yIG1heWJlIGV2ZW4gZm9sbG93IHVwIHdpdGggYSB3aG9sZXNhbGUgc2Vk L2NvY2NpIGpvYiB0byBqdXN0IHJlbmFtZQo+IGV2ZXJ5dGhpbmcgaW4gdGhlIGZpbGU/Cj4gCj4g UGF0Y2ggaXMKPiBSZXZpZXdlZC1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxp bnV4LmludGVsLmNvbT4KCkFwcGxpZWQgdGhlIG1pbm9yIHR3ZWFrcyB5b3Ugc3VnZ2VzdGVkIGFu ZCBCQVQgc3RpbGwgbG9va3MgY2xlYW4uClB1c2hlZCB0byBkaW5xOyB0aGFua3MgZm9yIHRoZSBy ZXZpZXcuCgoKTWF0dAoKPiAKPiA+ICB7Cj4gPiAtCXJldHVybiAhc3RhdGUtPmRlZ2FtbWFfbHV0 ICYmCj4gPiAtCQkhc3RhdGUtPmN0bSAmJgo+ID4gLQkJc3RhdGUtPmdhbW1hX2x1dCAmJgo+ID4g LQkJZHJtX2NvbG9yX2x1dF9zaXplKHN0YXRlLT5nYW1tYV9sdXQpID09IExFR0FDWV9MVVRfTEVO R1RIOwo+ID4gKwlyZXR1cm4gIXN0YXRlLT5iYXNlLmRlZ2FtbWFfbHV0ICYmCj4gPiArCQkhc3Rh dGUtPmJhc2UuY3RtICYmCj4gPiArCQlzdGF0ZS0+YmFzZS5nYW1tYV9sdXQgJiYKPiA+ICsJCWRy bV9jb2xvcl9sdXRfc2l6ZShzdGF0ZS0+YmFzZS5nYW1tYV9sdXQpID09IExFR0FDWV9MVVRfTEVO R1RIOwo+ID4gIH0KPiA+ICAKPiA+ICAvKgo+ID4gQEAgLTEwOCwxMCArMTA4LDEwIEBAIHN0YXRp YyB1NjQgKmN0bV9tdWx0X2J5X2xpbWl0ZWQodTY0ICpyZXN1bHQsIGNvbnN0IHU2NCAqaW5wdXQp Cj4gPiAgCXJldHVybiByZXN1bHQ7Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyB2b2lkIGlsa19s b2FkX3ljYmNyX2NvbnZlcnNpb25fbWF0cml4KHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj KQo+ID4gK3N0YXRpYyB2b2lkIGlsa19sb2FkX3ljYmNyX2NvbnZlcnNpb25fbWF0cml4KHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjKQo+ID4gIHsKPiA+IC0JaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5w aXBlOwo+ID4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGlu dGVsX2NydGMtPmJhc2UuZGV2KTsKPiA+ICsJaW50IHBpcGUgPSBjcnRjLT5waXBlOwo+ID4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2 KTsKPiA+ICAKPiA+ICAJSTkxNV9XUklURShQSVBFX0NTQ19QUkVPRkZfSEkocGlwZSksIDApOwo+ ID4gIAlJOTE1X1dSSVRFKFBJUEVfQ1NDX1BSRU9GRl9NRShwaXBlKSwgMCk7Cj4gPiBAQCAtMTMy LDE0ICsxMzIsMTIgQEAgc3RhdGljIHZvaWQgaWxrX2xvYWRfeWNiY3JfY29udmVyc2lvbl9tYXRy aXgoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCj4gPiAgCUk5MTVfV1JJVEUoUElQRV9D U0NfTU9ERShwaXBlKSwgMCk7Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyB2b2lkIGlsa19sb2Fk X2NzY19tYXRyaXgoc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4gK3N0YXRp YyB2b2lkIGlsa19sb2FkX2NzY19tYXRyaXgoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnN0YXRl KQo+ID4gIHsKPiA+IC0Jc3RydWN0IGRybV9jcnRjICpjcnRjID0gY3J0Y19zdGF0ZS0+Y3J0YzsK PiA+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5k ZXYpOwo+ID4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMo Y3J0Yyk7Cj4gPiAtCWludCBpLCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiA+ICsJc3RydWN0 IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHN0YXRlLT5iYXNlLmNydGMpOwo+ID4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2Uu ZGV2KTsKPiA+ICsJaW50IGksIHBpcGUgPSBjcnRjLT5waXBlOwo+ID4gIAl1aW50MTZfdCBjb2Vm ZnNbOV0gPSB7IDAsIH07Cj4gPiAtCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9jcnRj X3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjX3N0YXRlKTsKPiA+ICAJYm9vbCBsaW1p dGVkX2NvbG9yX3JhbmdlID0gZmFsc2U7Cj4gPiAgCj4gPiAgCS8qCj4gPiBAQCAtMTQ3LDE0ICsx NDUsMTQgQEAgc3RhdGljIHZvaWQgaWxrX2xvYWRfY3NjX21hdHJpeChzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCj4gPiAgCSAqIGRvIHRoZSByYW5nZSBjb21wcmVzc2lvbiB1c2lu ZyB0aGUgZ2FtbWEgTFVUIGluc3RlYWQuCj4gPiAgCSAqLwo+ID4gIAlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA4IHx8IElTX0hBU1dFTEwoZGV2X3ByaXYpKQo+ID4gLQkJbGltaXRlZF9jb2xv cl9yYW5nZSA9IGludGVsX2NydGNfc3RhdGUtPmxpbWl0ZWRfY29sb3JfcmFuZ2U7Cj4gPiArCQls aW1pdGVkX2NvbG9yX3JhbmdlID0gc3RhdGUtPmxpbWl0ZWRfY29sb3JfcmFuZ2U7Cj4gPiAgCj4g PiAtCWlmIChpbnRlbF9jcnRjX3N0YXRlLT5vdXRwdXRfZm9ybWF0ID09IElOVEVMX09VVFBVVF9G T1JNQVRfWUNCQ1I0MjAgfHwKPiA+IC0JICAgIGludGVsX2NydGNfc3RhdGUtPm91dHB1dF9mb3Jt YXQgPT0gSU5URUxfT1VUUFVUX0ZPUk1BVF9ZQ0JDUjQ0NCkgewo+ID4gLQkJaWxrX2xvYWRfeWNi Y3JfY29udmVyc2lvbl9tYXRyaXgoaW50ZWxfY3J0Yyk7Cj4gPiArCWlmIChzdGF0ZS0+b3V0cHV0 X2Zvcm1hdCA9PSBJTlRFTF9PVVRQVVRfRk9STUFUX1lDQkNSNDIwIHx8Cj4gPiArCSAgICBzdGF0 ZS0+b3V0cHV0X2Zvcm1hdCA9PSBJTlRFTF9PVVRQVVRfRk9STUFUX1lDQkNSNDQ0KSB7Cj4gPiAr CQlpbGtfbG9hZF95Y2Jjcl9jb252ZXJzaW9uX21hdHJpeChjcnRjKTsKPiA+ICAJCXJldHVybjsK PiA+IC0JfSBlbHNlIGlmIChjcnRjX3N0YXRlLT5jdG0pIHsKPiA+IC0JCXN0cnVjdCBkcm1fY29s b3JfY3RtICpjdG0gPSBjcnRjX3N0YXRlLT5jdG0tPmRhdGE7Cj4gPiArCX0gZWxzZSBpZiAoc3Rh dGUtPmJhc2UuY3RtKSB7Cj4gPiArCQlzdHJ1Y3QgZHJtX2NvbG9yX2N0bSAqY3RtID0gc3RhdGUt PmJhc2UuY3RtLT5kYXRhOwo+ID4gIAkJY29uc3QgdTY0ICppbnB1dDsKPiA+ICAJCXU2NCB0ZW1w WzldOwo+ID4gIAo+ID4gQEAgLTI1MywxNiArMjUxLDE1IEBAIHN0YXRpYyB2b2lkIGlsa19sb2Fk X2NzY19tYXRyaXgoc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4gIC8qCj4g PiAgICogU2V0IHVwIHRoZSBwaXBlIENTQyB1bml0IG9uIENoZXJyeVZpZXcuCj4gPiAgICovCj4g PiAtc3RhdGljIHZvaWQgY2hlcnJ5dmlld19sb2FkX2NzY19tYXRyaXgoc3RydWN0IGRybV9jcnRj X3N0YXRlICpzdGF0ZSkKPiA+ICtzdGF0aWMgdm9pZCBjaGVycnl2aWV3X2xvYWRfY3NjX21hdHJp eChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc3RhdGUpCj4gPiAgewo+ID4gLQlzdHJ1Y3QgZHJt X2NydGMgKmNydGMgPSBzdGF0ZS0+Y3J0YzsKPiA+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNydGMtPmRldjsKPiA+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5iYXNlLmNy dGMtPmRldjsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShkZXYpOwo+ID4gLQlpbnQgcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7Cj4gPiAr CWludCBwaXBlID0gdG9faW50ZWxfY3J0YyhzdGF0ZS0+YmFzZS5jcnRjKS0+cGlwZTsKPiA+ICAJ dWludDMyX3QgbW9kZTsKPiA+ICAKPiA+IC0JaWYgKHN0YXRlLT5jdG0pIHsKPiA+IC0JCXN0cnVj dCBkcm1fY29sb3JfY3RtICpjdG0gPSBzdGF0ZS0+Y3RtLT5kYXRhOwo+ID4gKwlpZiAoc3RhdGUt PmJhc2UuY3RtKSB7Cj4gPiArCQlzdHJ1Y3QgZHJtX2NvbG9yX2N0bSAqY3RtID0gc3RhdGUtPmJh c2UuY3RtLT5kYXRhOwo+ID4gIAkJdWludDE2X3QgY29lZmZzWzldID0geyAwLCB9Owo+ID4gIAkJ aW50IGk7Cj4gPiAgCj4gPiBAQCAtMjkzLDM2ICsyOTAsMzQgQEAgc3RhdGljIHZvaWQgY2hlcnJ5 dmlld19sb2FkX2NzY19tYXRyaXgoc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkKPiA+ICAJ CUk5MTVfV1JJVEUoQ0dNX1BJUEVfQ1NDX0NPRUZGOChwaXBlKSwgY29lZmZzWzhdKTsKPiA+ICAJ fQo+ID4gIAo+ID4gLQltb2RlID0gKHN0YXRlLT5jdG0gPyBDR01fUElQRV9NT0RFX0NTQyA6IDAp Owo+ID4gKwltb2RlID0gKHN0YXRlLT5iYXNlLmN0bSA/IENHTV9QSVBFX01PREVfQ1NDIDogMCk7 Cj4gPiAgCWlmICghY3J0Y19zdGF0ZV9pc19sZWdhY3lfZ2FtbWEoc3RhdGUpKSB7Cj4gPiAtCQlt b2RlIHw9IChzdGF0ZS0+ZGVnYW1tYV9sdXQgPyBDR01fUElQRV9NT0RFX0RFR0FNTUEgOiAwKSB8 Cj4gPiAtCQkJKHN0YXRlLT5nYW1tYV9sdXQgPyBDR01fUElQRV9NT0RFX0dBTU1BIDogMCk7Cj4g PiArCQltb2RlIHw9IChzdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dCA/IENHTV9QSVBFX01PREVfREVH QU1NQSA6IDApIHwKPiA+ICsJCQkoc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ID8gQ0dNX1BJUEVfTU9E RV9HQU1NQSA6IDApOwo+ID4gIAl9Cj4gPiAgCUk5MTVfV1JJVEUoQ0dNX1BJUEVfTU9ERShwaXBl KSwgbW9kZSk7Cj4gPiAgfQo+ID4gIAo+ID4gLXZvaWQgaW50ZWxfY29sb3Jfc2V0X2NzYyhzdHJ1 Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gPiArdm9pZCBpbnRlbF9jb2xvcl9zZXRf Y3NjKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzdGF0ZSkKPiA+ICB7Cj4gPiAtCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjX3N0YXRlLT5jcnRjLT5kZXY7Cj4gPiArCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBzdGF0ZS0+YmFzZS5jcnRjLT5kZXY7Cj4gPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ICAKPiA+ICAJaWYgKGRldl9w cml2LT5kaXNwbGF5LmxvYWRfY3NjX21hdHJpeCkKPiA+IC0JCWRldl9wcml2LT5kaXNwbGF5Lmxv YWRfY3NjX21hdHJpeChjcnRjX3N0YXRlKTsKPiA+ICsJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRf Y3NjX21hdHJpeChzdGF0ZSk7Cj4gPiAgfQo+ID4gIAo+ID4gIC8qIExvYWRzIHRoZSBsZWdhY3kg cGFsZXR0ZS9nYW1tYSB1bml0IGZvciB0aGUgQ1JUQy4gKi8KPiA+IC1zdGF0aWMgdm9pZCBpOXh4 X2xvYWRfbHV0c19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiAtCQkJCSAgICBz dHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IsCj4gPiAtCQkJCSAgICBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiA+ICtzdGF0aWMgdm9pZCBpOXh4X2xvYWRfbHV0c19p bnRlcm5hbChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc3RhdGUsCj4gPiArCQkJCSAgICBzdHJ1 Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IpCj4gPiAgewo+ID4gLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ID4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGRldik7Cj4gPiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0g dG9faW50ZWxfY3J0YyhjcnRjKTsKPiA+IC0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5w aXBlOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoc3RhdGUt PmJhc2UuY3J0Yyk7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ID4gKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7 Cj4gPiAgCWludCBpOwo+ID4gIAo+ID4gIAlpZiAoSEFTX0dNQ0hfRElTUExBWShkZXZfcHJpdikp IHsKPiA+IC0JCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBV VF9EU0kpKQo+ID4gKwkJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoc3RhdGUsIElOVEVMX09VVFBV VF9EU0kpKQo+ID4gIAkJCWFzc2VydF9kc2lfcGxsX2VuYWJsZWQoZGV2X3ByaXYpOwo+ID4gIAkJ ZWxzZQo+ID4gIAkJCWFzc2VydF9wbGxfZW5hYmxlZChkZXZfcHJpdiwgcGlwZSk7Cj4gPiBAQCAt MzUzLDUzICszNDgsNDggQEAgc3RhdGljIHZvaWQgaTl4eF9sb2FkX2x1dHNfaW50ZXJuYWwoc3Ry dWN0IGRybV9jcnRjICpjcnRjLAo+ID4gIAl9Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyB2b2lk IGk5eHhfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiA+ICtz dGF0aWMgdm9pZCBpOXh4X2xvYWRfbHV0cyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc3RhdGUp Cj4gPiAgewo+ID4gLQlpOXh4X2xvYWRfbHV0c19pbnRlcm5hbChjcnRjX3N0YXRlLT5jcnRjLCBj cnRjX3N0YXRlLT5nYW1tYV9sdXQsCj4gPiAtCQkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19z dGF0ZSkpOwo+ID4gKwlpOXh4X2xvYWRfbHV0c19pbnRlcm5hbChzdGF0ZSwgc3RhdGUtPmJhc2Uu Z2FtbWFfbHV0KTsKPiA+ICB9Cj4gPiAgCj4gPiAgLyogTG9hZHMgdGhlIGxlZ2FjeSBwYWxldHRl L2dhbW1hIHVuaXQgZm9yIHRoZSBDUlRDIG9uIEhhc3dlbGwuICovCj4gPiAtc3RhdGljIHZvaWQg aGFzd2VsbF9sb2FkX2x1dHMoc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4g K3N0YXRpYyB2b2lkIGhhc3dlbGxfbG9hZF9sdXRzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpz dGF0ZSkKPiA+ICB7Cj4gPiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNydGNfc3RhdGUtPmNy dGM7Cj4gPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gPiAtCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+IC0Jc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ID4gLQlzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqaW50ZWxfY3J0Y19zdGF0ZSA9Cj4gPiAtCQl0b19pbnRlbF9j cnRjX3N0YXRlKGNydGNfc3RhdGUpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRv X2ludGVsX2NydGMoc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ID4gIAlib29sIHJlZW5h YmxlX2lwcyA9IGZhbHNlOwo+ID4gIAo+ID4gIAkvKgo+ID4gIAkgKiBXb3JrYXJvdW5kIDogRG8g bm90IHJlYWQgb3Igd3JpdGUgdGhlIHBpcGUgcGFsZXR0ZS9nYW1tYSBkYXRhIHdoaWxlCj4gPiAg CSAqIEdBTU1BX01PREUgaXMgY29uZmlndXJlZCBmb3Igc3BsaXQgZ2FtbWEgYW5kIElQU19DVEwg aGFzIElQUyBlbmFibGVkLgo+ID4gIAkgKi8KPiA+IC0JaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYp ICYmIGludGVsX2NydGNfc3RhdGUtPmlwc19lbmFibGVkICYmCj4gPiAtCSAgICAoaW50ZWxfY3J0 Y19zdGF0ZS0+Z2FtbWFfbW9kZSA9PSBHQU1NQV9NT0RFX01PREVfU1BMSVQpKSB7Cj4gPiAtCQlo c3dfZGlzYWJsZV9pcHMoaW50ZWxfY3J0Y19zdGF0ZSk7Cj4gPiArCWlmIChJU19IQVNXRUxMKGRl dl9wcml2KSAmJiBzdGF0ZS0+aXBzX2VuYWJsZWQgJiYKPiA+ICsJICAgIChzdGF0ZS0+Z2FtbWFf bW9kZSA9PSBHQU1NQV9NT0RFX01PREVfU1BMSVQpKSB7Cj4gPiArCQloc3dfZGlzYWJsZV9pcHMo c3RhdGUpOwo+ID4gIAkJcmVlbmFibGVfaXBzID0gdHJ1ZTsKPiA+ICAJfQo+ID4gIAo+ID4gLQlp bnRlbF9jcnRjX3N0YXRlLT5nYW1tYV9tb2RlID0gR0FNTUFfTU9ERV9NT0RFXzhCSVQ7Cj4gPiAt CUk5MTVfV1JJVEUoR0FNTUFfTU9ERShpbnRlbF9jcnRjLT5waXBlKSwgR0FNTUFfTU9ERV9NT0RF XzhCSVQpOwo+ID4gKwlzdGF0ZS0+Z2FtbWFfbW9kZSA9IEdBTU1BX01PREVfTU9ERV84QklUOwo+ ID4gKwlJOTE1X1dSSVRFKEdBTU1BX01PREUoY3J0Yy0+cGlwZSksIEdBTU1BX01PREVfTU9ERV84 QklUKTsKPiA+ICAKPiA+IC0JaTl4eF9sb2FkX2x1dHMoY3J0Y19zdGF0ZSk7Cj4gPiArCWk5eHhf bG9hZF9sdXRzKHN0YXRlKTsKPiA+ICAKPiA+ICAJaWYgKHJlZW5hYmxlX2lwcykKPiA+IC0JCWhz d19lbmFibGVfaXBzKGludGVsX2NydGNfc3RhdGUpOwo+ID4gKwkJaHN3X2VuYWJsZV9pcHMoc3Rh dGUpOwo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMgdm9pZCBiZHdfbG9hZF9kZWdhbW1hX2x1dChz dHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+ID4gK3N0YXRpYyB2b2lkIGJkd19sb2FkX2Rl Z2FtbWFfbHV0KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzdGF0ZSkKPiA+ICB7Cj4gPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmNydGMtPmRl dik7Cj4gPiAtCWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxfY3J0YyhzdGF0ZS0+Y3J0YyktPnBp cGU7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3Rh dGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiA+ICsJZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9jcnRj KHN0YXRlLT5iYXNlLmNydGMpLT5waXBlOwo+ID4gIAl1aW50MzJfdCBpLCBsdXRfc2l6ZSA9IElO VEVMX0lORk8oZGV2X3ByaXYpLT5jb2xvci5kZWdhbW1hX2x1dF9zaXplOwo+ID4gIAo+ID4gIAlJ OTE1X1dSSVRFKFBSRUNfUEFMX0lOREVYKHBpcGUpLAo+ID4gIAkJICAgUEFMX1BSRUNfU1BMSVRf TU9ERSB8IFBBTF9QUkVDX0FVVE9fSU5DUkVNRU5UKTsKPiA+ICAKPiA+IC0JaWYgKHN0YXRlLT5k ZWdhbW1hX2x1dCkgewo+ID4gLQkJc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dCA9IHN0YXRlLT5k ZWdhbW1hX2x1dC0+ZGF0YTsKPiA+ICsJaWYgKHN0YXRlLT5iYXNlLmRlZ2FtbWFfbHV0KSB7Cj4g PiArCQlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0ID0gc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQt PmRhdGE7Cj4gPiAgCj4gPiAgCQlmb3IgKGkgPSAwOyBpIDwgbHV0X3NpemU7IGkrKykgewo+ID4g IAkJCXVpbnQzMl90IHdvcmQgPQo+ID4gQEAgLTQxOSwxMCArNDA5LDEwIEBAIHN0YXRpYyB2b2lk IGJkd19sb2FkX2RlZ2FtbWFfbHV0KHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCj4gPiAg CX0KPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIHZvaWQgYmR3X2xvYWRfZ2FtbWFfbHV0KHN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUsIHUzMiBvZmZzZXQpCj4gPiArc3RhdGljIHZvaWQgYmR3 X2xvYWRfZ2FtbWFfbHV0KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzdGF0ZSwgdTMyIG9mZnNl dCkKPiA+ICB7Cj4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoc3RhdGUtPmNydGMtPmRldik7Cj4gPiAtCWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxfY3J0 YyhzdGF0ZS0+Y3J0YyktPnBpcGU7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiA+ICsJZW51bSBwaXBlIHBp cGUgPSB0b19pbnRlbF9jcnRjKHN0YXRlLT5iYXNlLmNydGMpLT5waXBlOwo+ID4gIAl1aW50MzJf dCBpLCBsdXRfc2l6ZSA9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5jb2xvci5nYW1tYV9sdXRfc2l6 ZTsKPiA+ICAKPiA+ICAJV0FSTl9PTihvZmZzZXQgJiB+UEFMX1BSRUNfSU5ERVhfVkFMVUVfTUFT Syk7Cj4gPiBAQCAtNDMyLDggKzQyMiw4IEBAIHN0YXRpYyB2b2lkIGJkd19sb2FkX2dhbW1hX2x1 dChzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlLCB1MzIgb2Zmc2V0KQo+ID4gIAkJICAgUEFM X1BSRUNfQVVUT19JTkNSRU1FTlQgfAo+ID4gIAkJICAgb2Zmc2V0KTsKPiA+ICAKPiA+IC0JaWYg KHN0YXRlLT5nYW1tYV9sdXQpIHsKPiA+IC0JCXN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQgPSBz dGF0ZS0+Z2FtbWFfbHV0LT5kYXRhOwo+ID4gKwlpZiAoc3RhdGUtPmJhc2UuZ2FtbWFfbHV0KSB7 Cj4gPiArCQlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0ID0gc3RhdGUtPmJhc2UuZ2FtbWFfbHV0 LT5kYXRhOwo+ID4gIAo+ID4gIAkJZm9yIChpID0gMDsgaSA8IGx1dF9zaXplOyBpKyspIHsKPiA+ ICAJCQl1aW50MzJfdCB3b3JkID0KPiA+IEBAIC00NjcsMTEgKzQ1NywxMCBAQCBzdGF0aWMgdm9p ZCBiZHdfbG9hZF9nYW1tYV9sdXQoc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSwgdTMyIG9m ZnNldCkKPiA+ICB9Cj4gPiAgCj4gPiAgLyogTG9hZHMgdGhlIHBhbGV0dGUvZ2FtbWEgdW5pdCBm b3IgdGhlIENSVEMgb24gQnJvYWR3ZWxsKy4gKi8KPiA+IC1zdGF0aWMgdm9pZCBicm9hZHdlbGxf bG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCj4gPiArc3RhdGljIHZvaWQg YnJvYWR3ZWxsX2xvYWRfbHV0cyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc3RhdGUpCj4gPiAg ewo+ID4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRl LT5jcnRjLT5kZXYpOwo+ID4gLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqaW50ZWxfc3RhdGUg PSB0b19pbnRlbF9jcnRjX3N0YXRlKHN0YXRlKTsKPiA+IC0JZW51bSBwaXBlIHBpcGUgPSB0b19p bnRlbF9jcnRjKHN0YXRlLT5jcnRjKS0+cGlwZTsKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwo+ID4gKwllbnVt IHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMoc3RhdGUtPmJhc2UuY3J0YyktPnBpcGU7Cj4gPiAg Cj4gPiAgCWlmIChjcnRjX3N0YXRlX2lzX2xlZ2FjeV9nYW1tYShzdGF0ZSkpIHsKPiA+ICAJCWhh c3dlbGxfbG9hZF9sdXRzKHN0YXRlKTsKPiA+IEBAIC00NzksMTAgKzQ2OCw5IEBAIHN0YXRpYyB2 b2lkIGJyb2Fkd2VsbF9sb2FkX2x1dHMoc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkKPiA+ ICAJfQo+ID4gIAo+ID4gIAliZHdfbG9hZF9kZWdhbW1hX2x1dChzdGF0ZSk7Cj4gPiAtCWJkd19s b2FkX2dhbW1hX2x1dChzdGF0ZSwKPiA+IC0JCQkgICBJTlRFTF9JTkZPKGRldl9wcml2KS0+Y29s b3IuZGVnYW1tYV9sdXRfc2l6ZSk7Cj4gPiArCWJkd19sb2FkX2dhbW1hX2x1dChzdGF0ZSwgSU5U RUxfSU5GTyhkZXZfcHJpdiktPmNvbG9yLmRlZ2FtbWFfbHV0X3NpemUpOwo+ID4gIAo+ID4gLQlp bnRlbF9zdGF0ZS0+Z2FtbWFfbW9kZSA9IEdBTU1BX01PREVfTU9ERV9TUExJVDsKPiA+ICsJc3Rh dGUtPmdhbW1hX21vZGUgPSBHQU1NQV9NT0RFX01PREVfU1BMSVQ7Cj4gPiAgCUk5MTVfV1JJVEUo R0FNTUFfTU9ERShwaXBlKSwgR0FNTUFfTU9ERV9NT0RFX1NQTElUKTsKPiA+ICAJUE9TVElOR19S RUFEKEdBTU1BX01PREUocGlwZSkpOwo+ID4gIAo+ID4gQEAgLTQ5MywxMCArNDgxLDEwIEBAIHN0 YXRpYyB2b2lkIGJyb2Fkd2VsbF9sb2FkX2x1dHMoc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0 ZSkKPiA+ICAJSTkxNV9XUklURShQUkVDX1BBTF9JTkRFWChwaXBlKSwgMCk7Cj4gPiAgfQo+ID4g IAo+ID4gLXN0YXRpYyB2b2lkIGdsa19sb2FkX2RlZ2FtbWFfbHV0KHN0cnVjdCBkcm1fY3J0Y19z dGF0ZSAqc3RhdGUpCj4gPiArc3RhdGljIHZvaWQgZ2xrX2xvYWRfZGVnYW1tYV9sdXQoc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnN0YXRlKQo+ID4gIHsKPiA+IC0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+Y3J0Yy0+ZGV2KTsKPiA+IC0JZW51bSBw aXBlIHBpcGUgPSB0b19pbnRlbF9jcnRjKHN0YXRlLT5jcnRjKS0+cGlwZTsKPiA+ICsJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5jcnRjLT5k ZXYpOwo+ID4gKwllbnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMoc3RhdGUtPmJhc2UuY3J0 YyktPnBpcGU7Cj4gPiAgCWNvbnN0IHVpbnQzMl90IGx1dF9zaXplID0gMzM7Cj4gPiAgCXVpbnQz Ml90IGk7Cj4gPiAgCj4gPiBAQCAtNTIzLDEzICs1MTEsMTEgQEAgc3RhdGljIHZvaWQgZ2xrX2xv YWRfZGVnYW1tYV9sdXQoc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkKPiA+ICAJCUk5MTVf V1JJVEUoUFJFX0NTQ19HQU1DX0RBVEEocGlwZSksICgxIDw8IDE2KSk7Cj4gPiAgfQo+ID4gIAo+ ID4gLXN0YXRpYyB2b2lkIGdsa19sb2FkX2x1dHMoc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0 ZSkKPiA+ICtzdGF0aWMgdm9pZCBnbGtfbG9hZF9sdXRzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpzdGF0ZSkKPiA+ICB7Cj4gPiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHN0YXRlLT5jcnRj Owo+ID4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ID4gKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2Owo+ID4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPiAtCXN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoc3RhdGUpOwo+ ID4gLQllbnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7Cj4gPiArCWVu dW0gcGlwZSBwaXBlID0gdG9faW50ZWxfY3J0YyhzdGF0ZS0+YmFzZS5jcnRjKS0+cGlwZTsKPiA+ ICAKPiA+ICAJZ2xrX2xvYWRfZGVnYW1tYV9sdXQoc3RhdGUpOwo+ID4gIAo+ID4gQEAgLTU0MCwx NSArNTI2LDE1IEBAIHN0YXRpYyB2b2lkIGdsa19sb2FkX2x1dHMoc3RydWN0IGRybV9jcnRjX3N0 YXRlICpzdGF0ZSkKPiA+ICAKPiA+ICAJYmR3X2xvYWRfZ2FtbWFfbHV0KHN0YXRlLCAwKTsKPiA+ ICAKPiA+IC0JaW50ZWxfc3RhdGUtPmdhbW1hX21vZGUgPSBHQU1NQV9NT0RFX01PREVfMTBCSVQ7 Cj4gPiArCXN0YXRlLT5nYW1tYV9tb2RlID0gR0FNTUFfTU9ERV9NT0RFXzEwQklUOwo+ID4gIAlJ OTE1X1dSSVRFKEdBTU1BX01PREUocGlwZSksIEdBTU1BX01PREVfTU9ERV8xMEJJVCk7Cj4gPiAg CVBPU1RJTkdfUkVBRChHQU1NQV9NT0RFKHBpcGUpKTsKPiA+ICB9Cj4gPiAgCj4gPiAgLyogTG9h ZHMgdGhlIHBhbGV0dGUvZ2FtbWEgdW5pdCBmb3IgdGhlIENSVEMgb24gQ2hlcnJ5Vmlldy4gKi8K PiA+IC1zdGF0aWMgdm9pZCBjaGVycnl2aWV3X2xvYWRfbHV0cyhzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKnN0YXRlKQo+ID4gK3N0YXRpYyB2b2lkIGNoZXJyeXZpZXdfbG9hZF9sdXRzKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpzdGF0ZSkKPiA+ICB7Cj4gPiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YyA9IHN0YXRlLT5jcnRjOwo+ID4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBzdGF0ZS0+YmFz ZS5jcnRjOwo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNydGMtPmRldik7Cj4gPiAgCWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+ cGlwZTsKPiA+ICAJc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dDsKPiA+IEBAIC01NTgsMTQgKzU0 NCwxMyBAQCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X2xvYWRfbHV0cyhzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKnN0YXRlKQo+ID4gIAlpZiAoY3J0Y19zdGF0ZV9pc19sZWdhY3lfZ2FtbWEoc3RhdGUp KSB7Cj4gPiAgCQkvKiBUdXJuIG9mZiBkZWdhbW1hL2dhbW1hIG9uIENHTSBibG9jay4gKi8KPiA+ ICAJCUk5MTVfV1JJVEUoQ0dNX1BJUEVfTU9ERShwaXBlKSwKPiA+IC0JCQkgICAoc3RhdGUtPmN0 bSA/IENHTV9QSVBFX01PREVfQ1NDIDogMCkpOwo+ID4gLQkJaTl4eF9sb2FkX2x1dHNfaW50ZXJu YWwoY3J0Yywgc3RhdGUtPmdhbW1hX2x1dCwKPiA+IC0JCQkJCXRvX2ludGVsX2NydGNfc3RhdGUo c3RhdGUpKTsKPiA+ICsJCQkgICAoc3RhdGUtPmJhc2UuY3RtID8gQ0dNX1BJUEVfTU9ERV9DU0Mg OiAwKSk7Cj4gPiArCQlpOXh4X2xvYWRfbHV0c19pbnRlcm5hbChzdGF0ZSwgc3RhdGUtPmJhc2Uu Z2FtbWFfbHV0KTsKPiA+ICAJCXJldHVybjsKPiA+ICAJfQo+ID4gIAo+ID4gLQlpZiAoc3RhdGUt PmRlZ2FtbWFfbHV0KSB7Cj4gPiAtCQlsdXQgPSBzdGF0ZS0+ZGVnYW1tYV9sdXQtPmRhdGE7Cj4g PiArCWlmIChzdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dCkgewo+ID4gKwkJbHV0ID0gc3RhdGUtPmJh c2UuZGVnYW1tYV9sdXQtPmRhdGE7Cj4gPiAgCQlsdXRfc2l6ZSA9IElOVEVMX0lORk8oZGV2X3By aXYpLT5jb2xvci5kZWdhbW1hX2x1dF9zaXplOwo+ID4gIAkJZm9yIChpID0gMDsgaSA8IGx1dF9z aXplOyBpKyspIHsKPiA+ICAJCQkvKiBXcml0ZSBMVVQgaW4gVTAuMTQgZm9ybWF0LiAqLwo+ID4g QEAgLTU3OSw4ICs1NjQsOCBAQCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X2xvYWRfbHV0cyhzdHJ1 Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+ID4gIAkJfQo+ID4gIAl9Cj4gPiAgCj4gPiAtCWlm IChzdGF0ZS0+Z2FtbWFfbHV0KSB7Cj4gPiAtCQlsdXQgPSBzdGF0ZS0+Z2FtbWFfbHV0LT5kYXRh Owo+ID4gKwlpZiAoc3RhdGUtPmJhc2UuZ2FtbWFfbHV0KSB7Cj4gPiArCQlsdXQgPSBzdGF0ZS0+ YmFzZS5nYW1tYV9sdXQtPmRhdGE7Cj4gPiAgCQlsdXRfc2l6ZSA9IElOVEVMX0lORk8oZGV2X3By aXYpLT5jb2xvci5nYW1tYV9sdXRfc2l6ZTsKPiA+ICAJCWZvciAoaSA9IDA7IGkgPCBsdXRfc2l6 ZTsgaSsrKSB7Cj4gPiAgCQkJLyogV3JpdGUgTFVUIGluIFUwLjEwIGZvcm1hdC4gKi8KPiA+IEBA IC01OTUsMjkgKzU4MCwyOSBAQCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X2xvYWRfbHV0cyhzdHJ1 Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+ID4gIAl9Cj4gPiAgCj4gPiAgCUk5MTVfV1JJVEUo Q0dNX1BJUEVfTU9ERShwaXBlKSwKPiA+IC0JCSAgIChzdGF0ZS0+Y3RtID8gQ0dNX1BJUEVfTU9E RV9DU0MgOiAwKSB8Cj4gPiAtCQkgICAoc3RhdGUtPmRlZ2FtbWFfbHV0ID8gQ0dNX1BJUEVfTU9E RV9ERUdBTU1BIDogMCkgfAo+ID4gLQkJICAgKHN0YXRlLT5nYW1tYV9sdXQgPyBDR01fUElQRV9N T0RFX0dBTU1BIDogMCkpOwo+ID4gKwkJICAgKHN0YXRlLT5iYXNlLmN0bSA/IENHTV9QSVBFX01P REVfQ1NDIDogMCkgfAo+ID4gKwkJICAgKHN0YXRlLT5iYXNlLmRlZ2FtbWFfbHV0ID8gQ0dNX1BJ UEVfTU9ERV9ERUdBTU1BIDogMCkgfAo+ID4gKwkJICAgKHN0YXRlLT5iYXNlLmdhbW1hX2x1dCA/ IENHTV9QSVBFX01PREVfR0FNTUEgOiAwKSk7Cj4gPiAgCj4gPiAgCS8qCj4gPiAgCSAqIEFsc28g cHJvZ3JhbSBhIGxpbmVhciBMVVQgaW4gdGhlIGxlZ2FjeSBibG9jayAoYmVoaW5kIHRoZQo+ID4g IAkgKiBDR00gYmxvY2spLgo+ID4gIAkgKi8KPiA+IC0JaTl4eF9sb2FkX2x1dHNfaW50ZXJuYWwo Y3J0YywgTlVMTCwgdG9faW50ZWxfY3J0Y19zdGF0ZShzdGF0ZSkpOwo+ID4gKwlpOXh4X2xvYWRf bHV0c19pbnRlcm5hbChzdGF0ZSwgTlVMTCk7Cj4gPiAgfQo+ID4gIAo+ID4gLXZvaWQgaW50ZWxf Y29sb3JfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiA+ICt2 b2lkIGludGVsX2NvbG9yX2xvYWRfbHV0cyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc3RhdGUp Cj4gPiAgewo+ID4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Y19zdGF0ZS0+Y3J0Yy0+ ZGV2Owo+ID4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2 Owo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7 Cj4gPiAgCj4gPiAtCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyhjcnRjX3N0YXRlKTsKPiA+ ICsJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzKHN0YXRlKTsKPiA+ICB9Cj4gPiAgCj4gPiAt aW50IGludGVsX2NvbG9yX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+IC0JCSAgICAg IHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiA+ICtpbnQgaW50ZWxfY29sb3Jf Y2hlY2soc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gPiArCQkgICAgICBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqc3RhdGUpCj4gPiAgewo+ID4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmRldik7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ID4gIAlzaXplX3QgZ2Ft bWFfbGVuZ3RoLCBkZWdhbW1hX2xlbmd0aDsKPiA+ICAKPiA+ICAJZGVnYW1tYV9sZW5ndGggPSBJ TlRFTF9JTkZPKGRldl9wcml2KS0+Y29sb3IuZGVnYW1tYV9sdXRfc2l6ZTsKPiA+IEBAIC02Mjcs MjcgKzYxMiwyNyBAQCBpbnQgaW50ZWxfY29sb3JfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRj LAo+ID4gIAkgKiBXZSBhbGxvdyBib3RoIGRlZ2FtbWEgJiBnYW1tYSBsdXRzIGF0IHRoZSByaWdo dCBzaXplIG9yCj4gPiAgCSAqIE5VTEwuCj4gPiAgCSAqLwo+ID4gLQlpZiAoKCFjcnRjX3N0YXRl LT5kZWdhbW1hX2x1dCB8fAo+ID4gLQkgICAgIGRybV9jb2xvcl9sdXRfc2l6ZShjcnRjX3N0YXRl LT5kZWdhbW1hX2x1dCkgPT0gZGVnYW1tYV9sZW5ndGgpICYmCj4gPiAtCSAgICAoIWNydGNfc3Rh dGUtPmdhbW1hX2x1dCB8fAo+ID4gLQkgICAgIGRybV9jb2xvcl9sdXRfc2l6ZShjcnRjX3N0YXRl LT5nYW1tYV9sdXQpID09IGdhbW1hX2xlbmd0aCkpCj4gPiArCWlmICgoIXN0YXRlLT5iYXNlLmRl Z2FtbWFfbHV0IHx8Cj4gPiArCSAgICAgZHJtX2NvbG9yX2x1dF9zaXplKHN0YXRlLT5iYXNlLmRl Z2FtbWFfbHV0KSA9PSBkZWdhbW1hX2xlbmd0aCkgJiYKPiA+ICsJICAgICghc3RhdGUtPmJhc2Uu Z2FtbWFfbHV0IHx8Cj4gPiArCSAgICAgZHJtX2NvbG9yX2x1dF9zaXplKHN0YXRlLT5iYXNlLmdh bW1hX2x1dCkgPT0gZ2FtbWFfbGVuZ3RoKSkKPiA+ICAJCXJldHVybiAwOwo+ID4gIAo+ID4gIAkv Kgo+ID4gIAkgKiBXZSBhbHNvIGFsbG93IG5vIGRlZ2FtbWEgbHV0L2N0bSBhbmQgYSBnYW1tYSBs dXQgYXQgdGhlIGxlZ2FjeQo+ID4gIAkgKiBzaXplICgyNTYgZW50cmllcykuCj4gPiAgCSAqLwo+ ID4gLQlpZiAoY3J0Y19zdGF0ZV9pc19sZWdhY3lfZ2FtbWEoY3J0Y19zdGF0ZSkpCj4gPiArCWlm IChjcnRjX3N0YXRlX2lzX2xlZ2FjeV9nYW1tYShzdGF0ZSkpCj4gPiAgCQlyZXR1cm4gMDsKPiA+ ICAKPiA+ICAJcmV0dXJuIC1FSU5WQUw7Cj4gPiAgfQo+ID4gIAo+ID4gLXZvaWQgaW50ZWxfY29s b3JfaW5pdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gPiArdm9pZCBpbnRlbF9jb2xvcl9pbml0 KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ID4gIHsKPiA+IC0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5kZXYpOwo+ID4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiA+ICAKPiA+ IC0JZHJtX21vZGVfY3J0Y19zZXRfZ2FtbWFfc2l6ZShjcnRjLCAyNTYpOwo+ID4gKwlkcm1fbW9k ZV9jcnRjX3NldF9nYW1tYV9zaXplKCZjcnRjLT5iYXNlLCAyNTYpOwo+ID4gIAo+ID4gIAlpZiAo SVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiA+ICAJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRf Y3NjX21hdHJpeCA9IGNoZXJyeXZpZXdfbG9hZF9jc2NfbWF0cml4Owo+ID4gQEAgLTY2OSw3ICs2 NTQsNyBAQCB2b2lkIGludGVsX2NvbG9yX2luaXQoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ID4g IAkvKiBFbmFibGUgY29sb3IgbWFuYWdlbWVudCBzdXBwb3J0IHdoZW4gd2UgaGF2ZSBkZWdhbW1h ICYgZ2FtbWEgTFVUcy4gKi8KPiA+ICAJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5jb2xvci5k ZWdhbW1hX2x1dF9zaXplICE9IDAgJiYKPiA+ICAJICAgIElOVEVMX0lORk8oZGV2X3ByaXYpLT5j b2xvci5nYW1tYV9sdXRfc2l6ZSAhPSAwKQo+ID4gLQkJZHJtX2NydGNfZW5hYmxlX2NvbG9yX21n bXQoY3J0YywKPiA+ICsJCWRybV9jcnRjX2VuYWJsZV9jb2xvcl9tZ210KCZjcnRjLT5iYXNlLAo+ ID4gIAkJCQkJICAgSU5URUxfSU5GTyhkZXZfcHJpdiktPmNvbG9yLmRlZ2FtbWFfbHV0X3NpemUs Cj4gPiAgCQkJCQkgICB0cnVlLAo+ID4gIAkJCQkJICAgSU5URUxfSU5GTyhkZXZfcHJpdiktPmNv bG9yLmdhbW1hX2x1dF9zaXplKTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK PiA+IGluZGV4IGRiNjAwNGE4ODNjNy4uNWI5NjU3OTdkZjRlIDEwMDY0NAo+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+IEBAIC01NjQxLDcgKzU2NDEsNyBAQCBzdGF0aWMg dm9pZCBpcm9ubGFrZV9jcnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcsCj4gPiAgCSAqIE9uIElMSysgTFVUIG11c3QgYmUgbG9hZGVkIGJlZm9yZSB0aGUgcGlw ZSBpcyBydW5uaW5nIGJ1dCB3aXRoCj4gPiAgCSAqIGNsb2NrcyBlbmFibGVkCj4gPiAgCSAqLwo+ ID4gLQlpbnRlbF9jb2xvcl9sb2FkX2x1dHMoJnBpcGVfY29uZmlnLT5iYXNlKTsKPiA+ICsJaW50 ZWxfY29sb3JfbG9hZF9sdXRzKHBpcGVfY29uZmlnKTsKPiA+ICAKPiA+ICAJaWYgKGRldl9wcml2 LT5kaXNwbGF5LmluaXRpYWxfd2F0ZXJtYXJrcyAhPSBOVUxMKQo+ID4gIAkJZGV2X3ByaXYtPmRp c3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzKG9sZF9pbnRlbF9zdGF0ZSwgcGlwZV9jb25maWcpOwo+ ID4gQEAgLTU3NTIsNyArNTc1Miw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19lbmFibGUo c3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ID4gIAo+ID4gIAloYXN3ZWxs X3NldF9waXBlbWlzYyhwaXBlX2NvbmZpZyk7Cj4gPiAgCj4gPiAtCWludGVsX2NvbG9yX3NldF9j c2MoJnBpcGVfY29uZmlnLT5iYXNlKTsKPiA+ICsJaW50ZWxfY29sb3Jfc2V0X2NzYyhwaXBlX2Nv bmZpZyk7Cj4gPiAgCj4gPiAgCWludGVsX2NydGMtPmFjdGl2ZSA9IHRydWU7Cj4gPiAgCj4gPiBA QCAtNTc3MSw3ICs1NzcxLDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gPiAgCSAqIE9uIElMSysgTFVUIG11 c3QgYmUgbG9hZGVkIGJlZm9yZSB0aGUgcGlwZSBpcyBydW5uaW5nIGJ1dCB3aXRoCj4gPiAgCSAq IGNsb2NrcyBlbmFibGVkCj4gPiAgCSAqLwo+ID4gLQlpbnRlbF9jb2xvcl9sb2FkX2x1dHMoJnBp cGVfY29uZmlnLT5iYXNlKTsKPiA+ICsJaW50ZWxfY29sb3JfbG9hZF9sdXRzKHBpcGVfY29uZmln KTsKPiA+ICAKPiA+ICAJLyoKPiA+ICAJICogRGlzcGxheSBXQSAjMTE1MzogZW5hYmxlIGhhcmR3 YXJlIHRvIGJ5cGFzcyB0aGUgYWxwaGEgbWF0aAo+ID4gQEAgLTYxMTcsNyArNjExNyw3IEBAIHN0 YXRpYyB2b2lkIHZhbGxleXZpZXdfY3J0Y19lbmFibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KnBpcGVfY29uZmlnLAo+ID4gIAo+ID4gIAlpOXh4X3NldF9waXBlY29uZihwaXBlX2NvbmZpZyk7 Cj4gPiAgCj4gPiAtCWludGVsX2NvbG9yX3NldF9jc2MoJnBpcGVfY29uZmlnLT5iYXNlKTsKPiA+ ICsJaW50ZWxfY29sb3Jfc2V0X2NzYyhwaXBlX2NvbmZpZyk7Cj4gPiAgCj4gPiAgCWludGVsX2Ny dGMtPmFjdGl2ZSA9IHRydWU7Cj4gPiAgCj4gPiBAQCAtNjEzNyw3ICs2MTM3LDcgQEAgc3RhdGlj IHZvaWQgdmFsbGV5dmlld19jcnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlw ZV9jb25maWcsCj4gPiAgCj4gPiAgCWk5eHhfcGZpdF9lbmFibGUocGlwZV9jb25maWcpOwo+ID4g IAo+ID4gLQlpbnRlbF9jb2xvcl9sb2FkX2x1dHMoJnBpcGVfY29uZmlnLT5iYXNlKTsKPiA+ICsJ aW50ZWxfY29sb3JfbG9hZF9sdXRzKHBpcGVfY29uZmlnKTsKPiA+ICAKPiA+ICAJZGV2X3ByaXYt PmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzKG9sZF9pbnRlbF9zdGF0ZSwKPiA+ICAJCQkJCSAg ICAgcGlwZV9jb25maWcpOwo+ID4gQEAgLTYxOTMsNyArNjE5Myw3IEBAIHN0YXRpYyB2b2lkIGk5 eHhfY3J0Y19lbmFibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ID4g IAo+ID4gIAlpOXh4X3BmaXRfZW5hYmxlKHBpcGVfY29uZmlnKTsKPiA+ICAKPiA+IC0JaW50ZWxf Y29sb3JfbG9hZF9sdXRzKCZwaXBlX2NvbmZpZy0+YmFzZSk7Cj4gPiArCWludGVsX2NvbG9yX2xv YWRfbHV0cyhwaXBlX2NvbmZpZyk7Cj4gPiAgCj4gPiAgCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5p bml0aWFsX3dhdGVybWFya3MgIT0gTlVMTCkKPiA+ICAJCWRldl9wcml2LT5kaXNwbGF5LmluaXRp YWxfd2F0ZXJtYXJrcyhvbGRfaW50ZWxfc3RhdGUsCj4gPiBAQCAtMTA5NzIsNyArMTA5NzIsNyBA QCBzdGF0aWMgaW50IGludGVsX2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKPiA+ICAJfQo+ID4gIAo+ID4gIAlpZiAoY3J0Y19zdGF0ZS0+Y29sb3JfbWdtdF9jaGFuZ2Vk KSB7Cj4gPiAtCQlyZXQgPSBpbnRlbF9jb2xvcl9jaGVjayhjcnRjLCBjcnRjX3N0YXRlKTsKPiA+ ICsJCXJldCA9IGludGVsX2NvbG9yX2NoZWNrKGludGVsX2NydGMsIHBpcGVfY29uZmlnKTsKPiA+ ICAJCWlmIChyZXQpCj4gPiAgCQkJcmV0dXJuIHJldDsKPiA+ICAKPiA+IEBAIC0xMzU0OCw4ICsx MzU0OCw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2JlZ2luX2NydGNfY29tbWl0KHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPiA+ICAJaWYgKCFtb2Rlc2V0ICYmCj4gPiAgCSAgICAoaW50ZWxfY3N0YXRl LT5iYXNlLmNvbG9yX21nbXRfY2hhbmdlZCB8fAo+ID4gIAkgICAgIGludGVsX2NzdGF0ZS0+dXBk YXRlX3BpcGUpKSB7Cj4gPiAtCQlpbnRlbF9jb2xvcl9zZXRfY3NjKCZpbnRlbF9jc3RhdGUtPmJh c2UpOwo+ID4gLQkJaW50ZWxfY29sb3JfbG9hZF9sdXRzKCZpbnRlbF9jc3RhdGUtPmJhc2UpOwo+ ID4gKwkJaW50ZWxfY29sb3Jfc2V0X2NzYyhpbnRlbF9jc3RhdGUpOwo+ID4gKwkJaW50ZWxfY29s b3JfbG9hZF9sdXRzKGludGVsX2NzdGF0ZSk7Cj4gPiAgCX0KPiA+ICAKPiA+ICAJLyogUGVyZm9y bSB2YmxhbmsgZXZhc2lvbiBhcm91bmQgY29tbWl0IG9wZXJhdGlvbiAqLwo+ID4gQEAgLTE0MTIy LDcgKzE0MTIyLDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2luaXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSkKPiA+ICAKPiA+ICAJZHJtX2NydGNf aGVscGVyX2FkZCgmaW50ZWxfY3J0Yy0+YmFzZSwgJmludGVsX2hlbHBlcl9mdW5jcyk7Cj4gPiAg Cj4gPiAtCWludGVsX2NvbG9yX2luaXQoJmludGVsX2NydGMtPmJhc2UpOwo+ID4gKwlpbnRlbF9j b2xvcl9pbml0KGludGVsX2NydGMpOwo+ID4gIAo+ID4gIAlXQVJOX09OKGRybV9jcnRjX2luZGV4 KCZpbnRlbF9jcnRjLT5iYXNlKSAhPSBpbnRlbF9jcnRjLT5waXBlKTsKPiA+ICAKPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCj4gPiBpbmRleCBhODE3N2NjZjFkNGYuLmJhMWQ5Nzk5MWQ1YSAx MDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gQEAgLTIzMjcsMTAgKzIzMjcs MTAgQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jaGVja193aXRoX3N0YXRlKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y18KPiA+ICAJCQkJCXN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqaW50ZWxfc3RhdGUpOwo+ID4gIAo+ID4gIC8qIGludGVsX2NvbG9yLmMgKi8KPiA+ IC12b2lkIGludGVsX2NvbG9yX2luaXQoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKPiA+IC1pbnQg aW50ZWxfY29sb3JfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKnN0YXRlKTsKPiA+IC12b2lkIGludGVsX2NvbG9yX3NldF9jc2Moc3RydWN0IGRybV9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPiA+IC12b2lkIGludGVsX2NvbG9yX2xvYWRfbHV0cyhz dHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ID4gK3ZvaWQgaW50ZWxfY29sb3Jf aW5pdChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7Cj4gPiAraW50IGludGVsX2NvbG9yX2NoZWNr KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc3RhdGUp Owo+ID4gK3ZvaWQgaW50ZWxfY29sb3Jfc2V0X2NzYyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq c3RhdGUpOwo+ID4gK3ZvaWQgaW50ZWxfY29sb3JfbG9hZF9sdXRzKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpzdGF0ZSk7Cj4gPiAgCj4gPiAgLyogaW50ZWxfbHNwY29uLmMgKi8KPiA+ICBib29s IGxzcGNvbl9pbml0KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KTsK PiA+IC0tIAo+ID4gMi4xNC40Cj4gPiAKPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+IAo+IC0tIAo+IFZpbGxlIFN5cmrDpGzDpAo+ IEludGVsCgotLSAKTWF0dCBSb3BlcgpHcmFwaGljcyBTb2Z0d2FyZSBFbmdpbmVlcgpJb1RHIFBs YXRmb3JtIEVuYWJsaW5nICYgRGV2ZWxvcG1lbnQKSW50ZWwgQ29ycG9yYXRpb24KKDkxNikgMzU2 LTI3OTUKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==