From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [RFC] drm/i915: adding state checker for gamma lut values Date: Fri, 15 Mar 2019 11:47:57 +0200 Message-ID: <87o96ch3jm.fsf@intel.com> References: <1552634188-7372-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 mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id E628B6E382 for ; Fri, 15 Mar 2019 09:46:11 +0000 (UTC) In-Reply-To: <1552634188-7372-1-git-send-email-swati2.sharma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: daniel.vetter@ffwll.ch, animesh.manna@intel.com, Swati Sharma , uma.shankar@intel.com, rodrigo.vivi@intel.com, ankit.k.nautiyal@intel.com List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCAxNSBNYXIgMjAxOSwgc3dhdGkyLnNoYXJtYUBpbnRlbC5jb20gd3JvdGU6Cj4gRnJv bTogU3dhdGkgU2hhcm1hIDxzd2F0aTIuc2hhcm1hQGludGVsLmNvbT4KPgo+IEFkZGVkIHN0YXRl IGNoZWNrZXIgdG8gdmFsaWRhdGUgZ2FtbWFfbHV0IHZhbHVlcy4gVGhpcwo+IHJlYWRzIGhhcmR3 YXJlIHN0YXRlLCBhbmQgY29tcGFyZXMgdGhlIG9yaWdpbmFsbHkgcmVxdWVzdGVkCj4gc3RhdGUg dG8gdGhlIHN0YXRlIHJlYWQgZnJvbSBoYXJkd2FyZS4KPgo+IFRoaXMgaW1wbGVtZW50YXRpb24g Y2FuIGJlIHVzZWQgZm9yIEdlbjkrIHBsYXRmb3JtcywKPiBJIGhhdmVuJ3QgaW1wbGVtZW50ZWQg aXQgZm9yIGxlZ2FjeSBwbGF0Zm9ybXMuIEp1c3Qgd2FudCB0byBnZXQKPiBmZWVkYmFjayBpZiB0 aGlzIGlzIHRoZSByaWdodCBhcHByb2FjaCB0byBmb2xsb3cuCj4KPiBBbHNvLCBpbnZlcnNlIGZ1 bmN0aW9uIG9mIGRybV9jb2xvcl9sdXRfZXh0cmFjdCBpcyBtaXNzaW5nCj4gdG8gY29udmVydCBo YXJkd2FyZSByZWFkIHZhbHVlcyBiYWNrIHRvIHVzZXIgdmFsdWVzLgo+IFRoaW5raW5nIGZvciB0 aGF0LiBJIGhhdmUgYWRkZWQgYWxsICJUT0RPcyIgYW5kICJQbGFjZWhvbGRlcnMiLgo+Cj4gQW5v dGhlciBhcHByb2FjaDoKPiBTdG9yaW5nICJ3b3JkIiB0byBiZSB3cml0dGVuIGludG8gaGFyZHdh cmUgaW4gZGV2X3ByaXYgYW5kCj4gaW5zdGVhZCBvZiBjb21wYXJpbmcgYmxvYiwgY29tcGFyaW5n ICJ3b3JkIj8gSW4gZGV2X3ByaXYsCj4gb25seSBwb2ludGVyIHdpbGwgYmUgdGhlcmUgKHNvbWV0 aGluZyBsaWtlICpnYW1tYV93b3JkKS4KCllvdSBjYW4ndCBzdG9yZSBpdCBpbiBkZXZfcHJpdiBi ZWNhdXNlIGl0J3MgY3J0YyBzdGF0ZSBzcGVjaWZpYwpkYXRhLiBFdmVuIGlmIHN0b3JlZCBpbiBj cnRjIHN0YXRlLCB0aGUgYXBwcm9hY2ggZG9lc24ndCBoZWxwIHRoZQppbml0aWFsIGh3IHN0YXRl IHJlYWRvdXQgYW5kIHRha2VvdmVyLgoKUGxlYXNlIHVzZSBpbnRlbC1nZnggbWFpbGluZyBsaXN0 IGZvciBpOTE1IHBhdGNoZXMuCgo+IEZvciB0aGlzIHRvbywgSSB3aWxsIHNlbmQgYSBwYXRjaCB0 byBtYWtlIGl0IG1vcmUgY2xlYXIuCj4KPiBTaWduZWQtb2ZmLWJ5OiBTd2F0aSBTaGFybWEgPHN3 YXRpMi5zaGFybWFAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5j ICAgfCAxMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDUwICsrKysrKysrKysrKysrCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAgMSArCj4gIDQgZmlsZXMgY2hhbmdl ZCwgMTczIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPiBpbmRleCBjNGZmZTE5Li5iNDFiZmFhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4gQEAgLTMzNCw2ICszMzQsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZGlzcGxheV9mdW5jcyB7 Cj4gIAkgKiBpbnZvbHZlZCB3aXRoIHRoZSBzYW1lIGNvbW1pdC4KPiAgCSAqLwo+ICAJdm9pZCAo KmxvYWRfbHV0cykoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ ICsJdm9pZCAoKmdldF9jb25maWcpKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KTsKClRoZSBuYW1lIGlzIHRvbyBnZW5lcmljLgoKPiAgfTsKPiAgCj4gICNkZWZpbmUgQ1NSX1ZF UlNJT04obWFqb3IsIG1pbm9yKQkoKG1ham9yKSA8PCAxNiB8IChtaW5vcikpCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9jb2xvci5jCj4gaW5kZXggZGE3YTA3ZC4uYTUxNWU5ZiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfY29sb3IuYwo+IEBAIC03NCw2ICs3NCwxMSBAQAo+ICAjZGVmaW5lIElM S19DU0NfQ09FRkZfMV8wCQlcCj4gIAkoKDcgPDwgMTIpIHwgSUxLX0NTQ19DT0VGRl9GUChDVE1f Q09FRkZfMV8wLCA4KSkKPiAgCj4gKy8qIE1hc2sgdG8gZXh0cmFjdCBSR0IgdmFsdWVzIGZyb20g cmVnaXN0ZXJzICovCj4gKyNkZWZpbmUgQ09MT1JfQkxVRV9NQVNLICAgICAgICAgMHgwMDAwMDNG RiAgICAgICAgICAgICAgLyogOTowICovCj4gKyNkZWZpbmUgQ09MT1JfR1JFRU5fTUFTSyAgICAg ICAgMHgwMDBGRkMwMCAgICAgICAgICAgICAgLyogMTk6MTAgKi8KPiArI2RlZmluZSBDT0xPUl9S RURfTUFTSyAgICAgICAgICAweDNGRjAwMDAwICAgICAgICAgICAgICAvKiAyOToyMCAqLwoKVGhl c2UgYmVsb25nIGluIGk5MTVfcmVnLmgsIGFuZCB5b3UgbmVlZCBwbGF0Zm9ybSBzcGVjaWZpYyBz aGlmdHMgYW5kCm1hc2tzLiBUaGUgY29kZSB0aGF0IHdyaXRlcyB0aGUgcmVnaXN0ZXJzIHNlZW1z IHRvIHVzZSBtYWdpYyBudW1iZXJzLi4uCgo+ICsKPiAgc3RhdGljIGJvb2wgbHV0X2lzX2xlZ2Fj eShjb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmx1dCkKPiAgewo+ICAJcmV0dXJuIGRy bV9jb2xvcl9sdXRfc2l6ZShsdXQpID09IExFR0FDWV9MVVRfTEVOR1RIOwo+IEBAIC02NzIsNiAr Njc3LDk3IEBAIHN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJaTl4eF9sb2FkX2x1dHNfaW50ZXJuYWwo Y3J0Y19zdGF0ZSwgTlVMTCk7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIGJkd19nZXRfZ2FtbWFf Y29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLCB1MzIgb2Zmc2V0KQo+ ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0 ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRl djsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ YmFzZS5kZXYpOwo+ICsJdTMyIGksIHRtcCwgbHV0X3NpemUgPSBJTlRFTF9JTkZPKGRldl9wcml2 KS0+Y29sb3IuZ2FtbWFfbHV0X3NpemU7Cj4gKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7 Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IgPSBOVUxMOwo+ICsJc3RydWN0IGRy bV9jb2xvcl9sdXQgKmJsb2JfZGF0YTsKPiArCj4gKwlXQVJOX09OKG9mZnNldCAmIH5QQUxfUFJF Q19JTkRFWF9WQUxVRV9NQVNLKTsKPiArCj4gKwlJOTE1X1dSSVRFKFBSRUNfUEFMX0lOREVYKHBp cGUpLAo+ICsJCQkob2Zmc2V0ID8gUEFMX1BSRUNfU1BMSVRfTU9ERSA6IDApIHwKPiArCQkJUEFM X1BSRUNfQVVUT19JTkNSRU1FTlQgfAo+ICsJCQlvZmZzZXQpOwo+ICsKPiArCWJsb2IgPSBkcm1f cHJvcGVydHlfY3JlYXRlX2Jsb2IoZGV2LAo+ICsJCQlzaXplb2Yoc3RydWN0IGRybV9jb2xvcl9s dXQpICogbHV0X3NpemUsCj4gKwkJCU5VTEwpOwo+ICsJaWYgKElTX0VSUihibG9iKSkKPiArCQly ZXR1cm47Cj4gKwo+ICsJYmxvYl9kYXRhID0gYmxvYi0+ZGF0YTsKPiArCj4gKwlmb3IgKGkgPSAw OyBpIDwgbHV0X3NpemU7IGkrKykgewo+ICsJCXRtcCA9IEk5MTVfUkVBRChQUkVDX1BBTF9EQVRB KHBpcGUpKTsKPiArCQkvKgo+ICsJCSAqIFRPRE86IGNvbnZlcnQgUkdCIHZhbHVlIHJlYWQgZnJv bSByZWdpc3RlciBpbnRvIGNvcnJlc3BvbmRpbmcgdXNlciB2YWx1ZSB1c2luZwo+ICsJCSAqIHNv bWUgd3JhcHBlciBsaWtlIGRybV9jb2xvcl9sdXRfcHV0KCkgKG9yKSBpbnRlbF9jb2xvcl9sdXRf cHV0KCkgc28gdGhhdCBpdAo+ICsJCSAqIGNhbiBiZSBjb21wYXJlZCBsYXRlci4KPiArCQkgKi8K ClllYWgsIHlvdSdsbCBuZWVkIHRoaXMuCgo+ICsJCWJsb2JfZGF0YVtpXS5yZWQgPSAodG1wICYg Q09MT1JfUkVEX01BU0spID4+IDIwOwo+ICsJCWJsb2JfZGF0YVtpXS5ncmVlbiA9ICh0bXAgJiBD T0xPUl9HUkVFTl9NQVNLKSA+PiAxMDsKPiArCQlibG9iX2RhdGFbaV0uYmx1ZSA9IHRtcCAmIENP TE9SX0JMVUVfTUFTSzsKPiArCX0KPiArCj4gKwlJOTE1X1dSSVRFKFBSRUNfUEFMX0lOREVYKHBp cGUpLCAwKTsKPiArCj4gKwljcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCA9IGJsb2I7Cj4gK30K PiArCj4gK3N0YXRpYyB2b2lkIGk5eHhfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKClBsZWFzZSBpbmNsdWRlIChkZSlnYW1tYSBvciBjb2xvciBpbiB0aGUg ZnVuY3Rpb24gbmFtZXMuCgo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2lu dGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBjcnRjLT5iYXNlLmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICsJdTMyIGksIHRtcDsKPiArCWVudW0gcGlw ZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiArCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYiA9 IE5VTEw7Cj4gKwlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqYmxvYl9kYXRhOwo+ICsKPiArCWJsb2Ig PSBkcm1fcHJvcGVydHlfY3JlYXRlX2Jsb2IoZGV2LAo+ICsJCQkJCXNpemVvZihzdHJ1Y3QgZHJt X2NvbG9yX2x1dCkgKiAyNTYsCj4gKwkJCQkJTlVMTCk7Cj4gKwlpZiAoSVNfRVJSKGJsb2IpKQo+ ICsJCXJldHVybjsKPiArCj4gKwlibG9iX2RhdGEgPSBibG9iLT5kYXRhOwo+ICsKPiArCWZvciAo aSA9IDA7IGkgPCAyNTY7IGkrKykgewo+ICsJCWlmIChIQVNfR01DSChkZXZfcHJpdikpCj4gKwkJ CXRtcCA9IEk5MTVfUkVBRChQQUxFVFRFKHBpcGUsIGkpKTsKPiArCQllbHNlCj4gKwkJCXRtcCA9 IEk5MTVfUkVBRChMR0NfUEFMRVRURShwaXBlLCBpKSk7Cj4gKwkJLyoKPiArCQkgKiBUT0RPOiBj b252ZXJ0IFJHQiB2YWx1ZSByZWFkIGZyb20gcmVnaXN0ZXIgaW50byBjb3JyZXNwb25kaW5nIHVz ZXIgdmFsdWUgdXNpbmcKPiArCQkgKiBzb21lIHdyYXBwZXIgbGlrZSBkcm1fY29sb3JfbHV0X3B1 dCgpIChvcikgaW50ZWxfY29sb3JfbHV0X3B1dCgpIHNvIHRoYXQgaXQKPiArCQkgKiBjYW4gYmUg Y29tcGFyZWQgbGF0ZXIuCj4gKwkJICovCj4gKwkJYmxvYl9kYXRhW2ldLnJlZCA9ICh0bXAgJiBD T0xPUl9SRURfTUFTSykgPj4gMjA7Cj4gKwkJYmxvYl9kYXRhW2ldLmdyZWVuID0gKHRtcCAmIENP TE9SX0dSRUVOX01BU0spID4+IDEwOwo+ICsJCWJsb2JfZGF0YVtpXS5ibHVlID0gKHRtcCAmIENP TE9SX0JMVUVfTUFTSyk7Cj4gKwl9Cj4gKwo+ICsJY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQg PSBibG9iOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpY2xfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsJLyoKPiArCSAqIFRPRE86IHBsYWNl aG9sZGVyIGZvciBkZWdhbW1hIHZhbGlkYXRpb24KPiArCSAqIGdsa19nZXRfZGVnYW1tYV9jb25m aWcoY3J0Y19zdGF0ZSwgMCk7Cj4gKwkgKi8KPiArCj4gKwlpZiAoY3J0Y19zdGF0ZV9pc19sZWdh Y3lfZ2FtbWEoY3J0Y19zdGF0ZSkpCj4gKwkJaTl4eF9nZXRfY29uZmlnKGNydGNfc3RhdGUpOwo+ ICsJZWxzZQo+ICsJCWJkd19nZXRfZ2FtbWFfY29uZmlnKGNydGNfc3RhdGUsIDApOwo+ICt9Cj4g Kwo+ICB2b2lkIGludGVsX2NvbG9yX2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4gQEAgLTY3OSw2ICs3 NzUsMTMgQEAgdm9pZCBpbnRlbF9jb2xvcl9sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMoY3J0 Y19zdGF0ZSk7Cj4gIH0KPiAgCj4gK3ZvaWQgaW50ZWxfY29sb3JfZ2V0X2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4g Kwo+ICsJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NvbmZpZyhjcnRjX3N0YXRlKTsKClRoaXMgd2ls bCBvb3BzIG9uIHBsYXRmb3JtcyB3aGVyZSB5b3UgaGF2ZW4ndCBpbXBsZW1lbnRlZCBpdCB5ZXQu Cgo+ICt9Cj4gKwo+ICB2b2lkIGludGVsX2NvbG9yX2NvbW1pdChjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4gQEAgLTgz MywyMiArOTM2LDM0IEBAIHZvaWQgaW50ZWxfY29sb3JfaW5pdChzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YykKPiAgCj4gIAlkcm1fbW9kZV9jcnRjX3NldF9nYW1tYV9zaXplKCZjcnRjLT5iYXNlLCAy NTYpOwo+ICAKPiArCS8qCj4gKwkgKiBUT0RPOiBJbiB0aGUgZm9sbG93aW5nIGlmIGxhZGRlciwg a2VwdCBwbGFjZWhvbGRlcnMKPiArCSAqIGZvciBleHRlbmRpbmcgbHV0IHZhbGlkYXRpb24gZm9y IGxlZ2FjeSBwbGF0Zm9ybXMuCj4gKwkgKi8KCkkgdGhpbmsgYWRkaW5nIHRoZSBwbGFjZWhvbGRl ciBjb21tZW50cyBpcyB0b28gbWVzc3kuCgo+ICAJaWYgKEhBU19HTUNIKGRldl9wcml2KSkgewo+ IC0JCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiArCQlpZiAoSVNfQ0hFUlJZVklFVyhk ZXZfcHJpdikpIHsKPiAgCQkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gY2hlcnJ5dmll d19sb2FkX2x1dHM7Cj4gLQkJZWxzZQo+ICsJCQkgLyogZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2Nv bmZpZyA9IGNoZXJyeXZpZXdfZ2V0X2NvbmZpZzsgKi8KPiArCQl9IGVsc2Ugewo+ICAJCQlkZXZf cHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMgPSBpOXh4X2xvYWRfbHV0czsKPiArCQkJZGV2X3ByaXYt PmRpc3BsYXkuZ2V0X2NvbmZpZyA9IGk5eHhfZ2V0X2NvbmZpZzsKPiArCQl9Cj4gIAo+ICAJCWRl dl9wcml2LT5kaXNwbGF5LmNvbG9yX2NvbW1pdCA9IGk5eHhfY29sb3JfY29tbWl0Owo+ICAJfSBl bHNlIHsKPiAtCQlpZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpCj4gKwkJaWYgKElTX0lDRUxBS0Uo ZGV2X3ByaXYpKSB7Cj4gIAkJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGljbF9sb2Fk X2x1dHM7Cj4gLQkJZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikgfHwgSVNfR0VNSU5J TEFLRShkZXZfcHJpdikpCj4gKwkJCWRldl9wcml2LT5kaXNwbGF5LmdldF9jb25maWcgPSBpY2xf Z2V0X2NvbmZpZzsKPiArCQl9IGVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpIHx8IElT X0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4gIAkJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0 cyA9IGdsa19sb2FkX2x1dHM7Cj4gLQkJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5 IHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4gKwkJCS8qIGRldl9wcml2LT5kaXNwbGF5Lmdl dF9jb25maWcgPSBnbGtfZ2V0X2NvbmZpZzsgKi8KPiArCQl9IGVsc2UgaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Cj4gIAkJCWRldl9wcml2 LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGJyb2Fkd2VsbF9sb2FkX2x1dHM7Cj4gLQkJZWxzZQo+ICsJ CQkvKiBkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY29uZmlnID0gYnJvYWR3ZWxsX2dldF9jb25maWc7 ICovCj4gKwkJfSBlbHNlIHsKPiAgCQkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gaTl4 eF9sb2FkX2x1dHM7Cj4gKwkJCWRldl9wcml2LT5kaXNwbGF5LmdldF9jb25maWcgPSBpOXh4X2dl dF9jb25maWc7Cj4gKwkJfQo+ICAKPiAgCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ ICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5jb2xvcl9jb21taXQgPSBza2xfY29sb3JfY29tbWl0Owo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCA5NjNiNGJkLi4xNjVkNzk3 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC04MjEyLDYgKzgy MTIsMTEgQEAgc3RhdGljIGJvb2wgaTl4eF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCj4gIAo+ICAJaTl4eF9nZXRfcGlwZV9jb2xvcl9jb25maWcocGlwZV9jb25maWcp Owo+ICAKPiArCS8qCj4gKwkgKiBUT0RPOiBZZXQgdG8gaW1wbGVtZW50IGZvciBsZWdhY3kgcGxh dGZvcm1zCj4gKwkgKiBpbnRlbF9jb2xvcl9nZXRfY29uZmlnKHBpcGVfY29uZmlnKTsKPiArCSAq Lwo+ICsKCkknbSBub3Qgc3VyZSBhYm91dCBhZGRpbmcgdGhlc2UgY29tbWVudHMgZWl0aGVyLgoK PiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkKPiAgCQlwaXBlX2NvbmZpZy0+ZG91Ymxl X3dpZGUgPSB0bXAgJiBQSVBFQ09ORl9ET1VCTEVfV0lERTsKPiAgCj4gQEAgLTkyODQsNiArOTI4 OSwxMSBAQCBzdGF0aWMgYm9vbCBpcm9ubGFrZV9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVs X2NydGMgKmNydGMsCj4gIAo+ICAJaTl4eF9nZXRfcGlwZV9jb2xvcl9jb25maWcocGlwZV9jb25m aWcpOwo+ICAKPiArCS8qCj4gKwkgKiBUT0RPOiBZZXQgdG8gaW1wbGVtZW50IGZvciBsZWdhY3kg cGxhdGZvcm1zCj4gKwkgKiBpbnRlbF9jb2xvcl9nZXRfY29uZmlnKHBpcGVfY29uZmlnKTsKPiAr CSAqLwo+ICsKPiAgCWlmIChJOTE1X1JFQUQoUENIX1RSQU5TQ09ORihjcnRjLT5waXBlKSkgJiBU UkFOU19FTkFCTEUpIHsKPiAgCQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbDsKPiAgCQll bnVtIGludGVsX2RwbGxfaWQgcGxsX2lkOwo+IEBAIC05OTMyLDYgKzk5NDIsOCBAQCBzdGF0aWMg Ym9vbCBoYXN3ZWxsX2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAg CQlpOXh4X2dldF9waXBlX2NvbG9yX2NvbmZpZyhwaXBlX2NvbmZpZyk7Cj4gIAl9Cj4gIAo+ICsJ aW50ZWxfY29sb3JfZ2V0X2NvbmZpZyhwaXBlX2NvbmZpZyk7Cj4gKwo+ICAJcG93ZXJfZG9tYWlu ID0gUE9XRVJfRE9NQUlOX1BJUEVfUEFORUxfRklUVEVSKGNydGMtPnBpcGUpOwo+ICAJaWYgKGlu dGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbikp IHsKPiAgCQlXQVJOX09OKHBvd2VyX2RvbWFpbl9tYXNrICYgQklUX1VMTChwb3dlcl9kb21haW4p KTsKPiBAQCAtMTE5OTAsNiArMTIwMDIsMzQgQEAgc3RhdGljIGJvb2wgZmFzdGJvb3RfZW5hYmxl ZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlyZXR1cm4gZmFsc2U7Cj4g IH0KPiAgCj4gK3N0YXRpYyBib29sIGludGVsX2NvbXBhcmVfYmxvYihzdHJ1Y3QgZHJtX3Byb3Bl cnR5X2Jsb2IgKmJsb2IxLAo+ICsJCQkgICAgICAgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpi bG9iMikKPiArewo+ICsJc3RydWN0IGRybV9jb2xvcl9sdXQgKnN3X2x1dCA9IGJsb2IxLT5kYXRh Owo+ICsJc3RydWN0IGRybV9jb2xvcl9sdXQgKmh3X2x1dCA9IGJsb2IyLT5kYXRhOwo+ICsJaW50 IHN3X2x1dF9zaXplLCBod19sdXRfc2l6ZTsKPiArCWludCBpOwo+ICsKPiArCXN3X2x1dF9zaXpl ID0gZHJtX2NvbG9yX2x1dF9zaXplKGJsb2IxKTsKPiArCWh3X2x1dF9zaXplID0gZHJtX2NvbG9y X2x1dF9zaXplKGJsb2IyKTsKPiArCj4gKwlpZiAoc3dfbHV0X3NpemUgIT0gaHdfbHV0X3NpemUp IHsKPiArCQlEUk1fREVCVUdfS01TKCJJbnZhbGlkIExVVCBzaXplOyBnb3QgJWQsIGV4cGVjdGVk ICVkXG4iLCBod19sdXRfc2l6ZSwgc3dfbHV0X3NpemUpOwoKUGxlYXNlIGRvbid0IGFkZCB0aGVz ZSBkZWJ1ZyBsb2dzIGhlcmUuIEluc3RlYWQsIGFkZCBhIHNlcGFyYXRlIGZ1bmN0aW9uCnRvIGxv ZyBlcnJvcnMgYXQgdGhlIGhpZ2hlciBsZXZlbC4gQ29udHJhc3QgUElQRV9DT05GX0NIRUNLX0lO Rk9GUkFNRSgpCmFuZCBwaXBlX2NvbmZpZ19pbmZvZnJhbWVfZXJyKCkuIFRoYXQgY2FuIGNvbWUg YXMgYSBmb2xsb3ctdXAKaW1wcm92ZW1lbnQsIGJ1dCB0aGUgZGVidWcgbG9ncyBoZXJlIGFyZSB1 bm5lY2Vzc2FyeS4KCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJfQo+ICsKPiArCWZvciAoaSA9IDA7 IGkgPCBzd19sdXRfc2l6ZTsgaSsrKSB7Cj4gKwkJaWYgKGh3X2x1dFtpXS5yZWQgIT0gc3dfbHV0 W2ldLnJlZCB8fAo+ICsJCSAgICBod19sdXRbaV0uYmx1ZSAhPSBzd19sdXRbaV0uYmx1ZSB8fAo+ ICsJCSAgICBod19sdXRbaV0uZ3JlZW4gIT0gc3dfbHV0W2ldLmdyZWVuKSB7Cj4gKwkJCURSTV9E RUJVR19LTVMoIkludmFsaWQgTFVUIHZhbHVlOyBzd19sdXQgdmFsdWUgZG9lc24ndCBtYXRjaCBo d19sdXQgdmFsdWVcbiIpOwo+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gKwkJfQo+ICsJfQo+ICsKPiAr CXJldHVybiB0cnVlOwo+ICt9Cj4gKwoKSSdkIHB1dCB0aGlzIGluIGludGVsX2NvbG9yLmMgYW5k IG5hbWUgaXQgcHJvcGVybHkuIFlvdSBjYW4ndCB1c2UgaXQgdG8KY29tcGFyZSByYW5kb20gYmxv YnMsIGFuZCB0aGUgY29tcGFyaXNvbiBuZWVkcyB0byB0YWtlIHBsYXRmb3JtIHNwZWNpZmljCmJp dCBwcmVjaXNpb24gb2YgdGhlIHJlYWRvdXQgaW50byBhY2NvdW50LgoKVGhlIGJsb2JzIG1heSBi ZSBOVUxMLgoKPiAgc3RhdGljIGJvb2wKPiAgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmN1cnJlbnRfY29uZmlnLAo+IEBAIC0xMjE0OCw2ICsxMjE4OCwxNCBAQCBzdGF0aWMg Ym9vbCBmYXN0Ym9vdF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgCX0gXAo+ICB9IHdoaWxlICgwKQo+ICAKPiArI2RlZmluZSBQSVBFX0NPTkZfQ0hFQ0tfQkxP QihuYW1lKSBkbyB7IFwKCkNIRUNLX0xVVCBvciBDSEVDS19DT0xPUl9MVVQgb3Igc29tZXRoaW5n LCBub3QganVzdCBDSEVDS19CTE9CLgoKPiArCWlmICghaW50ZWxfY29tcGFyZV9ibG9iKGN1cnJl bnRfY29uZmlnLT5uYW1lLCBwaXBlX2NvbmZpZy0+bmFtZSkpIHsgXAo+ICsJCXBpcGVfY29uZmln X2VycihhZGp1c3QsIF9fc3RyaW5naWZ5KG5hbWUpLCBcCj4gKwkJCQkiaHdfc3RhdGUgZG9lc24n dCBtYXRjaCBzd19zdGF0ZVxuIik7IFwKPiArCQlyZXQgPSBmYWxzZTsgXAo+ICsJfSBcCj4gK30g d2hpbGUgKDApCj4gKwo+ICAjZGVmaW5lIFBJUEVfQ09ORl9RVUlSSyhxdWlyaykgXAo+ICAJKChj dXJyZW50X2NvbmZpZy0+cXVpcmtzIHwgcGlwZV9jb25maWctPnF1aXJrcykgJiAocXVpcmspKQo+ ICAKPiBAQCAtMTIyODcsNiArMTIzMzUsOCBAQCBzdGF0aWMgYm9vbCBmYXN0Ym9vdF9lbmFibGVk KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCVBJUEVfQ09ORl9DSEVDS19J TkZPRlJBTUUoc3BkKTsKPiAgCVBJUEVfQ09ORl9DSEVDS19JTkZPRlJBTUUoaGRtaSk7Cj4gIAo+ ICsJUElQRV9DT05GX0NIRUNLX0JMT0IoYmFzZS5nYW1tYV9sdXQpOwo+ICsKPiAgI3VuZGVmIFBJ UEVfQ09ORl9DSEVDS19YCj4gICN1bmRlZiBQSVBFX0NPTkZfQ0hFQ0tfSQo+ICAjdW5kZWYgUElQ RV9DT05GX0NIRUNLX0JPT0wKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDQwZWJj OTQuLmE2YWNkOWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0yNTEyLDYg KzI1MTIsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrX3dpdGhfc3RhdGUoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjXwo+ICBpbnQgaW50ZWxfY29sb3JfY2hl Y2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ICB2b2lkIGludGVsX2Nv bG9yX2NvbW1pdChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4g IHZvaWQgaW50ZWxfY29sb3JfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlKTsKPiArdm9pZCBpbnRlbF9jb2xvcl9nZXRfY29uZmlnKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPiAgCj4gIC8qIGludGVsX2xzcGNvbi5jICovCj4g IGJvb2wgbHNwY29uX2luaXQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3Bv cnQpOwoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBHcmFwaGljcyBDZW50ZXIK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs