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 48A79CFC264 for ; Tue, 15 Oct 2024 03:41:16 +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=7PyEDO1RkcgTdsGXLo7KbqjJKgNvONvNiOhM80Z/7Qw=; b=i/TaYxVia82CYw6/hqTGPgizu1 Unou389AZrqfUXy75gYbi5LXeeaZ+1/yEl/9305kq+gIXc/gSoPHj7VYsJK9darhoDxWwZIlutdX+ dnFF7tPgjzlfOB36z04d1HWWiuzp07v9WKXNsRBIuHkjSXTTPImQrkPHAv4DVbloivAYHb8LPY/M7 hKDodVRChbh0oOLs8uibuGqKjE4Zsuz3NNq2TLnldFUuyerQjIokEqanfUj4vd7oW/ipPfJuATcMQ N9wzXJsg8qMKxgZvYw18KB7LwPLR4evHOCatBNpcYmyVMtPMIClA0ZYIAfXGtXeyO3foUOPHRkl1a YIlRwrAQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t0YQe-00000006zl2-1QXp; Tue, 15 Oct 2024 03:41:00 +0000 Received: from m16.mail.163.com ([117.135.210.4]) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t0YPD-00000006zaI-2Xqb; Tue, 15 Oct 2024 03:39:33 +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=YUUT/GHECURXTB/qCmFvKHfDzCj7orwuG5VBFdAb8KE=; b=a J+f/+RV6vAXcY7PJ04jh5FM0tWNcOphM/saZj7pqkOfM0uenIAV8bUina8AjvQgg f5/zeBJZKeUNrZPdiDf/C6kCbbogkg+CujUnKkFnny/+INb7RAWoHdtUz1g+XP30 IoMChMAUBhLG7/ezGhu9VbuKCyxDkNoHENaJtpziOM= Received: from andyshrk$163.com ( [58.22.7.114] ) by ajax-webmail-wmsvr-40-105 (Coremail) ; Tue, 15 Oct 2024 11:38:44 +0800 (CST) X-Originating-IP: [58.22.7.114] Date: Tue, 15 Oct 2024 11:38:44 +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_Qu2ZCvWdvE0p4iSZbOkXn0kXhec2W8Czvvgg34JRP5k0tyTsxzgGbW9cHXjP+s6ULwOhoAi6XyNfxM5FYqxheYcHQWe88ugeMTHq27gcz/1M Content-Transfer-Encoding: base64 Content-Type: text/plain; charset=UTF-8 MIME-Version: 1.0 Message-ID: <7b45f190.452f.1928e41b746.Coremail.andyshrk@163.com> X-Coremail-Locale: zh_CN X-CM-TRANSID: aSgvCgD3D0_E4w1nOdsNAA--.5362W X-CM-SenderInfo: 5dqg52xkunqiywtou0bp/xtbB0g15XmcN3QaI4gAEsn X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241014_203932_033408_69E70CF5 X-CRM114-Status: GOOD ( 19.20 ) 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 CkhpIFBpb3RyLAoKQXQgMjAyNC0xMC0xNSAwNjozMDoyNywgIlBpb3RyIFphbGV3c2tpIiA8cFow MTAwMDEwMTExMTFAcHJvdG9uLm1lPiB3cm90ZToKPkFkZCBzdXBwb3J0IGZvciBnYW1tYSBMVVQg aW4gVk9QMiBkcml2ZXIuIFRoZSBpbXBsZW1lbnRhdGlvbiB3YXMgaW5zcGlyZWQKPmJ5IG9uZSBm b3VuZCBpbiBWT1AxIGRyaXZlci4gQmx1ZSBhbmQgcmVkIGNoYW5uZWxzIGluIGdhbW1hIExVVCBy ZWdpc3Rlcgo+d3JpdGUgd2VyZSBzd2FwcGVkIHdpdGggcmVzcGVjdCB0byBob3cgZ2FtbWEgTFVU IHZhbHVlcyBhcmUgd3JpdHRlbiBpbgo+Vk9QMS4gR2FtbWEgTFVUIHBvcnQgc2VsZWN0aW9uIHdh cyBhZGRlZCBiZWZvcmUgdGhlIHdyaXRlIG9mIG5ldyBnYW1tYSBMVVQgCj50YWJsZS4gSWYgdGhl IGN1cnJlbnQgU29DIGlzIFJLMzU4OCwgInNlYW1sZXNzIiBnYW1tYSBsdXQgdXBkYXRlIGlzIAo+ cGVyZm9ybWVkIHNpbWlsYXJseSB0byBob3cgaXQgd2FzIGRvbmUgaW4gdGhlIGNhc2Ugb2YgUksz Mzk5IGluIFZPUDFbMV0uIEluCj5zZWFtbGVzcyB1cGRhdGUgZ2FtbWEgTFVUIGRpc2FibGUgYmVm b3JlIHRoZSB3cml0ZSBpc24ndCBuZWNlc3NhcnksIAo+ZGlmZmVyZW50IHJlZ2lzdGVyIGlzIGJl aW5nIHVzZWQgdG8gc2VsZWN0IGdhbW1hIExVVCBwb3J0WzJdIGFuZCBhZnRlciAKPnNldHRpbmcg RFNQX0xVVF9FTiBiaXQsIEdBTU1BX1VQREFURV9FTiBiaXQgaXMgc2V0WzNdLiBHYW1tYSBzaXpl IGlzIHNldCAKPmFuZCBkcm0gY29sb3IgbWFuYWdlbWVudCBpcyBlbmFibGVkIGZvciBlYWNoIHZp ZGVvIHBvcnQncyBDUlRDIGV4Y2VwdCBvbmVzIAo+d2hpY2ggaGF2ZSBubyBhc3NvY2lhdGVkIGRl dmljZS4gCj4KPlNvbHV0aW9uIHdhcyB0ZXN0ZWQgb24gUkszNTY2IChQaW5ldGFiMikuIFdoZW4g dXNpbmcgdXNlcnNwYWNlIHRvb2xzCj53aGljaCBzZXQgZWcuIGNvbnN0YW50IGNvbG9yIHRlbXBl cmF0dXJlIG5vIGlzc3VlcyB3ZXJlIG5vdGljZWQuIFdoZW4KPnVzaW5nIHVzZXJzcGFjZSB0b29s cyB3aGljaCBhZGp1c3QgZWcuIGNvbG9yIHRlbXBlcmF0dXJlIHRoZSBzbGlnaHQgc2NyZWVuCj5m bGlja2VyIGlzIHZpc2libGUgcHJvYmFibHkgYmVjYXVzZSBvZiBnYW1tYSBMVVQgZGlzYWJsZS4K Pgo+Q29tcGFyZSBiZWhhdmlvdXIgb2YgZWcuOgo+YGBgCj5nYW1tYXN0ZXAgLU8gMzAwMAo+YGBg Cj4KPlRvIGVnLjoKPmBgYAo+Z2FtbWFzdGVwIC1sIDUzOjIzIC10IDYwMDA6MzAwMAo+YGBgCj4K PkluIGxhdHRlciBjYXNlIGNvbG9yIHRlbXBlcmF0dXJlIGlzIHNsb3dseSBhZGp1c3RlZCBhdCB0 aGUgYmVnaW5uaW5nIHdoaWNoCj5jYXVzZXMgc2NyZWVuIHRvIHNsaWdobHkgZmxpY2tlci4gVGhl biBpdCBhZGp1c3RzIGV2ZXJ5IGZldyBzZWNvbmRzIHdoaWNoIAo+YWxzbyBjYXVzZXMgc2xpZ2h0 IHNjcmVlbiBmbGlja2VyLgo+Cj5bMV0gaHR0cHM6Ly9saXN0cy5pbmZyYWRlYWQub3JnL3BpcGVy bWFpbC9saW51eC1yb2NrY2hpcC8yMDIxLU9jdG9iZXIvMDI4MTMyLmh0bWwKPlsyXSBodHRwczov L2xvcmUua2VybmVsLm9yZy9saW51eC1yb2NrY2hpcC80ODI0OTcwOC04YzA1LTQwZDItYTVkOC0y M2RlOTYwYzVhNzdAcm9jay1jaGlwcy5jb20vCj5bM10gaHR0cHM6Ly9naXRodWIuY29tL3JhZHhh L2tlcm5lbC9ibG9iL2xpbnV4LTYuMS1zdGFuLXJrcjEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlw L3JvY2tjaGlwX2RybV92b3AyLmMjTDM0MzcKPgo+SGVscGVkLWJ5OiBEYW5pZWwgU3RvbmUgPGRh bmllbEBmb29pc2hiYXIub3JnPgo+SGVscGVkLWJ5OiBEcmFnYW4gU2ltaWMgPGRzaW1pY0BtYW5q YXJvLm9yZz4KPkhlbHBlZC1ieTogRGllZGVyaWsgZGUgSGFhcyA8ZGlkaS5kZWJpYW5AY2tub3cu b3JnPgo+SGVscGVkLWJ5OiBBbmR5IFlhbiA8YW5keS55YW5Acm9jay1jaGlwcy5jb20+Cj5TaWdu ZWQtb2ZmLWJ5OiBQaW90ciBaYWxld3NraSA8cFowMTAwMDEwMTExMTFAcHJvdG9uLm1lPgo+LS0t Cj4KPk5vdGVzOgo+ICAgIENoYW5nZXMgaW4gdjU6Cj4gICAgICAgIC0gRG8gbm90IHRyaWdnZXIg ZnVsbCBtb2Rlc2V0IGluIGNhc2Ugc2VhbWxlc3MgZ2FtbWEgbHV0IHVwZGF0ZQo+CQkgIGlzbid0 IHBvc3NpYmxlIChlZy4gcmszNTZ4IGNhc2UpLiBJdCB3YXMgZGlzY292ZXJlZCB0aGF0IHdpdGgg Cj4JCSAgZnVsbCBtb2Rlc2V0LCB1c2Vyc3BhY2UgdG9vbHMgd2hpY2ggYWRqdXN0IGNvbG9yIHRl bXBlcmF0dXJlIHdpdGgKPiAgICAgICAgICBoaWdoIGZyZXF1ZW5jeSBjYXVzZSBzY3JlZW4gdG8g Z28gYmxhY2sgYW5kIHJlZHVjZSBvdmVyYWxsCj4gICAgICAgICAgcGVyZm9ybWFuY2UuIEluc3Rl YWQsIHJldmVydCB0byBwcmV2aW91cyBiZWhhdmlvdXIgb2YgbHV0IHVwZGF0ZQo+CQkgIGhhcHBl bmluZyBpbiBhdG9taWNfYmVnaW4gb3IgKGluIGNhc2UgdGhlcmUgaXMgYSBtb2Rlc2V0KSBpbgo+ CQkgIGF0b21pY19lbmFibGUuIEFsc28sIGFkZCB1bnJlbGF0ZWQgdG8gbW9kZXNldCB0cmlnZ2Vy Cj4JCSAgY2hhbmdlcy9pbXByb3ZlbWVudHMgZnJvbSB2NCBvbiB0b3AuIEltcHJvdmUgY29kZSBy ZWFkYWJpbGl0eQo+CQkgIHRvby4KPgo+ICAgIENoYW5nZXMgaW4gdjQ6Cj4gICAgICAgIC0gcmV3 b3JrIHRoZSBpbXBsZW1lbnRhdGlvbiB0byBiZXR0ZXIgdXRpbGl6ZSBEUk0gYXRvbWljIHVwZGF0 ZXNbMl0KPiAgICAgICAgLSBoYW5kbGUgdGhlIFJLMzU4OCBjYXNlWzJdWzNdCj4gICAgCj4gICAg Q2hhbmdlcyBpbiB2MzoKPiAgICAgICAgLSB2MyBpcyBwYXRjaCB2MiAicmVzZW5kIiwgYnkgbWlz dGFrZSB0aGUgaW5jcmVtZW50YWwgcGF0Y2ggd2FzCj4gICAgICAgIHNlbnQgaW4gdjIKPiAgICAK PiAgICBDaGFuZ2VzIGluIHYyOgo+ICAgICAgICAtIEFwcGx5IGNvZGUgc3R5bGluZyBjb3JyZWN0 aW9uc1sxXQo+ICAgICAgICAtIE1vdmUgZ2FtbWEgTFVUIHdyaXRlIGluc2lkZSB0aGUgdm9wMiBs b2NrCj4JCj4JTGluayB0byB2NDogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtcm9ja2No aXAvMjAyNDA4MTUxMjQzMDYuMTg5MjgyLTItcFowMTAwMDEwMTExMTFAcHJvdG9uLm1lLwo+ICAg IExpbmsgdG8gdjM6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LXJvY2tjaGlwL1RrZ0tW aXZ1YUxGTElMUFktbjNpWm9fOEtGLWRhS2RxZHUtMF9lMEhQLTVBcl84REFMRGVOV29nMnN1d1dL alg3ZW9tY2JHRVQwS1plN0RsemRoSzJZTTZDYkxiZUtlRlpyLU1KekpNdHcwPUBwcm90b24ubWUv Cj4gICAgTGluayB0byB2MjogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtcm9ja2NoaXAv SGswM0hEYjZ3U1NIV3RFRlpIVXllMDZIUjAtOVl6UDVuQ0h4OUE4X2tIeldTWmF3RHJVMW8xcGpF R2tDT0pGb1JnMG5UQjRCV0V2NlYwWEJPakY0LTBNajQ0bHAyVHJqYVFmbnl0enAtUGs9QHByb3Rv bi5tZS9ULyN1Cj4gICAgTGluayB0byB2MTogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgt cm9ja2NoaXAvOTczNmVhZGY2YTlkOGU5N2VlZjkxOWM2YjNkODg4MjhAbWFuamFyby5vcmcvVC8j dAo+ICAgIAo+ICAgIFsxXSBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1yb2NrY2hpcC9k MDE5NzYxNTA0YjU0MDYwMGQ5ZmM3YTU4NWQ2Zjk1ZkBtYW5qYXJvLm9yZwo+ICAgIFsyXSBodHRw czovL2xvcmUua2VybmVsLm9yZy9saW51eC1yb2NrY2hpcC9DQVBqODdyT009ajB6bXVXTDlmckdL VjF4elBiSnJrPVE5aXA3Rl9IQVBZbmJDcVBvdXdAbWFpbC5nbWFpbC5jb20KPiAgICBbM10gaHR0 cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtcm9ja2NoaXAvN2Q5OThlNGMtZTFkMy00ZThiLWFm NzYtYzViYzgzYjQzNjQ3QHJvY2stY2hpcHMuY29tCj4KPiBkcml2ZXJzL2dwdS9kcm0vcm9ja2No aXAvcm9ja2NoaXBfZHJtX3ZvcDIuYyB8IDE2MSArKysrKysrKysrKysrKysrKysrCj4gZHJpdmVy cy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AyLmggfCAgIDUgKwo+IDIgZmlsZXMg Y2hhbmdlZCwgMTY2IGluc2VydGlvbnMoKykKPgo+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wMi5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlw L3JvY2tjaGlwX2RybV92b3AyLmMKPmluZGV4IDk4NzMxNzJlM2ZkMy4uYTZhMmQ3ZGY1ZWNjIDEw MDY0NAo+LS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AyLmMK PisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wMi5jCj5AQCAt Mjc4LDYgKzI3OCwxNSBAQCBzdGF0aWMgdTMyIHZvcDJfcmVhZGwoc3RydWN0IHZvcDIgKnZvcDIs IHUzMiBvZmZzZXQpCj4gCXJldHVybiB2YWw7Cj4gfQo+IAo+K3N0YXRpYyB1MzIgdm9wMl92cF9y ZWFkKHN0cnVjdCB2b3AyX3ZpZGVvX3BvcnQgKnZwLCB1MzIgb2Zmc2V0KQo+K3sKPisJdTMyIHZh bDsKPisKPisJcmVnbWFwX3JlYWQodnAtPnZvcDItPm1hcCwgdnAtPmRhdGEtPm9mZnNldCArIG9m ZnNldCwgJnZhbCk7Cj4rCj4rCXJldHVybiB2YWw7Cj4rfQo+Kwo+IHN0YXRpYyB2b2lkIHZvcDJf d2luX3dyaXRlKGNvbnN0IHN0cnVjdCB2b3AyX3dpbiAqd2luLCB1bnNpZ25lZCBpbnQgcmVnLCB1 MzIgdikKPiB7Cj4gCXJlZ21hcF9maWVsZF93cml0ZSh3aW4tPnJlZ1tyZWddLCB2KTsKPkBAIC05 OTgsNiArMTAwNyw1NSBAQCBzdGF0aWMgdm9pZCB2b3AyX2Rpc2FibGUoc3RydWN0IHZvcDIgKnZv cDIpCj4gCWNsa19kaXNhYmxlX3VucHJlcGFyZSh2b3AyLT5oY2xrKTsKPiB9Cj4gCj4rc3RhdGlj IGJvb2wgdm9wMl92cF9kc3BfbHV0X2lzX2VuYWJsZWQoc3RydWN0IHZvcDJfdmlkZW9fcG9ydCAq dnApCj4rewo+KwlyZXR1cm4gKHUzMikgKHZvcDJfdnBfcmVhZCh2cCwgUkszNTY4X1ZQX0RTUF9D VFJMKSAmIFJLMzU2OF9WUF9EU1BfQ1RSTF9fRFNQX0xVVF9FTikgPgo+KwkgICAgMDsKPit9Cj4r Cj4rc3RhdGljIHZvaWQgdm9wMl92cF9kc3BfbHV0X2Rpc2FibGUoc3RydWN0IHZvcDJfdmlkZW9f cG9ydCAqdnApCj4rewo+Kwl1MzIgZHNwX2N0cmwgPSB2b3AyX3ZwX3JlYWQodnAsIFJLMzU2OF9W UF9EU1BfQ1RSTCk7Cj4rCj4rCWRzcF9jdHJsICY9IH5SSzM1NjhfVlBfRFNQX0NUUkxfX0RTUF9M VVRfRU47Cj4rCXZvcDJfdnBfd3JpdGUodnAsIFJLMzU2OF9WUF9EU1BfQ1RSTCwgZHNwX2N0cmwp Owo+K30KPisKPitzdGF0aWMgYm9vbCB2b3AyX3ZwX2RzcF9sdXRfcG9sbF9kaXNhYmxlKHN0cnVj dCB2b3AyX3ZpZGVvX3BvcnQgKnZwKQo+K3sKPisJdTMyIGRzcF9jdHJsOwo+KwlpbnQgcmV0ID0g cmVhZHhfcG9sbF90aW1lb3V0KHZvcDJfdnBfZHNwX2x1dF9pc19lbmFibGVkLCB2cCwgZHNwX2N0 cmwsCj4rCQkJCSFkc3BfY3RybCwgNSwgMzAgKiAxMDAwKTsKPisJaWYgKHJldCkgewo+KwkJZHJt X2Vycih2cC0+dm9wMi0+ZHJtLCAiZGlzcGxheSBMVVQgUkFNIGVuYWJsZSB0aW1lb3V0IVxuIik7 Cj4rCQlyZXR1cm4gZmFsc2U7Cj4rCX0KPisKPisJcmV0dXJuIHRydWU7Cj4rfQo+Kwo+K3N0YXRp YyB2b2lkIHZvcDJfdnBfZHNwX2x1dF9lbmFibGUoc3RydWN0IHZvcDJfdmlkZW9fcG9ydCAqdnAp Cj4rewo+Kwl1MzIgZHNwX2N0cmwgPSB2b3AyX3ZwX3JlYWQodnAsIFJLMzU2OF9WUF9EU1BfQ1RS TCk7Cj4rCj4rCWRzcF9jdHJsIHw9IFJLMzU2OF9WUF9EU1BfQ1RSTF9fRFNQX0xVVF9FTjsKPisJ dm9wMl92cF93cml0ZSh2cCwgUkszNTY4X1ZQX0RTUF9DVFJMLCBkc3BfY3RybCk7Cj4rfQo+Kwo+ K3N0YXRpYyB2b2lkIHZvcDJfdnBfZHNwX2x1dF91cGRhdGVfZW5hYmxlKHN0cnVjdCB2b3AyX3Zp ZGVvX3BvcnQgKnZwKQo+K3sKPisJdTMyIGRzcF9jdHJsID0gdm9wMl92cF9yZWFkKHZwLCBSSzM1 NjhfVlBfRFNQX0NUUkwpOwo+Kwo+Kwlkc3BfY3RybCB8PSBSSzM1ODhfVlBfRFNQX0NUUkxfX0dB TU1BX1VQREFURV9FTjsKPisJdm9wMl92cF93cml0ZSh2cCwgUkszNTY4X1ZQX0RTUF9DVFJMLCBk c3BfY3RybCk7Cj4rfQo+Kwo+K3N0YXRpYyBpbmxpbmUgYm9vbCB2b3AyX3N1cHBvcnRzX3NlYW1s ZXNzX2dhbW1hX2x1dF91cGRhdGUoc3RydWN0IHZvcDIgKnZvcDIpCj4rewo+KwlyZXR1cm4gKHZv cDItPmRhdGEtPnNvY19pZCA9PSAzNTg4KTsKPit9Cj4rCj4rCj4gc3RhdGljIHZvaWQgdm9wMl9j cnRjX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAJCQkJICAgICBzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gewo+QEAgLTE0ODIsNiArMTU0MCw2NiBAQCBz dGF0aWMgYm9vbCB2b3AyX2NydGNfbW9kZV9maXh1cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4g CXJldHVybiB0cnVlOwo+IH0KPiAKPitzdGF0aWMgdm9pZCB2b3AyX2NydGNfd3JpdGVfZ2FtbWFf bHV0KHN0cnVjdCB2b3AyICp2b3AyLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4rewo+Kwljb25z dCBzdHJ1Y3Qgdm9wMl92aWRlb19wb3J0ICp2cCA9IHRvX3ZvcDJfdmlkZW9fcG9ydChjcnRjKTsK PisJY29uc3Qgc3RydWN0IHZvcDJfdmlkZW9fcG9ydF9kYXRhICp2cF9kYXRhID0gJnZvcDItPmRh dGEtPnZwW3ZwLT5pZF07Cj4rCj4rCXN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQgPSBjcnRjLT5z dGF0ZS0+Z2FtbWFfbHV0LT5kYXRhOwo+Kwl1bnNpZ25lZCBpbnQgaSwgYnBjID0gaWxvZzIodnBf ZGF0YS0+Z2FtbWFfbHV0X2xlbik7Cj4rCXUzMiB3b3JkOwo+Kwo+Kwlmb3IgKGkgPSAwOyBpIDwg Y3J0Yy0+Z2FtbWFfc2l6ZTsgaSsrKSB7Cj4rCQl3b3JkID0gKGRybV9jb2xvcl9sdXRfZXh0cmFj dChsdXRbaV0uYmx1ZSwgYnBjKSA8PCAoMiAqIGJwYykpIHwKPisJCSAgICAoZHJtX2NvbG9yX2x1 dF9leHRyYWN0KGx1dFtpXS5ncmVlbiwgYnBjKSA8PCBicGMpIHwKPisJCSAgICBkcm1fY29sb3Jf bHV0X2V4dHJhY3QobHV0W2ldLnJlZCwgYnBjKTsKPisKPisJCXdyaXRlbCh3b3JkLCB2b3AyLT5s dXRfcmVncyArIGkgKiA0KTsKPisJfQo+K30KPisKPitzdGF0aWMgdm9pZCB2b3AyX2NydGNfYXRv bWljX3RyeV9zZXRfZ2FtbWEoc3RydWN0IHZvcDIgKnZvcDIsCgpXaHkgd2UgbmVlZCBhICBfdHJ5 XyBpbiB0aGUgZnVuY3Rpb24gbmFtZSA/Cgo+KwkJCQkJc3RydWN0IHZvcDJfdmlkZW9fcG9ydCAq dnAsCj4rCQkJCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4rCQkJCQlzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCj4rewo+Kwo+KwlpZiAodm9wMi0+bHV0X3JlZ3MgJiYgY3J0Y19z dGF0ZS0+Y29sb3JfbWdtdF9jaGFuZ2VkKSB7Cj4rCQlpZiAoIWNydGNfc3RhdGUtPmdhbW1hX2x1 dCkgewo+KwkJCXZvcDJfdnBfZHNwX2x1dF9kaXNhYmxlKHZwKTsKPisJCQlyZXR1cm47Cj4rCQl9 Cj4rCj4rCQlpZiAodm9wMl9zdXBwb3J0c19zZWFtbGVzc19nYW1tYV9sdXRfdXBkYXRlKHZvcDIp KSB7CkkgdGhpbmsgaXQncyBiZXR0ZXJ5IHRvIGNoZWNrIGZvciByazM1NjgvcmszNTY2IGhlcmUs ICB0aGUgbmV3ZXIgc29jIHdpbGwgYWxsIGZvbGxvdwpyazM1ODggc3VwcG9ydCBzZWFtbGVzcyBn YW1tYSBsdXQgdXBkYXRlLgoKCj4rCQkJdm9wMl93cml0ZWwodm9wMiwgUkszNTY4X0xVVF9QT1JU X1NFTCwgRklFTERfUFJFUCgKPisJCQkJUkszNTg4X0xVVF9QT1JUX1NFTF9fR0FNTUFfQUhCX1dS SVRFX1NFTCwKPisJCQkJdnAtPmlkKSk7Cj4rCQkJdm9wMl9jcnRjX3dyaXRlX2dhbW1hX2x1dCh2 b3AyLCBjcnRjKTsKPisJCQl2b3AyX3ZwX2RzcF9sdXRfZW5hYmxlKHZwKTsKPisJCQl2b3AyX3Zw X2RzcF9sdXRfdXBkYXRlX2VuYWJsZSh2cCk7Cj4rCQl9IGVsc2UgewoKQXMgZm9yIHJrMzU2Ni82 OCwgd2Ugc2hvdWxkIGRvIGV4Y2x1c2l2ZSBjaGVjayBoZXJlLCBiZWNhdXNlIHRoZXJlIGlzIG9u bHkKb25lIGdhbW1hICwgIG9ubHkgb25lIFZQIGNhbiB1c2UgaXQgYXQgYSB0aW1lLiBTZWUgbXkg Y29tbWVudHMgaW4gVjM6CgpodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3QvbGlu dXgtcm9ja2NoaXAvcGF0Y2gvVGtnS1ZpdnVhTEZMSUxQWS1uM2lab184S0YtZGFLZHFkdS0wX2Uw SFAtNUFyXzhEQUxEZU5Xb2cyc3V3V0tqWDdlb21jYkdFVDBLWmU3RGx6ZGhLMllNNkNiTGJlS2VG WnItTUp6Sk10dzA9QHByb3Rvbi5tZS8KCgo+KwkJCXZvcDJfdnBfZHNwX2x1dF9kaXNhYmxlKHZw KTsKPisJCQl2b3AyX2NmZ19kb25lKHZwKTsKPisJCQlpZiAoIXZvcDJfdnBfZHNwX2x1dF9wb2xs X2Rpc2FibGUodnApKQo+KwkJCQlyZXR1cm47Cj4rCj4rCQkJdm9wMl93cml0ZWwodm9wMiwgUksz NTY4X0xVVF9QT1JUX1NFTCwgdnAtPmlkKTsKPisJCQl2b3AyX2NydGNfd3JpdGVfZ2FtbWFfbHV0 KHZvcDIsIGNydGMpOwo+KwkJCXZvcDJfdnBfZHNwX2x1dF9lbmFibGUodnApOwo+KwkJfQo+Kwl9 Cj4rfQo+Kwo+K3N0YXRpYyBpbmxpbmUgdm9pZCB2b3AyX2NydGNfYXRvbWljX3RyeV9zZXRfZ2Ft bWFfbG9ja2VkKHN0cnVjdCB2b3AyICp2b3AyLAo+KwkJCQkJc3RydWN0IHZvcDJfdmlkZW9fcG9y dCAqdnAsCj4rCQkJCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4rCQkJCQlzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCj4rewo+Kwl2b3AyX2xvY2sodm9wMik7Cj4rCXZvcDJfY3J0 Y19hdG9taWNfdHJ5X3NldF9nYW1tYSh2b3AyLCB2cCwgY3J0YywgY3J0Y19zdGF0ZSk7Cj4rCXZv cDJfdW5sb2NrKHZvcDIpOwo+K30KPisKPiBzdGF0aWMgdm9pZCB2b3AyX2RpdGhlcl9zZXR1cChz dHJ1Y3QgZHJtX2NydGMgKmNydGMsIHUzMiAqZHNwX2N0cmwpCj4gewo+IAlzdHJ1Y3Qgcm9ja2No aXBfY3J0Y19zdGF0ZSAqdmNzdGF0ZSA9IHRvX3JvY2tjaGlwX2NydGNfc3RhdGUoY3J0Yy0+c3Rh dGUpOwo+QEAgLTIwNTcsMTEgKzIxNzUsMzUgQEAgc3RhdGljIHZvaWQgdm9wMl9jcnRjX2F0b21p Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+IAo+IAl2b3AyX3ZwX3dyaXRlKHZwLCBS SzM1NjhfVlBfRFNQX0NUUkwsIGRzcF9jdHJsKTsKPiAKPisJdm9wMl9jcnRjX2F0b21pY190cnlf c2V0X2dhbW1hKHZvcDIsIHZwLCBjcnRjLCBjcnRjX3N0YXRlKTsKPisKPiAJZHJtX2NydGNfdmJs YW5rX29uKGNydGMpOwo+IAo+IAl2b3AyX3VubG9jayh2b3AyKTsKPiB9Cj4gCj4rc3RhdGljIGlu dCB2b3AyX2NydGNfYXRvbWljX2NoZWNrX2dhbW1hKHN0cnVjdCB2b3AyX3ZpZGVvX3BvcnQgKnZw LAo+KwkJCQkJc3RydWN0IGRybV9jcnRjICpjcnRjLAo+KwkJCQkJc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlLAo+KwkJCQkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ K3sKPisJc3RydWN0IHZvcDIgKnZvcDIgPSB2cC0+dm9wMjsKPisJdW5zaWduZWQgaW50IGxlbjsK PisKPisJaWYgKCF2cC0+dm9wMi0+bHV0X3JlZ3MgfHwgIWNydGNfc3RhdGUtPmNvbG9yX21nbXRf Y2hhbmdlZCB8fAo+KwkgICAgIWNydGNfc3RhdGUtPmdhbW1hX2x1dCkKPisJCXJldHVybiAwOwo+ Kwo+KwlsZW4gPSBkcm1fY29sb3JfbHV0X3NpemUoY3J0Y19zdGF0ZS0+Z2FtbWFfbHV0KTsKPisJ aWYgKGxlbiAhPSBjcnRjLT5nYW1tYV9zaXplKSB7Cj4rCQlkcm1fZGJnKHZvcDItPmRybSwgIklu dmFsaWQgTFVUIHNpemU7IGdvdCAlZCwgZXhwZWN0ZWQgJWRcbiIsCj4rCQkJCSAgICAgIGxlbiwg Y3J0Yy0+Z2FtbWFfc2l6ZSk7Cj4rCQlyZXR1cm4gLUVJTlZBTDsKPisJfQo+Kwo+KwlyZXR1cm4g MDsKPit9Cj4rCj4gc3RhdGljIGludCB2b3AyX2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPiAJCQkJICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gewo+ QEAgLTIwNjksNiArMjIxMSwxMSBAQCBzdGF0aWMgaW50IHZvcDJfY3J0Y19hdG9taWNfY2hlY2so c3RydWN0IGRybV9jcnRjICpjcnRjLAo+IAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiAJaW50 IG5wbGFuZXMgPSAwOwo+IAlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPSBkcm1f YXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4rCWludCByZXQ7Cj4rCj4r CXJldCA9IHZvcDJfY3J0Y19hdG9taWNfY2hlY2tfZ2FtbWEodnAsIGNydGMsIHN0YXRlLCBjcnRj X3N0YXRlKTsKPisJaWYgKHJldCkKPisJCXJldHVybiByZXQ7Cj4gCj4gCWRybV9hdG9taWNfY3J0 Y19zdGF0ZV9mb3JfZWFjaF9wbGFuZShwbGFuZSwgY3J0Y19zdGF0ZSkKPiAJCW5wbGFuZXMrKzsK PkBAIC0yNDU2LDkgKzI2MDMsMTIgQEAgc3RhdGljIHZvaWQgdm9wMl9zZXR1cF9kbHlfZm9yX3dp bmRvd3Moc3RydWN0IHZvcDIgKnZvcDIpCj4gCXZvcDJfd3JpdGVsKHZvcDIsIFJLMzU2OF9TTUFS VF9ETFlfTlVNLCBzZGx5KTsKPiB9Cj4gCj4rCj4gc3RhdGljIHZvaWQgdm9wMl9jcnRjX2F0b21p Y19iZWdpbihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gCQkJCSAgIHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkKPiB7Cj4rCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9 Cj4rCQlkcm1fYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4gCXN0cnVj dCB2b3AyX3ZpZGVvX3BvcnQgKnZwID0gdG9fdm9wMl92aWRlb19wb3J0KGNydGMpOwo+IAlzdHJ1 Y3Qgdm9wMiAqdm9wMiA9IHZwLT52b3AyOwo+IAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPkBA IC0yNDgyLDYgKzI2MzIsMTEgQEAgc3RhdGljIHZvaWQgdm9wMl9jcnRjX2F0b21pY19iZWdpbihz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gCXZvcDJfc2V0dXBfbGF5ZXJfbWl4ZXIodnApOwo+IAl2 b3AyX3NldHVwX2FscGhhKHZwKTsKPiAJdm9wMl9zZXR1cF9kbHlfZm9yX3dpbmRvd3Modm9wMik7 Cj4rCj4rCS8vIE5PVEU6IGluIGNhc2Ugb2YgbW9kZXNldCBnYW1tYSBsdXQgdXBkYXRlCj4rCS8v IGFscmVhZHkgaGFwcGVuZWQgaW4gYXRvbWljIGVuYWJsZQo+KwlpZiAoIWRybV9hdG9taWNfY3J0 Y19uZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUpKQo+KwkJdm9wMl9jcnRjX2F0b21pY190cnlfc2V0 X2dhbW1hX2xvY2tlZCh2b3AyLCB2cCwgY3J0YywgY3J0Y19zdGF0ZSk7CgpJIHdvdWxkIGxpa2Ug dXBkYXRlIGdhbW1hIGF0IGNydGNfYXRvbWljX2ZsdXNoIGNhbGxiYWNrIGxpa2UgbWVkaWF0ZWNr LCB0aWRzcywgYXN0LCBhbmQKd2UgYWxzbyBmb2xsb3dpbmcgdGhlc2UgaW4gb3VyIGJzcCBjb2Rl LgoKPiB9Cj4gCj4gc3RhdGljIHZvaWQgdm9wMl9jcnRjX2F0b21pY19mbHVzaChzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCj5AQCAtMjc5MCw3ICsyOTQ1LDEzIEBAIHN0YXRpYyBpbnQgdm9wMl9jcmVh dGVfY3J0Y3Moc3RydWN0IHZvcDIgKnZvcDIpCj4gCQl9Cj4gCj4gCQlkcm1fY3J0Y19oZWxwZXJf YWRkKCZ2cC0+Y3J0YywgJnZvcDJfY3J0Y19oZWxwZXJfZnVuY3MpOwo+KwkJaWYgKHZvcDItPmx1 dF9yZWdzICYmIHZwLT5jcnRjLmRldiAhPSBOVUxMKSB7Cj4rCQkJY29uc3Qgc3RydWN0IHZvcDJf dmlkZW9fcG9ydF9kYXRhICp2cF9kYXRhID0gJnZvcDJfZGF0YS0+dnBbdnAtPmlkXTsKPiAKPisJ CQlkcm1fbW9kZV9jcnRjX3NldF9nYW1tYV9zaXplKCZ2cC0+Y3J0YywgdnBfZGF0YS0+Z2FtbWFf bHV0X2xlbik7Cj4rCQkJZHJtX2NydGNfZW5hYmxlX2NvbG9yX21nbXQoJnZwLT5jcnRjLCAwLCBm YWxzZSwKPisJCQkJCQkgICB2cF9kYXRhLT5nYW1tYV9sdXRfbGVuKTsKCkl0IHNlZW1zIHRoYXQg d2UgY2FuIGtlZXAgaXQgaW4gb25lIGxpbmUsICB0aGUgZGVmYXVsdCBsaW1pdCAgb2YgbGludXgg a2VybmVsIGNvZGluZyBzdHlsZSBpcyAxMDAgY2hhcmFjdGVycyBub3cuCgoKPisJCX0KPiAJCWlu aXRfY29tcGxldGlvbigmdnAtPmRzcF9ob2xkX2NvbXBsZXRpb24pOwo+IAl9Cj4gCj5kaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AyLmggYi9kcml2 ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcDIuaAo+aW5kZXggNjE1YTE2MTk2 YWZmLi41MTBkZGE2ZjkwOTIgMTAwNjQ0Cj4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv cm9ja2NoaXBfZHJtX3ZvcDIuaAo+KysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tj aGlwX2RybV92b3AyLmgKPkBAIC0zOTQsNiArMzk0LDcgQEAgZW51bSBkc3RfZmFjdG9yX21vZGUg ewo+ICNkZWZpbmUgUkszNTY4X1JFR19DRkdfRE9ORV9fR0xCX0NGR19ET05FX0VOCQlCSVQoMTUp Cj4gCj4gI2RlZmluZSBSSzM1NjhfVlBfRFNQX0NUUkxfX1NUQU5EQlkJCQlCSVQoMzEpCj4rI2Rl ZmluZSBSSzM1NjhfVlBfRFNQX0NUUkxfX0RTUF9MVVRfRU4JCQlCSVQoMjgpCj4gI2RlZmluZSBS SzM1NjhfVlBfRFNQX0NUUkxfX0RJVEhFUl9ET1dOX01PREUJCUJJVCgyMCkKPiAjZGVmaW5lIFJL MzU2OF9WUF9EU1BfQ1RSTF9fRElUSEVSX0RPV05fU0VMCQlHRU5NQVNLKDE5LCAxOCkKPiAjZGVm aW5lIFJLMzU2OF9WUF9EU1BfQ1RSTF9fRElUSEVSX0RPV05fRU4JCUJJVCgxNykKPkBAIC00MDgs NiArNDA5LDggQEAgZW51bSBkc3RfZmFjdG9yX21vZGUgewo+ICNkZWZpbmUgUkszNTY4X1ZQX0RT UF9DVFJMX19DT1JFX0RDTEtfRElWCQlCSVQoNCkKPiAjZGVmaW5lIFJLMzU2OF9WUF9EU1BfQ1RS TF9fT1VUX01PREUJCQlHRU5NQVNLKDMsIDApCj4gCj4rI2RlZmluZSBSSzM1ODhfVlBfRFNQX0NU UkxfX0dBTU1BX1VQREFURV9FTgkJQklUKDIyKQo+Kwo+ICNkZWZpbmUgUkszNTg4X1ZQX0NMS19D VFJMX19EQ0xLX09VVF9ESVYJCUdFTk1BU0soMywgMikKPiAjZGVmaW5lIFJLMzU4OF9WUF9DTEtf Q1RSTF9fRENMS19DT1JFX0RJVgkJR0VOTUFTSygxLCAwKQo+IAo+QEAgLTQ2MCw2ICs0NjMsOCBA QCBlbnVtIGRzdF9mYWN0b3JfbW9kZSB7Cj4gI2RlZmluZSBSSzM1ODhfRFNQX0lGX1BPTF9fRFAx X1BJTl9QT0wJCQlHRU5NQVNLKDE0LCAxMikKPiAjZGVmaW5lIFJLMzU4OF9EU1BfSUZfUE9MX19E UDBfUElOX1BPTAkJCUdFTk1BU0soMTAsIDgpCj4gCj4rI2RlZmluZSBSSzM1ODhfTFVUX1BPUlRf U0VMX19HQU1NQV9BSEJfV1JJVEVfU0VMCUdFTk1BU0soMTMsIDEyKQo+Kwo+ICNkZWZpbmUgUksz NTY4X1ZQMF9NSVBJX0NUUkxfX0RDTEtfRElWMl9QSEFTRV9MT0NLCUJJVCg1KQo+ICNkZWZpbmUg UkszNTY4X1ZQMF9NSVBJX0NUUkxfX0RDTEtfRElWMgkJCUJJVCg0KQo+IAo+LS0gCj4yLjQ3LjAK Pgo+Cj4KPl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj5M aW51eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKPkxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVh ZC5vcmcKPmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgt cm9ja2NoaXAK