From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm/i915: adding state checker for gamma lut values Date: Thu, 28 Mar 2019 13:47:50 +0200 Message-ID: <87d0mb2pax.fsf@intel.com> References: <1553754828-14696-1-git-send-email-swati2.sharma@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 A5BB66E3B1 for ; Thu, 28 Mar 2019 11:45:11 +0000 (UTC) In-Reply-To: <1553754828-14696-1-git-send-email-swati2.sharma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Swati Sharma , intel-gfx@lists.freedesktop.org Cc: daniel.vetter@ffwll.ch, ankit.k.nautiyal@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyOCBNYXIgMjAxOSwgU3dhdGkgU2hhcm1hIDxzd2F0aTIuc2hhcm1hQGludGVsLmNv bT4gd3JvdGU6Cj4gQWRkZWQgc3RhdGUgY2hlY2tlciB0byB2YWxpZGF0ZSBnYW1tYV9sdXQgdmFs dWVzLiBUaGlzCj4gcmVhZHMgaGFyZHdhcmUgc3RhdGUsIGFuZCBjb21wYXJlcyB0aGUgb3JpZ2lu YWxseSByZXF1ZXN0ZWQKPiBzdGF0ZSB0byB0aGUgc3RhdGUgcmVhZCBmcm9tIGhhcmR3YXJlLgo+ Cj4gdjE6IC1JbXBsZW1lbnRhdGlvbiBkb25lIGZvciBsZWdhY3kgcGxhdGZvcm1zIChyZW1vdmVk IGFsbCB0aGUgcGxhY2Vob2xkZXJzKSAoSmFuaSkKPiAgICAgLUFkZGVkIGludmVyc2UgZnVuY3Rp b24gb2YgZHJtX2NvbG9yX2x1dF9leHRyYWN0IHRvIGNvbnZlcnQgaGFyZHdhcmUKPiAgICAgIHJl YWQgdmFsdWVzIGJhY2sgdG8gdXNlciB2YWx1ZXMgKGNvZGUgd3JpdHRlbiBieSBKYW5pKQo+ICAg ICAtUmVuYW1lZCBnZXRfY29uZmlnKCkgdG8gY29sb3JfY29uZmlnKCkgKEphbmkpCj4gICAgIC1Q bGFjZWQgYWxsIHBsYXRmb3JtIHNwZWNpZmljIHNoaWZ0cyBhbmQgbWFza3MgaW4gaTkxNV9yZWcu aCAoSmFuaSkKPiAgICAgLVJlbmFtZWQgaTl4eF9nZXRfY29uZmlnIHRvIGk5eHhfY29sb3JfY29u ZmlnIGFuZCBhbGwgcmVsYXRlZAo+ICAgICAgZnVuY3Rpb25zIChKYW5pKQo+ICAgICAtUmVtb3Zl ZCBkZWJ1ZyBsb2dzIGZyb20gY29tcGFyZSBmdW5jdGlvbiAoSmFuaSkKPiAgICAgLVJlbmFtZWQg aW50ZWxfY29tcGFyZV9ibG9iIHRvIGludGVsX2NvbXBhcmVfbHV0IGFuZCBhZGRlZCBwbGF0Zm9y bSBzcGVjaWZpYwo+ICAgICAgYml0IHByZWNpc2lvbiBvZiB0aGUgcmVhZG91dCBpbnRvIHRoZSBm dW5jdGlvbiAoSmFuaSkKPiAgICAgLVJlbmFtZWQgbWFjcm8gUElQRV9DT05GX0NIRUNLX0JMT0Ig dG8gUElQRV9DT05GX0NIRUNLX0NPTE9SX0xVVCAoSmFuaSkKPiAgICAgLUFkZGVkIGNoZWNrIGlm IGJsb2JzIGNhbiBiZSBOVUxMIChKYW5pKQo+ICAgICAtQWRkZWQgZnVuY3Rpb24gaW4gaW50ZWxf Y29sb3IuYyB0aGF0IHJldHVybnMgdGhlIGJpdCBwcmVjaXNpb24gKEphbmkpLAo+ICAgICAgZGlk bid0IGFkZCBpbiBkZXZpY2UgaW5mbyBzaW5jZSBpdHMgZ29ubmEgZGllIHNvb24gKFZpbGxlKQo+ Cj4gVE9ETzoKPiAtQWRkIGEgc2VwYXJhdGUgZnVuY3Rpb24gdG8gbG9nIGVycm9ycyBhdCB0aGUg aGlnaGVyIGxldmVsCgpTaG91bGQgYmUgYSBzZXBhcmF0ZSBmb2xsb3ctdXAgcGF0Y2guCgo+IC1I YXZlbid0IG1vdmVkIGludGVsX2NvbXBhcmVfbHV0KCkgZnJvbSBpbnRlbF9kaXNwbGF5LmMgdG8g aW50ZWxfY29sb3IuYwo+ICBTaW5jZSBhbGwgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBw bGFjZWQgaW4gaW50ZWxfZGlzcGxheSwgaXNuJ3QKPiAgaXQgdGhlIHJpZ2h0IHBsYWNlIChvcikg d2Ugd2FudCB0byBtb3ZlIHRvIGNvbnNvbGlkYXRlIGNvbG9yIHJlbGF0ZWQgZnVuY3Rpb25zCj4g IHRvZ2V0aGVyPyBPcGluaW9uPyBQbGVhc2UgY29ycmVjdCBtZSBpZiBJIGFtIHdyb25nLgoKQ29u c29saWRhdGUgY29sb3IgdG8gaW50ZWxfY29sb3IuYywgYXMgYWxsIHRoZSBpbmZvIGFib3V0IHRo ZSBibG9iIGFuZAppdHMgdXNlIGlzIHRoZXJlLgoKPiAtT3B0aW1pemF0aW9ucyBhbmQgcmVmcmFj dG9yaW5nCj4KPiBTaWduZWQtb2ZmLWJ5OiBTd2F0aSBTaGFybWEgPHN3YXRpMi5zaGFybWFAaW50 ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAg IDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgfCAgMTIgKysrCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMgICB8IDE4NiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgfCAgNDggKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o ICAgICB8ICAgMiArCj4gIDUgZmlsZXMgY2hhbmdlZCwgMjQzIGluc2VydGlvbnMoKyksIDYgZGVs ZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCBjNGZmZTE5Li5iNDIy ZWE2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTMzNCw2ICszMzQsNyBAQCBz dHJ1Y3QgZHJtX2k5MTVfZGlzcGxheV9mdW5jcyB7Cj4gIAkgKiBpbnZvbHZlZCB3aXRoIHRoZSBz YW1lIGNvbW1pdC4KPiAgCSAqLwo+ICAJdm9pZCAoKmxvYWRfbHV0cykoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ICsJdm9pZCAoKmNvbG9yX2NvbmZpZykoc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwoKUGxlYXNlIGNhbGwgdGhpcyAqZ2V0 KiBjb25maWcuIFNhbWUgZm9yIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYwpmdW5jdGlvbnMuIEl0IGRv ZXNuJ3QgY29uZmlndXJlLCBpdCByZWFkcyB0aGUgY29uZmlndXJhdGlvbi4KCj4gIH07Cj4gIAo+ ICAjZGVmaW5lIENTUl9WRVJTSU9OKG1ham9yLCBtaW5vcikJKChtYWpvcikgPDwgMTYgfCAobWlu b3IpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IGluZGV4IGMwY2Q3YTguLjI4MTMwMzMgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBAQCAtNzE1Niw2ICs3MTU2LDEwIEBAIGVudW0g ewo+ICAjZGVmaW5lIF9MR0NfUEFMRVRURV9CICAgICAgICAgICAweDRhODAwCj4gICNkZWZpbmUg TEdDX1BBTEVUVEUocGlwZSwgaSkgX01NSU8oX1BJUEUocGlwZSwgX0xHQ19QQUxFVFRFX0EsIF9M R0NfUEFMRVRURV9CKSArIChpKSAqIDQpCj4gIAoKTm8gYmxhbmsgbGluZSBoZXJlLiBEaXR0byBm b3IgdGhlIG90aGVyIGdyb3Vwcy4KCj4gKyNkZWZpbmUgTEdDX1BBTEVUVEVfUkVEX01BU0sJCSgw eEZGIDw8IDE2KQo+ICsjZGVmaW5lIExHQ19QQUxFVFRFX0dSRUVOX01BU0sJCSgweEZGIDw8IDgp Cj4gKyNkZWZpbmUgTEdDX1BBTEVUVEVfQkxVRV9NQVNLCQkoMHhGRiA8PCAwKQoKUGxlYXNlIGlu ZGVudCBhY2NvcmRpbmcgdG8gdGhlIGNvbW1lbnQgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZS4gUGxl YXNlCmRlZmluZSB0aGVzZSB1c2luZyB0aGUgbmV3IFJFR19HRU5NQVNLKCkgYW5kIHVzZSB0aGUg UkVHX0ZJRUxEX1BSRVAoKQphbmQgUkVHX0ZJRUxEX0dFVCgpIG1hY3JvcyBpbiBjb2RlLiBEaXR0 byBmb3IgdGhlIG90aGVyIGdyb3Vwcy4KCj4gKwo+ICAjZGVmaW5lIF9HQU1NQV9NT0RFX0EJCTB4 NGE0ODAKPiAgI2RlZmluZSBfR0FNTUFfTU9ERV9CCQkweDRhYzgwCj4gICNkZWZpbmUgR0FNTUFf TU9ERShwaXBlKSBfTU1JT19QSVBFKHBpcGUsIF9HQU1NQV9NT0RFX0EsIF9HQU1NQV9NT0RFX0Ip Cj4gQEAgLTEwMTAyLDYgKzEwMTA2LDEwIEBAIGVudW0gc2tsX3Bvd2VyX2dhdGUgewo+ICAjZGVm aW5lIFBSRV9DU0NfR0FNQ19JTkRFWChwaXBlKQlfTU1JT19QSVBFKHBpcGUsIF9QUkVfQ1NDX0dB TUNfSU5ERVhfQSwgX1BSRV9DU0NfR0FNQ19JTkRFWF9CKQo+ICAjZGVmaW5lIFBSRV9DU0NfR0FN Q19EQVRBKHBpcGUpCQlfTU1JT19QSVBFKHBpcGUsIF9QUkVfQ1NDX0dBTUNfREFUQV9BLCBfUFJF X0NTQ19HQU1DX0RBVEFfQikKPiAgCj4gKyNkZWZpbmUgUFJFQ19QQUxfREFUQV9SRURfTUFTSwkJ KDB4M0ZGIDw8IDIwKQo+ICsjZGVmaW5lIFBSRUNfUEFMX0RBVEFfR1JFRU5fTUFTSwkoMHgzRkYg PDwgMTApCj4gKyNkZWZpbmUgUFJFQ19QQUxfREFUQV9CTFVFX01BU0sJCSgweDNGRiA8PCAwKQo+ ICsKPiAgLyogcGlwZSBDU0MgJiBkZWdhbW1hL2dhbW1hIExVVHMgb24gQ0hWICovCj4gICNkZWZp bmUgX0NHTV9QSVBFX0FfQ1NDX0NPRUZGMDEJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDY3OTAwKQo+ ICAjZGVmaW5lIF9DR01fUElQRV9BX0NTQ19DT0VGRjIzCShWTFZfRElTUExBWV9CQVNFICsgMHg2 NzkwNCkKPiBAQCAtMTAxMzMsNiArMTAxNDEsMTAgQEAgZW51bSBza2xfcG93ZXJfZ2F0ZSB7Cj4g ICNkZWZpbmUgQ0dNX1BJUEVfR0FNTUEocGlwZSwgaSwgdykJX01NSU8oX1BJUEUocGlwZSwgX0NH TV9QSVBFX0FfR0FNTUEsIF9DR01fUElQRV9CX0dBTU1BKSArIChpKSAqIDggKyAodykgKiA0KQo+ ICAjZGVmaW5lIENHTV9QSVBFX01PREUocGlwZSkJCV9NTUlPX1BJUEUocGlwZSwgX0NHTV9QSVBF X0FfTU9ERSwgX0NHTV9QSVBFX0JfTU9ERSkKPiAgCj4gKyNkZWZpbmUgQ0dNX1BJUEVfR0FNTUFf UkVEX01BU0sJCSgweDNGRiA8PCAwKQo+ICsjZGVmaW5lIENHTV9QSVBFX0dBTU1BX0dSRUVOX01B U0sJKDB4M0ZGIDw8IDE2KQo+ICsjZGVmaW5lIENHTV9QSVBFX0dBTU1BX0JMVUVfTUFTSwkoMHgz RkYgPDwgMCkKPiArCj4gIC8qIE1JUEkgRFNJIHJlZ2lzdGVycyAqLwo+ICAKPiAgI2RlZmluZSBf TUlQSV9QT1JUKHBvcnQsIGEsIGMpCSgoKHBvcnQpID09IFBPUlRfQSkgPyBhIDogYykJLyogcG9y dHMgQSBhbmQgQyBvbmx5ICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4gaW5kZXgg ZGE3YTA3ZC4uYmQ0ZjFiMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9jb2xvci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwo+IEBA IC02NzksNiArNjc5LDE3MiBAQCB2b2lkIGludGVsX2NvbG9yX2xvYWRfbHV0cyhjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCWRldl9wcml2LT5kaXNwbGF5Lmxv YWRfbHV0cyhjcnRjX3N0YXRlKTsKPiAgfQo+ICAKPiArdTMyIGludGVsX2NvbG9yX2JpdF9wcmVj aXNpb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICsJCXJldHVybiAxMDsKPiArCWVsc2UKPiArCQlyZXR1 cm4gODsKPiArfQoKQ2FuIGJlIG1hZGUgc3RhdGljIGlmIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9u IGlzIG1vdmVkIGhlcmUuCgo+ICsKPiArLyogY29udmVydCBodyB2YWx1ZSB3aXRoIGdpdmVuIGJp dF9wcmVjaXNpb24gdG8gbHV0IHByb3BlcnR5IHZhbCAqLwo+ICtzdGF0aWMgdTMyIGludGVsX2Nv bG9yX2x1dF9wYWNrKHUzMiB2YWwsIHUzMiBiaXRfcHJlY2lzaW9uKQo+ICt7Cj4gKwl1MzIgbWF4 ID0gMHhGRkZGID4+ICgxNiAtIGJpdF9wcmVjaXNpb24pOwo+ICsKPiArCXZhbCA9IGNsYW1wX3Zh bCh2YWwsIDAsIG1heCk7Cj4gKwo+ICsJaWYgKGJpdF9wcmVjaXNpb24gPCAxNikKPiArCQl2YWwg PDw9IDE2IC0gYml0X3ByZWNpc2lvbjsKPiArCj4gKwlyZXR1cm4gdmFsOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCBpOXh4X2ludGVybmFsX2dhbW1hX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKCiJnZXQiIG1pc3NpbmcgaW4gbmFtZSwgc2FtZSB0aHJvdWdob3V0 LgoKPiArewo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNf c3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFz ZS5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNy dGMtPmJhc2UuZGV2KTsKPiArCXUzMiBpLCB0bXA7Cj4gKwllbnVtIHBpcGUgcGlwZSA9IGNydGMt PnBpcGU7Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IgPSBOVUxMOwo+ICsJc3Ry dWN0IGRybV9jb2xvcl9sdXQgKmJsb2JfZGF0YTsKPiArCj4gKwlibG9iID0gZHJtX3Byb3BlcnR5 X2NyZWF0ZV9ibG9iKGRldiwKPiArCQkJCQlzaXplb2Yoc3RydWN0IGRybV9jb2xvcl9sdXQpICog MjU2LAo+ICsJCQkJCU5VTEwpOwo+ICsJaWYgKElTX0VSUihibG9iKSkKPiArCQlyZXR1cm47Cj4g Kwo+ICsJYmxvYl9kYXRhID0gYmxvYi0+ZGF0YTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgMjU2 OyBpKyspIHsKPiArCQlpZiAoSEFTX0dNQ0goZGV2X3ByaXYpKQo+ICsJCQl0bXAgPSBJOTE1X1JF QUQoUEFMRVRURShwaXBlLCBpKSk7Cj4gKwkJZWxzZQo+ICsJCQl0bXAgPSBJOTE1X1JFQUQoTEdD X1BBTEVUVEUocGlwZSwgaSkpOwo+ICsJCWJsb2JfZGF0YVtpXS5yZWQgPSBpbnRlbF9jb2xvcl9s dXRfcGFjaygodG1wICYgTEdDX1BBTEVUVEVfUkVEX01BU0spID4+IDE2LCA4KTsKPiArCQlibG9i X2RhdGFbaV0uZ3JlZW4gPSBpbnRlbF9jb2xvcl9sdXRfcGFjaygodG1wICYgTEdDX1BBTEVUVEVf R1JFRU5fTUFTSykgPj4gOCwgOCk7Cj4gKwkJYmxvYl9kYXRhW2ldLmJsdWUgPSBpbnRlbF9jb2xv cl9sdXRfcGFjaygodG1wICYgTEdDX1BBTEVUVEVfQkxVRV9NQVNLKSwgOCk7CgpQbGVhc2UgdXNl IFJFR19GSUVMRF9HRVQoKS4KClNhbWUgdGhyb3VnaG91dC4KCj4gKwl9Cj4gKwo+ICsJY3J0Y19z dGF0ZS0+YmFzZS5nYW1tYV9sdXQgPSBibG9iOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpOXh4 X2NvbG9yX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiArewo+ ICsJaTl4eF9pbnRlcm5hbF9nYW1tYV9jb25maWcoY3J0Y19zdGF0ZSk7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIGNoZXJyeXZpZXdfZ2FtbWFfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVs X2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjcnRjLT5iYXNlLmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICsJdTMyIGksIHRtcCwgbHV0X3NpemUgPSBJTlRF TF9JTkZPKGRldl9wcml2KS0+Y29sb3IuZ2FtbWFfbHV0X3NpemU7Cj4gKwllbnVtIHBpcGUgcGlw ZSA9IGNydGMtPnBpcGU7Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IgPSBOVUxM Owo+ICsJc3RydWN0IGRybV9jb2xvcl9sdXQgKmJsb2JfZGF0YTsKPiArCj4gKwlibG9iID0gZHJt X3Byb3BlcnR5X2NyZWF0ZV9ibG9iKGRldiwKPiArCQkJCQlzaXplb2Yoc3RydWN0IGRybV9jb2xv cl9sdXQpICogMjU2LAo+ICsJCQkJCU5VTEwpOwo+ICsJaWYgKElTX0VSUihibG9iKSkKPiArCQly ZXR1cm47Cj4gKwo+ICsJYmxvYl9kYXRhID0gYmxvYi0+ZGF0YTsKPiArCj4gKwlmb3IgKGkgPSAw OyBpIDwgbHV0X3NpemU7IGkrKykgewo+ICsJCXRtcCA9IEk5MTVfUkVBRChDR01fUElQRV9HQU1N QShwaXBlLCBpLCAwKSk7Cj4gKwkJYmxvYl9kYXRhW2ldLmdyZWVuID0gaW50ZWxfY29sb3JfbHV0 X3BhY2soKHRtcCAmIENHTV9QSVBFX0dBTU1BX0dSRUVOX01BU0spID4+IDE2LCAxMCk7Cj4gKwkJ YmxvYl9kYXRhW2ldLmJsdWUgPSBpbnRlbF9jb2xvcl9sdXRfcGFjaygodG1wICYgQ0dNX1BJUEVf R0FNTUFfQkxVRV9NQVNLKSwgMTApOwo+ICsJCXRtcCA9IEk5MTVfUkVBRChDR01fUElQRV9HQU1N QShwaXBlLCBpLCAxKSk7Cj4gKwkJYmxvYl9kYXRhW2ldLnJlZCA9IGludGVsX2NvbG9yX2x1dF9w YWNrKCh0bXAgJiBDR01fUElQRV9HQU1NQV9SRURfTUFTSyksIDEwKTsKPiArCX0KPiArCj4gKwlj cnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCA9IGJsb2I7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IGJkd19nYW1tYV9jb25maWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsIHUz MiBvZmZzZXQpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNy dGMtPmJhc2UuZGV2Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShjcnRjLT5iYXNlLmRldik7Cj4gKwl1MzIgaSwgdG1wLCBsdXRfc2l6ZSA9IElOVEVMX0lO Rk8oZGV2X3ByaXYpLT5jb2xvci5nYW1tYV9sdXRfc2l6ZTsKPiArCWVudW0gcGlwZSBwaXBlID0g Y3J0Yy0+cGlwZTsKPiArCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYiA9IE5VTEw7Cj4g KwlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqYmxvYl9kYXRhOwo+ICsKPiArCVdBUk5fT04ob2Zmc2V0 ICYgflBBTF9QUkVDX0lOREVYX1ZBTFVFX01BU0spOwo+ICsKPiArCUk5MTVfV1JJVEUoUFJFQ19Q QUxfSU5ERVgocGlwZSksCj4gKwkJICAob2Zmc2V0ID8gUEFMX1BSRUNfU1BMSVRfTU9ERSA6IDAp IHwKPiArCQkgICBQQUxfUFJFQ19BVVRPX0lOQ1JFTUVOVCB8Cj4gKwkJICAgb2Zmc2V0KTsKPiAr Cj4gKwlibG9iID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9ibG9iKGRldiwKPiArCQkJCQlzaXplb2Yo c3RydWN0IGRybV9jb2xvcl9sdXQpICogbHV0X3NpemUsCj4gKwkJCQkJTlVMTCk7Cj4gKwlpZiAo SVNfRVJSKGJsb2IpKQo+ICsJCXJldHVybjsKPiArCj4gKwlibG9iX2RhdGEgPSBibG9iLT5kYXRh Owo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBsdXRfc2l6ZTsgaSsrKSB7Cj4gKwkJdG1wID0gSTkx NV9SRUFEKFBSRUNfUEFMX0RBVEEocGlwZSkpOwo+ICsJCWJsb2JfZGF0YVtpXS5yZWQgPSBpbnRl bF9jb2xvcl9sdXRfcGFjaygodG1wICYgUFJFQ19QQUxfREFUQV9SRURfTUFTSykgPj4gMjAsIDEw KTsKPiArCQlibG9iX2RhdGFbaV0uZ3JlZW4gPSBpbnRlbF9jb2xvcl9sdXRfcGFjaygodG1wICYg UFJFQ19QQUxfREFUQV9HUkVFTl9NQVNLKSA+PiAxMCwgMTApOwo+ICsJCWJsb2JfZGF0YVtpXS5i bHVlID0gaW50ZWxfY29sb3JfbHV0X3BhY2soKHRtcCAmIFBSRUNfUEFMX0RBVEFfQkxVRV9NQVNL KSwgMTApOwo+ICsJfQo+ICsKPiArCUk5MTVfV1JJVEUoUFJFQ19QQUxfSU5ERVgocGlwZSksIDAp Owo+ICsKPiArCWNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ID0gYmxvYjsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgY2hlcnJ5dmlld19jb2xvcl9jb25maWcoc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCj4gK3sKPiArCWlmIChjcnRjX3N0YXRlX2lzX2xlZ2FjeV9nYW1tYShj cnRjX3N0YXRlKSkKPiArCQlpOXh4X2NvbG9yX2NvbmZpZyhjcnRjX3N0YXRlKTsKPiArCWVsc2UK PiArCQljaGVycnl2aWV3X2dhbW1hX2NvbmZpZyhjcnRjX3N0YXRlKTsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgYnJvYWR3ZWxsX2NvbG9yX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKPiArewo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9j cnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiArCj4gKwlpZiAoY3J0Y19zdGF0 ZV9pc19sZWdhY3lfZ2FtbWEoY3J0Y19zdGF0ZSkpCj4gKwkJaTl4eF9jb2xvcl9jb25maWcoY3J0 Y19zdGF0ZSk7Cj4gKwllbHNlCj4gKwkJYmR3X2dhbW1hX2NvbmZpZyhjcnRjX3N0YXRlLAo+ICsJ CQkgICAgICAgICBJTlRFTF9JTkZPKGRldl9wcml2KS0+Y29sb3IuZGVnYW1tYV9sdXRfc2l6ZSk7 Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGdsa19jb2xvcl9jb25maWcoc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gK3sKPiArCWlmIChjcnRjX3N0YXRlX2lzX2xlZ2FjeV9n YW1tYShjcnRjX3N0YXRlKSkKPiArCQlpOXh4X2NvbG9yX2NvbmZpZyhjcnRjX3N0YXRlKTsKPiAr CWVsc2UKPiArCQliZHdfZ2FtbWFfY29uZmlnKGNydGNfc3RhdGUsIDApOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCBpY2xfY29sb3JfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlKQo+ICt7Cj4gKwlpZiAoY3J0Y19zdGF0ZV9pc19sZWdhY3lfZ2FtbWEoY3J0Y19zdGF0 ZSkpCj4gKwkJaTl4eF9jb2xvcl9jb25maWcoY3J0Y19zdGF0ZSk7Cj4gKwllbHNlCj4gKwkJYmR3 X2dhbW1hX2NvbmZpZyhjcnRjX3N0YXRlLCAwKTsKPiArfQo+ICsKPiArdm9pZCBpbnRlbF9jb2xv cl9jb25maWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gK3sKPiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFz ZS5jcnRjLT5kZXYpOwo+ICsKPiArCWRldl9wcml2LT5kaXNwbGF5LmNvbG9yX2NvbmZpZyhjcnRj X3N0YXRlKTsKPiArfQo+ICsKPiAgdm9pZCBpbnRlbF9jb2xvcl9jb21taXQoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwo+ IEBAIC04MzQsMjEgKzEwMDAsMjkgQEAgdm9pZCBpbnRlbF9jb2xvcl9pbml0KHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjKQo+ICAJZHJtX21vZGVfY3J0Y19zZXRfZ2FtbWFfc2l6ZSgmY3J0Yy0+YmFz ZSwgMjU2KTsKPiAgCj4gIAlpZiAoSEFTX0dNQ0goZGV2X3ByaXYpKSB7Cj4gLQkJaWYgKElTX0NI RVJSWVZJRVcoZGV2X3ByaXYpKQo+ICsJCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewo+ ICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMgPSBjaGVycnl2aWV3X2xvYWRfbHV0czsK PiAtCQllbHNlCj4gKwkJCWRldl9wcml2LT5kaXNwbGF5LmNvbG9yX2NvbmZpZyA9IGNoZXJyeXZp ZXdfY29sb3JfY29uZmlnOwo+ICsJCX0gZWxzZSB7Cj4gIAkJCWRldl9wcml2LT5kaXNwbGF5Lmxv YWRfbHV0cyA9IGk5eHhfbG9hZF9sdXRzOwo+ICsJCQlkZXZfcHJpdi0+ZGlzcGxheS5jb2xvcl9j b25maWcgPSBpOXh4X2NvbG9yX2NvbmZpZzsKPiArCQl9Cj4gIAo+ICAJCWRldl9wcml2LT5kaXNw bGF5LmNvbG9yX2NvbW1pdCA9IGk5eHhfY29sb3JfY29tbWl0Owo+ICAJfSBlbHNlIHsKPiAtCQlp ZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpCj4gKwkJaWYgKElTX0lDRUxBS0UoZGV2X3ByaXYpKSB7 Cj4gIAkJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGljbF9sb2FkX2x1dHM7Cj4gLQkJ ZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJp dikpCj4gKwkJCWRldl9wcml2LT5kaXNwbGF5LmNvbG9yX2NvbmZpZyA9IGljbF9jb2xvcl9jb25m aWc7Cj4gKwkJfSBlbHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSB8fCBJU19HRU1JTklM QUtFKGRldl9wcml2KSkgewo+ICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMgPSBnbGtf bG9hZF9sdXRzOwo+IC0JCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSB8fCBJU19C Uk9BRFdFTEwoZGV2X3ByaXYpKQo+ICsJCQlkZXZfcHJpdi0+ZGlzcGxheS5jb2xvcl9jb25maWcg PSBnbGtfY29sb3JfY29uZmlnOwo+ICsJCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA5IHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKPiAgCQkJZGV2X3ByaXYtPmRpc3BsYXku bG9hZF9sdXRzID0gYnJvYWR3ZWxsX2xvYWRfbHV0czsKPiAtCQllbHNlCj4gKwkJCWRldl9wcml2 LT5kaXNwbGF5LmNvbG9yX2NvbmZpZyA9IGJyb2Fkd2VsbF9jb2xvcl9jb25maWc7Cj4gKwkJfSBl bHNlIHsKPiAgCQkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gaTl4eF9sb2FkX2x1dHM7 Cj4gKwkJCWRldl9wcml2LT5kaXNwbGF5LmNvbG9yX2NvbmZpZyA9IGk5eHhfY29sb3JfY29uZmln Owo+ICsJCX0KPiAgCj4gIAkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiAgCQkJZGV2 X3ByaXYtPmRpc3BsYXkuY29sb3JfY29tbWl0ID0gc2tsX2NvbG9yX2NvbW1pdDsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggOTYzYjRiZC4uMzFiYjY1MiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtODIxMiw2ICs4MjEyLDggQEAg c3RhdGljIGJvb2wgaTl4eF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMs Cj4gIAo+ICAJaTl4eF9nZXRfcGlwZV9jb2xvcl9jb25maWcocGlwZV9jb25maWcpOwo+ICAKPiAr CWludGVsX2NvbG9yX2NvbmZpZyhwaXBlX2NvbmZpZyk7Cj4gKwo+ICAJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPCA0KQo+ICAJCXBpcGVfY29uZmlnLT5kb3VibGVfd2lkZSA9IHRtcCAmIFBJUEVD T05GX0RPVUJMRV9XSURFOwo+ICAKPiBAQCAtOTI4NCw2ICs5Mjg2LDggQEAgc3RhdGljIGJvb2wg aXJvbmxha2VfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAKPiAg CWk5eHhfZ2V0X3BpcGVfY29sb3JfY29uZmlnKHBpcGVfY29uZmlnKTsKPiAgCj4gKwlpbnRlbF9j b2xvcl9jb25maWcocGlwZV9jb25maWcpOwo+ICsKPiAgCWlmIChJOTE1X1JFQUQoUENIX1RSQU5T Q09ORihjcnRjLT5waXBlKSkgJiBUUkFOU19FTkFCTEUpIHsKPiAgCQlzdHJ1Y3QgaW50ZWxfc2hh cmVkX2RwbGwgKnBsbDsKPiAgCQllbnVtIGludGVsX2RwbGxfaWQgcGxsX2lkOwo+IEBAIC05OTMy LDYgKzk5MzYsOCBAQCBzdGF0aWMgYm9vbCBoYXN3ZWxsX2dldF9waXBlX2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKPiAgCQlpOXh4X2dldF9waXBlX2NvbG9yX2NvbmZpZyhwaXBlX2Nv bmZpZyk7Cj4gIAl9Cj4gIAo+ICsJaW50ZWxfY29sb3JfY29uZmlnKHBpcGVfY29uZmlnKTsKPiAr Cj4gIAlwb3dlcl9kb21haW4gPSBQT1dFUl9ET01BSU5fUElQRV9QQU5FTF9GSVRURVIoY3J0Yy0+ cGlwZSk7Cj4gIAlpZiAoaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJp diwgcG93ZXJfZG9tYWluKSkgewo+ICAJCVdBUk5fT04ocG93ZXJfZG9tYWluX21hc2sgJiBCSVRf VUxMKHBvd2VyX2RvbWFpbikpOwo+IEBAIC0xMTk5MCw2ICsxMTk5NiwzNiBAQCBzdGF0aWMgYm9v bCBmYXN0Ym9vdF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg CXJldHVybiBmYWxzZTsKPiAgfQo+ICAKPiArc3RhdGljIGJvb2wgaW50ZWxfY29tcGFyZV9jb2xv cl9sdXQoc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iMSwKPiArCQkJCSAgICBzdHJ1Y3Qg ZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IyLAo+ICsJCQkgICAgICAgICAgICB1MzIgYml0X3ByZWNp c2lvbikKPiArewo+ICsJc3RydWN0IGRybV9jb2xvcl9sdXQgKnN3X2x1dCA9IGJsb2IxLT5kYXRh Owo+ICsJc3RydWN0IGRybV9jb2xvcl9sdXQgKmh3X2x1dCA9IGJsb2IyLT5kYXRhOwo+ICsJdTMy IGVyciA9IDB4RkZGRiA+PiBiaXRfcHJlY2lzaW9uOwo+ICsJaW50IHN3X2x1dF9zaXplLCBod19s dXRfc2l6ZTsKPiArCWludCBpOwo+ICsKPiArCXN3X2x1dF9zaXplID0gZHJtX2NvbG9yX2x1dF9z aXplKGJsb2IxKTsKPiArCWh3X2x1dF9zaXplID0gZHJtX2NvbG9yX2x1dF9zaXplKGJsb2IyKTsK PiArCj4gKwlpZiAoSVNfRVJSKGJsb2IxKSB8fCBJU19FUlIoYmxvYjIpKQo+ICsJCXJldHVybiBm YWxzZTsKCk1tbWgsIGlmIHRoaXMgY29uZGl0aW9uIGlzIHRydWUsIHdlJ3ZlIG9vcHNlZCBvbiBk cm1fY29sb3JfbHV0X3NpemUoKQphbHJlYWR5LgoKPiArCj4gKwlpZiAoc3dfbHV0X3NpemUgIT0g aHdfbHV0X3NpemUpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBz d19sdXRfc2l6ZTsgaSsrKSB7Cj4gKwkJaWYgKCgoYWJzKChsb25nKWh3X2x1dFtpXS5yZWQgLSBz d19sdXRbaV0ucmVkKSkgPj0gZXJyKSB8fAo+ICsJCSAgICgoYWJzKChsb25nKWh3X2x1dFtpXS5i bHVlIC0gc3dfbHV0W2ldLmJsdWUpKSA+PSBlcnIpIHx8Cj4gKwkJICAgKChhYnMoKGxvbmcpaHdf bHV0W2ldLmdyZWVuIC0gc3dfbHV0W2ldLmdyZWVuKSkgPj0gZXJyKSkgewoKSSB0aGluayB1c2lu ZyBhbiBpbmxpbmUgZnVuY3Rpb24gZm9yIHRoZSBjb21wYXJpc29uIHdpdGggZXJyIHNsYWNrIHdv dWxkCmJlIG5pY2UuCgo+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXJl dHVybiB0cnVlOwo+ICt9CgpJIHRoaW5rIHNlcGFyYXRlIHRoZSBnZXQgY29uZmlnIHBhcnQgZnJv bSB0aGUgc3RhdGUgY2hlY2tlciBwYXJ0IHRvCmFub3RoZXIgcGF0Y2guCgpJIHRoaW5rIG1vdmUg dGhpcyBmdW5jdGlvbiB0byBpbnRlbF9jb2xvci5jLCBhcyBpbnRlbF9kaXNwbGF5LmMgaXMKYWxy ZWFkeSBvdmVyY3Jvd2RlZC4gUGFzcyBkZXZfcHJpdiB0byBpdCBzbyBpdCBjYW4gaGFuZGxlIGJp dCBwcmVjaXNpb24KaW50ZXJuYWxseSBpbnN0ZWFkLCBhbmQgeW91IGNhbiBtYWtlIGludGVsX2Nv bG9yX2JpdF9wcmVjaXNpb24oKQpzdGF0aWMuIChPciBqdXN0IGlubGluZSB0aGF0IGluIHRoZSBm dW5jdGlvbi4pCgo+ICsKPiAgc3RhdGljIGJvb2wKPiAgaW50ZWxfcGlwZV9jb25maWdfY29tcGFy ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmN1cnJlbnRfY29uZmlnLAo+IEBAIC0xMTk5Nyw2ICsxMjAzMyw3IEBAIHN0 YXRpYyBib29sIGZhc3Rib290X2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAJCQkgIGJvb2wgYWRqdXN0KQo+ICB7Cj4gIAlib29sIHJldCA9IHRydWU7Cj4gKwl1 MzIgYml0X3ByZWNpc2lvbjsKPiAgCWJvb2wgZml4dXBfaW5oZXJpdGVkID0gYWRqdXN0ICYmCj4g IAkJKGN1cnJlbnRfY29uZmlnLT5iYXNlLm1vZGUucHJpdmF0ZV9mbGFncyAmIEk5MTVfTU9ERV9G TEFHX0lOSEVSSVRFRCkgJiYKPiAgCQkhKHBpcGVfY29uZmlnLT5iYXNlLm1vZGUucHJpdmF0ZV9m bGFncyAmIEk5MTVfTU9ERV9GTEFHX0lOSEVSSVRFRCk7Cj4gQEAgLTEyMTQ4LDYgKzEyMTg1LDE0 IEBAIHN0YXRpYyBib29sIGZhc3Rib290X2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAJfSBcCj4gIH0gd2hpbGUgKDApCj4gIAo+ICsjZGVmaW5lIFBJUEVfQ09O Rl9DSEVDS19DT0xPUl9MVVQobmFtZSwgYml0X3ByZWNpc2lvbikgZG8geyBcCj4gKwlpZiAoIWlu dGVsX2NvbXBhcmVfY29sb3JfbHV0KGN1cnJlbnRfY29uZmlnLT5uYW1lLCBwaXBlX2NvbmZpZy0+ bmFtZSwgYml0X3ByZWNpc2lvbikpIHsgXAo+ICsJCXBpcGVfY29uZmlnX2VycihhZGp1c3QsIF9f c3RyaW5naWZ5KG5hbWUpLCBcCj4gKwkJCQkiaHdfc3RhdGUgZG9lc24ndCBtYXRjaCBzd19zdGF0 ZVxuIik7IFwKPiArCQlyZXQgPSBmYWxzZTsgXAo+ICsJfSBcCj4gK30gd2hpbGUgKDApCj4gKwo+ ICAjZGVmaW5lIFBJUEVfQ09ORl9RVUlSSyhxdWlyaykgXAo+ICAJKChjdXJyZW50X2NvbmZpZy0+ cXVpcmtzIHwgcGlwZV9jb25maWctPnF1aXJrcykgJiAocXVpcmspKQo+ICAKPiBAQCAtMTIyODcs NiArMTIzMzIsOSBAQCBzdGF0aWMgYm9vbCBmYXN0Ym9vdF9lbmFibGVkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgCVBJUEVfQ09ORl9DSEVDS19JTkZPRlJBTUUoc3BkKTsK PiAgCVBJUEVfQ09ORl9DSEVDS19JTkZPRlJBTUUoaGRtaSk7Cj4gIAo+ICsJYml0X3ByZWNpc2lv biA9IGludGVsX2NvbG9yX2JpdF9wcmVjaXNpb24oZGV2X3ByaXYpOwo+ICsJUElQRV9DT05GX0NI RUNLX0NPTE9SX0xVVChiYXNlLmdhbW1hX2x1dCwgYml0X3ByZWNpc2lvbik7Cj4gKwo+ICAjdW5k ZWYgUElQRV9DT05GX0NIRUNLX1gKPiAgI3VuZGVmIFBJUEVfQ09ORl9DSEVDS19JCj4gICN1bmRl ZiBQSVBFX0NPTkZfQ0hFQ0tfQk9PTAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXgg NDBlYmM5NC4uNmE4OWQyZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTI1 MTIsNiArMjUxMiw4IEBAIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2tfd2l0aF9zdGF0ZShj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfCj4gIGludCBpbnRlbF9jb2xv cl9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gIHZvaWQgaW50 ZWxfY29sb3JfY29tbWl0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KTsKPiAgdm9pZCBpbnRlbF9jb2xvcl9sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpOwo+ICt2b2lkIGludGVsX2NvbG9yX2NvbmZpZyhzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gK3UzMiBpbnRlbF9jb2xvcl9iaXRfcHJlY2lz aW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIAo+ICAvKiBpbnRlbF9s c3Bjb24uYyAqLwo+ICBib29sIGxzcGNvbl9pbml0KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQg KmludGVsX2RpZ19wb3J0KTsKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgR3Jh cGhpY3MgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eA==