From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sharma, Swati2" Subject: Re: [RFC] drm/i915: adding state checker for gamma lut values Date: Wed, 20 Mar 2019 16:14:19 +0530 Message-ID: <6b816617-af80-afdf-9379-b33367cece80@intel.com> References: <1552634188-7372-1-git-send-email-swati2.sharma@intel.com> <87o96ch3jm.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0C93A895C4 for ; Wed, 20 Mar 2019 10:44:24 +0000 (UTC) In-Reply-To: <87o96ch3jm.fsf@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Nikula, Jani" , "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 T24gMTUtTWFyLTE5IDM6MTcgUE0sIE5pa3VsYSwgSmFuaSB3cm90ZToKPiBPbiBGcmksIDE1IE1h ciAyMDE5LCBzd2F0aTIuc2hhcm1hQGludGVsLmNvbSB3cm90ZToKPj4gRnJvbTogU3dhdGkgU2hh cm1hIDxzd2F0aTIuc2hhcm1hQGludGVsLmNvbT4KPj4KPj4gQWRkZWQgc3RhdGUgY2hlY2tlciB0 byB2YWxpZGF0ZSBnYW1tYV9sdXQgdmFsdWVzLiBUaGlzCj4+IHJlYWRzIGhhcmR3YXJlIHN0YXRl LCBhbmQgY29tcGFyZXMgdGhlIG9yaWdpbmFsbHkgcmVxdWVzdGVkCj4+IHN0YXRlIHRvIHRoZSBz dGF0ZSByZWFkIGZyb20gaGFyZHdhcmUuCj4+Cj4+IFRoaXMgaW1wbGVtZW50YXRpb24gY2FuIGJl IHVzZWQgZm9yIEdlbjkrIHBsYXRmb3JtcywKPj4gSSBoYXZlbid0IGltcGxlbWVudGVkIGl0IGZv ciBsZWdhY3kgcGxhdGZvcm1zLiBKdXN0IHdhbnQgdG8gZ2V0Cj4+IGZlZWRiYWNrIGlmIHRoaXMg aXMgdGhlIHJpZ2h0IGFwcHJvYWNoIHRvIGZvbGxvdy4KPj4KPj4gQWxzbywgaW52ZXJzZSBmdW5j dGlvbiBvZiBkcm1fY29sb3JfbHV0X2V4dHJhY3QgaXMgbWlzc2luZwo+PiB0byBjb252ZXJ0IGhh cmR3YXJlIHJlYWQgdmFsdWVzIGJhY2sgdG8gdXNlciB2YWx1ZXMuCj4+IFRoaW5raW5nIGZvciB0 aGF0LiBJIGhhdmUgYWRkZWQgYWxsICJUT0RPcyIgYW5kICJQbGFjZWhvbGRlcnMiLgo+Pgo+PiBB bm90aGVyIGFwcHJvYWNoOgo+PiBTdG9yaW5nICJ3b3JkIiB0byBiZSB3cml0dGVuIGludG8gaGFy ZHdhcmUgaW4gZGV2X3ByaXYgYW5kCj4+IGluc3RlYWQgb2YgY29tcGFyaW5nIGJsb2IsIGNvbXBh cmluZyAid29yZCI/IEluIGRldl9wcml2LAo+PiBvbmx5IHBvaW50ZXIgd2lsbCBiZSB0aGVyZSAo c29tZXRoaW5nIGxpa2UgKmdhbW1hX3dvcmQpLgo+IFlvdSBjYW4ndCBzdG9yZSBpdCBpbiBkZXZf cHJpdiBiZWNhdXNlIGl0J3MgY3J0YyBzdGF0ZSBzcGVjaWZpYwo+IGRhdGEuIEV2ZW4gaWYgc3Rv cmVkIGluIGNydGMgc3RhdGUsIHRoZSBhcHByb2FjaCBkb2Vzbid0IGhlbHAgdGhlCj4gaW5pdGlh bCBodyBzdGF0ZSByZWFkb3V0IGFuZCB0YWtlb3Zlci4KPgo+IFBsZWFzZSB1c2UgaW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdCBmb3IgaTkxNSBwYXRjaGVzLgo+Cj4+IEZvciB0aGlzIHRvbywgSSB3aWxs IHNlbmQgYSBwYXRjaCB0byBtYWtlIGl0IG1vcmUgY2xlYXIuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6 IFN3YXRpIFNoYXJtYSA8c3dhdGkyLnNoYXJtYUBpbnRlbC5jb20+Cj4+IC0tLQo+PiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAgMSArCj4+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfY29sb3IuYyAgIHwgMTI3ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDUw ICsrKysrKysrKysrKysrCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAg IHwgICAxICsKPj4gICA0IGZpbGVzIGNoYW5nZWQsIDE3MyBpbnNlcnRpb25zKCspLCA2IGRlbGV0 aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gaW5kZXggYzRmZmUxOS4uYjQx YmZhYSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+IEBAIC0zMzQsNiArMzM0LDcg QEAgc3RydWN0IGRybV9pOTE1X2Rpc3BsYXlfZnVuY3Mgewo+PiAgIAkgKiBpbnZvbHZlZCB3aXRo IHRoZSBzYW1lIGNvbW1pdC4KPj4gICAJICovCj4+ICAgCXZvaWQgKCpsb2FkX2x1dHMpKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPj4gKwl2b2lkICgqZ2V0X2Nv bmZpZykoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+IFRoZSBuYW1lIGlz IHRvbyBnZW5lcmljLgo+Cj4+ICAgfTsKPj4gICAKPj4gICAjZGVmaW5lIENTUl9WRVJTSU9OKG1h am9yLCBtaW5vcikJKChtYWpvcikgPDwgMTYgfCAobWlub3IpKQo+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2NvbG9yLmMKPj4gaW5kZXggZGE3YTA3ZC4uYTUxNWU5ZiAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9jb2xvci5jCj4+IEBAIC03NCw2ICs3NCwxMSBAQAo+PiAgICNkZWZpbmUgSUxL X0NTQ19DT0VGRl8xXzAJCVwKPj4gICAJKCg3IDw8IDEyKSB8IElMS19DU0NfQ09FRkZfRlAoQ1RN X0NPRUZGXzFfMCwgOCkpCj4+ICAgCj4+ICsvKiBNYXNrIHRvIGV4dHJhY3QgUkdCIHZhbHVlcyBm cm9tIHJlZ2lzdGVycyAqLwo+PiArI2RlZmluZSBDT0xPUl9CTFVFX01BU0sgICAgICAgICAweDAw MDAwM0ZGICAgICAgICAgICAgICAvKiA5OjAgKi8KPj4gKyNkZWZpbmUgQ09MT1JfR1JFRU5fTUFT SyAgICAgICAgMHgwMDBGRkMwMCAgICAgICAgICAgICAgLyogMTk6MTAgKi8KPj4gKyNkZWZpbmUg Q09MT1JfUkVEX01BU0sgICAgICAgICAgMHgzRkYwMDAwMCAgICAgICAgICAgICAgLyogMjk6MjAg Ki8KPiBUaGVzZSBiZWxvbmcgaW4gaTkxNV9yZWcuaCwgYW5kIHlvdSBuZWVkIHBsYXRmb3JtIHNw ZWNpZmljIHNoaWZ0cyBhbmQKPiBtYXNrcy4gVGhlIGNvZGUgdGhhdCB3cml0ZXMgdGhlIHJlZ2lz dGVycyBzZWVtcyB0byB1c2UgbWFnaWMgbnVtYmVycy4uLgo+Cj4+ICsKPj4gICBzdGF0aWMgYm9v bCBsdXRfaXNfbGVnYWN5KGNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqbHV0KQo+PiAg IHsKPj4gICAJcmV0dXJuIGRybV9jb2xvcl9sdXRfc2l6ZShsdXQpID09IExFR0FDWV9MVVRfTEVO R1RIOwo+PiBAQCAtNjcyLDYgKzY3Nyw5NyBAQCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X2xvYWRf bHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPj4gICAJaTl4 eF9sb2FkX2x1dHNfaW50ZXJuYWwoY3J0Y19zdGF0ZSwgTlVMTCk7Cj4+ICAgfQo+PiAgIAo+PiAr c3RhdGljIHZvaWQgYmR3X2dldF9nYW1tYV9jb25maWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsIHUzMiBvZmZzZXQpCj4+ICt7Cj4+ICsJc3RydWN0IGludGVsX2NydGMgKmNy dGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4+ICsJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+PiArCXUzMiBpLCB0bXAs IGx1dF9zaXplID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPmNvbG9yLmdhbW1hX2x1dF9zaXplOwo+ PiArCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5 X2Jsb2IgKmJsb2IgPSBOVUxMOwo+PiArCXN0cnVjdCBkcm1fY29sb3JfbHV0ICpibG9iX2RhdGE7 Cj4+ICsKPj4gKwlXQVJOX09OKG9mZnNldCAmIH5QQUxfUFJFQ19JTkRFWF9WQUxVRV9NQVNLKTsK Pj4gKwo+PiArCUk5MTVfV1JJVEUoUFJFQ19QQUxfSU5ERVgocGlwZSksCj4+ICsJCQkob2Zmc2V0 ID8gUEFMX1BSRUNfU1BMSVRfTU9ERSA6IDApIHwKPj4gKwkJCVBBTF9QUkVDX0FVVE9fSU5DUkVN RU5UIHwKPj4gKwkJCW9mZnNldCk7Cj4+ICsKPj4gKwlibG9iID0gZHJtX3Byb3BlcnR5X2NyZWF0 ZV9ibG9iKGRldiwKPj4gKwkJCXNpemVvZihzdHJ1Y3QgZHJtX2NvbG9yX2x1dCkgKiBsdXRfc2l6 ZSwKPj4gKwkJCU5VTEwpOwo+PiArCWlmIChJU19FUlIoYmxvYikpCj4+ICsJCXJldHVybjsKPj4g Kwo+PiArCWJsb2JfZGF0YSA9IGJsb2ItPmRhdGE7Cj4+ICsKPj4gKwlmb3IgKGkgPSAwOyBpIDwg bHV0X3NpemU7IGkrKykgewo+PiArCQl0bXAgPSBJOTE1X1JFQUQoUFJFQ19QQUxfREFUQShwaXBl KSk7Cj4+ICsJCS8qCj4+ICsJCSAqIFRPRE86IGNvbnZlcnQgUkdCIHZhbHVlIHJlYWQgZnJvbSBy ZWdpc3RlciBpbnRvIGNvcnJlc3BvbmRpbmcgdXNlciB2YWx1ZSB1c2luZwo+PiArCQkgKiBzb21l IHdyYXBwZXIgbGlrZSBkcm1fY29sb3JfbHV0X3B1dCgpIChvcikgaW50ZWxfY29sb3JfbHV0X3B1 dCgpIHNvIHRoYXQgaXQKPj4gKwkJICogY2FuIGJlIGNvbXBhcmVkIGxhdGVyLgo+PiArCQkgKi8K PiBZZWFoLCB5b3UnbGwgbmVlZCB0aGlzLgpDYW4geW91IHBsZWFzZSBoZWxwIGluIHRoaXM/Cj4K Pj4gKwkJYmxvYl9kYXRhW2ldLnJlZCA9ICh0bXAgJiBDT0xPUl9SRURfTUFTSykgPj4gMjA7Cj4+ ICsJCWJsb2JfZGF0YVtpXS5ncmVlbiA9ICh0bXAgJiBDT0xPUl9HUkVFTl9NQVNLKSA+PiAxMDsK Pj4gKwkJYmxvYl9kYXRhW2ldLmJsdWUgPSB0bXAgJiBDT0xPUl9CTFVFX01BU0s7Cj4+ICsJfQo+ PiArCj4+ICsJSTkxNV9XUklURShQUkVDX1BBTF9JTkRFWChwaXBlKSwgMCk7Cj4+ICsKPj4gKwlj cnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCA9IGJsb2I7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2 b2lkIGk5eHhfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkK PiBQbGVhc2UgaW5jbHVkZSAoZGUpZ2FtbWEgb3IgY29sb3IgaW4gdGhlIGZ1bmN0aW9uIG5hbWVz Lgo+Cj4+ICt7Cj4+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNy dGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMt PmJhc2UuZGV2Owo+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY3J0Yy0+YmFzZS5kZXYpOwo+PiArCXUzMiBpLCB0bXA7Cj4+ICsJZW51bSBwaXBlIHBpcGUg PSBjcnRjLT5waXBlOwo+PiArCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYiA9IE5VTEw7 Cj4+ICsJc3RydWN0IGRybV9jb2xvcl9sdXQgKmJsb2JfZGF0YTsKPj4gKwo+PiArCWJsb2IgPSBk cm1fcHJvcGVydHlfY3JlYXRlX2Jsb2IoZGV2LAo+PiArCQkJCQlzaXplb2Yoc3RydWN0IGRybV9j b2xvcl9sdXQpICogMjU2LAo+PiArCQkJCQlOVUxMKTsKPj4gKwlpZiAoSVNfRVJSKGJsb2IpKQo+ PiArCQlyZXR1cm47Cj4+ICsKPj4gKwlibG9iX2RhdGEgPSBibG9iLT5kYXRhOwo+PiArCj4+ICsJ Zm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7Cj4+ICsJCWlmIChIQVNfR01DSChkZXZfcHJpdikp Cj4+ICsJCQl0bXAgPSBJOTE1X1JFQUQoUEFMRVRURShwaXBlLCBpKSk7Cj4+ICsJCWVsc2UKPj4g KwkJCXRtcCA9IEk5MTVfUkVBRChMR0NfUEFMRVRURShwaXBlLCBpKSk7Cj4+ICsJCS8qCj4+ICsJ CSAqIFRPRE86IGNvbnZlcnQgUkdCIHZhbHVlIHJlYWQgZnJvbSByZWdpc3RlciBpbnRvIGNvcnJl c3BvbmRpbmcgdXNlciB2YWx1ZSB1c2luZwo+PiArCQkgKiBzb21lIHdyYXBwZXIgbGlrZSBkcm1f Y29sb3JfbHV0X3B1dCgpIChvcikgaW50ZWxfY29sb3JfbHV0X3B1dCgpIHNvIHRoYXQgaXQKPj4g KwkJICogY2FuIGJlIGNvbXBhcmVkIGxhdGVyLgo+PiArCQkgKi8KPj4gKwkJYmxvYl9kYXRhW2ld LnJlZCA9ICh0bXAgJiBDT0xPUl9SRURfTUFTSykgPj4gMjA7Cj4+ICsJCWJsb2JfZGF0YVtpXS5n cmVlbiA9ICh0bXAgJiBDT0xPUl9HUkVFTl9NQVNLKSA+PiAxMDsKPj4gKwkJYmxvYl9kYXRhW2ld LmJsdWUgPSAodG1wICYgQ09MT1JfQkxVRV9NQVNLKTsKPj4gKwl9Cj4+ICsKPj4gKwljcnRjX3N0 YXRlLT5iYXNlLmdhbW1hX2x1dCA9IGJsb2I7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGlj bF9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+PiArewo+ PiArCS8qCj4+ICsJICogVE9ETzogcGxhY2Vob2xkZXIgZm9yIGRlZ2FtbWEgdmFsaWRhdGlvbgo+ PiArCSAqIGdsa19nZXRfZGVnYW1tYV9jb25maWcoY3J0Y19zdGF0ZSwgMCk7Cj4+ICsJICovCj4+ ICsKPj4gKwlpZiAoY3J0Y19zdGF0ZV9pc19sZWdhY3lfZ2FtbWEoY3J0Y19zdGF0ZSkpCj4+ICsJ CWk5eHhfZ2V0X2NvbmZpZyhjcnRjX3N0YXRlKTsKPj4gKwllbHNlCj4+ICsJCWJkd19nZXRfZ2Ft bWFfY29uZmlnKGNydGNfc3RhdGUsIDApOwo+PiArfQo+PiArCj4+ICAgdm9pZCBpbnRlbF9jb2xv cl9sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4+ ICAgewo+PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNy dGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPj4gQEAgLTY3OSw2ICs3NzUsMTMgQEAgdm9pZCBp bnRlbF9jb2xvcl9sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUpCj4+ICAgCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyhjcnRjX3N0YXRlKTsKPj4g ICB9Cj4+ICAgCj4+ICt2b2lkIGludGVsX2NvbG9yX2dldF9jb25maWcoc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCj4+ICt7Cj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4+ICsKPj4g KwlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY29uZmlnKGNydGNfc3RhdGUpOwo+IFRoaXMgd2lsbCBv b3BzIG9uIHBsYXRmb3JtcyB3aGVyZSB5b3UgaGF2ZW4ndCBpbXBsZW1lbnRlZCBpdCB5ZXQuCj4K Pj4gK30KPj4gKwo+PiAgIHZvaWQgaW50ZWxfY29sb3JfY29tbWl0KGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+PiAgIHsKPj4gICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4+ IEBAIC04MzMsMjIgKzkzNiwzNCBAQCB2b2lkIGludGVsX2NvbG9yX2luaXQoc3RydWN0IGludGVs X2NydGMgKmNydGMpCj4+ICAgCj4+ICAgCWRybV9tb2RlX2NydGNfc2V0X2dhbW1hX3NpemUoJmNy dGMtPmJhc2UsIDI1Nik7Cj4+ICAgCj4+ICsJLyoKPj4gKwkgKiBUT0RPOiBJbiB0aGUgZm9sbG93 aW5nIGlmIGxhZGRlciwga2VwdCBwbGFjZWhvbGRlcnMKPj4gKwkgKiBmb3IgZXh0ZW5kaW5nIGx1 dCB2YWxpZGF0aW9uIGZvciBsZWdhY3kgcGxhdGZvcm1zLgo+PiArCSAqLwo+IEkgdGhpbmsgYWRk aW5nIHRoZSBwbGFjZWhvbGRlciBjb21tZW50cyBpcyB0b28gbWVzc3kuCj4KPj4gICAJaWYgKEhB U19HTUNIKGRldl9wcml2KSkgewo+PiAtCQlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4+ ICsJCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewo+PiAgIAkJCWRldl9wcml2LT5kaXNw bGF5LmxvYWRfbHV0cyA9IGNoZXJyeXZpZXdfbG9hZF9sdXRzOwo+PiAtCQllbHNlCj4+ICsJCQkg LyogZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NvbmZpZyA9IGNoZXJyeXZpZXdfZ2V0X2NvbmZpZzsg Ki8KPj4gKwkJfSBlbHNlIHsKPj4gICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMgPSBp OXh4X2xvYWRfbHV0czsKPj4gKwkJCWRldl9wcml2LT5kaXNwbGF5LmdldF9jb25maWcgPSBpOXh4 X2dldF9jb25maWc7Cj4+ICsJCX0KPj4gICAKPj4gICAJCWRldl9wcml2LT5kaXNwbGF5LmNvbG9y X2NvbW1pdCA9IGk5eHhfY29sb3JfY29tbWl0Owo+PiAgIAl9IGVsc2Ugewo+PiAtCQlpZiAoSVNf SUNFTEFLRShkZXZfcHJpdikpCj4+ICsJCWlmIChJU19JQ0VMQUtFKGRldl9wcml2KSkgewo+PiAg IAkJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGljbF9sb2FkX2x1dHM7Cj4+IC0JCWVs c2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYp KQo+PiArCQkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NvbmZpZyA9IGljbF9nZXRfY29uZmlnOwo+ PiArCQl9IGVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpIHx8IElTX0dFTUlOSUxBS0Uo ZGV2X3ByaXYpKSB7Cj4+ICAgCQkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gZ2xrX2xv YWRfbHV0czsKPj4gLQkJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5IHx8IElTX0JS T0FEV0VMTChkZXZfcHJpdikpCj4+ICsJCQkvKiBkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY29uZmln ID0gZ2xrX2dldF9jb25maWc7ICovCj4+ICsJCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA5IHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKPj4gICAJCQlkZXZfcHJpdi0+ZGlz cGxheS5sb2FkX2x1dHMgPSBicm9hZHdlbGxfbG9hZF9sdXRzOwo+PiAtCQllbHNlCj4+ICsJCQkv KiBkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY29uZmlnID0gYnJvYWR3ZWxsX2dldF9jb25maWc7ICov Cj4+ICsJCX0gZWxzZSB7Cj4+ICAgCQkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gaTl4 eF9sb2FkX2x1dHM7Cj4+ICsJCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY29uZmlnID0gaTl4eF9n ZXRfY29uZmlnOwo+PiArCQl9Cj4+ICAgCj4+ICAgCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA5KQo+PiAgIAkJCWRldl9wcml2LT5kaXNwbGF5LmNvbG9yX2NvbW1pdCA9IHNrbF9jb2xvcl9j b21taXQ7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gaW5kZXggOTYzYjRi ZC4uMTY1ZDc5NyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+PiBA QCAtODIxMiw2ICs4MjEyLDExIEBAIHN0YXRpYyBib29sIGk5eHhfZ2V0X3BpcGVfY29uZmlnKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+PiAgIAo+PiAgIAlpOXh4X2dldF9waXBlX2NvbG9yX2Nv bmZpZyhwaXBlX2NvbmZpZyk7Cj4+ICAgCj4+ICsJLyoKPj4gKwkgKiBUT0RPOiBZZXQgdG8gaW1w bGVtZW50IGZvciBsZWdhY3kgcGxhdGZvcm1zCj4+ICsJICogaW50ZWxfY29sb3JfZ2V0X2NvbmZp ZyhwaXBlX2NvbmZpZyk7Cj4+ICsJICovCj4+ICsKPiBJJ20gbm90IHN1cmUgYWJvdXQgYWRkaW5n IHRoZXNlIGNvbW1lbnRzIGVpdGhlci4KPgo+PiAgIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8 IDQpCj4+ICAgCQlwaXBlX2NvbmZpZy0+ZG91YmxlX3dpZGUgPSB0bXAgJiBQSVBFQ09ORl9ET1VC TEVfV0lERTsKPj4gICAKPj4gQEAgLTkyODQsNiArOTI4OSwxMSBAQCBzdGF0aWMgYm9vbCBpcm9u bGFrZV9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4+ICAgCj4+ICAg CWk5eHhfZ2V0X3BpcGVfY29sb3JfY29uZmlnKHBpcGVfY29uZmlnKTsKPj4gICAKPj4gKwkvKgo+ PiArCSAqIFRPRE86IFlldCB0byBpbXBsZW1lbnQgZm9yIGxlZ2FjeSBwbGF0Zm9ybXMKPj4gKwkg KiBpbnRlbF9jb2xvcl9nZXRfY29uZmlnKHBpcGVfY29uZmlnKTsKPj4gKwkgKi8KPj4gKwo+PiAg IAlpZiAoSTkxNV9SRUFEKFBDSF9UUkFOU0NPTkYoY3J0Yy0+cGlwZSkpICYgVFJBTlNfRU5BQkxF KSB7Cj4+ICAgCQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbDsKPj4gICAJCWVudW0gaW50 ZWxfZHBsbF9pZCBwbGxfaWQ7Cj4+IEBAIC05OTMyLDYgKzk5NDIsOCBAQCBzdGF0aWMgYm9vbCBo YXN3ZWxsX2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPj4gICAJCWk5 eHhfZ2V0X3BpcGVfY29sb3JfY29uZmlnKHBpcGVfY29uZmlnKTsKPj4gICAJfQo+PiAgIAo+PiAr CWludGVsX2NvbG9yX2dldF9jb25maWcocGlwZV9jb25maWcpOwo+PiArCj4+ICAgCXBvd2VyX2Rv bWFpbiA9IFBPV0VSX0RPTUFJTl9QSVBFX1BBTkVMX0ZJVFRFUihjcnRjLT5waXBlKTsKPj4gICAJ aWYgKGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3ByaXYsIHBvd2VyX2Rv bWFpbikpIHsKPj4gICAJCVdBUk5fT04ocG93ZXJfZG9tYWluX21hc2sgJiBCSVRfVUxMKHBvd2Vy X2RvbWFpbikpOwo+PiBAQCAtMTE5OTAsNiArMTIwMDIsMzQgQEAgc3RhdGljIGJvb2wgZmFzdGJv b3RfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgCXJldHVy biBmYWxzZTsKPj4gICB9Cj4+ICAgCj4+ICtzdGF0aWMgYm9vbCBpbnRlbF9jb21wYXJlX2Jsb2Io c3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iMSwKPj4gKwkJCSAgICAgICBzdHJ1Y3QgZHJt X3Byb3BlcnR5X2Jsb2IgKmJsb2IyKQo+PiArewo+PiArCXN0cnVjdCBkcm1fY29sb3JfbHV0ICpz d19sdXQgPSBibG9iMS0+ZGF0YTsKPj4gKwlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqaHdfbHV0ID0g YmxvYjItPmRhdGE7Cj4+ICsJaW50IHN3X2x1dF9zaXplLCBod19sdXRfc2l6ZTsKPj4gKwlpbnQg aTsKPj4gKwo+PiArCXN3X2x1dF9zaXplID0gZHJtX2NvbG9yX2x1dF9zaXplKGJsb2IxKTsKPj4g Kwlod19sdXRfc2l6ZSA9IGRybV9jb2xvcl9sdXRfc2l6ZShibG9iMik7Cj4+ICsKPj4gKwlpZiAo c3dfbHV0X3NpemUgIT0gaHdfbHV0X3NpemUpIHsKPj4gKwkJRFJNX0RFQlVHX0tNUygiSW52YWxp ZCBMVVQgc2l6ZTsgZ290ICVkLCBleHBlY3RlZCAlZFxuIiwgaHdfbHV0X3NpemUsIHN3X2x1dF9z aXplKTsKPiBQbGVhc2UgZG9uJ3QgYWRkIHRoZXNlIGRlYnVnIGxvZ3MgaGVyZS4gSW5zdGVhZCwg YWRkIGEgc2VwYXJhdGUgZnVuY3Rpb24KPiB0byBsb2cgZXJyb3JzIGF0IHRoZSBoaWdoZXIgbGV2 ZWwuIENvbnRyYXN0IFBJUEVfQ09ORl9DSEVDS19JTkZPRlJBTUUoKQo+IGFuZCBwaXBlX2NvbmZp Z19pbmZvZnJhbWVfZXJyKCkuIFRoYXQgY2FuIGNvbWUgYXMgYSBmb2xsb3ctdXAKPiBpbXByb3Zl bWVudCwgYnV0IHRoZSBkZWJ1ZyBsb2dzIGhlcmUgYXJlIHVubmVjZXNzYXJ5Lgo+Cj4+ICsJCXJl dHVybiBmYWxzZTsKPj4gKwl9Cj4+ICsKPj4gKwlmb3IgKGkgPSAwOyBpIDwgc3dfbHV0X3NpemU7 IGkrKykgewo+PiArCQlpZiAoaHdfbHV0W2ldLnJlZCAhPSBzd19sdXRbaV0ucmVkIHx8Cj4+ICsJ CSAgICBod19sdXRbaV0uYmx1ZSAhPSBzd19sdXRbaV0uYmx1ZSB8fAo+PiArCQkgICAgaHdfbHV0 W2ldLmdyZWVuICE9IHN3X2x1dFtpXS5ncmVlbikgewo+PiArCQkJRFJNX0RFQlVHX0tNUygiSW52 YWxpZCBMVVQgdmFsdWU7IHN3X2x1dCB2YWx1ZSBkb2Vzbid0IG1hdGNoIGh3X2x1dCB2YWx1ZVxu Iik7Cj4+ICsJCQlyZXR1cm4gZmFsc2U7Cj4+ICsJCX0KPj4gKwl9Cj4+ICsKPj4gKwlyZXR1cm4g dHJ1ZTsKPj4gK30KPj4gKwo+IEknZCBwdXQgdGhpcyBpbiBpbnRlbF9jb2xvci5jIGFuZCBuYW1l IGl0IHByb3Blcmx5LiBZb3UgY2FuJ3QgdXNlIGl0IHRvCj4gY29tcGFyZSByYW5kb20gYmxvYnMs IGFuZCB0aGUgY29tcGFyaXNvbiBuZWVkcyB0byB0YWtlIHBsYXRmb3JtIHNwZWNpZmljCj4gYml0 IHByZWNpc2lvbiBvZiB0aGUgcmVhZG91dCBpbnRvIGFjY291bnQuCj4KPiBUaGUgYmxvYnMgbWF5 IGJlIE5VTEwuCj4KPj4gICBzdGF0aWMgYm9vbAo+PiAgIGludGVsX3BpcGVfY29uZmlnX2NvbXBh cmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgIAkJCSAgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmN1cnJlbnRfY29uZmlnLAo+PiBAQCAtMTIxNDgsNiArMTIxODgsMTQg QEAgc3RhdGljIGJvb2wgZmFzdGJvb3RfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4+ICAgCX0gXAo+PiAgIH0gd2hpbGUgKDApCj4+ICAgCj4+ICsjZGVmaW5lIFBJ UEVfQ09ORl9DSEVDS19CTE9CKG5hbWUpIGRvIHsgXAo+IENIRUNLX0xVVCBvciBDSEVDS19DT0xP Ul9MVVQgb3Igc29tZXRoaW5nLCBub3QganVzdCBDSEVDS19CTE9CLgo+Cj4+ICsJaWYgKCFpbnRl bF9jb21wYXJlX2Jsb2IoY3VycmVudF9jb25maWctPm5hbWUsIHBpcGVfY29uZmlnLT5uYW1lKSkg eyBcCj4+ICsJCXBpcGVfY29uZmlnX2VycihhZGp1c3QsIF9fc3RyaW5naWZ5KG5hbWUpLCBcCj4+ ICsJCQkJImh3X3N0YXRlIGRvZXNuJ3QgbWF0Y2ggc3dfc3RhdGVcbiIpOyBcCj4+ICsJCXJldCA9 IGZhbHNlOyBcCj4+ICsJfSBcCj4+ICt9IHdoaWxlICgwKQo+PiArCj4+ICAgI2RlZmluZSBQSVBF X0NPTkZfUVVJUksocXVpcmspIFwKPj4gICAJKChjdXJyZW50X2NvbmZpZy0+cXVpcmtzIHwgcGlw ZV9jb25maWctPnF1aXJrcykgJiAocXVpcmspKQo+PiAgIAo+PiBAQCAtMTIyODcsNiArMTIzMzUs OCBAQCBzdGF0aWMgYm9vbCBmYXN0Ym9vdF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPj4gICAJUElQRV9DT05GX0NIRUNLX0lORk9GUkFNRShzcGQpOwo+PiAgIAlQ SVBFX0NPTkZfQ0hFQ0tfSU5GT0ZSQU1FKGhkbWkpOwo+PiAgIAo+PiArCVBJUEVfQ09ORl9DSEVD S19CTE9CKGJhc2UuZ2FtbWFfbHV0KTsKPj4gKwo+PiAgICN1bmRlZiBQSVBFX0NPTkZfQ0hFQ0tf WAo+PiAgICN1bmRlZiBQSVBFX0NPTkZfQ0hFQ0tfSQo+PiAgICN1bmRlZiBQSVBFX0NPTkZfQ0hF Q0tfQk9PTAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBpbmRleCA0MGViYzk0Li5hNmFj ZDliIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBAQCAtMjUxMiw2ICsyNTEy LDcgQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jaGVja193aXRoX3N0YXRlKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y18KPj4gICBpbnQgaW50ZWxfY29sb3JfY2hlY2so c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+PiAgIHZvaWQgaW50ZWxfY29s b3JfY29tbWl0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPj4g ICB2b2lkIGludGVsX2NvbG9yX2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSk7Cj4+ICt2b2lkIGludGVsX2NvbG9yX2dldF9jb25maWcoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+PiAgIAo+PiAgIC8qIGludGVsX2xzcGNvbi5j ICovCj4+ICAgYm9vbCBsc3Bjb25faW5pdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRl bF9kaWdfcG9ydCk7CgoKLS0gCn5Td2F0aSBTaGFybWEKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==