From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 2/2] drm/i915: Use intel_ types more consistently for color management code Date: Mon, 10 Dec 2018 21:31:55 +0200 Message-ID: <20181210193155.GK9144@intel.com> References: <20181207005401.13988-1-matthew.d.roper@intel.com> <20181207005401.13988-3-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 21A4B6EB77 for ; Mon, 10 Dec 2018 19:31:59 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20181207005401.13988-3-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBEZWMgMDYsIDIwMTggYXQgMDQ6NTQ6MDFQTSAtMDgwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBUcnkgdG8gYmUgbW9yZSBjb25zaXN0ZW50IGFib3V0IGludGVsXyogdHlwZXMgcmF0aGVy IHRoYW4gZHJtXyogdHlwZXMKPiBmb3IgbG93ZXItbGV2ZWwgZHJpdmVyIGZ1bmN0aW9ucy4gIFdo aWxlIHdlJ3JlIGF0IGl0LCBsZXQncyBhbHNvIGJlIG1vcmUKPiBjb25zaXN0ZW50IHdpdGggc3Rh dGUgdmFyaWFibGUgbmFtaW5nIChoYWxmIG9mIHRoZSBwbGF0Zm9ybXMgdXNlIHRoZQo+IG5hbWUg J3N0YXRlJyB3aGVyZWFzIHRoZSBvdGhlciBoYWxmIHVzZWQgJ2NydGNfc3RhdGUnKS4KPiAKPiBT aWduZWQtb2ZmLWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgo+IC0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgIDQgKy0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYyAgIHwgMjA3ICsrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YyB8ICAyMCArKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAg OCArLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDExMiBpbnNlcnRpb25zKCspLCAxMjcgZGVsZXRpb25z KC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggNzQ2OWE3Nzg1MjUzLi40OGZi NWU5YmQwOGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMzIxLDggKzMyMSw4 IEBAIHN0cnVjdCBkcm1faTkxNV9kaXNwbGF5X2Z1bmNzIHsKPiAgCS8qIGRpc3BsYXkgY2xvY2sg aW5jcmVhc2UvZGVjcmVhc2UgKi8KPiAgCS8qIHBsbCBjbG9jayBpbmNyZWFzZS9kZWNyZWFzZSAq Lwo+ICAKPiAtCXZvaWQgKCpsb2FkX2NzY19tYXRyaXgpKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSk7Cj4gLQl2b2lkICgqbG9hZF9sdXRzKShzdHJ1Y3QgZHJtX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpOwo+ICsJdm9pZCAoKmxvYWRfY3NjX21hdHJpeCkoc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKnN0YXRlKTsKPiArCXZvaWQgKCpsb2FkX2x1dHMpKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpzdGF0ZSk7Cj4gIH07Cj4gIAo+ICAjZGVmaW5lIENTUl9WRVJTSU9OKG1ham9yLCBt aW5vcikJKChtYWpvcikgPDwgMTYgfCAobWlub3IpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29s b3IuYwo+IGluZGV4IDUxMjdkYTI4NmEyYi4uMzM1YzQ3MDJmY2ZiIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9jb2xvci5jCj4gQEAgLTc0LDEyICs3NCwxMiBAQAo+ICAjZGVmaW5lIElMS19D U0NfQ09FRkZfMV8wCQlcCj4gIAkoKDcgPDwgMTIpIHwgSUxLX0NTQ19DT0VGRl9GUChDVE1fQ09F RkZfMV8wLCA4KSkKPiAgCj4gLXN0YXRpYyBib29sIGNydGNfc3RhdGVfaXNfbGVnYWN5X2dhbW1h KHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCj4gK3N0YXRpYyBib29sIGNydGNfc3RhdGVf aXNfbGVnYWN5X2dhbW1hKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzdGF0ZSkKCkknZCBsa2lr ZSBzL3N0YXRlL2NydGNfc3RhdGUvLCBhdCBsZWFzdCBpbiB0aGUgY2FzZXMgd2hlcmUgaXQgZG9l c24ndAptYWtlIHRoZSBkaWZmIHRvbyBub2lzeS4KCk9yIG1heWJlIGV2ZW4gZm9sbG93IHVwIHdp dGggYSB3aG9sZXNhbGUgc2VkL2NvY2NpIGpvYiB0byBqdXN0IHJlbmFtZQpldmVyeXRoaW5nIGlu IHRoZSBmaWxlPwoKUGF0Y2ggaXMKUmV2aWV3ZWQtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUu c3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cgo+ICB7Cj4gLQlyZXR1cm4gIXN0YXRlLT5kZWdhbW1h X2x1dCAmJgo+IC0JCSFzdGF0ZS0+Y3RtICYmCj4gLQkJc3RhdGUtPmdhbW1hX2x1dCAmJgo+IC0J CWRybV9jb2xvcl9sdXRfc2l6ZShzdGF0ZS0+Z2FtbWFfbHV0KSA9PSBMRUdBQ1lfTFVUX0xFTkdU SDsKPiArCXJldHVybiAhc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQgJiYKPiArCQkhc3RhdGUtPmJh c2UuY3RtICYmCj4gKwkJc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ICYmCj4gKwkJZHJtX2NvbG9yX2x1 dF9zaXplKHN0YXRlLT5iYXNlLmdhbW1hX2x1dCkgPT0gTEVHQUNZX0xVVF9MRU5HVEg7Cj4gIH0K PiAgCj4gIC8qCj4gQEAgLTEwOCwxMCArMTA4LDEwIEBAIHN0YXRpYyB1NjQgKmN0bV9tdWx0X2J5 X2xpbWl0ZWQodTY0ICpyZXN1bHQsIGNvbnN0IHU2NCAqaW5wdXQpCj4gIAlyZXR1cm4gcmVzdWx0 Owo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpbGtfbG9hZF95Y2Jjcl9jb252ZXJzaW9uX21hdHJp eChzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKPiArc3RhdGljIHZvaWQgaWxrX2xvYWRf eWNiY3JfY29udmVyc2lvbl9tYXRyaXgoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIHsKPiAt CWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfY3J0Yy0+YmFzZS5kZXYpOwo+ICsJaW50IHBpcGUg PSBjcnRjLT5waXBlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAo+ICAJSTkxNV9XUklURShQSVBFX0NTQ19QUkVPRkZf SEkocGlwZSksIDApOwo+ICAJSTkxNV9XUklURShQSVBFX0NTQ19QUkVPRkZfTUUocGlwZSksIDAp Owo+IEBAIC0xMzIsMTQgKzEzMiwxMiBAQCBzdGF0aWMgdm9pZCBpbGtfbG9hZF95Y2Jjcl9jb252 ZXJzaW9uX21hdHJpeChzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKPiAgCUk5MTVfV1JJ VEUoUElQRV9DU0NfTU9ERShwaXBlKSwgMCk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGlsa19s b2FkX2NzY19tYXRyaXgoc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICtzdGF0 aWMgdm9pZCBpbGtfbG9hZF9jc2NfbWF0cml4KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzdGF0 ZSkKPiAgewo+IC0Jc3RydWN0IGRybV9jcnRjICpjcnRjID0gY3J0Y19zdGF0ZS0+Y3J0YzsKPiAt CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ZGV2KTsK PiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsK PiAtCWludCBpLCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiArCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjID0gdG9faW50ZWxfY3J0YyhzdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICsJaW50 IGksIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAJdWludDE2X3QgY29lZmZzWzldID0geyAwLCB9Owo+ IC0Jc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmludGVsX2NydGNfc3RhdGUgPSB0b19pbnRlbF9j cnRjX3N0YXRlKGNydGNfc3RhdGUpOwo+ICAJYm9vbCBsaW1pdGVkX2NvbG9yX3JhbmdlID0gZmFs c2U7Cj4gIAo+ICAJLyoKPiBAQCAtMTQ3LDE0ICsxNDUsMTQgQEAgc3RhdGljIHZvaWQgaWxrX2xv YWRfY3NjX21hdHJpeChzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAkgKiBk byB0aGUgcmFuZ2UgY29tcHJlc3Npb24gdXNpbmcgdGhlIGdhbW1hIExVVCBpbnN0ZWFkLgo+ICAJ ICovCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4IHx8IElTX0hBU1dFTEwoZGV2X3By aXYpKQo+IC0JCWxpbWl0ZWRfY29sb3JfcmFuZ2UgPSBpbnRlbF9jcnRjX3N0YXRlLT5saW1pdGVk X2NvbG9yX3JhbmdlOwo+ICsJCWxpbWl0ZWRfY29sb3JfcmFuZ2UgPSBzdGF0ZS0+bGltaXRlZF9j b2xvcl9yYW5nZTsKPiAgCj4gLQlpZiAoaW50ZWxfY3J0Y19zdGF0ZS0+b3V0cHV0X2Zvcm1hdCA9 PSBJTlRFTF9PVVRQVVRfRk9STUFUX1lDQkNSNDIwIHx8Cj4gLQkgICAgaW50ZWxfY3J0Y19zdGF0 ZS0+b3V0cHV0X2Zvcm1hdCA9PSBJTlRFTF9PVVRQVVRfRk9STUFUX1lDQkNSNDQ0KSB7Cj4gLQkJ aWxrX2xvYWRfeWNiY3JfY29udmVyc2lvbl9tYXRyaXgoaW50ZWxfY3J0Yyk7Cj4gKwlpZiAoc3Rh dGUtPm91dHB1dF9mb3JtYXQgPT0gSU5URUxfT1VUUFVUX0ZPUk1BVF9ZQ0JDUjQyMCB8fAo+ICsJ ICAgIHN0YXRlLT5vdXRwdXRfZm9ybWF0ID09IElOVEVMX09VVFBVVF9GT1JNQVRfWUNCQ1I0NDQp IHsKPiArCQlpbGtfbG9hZF95Y2Jjcl9jb252ZXJzaW9uX21hdHJpeChjcnRjKTsKPiAgCQlyZXR1 cm47Cj4gLQl9IGVsc2UgaWYgKGNydGNfc3RhdGUtPmN0bSkgewo+IC0JCXN0cnVjdCBkcm1fY29s b3JfY3RtICpjdG0gPSBjcnRjX3N0YXRlLT5jdG0tPmRhdGE7Cj4gKwl9IGVsc2UgaWYgKHN0YXRl LT5iYXNlLmN0bSkgewo+ICsJCXN0cnVjdCBkcm1fY29sb3JfY3RtICpjdG0gPSBzdGF0ZS0+YmFz ZS5jdG0tPmRhdGE7Cj4gIAkJY29uc3QgdTY0ICppbnB1dDsKPiAgCQl1NjQgdGVtcFs5XTsKPiAg Cj4gQEAgLTI1MywxNiArMjUxLDE1IEBAIHN0YXRpYyB2b2lkIGlsa19sb2FkX2NzY19tYXRyaXgo c3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAvKgo+ICAgKiBTZXQgdXAgdGhl IHBpcGUgQ1NDIHVuaXQgb24gQ2hlcnJ5Vmlldy4KPiAgICovCj4gLXN0YXRpYyB2b2lkIGNoZXJy eXZpZXdfbG9hZF9jc2NfbWF0cml4KHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCj4gK3N0 YXRpYyB2b2lkIGNoZXJyeXZpZXdfbG9hZF9jc2NfbWF0cml4KHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpzdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGRybV9jcnRjICpjcnRjID0gc3RhdGUtPmNydGM7 Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICsJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IHN0YXRlLT5iYXNlLmNydGMtPmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAtCWludCBwaXBlID0gdG9faW50ZWxf Y3J0YyhjcnRjKS0+cGlwZTsKPiArCWludCBwaXBlID0gdG9faW50ZWxfY3J0YyhzdGF0ZS0+YmFz ZS5jcnRjKS0+cGlwZTsKPiAgCXVpbnQzMl90IG1vZGU7Cj4gIAo+IC0JaWYgKHN0YXRlLT5jdG0p IHsKPiAtCQlzdHJ1Y3QgZHJtX2NvbG9yX2N0bSAqY3RtID0gc3RhdGUtPmN0bS0+ZGF0YTsKPiAr CWlmIChzdGF0ZS0+YmFzZS5jdG0pIHsKPiArCQlzdHJ1Y3QgZHJtX2NvbG9yX2N0bSAqY3RtID0g c3RhdGUtPmJhc2UuY3RtLT5kYXRhOwo+ICAJCXVpbnQxNl90IGNvZWZmc1s5XSA9IHsgMCwgfTsK PiAgCQlpbnQgaTsKPiAgCj4gQEAgLTI5MywzNiArMjkwLDM0IEBAIHN0YXRpYyB2b2lkIGNoZXJy eXZpZXdfbG9hZF9jc2NfbWF0cml4KHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCj4gIAkJ STkxNV9XUklURShDR01fUElQRV9DU0NfQ09FRkY4KHBpcGUpLCBjb2VmZnNbOF0pOwo+ICAJfQo+ ICAKPiAtCW1vZGUgPSAoc3RhdGUtPmN0bSA/IENHTV9QSVBFX01PREVfQ1NDIDogMCk7Cj4gKwlt b2RlID0gKHN0YXRlLT5iYXNlLmN0bSA/IENHTV9QSVBFX01PREVfQ1NDIDogMCk7Cj4gIAlpZiAo IWNydGNfc3RhdGVfaXNfbGVnYWN5X2dhbW1hKHN0YXRlKSkgewo+IC0JCW1vZGUgfD0gKHN0YXRl LT5kZWdhbW1hX2x1dCA/IENHTV9QSVBFX01PREVfREVHQU1NQSA6IDApIHwKPiAtCQkJKHN0YXRl LT5nYW1tYV9sdXQgPyBDR01fUElQRV9NT0RFX0dBTU1BIDogMCk7Cj4gKwkJbW9kZSB8PSAoc3Rh dGUtPmJhc2UuZGVnYW1tYV9sdXQgPyBDR01fUElQRV9NT0RFX0RFR0FNTUEgOiAwKSB8Cj4gKwkJ CShzdGF0ZS0+YmFzZS5nYW1tYV9sdXQgPyBDR01fUElQRV9NT0RFX0dBTU1BIDogMCk7Cj4gIAl9 Cj4gIAlJOTE1X1dSSVRFKENHTV9QSVBFX01PREUocGlwZSksIG1vZGUpOwo+ICB9Cj4gIAo+IC12 b2lkIGludGVsX2NvbG9yX3NldF9jc2Moc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KQo+ICt2b2lkIGludGVsX2NvbG9yX3NldF9jc2Moc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnN0 YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Y19zdGF0ZS0+Y3J0Yy0+ ZGV2Owo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5iYXNlLmNydGMtPmRldjsK PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAg Cj4gIAlpZiAoZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9jc2NfbWF0cml4KQo+IC0JCWRldl9wcml2 LT5kaXNwbGF5LmxvYWRfY3NjX21hdHJpeChjcnRjX3N0YXRlKTsKPiArCQlkZXZfcHJpdi0+ZGlz cGxheS5sb2FkX2NzY19tYXRyaXgoc3RhdGUpOwo+ICB9Cj4gIAo+ICAvKiBMb2FkcyB0aGUgbGVn YWN5IHBhbGV0dGUvZ2FtbWEgdW5pdCBmb3IgdGhlIENSVEMuICovCj4gLXN0YXRpYyB2b2lkIGk5 eHhfbG9hZF9sdXRzX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAtCQkJCSAgICBz dHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IsCj4gLQkJCQkgICAgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gK3N0YXRpYyB2b2lkIGk5eHhfbG9hZF9sdXRzX2ludGVy bmFsKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzdGF0ZSwKPiArCQkJCSAgICBzdHJ1Y3QgZHJt X3Byb3BlcnR5X2Jsb2IgKmJsb2IpCj4gIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBj cnRjLT5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGRldik7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMo Y3J0Yyk7Cj4gLQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gKwlzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2 KTsKPiArCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiAgCWludCBpOwo+ICAKPiAgCWlm IChIQVNfR01DSF9ESVNQTEFZKGRldl9wcml2KSkgewo+IC0JCWlmIChpbnRlbF9jcnRjX2hhc190 eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9EU0kpKQo+ICsJCWlmIChpbnRlbF9jcnRjX2hh c190eXBlKHN0YXRlLCBJTlRFTF9PVVRQVVRfRFNJKSkKPiAgCQkJYXNzZXJ0X2RzaV9wbGxfZW5h YmxlZChkZXZfcHJpdik7Cj4gIAkJZWxzZQo+ICAJCQlhc3NlcnRfcGxsX2VuYWJsZWQoZGV2X3By aXYsIHBpcGUpOwo+IEBAIC0zNTMsNTMgKzM0OCw0OCBAQCBzdGF0aWMgdm9pZCBpOXh4X2xvYWRf bHV0c19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAl9Cj4gIH0KPiAgCj4gLXN0 YXRpYyB2b2lkIGk5eHhfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkKPiArc3RhdGljIHZvaWQgaTl4eF9sb2FkX2x1dHMoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KnN0YXRlKQo+ICB7Cj4gLQlpOXh4X2xvYWRfbHV0c19pbnRlcm5hbChjcnRjX3N0YXRlLT5jcnRj LCBjcnRjX3N0YXRlLT5nYW1tYV9sdXQsCj4gLQkJCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNf c3RhdGUpKTsKPiArCWk5eHhfbG9hZF9sdXRzX2ludGVybmFsKHN0YXRlLCBzdGF0ZS0+YmFzZS5n YW1tYV9sdXQpOwo+ICB9Cj4gIAo+ICAvKiBMb2FkcyB0aGUgbGVnYWN5IHBhbGV0dGUvZ2FtbWEg dW5pdCBmb3IgdGhlIENSVEMgb24gSGFzd2VsbC4gKi8KPiAtc3RhdGljIHZvaWQgaGFzd2VsbF9s b2FkX2x1dHMoc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICtzdGF0aWMgdm9p ZCBoYXN3ZWxsX2xvYWRfbHV0cyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc3RhdGUpCj4gIHsK PiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNydGNfc3RhdGUtPmNydGM7Cj4gLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IC0Jc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmlu dGVsX2NydGNfc3RhdGUgPQo+IC0JCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSk7Cj4g KwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoc3RhdGUtPmJhc2UuY3J0 Yyk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMt PmJhc2UuZGV2KTsKPiAgCWJvb2wgcmVlbmFibGVfaXBzID0gZmFsc2U7Cj4gIAo+ICAJLyoKPiAg CSAqIFdvcmthcm91bmQgOiBEbyBub3QgcmVhZCBvciB3cml0ZSB0aGUgcGlwZSBwYWxldHRlL2dh bW1hIGRhdGEgd2hpbGUKPiAgCSAqIEdBTU1BX01PREUgaXMgY29uZmlndXJlZCBmb3Igc3BsaXQg Z2FtbWEgYW5kIElQU19DVEwgaGFzIElQUyBlbmFibGVkLgo+ICAJICovCj4gLQlpZiAoSVNfSEFT V0VMTChkZXZfcHJpdikgJiYgaW50ZWxfY3J0Y19zdGF0ZS0+aXBzX2VuYWJsZWQgJiYKPiAtCSAg ICAoaW50ZWxfY3J0Y19zdGF0ZS0+Z2FtbWFfbW9kZSA9PSBHQU1NQV9NT0RFX01PREVfU1BMSVQp KSB7Cj4gLQkJaHN3X2Rpc2FibGVfaXBzKGludGVsX2NydGNfc3RhdGUpOwo+ICsJaWYgKElTX0hB U1dFTEwoZGV2X3ByaXYpICYmIHN0YXRlLT5pcHNfZW5hYmxlZCAmJgo+ICsJICAgIChzdGF0ZS0+ Z2FtbWFfbW9kZSA9PSBHQU1NQV9NT0RFX01PREVfU1BMSVQpKSB7Cj4gKwkJaHN3X2Rpc2FibGVf aXBzKHN0YXRlKTsKPiAgCQlyZWVuYWJsZV9pcHMgPSB0cnVlOwo+ICAJfQo+ICAKPiAtCWludGVs X2NydGNfc3RhdGUtPmdhbW1hX21vZGUgPSBHQU1NQV9NT0RFX01PREVfOEJJVDsKPiAtCUk5MTVf V1JJVEUoR0FNTUFfTU9ERShpbnRlbF9jcnRjLT5waXBlKSwgR0FNTUFfTU9ERV9NT0RFXzhCSVQp Owo+ICsJc3RhdGUtPmdhbW1hX21vZGUgPSBHQU1NQV9NT0RFX01PREVfOEJJVDsKPiArCUk5MTVf V1JJVEUoR0FNTUFfTU9ERShjcnRjLT5waXBlKSwgR0FNTUFfTU9ERV9NT0RFXzhCSVQpOwo+ICAK PiAtCWk5eHhfbG9hZF9sdXRzKGNydGNfc3RhdGUpOwo+ICsJaTl4eF9sb2FkX2x1dHMoc3RhdGUp Owo+ICAKPiAgCWlmIChyZWVuYWJsZV9pcHMpCj4gLQkJaHN3X2VuYWJsZV9pcHMoaW50ZWxfY3J0 Y19zdGF0ZSk7Cj4gKwkJaHN3X2VuYWJsZV9pcHMoc3RhdGUpOwo+ICB9Cj4gIAo+IC1zdGF0aWMg dm9pZCBiZHdfbG9hZF9kZWdhbW1hX2x1dChzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+ ICtzdGF0aWMgdm9pZCBiZHdfbG9hZF9kZWdhbW1hX2x1dChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoc3RhdGUtPmNydGMtPmRldik7Cj4gLQllbnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2Ny dGMoc3RhdGUtPmNydGMpLT5waXBlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwo+ICsJZW51bSBwaXBlIHBpcGUg PSB0b19pbnRlbF9jcnRjKHN0YXRlLT5iYXNlLmNydGMpLT5waXBlOwo+ICAJdWludDMyX3QgaSwg bHV0X3NpemUgPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+Y29sb3IuZGVnYW1tYV9sdXRfc2l6ZTsK PiAgCj4gIAlJOTE1X1dSSVRFKFBSRUNfUEFMX0lOREVYKHBpcGUpLAo+ICAJCSAgIFBBTF9QUkVD X1NQTElUX01PREUgfCBQQUxfUFJFQ19BVVRPX0lOQ1JFTUVOVCk7Cj4gIAo+IC0JaWYgKHN0YXRl LT5kZWdhbW1hX2x1dCkgewo+IC0JCXN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQgPSBzdGF0ZS0+ ZGVnYW1tYV9sdXQtPmRhdGE7Cj4gKwlpZiAoc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQpIHsKPiAr CQlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0ID0gc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQtPmRh dGE7Cj4gIAo+ICAJCWZvciAoaSA9IDA7IGkgPCBsdXRfc2l6ZTsgaSsrKSB7Cj4gIAkJCXVpbnQz Ml90IHdvcmQgPQo+IEBAIC00MTksMTAgKzQwOSwxMCBAQCBzdGF0aWMgdm9pZCBiZHdfbG9hZF9k ZWdhbW1hX2x1dChzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+ICAJfQo+ICB9Cj4gIAo+ IC1zdGF0aWMgdm9pZCBiZHdfbG9hZF9nYW1tYV9sdXQoc3RydWN0IGRybV9jcnRjX3N0YXRlICpz dGF0ZSwgdTMyIG9mZnNldCkKPiArc3RhdGljIHZvaWQgYmR3X2xvYWRfZ2FtbWFfbHV0KHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpzdGF0ZSwgdTMyIG9mZnNldCkKPiAgewo+IC0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+Y3J0Yy0+ZGV2KTsKPiAt CWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxfY3J0YyhzdGF0ZS0+Y3J0YyktPnBpcGU7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmNy dGMtPmRldik7Cj4gKwllbnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMoc3RhdGUtPmJhc2Uu Y3J0YyktPnBpcGU7Cj4gIAl1aW50MzJfdCBpLCBsdXRfc2l6ZSA9IElOVEVMX0lORk8oZGV2X3By aXYpLT5jb2xvci5nYW1tYV9sdXRfc2l6ZTsKPiAgCj4gIAlXQVJOX09OKG9mZnNldCAmIH5QQUxf UFJFQ19JTkRFWF9WQUxVRV9NQVNLKTsKPiBAQCAtNDMyLDggKzQyMiw4IEBAIHN0YXRpYyB2b2lk IGJkd19sb2FkX2dhbW1hX2x1dChzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlLCB1MzIgb2Zm c2V0KQo+ICAJCSAgIFBBTF9QUkVDX0FVVE9fSU5DUkVNRU5UIHwKPiAgCQkgICBvZmZzZXQpOwo+ ICAKPiAtCWlmIChzdGF0ZS0+Z2FtbWFfbHV0KSB7Cj4gLQkJc3RydWN0IGRybV9jb2xvcl9sdXQg Kmx1dCA9IHN0YXRlLT5nYW1tYV9sdXQtPmRhdGE7Cj4gKwlpZiAoc3RhdGUtPmJhc2UuZ2FtbWFf bHV0KSB7Cj4gKwkJc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dCA9IHN0YXRlLT5iYXNlLmdhbW1h X2x1dC0+ZGF0YTsKPiAgCj4gIAkJZm9yIChpID0gMDsgaSA8IGx1dF9zaXplOyBpKyspIHsKPiAg CQkJdWludDMyX3Qgd29yZCA9Cj4gQEAgLTQ2NywxMSArNDU3LDEwIEBAIHN0YXRpYyB2b2lkIGJk d19sb2FkX2dhbW1hX2x1dChzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlLCB1MzIgb2Zmc2V0 KQo+ICB9Cj4gIAo+ICAvKiBMb2FkcyB0aGUgcGFsZXR0ZS9nYW1tYSB1bml0IGZvciB0aGUgQ1JU QyBvbiBCcm9hZHdlbGwrLiAqLwo+IC1zdGF0aWMgdm9pZCBicm9hZHdlbGxfbG9hZF9sdXRzKHN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCj4gK3N0YXRpYyB2b2lkIGJyb2Fkd2VsbF9sb2Fk X2x1dHMoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5jcnRjLT5kZXYpOwo+IC0J c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0 ZShzdGF0ZSk7Cj4gLQllbnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMoc3RhdGUtPmNydGMp LT5waXBlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShz dGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwo+ICsJZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9jcnRj KHN0YXRlLT5iYXNlLmNydGMpLT5waXBlOwo+ICAKPiAgCWlmIChjcnRjX3N0YXRlX2lzX2xlZ2Fj eV9nYW1tYShzdGF0ZSkpIHsKPiAgCQloYXN3ZWxsX2xvYWRfbHV0cyhzdGF0ZSk7Cj4gQEAgLTQ3 OSwxMCArNDY4LDkgQEAgc3RhdGljIHZvaWQgYnJvYWR3ZWxsX2xvYWRfbHV0cyhzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKnN0YXRlKQo+ICAJfQo+ICAKPiAgCWJkd19sb2FkX2RlZ2FtbWFfbHV0KHN0 YXRlKTsKPiAtCWJkd19sb2FkX2dhbW1hX2x1dChzdGF0ZSwKPiAtCQkJICAgSU5URUxfSU5GTyhk ZXZfcHJpdiktPmNvbG9yLmRlZ2FtbWFfbHV0X3NpemUpOwo+ICsJYmR3X2xvYWRfZ2FtbWFfbHV0 KHN0YXRlLCBJTlRFTF9JTkZPKGRldl9wcml2KS0+Y29sb3IuZGVnYW1tYV9sdXRfc2l6ZSk7Cj4g IAo+IC0JaW50ZWxfc3RhdGUtPmdhbW1hX21vZGUgPSBHQU1NQV9NT0RFX01PREVfU1BMSVQ7Cj4g KwlzdGF0ZS0+Z2FtbWFfbW9kZSA9IEdBTU1BX01PREVfTU9ERV9TUExJVDsKPiAgCUk5MTVfV1JJ VEUoR0FNTUFfTU9ERShwaXBlKSwgR0FNTUFfTU9ERV9NT0RFX1NQTElUKTsKPiAgCVBPU1RJTkdf UkVBRChHQU1NQV9NT0RFKHBpcGUpKTsKPiAgCj4gQEAgLTQ5MywxMCArNDgxLDEwIEBAIHN0YXRp YyB2b2lkIGJyb2Fkd2VsbF9sb2FkX2x1dHMoc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkK PiAgCUk5MTVfV1JJVEUoUFJFQ19QQUxfSU5ERVgocGlwZSksIDApOwo+ICB9Cj4gIAo+IC1zdGF0 aWMgdm9pZCBnbGtfbG9hZF9kZWdhbW1hX2x1dChzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRl KQo+ICtzdGF0aWMgdm9pZCBnbGtfbG9hZF9kZWdhbW1hX2x1dChzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoc3RhdGUtPmNydGMtPmRldik7Cj4gLQllbnVtIHBpcGUgcGlwZSA9IHRvX2ludGVs X2NydGMoc3RhdGUtPmNydGMpLT5waXBlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwo+ICsJZW51bSBwaXBlIHBp cGUgPSB0b19pbnRlbF9jcnRjKHN0YXRlLT5iYXNlLmNydGMpLT5waXBlOwo+ICAJY29uc3QgdWlu dDMyX3QgbHV0X3NpemUgPSAzMzsKPiAgCXVpbnQzMl90IGk7Cj4gIAo+IEBAIC01MjMsMTMgKzUx MSwxMSBAQCBzdGF0aWMgdm9pZCBnbGtfbG9hZF9kZWdhbW1hX2x1dChzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKnN0YXRlKQo+ICAJCUk5MTVfV1JJVEUoUFJFX0NTQ19HQU1DX0RBVEEocGlwZSksICgx IDw8IDE2KSk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGdsa19sb2FkX2x1dHMoc3RydWN0IGRy bV9jcnRjX3N0YXRlICpzdGF0ZSkKPiArc3RhdGljIHZvaWQgZ2xrX2xvYWRfbHV0cyhzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9 IHN0YXRlLT5jcnRjOwo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAr CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+YmFzZS5jcnRjLT5kZXY7Cj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gLQlzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKHN0YXRl KTsKPiAtCWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZTsKPiArCWVu dW0gcGlwZSBwaXBlID0gdG9faW50ZWxfY3J0YyhzdGF0ZS0+YmFzZS5jcnRjKS0+cGlwZTsKPiAg Cj4gIAlnbGtfbG9hZF9kZWdhbW1hX2x1dChzdGF0ZSk7Cj4gIAo+IEBAIC01NDAsMTUgKzUyNiwx NSBAQCBzdGF0aWMgdm9pZCBnbGtfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3Rh dGUpCj4gIAo+ICAJYmR3X2xvYWRfZ2FtbWFfbHV0KHN0YXRlLCAwKTsKPiAgCj4gLQlpbnRlbF9z dGF0ZS0+Z2FtbWFfbW9kZSA9IEdBTU1BX01PREVfTU9ERV8xMEJJVDsKPiArCXN0YXRlLT5nYW1t YV9tb2RlID0gR0FNTUFfTU9ERV9NT0RFXzEwQklUOwo+ICAJSTkxNV9XUklURShHQU1NQV9NT0RF KHBpcGUpLCBHQU1NQV9NT0RFX01PREVfMTBCSVQpOwo+ICAJUE9TVElOR19SRUFEKEdBTU1BX01P REUocGlwZSkpOwo+ICB9Cj4gIAo+ICAvKiBMb2FkcyB0aGUgcGFsZXR0ZS9nYW1tYSB1bml0IGZv ciB0aGUgQ1JUQyBvbiBDaGVycnlWaWV3LiAqLwo+IC1zdGF0aWMgdm9pZCBjaGVycnl2aWV3X2xv YWRfbHV0cyhzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+ICtzdGF0aWMgdm9pZCBjaGVy cnl2aWV3X2xvYWRfbHV0cyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc3RhdGUpCj4gIHsKPiAt CXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHN0YXRlLT5jcnRjOwo+ICsJc3RydWN0IGRybV9jcnRj ICpjcnRjID0gc3RhdGUtPmJhc2UuY3J0YzsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ZGV2KTsKPiAgCWVudW0gcGlwZSBwaXBlID0gdG9faW50 ZWxfY3J0YyhjcnRjKS0+cGlwZTsKPiAgCXN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQ7Cj4gQEAg LTU1OCwxNCArNTQ0LDEzIEBAIHN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfbG9hZF9sdXRzKHN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCj4gIAlpZiAoY3J0Y19zdGF0ZV9pc19sZWdhY3lfZ2Ft bWEoc3RhdGUpKSB7Cj4gIAkJLyogVHVybiBvZmYgZGVnYW1tYS9nYW1tYSBvbiBDR00gYmxvY2su ICovCj4gIAkJSTkxNV9XUklURShDR01fUElQRV9NT0RFKHBpcGUpLAo+IC0JCQkgICAoc3RhdGUt PmN0bSA/IENHTV9QSVBFX01PREVfQ1NDIDogMCkpOwo+IC0JCWk5eHhfbG9hZF9sdXRzX2ludGVy bmFsKGNydGMsIHN0YXRlLT5nYW1tYV9sdXQsCj4gLQkJCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShz dGF0ZSkpOwo+ICsJCQkgICAoc3RhdGUtPmJhc2UuY3RtID8gQ0dNX1BJUEVfTU9ERV9DU0MgOiAw KSk7Cj4gKwkJaTl4eF9sb2FkX2x1dHNfaW50ZXJuYWwoc3RhdGUsIHN0YXRlLT5iYXNlLmdhbW1h X2x1dCk7Cj4gIAkJcmV0dXJuOwo+ICAJfQo+ICAKPiAtCWlmIChzdGF0ZS0+ZGVnYW1tYV9sdXQp IHsKPiAtCQlsdXQgPSBzdGF0ZS0+ZGVnYW1tYV9sdXQtPmRhdGE7Cj4gKwlpZiAoc3RhdGUtPmJh c2UuZGVnYW1tYV9sdXQpIHsKPiArCQlsdXQgPSBzdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dC0+ZGF0 YTsKPiAgCQlsdXRfc2l6ZSA9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5jb2xvci5kZWdhbW1hX2x1 dF9zaXplOwo+ICAJCWZvciAoaSA9IDA7IGkgPCBsdXRfc2l6ZTsgaSsrKSB7Cj4gIAkJCS8qIFdy aXRlIExVVCBpbiBVMC4xNCBmb3JtYXQuICovCj4gQEAgLTU3OSw4ICs1NjQsOCBAQCBzdGF0aWMg dm9pZCBjaGVycnl2aWV3X2xvYWRfbHV0cyhzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+ ICAJCX0KPiAgCX0KPiAgCj4gLQlpZiAoc3RhdGUtPmdhbW1hX2x1dCkgewo+IC0JCWx1dCA9IHN0 YXRlLT5nYW1tYV9sdXQtPmRhdGE7Cj4gKwlpZiAoc3RhdGUtPmJhc2UuZ2FtbWFfbHV0KSB7Cj4g KwkJbHV0ID0gc3RhdGUtPmJhc2UuZ2FtbWFfbHV0LT5kYXRhOwo+ICAJCWx1dF9zaXplID0gSU5U RUxfSU5GTyhkZXZfcHJpdiktPmNvbG9yLmdhbW1hX2x1dF9zaXplOwo+ICAJCWZvciAoaSA9IDA7 IGkgPCBsdXRfc2l6ZTsgaSsrKSB7Cj4gIAkJCS8qIFdyaXRlIExVVCBpbiBVMC4xMCBmb3JtYXQu ICovCj4gQEAgLTU5NSwyOSArNTgwLDI5IEBAIHN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfbG9hZF9s dXRzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCj4gIAl9Cj4gIAo+ICAJSTkxNV9XUklU RShDR01fUElQRV9NT0RFKHBpcGUpLAo+IC0JCSAgIChzdGF0ZS0+Y3RtID8gQ0dNX1BJUEVfTU9E RV9DU0MgOiAwKSB8Cj4gLQkJICAgKHN0YXRlLT5kZWdhbW1hX2x1dCA/IENHTV9QSVBFX01PREVf REVHQU1NQSA6IDApIHwKPiAtCQkgICAoc3RhdGUtPmdhbW1hX2x1dCA/IENHTV9QSVBFX01PREVf R0FNTUEgOiAwKSk7Cj4gKwkJICAgKHN0YXRlLT5iYXNlLmN0bSA/IENHTV9QSVBFX01PREVfQ1ND IDogMCkgfAo+ICsJCSAgIChzdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dCA/IENHTV9QSVBFX01PREVf REVHQU1NQSA6IDApIHwKPiArCQkgICAoc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ID8gQ0dNX1BJUEVf TU9ERV9HQU1NQSA6IDApKTsKPiAgCj4gIAkvKgo+ICAJICogQWxzbyBwcm9ncmFtIGEgbGluZWFy IExVVCBpbiB0aGUgbGVnYWN5IGJsb2NrIChiZWhpbmQgdGhlCj4gIAkgKiBDR00gYmxvY2spLgo+ ICAJICovCj4gLQlpOXh4X2xvYWRfbHV0c19pbnRlcm5hbChjcnRjLCBOVUxMLCB0b19pbnRlbF9j cnRjX3N0YXRlKHN0YXRlKSk7Cj4gKwlpOXh4X2xvYWRfbHV0c19pbnRlcm5hbChzdGF0ZSwgTlVM TCk7Cj4gIH0KPiAgCj4gLXZvaWQgaW50ZWxfY29sb3JfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiArdm9pZCBpbnRlbF9jb2xvcl9sb2FkX2x1dHMoc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY3J0Y19zdGF0ZS0+Y3J0Yy0+ZGV2Owo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0 YXRlLT5iYXNlLmNydGMtPmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZGV2KTsKPiAgCj4gLQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMoY3J0 Y19zdGF0ZSk7Cj4gKwlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMoc3RhdGUpOwo+ICB9Cj4g IAo+IC1pbnQgaW50ZWxfY29sb3JfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRjLAo+IC0JCSAg ICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAraW50IGludGVsX2NvbG9y X2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICsJCSAgICAgIHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpzdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShjcnRjLT5kZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAlzaXplX3QgZ2FtbWFfbGVuZ3Ro LCBkZWdhbW1hX2xlbmd0aDsKPiAgCj4gIAlkZWdhbW1hX2xlbmd0aCA9IElOVEVMX0lORk8oZGV2 X3ByaXYpLT5jb2xvci5kZWdhbW1hX2x1dF9zaXplOwo+IEBAIC02MjcsMjcgKzYxMiwyNyBAQCBp bnQgaW50ZWxfY29sb3JfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJICogV2UgYWxs b3cgYm90aCBkZWdhbW1hICYgZ2FtbWEgbHV0cyBhdCB0aGUgcmlnaHQgc2l6ZSBvcgo+ICAJICog TlVMTC4KPiAgCSAqLwo+IC0JaWYgKCghY3J0Y19zdGF0ZS0+ZGVnYW1tYV9sdXQgfHwKPiAtCSAg ICAgZHJtX2NvbG9yX2x1dF9zaXplKGNydGNfc3RhdGUtPmRlZ2FtbWFfbHV0KSA9PSBkZWdhbW1h X2xlbmd0aCkgJiYKPiAtCSAgICAoIWNydGNfc3RhdGUtPmdhbW1hX2x1dCB8fAo+IC0JICAgICBk cm1fY29sb3JfbHV0X3NpemUoY3J0Y19zdGF0ZS0+Z2FtbWFfbHV0KSA9PSBnYW1tYV9sZW5ndGgp KQo+ICsJaWYgKCghc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQgfHwKPiArCSAgICAgZHJtX2NvbG9y X2x1dF9zaXplKHN0YXRlLT5iYXNlLmRlZ2FtbWFfbHV0KSA9PSBkZWdhbW1hX2xlbmd0aCkgJiYK PiArCSAgICAoIXN0YXRlLT5iYXNlLmdhbW1hX2x1dCB8fAo+ICsJICAgICBkcm1fY29sb3JfbHV0 X3NpemUoc3RhdGUtPmJhc2UuZ2FtbWFfbHV0KSA9PSBnYW1tYV9sZW5ndGgpKQo+ICAJCXJldHVy biAwOwo+ICAKPiAgCS8qCj4gIAkgKiBXZSBhbHNvIGFsbG93IG5vIGRlZ2FtbWEgbHV0L2N0bSBh bmQgYSBnYW1tYSBsdXQgYXQgdGhlIGxlZ2FjeQo+ICAJICogc2l6ZSAoMjU2IGVudHJpZXMpLgo+ ICAJICovCj4gLQlpZiAoY3J0Y19zdGF0ZV9pc19sZWdhY3lfZ2FtbWEoY3J0Y19zdGF0ZSkpCj4g KwlpZiAoY3J0Y19zdGF0ZV9pc19sZWdhY3lfZ2FtbWEoc3RhdGUpKQo+ICAJCXJldHVybiAwOwo+ ICAKPiAgCXJldHVybiAtRUlOVkFMOwo+ICB9Cj4gIAo+IC12b2lkIGludGVsX2NvbG9yX2luaXQo c3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICt2b2lkIGludGVsX2NvbG9yX2luaXQoc3RydWN0IGlu dGVsX2NydGMgKmNydGMpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoY3J0Yy0+ZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAKPiAtCWRybV9tb2RlX2NydGNfc2V0 X2dhbW1hX3NpemUoY3J0YywgMjU2KTsKPiArCWRybV9tb2RlX2NydGNfc2V0X2dhbW1hX3NpemUo JmNydGMtPmJhc2UsIDI1Nik7Cj4gIAo+ICAJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7 Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9jc2NfbWF0cml4ID0gY2hlcnJ5dmlld19sb2Fk X2NzY19tYXRyaXg7Cj4gQEAgLTY2OSw3ICs2NTQsNyBAQCB2b2lkIGludGVsX2NvbG9yX2luaXQo c3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJLyogRW5hYmxlIGNvbG9yIG1hbmFnZW1lbnQgc3Vw cG9ydCB3aGVuIHdlIGhhdmUgZGVnYW1tYSAmIGdhbW1hIExVVHMuICovCj4gIAlpZiAoSU5URUxf SU5GTyhkZXZfcHJpdiktPmNvbG9yLmRlZ2FtbWFfbHV0X3NpemUgIT0gMCAmJgo+ICAJICAgIElO VEVMX0lORk8oZGV2X3ByaXYpLT5jb2xvci5nYW1tYV9sdXRfc2l6ZSAhPSAwKQo+IC0JCWRybV9j cnRjX2VuYWJsZV9jb2xvcl9tZ210KGNydGMsCj4gKwkJZHJtX2NydGNfZW5hYmxlX2NvbG9yX21n bXQoJmNydGMtPmJhc2UsCj4gIAkJCQkJICAgSU5URUxfSU5GTyhkZXZfcHJpdiktPmNvbG9yLmRl Z2FtbWFfbHV0X3NpemUsCj4gIAkJCQkJICAgdHJ1ZSwKPiAgCQkJCQkgICBJTlRFTF9JTkZPKGRl dl9wcml2KS0+Y29sb3IuZ2FtbWFfbHV0X3NpemUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKPiBpbmRleCBkYjYwMDRhODgzYzcuLjViOTY1Nzk3ZGY0ZSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtNTY0MSw3ICs1NjQxLDcgQEAgc3RhdGlj IHZvaWQgaXJvbmxha2VfY3J0Y19lbmFibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVf Y29uZmlnLAo+ICAJICogT24gSUxLKyBMVVQgbXVzdCBiZSBsb2FkZWQgYmVmb3JlIHRoZSBwaXBl IGlzIHJ1bm5pbmcgYnV0IHdpdGgKPiAgCSAqIGNsb2NrcyBlbmFibGVkCj4gIAkgKi8KPiAtCWlu dGVsX2NvbG9yX2xvYWRfbHV0cygmcGlwZV9jb25maWctPmJhc2UpOwo+ICsJaW50ZWxfY29sb3Jf bG9hZF9sdXRzKHBpcGVfY29uZmlnKTsKPiAgCj4gIAlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuaW5p dGlhbF93YXRlcm1hcmtzICE9IE5VTEwpCj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93 YXRlcm1hcmtzKG9sZF9pbnRlbF9zdGF0ZSwgcGlwZV9jb25maWcpOwo+IEBAIC01NzUyLDcgKzU3 NTIsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpwaXBlX2NvbmZpZywKPiAgCj4gIAloYXN3ZWxsX3NldF9waXBlbWlzYyhwaXBlX2Nv bmZpZyk7Cj4gIAo+IC0JaW50ZWxfY29sb3Jfc2V0X2NzYygmcGlwZV9jb25maWctPmJhc2UpOwo+ ICsJaW50ZWxfY29sb3Jfc2V0X2NzYyhwaXBlX2NvbmZpZyk7Cj4gIAo+ICAJaW50ZWxfY3J0Yy0+ YWN0aXZlID0gdHJ1ZTsKPiAgCj4gQEAgLTU3NzEsNyArNTc3MSw3IEBAIHN0YXRpYyB2b2lkIGhh c3dlbGxfY3J0Y19lbmFibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ ICAJICogT24gSUxLKyBMVVQgbXVzdCBiZSBsb2FkZWQgYmVmb3JlIHRoZSBwaXBlIGlzIHJ1bm5p bmcgYnV0IHdpdGgKPiAgCSAqIGNsb2NrcyBlbmFibGVkCj4gIAkgKi8KPiAtCWludGVsX2NvbG9y X2xvYWRfbHV0cygmcGlwZV9jb25maWctPmJhc2UpOwo+ICsJaW50ZWxfY29sb3JfbG9hZF9sdXRz KHBpcGVfY29uZmlnKTsKPiAgCj4gIAkvKgo+ICAJICogRGlzcGxheSBXQSAjMTE1MzogZW5hYmxl IGhhcmR3YXJlIHRvIGJ5cGFzcyB0aGUgYWxwaGEgbWF0aAo+IEBAIC02MTE3LDcgKzYxMTcsNyBA QCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2NydGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpwaXBlX2NvbmZpZywKPiAgCj4gIAlpOXh4X3NldF9waXBlY29uZihwaXBlX2NvbmZpZyk7 Cj4gIAo+IC0JaW50ZWxfY29sb3Jfc2V0X2NzYygmcGlwZV9jb25maWctPmJhc2UpOwo+ICsJaW50 ZWxfY29sb3Jfc2V0X2NzYyhwaXBlX2NvbmZpZyk7Cj4gIAo+ICAJaW50ZWxfY3J0Yy0+YWN0aXZl ID0gdHJ1ZTsKPiAgCj4gQEAgLTYxMzcsNyArNjEzNyw3IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZp ZXdfY3J0Y19lbmFibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ICAK PiAgCWk5eHhfcGZpdF9lbmFibGUocGlwZV9jb25maWcpOwo+ICAKPiAtCWludGVsX2NvbG9yX2xv YWRfbHV0cygmcGlwZV9jb25maWctPmJhc2UpOwo+ICsJaW50ZWxfY29sb3JfbG9hZF9sdXRzKHBp cGVfY29uZmlnKTsKPiAgCj4gIAlkZXZfcHJpdi0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3Mo b2xkX2ludGVsX3N0YXRlLAo+ICAJCQkJCSAgICAgcGlwZV9jb25maWcpOwo+IEBAIC02MTkzLDcg KzYxOTMsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2NydGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpwaXBlX2NvbmZpZywKPiAgCj4gIAlpOXh4X3BmaXRfZW5hYmxlKHBpcGVfY29uZmln KTsKPiAgCj4gLQlpbnRlbF9jb2xvcl9sb2FkX2x1dHMoJnBpcGVfY29uZmlnLT5iYXNlKTsKPiAr CWludGVsX2NvbG9yX2xvYWRfbHV0cyhwaXBlX2NvbmZpZyk7Cj4gIAo+ICAJaWYgKGRldl9wcml2 LT5kaXNwbGF5LmluaXRpYWxfd2F0ZXJtYXJrcyAhPSBOVUxMKQo+ICAJCWRldl9wcml2LT5kaXNw bGF5LmluaXRpYWxfd2F0ZXJtYXJrcyhvbGRfaW50ZWxfc3RhdGUsCj4gQEAgLTEwOTcyLDcgKzEw OTcyLDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCj4gIAl9Cj4gIAo+ICAJaWYgKGNydGNfc3RhdGUtPmNvbG9yX21nbXRfY2hhbmdl ZCkgewo+IC0JCXJldCA9IGludGVsX2NvbG9yX2NoZWNrKGNydGMsIGNydGNfc3RhdGUpOwo+ICsJ CXJldCA9IGludGVsX2NvbG9yX2NoZWNrKGludGVsX2NydGMsIHBpcGVfY29uZmlnKTsKPiAgCQlp ZiAocmV0KQo+ICAJCQlyZXR1cm4gcmV0Owo+ICAKPiBAQCAtMTM1NDgsOCArMTM1NDgsOCBAQCBz dGF0aWMgdm9pZCBpbnRlbF9iZWdpbl9jcnRjX2NvbW1pdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMs Cj4gIAlpZiAoIW1vZGVzZXQgJiYKPiAgCSAgICAoaW50ZWxfY3N0YXRlLT5iYXNlLmNvbG9yX21n bXRfY2hhbmdlZCB8fAo+ICAJICAgICBpbnRlbF9jc3RhdGUtPnVwZGF0ZV9waXBlKSkgewo+IC0J CWludGVsX2NvbG9yX3NldF9jc2MoJmludGVsX2NzdGF0ZS0+YmFzZSk7Cj4gLQkJaW50ZWxfY29s b3JfbG9hZF9sdXRzKCZpbnRlbF9jc3RhdGUtPmJhc2UpOwo+ICsJCWludGVsX2NvbG9yX3NldF9j c2MoaW50ZWxfY3N0YXRlKTsKPiArCQlpbnRlbF9jb2xvcl9sb2FkX2x1dHMoaW50ZWxfY3N0YXRl KTsKPiAgCX0KPiAgCj4gIAkvKiBQZXJmb3JtIHZibGFuayBldmFzaW9uIGFyb3VuZCBjb21taXQg b3BlcmF0aW9uICovCj4gQEAgLTE0MTIyLDcgKzE0MTIyLDcgQEAgc3RhdGljIGludCBpbnRlbF9j cnRjX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlw ZSkKPiAgCj4gIAlkcm1fY3J0Y19oZWxwZXJfYWRkKCZpbnRlbF9jcnRjLT5iYXNlLCAmaW50ZWxf aGVscGVyX2Z1bmNzKTsKPiAgCj4gLQlpbnRlbF9jb2xvcl9pbml0KCZpbnRlbF9jcnRjLT5iYXNl KTsKPiArCWludGVsX2NvbG9yX2luaXQoaW50ZWxfY3J0Yyk7Cj4gIAo+ICAJV0FSTl9PTihkcm1f Y3J0Y19pbmRleCgmaW50ZWxfY3J0Yy0+YmFzZSkgIT0gaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gIAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggYTgxNzdjY2YxZDRmLi5iYTFkOTc5OTFk NWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0yMzI3LDEwICsyMzI3LDEw IEBAIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2tfd2l0aF9zdGF0ZShjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfCj4gIAkJCQkJc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICppbnRlbF9zdGF0ZSk7Cj4gIAo+ICAvKiBpbnRlbF9jb2xvci5jICovCj4gLXZvaWQgaW50 ZWxfY29sb3JfaW5pdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+IC1pbnQgaW50ZWxfY29sb3Jf Y2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRl KTsKPiAtdm9pZCBpbnRlbF9jb2xvcl9zZXRfY3NjKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSk7Cj4gLXZvaWQgaW50ZWxfY29sb3JfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gK3ZvaWQgaW50ZWxfY29sb3JfaW5pdChzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0Yyk7Cj4gK2ludCBpbnRlbF9jb2xvcl9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0Yywgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnN0YXRlKTsKPiArdm9pZCBpbnRlbF9jb2xv cl9zZXRfY3NjKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzdGF0ZSk7Cj4gK3ZvaWQgaW50ZWxf Y29sb3JfbG9hZF9sdXRzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzdGF0ZSk7Cj4gIAo+ICAv KiBpbnRlbF9sc3Bjb24uYyAqLwo+ICBib29sIGxzcGNvbl9pbml0KHN0cnVjdCBpbnRlbF9kaWdp dGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KTsKPiAtLSAKPiAyLjE0LjQKPiAKPiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5n IGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJq w6Rsw6QKSW50ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==