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 13:24:14 +0300 Message-ID: <87a7azuuy9.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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id C48066FC58 for ; Fri, 20 Sep 2019 10:24:20 +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+ICsJfQoKU28g YXBwYXJlbnRseSB3ZSdyZSBmYWNpbmcgc29tZSBpc3N1ZXMgd2l0aCB0aGUgcmVhZG91dCBvZiB0 aGUgcmVsZXZhbnQKcmVnaXN0ZXJzLiBJIHN1Z2dlc3Qgd2Ugd3JhcCB0aGUgYWJvdmUgdHdvIGxv b3BzIGluCgojaWYgMAoKCiNlbmRpZgoKd2l0aCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkuCgpJ IGRvbid0IG11Y2ggbGlrZSB0aGlzLCBidXQgaGF2aW5nICpzb21lKiB2YWxpZGF0aW9uIG9mIHRo aXMgaXMgYmV0dGVyCnRoYW4gKm5vKiB2YWxpZGF0aW9uLgoKQlIsCkphbmkuCgoKPiArCj4gKwly ZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiAgYm9vbCBpbnRlbF9jb2xvcl9sdXRfZXF1YWwoc3RydWN0 IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iMSwKPiAgCQkJICAgc3RydWN0IGRybV9wcm9wZXJ0eV9i bG9iICpibG9iMiwKPiAgCQkJICAgdTMyIGdhbW1hX21vZGUsIHUzMiBiaXRfcHJlY2lzaW9uKQo+ IEBAIC0xNDgyLDE2ICsxNTM2LDggQEAgYm9vbCBpbnRlbF9jb2xvcl9sdXRfZXF1YWwoc3RydWN0 IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iMSwKPiAgCWx1dF9zaXplMiA9IGRybV9jb2xvcl9sdXRf c2l6ZShibG9iMik7Cj4gIAo+ICAJLyogY2hlY2sgc3cgYW5kIGh3IGx1dCBzaXplICovCj4gLQlz d2l0Y2ggKGdhbW1hX21vZGUpIHsKPiAtCWNhc2UgR0FNTUFfTU9ERV9NT0RFXzhCSVQ6Cj4gLQlj YXNlIEdBTU1BX01PREVfTU9ERV8xMEJJVDoKPiAtCQlpZiAobHV0X3NpemUxICE9IGx1dF9zaXpl MikKPiAtCQkJcmV0dXJuIGZhbHNlOwo+IC0JCWJyZWFrOwo+IC0JZGVmYXVsdDoKPiAtCQlNSVNT SU5HX0NBU0UoZ2FtbWFfbW9kZSk7Cj4gLQkJCXJldHVybiBmYWxzZTsKPiAtCX0KPiArCWlmIChs dXRfc2l6ZTEgIT0gbHV0X3NpemUyKQo+ICsJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlsdXQxID0g YmxvYjEtPmRhdGE7Cj4gIAlsdXQyID0gYmxvYjItPmRhdGE7Cj4gQEAgLTE0OTksMTMgKzE1NDUs MTggQEAgYm9vbCBpbnRlbF9jb2xvcl9sdXRfZXF1YWwoc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9i ICpibG9iMSwKPiAgCWVyciA9IDB4ZmZmZiA+PiBiaXRfcHJlY2lzaW9uOwo+ICAKPiAgCS8qIGNo ZWNrIHN3IGFuZCBodyBsdXQgZW50cnkgdG8gYmUgZXF1YWwgKi8KPiAtCXN3aXRjaCAoZ2FtbWFf bW9kZSkgewo+ICsJc3dpdGNoIChnYW1tYV9tb2RlICYgR0FNTUFfTU9ERV9NT0RFX01BU0spIHsK PiAgCWNhc2UgR0FNTUFfTU9ERV9NT0RFXzhCSVQ6Cj4gIAljYXNlIEdBTU1BX01PREVfTU9ERV8x MEJJVDoKPiAgCQlpZiAoIWludGVsX2NvbG9yX2x1dF9lbnRyeV9lcXVhbChsdXQxLCBsdXQyLAo+ ICAJCQkJCQkgbHV0X3NpemUyLCBlcnIpKQo+ICAJCQlyZXR1cm4gZmFsc2U7Cj4gIAkJYnJlYWs7 Cj4gKwljYXNlIEdBTU1BX01PREVfTU9ERV8xMkJJVF9NVUxUSV9TRUdNRU5URUQ6Cj4gKwkJaWYg KCFpbnRlbF9jb2xvcl9sdXRfZW50cnlfbXVsdGlfZXF1YWwobHV0MSwgbHV0MiwKPiArCQkJCQkJ ICAgICAgIGx1dF9zaXplMiwgZXJyKSkKPiArCQkJcmV0dXJuIGZhbHNlOwo+ICsJCWJyZWFrOwo+ ICAJZGVmYXVsdDoKPiAgCQlNSVNTSU5HX0NBU0UoZ2FtbWFfbW9kZSk7Cj4gIAkJCXJldHVybiBm YWxzZTsKPiBAQCAtMTc0NSw2ICsxNzk2LDE0MCBAQCBzdGF0aWMgdm9pZCBnbGtfcmVhZF9sdXRz KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJCWNydGNfc3RhdGUtPmJh c2UuZ2FtbWFfbHV0ID0gZ2xrX3JlYWRfbHV0XzEwKGNydGNfc3RhdGUsIFBBTF9QUkVDX0lOREVY X1ZBTFVFKDApKTsKPiAgfQo+ICAKPiArc3RhdGljIHUxNiBjYWxfc3RlcF9zaXplKHUxNiBlbmRf dmFsLCB1MTYgc3RhcnRfdmFsLCBpbnQgc3RlcHMpCj4gK3sKPiArCXJldHVybiAoKGVuZF92YWwg LSBzdGFydF92YWwpIC8gc3RlcHMpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRybV9jb2xv cl9sdXQgKgo+ICtpY2xfY29tcHV0ZV9pbnRlcnBvbGF0ZWRfZ2FtbWFfbHV0X3ZhbHVlcyhzdHJ1 Y3QgZHJtX2NvbG9yX2x1dCAqbHV0LCB1MzIgbHV0X3NpemUpCj4gK3sKPiArCXUxNiByZWRfc3Rl cF9zaXplLCBncmVlbl9zdGVwX3NpemUsIGJsdWVfc3RlcF9zaXplOwo+ICsJaW50IHN0YXJ0LCBl bmQsIHN0ZXBzOwo+ICsJaW50IGksIGo7Cj4gKwo+ICsJZm9yIChpID0gMTsgaSA8IDI1NyAtIDE7 IGkrKykgewo+ICsJCXN0YXJ0ID0gaSAqIDg7Cj4gKwkJZW5kID0gKGkgKyAxKSAqIDg7Cj4gKwkJ c3RlcHMgPSBlbmQgLSBzdGFydDsKPiArCj4gKwkJcmVkX3N0ZXBfc2l6ZSA9IGNhbF9zdGVwX3Np emUobHV0W2VuZF0ucmVkLCBsdXRbc3RhcnRdLnJlZCwgc3RlcHMpOwo+ICsJCWdyZWVuX3N0ZXBf c2l6ZSA9IGNhbF9zdGVwX3NpemUobHV0W2VuZF0uZ3JlZW4sIGx1dFtzdGFydF0uZ3JlZW4sIHN0 ZXBzKTsKPiArCQlibHVlX3N0ZXBfc2l6ZSA9IGNhbF9zdGVwX3NpemUobHV0W2VuZF0uYmx1ZSwg bHV0W3N0YXJ0XS5ibHVlLCBzdGVwcyk7Cj4gKwo+ICsJCWZvciAoaiA9IHN0YXJ0ICsgMTsgaiA8 IGVuZDsgaisrKSB7Cj4gKwkJCWx1dFtqXS5yZWQgPSBsdXRbaiAtIDFdLnJlZCArIHJlZF9zdGVw X3NpemU7Cj4gKwkJCWx1dFtqXS5ncmVlbiA9IGx1dFtqIC0gMV0uZ3JlZW4gKyBncmVlbl9zdGVw X3NpemU7Cj4gKwkJCWx1dFtqXS5ibHVlID0gbHV0W2ogLSAxXS5ibHVlICsgYmx1ZV9zdGVwX3Np emU7Cj4gKwo+ICsJCQlpKys7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCWZvciAoaSA9IDI7IGkgPCAy NTYgLSAxOyBpKyspIHsKPiArCQlzdGFydCA9IGkgKiA4ICogMTI4Owo+ICsJCWVuZCA9IChpICsg MSkgKiA4ICogMTI4Owo+ICsJCXN0ZXBzID0gZW5kIC0gc3RhcnQ7Cj4gKwo+ICsJCXJlZF9zdGVw X3NpemUgPSBjYWxfc3RlcF9zaXplKGx1dFtlbmRdLnJlZCwgbHV0W3N0YXJ0XS5yZWQsIHN0ZXBz KTsKPiArCQlncmVlbl9zdGVwX3NpemUgPSBjYWxfc3RlcF9zaXplKGx1dFtlbmRdLmdyZWVuLCBs dXRbc3RhcnRdLmdyZWVuLCBzdGVwcyk7Cj4gKwkJYmx1ZV9zdGVwX3NpemUgPSBjYWxfc3RlcF9z aXplKGx1dFtlbmRdLmJsdWUsIGx1dFtzdGFydF0uYmx1ZSwgc3RlcHMpOwo+ICsKPiArCQlmb3Ig KGogPSBzdGFydCArIDE7IGogPCBlbmQ7IGorKykgewo+ICsJCQlsdXRbal0ucmVkID0gbHV0W2og LSAxXS5yZWQgKyByZWRfc3RlcF9zaXplOwo+ICsJCQlsdXRbal0uZ3JlZW4gPSBsdXRbaiAtIDFd LmdyZWVuICsgZ3JlZW5fc3RlcF9zaXplOwo+ICsJCQlsdXRbal0uYmx1ZSA9IGx1dFtqIC0gMV0u Ymx1ZSArIGJsdWVfc3RlcF9zaXplOwo+ICsKPiArCQkJaSsrOwo+ICsJCX0KPiArCX0KPiArCj4g KwlyZXR1cm4gbHV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9i ICoKPiAraWNsX3JlYWRfbHV0X211bHRpX3NlZ21lbnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gKwlpbnQgbHV0X3Np emUgPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+Y29sb3IuZ2FtbWFfbHV0X3NpemU7Cj4gKwllbnVt IHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJs b2I7Cj4gKwlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqYmxvYl9kYXRhOwo+ICsJdTMyIGksIHZhbDEs IHZhbDI7Cj4gKwo+ICsJYmxvYiA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfYmxvYigmZGV2X3ByaXYt PmRybSwKPiArCQkJCQlzaXplb2Yoc3RydWN0IGRybV9jb2xvcl9sdXQpICogbHV0X3NpemUsCj4g KwkJCQkJTlVMTCk7Cj4gKwlpZiAoSVNfRVJSKGJsb2IpKQo+ICsJCXJldHVybiBOVUxMOwo+ICsK PiArCWJsb2JfZGF0YSA9IGJsb2ItPmRhdGE7Cj4gKwo+ICsJSTkxNV9XUklURShQUkVDX1BBTF9N VUxUSV9TRUdfSU5ERVgocGlwZSksIFBBTF9QUkVDX0FVVE9fSU5DUkVNRU5UKTsKPiArCj4gKwlm b3IgKGkgPSAwOyBpIDwgOTsgaSsrKSB7Cj4gKwkJdmFsMSA9IEk5MTVfUkVBRChQUkVDX1BBTF9N VUxUSV9TRUdfREFUQShwaXBlKSk7Cj4gKwkJdmFsMiA9IEk5MTVfUkVBRChQUkVDX1BBTF9NVUxU SV9TRUdfREFUQShwaXBlKSk7Cj4gKwo+ICsJCWJsb2JfZGF0YVtpXS5yZWQgPSBSRUdfRklFTERf R0VUKFBBTF9QUkVDX01VTFRJX1NFR19SRURfVURXX01BU0ssIHZhbDIpIDw8IDYgfAo+ICsJCQkJ ICAgUkVHX0ZJRUxEX0dFVChQQUxfUFJFQ19NVUxUSV9TRUdfUkVEX0xEV19NQVNLLCB2YWwxKTsK PiArCQlibG9iX2RhdGFbaV0uZ3JlZW4gPSBSRUdfRklFTERfR0VUKFBBTF9QUkVDX01VTFRJX1NF R19HUkVFTl9VRFdfTUFTSywgdmFsMikgPDwgNiB8Cj4gKwkJCQkgICAgIFJFR19GSUVMRF9HRVQo UEFMX1BSRUNfTVVMVElfU0VHX0dSRUVOX0xEV19NQVNLLCB2YWwxKTsKPiArCQlibG9iX2RhdGFb aV0uYmx1ZSA9IFJFR19GSUVMRF9HRVQoUEFMX1BSRUNfTVVMVElfU0VHX0JMVUVfVURXX01BU0ss IHZhbDIpIDw8IDYgfAo+ICsJCQkJICAgIFJFR19GSUVMRF9HRVQoUEFMX1BSRUNfTVVMVElfU0VH X0JMVUVfTERXX01BU0ssIHZhbDEpOwo+ICsJfQo+ICsKPiArCUk5MTVfV1JJVEUoUFJFQ19QQUxf SU5ERVgocGlwZSksIFBBTF9QUkVDX0FVVE9fSU5DUkVNRU5UKTsKPiArCj4gKwlmb3IgKGkgPSAx OyBpIDwgMjU3OyBpKyspIHsKPiArCQl2YWwxID0gSTkxNV9SRUFEKFBSRUNfUEFMX0RBVEEocGlw ZSkpOwo+ICsJCXZhbDIgPSBJOTE1X1JFQUQoUFJFQ19QQUxfREFUQShwaXBlKSk7Cj4gKwo+ICsJ CWJsb2JfZGF0YVtpICogOF0ucmVkID0gUkVHX0ZJRUxEX0dFVChQQUxfUFJFQ19NVUxUSV9TRUdf UkVEX1VEV19NQVNLLCB2YWwyKSA8PCA2IHwKPiArCQkJCSAgICAgICBSRUdfRklFTERfR0VUKFBB TF9QUkVDX01VTFRJX1NFR19SRURfTERXX01BU0ssIHZhbDEpOwo+ICsJCWJsb2JfZGF0YVtpICog OF0uZ3JlZW4gPSBSRUdfRklFTERfR0VUKFBBTF9QUkVDX01VTFRJX1NFR19HUkVFTl9VRFdfTUFT SywgdmFsMikgPDwgNiB8Cj4gKwkJCQkJIFJFR19GSUVMRF9HRVQoUEFMX1BSRUNfTVVMVElfU0VH X0dSRUVOX0xEV19NQVNLLCB2YWwxKTsKPiArCQlibG9iX2RhdGFbaSAqIDhdLmJsdWUgPSBSRUdf RklFTERfR0VUKFBBTF9QUkVDX01VTFRJX1NFR19CTFVFX1VEV19NQVNLLCB2YWwyKSA8PCA2IHwK PiArCQkJCQlSRUdfRklFTERfR0VUKFBBTF9QUkVDX01VTFRJX1NFR19CTFVFX0xEV19NQVNLLCB2 YWwxKTsKPiArCX0KPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKPiArCQl2YWwx ID0gSTkxNV9SRUFEKFBSRUNfUEFMX0RBVEEocGlwZSkpOwo+ICsJCXZhbDIgPSBJOTE1X1JFQUQo UFJFQ19QQUxfREFUQShwaXBlKSk7Cj4gKwo+ICsJCWJsb2JfZGF0YVtpICogOCAqIDEyOF0ucmVk ID0gUkVHX0ZJRUxEX0dFVChQQUxfUFJFQ19NVUxUSV9TRUdfUkVEX1VEV19NQVNLLCB2YWwyKSA8 PCA2IHwKPiArCQkJCQkgICAgIFJFR19GSUVMRF9HRVQoUEFMX1BSRUNfTVVMVElfU0VHX1JFRF9M RFdfTUFTSywgdmFsMSk7Cj4gKwkJYmxvYl9kYXRhW2kgKiA4ICogMTI4XS5ncmVlbiA9IFJFR19G SUVMRF9HRVQoUEFMX1BSRUNfTVVMVElfU0VHX0dSRUVOX1VEV19NQVNLLCB2YWwyKSA8PCA2IHwK PiArCQkJCQkgICAgICAgUkVHX0ZJRUxEX0dFVChQQUxfUFJFQ19NVUxUSV9TRUdfR1JFRU5fTERX X01BU0ssIHZhbDEpOwo+ICsJCWJsb2JfZGF0YVtpICogOCAqIDEyOF0uYmx1ZSA9IFJFR19GSUVM RF9HRVQoUEFMX1BSRUNfTVVMVElfU0VHX0JMVUVfVURXX01BU0ssIHZhbDIpIDw8IDYgfAo+ICsJ CQkJCSAgICAgIFJFR19GSUVMRF9HRVQoUEFMX1BSRUNfTVVMVElfU0VHX0JMVUVfTERXX01BU0ss IHZhbDEpOwo+ICsJfQo+ICsKPiArCWJsb2JfZGF0YVtsdXRfc2l6ZSAtIDFdLnJlZCA9IFJFR19G SUVMRF9HRVQoUFJFQ19QQUxfR0NfTUFYX1JHQl9NQVNLLAo+ICsJCQkJCQkgICAgSTkxNV9SRUFE KFBSRUNfUEFMX0dDX01BWChwaXBlLCAwKSkpOwo+ICsJYmxvYl9kYXRhW2x1dF9zaXplIC0gMV0u Z3JlZW4gPSBSRUdfRklFTERfR0VUKFBSRUNfUEFMX0dDX01BWF9SR0JfTUFTSywKPiArCQkJCQkJ ICAgICAgSTkxNV9SRUFEKFBSRUNfUEFMX0dDX01BWChwaXBlLCAxKSkpOwo+ICsJYmxvYl9kYXRh W2x1dF9zaXplIC0gMV0uYmx1ZSA9IFJFR19GSUVMRF9HRVQoUFJFQ19QQUxfR0NfTUFYX1JHQl9N QVNLLAo+ICsJCQkJCQkgICAgIEk5MTVfUkVBRChQUkVDX1BBTF9HQ19NQVgocGlwZSwgMSkpKTsK PiArCj4gKwlibG9iX2RhdGEgPSBpY2xfY29tcHV0ZV9pbnRlcnBvbGF0ZWRfZ2FtbWFfbHV0X3Zh bHVlcyhibG9iX2RhdGEsIGx1dF9zaXplKTsKPiArCj4gKwlyZXR1cm4gYmxvYjsKPiArfQo+ICsK PiArc3RhdGljIHZvaWQgaWNsX3JlYWRfbHV0cyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKPiArewo+ICsJaWYgKChjcnRjX3N0YXRlLT5nYW1tYV9tb2RlICYgR0FNTUFfTU9E RV9NT0RFX01BU0spID09Cj4gKwkgICAgR0FNTUFfTU9ERV9NT0RFXzhCSVQpCj4gKwkJY3J0Y19z dGF0ZS0+YmFzZS5nYW1tYV9sdXQgPSBpOXh4X3JlYWRfbHV0XzgoY3J0Y19zdGF0ZSk7Cj4gKwll bHNlIGlmICgoY3J0Y19zdGF0ZS0+Z2FtbWFfbW9kZSAmIEdBTU1BX01PREVfTU9ERV9NQVNLKSA9 PQo+ICsJCSBHQU1NQV9NT0RFX01PREVfMTJCSVRfTVVMVElfU0VHTUVOVEVEKQo+ICsJCWNydGNf c3RhdGUtPmJhc2UuZ2FtbWFfbHV0ID0gaWNsX3JlYWRfbHV0X211bHRpX3NlZ21lbnQoY3J0Y19z dGF0ZSk7Cj4gKwllbHNlCj4gKwkJY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQgPSBnbGtfcmVh ZF9sdXRfMTAoY3J0Y19zdGF0ZSwgUEFMX1BSRUNfSU5ERVhfVkFMVUUoMCkpOwo+ICt9Cj4gKwo+ ICB2b2lkIGludGVsX2NvbG9yX2luaXQoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIHsKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5k ZXYpOwo+IEBAIC0xNzg4LDYgKzE5NzMsNyBAQCB2b2lkIGludGVsX2NvbG9yX2luaXQoc3RydWN0 IGludGVsX2NydGMgKmNydGMpCj4gIAo+ICAJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEx KSB7Cj4gIAkJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGljbF9sb2FkX2x1dHM7Cj4g KwkJCWRldl9wcml2LT5kaXNwbGF5LnJlYWRfbHV0cyA9IGljbF9yZWFkX2x1dHM7Cj4gIAkJfSBl bHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2 KSkgewo+ICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMgPSBnbGtfbG9hZF9sdXRzOwo+ ICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5yZWFkX2x1dHMgPSBnbGtfcmVhZF9sdXRzOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaAo+IGluZGV4IGJmMzdlY2UuLjg0NGRkNjIgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmgKPiBAQCAtMTAzNzgsNiArMTAzNzgsNyBAQCBlbnVtIHNrbF9wb3dlcl9n YXRlIHsKPiAgCj4gICNkZWZpbmUgUFJFQ19QQUxfSU5ERVgocGlwZSkJCV9NTUlPX1BJUEUocGlw ZSwgX1BBTF9QUkVDX0lOREVYX0EsIF9QQUxfUFJFQ19JTkRFWF9CKQo+ICAjZGVmaW5lIFBSRUNf UEFMX0RBVEEocGlwZSkJCV9NTUlPX1BJUEUocGlwZSwgX1BBTF9QUkVDX0RBVEFfQSwgX1BBTF9Q UkVDX0RBVEFfQikKPiArI2RlZmluZSBQUkVDX1BBTF9HQ19NQVhfUkdCX01BU0sJIFJFR19HRU5N QVNLKDE1LCAwKQo+ICAjZGVmaW5lIFBSRUNfUEFMX0dDX01BWChwaXBlLCBpKQlfTU1JTyhfUElQ RShwaXBlLCBfUEFMX1BSRUNfR0NfTUFYX0EsIF9QQUxfUFJFQ19HQ19NQVhfQikgKyAoaSkgKiA0 KQo+ICAjZGVmaW5lIFBSRUNfUEFMX0VYVF9HQ19NQVgocGlwZSwgaSkJX01NSU8oX1BJUEUocGlw ZSwgX1BBTF9QUkVDX0VYVF9HQ19NQVhfQSwgX1BBTF9QUkVDX0VYVF9HQ19NQVhfQikgKyAoaSkg KiA0KQo+ICAjZGVmaW5lIFBSRUNfUEFMX0VYVDJfR0NfTUFYKHBpcGUsIGkpCV9NTUlPKF9QSVBF KHBpcGUsIF9QQUxfUFJFQ19FWFQyX0dDX01BWF9BLCBfUEFMX1BSRUNfRVhUMl9HQ19NQVhfQikg KyAoaSkgKiA0KQo+IEBAIC0xMDQwMSw2ICsxMDQwMiwxMiBAQCBlbnVtIHNrbF9wb3dlcl9nYXRl IHsKPiAgCj4gICNkZWZpbmUgX1BBTF9QUkVDX01VTFRJX1NFR19EQVRBX0EJMHg0QTQwQwo+ICAj ZGVmaW5lIF9QQUxfUFJFQ19NVUxUSV9TRUdfREFUQV9CCTB4NEFDMEMKPiArI2RlZmluZSAgUEFM X1BSRUNfTVVMVElfU0VHX1JFRF9MRFdfTUFTSyAgIFJFR19HRU5NQVNLKDI5LCAyNCkKPiArI2Rl ZmluZSAgUEFMX1BSRUNfTVVMVElfU0VHX1JFRF9VRFdfTUFTSyAgIFJFR19HRU5NQVNLKDI5LCAy MCkKPiArI2RlZmluZSAgUEFMX1BSRUNfTVVMVElfU0VHX0dSRUVOX0xEV19NQVNLIFJFR19HRU5N QVNLKDE5LCAxNCkKPiArI2RlZmluZSAgUEFMX1BSRUNfTVVMVElfU0VHX0dSRUVOX1VEV19NQVNL IFJFR19HRU5NQVNLKDE5LCAxMCkKPiArI2RlZmluZSAgUEFMX1BSRUNfTVVMVElfU0VHX0JMVUVf TERXX01BU0sgIFJFR19HRU5NQVNLKDksIDQpCj4gKyNkZWZpbmUgIFBBTF9QUkVDX01VTFRJX1NF R19CTFVFX1VEV19NQVNLICBSRUdfR0VOTUFTSyg5LCAwKQo+ICAKPiAgI2RlZmluZSBQUkVDX1BB TF9NVUxUSV9TRUdfSU5ERVgocGlwZSkJX01NSU9fUElQRShwaXBlLCBcCj4gIAkJCQkJX1BBTF9Q UkVDX01VTFRJX1NFR19JTkRFWF9BLCBcCgotLSAKSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291 cmNlIEdyYXBoaWNzIENlbnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZng=