From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v6 08/10] drm/i915/dsb: Enable gamma lut programming using DSB. Date: Tue, 17 Sep 2019 10:30:53 +0300 Message-ID: <87ftkvxtua.fsf@intel.com> References: <20190911191133.23383-1-animesh.manna@intel.com> <20190911191133.23383-9-animesh.manna@intel.com> <87muf9zmrd.fsf@intel.com> <7215c864-e867-a2d7-f894-93855cf2e952@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 774E96EB1E for ; Tue, 17 Sep 2019 07:30:59 +0000 (UTC) In-Reply-To: <7215c864-e867-a2d7-f894-93855cf2e952@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Animesh Manna , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAxMiBTZXAgMjAxOSwgQW5pbWVzaCBNYW5uYSA8YW5pbWVzaC5tYW5uYUBpbnRlbC5j b20+IHdyb3RlOgo+IE9uIDkvMTIvMjAxOSA2OjM3IFBNLCBKYW5pIE5pa3VsYSB3cm90ZToKPj4g T24gVGh1LCAxMiBTZXAgMjAxOSwgQW5pbWVzaCBNYW5uYSA8YW5pbWVzaC5tYW5uYUBpbnRlbC5j b20+IHdyb3RlOgo+Pj4gR2FtbWEgbHV0IHByb2dyYW1taW5nIGNhbiBiZSBwcm9ncmFtbWVkIHVz aW5nIERTQgo+Pj4gd2hlcmUgYnVsayByZWdpc3RlciBwcm9ncmFtbWluZyBjYW4gYmUgZG9uZSB1 c2luZyBpbmRleGVkCj4+PiByZWdpc3RlciB3cml0ZSB3aGljaCB0YWtlcyBudW1iZXIgb2YgZGF0 YSBhbmQgdGhlIG1taW8gb2Zmc2V0Cj4+PiB0byBiZSB3cml0dGVuLgo+Pj4KPj4+IEN1cnJlbnRs eSBlbmFibGVkIGZvciAxMi1iaXQgZ2FtbWEgTFVUIHdoaWNoIGlzIGVuYWJsZWQgYnkKPj4+IGRl ZmF1bHQgYW5kIGxhdGVyIDgtYml0LzEwLWJpdCB3aWxsIGJlIGVuYWJsZWQgaW4gZnV0dXJlCj4+ PiBiYXNlZCBvbiBuZWVkLgo+Pj4KPj4+IHYxOiBJbml0aWFsIHZlcnNpb24uCj4+PiB2MjogRGly ZWN0bHkgY2FsbCBkc2ItYXBpIGF0IGNhbGxzaXRlcy4gKEphbmkpCj4+PiB2MzoKPj4+IC0gbW9k aWZpZWQgdGhlIGNvZGUgYXMgcGVyIHNpbmdsZSBkc2IgaW5zdGFuY2UgcGVyIGNydGMuIChTaGFz aGFuaykKPj4+IC0gQWRkZWQgZHNiIGdldC9wdXQgY2FsbCBpbiBwbGF0Zm9ybSBzcGVjaWZpYyBs b2FkX2x1dCBob29rLiAoSmFuaSkKPj4+IC0gcmVtb3ZlZCBkc2IgcG9pbnRlciBmcm9tIGRldl9w cml2LiAoSmFuaSkKPj4+IHY0OiBzaW1wbGlmaWVkIGNvZGUgYnkgZHJvcHBpbmcgcmVmLWNvdW50 IGltcGxlbWVudGF0aW9uLiAoU2hhc2hhbmspCj4+Pgo+Pj4gQ2M6IEphbmkgTmlrdWxhIDxqYW5p Lm5pa3VsYUBpbnRlbC5jb20+Cj4+PiBDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50 ZWwuY29tPgo+Pj4gQ2M6IFNoYXNoYW5rIFNoYXJtYSA8c2hhc2hhbmsuc2hhcm1hQGludGVsLmNv bT4KPj4+IFNpZ25lZC1vZmYtYnk6IEFuaW1lc2ggTWFubmEgPGFuaW1lc2gubWFubmFAaW50ZWwu Y29tPgo+Pj4gLS0tCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29s b3IuYyB8IDU3ICsrKysrKysrKysrKystLS0tLS0tLS0KPj4+ICAgMSBmaWxlIGNoYW5nZWQsIDM1 IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2NvbG9yLmMKPj4+IGluZGV4IDMxODMwOGRjMTM2Yy4uYjZiOWYw ZTUxNjZiIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9jb2xvci5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Nv bG9yLmMKPj4+IEBAIC02MTEsMTIgKzYxMSwxMyBAQCBzdGF0aWMgdm9pZCBiZHdfbG9hZF9sdXRf MTAoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4+PiAgIHN0YXRpYyB2b2lkIGl2Yl9sb2FkX2x1 dF9leHRfbWF4KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+Pj4gICB7Cj4+PiAgIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPj4+ ICsJc3RydWN0IGludGVsX2RzYiAqZHNiID0gaW50ZWxfZHNiX2dldChjcnRjKTsKPj4gV2hlbiB5 b3UndmUgZG9uZSBlbm91Z2gga2VybmVsIHByb2dyYW1taW5nLCB5b3UgbGVhcm4gdG8gZXhwZWN0 IGdldC9wdXQKPj4gdG8gYmUgcGFpcmVkLCBhbmQgYXNzdW1lIGl0J3MgYSBidWcgaWYgdGhpcyBp c24ndCB0aGUgY2FzZS4KPiBBbHJlYWR5IGhhdmUgZG9uZSBpdCBpbiBteSBwcmV2aW91cyB2ZXJz aW9uLAo+IGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8zMjk0ODEvP3Nl cmllcz02MzAxMyZyZXY9NQo+IGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRj aC8zMjk0ODIvP3Nlcmllcz02MzAxMyZyZXY9NQo+Cj4gQ2FuIHlvdSBwbGVhc2Ugc3VnZ2VzdCBp ZiBpdCBpcyBvaz8KClllcywgYnV0IHlvdSBuZWVkIHRvIGdldCBpdCByaWdodC4gSXQgc2VlbXMg dGhhdCB0aGUgaW5jIGFuZCBkZWMgY2FuIGdldApvdXQgb2Ygc3luYy4gQWxzbyBubyB3YXJuaW5n cyBhZ2FpbnN0IHB1dHRpbmcgdG9vIG1hbnkgdGltZXMuCgpCUiwKSmFuaS4KCgoKPgo+IFJlZ2Fy ZHMsCj4gQW5pbWVzaAo+Pgo+PiBTbyB5ZWFoLCBJIGRpZCBzYXkgaXQncyBva2F5IG5vdCB0byBo YXZlIHJlZmNvdW50aW5nIGF0IGZpcnN0LCAqYnV0KiB0aGUKPj4gZXhwZWN0YXRpb24gdGhhdCBn ZXQvcHV0IGdvIGluIHBhaXJzIGlzIHNvIGRlZXBseSBpbmdyYWluZWQgdGhhdCBJCj4+IGRpZG4n dCBldmVuIHRoaW5rIHRvIHNheSB5b3Ugc2hvdWxkbid0IGhhdmUgdGhpcyBraW5kIG9mIGFzeW1t ZXRyeS4KPj4KPj4gU28gdGhpcyBjcmVhdGVzIGEgcHJvYmxlbSwgaG93IGRvIHdlIHBhc3MgdGhl IGRzYiBwb2ludGVyIGhlcmUsIGFzCj4+IHdpdGhvdXQgcmVmY291bnRpbmcgeW91IGNhbid0IGFj dHVhbGx5IGhhdmUgdGhlIHB1dCBoZXJlIGFzIHdlbGwsCj4+IGJlY2F1c2UgeW91IHRocm93IHRo ZSBzdHVmZiBvdXQgYmVmb3JlIHRoZSBjb21taXQuCj4+Cj4+IE1heWJlIHRoZSBlYXN5IGFuc3dl ciBpcyB0aGF0IHdlIHNob3VsZCBqdXN0IGRvIHRoZSBnZXQgYW5kIHB1dCBhdAo+PiBpbnRlbF9j cnRjX2luaXQgYW5kIGludGVsX2NydGNfZGVzdHJveS4gT3Igd2UgY291bGQgZG8gaXQgYXQgYXRv bWljCj4+IGNoZWNrIGFuZCBmcmVlLgo+Pgo+PiBWaWxsZSwgd2hpY2ggYXBwcm9hY2ggd291bGQg Y29uZmxpY3Qgd2l0aCB5b3VyIGZ1dHVyZSB2Ymxhbmsgd29ya2VyCj4+IHN0dWZmIHRoZSBsZWFz dD8KPj4KPj4KPj4gQlIsCj4+IEphbmkuCj4+Cj4+Cj4+Cj4+PiAgIAllbnVtIHBpcGUgcGlwZSA9 IGNydGMtPnBpcGU7Cj4+PiAgIAo+Pj4gICAJLyogUHJvZ3JhbSB0aGUgbWF4IHJlZ2lzdGVyIHRv IGNsYW1wIHZhbHVlcyA+IDEuMC4gKi8KPj4+IC0JSTkxNV9XUklURShQUkVDX1BBTF9FWFRfR0Nf TUFYKHBpcGUsIDApLCAxIDw8IDE2KTsKPj4+IC0JSTkxNV9XUklURShQUkVDX1BBTF9FWFRfR0Nf TUFYKHBpcGUsIDEpLCAxIDw8IDE2KTsKPj4+IC0JSTkxNV9XUklURShQUkVDX1BBTF9FWFRfR0Nf TUFYKHBpcGUsIDIpLCAxIDw8IDE2KTsKPj4+ICsJaW50ZWxfZHNiX3JlZ193cml0ZShkc2IsIFBS RUNfUEFMX0VYVF9HQ19NQVgocGlwZSwgMCksIDEgPDwgMTYpOwo+Pj4gKwlpbnRlbF9kc2JfcmVn X3dyaXRlKGRzYiwgUFJFQ19QQUxfRVhUX0dDX01BWChwaXBlLCAxKSwgMSA8PCAxNik7Cj4+PiAr CWludGVsX2RzYl9yZWdfd3JpdGUoZHNiLCBQUkVDX1BBTF9FWFRfR0NfTUFYKHBpcGUsIDIpLCAx IDw8IDE2KTsKPj4+ICAgCj4+PiAgIAkvKgo+Pj4gICAJICogUHJvZ3JhbSB0aGUgZ2MgbWF4IDIg cmVnaXN0ZXIgdG8gY2xhbXAgdmFsdWVzID4gMS4wLgo+Pj4gQEAgLTYyNCw5ICs2MjUsMTIgQEAg c3RhdGljIHZvaWQgaXZiX2xvYWRfbHV0X2V4dF9tYXgoc3RydWN0IGludGVsX2NydGMgKmNydGMp Cj4+PiAgIAkgKiBmcm9tIDMuMCB0byA3LjAKPj4+ICAgCSAqLwo+Pj4gICAJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gMTAgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPj4+IC0JCUk5 MTVfV1JJVEUoUFJFQ19QQUxfRVhUMl9HQ19NQVgocGlwZSwgMCksIDEgPDwgMTYpOwo+Pj4gLQkJ STkxNV9XUklURShQUkVDX1BBTF9FWFQyX0dDX01BWChwaXBlLCAxKSwgMSA8PCAxNik7Cj4+PiAt CQlJOTE1X1dSSVRFKFBSRUNfUEFMX0VYVDJfR0NfTUFYKHBpcGUsIDIpLCAxIDw8IDE2KTsKPj4+ ICsJCWludGVsX2RzYl9yZWdfd3JpdGUoZHNiLCBQUkVDX1BBTF9FWFQyX0dDX01BWChwaXBlLCAw KSwKPj4+ICsJCQkJICAgIDEgPDwgMTYpOwo+Pj4gKwkJaW50ZWxfZHNiX3JlZ193cml0ZShkc2Is IFBSRUNfUEFMX0VYVDJfR0NfTUFYKHBpcGUsIDEpLAo+Pj4gKwkJCQkgICAgMSA8PCAxNik7Cj4+ PiArCQlpbnRlbF9kc2JfcmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfRVhUMl9HQ19NQVgocGlwZSwg MiksCj4+PiArCQkJCSAgICAxIDw8IDE2KTsKPj4+ICAgCX0KPj4+ICAgfQo+Pj4gICAKPj4+IEBA IC03ODcsMjIgKzc5MSwyMiBAQCBpY2xfbG9hZF9nY21heChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPj4+ICAgCSAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2NvbG9y X2x1dCAqY29sb3IpCj4+PiAgIHsKPj4+ICAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+Pj4gLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPj4+ICsJc3RydWN0 IGludGVsX2RzYiAqZHNiID0gaW50ZWxfZHNiX2dldChjcnRjKTsKPj4+ICAgCWVudW0gcGlwZSBw aXBlID0gY3J0Yy0+cGlwZTsKPj4+ICAgCj4+PiAgIAkvKiBGaXhtZTogTFVUIGVudHJpZXMgYXJl IDE2IGJpdCBvbmx5LCBzbyB3ZSBjYW4gcHJvZyAweEZGRkYgbWF4ICovCj4+PiAtCUk5MTVfV1JJ VEUoUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDApLCBjb2xvci0+cmVkKTsKPj4+IC0JSTkxNV9XUklU RShQUkVDX1BBTF9HQ19NQVgocGlwZSwgMSksIGNvbG9yLT5ncmVlbik7Cj4+PiAtCUk5MTVfV1JJ VEUoUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDIpLCBjb2xvci0+Ymx1ZSk7Cj4+PiArCWludGVsX2Rz Yl9yZWdfd3JpdGUoZHNiLCBQUkVDX1BBTF9HQ19NQVgocGlwZSwgMCksIGNvbG9yLT5yZWQpOwo+ Pj4gKwlpbnRlbF9kc2JfcmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDEpLCBj b2xvci0+Z3JlZW4pOwo+Pj4gKwlpbnRlbF9kc2JfcmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfR0Nf TUFYKHBpcGUsIDIpLCBjb2xvci0+Ymx1ZSk7Cj4+PiAgIH0KPj4+ICAgCj4+PiAgIHN0YXRpYyB2 b2lkCj4+PiAgIGljbF9wcm9ncmFtX2dhbW1hX3N1cGVyZmluZV9zZWdtZW50KGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+Pj4gICB7Cj4+PiAgIAlzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPj4+ IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNl LmRldik7Cj4+PiAgIAljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IgPSBjcnRj X3N0YXRlLT5iYXNlLmdhbW1hX2x1dDsKPj4+ICAgCWNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0 ICpsdXQgPSBibG9iLT5kYXRhOwo+Pj4gKwlzdHJ1Y3QgaW50ZWxfZHNiICpkc2IgPSBpbnRlbF9k c2JfZ2V0KGNydGMpOwo+Pj4gICAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+Pj4gICAJ dTMyIGk7Cj4+PiAgIAo+Pj4gQEAgLTgxMywxNSArODE3LDE2IEBAIGljbF9wcm9ncmFtX2dhbW1h X3N1cGVyZmluZV9zZWdtZW50KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlKQo+Pj4gICAJICogU3VwZXJmaW5lIHNlZ21lbnQgaGFzIDkgZW50cmllcywgY29ycmVzcG9u ZGluZyB0byB2YWx1ZXMKPj4+ICAgCSAqIDAsIDEvKDggKiAxMjggKiAyNTYpLCAyLyg4ICogMTI4 ICogMjU2KSAuLi4uIDgvKDggKiAxMjggKiAyNTYpLgo+Pj4gICAJICovCj4+PiAtCUk5MTVfV1JJ VEUoUFJFQ19QQUxfTVVMVElfU0VHX0lOREVYKHBpcGUpLCBQQUxfUFJFQ19BVVRPX0lOQ1JFTUVO VCk7Cj4+PiArCWludGVsX2RzYl9yZWdfd3JpdGUoZHNiLCBQUkVDX1BBTF9NVUxUSV9TRUdfSU5E RVgocGlwZSksCj4+PiArCQkJICAgIFBBTF9QUkVDX0FVVE9fSU5DUkVNRU5UKTsKPj4+ICAgCj4+ PiAgIAlmb3IgKGkgPSAwOyBpIDwgOTsgaSsrKSB7Cj4+PiAgIAkJY29uc3Qgc3RydWN0IGRybV9j b2xvcl9sdXQgKmVudHJ5ID0gJmx1dFtpXTsKPj4+ICAgCj4+PiAtCQlJOTE1X1dSSVRFKFBSRUNf UEFMX01VTFRJX1NFR19EQVRBKHBpcGUpLAo+Pj4gLQkJCSAgIGlsa19sdXRfMTJwNF9sZHcoZW50 cnkpKTsKPj4+IC0JCUk5MTVfV1JJVEUoUFJFQ19QQUxfTVVMVElfU0VHX0RBVEEocGlwZSksCj4+ PiAtCQkJICAgaWxrX2x1dF8xMnA0X3VkdyhlbnRyeSkpOwo+Pj4gKwkJaW50ZWxfZHNiX2luZGV4 ZWRfcmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfTVVMVElfU0VHX0RBVEEocGlwZSksCj4+PiArCQkJ CQkgICAgaWxrX2x1dF8xMnA0X2xkdyhlbnRyeSkpOwo+Pj4gKwkJaW50ZWxfZHNiX2luZGV4ZWRf cmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfTVVMVElfU0VHX0RBVEEocGlwZSksCj4+PiArCQkJCQkg ICAgaWxrX2x1dF8xMnA0X3VkdyhlbnRyeSkpOwo+Pj4gICAJfQo+Pj4gICB9Cj4+PiAgIAo+Pj4g QEAgLTgyOSwxMCArODM0LDEwIEBAIHN0YXRpYyB2b2lkCj4+PiAgIGljbF9wcm9ncmFtX2dhbW1h X211bHRpX3NlZ21lbnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Cj4+PiAgIHsKPj4+ICAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0Yyhj cnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+Pj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPj4+ICAgCWNvbnN0IHN0cnVjdCBkcm1f cHJvcGVydHlfYmxvYiAqYmxvYiA9IGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0Owo+Pj4gICAJ Y29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dCA9IGJsb2ItPmRhdGE7Cj4+PiAgIAljb25z dCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqZW50cnk7Cj4+PiArCXN0cnVjdCBpbnRlbF9kc2IgKmRz YiA9IGludGVsX2RzYl9nZXQoY3J0Yyk7Cj4+PiAgIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBp cGU7Cj4+PiAgIAl1MzIgaTsKPj4+ICAgCj4+PiBAQCAtODQ3LDExICs4NTIsMTMgQEAgaWNsX3By b2dyYW1fZ2FtbWFfbXVsdGlfc2VnbWVudChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKPj4+ICAgCSAqIFBBTF9QUkVDX0lOREVYWzBdIGFuZCBQQUxfUFJFQ19JTkRF WFsxXSBtYXAgdG8gc2VnMlsxXSwKPj4+ICAgCSAqIHdpdGggc2VnMlswXSBiZWluZyB1bnVzZWQg YnkgdGhlIGhhcmR3YXJlLgo+Pj4gICAJICovCj4+PiAtCUk5MTVfV1JJVEUoUFJFQ19QQUxfSU5E RVgocGlwZSksIFBBTF9QUkVDX0FVVE9fSU5DUkVNRU5UKTsKPj4+ICsJaW50ZWxfZHNiX3JlZ193 cml0ZShkc2IsIFBSRUNfUEFMX0lOREVYKHBpcGUpLCBQQUxfUFJFQ19BVVRPX0lOQ1JFTUVOVCk7 Cj4+PiAgIAlmb3IgKGkgPSAxOyBpIDwgMjU3OyBpKyspIHsKPj4+ICAgCQllbnRyeSA9ICZsdXRb aSAqIDhdOwo+Pj4gLQkJSTkxNV9XUklURShQUkVDX1BBTF9EQVRBKHBpcGUpLCBpbGtfbHV0XzEy cDRfbGR3KGVudHJ5KSk7Cj4+PiAtCQlJOTE1X1dSSVRFKFBSRUNfUEFMX0RBVEEocGlwZSksIGls a19sdXRfMTJwNF91ZHcoZW50cnkpKTsKPj4+ICsJCWludGVsX2RzYl9pbmRleGVkX3JlZ193cml0 ZShkc2IsIFBSRUNfUEFMX0RBVEEocGlwZSksCj4+PiArCQkJCQkgICAgaWxrX2x1dF8xMnA0X2xk dyhlbnRyeSkpOwo+Pj4gKwkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGRzYiwgUFJFQ19Q QUxfREFUQShwaXBlKSwKPj4+ICsJCQkJCSAgICBpbGtfbHV0XzEycDRfdWR3KGVudHJ5KSk7Cj4+ PiAgIAl9Cj4+PiAgIAo+Pj4gICAJLyoKPj4+IEBAIC04NjgsOCArODc1LDEwIEBAIGljbF9wcm9n cmFtX2dhbW1hX211bHRpX3NlZ21lbnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUpCj4+PiAgIAkgKi8KPj4+ICAgCWZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgewo+ Pj4gICAJCWVudHJ5ID0gJmx1dFtpICogOCAqIDEyOF07Cj4+PiAtCQlJOTE1X1dSSVRFKFBSRUNf UEFMX0RBVEEocGlwZSksIGlsa19sdXRfMTJwNF9sZHcoZW50cnkpKTsKPj4+IC0JCUk5MTVfV1JJ VEUoUFJFQ19QQUxfREFUQShwaXBlKSwgaWxrX2x1dF8xMnA0X3VkdyhlbnRyeSkpOwo+Pj4gKwkJ aW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfREFUQShwaXBlKSwKPj4+ ICsJCQkJCSAgICBpbGtfbHV0XzEycDRfbGR3KGVudHJ5KSk7Cj4+PiArCQlpbnRlbF9kc2JfaW5k ZXhlZF9yZWdfd3JpdGUoZHNiLCBQUkVDX1BBTF9EQVRBKHBpcGUpLAo+Pj4gKwkJCQkJICAgIGls a19sdXRfMTJwNF91ZHcoZW50cnkpKTsKPj4+ICAgCX0KPj4+ICAgCj4+PiAgIAkvKiBUaGUgbGFz dCBlbnRyeSBpbiB0aGUgTFVUIGlzIHRvIGJlIHByb2dyYW1tZWQgaW4gR0NNQVggKi8KPj4+IEBA IC04ODIsNiArODkxLDcgQEAgc3RhdGljIHZvaWQgaWNsX2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPj4+ICAgewo+Pj4gICAJY29uc3Qgc3RydWN0 IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1 dDsKPj4+ICAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0 YXRlLT5iYXNlLmNydGMpOwo+Pj4gKwlzdHJ1Y3QgaW50ZWxfZHNiICpkc2IgPSBpbnRlbF9kc2Jf Z2V0KGNydGMpOwo+Pj4gICAKPj4+ICAgCWlmIChjcnRjX3N0YXRlLT5iYXNlLmRlZ2FtbWFfbHV0 KQo+Pj4gICAJCWdsa19sb2FkX2RlZ2FtbWFfbHV0KGNydGNfc3RhdGUpOwo+Pj4gQEAgLTkwMCw2 ICs5MTAsOSBAQCBzdGF0aWMgdm9pZCBpY2xfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+Pj4gICAJCWJkd19sb2FkX2x1dF8xMChjcnRjLCBnYW1t YV9sdXQsIFBBTF9QUkVDX0lOREVYX1ZBTFVFKDApKTsKPj4+ICAgCQlpdmJfbG9hZF9sdXRfZXh0 X21heChjcnRjKTsKPj4+ICAgCX0KPj4+ICsKPj4+ICsJaW50ZWxfZHNiX2NvbW1pdChkc2IpOwo+ Pj4gKwlpbnRlbF9kc2JfcHV0KGRzYik7Cj4+PiAgIH0KPj4+ICAgCj4+PiAgIHN0YXRpYyB1MzIg Y2h2X2NnbV9kZWdhbW1hX2xkdyhjb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqY29sb3IpCj4K Ci0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgR3JhcGhpY3MgQ2VudGVyCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==