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: Wed, 20 Mar 2019 14:41:24 +0200 Message-ID: <87r2b1en0r.fsf@intel.com> References: <1552634188-7372-1-git-send-email-swati2.sharma@intel.com> <87o96ch3jm.fsf@intel.com> <6b816617-af80-afdf-9379-b33367cece80@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8545E89DB4 for ; Wed, 20 Mar 2019 12:39:42 +0000 (UTC) In-Reply-To: <6b816617-af80-afdf-9379-b33367cece80@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Sharma, Swati2" , "dri-devel@lists.freedesktop.org" Cc: "daniel.vetter@ffwll.ch" , "Manna, Animesh" , "Shankar, Uma" , "Vivi, Rodrigo" , "Nautiyal, Ankit K" List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCAyMCBNYXIgMjAxOSwgIlNoYXJtYSwgU3dhdGkyIiA8c3dhdGkyLnNoYXJtYUBpbnRl bC5jb20+IHdyb3RlOgo+IE9uIDE1LU1hci0xOSAzOjE3IFBNLCBOaWt1bGEsIEphbmkgd3JvdGU6 Cj4+IE9uIEZyaSwgMTUgTWFyIDIwMTksIHN3YXRpMi5zaGFybWFAaW50ZWwuY29tIHdyb3RlOgo+ Pj4gRnJvbTogU3dhdGkgU2hhcm1hIDxzd2F0aTIuc2hhcm1hQGludGVsLmNvbT4KPj4+Cj4+PiBB ZGRlZCBzdGF0ZSBjaGVja2VyIHRvIHZhbGlkYXRlIGdhbW1hX2x1dCB2YWx1ZXMuIFRoaXMKPj4+ IHJlYWRzIGhhcmR3YXJlIHN0YXRlLCBhbmQgY29tcGFyZXMgdGhlIG9yaWdpbmFsbHkgcmVxdWVz dGVkCj4+PiBzdGF0ZSB0byB0aGUgc3RhdGUgcmVhZCBmcm9tIGhhcmR3YXJlLgo+Pj4KPj4+IFRo aXMgaW1wbGVtZW50YXRpb24gY2FuIGJlIHVzZWQgZm9yIEdlbjkrIHBsYXRmb3JtcywKPj4+IEkg aGF2ZW4ndCBpbXBsZW1lbnRlZCBpdCBmb3IgbGVnYWN5IHBsYXRmb3Jtcy4gSnVzdCB3YW50IHRv IGdldAo+Pj4gZmVlZGJhY2sgaWYgdGhpcyBpcyB0aGUgcmlnaHQgYXBwcm9hY2ggdG8gZm9sbG93 Lgo+Pj4KPj4+IEFsc28sIGludmVyc2UgZnVuY3Rpb24gb2YgZHJtX2NvbG9yX2x1dF9leHRyYWN0 IGlzIG1pc3NpbmcKPj4+IHRvIGNvbnZlcnQgaGFyZHdhcmUgcmVhZCB2YWx1ZXMgYmFjayB0byB1 c2VyIHZhbHVlcy4KPj4+IFRoaW5raW5nIGZvciB0aGF0LiBJIGhhdmUgYWRkZWQgYWxsICJUT0RP cyIgYW5kICJQbGFjZWhvbGRlcnMiLgo+Pj4KPj4+IEFub3RoZXIgYXBwcm9hY2g6Cj4+PiBTdG9y aW5nICJ3b3JkIiB0byBiZSB3cml0dGVuIGludG8gaGFyZHdhcmUgaW4gZGV2X3ByaXYgYW5kCj4+ PiBpbnN0ZWFkIG9mIGNvbXBhcmluZyBibG9iLCBjb21wYXJpbmcgIndvcmQiPyBJbiBkZXZfcHJp diwKPj4+IG9ubHkgcG9pbnRlciB3aWxsIGJlIHRoZXJlIChzb21ldGhpbmcgbGlrZSAqZ2FtbWFf d29yZCkuCj4+IFlvdSBjYW4ndCBzdG9yZSBpdCBpbiBkZXZfcHJpdiBiZWNhdXNlIGl0J3MgY3J0 YyBzdGF0ZSBzcGVjaWZpYwo+PiBkYXRhLiBFdmVuIGlmIHN0b3JlZCBpbiBjcnRjIHN0YXRlLCB0 aGUgYXBwcm9hY2ggZG9lc24ndCBoZWxwIHRoZQo+PiBpbml0aWFsIGh3IHN0YXRlIHJlYWRvdXQg YW5kIHRha2VvdmVyLgo+Pgo+PiBQbGVhc2UgdXNlIGludGVsLWdmeCBtYWlsaW5nIGxpc3QgZm9y IGk5MTUgcGF0Y2hlcy4KPj4KPj4+IEZvciB0aGlzIHRvbywgSSB3aWxsIHNlbmQgYSBwYXRjaCB0 byBtYWtlIGl0IG1vcmUgY2xlYXIuCj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogU3dhdGkgU2hhcm1h IDxzd2F0aTIuc2hhcm1hQGludGVsLmNvbT4KPj4+IC0tLQo+Pj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oICAgICAgfCAgIDEgKwo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9jb2xvci5jICAgfCAxMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0K Pj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDUwICsrKysrKysr KysrKysrCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAgMSAr Cj4+PiAgIDQgZmlsZXMgY2hhbmdlZCwgMTczIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0p Cj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+PiBpbmRleCBjNGZmZTE5Li5iNDFiZmFh IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4gQEAgLTMzNCw2ICszMzQsNyBA QCBzdHJ1Y3QgZHJtX2k5MTVfZGlzcGxheV9mdW5jcyB7Cj4+PiAgIAkgKiBpbnZvbHZlZCB3aXRo IHRoZSBzYW1lIGNvbW1pdC4KPj4+ICAgCSAqLwo+Pj4gICAJdm9pZCAoKmxvYWRfbHV0cykoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+Pj4gKwl2b2lkICgqZ2V0 X2NvbmZpZykoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+PiBUaGUgbmFt ZSBpcyB0b28gZ2VuZXJpYy4KPj4KPj4+ICAgfTsKPj4+ICAgCj4+PiAgICNkZWZpbmUgQ1NSX1ZF UlNJT04obWFqb3IsIG1pbm9yKQkoKG1ham9yKSA8PCAxNiB8IChtaW5vcikpCj4+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2NvbG9yLmMKPj4+IGluZGV4IGRhN2EwN2QuLmE1MTVlOWYgMTAwNjQ0Cj4+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4+PiBAQCAtNzQsNiArNzQsMTEgQEAKPj4+ ICAgI2RlZmluZSBJTEtfQ1NDX0NPRUZGXzFfMAkJXAo+Pj4gICAJKCg3IDw8IDEyKSB8IElMS19D U0NfQ09FRkZfRlAoQ1RNX0NPRUZGXzFfMCwgOCkpCj4+PiAgIAo+Pj4gKy8qIE1hc2sgdG8gZXh0 cmFjdCBSR0IgdmFsdWVzIGZyb20gcmVnaXN0ZXJzICovCj4+PiArI2RlZmluZSBDT0xPUl9CTFVF X01BU0sgICAgICAgICAweDAwMDAwM0ZGICAgICAgICAgICAgICAvKiA5OjAgKi8KPj4+ICsjZGVm aW5lIENPTE9SX0dSRUVOX01BU0sgICAgICAgIDB4MDAwRkZDMDAgICAgICAgICAgICAgIC8qIDE5 OjEwICovCj4+PiArI2RlZmluZSBDT0xPUl9SRURfTUFTSyAgICAgICAgICAweDNGRjAwMDAwICAg ICAgICAgICAgICAvKiAyOToyMCAqLwo+PiBUaGVzZSBiZWxvbmcgaW4gaTkxNV9yZWcuaCwgYW5k IHlvdSBuZWVkIHBsYXRmb3JtIHNwZWNpZmljIHNoaWZ0cyBhbmQKPj4gbWFza3MuIFRoZSBjb2Rl IHRoYXQgd3JpdGVzIHRoZSByZWdpc3RlcnMgc2VlbXMgdG8gdXNlIG1hZ2ljIG51bWJlcnMuLi4K Pj4KPj4+ICsKPj4+ICAgc3RhdGljIGJvb2wgbHV0X2lzX2xlZ2FjeShjb25zdCBzdHJ1Y3QgZHJt X3Byb3BlcnR5X2Jsb2IgKmx1dCkKPj4+ICAgewo+Pj4gICAJcmV0dXJuIGRybV9jb2xvcl9sdXRf c2l6ZShsdXQpID09IExFR0FDWV9MVVRfTEVOR1RIOwo+Pj4gQEAgLTY3Miw2ICs2NzcsOTcgQEAg c3RhdGljIHZvaWQgY2hlcnJ5dmlld19sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCj4+PiAgIAlpOXh4X2xvYWRfbHV0c19pbnRlcm5hbChjcnRjX3N0 YXRlLCBOVUxMKTsKPj4+ICAgfQo+Pj4gICAKPj4+ICtzdGF0aWMgdm9pZCBiZHdfZ2V0X2dhbW1h X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwgdTMyIG9mZnNldCkK Pj4+ICt7Cj4+PiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj X3N0YXRlLT5iYXNlLmNydGMpOwo+Pj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ YmFzZS5kZXY7Cj4+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY3J0Yy0+YmFzZS5kZXYpOwo+Pj4gKwl1MzIgaSwgdG1wLCBsdXRfc2l6ZSA9IElOVEVMX0lO Rk8oZGV2X3ByaXYpLT5jb2xvci5nYW1tYV9sdXRfc2l6ZTsKPj4+ICsJZW51bSBwaXBlIHBpcGUg PSBjcnRjLT5waXBlOwo+Pj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IgPSBOVUxM Owo+Pj4gKwlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqYmxvYl9kYXRhOwo+Pj4gKwo+Pj4gKwlXQVJO X09OKG9mZnNldCAmIH5QQUxfUFJFQ19JTkRFWF9WQUxVRV9NQVNLKTsKPj4+ICsKPj4+ICsJSTkx NV9XUklURShQUkVDX1BBTF9JTkRFWChwaXBlKSwKPj4+ICsJCQkob2Zmc2V0ID8gUEFMX1BSRUNf U1BMSVRfTU9ERSA6IDApIHwKPj4+ICsJCQlQQUxfUFJFQ19BVVRPX0lOQ1JFTUVOVCB8Cj4+PiAr CQkJb2Zmc2V0KTsKPj4+ICsKPj4+ICsJYmxvYiA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfYmxvYihk ZXYsCj4+PiArCQkJc2l6ZW9mKHN0cnVjdCBkcm1fY29sb3JfbHV0KSAqIGx1dF9zaXplLAo+Pj4g KwkJCU5VTEwpOwo+Pj4gKwlpZiAoSVNfRVJSKGJsb2IpKQo+Pj4gKwkJcmV0dXJuOwo+Pj4gKwo+ Pj4gKwlibG9iX2RhdGEgPSBibG9iLT5kYXRhOwo+Pj4gKwo+Pj4gKwlmb3IgKGkgPSAwOyBpIDwg bHV0X3NpemU7IGkrKykgewo+Pj4gKwkJdG1wID0gSTkxNV9SRUFEKFBSRUNfUEFMX0RBVEEocGlw ZSkpOwo+Pj4gKwkJLyoKPj4+ICsJCSAqIFRPRE86IGNvbnZlcnQgUkdCIHZhbHVlIHJlYWQgZnJv bSByZWdpc3RlciBpbnRvIGNvcnJlc3BvbmRpbmcgdXNlciB2YWx1ZSB1c2luZwo+Pj4gKwkJICog c29tZSB3cmFwcGVyIGxpa2UgZHJtX2NvbG9yX2x1dF9wdXQoKSAob3IpIGludGVsX2NvbG9yX2x1 dF9wdXQoKSBzbyB0aGF0IGl0Cj4+PiArCQkgKiBjYW4gYmUgY29tcGFyZWQgbGF0ZXIuCj4+PiAr CQkgKi8KPj4gWWVhaCwgeW91J2xsIG5lZWQgdGhpcy4KPiBDYW4geW91IHBsZWFzZSBoZWxwIGlu IHRoaXM/CgpTb21ldGhpbmcgbGlrZSB0aGlzOgoKLyogY29udmVydCBodyB2YWx1ZSB3aXRoIGdp dmVuIGJpdF9wcmVjaXNpb24gdG8gbHV0IHByb3BlcnR5IHZhbCAqLwp1MzIgZHJtX2NvbG9yX2x1 dF9wYWNrKHUzMiB2YWwsIHUzMiBiaXRfcHJlY2lzaW9uKQp7Cgl1MzIgbWF4ID0gMHhmZmZmID4+ ICgxNiAtIGJpdF9wcmVjaXNpb24pOwoKCXZhbCA9IGNsYW1wX3ZhbCh2YWwsIDAsIG1heCk7CgoJ aWYgKGJpdF9wcmVjaXNpb24gPCAxNikKCQl2YWwgPDw9IDE2IC0gYml0X3ByZWNpc2lvbjsKCgly ZXR1cm4gdmFsOwp9CgovKiBjb21wYXJlIHR3byBsdXQgcHJvcGVydHkgdmFsdWVzIHdpdGggZ2l2 ZW4gYml0X3ByZWNpc2lvbiAqLwpib29sIGRybV9jb2xvcl9sdXRfbWF0Y2godTMyIGEsIHUzMiBi LCB1MzIgYml0X3ByZWNpc2lvbikKewoJdTMyIGVyciA9IDB4ZmZmZiA+PiBiaXRfcHJlY2lzaW9u OwoKCXJldHVybiBhYnMoKGxvbmcpYSAtIGIpIDw9IGVycjsKfQoKSSBkaWRuJ3QgZG91YmxlIGNo ZWNrIHRoZSBtYXRoLCBidXQgaXQncyBwcm9iYWJseSBjbG9zZSBlbm91Z2ggZm9yCnN0YXJ0ZXJz LiA7KQoKCgpCUiwKSmFuaS4KCgoKCj4+Cj4+PiArCQlibG9iX2RhdGFbaV0ucmVkID0gKHRtcCAm IENPTE9SX1JFRF9NQVNLKSA+PiAyMDsKPj4+ICsJCWJsb2JfZGF0YVtpXS5ncmVlbiA9ICh0bXAg JiBDT0xPUl9HUkVFTl9NQVNLKSA+PiAxMDsKPj4+ICsJCWJsb2JfZGF0YVtpXS5ibHVlID0gdG1w ICYgQ09MT1JfQkxVRV9NQVNLOwo+Pj4gKwl9Cj4+PiArCj4+PiArCUk5MTVfV1JJVEUoUFJFQ19Q QUxfSU5ERVgocGlwZSksIDApOwo+Pj4gKwo+Pj4gKwljcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1 dCA9IGJsb2I7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkIGk5eHhfZ2V0X2NvbmZpZyhz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPj4gUGxlYXNlIGluY2x1ZGUgKGRl KWdhbW1hIG9yIGNvbG9yIGluIHRoZSBmdW5jdGlvbiBuYW1lcy4KPj4KPj4+ICt7Cj4+PiArCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNy dGMpOwo+Pj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4+PiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5k ZXYpOwo+Pj4gKwl1MzIgaSwgdG1wOwo+Pj4gKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7 Cj4+PiArCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYiA9IE5VTEw7Cj4+PiArCXN0cnVj dCBkcm1fY29sb3JfbHV0ICpibG9iX2RhdGE7Cj4+PiArCj4+PiArCWJsb2IgPSBkcm1fcHJvcGVy dHlfY3JlYXRlX2Jsb2IoZGV2LAo+Pj4gKwkJCQkJc2l6ZW9mKHN0cnVjdCBkcm1fY29sb3JfbHV0 KSAqIDI1NiwKPj4+ICsJCQkJCU5VTEwpOwo+Pj4gKwlpZiAoSVNfRVJSKGJsb2IpKQo+Pj4gKwkJ cmV0dXJuOwo+Pj4gKwo+Pj4gKwlibG9iX2RhdGEgPSBibG9iLT5kYXRhOwo+Pj4gKwo+Pj4gKwlm b3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKPj4+ICsJCWlmIChIQVNfR01DSChkZXZfcHJpdikp Cj4+PiArCQkJdG1wID0gSTkxNV9SRUFEKFBBTEVUVEUocGlwZSwgaSkpOwo+Pj4gKwkJZWxzZQo+ Pj4gKwkJCXRtcCA9IEk5MTVfUkVBRChMR0NfUEFMRVRURShwaXBlLCBpKSk7Cj4+PiArCQkvKgo+ Pj4gKwkJICogVE9ETzogY29udmVydCBSR0IgdmFsdWUgcmVhZCBmcm9tIHJlZ2lzdGVyIGludG8g Y29ycmVzcG9uZGluZyB1c2VyIHZhbHVlIHVzaW5nCj4+PiArCQkgKiBzb21lIHdyYXBwZXIgbGlr ZSBkcm1fY29sb3JfbHV0X3B1dCgpIChvcikgaW50ZWxfY29sb3JfbHV0X3B1dCgpIHNvIHRoYXQg aXQKPj4+ICsJCSAqIGNhbiBiZSBjb21wYXJlZCBsYXRlci4KPj4+ICsJCSAqLwo+Pj4gKwkJYmxv Yl9kYXRhW2ldLnJlZCA9ICh0bXAgJiBDT0xPUl9SRURfTUFTSykgPj4gMjA7Cj4+PiArCQlibG9i X2RhdGFbaV0uZ3JlZW4gPSAodG1wICYgQ09MT1JfR1JFRU5fTUFTSykgPj4gMTA7Cj4+PiArCQli bG9iX2RhdGFbaV0uYmx1ZSA9ICh0bXAgJiBDT0xPUl9CTFVFX01BU0spOwo+Pj4gKwl9Cj4+PiAr Cj4+PiArCWNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ID0gYmxvYjsKPj4+ICt9Cj4+PiArCj4+ PiArc3RhdGljIHZvaWQgaWNsX2dldF9jb25maWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUpCj4+PiArewo+Pj4gKwkvKgo+Pj4gKwkgKiBUT0RPOiBwbGFjZWhvbGRlciBmb3Ig ZGVnYW1tYSB2YWxpZGF0aW9uCj4+PiArCSAqIGdsa19nZXRfZGVnYW1tYV9jb25maWcoY3J0Y19z dGF0ZSwgMCk7Cj4+PiArCSAqLwo+Pj4gKwo+Pj4gKwlpZiAoY3J0Y19zdGF0ZV9pc19sZWdhY3lf Z2FtbWEoY3J0Y19zdGF0ZSkpCj4+PiArCQlpOXh4X2dldF9jb25maWcoY3J0Y19zdGF0ZSk7Cj4+ PiArCWVsc2UKPj4+ICsJCWJkd19nZXRfZ2FtbWFfY29uZmlnKGNydGNfc3RhdGUsIDApOwo+Pj4g K30KPj4+ICsKPj4+ICAgdm9pZCBpbnRlbF9jb2xvcl9sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4+PiAgIHsKPj4+ICAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXYp Owo+Pj4gQEAgLTY3OSw2ICs3NzUsMTMgQEAgdm9pZCBpbnRlbF9jb2xvcl9sb2FkX2x1dHMoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4+PiAgIAlkZXZfcHJpdi0+ ZGlzcGxheS5sb2FkX2x1dHMoY3J0Y19zdGF0ZSk7Cj4+PiAgIH0KPj4+ICAgCj4+PiArdm9pZCBp bnRlbF9jb2xvcl9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KQo+Pj4gK3sKPj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4+PiArCj4+PiArCWRldl9wcml2LT5kaXNw bGF5LmdldF9jb25maWcoY3J0Y19zdGF0ZSk7Cj4+IFRoaXMgd2lsbCBvb3BzIG9uIHBsYXRmb3Jt cyB3aGVyZSB5b3UgaGF2ZW4ndCBpbXBsZW1lbnRlZCBpdCB5ZXQuCj4+Cj4+PiArfQo+Pj4gKwo+ Pj4gICB2b2lkIGludGVsX2NvbG9yX2NvbW1pdChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKPj4+ICAgewo+Pj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4+PiBAQCAtODMz LDIyICs5MzYsMzQgQEAgdm9pZCBpbnRlbF9jb2xvcl9pbml0KHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjKQo+Pj4gICAKPj4+ICAgCWRybV9tb2RlX2NydGNfc2V0X2dhbW1hX3NpemUoJmNydGMtPmJh c2UsIDI1Nik7Cj4+PiAgIAo+Pj4gKwkvKgo+Pj4gKwkgKiBUT0RPOiBJbiB0aGUgZm9sbG93aW5n IGlmIGxhZGRlciwga2VwdCBwbGFjZWhvbGRlcnMKPj4+ICsJICogZm9yIGV4dGVuZGluZyBsdXQg dmFsaWRhdGlvbiBmb3IgbGVnYWN5IHBsYXRmb3Jtcy4KPj4+ICsJICovCj4+IEkgdGhpbmsgYWRk aW5nIHRoZSBwbGFjZWhvbGRlciBjb21tZW50cyBpcyB0b28gbWVzc3kuCj4+Cj4+PiAgIAlpZiAo SEFTX0dNQ0goZGV2X3ByaXYpKSB7Cj4+PiAtCQlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikp Cj4+PiArCQlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPj4+ICAgCQkJZGV2X3ByaXYt PmRpc3BsYXkubG9hZF9sdXRzID0gY2hlcnJ5dmlld19sb2FkX2x1dHM7Cj4+PiAtCQllbHNlCj4+ PiArCQkJIC8qIGRldl9wcml2LT5kaXNwbGF5LmdldF9jb25maWcgPSBjaGVycnl2aWV3X2dldF9j b25maWc7ICovCj4+PiArCQl9IGVsc2Ugewo+Pj4gICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2Fk X2x1dHMgPSBpOXh4X2xvYWRfbHV0czsKPj4+ICsJCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY29u ZmlnID0gaTl4eF9nZXRfY29uZmlnOwo+Pj4gKwkJfQo+Pj4gICAKPj4+ICAgCQlkZXZfcHJpdi0+ ZGlzcGxheS5jb2xvcl9jb21taXQgPSBpOXh4X2NvbG9yX2NvbW1pdDsKPj4+ICAgCX0gZWxzZSB7 Cj4+PiAtCQlpZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpCj4+PiArCQlpZiAoSVNfSUNFTEFLRShk ZXZfcHJpdikpIHsKPj4+ICAgCQkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gaWNsX2xv YWRfbHV0czsKPj4+IC0JCWVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpIHx8IElTX0dF TUlOSUxBS0UoZGV2X3ByaXYpKQo+Pj4gKwkJCWRldl9wcml2LT5kaXNwbGF5LmdldF9jb25maWcg PSBpY2xfZ2V0X2NvbmZpZzsKPj4+ICsJCX0gZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJp dikgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPj4+ICAgCQkJZGV2X3ByaXYtPmRpc3Bs YXkubG9hZF9sdXRzID0gZ2xrX2xvYWRfbHV0czsKPj4+IC0JCWVsc2UgaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+Pj4gKwkJCS8qIGRldl9w cml2LT5kaXNwbGF5LmdldF9jb25maWcgPSBnbGtfZ2V0X2NvbmZpZzsgKi8KPj4+ICsJCX0gZWxz ZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5IHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikp IHsKPj4+ICAgCQkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gYnJvYWR3ZWxsX2xvYWRf bHV0czsKPj4+IC0JCWVsc2UKPj4+ICsJCQkvKiBkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY29uZmln ID0gYnJvYWR3ZWxsX2dldF9jb25maWc7ICovCj4+PiArCQl9IGVsc2Ugewo+Pj4gICAJCQlkZXZf cHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMgPSBpOXh4X2xvYWRfbHV0czsKPj4+ICsJCQlkZXZfcHJp di0+ZGlzcGxheS5nZXRfY29uZmlnID0gaTl4eF9nZXRfY29uZmlnOwo+Pj4gKwkJfQo+Pj4gICAK Pj4+ICAgCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+Pj4gICAJCQlkZXZfcHJpdi0+ ZGlzcGxheS5jb2xvcl9jb21taXQgPSBza2xfY29sb3JfY29tbWl0Owo+Pj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+Pj4gaW5kZXggOTYzYjRiZC4uMTY1ZDc5NyAxMDA2NDQKPj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+Pj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+PiBAQCAtODIxMiw2ICs4MjEyLDEx IEBAIHN0YXRpYyBib29sIGk5eHhfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAo+Pj4gICAKPj4+ICAgCWk5eHhfZ2V0X3BpcGVfY29sb3JfY29uZmlnKHBpcGVfY29uZmln KTsKPj4+ICAgCj4+PiArCS8qCj4+PiArCSAqIFRPRE86IFlldCB0byBpbXBsZW1lbnQgZm9yIGxl Z2FjeSBwbGF0Zm9ybXMKPj4+ICsJICogaW50ZWxfY29sb3JfZ2V0X2NvbmZpZyhwaXBlX2NvbmZp Zyk7Cj4+PiArCSAqLwo+Pj4gKwo+PiBJJ20gbm90IHN1cmUgYWJvdXQgYWRkaW5nIHRoZXNlIGNv bW1lbnRzIGVpdGhlci4KPj4KPj4+ICAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkKPj4+ ICAgCQlwaXBlX2NvbmZpZy0+ZG91YmxlX3dpZGUgPSB0bXAgJiBQSVBFQ09ORl9ET1VCTEVfV0lE RTsKPj4+ICAgCj4+PiBAQCAtOTI4NCw2ICs5Mjg5LDExIEBAIHN0YXRpYyBib29sIGlyb25sYWtl X2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPj4+ICAgCj4+PiAgIAlp OXh4X2dldF9waXBlX2NvbG9yX2NvbmZpZyhwaXBlX2NvbmZpZyk7Cj4+PiAgIAo+Pj4gKwkvKgo+ Pj4gKwkgKiBUT0RPOiBZZXQgdG8gaW1wbGVtZW50IGZvciBsZWdhY3kgcGxhdGZvcm1zCj4+PiAr CSAqIGludGVsX2NvbG9yX2dldF9jb25maWcocGlwZV9jb25maWcpOwo+Pj4gKwkgKi8KPj4+ICsK Pj4+ICAgCWlmIChJOTE1X1JFQUQoUENIX1RSQU5TQ09ORihjcnRjLT5waXBlKSkgJiBUUkFOU19F TkFCTEUpIHsKPj4+ICAgCQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbDsKPj4+ICAgCQll bnVtIGludGVsX2RwbGxfaWQgcGxsX2lkOwo+Pj4gQEAgLTk5MzIsNiArOTk0Miw4IEBAIHN0YXRp YyBib29sIGhhc3dlbGxfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ Pj4gICAJCWk5eHhfZ2V0X3BpcGVfY29sb3JfY29uZmlnKHBpcGVfY29uZmlnKTsKPj4+ICAgCX0K Pj4+ICAgCj4+PiArCWludGVsX2NvbG9yX2dldF9jb25maWcocGlwZV9jb25maWcpOwo+Pj4gKwo+ Pj4gICAJcG93ZXJfZG9tYWluID0gUE9XRVJfRE9NQUlOX1BJUEVfUEFORUxfRklUVEVSKGNydGMt PnBpcGUpOwo+Pj4gICAJaWYgKGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2 X3ByaXYsIHBvd2VyX2RvbWFpbikpIHsKPj4+ICAgCQlXQVJOX09OKHBvd2VyX2RvbWFpbl9tYXNr ICYgQklUX1VMTChwb3dlcl9kb21haW4pKTsKPj4+IEBAIC0xMTk5MCw2ICsxMjAwMiwzNCBAQCBz dGF0aWMgYm9vbCBmYXN0Ym9vdF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPj4+ICAgCXJldHVybiBmYWxzZTsKPj4+ICAgfQo+Pj4gICAKPj4+ICtzdGF0aWMgYm9v bCBpbnRlbF9jb21wYXJlX2Jsb2Ioc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iMSwKPj4+ ICsJCQkgICAgICAgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iMikKPj4+ICt7Cj4+PiAr CXN0cnVjdCBkcm1fY29sb3JfbHV0ICpzd19sdXQgPSBibG9iMS0+ZGF0YTsKPj4+ICsJc3RydWN0 IGRybV9jb2xvcl9sdXQgKmh3X2x1dCA9IGJsb2IyLT5kYXRhOwo+Pj4gKwlpbnQgc3dfbHV0X3Np emUsIGh3X2x1dF9zaXplOwo+Pj4gKwlpbnQgaTsKPj4+ICsKPj4+ICsJc3dfbHV0X3NpemUgPSBk cm1fY29sb3JfbHV0X3NpemUoYmxvYjEpOwo+Pj4gKwlod19sdXRfc2l6ZSA9IGRybV9jb2xvcl9s dXRfc2l6ZShibG9iMik7Cj4+PiArCj4+PiArCWlmIChzd19sdXRfc2l6ZSAhPSBod19sdXRfc2l6 ZSkgewo+Pj4gKwkJRFJNX0RFQlVHX0tNUygiSW52YWxpZCBMVVQgc2l6ZTsgZ290ICVkLCBleHBl Y3RlZCAlZFxuIiwgaHdfbHV0X3NpemUsIHN3X2x1dF9zaXplKTsKPj4gUGxlYXNlIGRvbid0IGFk ZCB0aGVzZSBkZWJ1ZyBsb2dzIGhlcmUuIEluc3RlYWQsIGFkZCBhIHNlcGFyYXRlIGZ1bmN0aW9u Cj4+IHRvIGxvZyBlcnJvcnMgYXQgdGhlIGhpZ2hlciBsZXZlbC4gQ29udHJhc3QgUElQRV9DT05G X0NIRUNLX0lORk9GUkFNRSgpCj4+IGFuZCBwaXBlX2NvbmZpZ19pbmZvZnJhbWVfZXJyKCkuIFRo YXQgY2FuIGNvbWUgYXMgYSBmb2xsb3ctdXAKPj4gaW1wcm92ZW1lbnQsIGJ1dCB0aGUgZGVidWcg bG9ncyBoZXJlIGFyZSB1bm5lY2Vzc2FyeS4KPj4KPj4+ICsJCXJldHVybiBmYWxzZTsKPj4+ICsJ fQo+Pj4gKwo+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgc3dfbHV0X3NpemU7IGkrKykgewo+Pj4gKwkJ aWYgKGh3X2x1dFtpXS5yZWQgIT0gc3dfbHV0W2ldLnJlZCB8fAo+Pj4gKwkJICAgIGh3X2x1dFtp XS5ibHVlICE9IHN3X2x1dFtpXS5ibHVlIHx8Cj4+PiArCQkgICAgaHdfbHV0W2ldLmdyZWVuICE9 IHN3X2x1dFtpXS5ncmVlbikgewo+Pj4gKwkJCURSTV9ERUJVR19LTVMoIkludmFsaWQgTFVUIHZh bHVlOyBzd19sdXQgdmFsdWUgZG9lc24ndCBtYXRjaCBod19sdXQgdmFsdWVcbiIpOwo+Pj4gKwkJ CXJldHVybiBmYWxzZTsKPj4+ICsJCX0KPj4+ICsJfQo+Pj4gKwo+Pj4gKwlyZXR1cm4gdHJ1ZTsK Pj4+ICt9Cj4+PiArCj4+IEknZCBwdXQgdGhpcyBpbiBpbnRlbF9jb2xvci5jIGFuZCBuYW1lIGl0 IHByb3Blcmx5LiBZb3UgY2FuJ3QgdXNlIGl0IHRvCj4+IGNvbXBhcmUgcmFuZG9tIGJsb2JzLCBh bmQgdGhlIGNvbXBhcmlzb24gbmVlZHMgdG8gdGFrZSBwbGF0Zm9ybSBzcGVjaWZpYwo+PiBiaXQg cHJlY2lzaW9uIG9mIHRoZSByZWFkb3V0IGludG8gYWNjb3VudC4KPj4KPj4gVGhlIGJsb2JzIG1h eSBiZSBOVUxMLgo+Pgo+Pj4gICBzdGF0aWMgYm9vbAo+Pj4gICBpbnRlbF9waXBlX2NvbmZpZ19j b21wYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4+ICAgCQkJICBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3VycmVudF9jb25maWcsCj4+PiBAQCAtMTIxNDgsNiArMTIx ODgsMTQgQEAgc3RhdGljIGJvb2wgZmFzdGJvb3RfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4+PiAgIAl9IFwKPj4+ICAgfSB3aGlsZSAoMCkKPj4+ICAgCj4+PiAr I2RlZmluZSBQSVBFX0NPTkZfQ0hFQ0tfQkxPQihuYW1lKSBkbyB7IFwKPj4gQ0hFQ0tfTFVUIG9y IENIRUNLX0NPTE9SX0xVVCBvciBzb21ldGhpbmcsIG5vdCBqdXN0IENIRUNLX0JMT0IuCj4+Cj4+ PiArCWlmICghaW50ZWxfY29tcGFyZV9ibG9iKGN1cnJlbnRfY29uZmlnLT5uYW1lLCBwaXBlX2Nv bmZpZy0+bmFtZSkpIHsgXAo+Pj4gKwkJcGlwZV9jb25maWdfZXJyKGFkanVzdCwgX19zdHJpbmdp ZnkobmFtZSksIFwKPj4+ICsJCQkJImh3X3N0YXRlIGRvZXNuJ3QgbWF0Y2ggc3dfc3RhdGVcbiIp OyBcCj4+PiArCQlyZXQgPSBmYWxzZTsgXAo+Pj4gKwl9IFwKPj4+ICt9IHdoaWxlICgwKQo+Pj4g Kwo+Pj4gICAjZGVmaW5lIFBJUEVfQ09ORl9RVUlSSyhxdWlyaykgXAo+Pj4gICAJKChjdXJyZW50 X2NvbmZpZy0+cXVpcmtzIHwgcGlwZV9jb25maWctPnF1aXJrcykgJiAocXVpcmspKQo+Pj4gICAK Pj4+IEBAIC0xMjI4Nyw2ICsxMjMzNSw4IEBAIHN0YXRpYyBib29sIGZhc3Rib290X2VuYWJsZWQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+Pj4gICAJUElQRV9DT05GX0NIRUNL X0lORk9GUkFNRShzcGQpOwo+Pj4gICAJUElQRV9DT05GX0NIRUNLX0lORk9GUkFNRShoZG1pKTsK Pj4+ICAgCj4+PiArCVBJUEVfQ09ORl9DSEVDS19CTE9CKGJhc2UuZ2FtbWFfbHV0KTsKPj4+ICsK Pj4+ICAgI3VuZGVmIFBJUEVfQ09ORl9DSEVDS19YCj4+PiAgICN1bmRlZiBQSVBFX0NPTkZfQ0hF Q0tfSQo+Pj4gICAjdW5kZWYgUElQRV9DT05GX0NIRUNLX0JPT0wKPj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCj4+PiBpbmRleCA0MGViYzk0Li5hNmFjZDliIDEwMDY0NAo+Pj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4+PiBAQCAtMjUxMiw2ICsyNTEyLDcgQEAgaW50IGludGVsX3BsYW5l X2F0b21pY19jaGVja193aXRoX3N0YXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpv bGRfY3J0Y18KPj4+ICAgaW50IGludGVsX2NvbG9yX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKTsKPj4+ICAgdm9pZCBpbnRlbF9jb2xvcl9jb21taXQoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+Pj4gICB2b2lkIGludGVsX2NvbG9y X2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4+ PiArdm9pZCBpbnRlbF9jb2xvcl9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKTsKPj4+ICAgCj4+PiAgIC8qIGludGVsX2xzcGNvbi5jICovCj4+PiAgIGJvb2wg bHNwY29uX2luaXQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpOwoK LS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBHcmFwaGljcyBDZW50ZXIKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs