From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sharma, Shashank" Subject: Re: [PATCH v3 4/4] drm/i915/icl: Add Multi-segmented gamma support Date: Wed, 8 May 2019 18:35:40 +0530 Message-ID: <8ff6a780-2181-ae03-0320-cac1720b7e2b@intel.com> References: <20190507135644.23882-1-shashank.sharma@intel.com> <20190507135644.23882-5-shashank.sharma@intel.com> <20190507142750.GP24299@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id DD4D189402 for ; Wed, 8 May 2019 13:05:46 +0000 (UTC) In-Reply-To: <20190507142750.GP24299@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gNS83LzIwMTkgNzo1NyBQTSwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+IE9uIFR1ZSwgTWF5 IDA3LCAyMDE5IGF0IDA3OjI2OjQ0UE0gKzA1MzAsIFNoYXNoYW5rIFNoYXJtYSB3cm90ZToKPj4g SUNMIGludHJvZHVjZXMgYSBuZXcgZ2FtbWEgY29ycmVjdGlvbiBtb2RlIGluIGRpc3BsYXkgZW5n aW5lLCBjYWxsZWQKPj4gbXVsdGktc2VnbWVudGVkLWdhbW1hIG1vZGUuIFRoaXMgbW9kZSBhbGxv d3MgdXNlcnMgdG8gcHJvZ3JhbSB0aGUKPj4gZGFya2VyIHJlZ2lvbiBvZiB0aGUgZ2FtbWEgY3Vy dmUgd2l0aCBzdWVwcmZpbmUgcHJlY2lzaW9uLiBBbgo+PiBleGFtcGxlIHVzZSBjYXNlIGZvciB0 aGlzIGlzIEhEUiBjdXJ2ZXMgKGxpa2UgUFEgU1QtMjA4NCkuCj4+Cj4+IElmIHdlIHBsb3QgYSBn YW1tYSBjb3JyZWN0aW9uIGN1cnZlIGZyb20gdmFsdWUgcmFuZ2UgYmV0d2VlbiAwLjAgdG8gMS4w LAo+PiBJQ0wncyBtdWx0aS1zZWdtZW50IGhhcyAzIGRpZmZlcmVudCBzZWN0aW9uczoKPj4gLSBz dXBlcmZpbmUgc2VnbWVudDogOSB2YWx1ZXMsIHJhbmdlcyBiZXR3ZWVuIDAgLSAxLygxMjggKiAy NTYpCj4+IC0gZmluZSBzZWdtZW50OiAyNTcgdmFsdWVzLCByYW5nZXMgYmV0d2VlbiAwIC0gMS8o MTI4KQo+PiAtIGNvcmFzZSBzZWdtZW50OiAyNTcgdmFsdWVzLCByYW5nZXMgYmV0d2VlbiAwIC0g MQo+Pgo+PiBUaGlzIHBhdGNoOgo+PiAtIENoYW5nZXMgZ2FtbWEgTFVUcyBzaXplIGZvciBJQ0wv R0VOMTEgdG8gMjYyMTQ0IGVudHJpZXMgKDggKiAxMjggKiAyNTYpLAo+PiAgICBzbyB0aGF0IHVz ZXJzcGFjZSBjYW4gcHJvZ3JhbSB3aXRoIGhpZ2hlc3QgcHJlY2lzaW9uIHN1cHBvcnRlZC4KPj4g LSBDaGFuZ2VzIGRlZmF1bHQgZ2FtbWEgbW9kZSAobm9uLWxlZ2FjeSkgdG8gbXVsdGktc2VnbWVu dGVkLWdhbW1hIG1vZGUuCj4+IC0gQWRkcyBmdW5jdGlvbnMgdG8gcHJvZ3JhbS9kZXRlY3QgbXVs dGktc2VnbWVudCBnYW1tYS4KPj4KPj4gVjI6IEFkZHJlc3NlZCByZXZpZXcgY29tbWVudHMgZnJv bSBWaWxsZQo+PiAgICAgIC0gc2VwYXJhdGUgZnVuY3Rpb24gZm9yIHN1cGVyZmluZSBhbmQgZmlu ZSBzZWdtZW50cy4KPj4gICAgICAtIHJlbW92ZSBlbnVtIGZvciBzZWdtZW50cy4KPj4gICAgICAt IHJldXNlIGxhc3QgZW50cnkgb2YgdGhlIExVVCBhcyBnY19tYXggdmFsdWUuCj4+ICAgICAgLSBy ZXBsYWNlIGlmKCkgLi4uLmNvbmQgd2l0aCBzd2l0Y2guLi5jYXNlIGluIGljbF9sb2FkX2x1dHMu Cj4+ICAgICAgLSBhZGQgYW4gZW50cnkgdmFyaWFibGUsIGluc3RlYWQgb2YgJ3dvcmQnCj4+Cj4+ IFYzOiBBZGRyZXNzZWQgcmV2aWV3IGNvbW1lbnRzIGZyb20gVmlsbGUKPj4gICAgICAtIGV4dHJh IG5ld2xpbmUKPj4gICAgICAtIHMvZW50cnkvY29sb3IvCj4+ICAgICAgLSByZW1vdmUgTFVUIHNp emUgY2hlY2tzCj4+ICAgICAgLSBwcm9ncmFtIGlsa19sdXRfMTJwNF9sZHcgdmFsdWUgYmVmb3Jl IGlsa19sdXRfMTJwNF91ZHcKPj4gICAgICAtIENoYW5nZSB0aGUgY29tbWVudHMgaW4gZGVzY3Jp cHRpb24gb2YgZmluZSBhbmQgY29hcnNlIHNlZ21lbnRzLAo+PiAgICAgICAgYW5kIHRyeSB0byBt YWtlIG1vcmUgc2Vuc2UuCj4+ICAgICAgLSB1c2UgOCAqIDEyOCBpbnN0ZWFkIG9mIDEwMjQKPj4g ICAgICAtIGFkZCAxIGVudHJ5IGluIExVVCBmb3IgR0NNQVgKPj4KPj4gQ2M6IFZpbGxlIFN5cmrD pGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4+IENjOiBNYWFydGVuIExhbmto b3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+PiBDYzogRGFuaWVsIFZl dHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPj4KPj4gU3VnZ2VzdGVkLWJ5OiBWaWxsZSBT eXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+PiBTaWduZWQtb2ZmLWJ5 OiBTaGFzaGFuayBTaGFybWEgPHNoYXNoYW5rLnNoYXJtYUBpbnRlbC5jb20+Cj4+IFNpZ25lZC1v ZmYtYnk6IFVtYSBTaGFua2FyIDx1bWEuc2hhbmthckBpbnRlbC5jb20+Cj4+IC0tLQo+PiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMgICAgfCAgIDIgKy0KPj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jIHwgMTI3ICsrKysrKysrKysrKysrKysrKysrKysrKysr KystCj4+ICAgMiBmaWxlcyBjaGFuZ2VkLCAxMjQgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMo LSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jCj4+IGluZGV4IGZmYTJlZTcwYTAzZC4uMmY5 OWI1ODVkNDRiIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5j Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKPj4gQEAgLTc0OSw3ICs3 NDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX2Nhbm5v bmxha2VfaW5mbyA9IHsKPj4gICAJR0VOKDExKSwgXAo+PiAgIAkuZGRiX3NpemUgPSAyMDQ4LCBc Cj4+ICAgCS5oYXNfbG9naWNhbF9yaW5nX2Vsc3EgPSAxLCBcCj4+IC0JLmNvbG9yID0geyAuZGVn YW1tYV9sdXRfc2l6ZSA9IDMzLCAuZ2FtbWFfbHV0X3NpemUgPSAxMDI0IH0KPj4gKwkuY29sb3Ig PSB7IC5kZWdhbW1hX2x1dF9zaXplID0gMzMsIC5nYW1tYV9sdXRfc2l6ZSA9IDI2MjE0NSB9Cj4+ ICAgCj4+ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9pY2Vs YWtlXzExX2luZm8gPSB7Cj4+ICAgCUdFTjExX0ZFQVRVUkVTLAo+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2NvbG9yLmMKPj4gaW5kZXggNmMzNDFiZWE1MTRjLi5jMWE5NTA2ZmQwNjkgMTAwNjQ0Cj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMKPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwo+PiBAQCAtNDEsNiArNDEsOCBAQAo+PiAgICNk ZWZpbmUgQ1RNX0NPRUZGX0FCUyhjb2VmZikJCSgoY29lZmYpICYgKENUTV9DT0VGRl9TSUdOIC0g MSkpCj4+ICAgCj4+ICAgI2RlZmluZSBMRUdBQ1lfTFVUX0xFTkdUSAkJMjU2Cj4+ICsjZGVmaW5l IElDTF9HQU1NQV9NVUxUSVNFR19MVVRfTEVOR1RICQkoMjU2ICogMTI4ICogOCkKPiBVbnVzZWQu CkdvdCBpdAo+PiArCj4+ICAgLyoKPj4gICAgKiBFeHRyYWN0IHRoZSBDU0MgY29lZmZpY2llbnQg ZnJvbSBhIENUTSBjb2VmZmljaWVudCAoaW4gVTMyLjMyIGZpeGVkIHBvaW50Cj4+ICAgICogZm9y bWF0KS4gVGhpcyBtYWNybyB0YWtlcyB0aGUgY29lZmZpY2llbnQgd2Ugd2FudCB0cmFuc2Zvcm1l ZCBhbmQgdGhlCj4+IEBAIC03NjcsNiArNzY5LDExNiBAQCBzdGF0aWMgdm9pZCBnbGtfbG9hZF9s dXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+PiAgIAl9Cj4+ ICAgfQo+PiAgIAo+PiArLyogaWxrKyAiMTIuNCIgaW50ZXJwb2xhdGVkIGZvcm1hdCAoaGlnaCAx MCBiaXRzKSAqLwo+PiArc3RhdGljIHUzMiBpbGtfbHV0XzEycDRfbGR3KGNvbnN0IHN0cnVjdCBk cm1fY29sb3JfbHV0ICpjb2xvcikKPj4gK3sKPj4gKwlyZXR1cm4gKGNvbG9yLT5yZWQgPj4gNikg PDwgMjAgfCAoY29sb3ItPmdyZWVuID4+IDYpIDw8IDEwIHwKPj4gKwkJKGNvbG9yLT5ibHVlID4+ IDYpOwo+PiArfQo+PiArCj4+ICsvKiBpbGsrICIxMi40IiBpbnRlcnBvbGF0ZWQgZm9ybWF0IChs b3cgNiBiaXRzKSAqLwo+PiArc3RhdGljIHUzMiBpbGtfbHV0XzEycDRfdWR3KGNvbnN0IHN0cnVj dCBkcm1fY29sb3JfbHV0ICpjb2xvcikKPj4gK3sKPj4gKwlyZXR1cm4gKGNvbG9yLT5yZWQgJiAw eDNmKSA8PCAyNCB8IChjb2xvci0+Z3JlZW4gJiAweDNmKSA8PCAxNCB8Cj4+ICsJCShjb2xvci0+ Ymx1ZSAmIDB4M2YpOwo+IEJsdWUgaXMgbWlzc2luZyB0aGUgc2hpZnQuCk9rLAo+IEknbSBub3Qg MTAwJSBzdXJlIGlmIHRoZSBsZHcgdnMuIHVkdyBhcmUgdGhlIHJpZ2h0IHdheSBhcm91bmQuIFRo ZSBzcGVjCj4gaGFzIGF0IHRpbWVzIGJlZW4gaW5jb25zaXN0ZW50IHdpdGggdGhlIG9kZCB2cy4g ZXZlbiBkZXNjcmlwdGlvbnMsCj4gc29tZXRpbWVzIGV2ZW4gY29udHJhZGljdGluZyBpdHNlbGYu IEFsc28gaXQgbmV2ZXIgcmVhbGx5IGRlZmluZXMKPiB3aGV0aGVyIGl0IHN0YXJ0cyBjb3VudGlu ZyBkd29yZHMgZnJvbSBmcm9tIDAgb3IgMSwgc28gbm90IHN1cmUgd2hhdAo+IG9kZCBhbmQgZXZl biBhY3R1YWxseSBtZWFuLiBDYW4gSSBwcmVzdW1lIHNvbWVvbmUgaGFzIGNoZWNrZWQgdGhpcwo+ IG9uIGFjdHVhbCBoYXJkd2FyZT8KV2VsbCwgdGhlIHByb3BlcnR5IHdhcyBnZXR0aW5nIHNldCBw cm9wZXJseSwgYW5kIHRoZSBkaXNwbGF5IGxvb2tlZCBvaywgCmJ1dCBkaW50IGR1bXAgdGhlIHZh bHVlcyBpbiByZWdpc3RlcnMuIENhbiBjaGVjayBpdCBub3cuCj4+ICt9Cj4+ICsKPj4gK3N0YXRp YyB2b2lkCj4+ICtpY2xfbG9hZF9nY21heChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKPj4gKwkgICAgICAgY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmNvbG9y KQo+PiArewo+PiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj X3N0YXRlLT5iYXNlLmNydGMpOwo+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+PiArCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+ cGlwZTsKPj4gKwo+PiArCS8qIEZpeG1lOiBMVVQgZW50cmllcyBhcmUgMTYgYml0IG9ubHksIHNv IHdlIGNhbiBwcm9nIDB4RkZGRiBtYXggKi8KPj4gKwlJOTE1X1dSSVRFKFBSRUNfUEFMX0dDX01B WChwaXBlLCAwKSwgY29sb3ItPnJlZCk7Cj4+ICsJSTkxNV9XUklURShQUkVDX1BBTF9HQ19NQVgo cGlwZSwgMSksIGNvbG9yLT5ncmVlbik7Cj4+ICsJSTkxNV9XUklURShQUkVDX1BBTF9HQ19NQVgo cGlwZSwgMiksIGNvbG9yLT5ibHVlKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQKPj4gK2lj bF9wcm9ncmFtX2dhbW1hX3N1cGVyZmluZV9zZWdtZW50KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQo+PiArewo+PiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0g dG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+PiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+PiArCWNvbnN0 IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYiA9IGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFf bHV0Owo+PiArCWNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQgPSBibG9iLT5kYXRhOwo+ PiArCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPj4gKwl1MzIgaTsKPj4gKwo+PiArCS8q Cj4+ICsJICogRXZlcnkgZW50cnkgaW4gdGhlIG11bHRpLXNlZ21lbnQgTFVUIGlzIGNvcnJlc3Bv bmRpbmcgdG8gYSBzdXBlcmZpbmUKPj4gKwkgKiBzZWdtZW50IHN0ZXAgd2hpY2ggaXMgMS8oOCAq IDEyOCAqIDI1NikuCj4+ICsJICoKPj4gKwkgKiBTdXBlcmZpbmUgc2VnbWVudCBoYXMgOSBlbnRy aWVzLCBjb3JyZXNwb25kaW5nIHRvIHZhbHVlcwo+PiArCSAqIDAsIDEvKDggKiAxMjggKiAyNTYp LCAyLyg4ICogMTI4ICogMjU2KSAuLi4uIDgvKDggKiAxMjggKiAyNTYpLgo+PiArCSAqLwo+PiAr CUk5MTVfV1JJVEUoUFJFQ19QQUxfTVVMVElfU0VHX0lOREVYKHBpcGUpLCBQQUxfUFJFQ19BVVRP X0lOQ1JFTUVOVCk7Cj4+ICsKPj4gKwlmb3IgKGkgPSAwOyBpIDwgOTsgaSsrKSB7Cj4+ICsJCWNv bnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICplbnRyeSA9ICZsdXRbaV07Cj4+ICsKPj4gKwkJSTkx NV9XUklURShQUkVDX1BBTF9NVUxUSV9TRUdfREFUQShwaXBlKSwKPj4gKwkJCSAgIGlsa19sdXRf MTJwNF9sZHcoZW50cnkpKTsKPj4gKwkJSTkxNV9XUklURShQUkVDX1BBTF9NVUxUSV9TRUdfREFU QShwaXBlKSwKPj4gKwkJCSAgIGlsa19sdXRfMTJwNF91ZHcoZW50cnkpKTsKPj4gKwl9Cj4+ICt9 Cj4+ICsKPj4gK3N0YXRpYyB2b2lkCj4+ICtpY2xfcHJvZ3JhbV9nYW1tYV9tdWx0aV9zZWdtZW50 KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+PiArewo+PiArCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNy dGMpOwo+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0 Yy0+YmFzZS5kZXYpOwo+PiArCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYiA9 IGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0Owo+PiArCWNvbnN0IHN0cnVjdCBkcm1fY29sb3Jf bHV0ICpsdXQgPSBibG9iLT5kYXRhOwo+PiArCWNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpl bnRyeTsKPj4gKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4+ICsJdTMyIGk7Cj4+ICsK Pj4gKwkvKgo+PiArCSAqCj4+ICsJICogUHJvZ3JhbSBGaW5lIHNlZ21lbnQgKGxldCdzIGNhbGwg aXQgc2VnMikuLi4KPj4gKwkgKgo+PiArCSAqIEZpbmUgc2VnbWVudCdzIHN0ZXAgaXMgMS8oMTI4 ICogMjU2KSBpZSAxLygxMjggKiAyNTYpLCAgMi8oMTI4KjI1NikKPj4gKwkgKiAuLi4gMjU2Lygx MjgqMjU2KS4gU28gaW4gb3JkZXIgdG8gcHJvZ3JhbSBmaW5lIHNlZ21lbnQgb2YgTFVUIHdlCj4+ ICsJICogbmVlZCB0byBwaWNrIGV2ZXJ5IDgndGggZW50cnkgaW4gTFVULCBhbmQgcHJvZ3JhbSAy NTYgaW5kZXhlcy4KPj4gKwkgKgo+PiArCSAqIFBBTF9QUkVDX0lOREVYWzBdIGFuZCBQQUxfUFJF Q19JTkRFWFsxXSBtYXAgdG8gc2VnMlsxXSwKPj4gKwkgKiB3aXRoIHNlZzJbMF0gYmVpbmcgdW51 c2VkIGJ5IHRoZSBoYXJkd2FyZS4KPj4gKwkgKi8KPj4gKwlJOTE1X1dSSVRFKFBSRUNfUEFMX0lO REVYKHBpcGUpLCBQQUxfUFJFQ19BVVRPX0lOQ1JFTUVOVCk7Cj4+ICsJZm9yIChpID0gMTsgaSA8 IDI1NzsgaSsrKSB7Cj4+ICsJCWVudHJ5ID0gJmx1dFtpICogOF07Cj4+ICsJCUk5MTVfV1JJVEUo UFJFQ19QQUxfREFUQShwaXBlKSwgaWxrX2x1dF8xMnA0X2xkdyhlbnRyeSkpOwo+PiArCQlJOTE1 X1dSSVRFKFBSRUNfUEFMX0RBVEEocGlwZSksIGlsa19sdXRfMTJwNF91ZHcoZW50cnkpKTsKPj4g Kwl9Cj4+ICsKPj4gKwkvKgo+PiArCSAqIFByb2dyYW0gQ29hcnNlIHNlZ21lbnQgKGxldCdzIGNh bGwgaXQgc2VnMykuLi4KPj4gKwkgKgo+PiArCSAqIENvYXJzZSBzZWdtZW50J3Mgc3RhcnRzIGZy b20gaW5kZXggMCBhbmQgaXQncyBzdGVwIGlzIDEvMjU2IGllIDAsCj4+ICsJICogMS8yNTYsIDIv MjU2IC4uLjI1Ni8yNTYuIEFzIHBlciB0aGUgZGVzY3JpcHRpb24gb2YgZWFjaCBlbnRyeSBpbiBM VVQKPj4gKwkgKiBhYm92ZSwgd2UgbmVlZCB0byBwaWNrIGV2ZXJ5ICg4ICogMTI4KXRoIGVudHJ5 IGluIExVVCwgYW5kCj4+ICsJICogcHJvZ3JhbSAyNTYgb2YgdGhvc2UuCj4+ICsJICoKPj4gKwkg KiBTcGVjIGlzIG5vdCB2ZXJ5IGNsZWFyIGFib3V0IGlmIGVudHJpZXMgc2VnM1swXSBhbmQgc2Vn M1sxXSBhcmUKPj4gKwkgKiBiZWluZyB1c2VkIG9yIG5vdCwgYnV0IHdlIHN0aWxsIG5lZWQgdG8g cHJvZ3JhbSB0aGVzZSB0byBhZHZhbmNlCj4+ICsJICogdGhlIGluZGV4Lgo+PiArCSAqLwo+PiAr CWZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgewo+PiArCQllbnRyeSA9ICZsdXRbaSAqIDggKiAx MjhdOwo+PiArCQlJOTE1X1dSSVRFKFBSRUNfUEFMX0RBVEEocGlwZSksIGlsa19sdXRfMTJwNF9s ZHcoZW50cnkpKTsKPj4gKwkJSTkxNV9XUklURShQUkVDX1BBTF9EQVRBKHBpcGUpLCBpbGtfbHV0 XzEycDRfdWR3KGVudHJ5KSk7Cj4+ICsJfQo+PiArCj4+ICsJLyogVGhlIGxhc3QgZW50cnkgaW4g dGhlIExVVCBpcyB0byBiZSBwcm9ncmFtbWVkIGluIEdDTUFYICovCj4+ICsJZW50cnkgPSAmbHV0 WzI1NiAqIDggKiAxMjggKyAxXTsKPiBUaGUgKzEgc2hvdWxkbid0IGJlIGhlcmUuCm9rCj4gT0ss IG1vc3RseSBsb29rcyBnb29kLiBXaXRoIHRoZSBtaW5vciBpc3N1ZXMgYWRkcmVzc2VkIHRoaXMg aXMKPiBSZXZpZXdlZC1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4Lmlu dGVsLmNvbT4KClRoYW5rcyBmb3IgdGhlIHJldmlldywgSSB3aWxsIHB1Ymxpc2ggVjQgd2l0aCBj b21tZW50cyBhZGRyZXNzZWQuCgotIFNoYXNoYW5rCgo+PiArCWljbF9sb2FkX2djbWF4KGNydGNf c3RhdGUsIGVudHJ5KTsKPj4gKwlpdmJfbG9hZF9sdXRfZXh0X21heChjcnRjKTsKPj4gK30KPj4g Kwo+PiAgIHN0YXRpYyB2b2lkIGljbF9sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCj4+ICAgewo+PiAgIAljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5 X2Jsb2IgKmdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0Owo+PiBAQCAtNzc1 LDEwICs4ODcsMTcgQEAgc3RhdGljIHZvaWQgaWNsX2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPj4gICAJaWYgKGNydGNfc3RhdGUtPmJhc2UuZGVn YW1tYV9sdXQpCj4+ICAgCQlnbGtfbG9hZF9kZWdhbW1hX2x1dChjcnRjX3N0YXRlKTsKPj4gICAK Pj4gLQlpZiAoKGNydGNfc3RhdGUtPmdhbW1hX21vZGUgJiBHQU1NQV9NT0RFX01PREVfTUFTSykg PT0KPj4gLQkgICAgR0FNTUFfTU9ERV9NT0RFXzhCSVQpIHsKPj4gKwlzd2l0Y2ggKGNydGNfc3Rh dGUtPmdhbW1hX21vZGUgJiBHQU1NQV9NT0RFX01PREVfTUFTSykgewo+PiArCWNhc2UgR0FNTUFf TU9ERV9NT0RFXzhCSVQ6Cj4+ICAgCQlpOXh4X2xvYWRfbHV0cyhjcnRjX3N0YXRlKTsKPj4gLQl9 IGVsc2Ugewo+PiArCQlicmVhazsKPj4gKwo+PiArCWNhc2UgR0FNTUFfTU9ERV9NT0RFXzEyQklU X01VTFRJX1NFR01FTlRFRDoKPj4gKwkJaWNsX3Byb2dyYW1fZ2FtbWFfc3VwZXJmaW5lX3NlZ21l bnQoY3J0Y19zdGF0ZSk7Cj4+ICsJCWljbF9wcm9ncmFtX2dhbW1hX211bHRpX3NlZ21lbnQoY3J0 Y19zdGF0ZSk7Cj4+ICsJCWJyZWFrOwo+PiArCj4+ICsJZGVmYXVsdDoKPj4gICAJCWJkd19sb2Fk X2x1dF8xMChjcnRjLCBnYW1tYV9sdXQsIFBBTF9QUkVDX0lOREVYX1ZBTFVFKDApKTsKPj4gICAJ CWl2Yl9sb2FkX2x1dF9leHRfbWF4KGNydGMpOwo+PiAgIAl9Cj4+IEBAIC0xMjA5LDcgKzEzMjgs NyBAQCBzdGF0aWMgdTMyIGljbF9nYW1tYV9tb2RlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQo+PiAgIAkgICAgY3J0Y19zdGF0ZV9pc19sZWdhY3lfZ2FtbWEoY3J0 Y19zdGF0ZSkpCj4+ICAgCQlnYW1tYV9tb2RlIHw9IEdBTU1BX01PREVfTU9ERV84QklUOwo+PiAg IAllbHNlCj4+IC0JCWdhbW1hX21vZGUgfD0gR0FNTUFfTU9ERV9NT0RFXzEwQklUOwo+PiArCQln YW1tYV9tb2RlIHw9IEdBTU1BX01PREVfTU9ERV8xMkJJVF9NVUxUSV9TRUdNRU5URUQ7Cj4+ICAg Cj4+ICAgCXJldHVybiBnYW1tYV9tb2RlOwo+PiAgIH0KPj4gLS0gCj4+IDIuMTcuMQpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=