From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 4/4] drm/i915/icl: Add Multi-segmented gamma support Date: Fri, 3 May 2019 18:50:54 +0300 Message-ID: <20190503155054.GS24299@intel.com> References: <20190430152108.31814-1-shashank.sharma@intel.com> <20190430152108.31814-5-shashank.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 3BD7E6E800 for ; Fri, 3 May 2019 15:50:59 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190430152108.31814-5-shashank.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: Shashank Sharma Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBBcHIgMzAsIDIwMTkgYXQgMDg6NTE6MDhQTSArMDUzMCwgU2hhc2hhbmsgU2hhcm1h IHdyb3RlOgo+IElDTCBpbnRyb2R1Y2VzIGEgbmV3IGdhbW1hIGNvcnJlY3Rpb24gbW9kZSBpbiBk aXNwbGF5IGVuZ2luZSwgY2FsbGVkCj4gbXVsdGktc2VnbWVudGVkLWdhbW1hIG1vZGUuIFRoaXMg bW9kZSBhbGxvd3MgdXNlcnMgdG8gcHJvZ3JhbSB0aGUKPiBkYXJrZXIgcmVnaW9uIG9mIHRoZSBn YW1tYSBjdXJ2ZSB3aXRoIHN1ZXByZmluZSBwcmVjaXNpb24uIEFuCj4gZXhhbXBsZSB1c2UgY2Fz ZSBmb3IgdGhpcyBpcyBIRFIgY3VydmVzIChsaWtlIFBRIFNULTIwODQpLgo+IAo+IElmIHdlIHBs b3QgYSBnYW1tYSBjb3JyZWN0aW9uIGN1cnZlIGZyb20gdmFsdWUgcmFuZ2UgYmV0d2VlbiAwLjAg dG8gMS4wLAo+IElDTCdzIG11bHRpLXNlZ21lbnQgaGFzIDMgZGlmZmVyZW50IHNlY3Rpb25zOgo+ IC0gc3VwZXJmaW5lIHNlZ21lbnQ6IDkgdmFsdWVzLCByYW5nZXMgYmV0d2VlbiAwIC0gMS8oMTI4 ICogMjU2KQo+IC0gZmluZSBzZWdtZW50OiAyNTcgdmFsdWVzLCByYW5nZXMgYmV0d2VlbiAwIC0g MS8oMTI4KQo+IC0gY29yYXNlIHNlZ21lbnQ6IDI1NyB2YWx1ZXMsIHJhbmdlcyBiZXR3ZWVuIDAg LSAxCj4gCj4gVGhpcyBwYXRjaDoKPiAtIENoYW5nZXMgZ2FtbWEgTFVUcyBzaXplIGZvciBJQ0wv R0VOMTEgdG8gMjYyMTQ0IGVudHJpZXMgKDggKiAxMjggKiAyNTYpLAo+ICAgc28gdGhhdCB1c2Vy c3BhY2UgY2FuIHByb2dyYW0gd2l0aCBoaWdoZXN0IHByZWNpc2lvbiBzdXBwb3J0ZWQuCj4gLSBD aGFuZ2VzIGRlZmF1bHQgZ2FtbWEgbW9kZSAobm9uLWxlZ2FjeSkgdG8gbXVsdGktc2VnbWVudGVk LWdhbW1hIG1vZGUuCj4gLSBBZGRzIGZ1bmN0aW9ucyB0byBwcm9ncmFtL2RldGVjdCBtdWx0aS1z ZWdtZW50IGdhbW1hLgo+IAo+IFYyOiBBZGRyZXNzZWQgcmV2aWV3IGNvbW1lbnRzIGZyb20gVmls bGUKPiAgICAgLSBzZXBhcmF0ZSBmdW5jdGlvbiBmb3Igc3VwZXJmaW5lIGFuZCBmaW5lIHNlZ21l bnRzLgo+ICAgICAtIHJlbW92ZSBlbnVtIGZvciBzZWdtZW50cy4KPiAgICAgLSByZXVzZSBsYXN0 IGVudHJ5IG9mIHRoZSBMVVQgYXMgZ2NfbWF4IHZhbHVlLgo+ICAgICAtIHJlcGxhY2UgaWYoKSAu Li4uY29uZCB3aXRoIHN3aXRjaC4uLmNhc2UgaW4gaWNsX2xvYWRfbHV0cy4KPiAgICAgLSBhZGQg YW4gZW50cnkgdmFyaWFibGUsIGluc3RlYWQgb2YgJ3dvcmQnCj4gCj4gQ2M6IFZpbGxlIFN5cmrD pGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IE1hYXJ0ZW4gTGFua2hv cnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IERhbmllbCBWZXR0 ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4gCj4gU3VnZ2VzdGVkLWJ5OiBWaWxsZSBTeXJq w6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFNo YXNoYW5rIFNoYXJtYSA8c2hhc2hhbmsuc2hhcm1hQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5 OiBVbWEgU2hhbmthciA8dW1hLnNoYW5rYXJAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BjaS5jICAgIHwgICAzICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2NvbG9yLmMgfCAxMjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiAgMiBm aWxlcyBjaGFuZ2VkLCAxMjMgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKPiAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcGNpLmMKPiBpbmRleCBmZmEyZWU3MGEwM2QuLjgzNjk4OTUxNzYwYiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+IEBAIC03NDksNyArNzQ5LDggQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9jYW5ub25sYWtlX2luZm8gPSB7Cj4g IAlHRU4oMTEpLCBcCj4gIAkuZGRiX3NpemUgPSAyMDQ4LCBcCj4gIAkuaGFzX2xvZ2ljYWxfcmlu Z19lbHNxID0gMSwgXAo+IC0JLmNvbG9yID0geyAuZGVnYW1tYV9sdXRfc2l6ZSA9IDMzLCAuZ2Ft bWFfbHV0X3NpemUgPSAxMDI0IH0KPiArCS5jb2xvciA9IHsgLmRlZ2FtbWFfbHV0X3NpemUgPSAz MywgLmdhbW1hX2x1dF9zaXplID0gMjYyMTQ0IH0KClVnaC4gVGhhdHMgb25lIGJpZyBMVVQuIEJ1 dCBsb29rcyBjb3JyZWN0LgoKPiArCgpCb2d1cyBuZXdsaW5lLgoKPiAgCj4gIHN0YXRpYyBjb25z dCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfaWNlbGFrZV8xMV9pbmZvID0gewo+ICAJ R0VOMTFfRkVBVFVSRVMsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4gaW5kZXggNmMz NDFiZWE1MTRjLi40OTgzMWU4ZDAyZmIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfY29sb3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9y LmMKPiBAQCAtNDEsNiArNDEsOSBAQAo+ICAjZGVmaW5lIENUTV9DT0VGRl9BQlMoY29lZmYpCQko KGNvZWZmKSAmIChDVE1fQ09FRkZfU0lHTiAtIDEpKQo+ICAKPiAgI2RlZmluZSBMRUdBQ1lfTFVU X0xFTkdUSAkJMjU2Cj4gKyNkZWZpbmUgSUNMX0dBTU1BX01VTFRJU0VHX0xVVF9MRU5HVEgJCSgy NTYgKiAxMjggKiA4KQo+ICsjZGVmaW5lIElDTF9HQU1NQV9TVVBFUkZJTkVfU0VHX0xFTkdUSAk5 Cj4gKwo+ICAvKgo+ICAgKiBFeHRyYWN0IHRoZSBDU0MgY29lZmZpY2llbnQgZnJvbSBhIENUTSBj b2VmZmljaWVudCAoaW4gVTMyLjMyIGZpeGVkIHBvaW50Cj4gICAqIGZvcm1hdCkuIFRoaXMgbWFj cm8gdGFrZXMgdGhlIGNvZWZmaWNpZW50IHdlIHdhbnQgdHJhbnNmb3JtZWQgYW5kIHRoZQo+IEBA IC03NjcsNiArNzcwLDExMyBAQCBzdGF0aWMgdm9pZCBnbGtfbG9hZF9sdXRzKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJfQo+ICB9Cj4gIAo+ICsvKiBpbGsr ICIxMi40IiBpbnRlcnBvbGF0ZWQgZm9ybWF0IChoaWdoIDEwIGJpdHMpICovCj4gK3N0YXRpYyB1 MzIgaWxrX2x1dF8xMnA0X2xkdyhjb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqY29sb3IpCj4g K3sKPiArCXJldHVybiAoY29sb3ItPnJlZCA+PiA2KSA8PCAyMCB8IChjb2xvci0+Z3JlZW4gPj4g NikgPDwgMTAgfAo+ICsJCShjb2xvci0+Ymx1ZSA+PiA2KTsKPiArfQo+ICsKPiArLyogaWxrKyAi MTIuNCIgaW50ZXJwb2xhdGVkIGZvcm1hdCAobG93IDYgYml0cykgKi8KPiArc3RhdGljIHUzMiBp bGtfbHV0XzEycDRfdWR3KGNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpjb2xvcikKPiArewo+ ICsJcmV0dXJuIChjb2xvci0+cmVkICYgMHgzZikgPDwgMjQgfCAoY29sb3ItPmdyZWVuICYgMHgz ZikgPDwgMTQgfAo+ICsJCShjb2xvci0+Ymx1ZSAmIDB4M2YpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg dm9pZAo+ICtpY2xfbG9hZF9nY21heChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKPiArCQkJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmVudHJ5KQoKSW5kZW50 YXRpb24gbG9va3Mgb2ZmLiBBbHNvIHMvZW50cnkvY29sb3IvIHRvIG1hdGNoIHRoZSBvdGhlciBz aW1pbGFyaXNoCmZ1bmNzIG1heWJlPwoKPiArewo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMg PSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiArCWVudW0g cGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiArCj4gKwkvKiBGaXhtZTogTFVUIGVudHJpZXMgYXJl IDE2IGJpdCBvbmx5LCBzbyB3ZSBjYW4gcHJvZyAweEZGRkYgbWF4ICovCj4gKwlJOTE1X1dSSVRF KFBSRUNfUEFMX0dDX01BWChwaXBlLCAwKSwgZW50cnktPnJlZCk7Cj4gKwlJOTE1X1dSSVRFKFBS RUNfUEFMX0dDX01BWChwaXBlLCAxKSwgZW50cnktPmdyZWVuKTsKPiArCUk5MTVfV1JJVEUoUFJF Q19QQUxfR0NfTUFYKHBpcGUsIDIpLCBlbnRyeS0+Ymx1ZSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2 b2lkCj4gK2ljbF9wcm9ncmFtX2dhbW1hX3N1cGVyZmluZV9zZWdtZW50KGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICsJ Y29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iID0gY3J0Y19zdGF0ZS0+YmFzZS5n YW1tYV9sdXQ7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0ID0gYmxvYi0+ZGF0 YTsKPiArCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiArCXUzMiBpOwo+ICsKPiArCWlm ICghbHV0IHx8IGRybV9jb2xvcl9sdXRfc2l6ZShibG9iKSA8IElDTF9HQU1NQV9TVVBFUkZJTkVf U0VHX0xFTkdUSCkKPiArCQlyZXR1cm47CgpUaGVzZSBjaGVja3MgYXJlbid0IG5lZWRlZC4gSnVz dCBkZWFkIGNvZGUuCgo+ICsKPiArCS8qCj4gKwkgKiBFdmVyeSBlbnRyeSBpbiB0aGUgbXVsdGkt c2VnbWVudCBMVVQgaXMgY29ycmVzcG9uZGluZyB0byBhIHN1cGVyZmluZQo+ICsJICogc2VnbWVu dCBzdGVwIHdoaWNoIGlzIDEvKDggKiAxMjggKiAyNTYpLgo+ICsJICoKPiArCSAqIFN1cGVyZmlu ZSBzZWdtZW50IGhhcyA5IGVudHJpZXMsIGNvcnJlc3BvbmRpbmcgdG8gdmFsdWVzCj4gKwkgKiAw LCAxLyg4ICogMTI4ICogMjU2KSwgMi8oOCAqIDEyOCAqIDI1NikgLi4uLiA4Lyg4ICogMTI4ICog MjU2KS4KPiArCSAqLwo+ICsJSTkxNV9XUklURShQUkVDX1BBTF9NVUxUSV9TRUdfSU5ERVgocGlw ZSksIFBBTF9QUkVDX0FVVE9fSU5DUkVNRU5UKTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgOTsg aSsrKSB7Cj4gKwkJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmVudHJ5ID0gJmx1dFtpXTsK PiArCj4gKwkJSTkxNV9XUklURShQUkVDX1BBTF9NVUxUSV9TRUdfREFUQShwaXBlKSwKPiArCQkJ ICAgaWxrX2x1dF8xMnA0X3VkdyhlbnRyeSkpOwoKbGR3IHNob3VsZCBjb21lIGJlZm9yZSB1ZHcu Cgo+ICsJCUk5MTVfV1JJVEUoUFJFQ19QQUxfTVVMVElfU0VHX0RBVEEocGlwZSksCj4gKwkJCSAg IGlsa19sdXRfMTJwNF9sZHcoZW50cnkpKTsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQK PiAraWNsX3Byb2dyYW1fZ2FtbWFfbXVsdGlfc2VnbWVudChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0 b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiArCWNvbnN0IHN0 cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYiA9IGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0 Owo+ICsJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dCA9IGJsb2ItPmRhdGE7Cj4gKwlj b25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqZW50cnk7CgonZW50cnknIGRlY2xhcmF0aW9uIGNh biBiZSBtb3ZlZCBpbnRvIHRoZSBsb29wcy4KCj4gKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBp cGU7Cj4gKwl1MzIgaTsKPiArCj4gKwlpZiAoIWx1dCB8fCAoZHJtX2NvbG9yX2x1dF9zaXplKGJs b2IpIDwgSUNMX0dBTU1BX01VTFRJU0VHX0xVVF9MRU5HVEgpKQo+ICsJCXJldHVybjsKCk1vcmUg Y2hlY2tzIHRoYXQgYXJlbid0IG5lZWRlZC4KCj4gKwo+ICsJLyoKPiArCSAqIEV2ZXJ5IGVudHJ5 IGluIHRoZSBtdWx0aS1zZWdtZW50IExVVCBpcyBjb3JyZXNwb25kaW5nIHRvIGEgc3VwZXJmaW5l Cj4gKwkgKiBzZWdtZW50IHN0ZXAgd2hpY2ggaXMgMS8oOCoxMjgqMjU2KS4KPiArCSAqCj4gKwkg KiBGaW5lIHNlZ21lbnQncyBzdGVwIGlzIDEvKDEyOCAqIDI1NikgaWUgMS8oMTI4ICogMjU2KSwg IDIvKDEyOCoyNTYpCj4gKwkgKiAuLi4gMjU2LygxMjgqMjU2KS4gU28gaW4gb3JkZXIgdG8gcHJv Z3JhbSBmaW5lIHNlZ21lbnQgb2YgTFVUIHdlCj4gKwkgKiBuZWVkIHRvIHBpY2sgZXZlcnkgOCd0 aCBlbnRyeSBpbiBMVVQsIGFuZCBwcm9ncmFtIDI1NiBpbmRleGVzLgo+ICsJICogRmluZSBzZWdt ZW50J3MgaW5kZXggMCBpcyBwcm9ncmFtbWVkIGluIEhXLCBhbmQgaXQgc3RhcnRzIGZyb20KPiAr CSAqIGluZGV4IDEuCgpUaGUgd29yZGluZyBoZXJlIGlzIGEgYml0IGNvbmZ1c2luZy4gSSBndWVz cyB0aGUgcHJvYmxlbSBpcyB3aGF0IHRvIGNhbGwKdGhpbmdzLiBQQUxfUFJFQ19JTkRFWFswLzFd IGlzIHdoYXQgd2UgcHJvZ3JhbSwgYnV0IHRoYXQgbWFwcyB0byB0aGUgcG9pbnQKc2VnMlsxXSB3 aXRoIHNlZzJbMF0gYmVpbmcgdW51c2VkIGJ5IHRoZSBody4gV2VsbCwgdGhlIHNwZWMgc2F5cyBp dCdzCmltcGxpY2l0IGJ1dCBJSVJDIEkgd2FzIHRvbGQgbG9uZyBhZ28gdGhhdCBpdCdzIG5vdCBh Y3R1YWxseSB1c2VkLgoKTm90IHN1cmUgaG93IHRvIHdvcmQgdGhhdCBpbiB0aGUgYmVzdCB3YXku IE1heWJlIHNvbWV0aGluZyBsaWtlPwoKLyoKICogRmluZSBzZWdtZW50IChzZWcyKSAuLi4KICoK ICogUEFMX1BSRUNfSU5ERVhbMF0gYW5kIFBBTF9QUkVDX0lOREVYWzFdIG1hcCB0byBzZWcyWzFd LAogKiB3aXRoIHNlZzJbMF0gYmVpbmcgdW51c2VkIGJ5IHRoZSBoYXJkd2FyZS4KICovCgpOb3Qg c3VyZSB0aGF0J3MgYW55IGNsZWFyZXIuCgo+ICsJICovCj4gKwlJOTE1X1dSSVRFKFBSRUNfUEFM X0lOREVYKHBpcGUpLCBQQUxfUFJFQ19BVVRPX0lOQ1JFTUVOVCk7Cj4gKwlmb3IgKGkgPSAxOyBp IDwgMjU3OyBpKyspIHsKPiArCQllbnRyeSA9ICZsdXRbaSAqIDhdOwo+ICsJCUk5MTVfV1JJVEUo UFJFQ19QQUxfREFUQShwaXBlKSwgaWxrX2x1dF8xMnA0X3VkdyhlbnRyeSkpOwo+ICsJCUk5MTVf V1JJVEUoUFJFQ19QQUxfREFUQShwaXBlKSwgaWxrX2x1dF8xMnA0X2xkdyhlbnRyeSkpOwo+ICsJ fQo+ICsKPiArCS8qCj4gKwkgKiBDb2Fyc2Ugc2VnbWVudCdzIHN0YXJ0cyBmcm9tIGluZGV4IDAg YW5kIGl0J3Mgc3RlcCBpcyAxLzI1NiBpZSAwLAo+ICsJICogMS8yNTYsIDIvMjU2IC4uLjI1Ni8y NTYuIEFzIHBlciB0aGUgZGVzY3JpcHRpb24gb2YgZWFjaCBlbnRyeSBpbiBMVVQKPiArCSAqIGFi b3ZlLCB3ZSBuZWVkIHRvIHBpY2sgZXZlcnkgOCAqIDEyOCA9IDEwMjR0aCBlbnRyeSBpbiBMVVQs IGFuZAo+ICsJICogcHJvZ3JhbSAyNTYgb2YgdGhvc2UuCj4gKwkgKi8KCkNvdWxkIG1ha2UgYSBu b3RlIGhlcmUgc3RhdGluZyB0aGF0IHNlZzNbMF0gYW5kIHNlZzNbMV0gYXJlIGFsc28gdW51c2Vk CmJ5IHRoZSBoYXJkd2FyZSwgZXZlbiB0aG91Z2ggd2UgaGF2ZSB0byBwcm9ncmFtIHRoZW0gdG8g YWR2YW5jZSB0aGUKaW5kZXguIEkgZG9uJ3Qgc2VlIGl0IG1lbnRpb25lZCBpbiB0aGUgc3BlYywg YnV0IHRoaXMgb25lIEkgZGVmaW5pdGVseQpyZW1lbWJlciBjb25maXJtaW5nIGZyb20gQXJ0IHdh eSBiYWNrIHdoZW4uIEhvd2V2ZXIgSSBuZXZlciB2ZXJpZmllZAp0aGF0IG9uIGFjdHVhbCBody4g V2UgY291bGQgYWxzbyBjb25zaWRlciBqdXN0IHByb2dyYW1taW5nIHRob3NlIHR3bwplbnRyaWVz IHRvIDAgYW5kIHN0YXJ0IHRoZSBhY3R1YWwgY29hcnNlIHNlZ21lbnQgcHJvZ3JhbW1pbmcgZnJv bSBpbmRleCAyLgpPciB3ZSBjb3VsZCBza2lwIHRoZW0gYnkgcmVwcm9ncmFtbWluZyB0aGUgaW5k ZXggZGlyZWN0bHkuCgo+ICsJZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7Cj4gKwkJZW50cnkg PSAmbHV0W2kgKiAxMDI0XTsKCnMvMTAyNC84ICogMTI4LyBtYXliZT8KCj4gKwkJSTkxNV9XUklU RShQUkVDX1BBTF9EQVRBKHBpcGUpLCBpbGtfbHV0XzEycDRfdWR3KGVudHJ5KSk7Cj4gKwkJSTkx NV9XUklURShQUkVDX1BBTF9EQVRBKHBpcGUpLCBpbGtfbHV0XzEycDRfbGR3KGVudHJ5KSk7Cj4g Kwl9Cj4gKwo+ICsJaWNsX2xvYWRfZ2NtYXgoY3J0Y19zdGF0ZSwgZW50cnkpOwo+ICsJaXZiX2xv YWRfbHV0X2V4dF9tYXgoY3J0Yyk7Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lkIGljbF9sb2FkX2x1 dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAgCWNv bnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+YmFz ZS5nYW1tYV9sdXQ7Cj4gQEAgLTc3NSwxMCArODg1LDE3IEBAIHN0YXRpYyB2b2lkIGljbF9sb2Fk X2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAlpZiAo Y3J0Y19zdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dCkKPiAgCQlnbGtfbG9hZF9kZWdhbW1hX2x1dChj cnRjX3N0YXRlKTsKPiAgCj4gLQlpZiAoKGNydGNfc3RhdGUtPmdhbW1hX21vZGUgJiBHQU1NQV9N T0RFX01PREVfTUFTSykgPT0KPiAtCSAgICBHQU1NQV9NT0RFX01PREVfOEJJVCkgewo+ICsJc3dp dGNoIChjcnRjX3N0YXRlLT5nYW1tYV9tb2RlICYgR0FNTUFfTU9ERV9NT0RFX01BU0spIHsKPiAr CWNhc2UgR0FNTUFfTU9ERV9NT0RFXzhCSVQ6Cj4gIAkJaTl4eF9sb2FkX2x1dHMoY3J0Y19zdGF0 ZSk7Cj4gLQl9IGVsc2Ugewo+ICsJCWJyZWFrOwo+ICsKPiArCWNhc2UgR0FNTUFfTU9ERV9NT0RF XzEyQklUX01VTFRJX1NFR01FTlRFRDoKPiArCQlpY2xfcHJvZ3JhbV9nYW1tYV9zdXBlcmZpbmVf c2VnbWVudChjcnRjX3N0YXRlKTsKPiArCQlpY2xfcHJvZ3JhbV9nYW1tYV9tdWx0aV9zZWdtZW50 KGNydGNfc3RhdGUpOwo+ICsJCWJyZWFrOwo+ICsKPiArCWRlZmF1bHQ6Cj4gIAkJYmR3X2xvYWRf bHV0XzEwKGNydGMsIGdhbW1hX2x1dCwgUEFMX1BSRUNfSU5ERVhfVkFMVUUoMCkpOwo+ICAJCWl2 Yl9sb2FkX2x1dF9leHRfbWF4KGNydGMpOwo+ICAJfQo+IEBAIC0xMjA5LDcgKzEzMjYsNyBAQCBz dGF0aWMgdTMyIGljbF9nYW1tYV9tb2RlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKQo+ICAJICAgIGNydGNfc3RhdGVfaXNfbGVnYWN5X2dhbW1hKGNydGNfc3RhdGUp KQo+ICAJCWdhbW1hX21vZGUgfD0gR0FNTUFfTU9ERV9NT0RFXzhCSVQ7Cj4gIAllbHNlCj4gLQkJ Z2FtbWFfbW9kZSB8PSBHQU1NQV9NT0RFX01PREVfMTBCSVQ7Cj4gKwkJZ2FtbWFfbW9kZSB8PSBH QU1NQV9NT0RFX01PREVfMTJCSVRfTVVMVElfU0VHTUVOVEVEOwo+ICAKPiAgCXJldHVybiBnYW1t YV9tb2RlOwo+ICB9Cj4gLS0gCj4gMi4xNy4xCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==