From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 8BCA2D20688 for ; Wed, 16 Oct 2024 01:28:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Message-ID:MIME-Version: Content-Type:Content-Transfer-Encoding:References:In-Reply-To:Subject:Cc:To: From:Date:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=BdnsitOZSIXwI5RQlS7tzQcQf+aOzHgtMAr6yMvPm+o=; b=cfDOEU+Hm6rgr+VEgb+U1FnMDS DkRFc0gVm30cB91VxPtbqgc0TEof4+pSDZKU2psWOln55yxM+kq0F5mGob3IoD0262FejvJYq2Qr1 liJGLiKmEZnwaS8y+HVzRQb+hcEUJFy9lPyWkzC5/kJPEN238JOYJSqXx70dlS3fGZR8SaikgzAut zgKFOKDM6a5LtA5WmUPEDhoOzXnXp00ZmYz47RXCCwBw0RBYzL/pXR80cSH19FKtnC4LouEIF1Sqx zwDYUUA0AwAPLAMwx2b39P6NfJZAQPiYQd8xRM8vO1bqzRkO4yU5ZW/JuqjTFKegElG3BD0BdHbPT EDjT5FUw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t0spz-0000000A8Ul-1kin; Wed, 16 Oct 2024 01:28:31 +0000 Received: from m16.mail.163.com ([220.197.31.4]) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t0soU-0000000A8EQ-21Xd; Wed, 16 Oct 2024 01:27:00 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=Date:From:Subject:Content-Type:MIME-Version: Message-ID; bh=P0ekQvQ+dPoIFA6wGxuRLazrhmw8eTenDFS4dndW1uM=; b=F t2CjACzuv4kdQE+evu2GDrf/Sc5A+RuOfsOv1al6gcwt0FBez/GylMtLs8NVmtNv 5jt8gareIlVg0YoaqSDoGLnMP/7SqmFuVppShtcE6dL29bBdMbGN5qvTXwcn3xrd R0aRoulShTgmw6dJ0266sZ7LKtbad/5DrMuj6IOgvE= Received: from andyshrk$163.com ( [58.22.7.114] ) by ajax-webmail-wmsvr-40-105 (Coremail) ; Wed, 16 Oct 2024 09:26:14 +0800 (CST) X-Originating-IP: [58.22.7.114] Date: Wed, 16 Oct 2024 09:26:14 +0800 (CST) From: "Andy Yan" To: "Piotr Zalewski" Cc: hjc@rock-chips.com, heiko@sntech.de, andy.yan@rock-chips.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, skhan@linuxfoundation.org, "Daniel Stone" , "Dragan Simic" , "Diederik de Haas" Subject: Re:[PATCH v5] rockchip/drm: vop2: add support for gamma LUT X-Priority: 3 X-Mailer: Coremail Webmail Server Version XT5.0.14 build 20240801(9da12a7b) Copyright (c) 2002-2024 www.mailtech.cn 163com In-Reply-To: <20241014222022.571819-4-pZ010001011111@proton.me> References: <20241014222022.571819-4-pZ010001011111@proton.me> X-NTES-SC: AL_Qu2ZC/yfvkEs4iCRZekXn0kXhec2W8Czvvgg34JRP5k0tyTsxzgGbW9cHXjP+s6ULwOhoAi6XyNfxM5FYqxheYf70yWZ7UbNR57PtvYxrm1k Content-Transfer-Encoding: base64 Content-Type: text/plain; charset=UTF-8 MIME-Version: 1.0 Message-ID: <13fc0084.1321.19292eec34e.Coremail.andyshrk@163.com> X-Coremail-Locale: zh_CN X-CM-TRANSID: aSgvCgDnb0w2Fg9nfJ8OAA--.31367W X-CM-SenderInfo: 5dqg52xkunqiywtou0bp/1tbiMx16XmcPEuY48gACse X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241015_182658_837849_AE2DDDF9 X-CRM114-Status: GOOD ( 16.92 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgUGlvdHIsCgpBdCAyMDI0LTEwLTE1IDA2OjMwOjI3LCAiUGlvdHIgWmFsZXdza2kiIDxwWjAx MDAwMTAxMTExMUBwcm90b24ubWU+IHdyb3RlOgo+QWRkIHN1cHBvcnQgZm9yIGdhbW1hIExVVCBp biBWT1AyIGRyaXZlci4gVGhlIGltcGxlbWVudGF0aW9uIHdhcyBpbnNwaXJlZAo+Ynkgb25lIGZv dW5kIGluIFZPUDEgZHJpdmVyLiBCbHVlIGFuZCByZWQgY2hhbm5lbHMgaW4gZ2FtbWEgTFVUIHJl Z2lzdGVyCj53cml0ZSB3ZXJlIHN3YXBwZWQgd2l0aCByZXNwZWN0IHRvIGhvdyBnYW1tYSBMVVQg dmFsdWVzIGFyZSB3cml0dGVuIGluCj5WT1AxLiBHYW1tYSBMVVQgcG9ydCBzZWxlY3Rpb24gd2Fz IGFkZGVkIGJlZm9yZSB0aGUgd3JpdGUgb2YgbmV3IGdhbW1hIExVVCAKPnRhYmxlLiBJZiB0aGUg Y3VycmVudCBTb0MgaXMgUkszNTg4LCAic2VhbWxlc3MiIGdhbW1hIGx1dCB1cGRhdGUgaXMgCj5w ZXJmb3JtZWQgc2ltaWxhcmx5IHRvIGhvdyBpdCB3YXMgZG9uZSBpbiB0aGUgY2FzZSBvZiBSSzMz OTkgaW4gVk9QMVsxXS4gSW4KPnNlYW1sZXNzIHVwZGF0ZSBnYW1tYSBMVVQgZGlzYWJsZSBiZWZv cmUgdGhlIHdyaXRlIGlzbid0IG5lY2Vzc2FyeSwgCj5kaWZmZXJlbnQgcmVnaXN0ZXIgaXMgYmVp bmcgdXNlZCB0byBzZWxlY3QgZ2FtbWEgTFVUIHBvcnRbMl0gYW5kIGFmdGVyIAo+c2V0dGluZyBE U1BfTFVUX0VOIGJpdCwgR0FNTUFfVVBEQVRFX0VOIGJpdCBpcyBzZXRbM10uIEdhbW1hIHNpemUg aXMgc2V0IAo+YW5kIGRybSBjb2xvciBtYW5hZ2VtZW50IGlzIGVuYWJsZWQgZm9yIGVhY2ggdmlk ZW8gcG9ydCdzIENSVEMgZXhjZXB0IG9uZXMgCj53aGljaCBoYXZlIG5vIGFzc29jaWF0ZWQgZGV2 aWNlLiAKPgo+U29sdXRpb24gd2FzIHRlc3RlZCBvbiBSSzM1NjYgKFBpbmV0YWIyKS4gV2hlbiB1 c2luZyB1c2Vyc3BhY2UgdG9vbHMKPndoaWNoIHNldCBlZy4gY29uc3RhbnQgY29sb3IgdGVtcGVy YXR1cmUgbm8gaXNzdWVzIHdlcmUgbm90aWNlZC4gV2hlbgo+dXNpbmcgdXNlcnNwYWNlIHRvb2xz IHdoaWNoIGFkanVzdCBlZy4gY29sb3IgdGVtcGVyYXR1cmUgdGhlIHNsaWdodCBzY3JlZW4KPmZs aWNrZXIgaXMgdmlzaWJsZSBwcm9iYWJseSBiZWNhdXNlIG9mIGdhbW1hIExVVCBkaXNhYmxlLgo+ Cj5Db21wYXJlIGJlaGF2aW91ciBvZiBlZy46Cj5gYGAKPmdhbW1hc3RlcCAtTyAzMDAwCj5gYGAK Pgo+VG8gZWcuOgo+YGBgCj5nYW1tYXN0ZXAgLWwgNTM6MjMgLXQgNjAwMDozMDAwCj5gYGAKPgo+ SW4gbGF0dGVyIGNhc2UgY29sb3IgdGVtcGVyYXR1cmUgaXMgc2xvd2x5IGFkanVzdGVkIGF0IHRo ZSBiZWdpbm5pbmcgd2hpY2gKPmNhdXNlcyBzY3JlZW4gdG8gc2xpZ2hseSBmbGlja2VyLiBUaGVu IGl0IGFkanVzdHMgZXZlcnkgZmV3IHNlY29uZHMgd2hpY2ggCj5hbHNvIGNhdXNlcyBzbGlnaHQg c2NyZWVuIGZsaWNrZXIuCj4KPlsxXSBodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvcGlwZXJt YWlsL2xpbnV4LXJvY2tjaGlwLzIwMjEtT2N0b2Jlci8wMjgxMzIuaHRtbAo+WzJdIGh0dHBzOi8v bG9yZS5rZXJuZWwub3JnL2xpbnV4LXJvY2tjaGlwLzQ4MjQ5NzA4LThjMDUtNDBkMi1hNWQ4LTIz ZGU5NjBjNWE3N0Byb2NrLWNoaXBzLmNvbS8KPlszXSBodHRwczovL2dpdGh1Yi5jb20vcmFkeGEv a2VybmVsL2Jsb2IvbGludXgtNi4xLXN0YW4tcmtyMS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv cm9ja2NoaXBfZHJtX3ZvcDIuYyNMMzQzNwo+Cj5IZWxwZWQtYnk6IERhbmllbCBTdG9uZSA8ZGFu aWVsQGZvb2lzaGJhci5vcmc+Cj5IZWxwZWQtYnk6IERyYWdhbiBTaW1pYyA8ZHNpbWljQG1hbmph cm8ub3JnPgo+SGVscGVkLWJ5OiBEaWVkZXJpayBkZSBIYWFzIDxkaWRpLmRlYmlhbkBja25vdy5v cmc+Cj5IZWxwZWQtYnk6IEFuZHkgWWFuIDxhbmR5LnlhbkByb2NrLWNoaXBzLmNvbT4KPlNpZ25l ZC1vZmYtYnk6IFBpb3RyIFphbGV3c2tpIDxwWjAxMDAwMTAxMTExMUBwcm90b24ubWU+Cj4tLS0K Pgo+Tm90ZXM6Cj4gICAgQ2hhbmdlcyBpbiB2NToKPiAgICAgICAgLSBEbyBub3QgdHJpZ2dlciBm dWxsIG1vZGVzZXQgaW4gY2FzZSBzZWFtbGVzcyBnYW1tYSBsdXQgdXBkYXRlCj4JCSAgaXNuJ3Qg cG9zc2libGUgKGVnLiByazM1NnggY2FzZSkuIEl0IHdhcyBkaXNjb3ZlcmVkIHRoYXQgd2l0aCAK PgkJICBmdWxsIG1vZGVzZXQsIHVzZXJzcGFjZSB0b29scyB3aGljaCBhZGp1c3QgY29sb3IgdGVt cGVyYXR1cmUgd2l0aAo+ICAgICAgICAgIGhpZ2ggZnJlcXVlbmN5IGNhdXNlIHNjcmVlbiB0byBn byBibGFjayBhbmQgcmVkdWNlIG92ZXJhbGwKPiAgICAgICAgICBwZXJmb3JtYW5jZS4gSW5zdGVh ZCwgcmV2ZXJ0IHRvIHByZXZpb3VzIGJlaGF2aW91ciBvZiBsdXQgdXBkYXRlCj4JCSAgaGFwcGVu aW5nIGluIGF0b21pY19iZWdpbiBvciAoaW4gY2FzZSB0aGVyZSBpcyBhIG1vZGVzZXQpIGluCj4J CSAgYXRvbWljX2VuYWJsZS4gQWxzbywgYWRkIHVucmVsYXRlZCB0byBtb2Rlc2V0IHRyaWdnZXIK PgkJICBjaGFuZ2VzL2ltcHJvdmVtZW50cyBmcm9tIHY0IG9uIHRvcC4gSW1wcm92ZSBjb2RlIHJl YWRhYmlsaXR5Cj4JCSAgdG9vLgo+Cj4gICAgQ2hhbmdlcyBpbiB2NDoKPiAgICAgICAgLSByZXdv cmsgdGhlIGltcGxlbWVudGF0aW9uIHRvIGJldHRlciB1dGlsaXplIERSTSBhdG9taWMgdXBkYXRl c1syXQo+ICAgICAgICAtIGhhbmRsZSB0aGUgUkszNTg4IGNhc2VbMl1bM10KPiAgICAKPiAgICBD aGFuZ2VzIGluIHYzOgo+ICAgICAgICAtIHYzIGlzIHBhdGNoIHYyICJyZXNlbmQiLCBieSBtaXN0 YWtlIHRoZSBpbmNyZW1lbnRhbCBwYXRjaCB3YXMKPiAgICAgICAgc2VudCBpbiB2Mgo+ICAgIAo+ ICAgIENoYW5nZXMgaW4gdjI6Cj4gICAgICAgIC0gQXBwbHkgY29kZSBzdHlsaW5nIGNvcnJlY3Rp b25zWzFdCj4gICAgICAgIC0gTW92ZSBnYW1tYSBMVVQgd3JpdGUgaW5zaWRlIHRoZSB2b3AyIGxv Y2sKPgkKPglMaW5rIHRvIHY0OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1yb2NrY2hp cC8yMDI0MDgxNTEyNDMwNi4xODkyODItMi1wWjAxMDAwMTAxMTExMUBwcm90b24ubWUvCj4gICAg TGluayB0byB2MzogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtcm9ja2NoaXAvVGtnS1Zp dnVhTEZMSUxQWS1uM2lab184S0YtZGFLZHFkdS0wX2UwSFAtNUFyXzhEQUxEZU5Xb2cyc3V3V0tq WDdlb21jYkdFVDBLWmU3RGx6ZGhLMllNNkNiTGJlS2VGWnItTUp6Sk10dzA9QHByb3Rvbi5tZS8K PiAgICBMaW5rIHRvIHYyOiBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1yb2NrY2hpcC9I azAzSERiNndTU0hXdEVGWkhVeWUwNkhSMC05WXpQNW5DSHg5QThfa0h6V1NaYXdEclUxbzFwakVH a0NPSkZvUmcwblRCNEJXRXY2VjBYQk9qRjQtME1qNDRscDJUcmphUWZueXR6cC1Qaz1AcHJvdG9u Lm1lL1QvI3UKPiAgICBMaW5rIHRvIHYxOiBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1y b2NrY2hpcC85NzM2ZWFkZjZhOWQ4ZTk3ZWVmOTE5YzZiM2Q4ODgyOEBtYW5qYXJvLm9yZy9ULyN0 Cj4gICAgCj4gICAgWzFdIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LXJvY2tjaGlwL2Qw MTk3NjE1MDRiNTQwNjAwZDlmYzdhNTg1ZDZmOTVmQG1hbmphcm8ub3JnCj4gICAgWzJdIGh0dHBz Oi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LXJvY2tjaGlwL0NBUGo4N3JPTT1qMHptdVdMOWZyR0tW MXh6UGJKcms9UTlpcDdGX0hBUFluYkNxUG91d0BtYWlsLmdtYWlsLmNvbQo+ICAgIFszXSBodHRw czovL2xvcmUua2VybmVsLm9yZy9saW51eC1yb2NrY2hpcC83ZDk5OGU0Yy1lMWQzLTRlOGItYWY3 Ni1jNWJjODNiNDM2NDdAcm9jay1jaGlwcy5jb20KPgo+IGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hp cC9yb2NrY2hpcF9kcm1fdm9wMi5jIHwgMTYxICsrKysrKysrKysrKysrKysrKysKPiBkcml2ZXJz L2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcDIuaCB8ICAgNSArCj4gMiBmaWxlcyBj aGFuZ2VkLCAxNjYgaW5zZXJ0aW9ucygrKQo+Cj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AyLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv cm9ja2NoaXBfZHJtX3ZvcDIuYwo+aW5kZXggOTg3MzE3MmUzZmQzLi5hNmEyZDdkZjVlY2MgMTAw NjQ0Cj4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcDIuYwo+ KysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AyLmMKPkBAIC0y NzgsNiArMjc4LDE1IEBAIHN0YXRpYyB1MzIgdm9wMl9yZWFkbChzdHJ1Y3Qgdm9wMiAqdm9wMiwg dTMyIG9mZnNldCkKPiAJcmV0dXJuIHZhbDsKPiB9Cj4gCj4rc3RhdGljIHUzMiB2b3AyX3ZwX3Jl YWQoc3RydWN0IHZvcDJfdmlkZW9fcG9ydCAqdnAsIHUzMiBvZmZzZXQpCj4rewo+Kwl1MzIgdmFs Owo+Kwo+KwlyZWdtYXBfcmVhZCh2cC0+dm9wMi0+bWFwLCB2cC0+ZGF0YS0+b2Zmc2V0ICsgb2Zm c2V0LCAmdmFsKTsKPisKPisJcmV0dXJuIHZhbDsKPit9Cj4rCj4gc3RhdGljIHZvaWQgdm9wMl93 aW5fd3JpdGUoY29uc3Qgc3RydWN0IHZvcDJfd2luICp3aW4sIHVuc2lnbmVkIGludCByZWcsIHUz MiB2KQo+IHsKPiAJcmVnbWFwX2ZpZWxkX3dyaXRlKHdpbi0+cmVnW3JlZ10sIHYpOwo+QEAgLTk5 OCw2ICsxMDA3LDU1IEBAIHN0YXRpYyB2b2lkIHZvcDJfZGlzYWJsZShzdHJ1Y3Qgdm9wMiAqdm9w MikKPiAJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHZvcDItPmhjbGspOwo+IH0KPiAKPitzdGF0aWMg Ym9vbCB2b3AyX3ZwX2RzcF9sdXRfaXNfZW5hYmxlZChzdHJ1Y3Qgdm9wMl92aWRlb19wb3J0ICp2 cCkKPit7Cj4rCXJldHVybiAodTMyKSAodm9wMl92cF9yZWFkKHZwLCBSSzM1NjhfVlBfRFNQX0NU UkwpICYgUkszNTY4X1ZQX0RTUF9DVFJMX19EU1BfTFVUX0VOKSA+Cj4rCSAgICAwOwo+K30KPisK PitzdGF0aWMgdm9pZCB2b3AyX3ZwX2RzcF9sdXRfZGlzYWJsZShzdHJ1Y3Qgdm9wMl92aWRlb19w b3J0ICp2cCkKPit7Cj4rCXUzMiBkc3BfY3RybCA9IHZvcDJfdnBfcmVhZCh2cCwgUkszNTY4X1ZQ X0RTUF9DVFJMKTsKPisKPisJZHNwX2N0cmwgJj0gflJLMzU2OF9WUF9EU1BfQ1RSTF9fRFNQX0xV VF9FTjsKPisJdm9wMl92cF93cml0ZSh2cCwgUkszNTY4X1ZQX0RTUF9DVFJMLCBkc3BfY3RybCk7 Cj4rfQo+Kwo+K3N0YXRpYyBib29sIHZvcDJfdnBfZHNwX2x1dF9wb2xsX2Rpc2FibGUoc3RydWN0 IHZvcDJfdmlkZW9fcG9ydCAqdnApCj4rewo+Kwl1MzIgZHNwX2N0cmw7Cj4rCWludCByZXQgPSBy ZWFkeF9wb2xsX3RpbWVvdXQodm9wMl92cF9kc3BfbHV0X2lzX2VuYWJsZWQsIHZwLCBkc3BfY3Ry bCwKPisJCQkJIWRzcF9jdHJsLCA1LCAzMCAqIDEwMDApOwo+KwlpZiAocmV0KSB7Cj4rCQlkcm1f ZXJyKHZwLT52b3AyLT5kcm0sICJkaXNwbGF5IExVVCBSQU0gZW5hYmxlIHRpbWVvdXQhXG4iKTsK PisJCXJldHVybiBmYWxzZTsKPisJfQo+Kwo+KwlyZXR1cm4gdHJ1ZTsKPit9Cj4rCj4rc3RhdGlj IHZvaWQgdm9wMl92cF9kc3BfbHV0X2VuYWJsZShzdHJ1Y3Qgdm9wMl92aWRlb19wb3J0ICp2cCkK Pit7Cj4rCXUzMiBkc3BfY3RybCA9IHZvcDJfdnBfcmVhZCh2cCwgUkszNTY4X1ZQX0RTUF9DVFJM KTsKPisKPisJZHNwX2N0cmwgfD0gUkszNTY4X1ZQX0RTUF9DVFJMX19EU1BfTFVUX0VOOwo+Kwl2 b3AyX3ZwX3dyaXRlKHZwLCBSSzM1NjhfVlBfRFNQX0NUUkwsIGRzcF9jdHJsKTsKPit9Cj4rCj4r c3RhdGljIHZvaWQgdm9wMl92cF9kc3BfbHV0X3VwZGF0ZV9lbmFibGUoc3RydWN0IHZvcDJfdmlk ZW9fcG9ydCAqdnApCj4rewo+Kwl1MzIgZHNwX2N0cmwgPSB2b3AyX3ZwX3JlYWQodnAsIFJLMzU2 OF9WUF9EU1BfQ1RSTCk7Cj4rCj4rCWRzcF9jdHJsIHw9IFJLMzU4OF9WUF9EU1BfQ1RSTF9fR0FN TUFfVVBEQVRFX0VOOwo+Kwl2b3AyX3ZwX3dyaXRlKHZwLCBSSzM1NjhfVlBfRFNQX0NUUkwsIGRz cF9jdHJsKTsKPit9Cj4rCj4rc3RhdGljIGlubGluZSBib29sIHZvcDJfc3VwcG9ydHNfc2VhbWxl c3NfZ2FtbWFfbHV0X3VwZGF0ZShzdHJ1Y3Qgdm9wMiAqdm9wMikKPit7Cj4rCXJldHVybiAodm9w Mi0+ZGF0YS0+c29jX2lkID09IDM1ODgpOwo+K30KPisKPisKPiBzdGF0aWMgdm9pZCB2b3AyX2Ny dGNfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+IAkJCQkgICAgIHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiB7Cj5AQCAtMTQ4Miw2ICsxNTQwLDY2IEBAIHN0 YXRpYyBib29sIHZvcDJfY3J0Y19tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAJ cmV0dXJuIHRydWU7Cj4gfQo+IAo+K3N0YXRpYyB2b2lkIHZvcDJfY3J0Y193cml0ZV9nYW1tYV9s dXQoc3RydWN0IHZvcDIgKnZvcDIsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPit7Cj4rCWNvbnN0 IHN0cnVjdCB2b3AyX3ZpZGVvX3BvcnQgKnZwID0gdG9fdm9wMl92aWRlb19wb3J0KGNydGMpOwo+ Kwljb25zdCBzdHJ1Y3Qgdm9wMl92aWRlb19wb3J0X2RhdGEgKnZwX2RhdGEgPSAmdm9wMi0+ZGF0 YS0+dnBbdnAtPmlkXTsKPisKPisJc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dCA9IGNydGMtPnN0 YXRlLT5nYW1tYV9sdXQtPmRhdGE7Cj4rCXVuc2lnbmVkIGludCBpLCBicGMgPSBpbG9nMih2cF9k YXRhLT5nYW1tYV9sdXRfbGVuKTsKPisJdTMyIHdvcmQ7Cj4rCj4rCWZvciAoaSA9IDA7IGkgPCBj cnRjLT5nYW1tYV9zaXplOyBpKyspIHsKPisJCXdvcmQgPSAoZHJtX2NvbG9yX2x1dF9leHRyYWN0 KGx1dFtpXS5ibHVlLCBicGMpIDw8ICgyICogYnBjKSkgfAo+KwkJICAgIChkcm1fY29sb3JfbHV0 X2V4dHJhY3QobHV0W2ldLmdyZWVuLCBicGMpIDw8IGJwYykgfAo+KwkJICAgIGRybV9jb2xvcl9s dXRfZXh0cmFjdChsdXRbaV0ucmVkLCBicGMpOwo+Kwo+KwkJd3JpdGVsKHdvcmQsIHZvcDItPmx1 dF9yZWdzICsgaSAqIDQpOwo+Kwl9Cj4rfQo+Kwo+K3N0YXRpYyB2b2lkIHZvcDJfY3J0Y19hdG9t aWNfdHJ5X3NldF9nYW1tYShzdHJ1Y3Qgdm9wMiAqdm9wMiwKPisJCQkJCXN0cnVjdCB2b3AyX3Zp ZGVvX3BvcnQgKnZwLAo+KwkJCQkJc3RydWN0IGRybV9jcnRjICpjcnRjLAo+KwkJCQkJc3RydWN0 IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+K3sKPisKPisJaWYgKHZvcDItPmx1dF9yZWdz ICYmIGNydGNfc3RhdGUtPmNvbG9yX21nbXRfY2hhbmdlZCkgewo+KwkJaWYgKCFjcnRjX3N0YXRl LT5nYW1tYV9sdXQpIHsKPisJCQl2b3AyX3ZwX2RzcF9sdXRfZGlzYWJsZSh2cCk7Cj4rCQkJcmV0 dXJuOwo+KwkJfQo+Kwo+KwkJaWYgKHZvcDJfc3VwcG9ydHNfc2VhbWxlc3NfZ2FtbWFfbHV0X3Vw ZGF0ZSh2b3AyKSkgewo+KwkJCXZvcDJfd3JpdGVsKHZvcDIsIFJLMzU2OF9MVVRfUE9SVF9TRUws IEZJRUxEX1BSRVAoCj4rCQkJCVJLMzU4OF9MVVRfUE9SVF9TRUxfX0dBTU1BX0FIQl9XUklURV9T RUwsCj4rCQkJCXZwLT5pZCkpOwo+KwkJCXZvcDJfY3J0Y193cml0ZV9nYW1tYV9sdXQodm9wMiwg Y3J0Yyk7Cj4rCQkJdm9wMl92cF9kc3BfbHV0X2VuYWJsZSh2cCk7Cj4rCQkJdm9wMl92cF9kc3Bf bHV0X3VwZGF0ZV9lbmFibGUodnApOwo+KwkJfSBlbHNlIHsKPisJCQl2b3AyX3ZwX2RzcF9sdXRf ZGlzYWJsZSh2cCk7Cj4rCQkJdm9wMl9jZmdfZG9uZSh2cCk7Cj4rCQkJaWYgKCF2b3AyX3ZwX2Rz cF9sdXRfcG9sbF9kaXNhYmxlKHZwKSkKPisJCQkJcmV0dXJuOwo+Kwo+KwkJCXZvcDJfd3JpdGVs KHZvcDIsIFJLMzU2OF9MVVRfUE9SVF9TRUwsIHZwLT5pZCk7Cj4rCQkJdm9wMl9jcnRjX3dyaXRl X2dhbW1hX2x1dCh2b3AyLCBjcnRjKTsKPisJCQl2b3AyX3ZwX2RzcF9sdXRfZW5hYmxlKHZwKTsK PisJCX0KPisJfQo+K30KPisKPitzdGF0aWMgaW5saW5lIHZvaWQgdm9wMl9jcnRjX2F0b21pY190 cnlfc2V0X2dhbW1hX2xvY2tlZChzdHJ1Y3Qgdm9wMiAqdm9wMiwKPisJCQkJCXN0cnVjdCB2b3Ay X3ZpZGVvX3BvcnQgKnZwLAo+KwkJCQkJc3RydWN0IGRybV9jcnRjICpjcnRjLAo+KwkJCQkJc3Ry dWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+K3sKPisJdm9wMl9sb2NrKHZvcDIpOwo+ Kwl2b3AyX2NydGNfYXRvbWljX3RyeV9zZXRfZ2FtbWEodm9wMiwgdnAsIGNydGMsIGNydGNfc3Rh dGUpOwo+Kwl2b3AyX3VubG9jayh2b3AyKTsKPit9Cj4rCj4gc3RhdGljIHZvaWQgdm9wMl9kaXRo ZXJfc2V0dXAoc3RydWN0IGRybV9jcnRjICpjcnRjLCB1MzIgKmRzcF9jdHJsKQo+IHsKPiAJc3Ry dWN0IHJvY2tjaGlwX2NydGNfc3RhdGUgKnZjc3RhdGUgPSB0b19yb2NrY2hpcF9jcnRjX3N0YXRl KGNydGMtPnN0YXRlKTsKPkBAIC0yMDU3LDExICsyMTc1LDM1IEBAIHN0YXRpYyB2b2lkIHZvcDJf Y3J0Y19hdG9taWNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAKPiAJdm9wMl92cF93 cml0ZSh2cCwgUkszNTY4X1ZQX0RTUF9DVFJMLCBkc3BfY3RybCk7Cj4gCj4rCXZvcDJfY3J0Y19h dG9taWNfdHJ5X3NldF9nYW1tYSh2b3AyLCB2cCwgY3J0YywgY3J0Y19zdGF0ZSk7Cj4rCj4gCWRy bV9jcnRjX3ZibGFua19vbihjcnRjKTsKPiAKPiAJdm9wMl91bmxvY2sodm9wMik7Cj4gfQo+IAo+ K3N0YXRpYyBpbnQgdm9wMl9jcnRjX2F0b21pY19jaGVja19nYW1tYShzdHJ1Y3Qgdm9wMl92aWRl b19wb3J0ICp2cCwKPisJCQkJCXN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPisJCQkJCXN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPisJCQkJCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKPit7Cj4rCXN0cnVjdCB2b3AyICp2b3AyID0gdnAtPnZvcDI7Cj4rCXVuc2lnbmVk IGludCBsZW47Cj4rCj4rCWlmICghdnAtPnZvcDItPmx1dF9yZWdzIHx8ICFjcnRjX3N0YXRlLT5j b2xvcl9tZ210X2NoYW5nZWQgfHwKPisJICAgICFjcnRjX3N0YXRlLT5nYW1tYV9sdXQpCj4rCQly ZXR1cm4gMDsKPisKPisJbGVuID0gZHJtX2NvbG9yX2x1dF9zaXplKGNydGNfc3RhdGUtPmdhbW1h X2x1dCk7Cj4rCWlmIChsZW4gIT0gY3J0Yy0+Z2FtbWFfc2l6ZSkgewo+KwkJZHJtX2RiZyh2b3Ay LT5kcm0sICJJbnZhbGlkIExVVCBzaXplOyBnb3QgJWQsIGV4cGVjdGVkICVkXG4iLAo+KwkJCQkg ICAgICBsZW4sIGNydGMtPmdhbW1hX3NpemUpOwo+KwkJcmV0dXJuIC1FSU5WQUw7Cj4rCX0KPisK PisJcmV0dXJuIDA7Cj4rfQo+Kwo+IHN0YXRpYyBpbnQgdm9wMl9jcnRjX2F0b21pY19jaGVjayhz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gCQkJCSAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlKQo+IHsKPkBAIC0yMDY5LDYgKzIyMTEsMTEgQEAgc3RhdGljIGludCB2b3AyX2NydGNfYXRv bWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAJc3RydWN0IGRybV9wbGFuZSAqcGxh bmU7Cj4gCWludCBucGxhbmVzID0gMDsKPiAJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlID0gZHJtX2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOwo+KwlpbnQg cmV0Owo+Kwo+KwlyZXQgPSB2b3AyX2NydGNfYXRvbWljX2NoZWNrX2dhbW1hKHZwLCBjcnRjLCBz dGF0ZSwgY3J0Y19zdGF0ZSk7Cj4rCWlmIChyZXQpCj4rCQlyZXR1cm4gcmV0Owo+IAo+IAlkcm1f YXRvbWljX2NydGNfc3RhdGVfZm9yX2VhY2hfcGxhbmUocGxhbmUsIGNydGNfc3RhdGUpCj4gCQlu cGxhbmVzKys7Cj5AQCAtMjQ1Niw5ICsyNjAzLDEyIEBAIHN0YXRpYyB2b2lkIHZvcDJfc2V0dXBf ZGx5X2Zvcl93aW5kb3dzKHN0cnVjdCB2b3AyICp2b3AyKQo+IAl2b3AyX3dyaXRlbCh2b3AyLCBS SzM1NjhfU01BUlRfRExZX05VTSwgc2RseSk7Cj4gfQo+IAo+Kwo+IHN0YXRpYyB2b2lkIHZvcDJf Y3J0Y19hdG9taWNfYmVnaW4oc3RydWN0IGRybV9jcnRjICpjcnRjLAo+IAkJCQkgICBzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gewo+KwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUgPQo+KwkJZHJtX2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUoc3RhdGUsIGNydGMp Owo+IAlzdHJ1Y3Qgdm9wMl92aWRlb19wb3J0ICp2cCA9IHRvX3ZvcDJfdmlkZW9fcG9ydChjcnRj KTsKPiAJc3RydWN0IHZvcDIgKnZvcDIgPSB2cC0+dm9wMjsKPiAJc3RydWN0IGRybV9wbGFuZSAq cGxhbmU7Cj5AQCAtMjQ4Miw2ICsyNjMyLDExIEBAIHN0YXRpYyB2b2lkIHZvcDJfY3J0Y19hdG9t aWNfYmVnaW4oc3RydWN0IGRybV9jcnRjICpjcnRjLAo+IAl2b3AyX3NldHVwX2xheWVyX21peGVy KHZwKTsKPiAJdm9wMl9zZXR1cF9hbHBoYSh2cCk7Cj4gCXZvcDJfc2V0dXBfZGx5X2Zvcl93aW5k b3dzKHZvcDIpOwo+Kwo+KwkvLyBOT1RFOiBpbiBjYXNlIG9mIG1vZGVzZXQgZ2FtbWEgbHV0IHVw ZGF0ZQo+KwkvLyBhbHJlYWR5IGhhcHBlbmVkIGluIGF0b21pYyBlbmFibGUKPisJaWYgKCFkcm1f YXRvbWljX2NydGNfbmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKSkKPisJCXZvcDJfY3J0Y19hdG9t aWNfdHJ5X3NldF9nYW1tYV9sb2NrZWQodm9wMiwgdnAsIGNydGMsIGNydGNfc3RhdGUpOwo+IH0K PiAKPiBzdGF0aWMgdm9pZCB2b3AyX2NydGNfYXRvbWljX2ZsdXNoKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKPkBAIC0yNzkwLDcgKzI5NDUsMTMgQEAgc3RhdGljIGludCB2b3AyX2NyZWF0ZV9jcnRj cyhzdHJ1Y3Qgdm9wMiAqdm9wMikKPiAJCX0KPiAKPiAJCWRybV9jcnRjX2hlbHBlcl9hZGQoJnZw LT5jcnRjLCAmdm9wMl9jcnRjX2hlbHBlcl9mdW5jcyk7Cj4rCQlpZiAodm9wMi0+bHV0X3JlZ3Mg JiYgdnAtPmNydGMuZGV2ICE9IE5VTEwpIHsKCgpUaGVyZSBpcyBubyBuZWVkIHRvIGNoZWNrIHZw LT5jcnRjLmRldiBoZXJlLCAgc2V0IGhhcyBiZWVuIHNldCBpbiBkcm1fY3J0Y19pbml0X3dpdGhf cGxhbmVzIC4KIAo=