From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [v3][PATCH 2/3] drm/i915/color: Extract icl_read_luts() Date: Fri, 20 Sep 2019 15:06:08 +0300 Message-ID: <8736gruq8f.fsf@intel.com> References: <1568917040-3365-1-git-send-email-swati2.sharma@intel.com> <1568917040-3365-3-git-send-email-swati2.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3257D6E82D for ; Fri, 20 Sep 2019 12:06:17 +0000 (UTC) In-Reply-To: <1568917040-3365-3-git-send-email-swati2.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: Swati Sharma , intel-gfx@lists.freedesktop.org Cc: daniel.vetter@ffwll.ch, ankit.k.nautiyal@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAxOSBTZXAgMjAxOSwgU3dhdGkgU2hhcm1hIDxzd2F0aTIuc2hhcm1hQGludGVsLmNv bT4gd3JvdGU6Cj4gRm9yIGljbCssIGhhdmUgaHcgcmVhZCBvdXQgdG8gY3JlYXRlIGh3IGJsb2Ig b2YgZ2FtbWEKPiBsdXQgdmFsdWVzLiBpY2wrIHBsYXRmb3JtcyBzdXBwb3J0cyBtdWx0aSBzZWdt ZW50ZWQgZ2FtbWEKPiBtb2RlIGJ5IGRlZmF1bHQsIGFkZCBodyBsdXQgY3JlYXRpb24gZm9yIHRo aXMgbW9kZS4KPgo+IFRoaXMgd2lsbCBiZSB1c2VkIHRvIHZhbGlkYXRlIGdhbW1hIHByb2dyYW1t aW5nIHVzaW5nIGRzYgo+IChkaXNwbGF5IHN0YXRlIGJ1ZmZlcikgd2hpY2ggaXMgYSB0Z2wgc3Bl Y2lmaWMgZmVhdHVyZS4KPgo+IEZvbGxvd2luZyBhcmUgdGhlIG1haW4gY2hhbmdlcyBkb25lIGlu IHRoaXMgcGF0Y2g6Cj4gMS4gZ2FtbWFfZW5hYmxlIGNoZWNrcyBtYWRlIHNwZWNpZmljIHRvIHBs YXRmb3JtIGZ1bmMoKQo+ICAgIHNpbmNlIGljbCBkb2Vlc24ndCBzdXBwb3J0IHRoYXQgYW5kIGVu YWJsZSBnYW1tYSB0aHJvdWdoIG1vZGUKPiAyLiBsdXRbMF0gYW5kIGx1dFs4XSBlbnRlcmllcyBz aG91bGQgYmUgc2FtZSBzdXBlcmZpbmUgYW5kIGNvYXJzZTsKPiAgICBzdXBlcmZpbmUgYW5kIGZp bmUgc2VnbWVudHMgcmVzcGVjdGl2ZWx5LCBjaGVja2VkIHR3aWNlLW5vIGhhcm0KPiAzLiBSZW1v dmVkIHRlbXBvcmFyeSBsdXQKPiA0LiBDb2Fyc2Ugc2VnbWVudCBpbnRlcnBvbGF0ZWQgZ2FtbWEg dmFsdWVzIGxvb3Agc3RhcnQgZnJvbSAyCj4gICAgaW5zdGVhZCBvZiAwLCBzaW5jZSBhY3R1YWwg aC93IHZhbHVlcyBzdGFydGVkIGdldHRpbmcgb3ZlcnJpZGVkLgo+Cj4gdjI6IC1yZWFkb3V0IGNv ZGUgZm9yIG11bHRpc2VnbWVudGVkIGdhbW1hIGhhcyB0byBjb21lCj4gICAgICB1cCB3aXRoIHNv bWUgaW50ZXJtZWRpYXRlIGVudHJpZXMgdGhhdCBhcmVuJ3QgcHJlc2VydmVkCj4gICAgICBpbiBo YXJkd2FyZSAoSmFuaSBOKQo+ICAgICAtbGluZWFyIGludGVycG9sYXRpb24gKFZpbGxlKQo+ICAg ICAtbW92ZWQgY29tbW9uIGNvZGUgdG8gY2hlY2sgZ2FtbWFfZW5hYmxlIHRvIHNwZWNpZmljIGZ1 bmNzLAo+ICAgICAgc2luY2UgaWNsIGRvZXNuJ3Qgc3VwcG9ydCB0aGF0Cj4gdjM6IC11c2UgdTE2 IGluc3RlYWQgb2YgX191MTYgW0phbmkgTl0KPiAgICAgLXVzZWQgc2luZ2xlIGx1dCBbSmFuaSBO XQo+ICAgICAtaW1wcm92ZWQgYW5kIG1vcmUgcmVhZGFibGUgZm9yIGxvb3BzIFtKYW5pIE5dCj4g ICAgIC1yZWFkIHZhbHVlcyBkaXJlY3RseSB0byBhY3R1YWwgbG9jYXRpb25zIGFuZCB0aGVuIGZp bGwgZ2FwcyBbSmFuaSBOXQo+ICAgICAtbW92ZWQgY2xlYW5pbmcgdG8gcGF0Y2ggMSBbSmFuaSBO XQo+ICAgICAtcmVuYW1lZCBpY2xfcmVhZF9sdXRfbXVsdGlfc2VnKCkgdG8gaWNsX3JlYWRfbHV0 X211bHRpX3NlZ21lbnQgdG8KPiAgICAgIG1ha2UgaXQgc2ltaWxhciB0byBpY2xfbG9hZF9sdXRz KCkKPiAgICAgLXJlbmFtZWQgaWNsX2NvbXB1dGVfaW50ZXJwb2xhdGVkX2dhbW1hX2Jsb2IoKSB0 bwo+ICAgICAgaWNsX2NvbXB1dGVfaW50ZXJwb2xhdGVkX2dhbW1hX2x1dF92YWx1ZXMoKSBtb3Jl IHNlbnNpYmxlLCBJIGd1ZXNzCj4KPiBTaWduZWQtb2ZmLWJ5OiBTd2F0aSBTaGFybWEgPHN3YXRp Mi5zaGFybWFAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2NvbG9yLmMgfCAyMTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgICAgIHwgICA3ICsKPiAgMiBmaWxl cyBjaGFuZ2VkLCAyMDggaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb2xvci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb2xvci5jCj4gaW5kZXggNzY1NDgyZC4uYWQ1 NDhjZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Nv bG9yLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbG9yLmMK PiBAQCAtMTM3MSw2ICsxMzcxLDkgQEAgc3RhdGljIGludCBpY2xfY29sb3JfY2hlY2soc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAo+ICBzdGF0aWMgaW50IGk5eHhfZ2Ft bWFfcHJlY2lzaW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ ICB7Cj4gKwlpZiAoIWNydGNfc3RhdGUtPmdhbW1hX2VuYWJsZSkKPiArCQlyZXR1cm4gMDsKPiAr Cj4gIAlzd2l0Y2ggKGNydGNfc3RhdGUtPmdhbW1hX21vZGUpIHsKPiAgCWNhc2UgR0FNTUFfTU9E RV9NT0RFXzhCSVQ6Cj4gIAkJcmV0dXJuIDg7Cj4gQEAgLTEzODQsNiArMTM4Nyw5IEBAIHN0YXRp YyBpbnQgaTl4eF9nYW1tYV9wcmVjaXNpb24oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpCj4gIAo+ICBzdGF0aWMgaW50IGlsa19nYW1tYV9wcmVjaXNpb24oY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiArCWlmICghY3J0Y19z dGF0ZS0+Z2FtbWFfZW5hYmxlKQo+ICsJCXJldHVybiAwOwo+ICsKPiAgCWlmICgoY3J0Y19zdGF0 ZS0+Y3NjX21vZGUgJiBDU0NfUE9TSVRJT05fQkVGT1JFX0dBTU1BKSA9PSAwKQo+ICAJCXJldHVy biAwOwo+ICAKPiBAQCAtMTQwMCw2ICsxNDA2LDkgQEAgc3RhdGljIGludCBpbGtfZ2FtbWFfcHJl Y2lzaW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAKPiAg c3RhdGljIGludCBjaHZfZ2FtbWFfcHJlY2lzaW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gKwlpZiAoIWNydGNfc3RhdGUtPmdhbW1hX2VuYWJsZSkK PiArCQlyZXR1cm4gMDsKPiArCj4gIAlpZiAoY3J0Y19zdGF0ZS0+Y2dtX21vZGUgJiBDR01fUElQ RV9NT0RFX0dBTU1BKQo+ICAJCXJldHVybiAxMDsKPiAgCWVsc2UKPiBAQCAtMTQwOCw2ICsxNDE3 LDkgQEAgc3RhdGljIGludCBjaHZfZ2FtbWFfcHJlY2lzaW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAKPiAgc3RhdGljIGludCBnbGtfZ2FtbWFfcHJlY2lz aW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gKwlp ZiAoIWNydGNfc3RhdGUtPmdhbW1hX2VuYWJsZSkKPiArCQlyZXR1cm4gMDsKPiArCj4gIAlzd2l0 Y2ggKGNydGNfc3RhdGUtPmdhbW1hX21vZGUpIHsKPiAgCWNhc2UgR0FNTUFfTU9ERV9NT0RFXzhC SVQ6Cj4gIAkJcmV0dXJuIDg7Cj4gQEAgLTE0MTksMjEgKzE0MzEsMzkgQEAgc3RhdGljIGludCBn bGtfZ2FtbWFfcHJlY2lzaW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlKQo+ICAJfQo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50IGljbF9nYW1tYV9wcmVjaXNpb24oY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gK3sKPiArCWlmICgoY3J0 Y19zdGF0ZS0+Z2FtbWFfbW9kZSAmIFBPU1RfQ1NDX0dBTU1BX0VOQUJMRSkgPT0gMCkKPiArCQly ZXR1cm4gMDsKPiArCj4gKwlzd2l0Y2ggKGNydGNfc3RhdGUtPmdhbW1hX21vZGUgJiBHQU1NQV9N T0RFX01PREVfTUFTSykgewo+ICsJY2FzZSBHQU1NQV9NT0RFX01PREVfOEJJVDoKPiArCQlyZXR1 cm4gODsKPiArCWNhc2UgR0FNTUFfTU9ERV9NT0RFXzEwQklUOgo+ICsJCXJldHVybiAxMDsKPiAr CWNhc2UgR0FNTUFfTU9ERV9NT0RFXzEyQklUX01VTFRJX1NFR01FTlRFRDoKPiArCQlyZXR1cm4g MTY7Cj4gKwlkZWZhdWx0Ogo+ICsJCU1JU1NJTkdfQ0FTRShjcnRjX3N0YXRlLT5nYW1tYV9tb2Rl KTsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArCj4gK30KPiArCj4gIGludCBpbnRlbF9jb2xvcl9n ZXRfZ2FtbWFfYml0X3ByZWNpc2lvbihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRj KGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCj4gLQlpZiAoIWNydGNfc3RhdGUt PmdhbW1hX2VuYWJsZSkKPiAtCQlyZXR1cm4gMDsKPiAtCj4gIAlpZiAoSEFTX0dNQ0goZGV2X3By aXYpKSB7Cj4gIAkJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ICAJCQlyZXR1cm4gY2h2 X2dhbW1hX3ByZWNpc2lvbihjcnRjX3N0YXRlKTsKPiAgCQllbHNlCj4gIAkJCXJldHVybiBpOXh4 X2dhbW1hX3ByZWNpc2lvbihjcnRjX3N0YXRlKTsKPiAgCX0gZWxzZSB7Cj4gLQkJaWYgKElTX0NB Tk5PTkxBS0UoZGV2X3ByaXYpIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ICsJCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQo+ICsJCQlyZXR1cm4gaWNsX2dhbW1hX3ByZWNpc2lv bihjcnRjX3N0YXRlKTsKPiArCQllbHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSB8fCBJ U19HRU1JTklMQUtFKGRldl9wcml2KSkKPiAgCQkJcmV0dXJuIGdsa19nYW1tYV9wcmVjaXNpb24o Y3J0Y19zdGF0ZSk7Cj4gIAkJZWxzZSBpZiAoSVNfSVJPTkxBS0UoZGV2X3ByaXYpKQo+ICAJCQly ZXR1cm4gaWxrX2dhbW1hX3ByZWNpc2lvbihjcnRjX3N0YXRlKTsKPiBAQCAtMTQ2NCw2ICsxNDk0 LDMwIEBAIHN0YXRpYyBib29sIGludGVsX2NvbG9yX2x1dF9lbnRyeV9lcXVhbChzdHJ1Y3QgZHJt X2NvbG9yX2x1dCAqbHV0MSwKPiAgCXJldHVybiB0cnVlOwo+ICB9Cj4gIAo+ICtzdGF0aWMgYm9v bCBpbnRlbF9jb2xvcl9sdXRfZW50cnlfbXVsdGlfZXF1YWwoc3RydWN0IGRybV9jb2xvcl9sdXQg Kmx1dDEsCj4gKwkJCQkJICAgICAgc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dDIsCj4gKwkJCQkJ ICAgICAgaW50IGx1dF9zaXplLCB1MzIgZXJyKQo+ICt7Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3Ig KGkgPSAwOyBpIDwgOTsgaSsrKSB7Cj4gKwkJaWYgKCFlcnJfY2hlY2soJmx1dDFbaV0sICZsdXQy W2ldLCBlcnIpKQo+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gKwl9Cj4gKwo+ICsJZm9yIChpID0gMTsg aSA8IDI1NzsgaSsrKSB7Cj4gKwkJaWYgKCFlcnJfY2hlY2soJmx1dDFbaSAqIDhdLCAmbHV0Mltp ICogOF0sIGVycikpCj4gKwkJCXJldHVybiBmYWxzZTsKPiArCX0KPiArCj4gKwlmb3IgKGkgPSAw OyBpIDwgMjU2OyBpKyspIHsKPiArCQlpZiAoIWVycl9jaGVjaygmbHV0MVtpICogOCAqIDEyOF0s ICZsdXQyW2kgKiA4ICogMTI4XSwgZXJyKSkKPiArCQkJcmV0dXJuIGZhbHNlOwo+ICsJfQo+ICsK PiArCXJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICBib29sIGludGVsX2NvbG9yX2x1dF9lcXVhbChz dHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IxLAo+ICAJCQkgICBzdHJ1Y3QgZHJtX3Byb3Bl cnR5X2Jsb2IgKmJsb2IyLAo+ICAJCQkgICB1MzIgZ2FtbWFfbW9kZSwgdTMyIGJpdF9wcmVjaXNp b24pCj4gQEAgLTE0ODIsMTYgKzE1MzYsOCBAQCBib29sIGludGVsX2NvbG9yX2x1dF9lcXVhbChz dHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IxLAo+ICAJbHV0X3NpemUyID0gZHJtX2NvbG9y X2x1dF9zaXplKGJsb2IyKTsKPiAgCj4gIAkvKiBjaGVjayBzdyBhbmQgaHcgbHV0IHNpemUgKi8K PiAtCXN3aXRjaCAoZ2FtbWFfbW9kZSkgewo+IC0JY2FzZSBHQU1NQV9NT0RFX01PREVfOEJJVDoK PiAtCWNhc2UgR0FNTUFfTU9ERV9NT0RFXzEwQklUOgo+IC0JCWlmIChsdXRfc2l6ZTEgIT0gbHV0 X3NpemUyKQo+IC0JCQlyZXR1cm4gZmFsc2U7Cj4gLQkJYnJlYWs7Cj4gLQlkZWZhdWx0Ogo+IC0J CU1JU1NJTkdfQ0FTRShnYW1tYV9tb2RlKTsKPiAtCQkJcmV0dXJuIGZhbHNlOwo+IC0JfQo+ICsJ aWYgKGx1dF9zaXplMSAhPSBsdXRfc2l6ZTIpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICAKPiAgCWx1 dDEgPSBibG9iMS0+ZGF0YTsKPiAgCWx1dDIgPSBibG9iMi0+ZGF0YTsKPiBAQCAtMTQ5OSwxMyAr MTU0NSwxOCBAQCBib29sIGludGVsX2NvbG9yX2x1dF9lcXVhbChzdHJ1Y3QgZHJtX3Byb3BlcnR5 X2Jsb2IgKmJsb2IxLAo+ICAJZXJyID0gMHhmZmZmID4+IGJpdF9wcmVjaXNpb247Cj4gIAo+ICAJ LyogY2hlY2sgc3cgYW5kIGh3IGx1dCBlbnRyeSB0byBiZSBlcXVhbCAqLwo+IC0Jc3dpdGNoIChn YW1tYV9tb2RlKSB7Cj4gKwlzd2l0Y2ggKGdhbW1hX21vZGUgJiBHQU1NQV9NT0RFX01PREVfTUFT Sykgewo+ICAJY2FzZSBHQU1NQV9NT0RFX01PREVfOEJJVDoKPiAgCWNhc2UgR0FNTUFfTU9ERV9N T0RFXzEwQklUOgo+ICAJCWlmICghaW50ZWxfY29sb3JfbHV0X2VudHJ5X2VxdWFsKGx1dDEsIGx1 dDIsCj4gIAkJCQkJCSBsdXRfc2l6ZTIsIGVycikpCj4gIAkJCXJldHVybiBmYWxzZTsKPiAgCQli cmVhazsKPiArCWNhc2UgR0FNTUFfTU9ERV9NT0RFXzEyQklUX01VTFRJX1NFR01FTlRFRDoKPiAr CQlpZiAoIWludGVsX2NvbG9yX2x1dF9lbnRyeV9tdWx0aV9lcXVhbChsdXQxLCBsdXQyLAo+ICsJ CQkJCQkgICAgICAgbHV0X3NpemUyLCBlcnIpKQo+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gKwkJYnJl YWs7Cj4gIAlkZWZhdWx0Ogo+ICAJCU1JU1NJTkdfQ0FTRShnYW1tYV9tb2RlKTsKPiAgCQkJcmV0 dXJuIGZhbHNlOwo+IEBAIC0xNzQ1LDYgKzE3OTYsMTQwIEBAIHN0YXRpYyB2b2lkIGdsa19yZWFk X2x1dHMoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAkJY3J0Y19zdGF0 ZS0+YmFzZS5nYW1tYV9sdXQgPSBnbGtfcmVhZF9sdXRfMTAoY3J0Y19zdGF0ZSwgUEFMX1BSRUNf SU5ERVhfVkFMVUUoMCkpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgdTE2IGNhbF9zdGVwX3NpemUodTE2 IGVuZF92YWwsIHUxNiBzdGFydF92YWwsIGludCBzdGVwcykKPiArewo+ICsJcmV0dXJuICgoZW5k X3ZhbCAtIHN0YXJ0X3ZhbCkgLyBzdGVwcyk7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZHJt X2NvbG9yX2x1dCAqCj4gK2ljbF9jb21wdXRlX2ludGVycG9sYXRlZF9nYW1tYV9sdXRfdmFsdWVz KHN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQsIHUzMiBsdXRfc2l6ZSkKPiArewo+ICsJdTE2IHJl ZF9zdGVwX3NpemUsIGdyZWVuX3N0ZXBfc2l6ZSwgYmx1ZV9zdGVwX3NpemU7Cj4gKwlpbnQgc3Rh cnQsIGVuZCwgc3RlcHM7Cj4gKwlpbnQgaSwgajsKPiArCj4gKwlmb3IgKGkgPSAxOyBpIDwgMjU3 IC0gMTsgaSsrKSB7Cj4gKwkJc3RhcnQgPSBpICogODsKPiArCQllbmQgPSAoaSArIDEpICogODsK PiArCQlzdGVwcyA9IGVuZCAtIHN0YXJ0Owo+ICsKPiArCQlyZWRfc3RlcF9zaXplID0gY2FsX3N0 ZXBfc2l6ZShsdXRbZW5kXS5yZWQsIGx1dFtzdGFydF0ucmVkLCBzdGVwcyk7Cj4gKwkJZ3JlZW5f c3RlcF9zaXplID0gY2FsX3N0ZXBfc2l6ZShsdXRbZW5kXS5ncmVlbiwgbHV0W3N0YXJ0XS5ncmVl biwgc3RlcHMpOwo+ICsJCWJsdWVfc3RlcF9zaXplID0gY2FsX3N0ZXBfc2l6ZShsdXRbZW5kXS5i bHVlLCBsdXRbc3RhcnRdLmJsdWUsIHN0ZXBzKTsKPiArCj4gKwkJZm9yIChqID0gc3RhcnQgKyAx OyBqIDwgZW5kOyBqKyspIHsKPiArCQkJbHV0W2pdLnJlZCA9IGx1dFtqIC0gMV0ucmVkICsgcmVk X3N0ZXBfc2l6ZTsKPiArCQkJbHV0W2pdLmdyZWVuID0gbHV0W2ogLSAxXS5ncmVlbiArIGdyZWVu X3N0ZXBfc2l6ZTsKPiArCQkJbHV0W2pdLmJsdWUgPSBsdXRbaiAtIDFdLmJsdWUgKyBibHVlX3N0 ZXBfc2l6ZTsKPiArCj4gKwkJCWkrKzsKCldoeSB3b3VsZCB0aGlzIGJlIG5lZWRlZD8KCj4gKwkJ fQo+ICsJfQo+ICsKPiArCWZvciAoaSA9IDI7IGkgPCAyNTYgLSAxOyBpKyspIHsKPiArCQlzdGFy dCA9IGkgKiA4ICogMTI4Owo+ICsJCWVuZCA9IChpICsgMSkgKiA4ICogMTI4Owo+ICsJCXN0ZXBz ID0gZW5kIC0gc3RhcnQ7Cj4gKwo+ICsJCXJlZF9zdGVwX3NpemUgPSBjYWxfc3RlcF9zaXplKGx1 dFtlbmRdLnJlZCwgbHV0W3N0YXJ0XS5yZWQsIHN0ZXBzKTsKPiArCQlncmVlbl9zdGVwX3NpemUg PSBjYWxfc3RlcF9zaXplKGx1dFtlbmRdLmdyZWVuLCBsdXRbc3RhcnRdLmdyZWVuLCBzdGVwcyk7 Cj4gKwkJYmx1ZV9zdGVwX3NpemUgPSBjYWxfc3RlcF9zaXplKGx1dFtlbmRdLmJsdWUsIGx1dFtz dGFydF0uYmx1ZSwgc3RlcHMpOwo+ICsKPiArCQlmb3IgKGogPSBzdGFydCArIDE7IGogPCBlbmQ7 IGorKykgewo+ICsJCQlsdXRbal0ucmVkID0gbHV0W2ogLSAxXS5yZWQgKyByZWRfc3RlcF9zaXpl Owo+ICsJCQlsdXRbal0uZ3JlZW4gPSBsdXRbaiAtIDFdLmdyZWVuICsgZ3JlZW5fc3RlcF9zaXpl Owo+ICsJCQlsdXRbal0uYmx1ZSA9IGx1dFtqIC0gMV0uYmx1ZSArIGJsdWVfc3RlcF9zaXplOwo+ ICsKPiArCQkJaSsrOwoKRGl0dG8uCgpJIHRoaW5rIGV2ZXJ5dGhpbmcgZWxzZSBjaGVja3Mgb3V0 LiBXaXRoIHRob3NlIGZpeGVkLAoKUmV2aWV3ZWQtYnk6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3Vs YUBpbnRlbC5jb20+CgoKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGx1dDsKPiArfQo+ICsK PiArc3RhdGljIHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqCj4gK2ljbF9yZWFkX2x1dF9tdWx0 aV9zZWdtZW50KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICt7 Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+ YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICsJaW50IGx1dF9zaXplID0gSU5URUxfSU5GTyhkZXZfcHJp diktPmNvbG9yLmdhbW1hX2x1dF9zaXplOwo+ICsJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBl Owo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iOwo+ICsJc3RydWN0IGRybV9jb2xv cl9sdXQgKmJsb2JfZGF0YTsKPiArCXUzMiBpLCB2YWwxLCB2YWwyOwo+ICsKPiArCWJsb2IgPSBk cm1fcHJvcGVydHlfY3JlYXRlX2Jsb2IoJmRldl9wcml2LT5kcm0sCj4gKwkJCQkJc2l6ZW9mKHN0 cnVjdCBkcm1fY29sb3JfbHV0KSAqIGx1dF9zaXplLAo+ICsJCQkJCU5VTEwpOwo+ICsJaWYgKElT X0VSUihibG9iKSkKPiArCQlyZXR1cm4gTlVMTDsKPiArCj4gKwlibG9iX2RhdGEgPSBibG9iLT5k YXRhOwo+ICsKPiArCUk5MTVfV1JJVEUoUFJFQ19QQUxfTVVMVElfU0VHX0lOREVYKHBpcGUpLCBQ QUxfUFJFQ19BVVRPX0lOQ1JFTUVOVCk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IDk7IGkrKykg ewo+ICsJCXZhbDEgPSBJOTE1X1JFQUQoUFJFQ19QQUxfTVVMVElfU0VHX0RBVEEocGlwZSkpOwo+ ICsJCXZhbDIgPSBJOTE1X1JFQUQoUFJFQ19QQUxfTVVMVElfU0VHX0RBVEEocGlwZSkpOwo+ICsK PiArCQlibG9iX2RhdGFbaV0ucmVkID0gUkVHX0ZJRUxEX0dFVChQQUxfUFJFQ19NVUxUSV9TRUdf UkVEX1VEV19NQVNLLCB2YWwyKSA8PCA2IHwKPiArCQkJCSAgIFJFR19GSUVMRF9HRVQoUEFMX1BS RUNfTVVMVElfU0VHX1JFRF9MRFdfTUFTSywgdmFsMSk7Cj4gKwkJYmxvYl9kYXRhW2ldLmdyZWVu ID0gUkVHX0ZJRUxEX0dFVChQQUxfUFJFQ19NVUxUSV9TRUdfR1JFRU5fVURXX01BU0ssIHZhbDIp IDw8IDYgfAo+ICsJCQkJICAgICBSRUdfRklFTERfR0VUKFBBTF9QUkVDX01VTFRJX1NFR19HUkVF Tl9MRFdfTUFTSywgdmFsMSk7Cj4gKwkJYmxvYl9kYXRhW2ldLmJsdWUgPSBSRUdfRklFTERfR0VU KFBBTF9QUkVDX01VTFRJX1NFR19CTFVFX1VEV19NQVNLLCB2YWwyKSA8PCA2IHwKPiArCQkJCSAg ICBSRUdfRklFTERfR0VUKFBBTF9QUkVDX01VTFRJX1NFR19CTFVFX0xEV19NQVNLLCB2YWwxKTsK PiArCX0KPiArCj4gKwlJOTE1X1dSSVRFKFBSRUNfUEFMX0lOREVYKHBpcGUpLCBQQUxfUFJFQ19B VVRPX0lOQ1JFTUVOVCk7Cj4gKwo+ICsJZm9yIChpID0gMTsgaSA8IDI1NzsgaSsrKSB7Cj4gKwkJ dmFsMSA9IEk5MTVfUkVBRChQUkVDX1BBTF9EQVRBKHBpcGUpKTsKPiArCQl2YWwyID0gSTkxNV9S RUFEKFBSRUNfUEFMX0RBVEEocGlwZSkpOwo+ICsKPiArCQlibG9iX2RhdGFbaSAqIDhdLnJlZCA9 IFJFR19GSUVMRF9HRVQoUEFMX1BSRUNfTVVMVElfU0VHX1JFRF9VRFdfTUFTSywgdmFsMikgPDwg NiB8Cj4gKwkJCQkgICAgICAgUkVHX0ZJRUxEX0dFVChQQUxfUFJFQ19NVUxUSV9TRUdfUkVEX0xE V19NQVNLLCB2YWwxKTsKPiArCQlibG9iX2RhdGFbaSAqIDhdLmdyZWVuID0gUkVHX0ZJRUxEX0dF VChQQUxfUFJFQ19NVUxUSV9TRUdfR1JFRU5fVURXX01BU0ssIHZhbDIpIDw8IDYgfAo+ICsJCQkJ CSBSRUdfRklFTERfR0VUKFBBTF9QUkVDX01VTFRJX1NFR19HUkVFTl9MRFdfTUFTSywgdmFsMSk7 Cj4gKwkJYmxvYl9kYXRhW2kgKiA4XS5ibHVlID0gUkVHX0ZJRUxEX0dFVChQQUxfUFJFQ19NVUxU SV9TRUdfQkxVRV9VRFdfTUFTSywgdmFsMikgPDwgNiB8Cj4gKwkJCQkJUkVHX0ZJRUxEX0dFVChQ QUxfUFJFQ19NVUxUSV9TRUdfQkxVRV9MRFdfTUFTSywgdmFsMSk7Cj4gKwl9Cj4gKwo+ICsJZm9y IChpID0gMDsgaSA8IDI1NjsgaSsrKSB7Cj4gKwkJdmFsMSA9IEk5MTVfUkVBRChQUkVDX1BBTF9E QVRBKHBpcGUpKTsKPiArCQl2YWwyID0gSTkxNV9SRUFEKFBSRUNfUEFMX0RBVEEocGlwZSkpOwo+ ICsKPiArCQlibG9iX2RhdGFbaSAqIDggKiAxMjhdLnJlZCA9IFJFR19GSUVMRF9HRVQoUEFMX1BS RUNfTVVMVElfU0VHX1JFRF9VRFdfTUFTSywgdmFsMikgPDwgNiB8Cj4gKwkJCQkJICAgICBSRUdf RklFTERfR0VUKFBBTF9QUkVDX01VTFRJX1NFR19SRURfTERXX01BU0ssIHZhbDEpOwo+ICsJCWJs b2JfZGF0YVtpICogOCAqIDEyOF0uZ3JlZW4gPSBSRUdfRklFTERfR0VUKFBBTF9QUkVDX01VTFRJ X1NFR19HUkVFTl9VRFdfTUFTSywgdmFsMikgPDwgNiB8Cj4gKwkJCQkJICAgICAgIFJFR19GSUVM RF9HRVQoUEFMX1BSRUNfTVVMVElfU0VHX0dSRUVOX0xEV19NQVNLLCB2YWwxKTsKPiArCQlibG9i X2RhdGFbaSAqIDggKiAxMjhdLmJsdWUgPSBSRUdfRklFTERfR0VUKFBBTF9QUkVDX01VTFRJX1NF R19CTFVFX1VEV19NQVNLLCB2YWwyKSA8PCA2IHwKPiArCQkJCQkgICAgICBSRUdfRklFTERfR0VU KFBBTF9QUkVDX01VTFRJX1NFR19CTFVFX0xEV19NQVNLLCB2YWwxKTsKPiArCX0KPiArCj4gKwli bG9iX2RhdGFbbHV0X3NpemUgLSAxXS5yZWQgPSBSRUdfRklFTERfR0VUKFBSRUNfUEFMX0dDX01B WF9SR0JfTUFTSywKPiArCQkJCQkJICAgIEk5MTVfUkVBRChQUkVDX1BBTF9HQ19NQVgocGlwZSwg MCkpKTsKPiArCWJsb2JfZGF0YVtsdXRfc2l6ZSAtIDFdLmdyZWVuID0gUkVHX0ZJRUxEX0dFVChQ UkVDX1BBTF9HQ19NQVhfUkdCX01BU0ssCj4gKwkJCQkJCSAgICAgIEk5MTVfUkVBRChQUkVDX1BB TF9HQ19NQVgocGlwZSwgMSkpKTsKPiArCWJsb2JfZGF0YVtsdXRfc2l6ZSAtIDFdLmJsdWUgPSBS RUdfRklFTERfR0VUKFBSRUNfUEFMX0dDX01BWF9SR0JfTUFTSywKPiArCQkJCQkJICAgICBJOTE1 X1JFQUQoUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDEpKSk7Cj4gKwo+ICsJYmxvYl9kYXRhID0gaWNs X2NvbXB1dGVfaW50ZXJwb2xhdGVkX2dhbW1hX2x1dF92YWx1ZXMoYmxvYl9kYXRhLCBsdXRfc2l6 ZSk7Cj4gKwo+ICsJcmV0dXJuIGJsb2I7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGljbF9yZWFk X2x1dHMoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gK3sKPiArCWlmICgo Y3J0Y19zdGF0ZS0+Z2FtbWFfbW9kZSAmIEdBTU1BX01PREVfTU9ERV9NQVNLKSA9PQo+ICsJICAg IEdBTU1BX01PREVfTU9ERV84QklUKQo+ICsJCWNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ID0g aTl4eF9yZWFkX2x1dF84KGNydGNfc3RhdGUpOwo+ICsJZWxzZSBpZiAoKGNydGNfc3RhdGUtPmdh bW1hX21vZGUgJiBHQU1NQV9NT0RFX01PREVfTUFTSykgPT0KPiArCQkgR0FNTUFfTU9ERV9NT0RF XzEyQklUX01VTFRJX1NFR01FTlRFRCkKPiArCQljcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCA9 IGljbF9yZWFkX2x1dF9tdWx0aV9zZWdtZW50KGNydGNfc3RhdGUpOwo+ICsJZWxzZQo+ICsJCWNy dGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ID0gZ2xrX3JlYWRfbHV0XzEwKGNydGNfc3RhdGUsIFBB TF9QUkVDX0lOREVYX1ZBTFVFKDApKTsKPiArfQo+ICsKPiAgdm9pZCBpbnRlbF9jb2xvcl9pbml0 KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiBAQCAtMTc4OCw2ICsxOTcz LDcgQEAgdm9pZCBpbnRlbF9jb2xvcl9pbml0KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAK PiAgCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkgewo+ICAJCQlkZXZfcHJpdi0+ZGlz cGxheS5sb2FkX2x1dHMgPSBpY2xfbG9hZF9sdXRzOwo+ICsJCQlkZXZfcHJpdi0+ZGlzcGxheS5y ZWFkX2x1dHMgPSBpY2xfcmVhZF9sdXRzOwo+ICAJCX0gZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShk ZXZfcHJpdikgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPiAgCQkJZGV2X3ByaXYtPmRp c3BsYXkubG9hZF9sdXRzID0gZ2xrX2xvYWRfbHV0czsKPiAgCQkJZGV2X3ByaXYtPmRpc3BsYXku cmVhZF9sdXRzID0gZ2xrX3JlYWRfbHV0czsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBpbmRl eCBiZjM3ZWNlLi44NDRkZDYyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gQEAgLTEw Mzc4LDYgKzEwMzc4LDcgQEAgZW51bSBza2xfcG93ZXJfZ2F0ZSB7Cj4gIAo+ICAjZGVmaW5lIFBS RUNfUEFMX0lOREVYKHBpcGUpCQlfTU1JT19QSVBFKHBpcGUsIF9QQUxfUFJFQ19JTkRFWF9BLCBf UEFMX1BSRUNfSU5ERVhfQikKPiAgI2RlZmluZSBQUkVDX1BBTF9EQVRBKHBpcGUpCQlfTU1JT19Q SVBFKHBpcGUsIF9QQUxfUFJFQ19EQVRBX0EsIF9QQUxfUFJFQ19EQVRBX0IpCj4gKyNkZWZpbmUg UFJFQ19QQUxfR0NfTUFYX1JHQl9NQVNLCSBSRUdfR0VOTUFTSygxNSwgMCkKPiAgI2RlZmluZSBQ UkVDX1BBTF9HQ19NQVgocGlwZSwgaSkJX01NSU8oX1BJUEUocGlwZSwgX1BBTF9QUkVDX0dDX01B WF9BLCBfUEFMX1BSRUNfR0NfTUFYX0IpICsgKGkpICogNCkKPiAgI2RlZmluZSBQUkVDX1BBTF9F WFRfR0NfTUFYKHBpcGUsIGkpCV9NTUlPKF9QSVBFKHBpcGUsIF9QQUxfUFJFQ19FWFRfR0NfTUFY X0EsIF9QQUxfUFJFQ19FWFRfR0NfTUFYX0IpICsgKGkpICogNCkKPiAgI2RlZmluZSBQUkVDX1BB TF9FWFQyX0dDX01BWChwaXBlLCBpKQlfTU1JTyhfUElQRShwaXBlLCBfUEFMX1BSRUNfRVhUMl9H Q19NQVhfQSwgX1BBTF9QUkVDX0VYVDJfR0NfTUFYX0IpICsgKGkpICogNCkKPiBAQCAtMTA0MDEs NiArMTA0MDIsMTIgQEAgZW51bSBza2xfcG93ZXJfZ2F0ZSB7Cj4gIAo+ICAjZGVmaW5lIF9QQUxf UFJFQ19NVUxUSV9TRUdfREFUQV9BCTB4NEE0MEMKPiAgI2RlZmluZSBfUEFMX1BSRUNfTVVMVElf U0VHX0RBVEFfQgkweDRBQzBDCj4gKyNkZWZpbmUgIFBBTF9QUkVDX01VTFRJX1NFR19SRURfTERX X01BU0sgICBSRUdfR0VOTUFTSygyOSwgMjQpCj4gKyNkZWZpbmUgIFBBTF9QUkVDX01VTFRJX1NF R19SRURfVURXX01BU0sgICBSRUdfR0VOTUFTSygyOSwgMjApCj4gKyNkZWZpbmUgIFBBTF9QUkVD X01VTFRJX1NFR19HUkVFTl9MRFdfTUFTSyBSRUdfR0VOTUFTSygxOSwgMTQpCj4gKyNkZWZpbmUg IFBBTF9QUkVDX01VTFRJX1NFR19HUkVFTl9VRFdfTUFTSyBSRUdfR0VOTUFTSygxOSwgMTApCj4g KyNkZWZpbmUgIFBBTF9QUkVDX01VTFRJX1NFR19CTFVFX0xEV19NQVNLICBSRUdfR0VOTUFTSyg5 LCA0KQo+ICsjZGVmaW5lICBQQUxfUFJFQ19NVUxUSV9TRUdfQkxVRV9VRFdfTUFTSyAgUkVHX0dF Tk1BU0soOSwgMCkKPiAgCj4gICNkZWZpbmUgUFJFQ19QQUxfTVVMVElfU0VHX0lOREVYKHBpcGUp CV9NTUlPX1BJUEUocGlwZSwgXAo+ICAJCQkJCV9QQUxfUFJFQ19NVUxUSV9TRUdfSU5ERVhfQSwg XAoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBHcmFwaGljcyBDZW50ZXIKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4