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 3870FC25B48 for ; Thu, 26 Oct 2023 10:10:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:References:CC:To:From: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=XahYdBjXDXSQX+0odoYGWjzjH0Wf5JXR/m/uIlN0eqk=; b=LjzRBB20gHz3a5 SFjcowuKzG9AioqXKvaiGLu6bJIWeyI2F09uRU85zGr/mcYm6sEhzI/QPcGAsWAmzFiF02a1aXC7S KwRGp0104IJBaJMC026cyI1VBYG1MsICChqYBUpBu349hmmfQBkHSiDKB8eqXJxhDHjj0QAPTGP6R S0UPh/KzhpDLhGPLgP9NZjm43MNOHCDli/1G76m3rE/aaMLP+gUVtbzNcRN9d5v/MkgwWV21JPOGc YqBKqA30GIRbnhbjOQmphfFFWWpTPRGs/PoTkD2UatkwVH8iKttYZi3cn6kN/LlZf54A0gOAk6YRc GDTuIKjnsbXMdJ1oajow==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qvxJj-00E8ZT-1b; Thu, 26 Oct 2023 10:10:19 +0000 Received: from ex01.ufhost.com ([61.152.239.75]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qvxJf-00E8XP-06 for linux-riscv@lists.infradead.org; Thu, 26 Oct 2023 10:10:18 +0000 Received: from EXMBX166.cuchost.com (unknown [175.102.18.54]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "EXMBX166", Issuer "EXMBX166" (not verified)) by ex01.ufhost.com (Postfix) with ESMTP id E605124E214; Thu, 26 Oct 2023 18:10:00 +0800 (CST) Received: from EXMBX061.cuchost.com (172.16.6.61) by EXMBX166.cuchost.com (172.16.6.76) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Thu, 26 Oct 2023 18:10:01 +0800 Received: from [192.168.60.126] (180.164.60.184) by EXMBX061.cuchost.com (172.16.6.61) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Thu, 26 Oct 2023 18:10:00 +0800 Message-ID: Date: Thu, 26 Oct 2023 18:09:59 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: [PATCH v2 5/6] drm/vs: Add KMS crtc&plane Content-Language: en-US From: Keith Zhao To: Dmitry Baryshkov CC: , , , , , , Conor Dooley , Albert Ou , "Emil Renner Berthing" , , Thomas Zimmermann , Bjorn Andersson , Chris Morgan , Maxime Ripard , Jagan Teki , Jack Zhu , Rob Herring , Palmer Dabbelt , "Krzysztof Kozlowski" , Paul Walmsley , Shengyang Chen , Changhuang Liang , Shawn Guo , Sumit Semwal References: <20231025103957.3776-1-keith.zhao@starfivetech.com> <20231025103957.3776-6-keith.zhao@starfivetech.com> <6db09f77-31e8-4f2e-a987-e3745d0e8c24@linaro.org> <627a0f60-7da0-6683-a451-42801c513308@starfivetech.com> In-Reply-To: <627a0f60-7da0-6683-a451-42801c513308@starfivetech.com> X-Originating-IP: [180.164.60.184] X-ClientProxiedBy: EXCAS066.cuchost.com (172.16.6.26) To EXMBX061.cuchost.com (172.16.6.61) X-YovoleRuleAgent: yovoleflag X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231026_031015_503714_61552227 X-CRM114-Status: GOOD ( 30.68 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org c29ycnkgCkRtaXRyeSAsYWNjaWRlbnRhbGx5IHdyb3RlIHRoZSB3cm9uZyBuYW1lClRha2Ugbm8g b2ZmZW5zZQoKT24gMjAyMy8xMC8yNiAxNzo0MiwgS2VpdGggWmhhbyB3cm90ZToKPiBoaSBWaWxs ZToKPiB2ZXJ5IGdsYWQgdG8gcmVjZWl2ZSB5b3VyIGZlZWRiYWNrCj4gU29tZSBvZiB0aGVtIGFy ZSB2ZXJ5IGdvb2QgaWRlYXMuCj4gU29tZSBhcmUgbm90IHZlcnkgY2xlYXIgYW5kIGhvcGUgdG8g Z2V0IHlvdXIgZnVydGhlciByZXBseSEKPiAKPiAKPiBPbiAyMDIzLzEwLzI2IDM6NDksIFZpbGxl IFN5cmrDpGzDpCB3cm90ZToKPj4gT24gV2VkLCBPY3QgMjUsIDIwMjMgYXQgMTA6Mjg6NTZQTSAr MDMwMCwgRG1pdHJ5IEJhcnlzaGtvdiB3cm90ZToKPj4+IE9uIDI1LzEwLzIwMjMgMTM6MzksIEtl aXRoIFpoYW8gd3JvdGU6Cj4+PiA+IGFkZCAyIGNydGNzIGFuZCA4IHBsYW5lcyBpbiB2cy1kcm0K Pj4+ID4gCj4+PiA+IFNpZ25lZC1vZmYtYnk6IEtlaXRoIFpoYW8gPGtlaXRoLnpoYW9Ac3RhcmZp dmV0ZWNoLmNvbT4KPj4+ID4gLS0tCj4+PiA+ICAgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29u L01ha2VmaWxlICAgfCAgICA4ICstCj4+PiA+ICAgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29u L3ZzX2NydGMuYyAgfCAgMjU3ICsrKysKPj4+ID4gICBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGlj b24vdnNfY3J0Yy5oICB8ICAgNDMgKwo+Pj4gPiAgIGRyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNv bi92c19kYy5jICAgIHwgMTAwMiArKysrKysrKysrKysKPj4+ID4gICBkcml2ZXJzL2dwdS9kcm0v dmVyaXNpbGljb24vdnNfZGMuaCAgICB8ICAgODAgKwo+Pj4gPiAgIGRyaXZlcnMvZ3B1L2RybS92 ZXJpc2lsaWNvbi92c19kY19ody5jIHwgMTk1OSArKysrKysrKysrKysrKysrKysrKysrKysKPj4+ ID4gICBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZGNfaHcuaCB8ICA0OTIgKysrKysr Cj4+PiA+ICAgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2Rydi5jICAgfCAgICAyICsK Pj4+ID4gICBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfcGxhbmUuYyB8ICA1MjYgKysr KysrKwo+Pj4gPiAgIGRyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19wbGFuZS5oIHwgICA1 OCArCj4+PiA+ICAgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX3R5cGUuaCAgfCAgIDY5 ICsKPj4+ID4gICAxMSBmaWxlcyBjaGFuZ2VkLCA0NDk0IGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCj4+PiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS92ZXJpc2ls aWNvbi92c19jcnRjLmMKPj4+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L3ZlcmlzaWxpY29uL3ZzX2NydGMuaAo+Pj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZGMuYwo+Pj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZGMuaAo+Pj4gPiAgIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZGNfaHcuYwo+Pj4gPiAgIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZGNfaHcuaAo+Pj4g PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfcGxh bmUuYwo+Pj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGlj b24vdnNfcGxhbmUuaAo+Pj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v dmVyaXNpbGljb24vdnNfdHlwZS5oCj4+PiA+IAo+Pj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3ZlcmlzaWxpY29uL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29u L01ha2VmaWxlCj4+PiA+IGluZGV4IDdkM2JlMzA1Yi4uMWQ0ODAxNmNhIDEwMDY0NAo+Pj4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vTWFrZWZpbGUKPj4+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL01ha2VmaWxlCj4+PiA+IEBAIC0xLDcgKzEsMTEgQEAK Pj4+ID4gICAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4+PiA+ICAgCj4+PiA+ IC12c19kcm0tb2JqcyA6PSB2c19kcnYubyBcCj4+PiA+IC0JCXZzX21vZGVzZXQubwo+Pj4gPiAr dnNfZHJtLW9ianMgOj0gdnNfZGNfaHcubyBcCj4+PiA+ICsJCXZzX2RjLm8gXAo+Pj4gPiArCQl2 c19jcnRjLm8gXAo+Pj4gPiArCQl2c19kcnYubyBcCj4+PiA+ICsJCXZzX21vZGVzZXQubyBcCj4+ PiA+ICsJCXZzX3BsYW5lLm8KPj4+ID4gICAKPj4+ID4gICBvYmotJChDT05GSUdfRFJNX1ZFUklT SUxJQ09OKSArPSB2c19kcm0ubwo+Pj4gPiAgIAo+Pj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNv bi92c19jcnRjLmMKPj4+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+ID4gaW5kZXggMDAwMDAw MDAwLi44YTY1OGVhNzcKPj4+ID4gLS0tIC9kZXYvbnVsbAo+Pj4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vdmVyaXNpbGljb24vdnNfY3J0Yy5jCj4+PiA+IEBAIC0wLDAgKzEsMjU3IEBACj4+PiA+ ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+Pj4gPiArLyoKPj4+ID4gKyAq IENvcHlyaWdodCAoQykgMjAyMyBWZXJpU2lsaWNvbiBIb2xkaW5ncyBDby4sIEx0ZC4KPj4+ID4g KyAqCj4+PiA+ICsgKi8KPj4+ID4gKwo+Pj4gPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+Pj4g PiArI2luY2x1ZGUgPGxpbnV4L2RlYnVnZnMuaD4KPj4+ID4gKyNpbmNsdWRlIDxsaW51eC9tZWRp YS1idXMtZm9ybWF0Lmg+Cj4+PiA+ICsKPj4+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19o ZWxwZXIuaD4KPj4+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgo+Pj4gPiArI2luY2x1 ZGUgPGRybS9kcm1fY3J0Yy5oPgo+Pj4gPiArI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2F0b21pY19o ZWxwZXIuaD4KPj4+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX3ZibGFuay5oPgo+Pj4gPiArI2luY2x1 ZGUgPGRybS92c19kcm0uaD4KPj4+ID4gKwo+Pj4gPiArI2luY2x1ZGUgInZzX2NydGMuaCIKPj4+ ID4gKyNpbmNsdWRlICJ2c19kYy5oIgo+Pj4gPiArI2luY2x1ZGUgInZzX2Rydi5oIgo+Pj4gPiAr Cj4+PiA+ICtzdGF0aWMgdm9pZCB2c19jcnRjX3Jlc2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK Pj4+ID4gK3sKPj4+ID4gKwlzdHJ1Y3QgdnNfY3J0Y19zdGF0ZSAqc3RhdGU7Cj4+PiA+ICsKPj4+ ID4gKwlpZiAoY3J0Yy0+c3RhdGUpIHsKPj4+ID4gKwkJX19kcm1fYXRvbWljX2hlbHBlcl9jcnRj X2Rlc3Ryb3lfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+Pj4gPiArCj4+PiA+ICsJCXN0YXRlID0gdG9f dnNfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4+PiA+ICsJCWtmcmVlKHN0YXRlKTsKPj4+ID4g KwkJY3J0Yy0+c3RhdGUgPSBOVUxMOwo+Pj4gPiArCX0KPj4+IAo+Pj4gWW91IGNhbiBjYWxsIHlv dXIgY3J0Y19kZXN0cm95X3N0YXRlIGZ1bmN0aW9uIGRpcmVjdGx5IGhlcmUuCj4gb2sgZ290IGl0 ICEKPj4+IAo+Pj4gPiArCj4+PiA+ICsJc3RhdGUgPSBremFsbG9jKHNpemVvZigqc3RhdGUpLCBH RlBfS0VSTkVMKTsKPj4+ID4gKwlpZiAoIXN0YXRlKQo+Pj4gPiArCQlyZXR1cm47Cj4+PiA+ICsK Pj4+ID4gKwlfX2RybV9hdG9taWNfaGVscGVyX2NydGNfcmVzZXQoY3J0YywgJnN0YXRlLT5iYXNl KTsKPj4+ID4gK30KPj4+ID4gKwo+Pj4gPiArc3RhdGljIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq Cj4+PiA+ICt2c19jcnRjX2F0b21pY19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jcnRjICpj cnRjKQo+Pj4gPiArewo+Pj4gPiArCXN0cnVjdCB2c19jcnRjX3N0YXRlICpvcmlfc3RhdGU7Cj4+ PiAKPj4+IEl0IG1pZ2h0IGJlIGEgbWF0dGVyIG9mIHRhc3RlLCBidXQgaXQgaXMgdXN1YWxseSBv bGRfc3RhdGUuCj4+PiAKPj4+ID4gKwlzdHJ1Y3QgdnNfY3J0Y19zdGF0ZSAqc3RhdGU7Cj4+PiA+ ICsKPj4+ID4gKwlpZiAoIWNydGMtPnN0YXRlKQo+Pj4gPiArCQlyZXR1cm4gTlVMTDsKPj4+ID4g Kwo+Pj4gPiArCW9yaV9zdGF0ZSA9IHRvX3ZzX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+Pj4g PiArCXN0YXRlID0ga3phbGxvYyhzaXplb2YoKnN0YXRlKSwgR0ZQX0tFUk5FTCk7Cj4+PiA+ICsJ aWYgKCFzdGF0ZSkKPj4+ID4gKwkJcmV0dXJuIE5VTEw7Cj4+PiA+ICsKPj4+ID4gKwlfX2RybV9h dG9taWNfaGVscGVyX2NydGNfZHVwbGljYXRlX3N0YXRlKGNydGMsICZzdGF0ZS0+YmFzZSk7Cj4+ PiA+ICsKPj4+ID4gKwlzdGF0ZS0+b3V0cHV0X2ZtdCA9IG9yaV9zdGF0ZS0+b3V0cHV0X2ZtdDsK Pj4+ID4gKwlzdGF0ZS0+ZW5jb2Rlcl90eXBlID0gb3JpX3N0YXRlLT5lbmNvZGVyX3R5cGU7Cj4+ PiA+ICsJc3RhdGUtPmJwcCA9IG9yaV9zdGF0ZS0+YnBwOwo+Pj4gPiArCXN0YXRlLT51bmRlcmZs b3cgPSBvcmlfc3RhdGUtPnVuZGVyZmxvdzsKPj4+IAo+Pj4gQ2FuIHlvdSB1c2Uga21lbWR1cCBp bnN0ZWFkPwo+IG9rIAo+Pj4gCj4+PiA+ICsKPj4+ID4gKwlyZXR1cm4gJnN0YXRlLT5iYXNlOwo+ Pj4gPiArfQo+Pj4gPiArCj4+PiA+ICtzdGF0aWMgdm9pZCB2c19jcnRjX2F0b21pY19kZXN0cm95 X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPj4+ID4gKwkJCQkJIHN0cnVjdCBkcm1fY3J0 Y19zdGF0ZSAqc3RhdGUpCj4+PiA+ICt7Cj4+PiA+ICsJX19kcm1fYXRvbWljX2hlbHBlcl9jcnRj X2Rlc3Ryb3lfc3RhdGUoc3RhdGUpOwo+Pj4gPiArCWtmcmVlKHRvX3ZzX2NydGNfc3RhdGUoc3Rh dGUpKTsKPj4+ID4gK30KPj4+ID4gKwo+Pj4gPiArc3RhdGljIGludCB2c19jcnRjX2VuYWJsZV92 Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+Pj4gPiArewo+Pj4gPiArCXN0cnVjdCB2c19j cnRjICp2c19jcnRjID0gdG9fdnNfY3J0YyhjcnRjKTsKPj4+ID4gKwlzdHJ1Y3QgdnNfZGMgKmRj ID0gZGV2X2dldF9kcnZkYXRhKHZzX2NydGMtPmRldik7Cj4+PiA+ICsKPj4+ID4gKwl2c19kY19l bmFibGVfdmJsYW5rKGRjLCB0cnVlKTsKPj4+ID4gKwo+Pj4gPiArCXJldHVybiAwOwo+Pj4gPiAr fQo+Pj4gPiArCj4+PiA+ICtzdGF0aWMgdm9pZCB2c19jcnRjX2Rpc2FibGVfdmJsYW5rKHN0cnVj dCBkcm1fY3J0YyAqY3J0YykKPj4+ID4gK3sKPj4+ID4gKwlzdHJ1Y3QgdnNfY3J0YyAqdnNfY3J0 YyA9IHRvX3ZzX2NydGMoY3J0Yyk7Cj4+PiA+ICsJc3RydWN0IHZzX2RjICpkYyA9IGRldl9nZXRf ZHJ2ZGF0YSh2c19jcnRjLT5kZXYpOwo+Pj4gPiArCj4+PiA+ICsJdnNfZGNfZW5hYmxlX3ZibGFu ayhkYywgZmFsc2UpOwo+Pj4gPiArfQo+Pj4gPiArCj4+PiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9jcnRjX2Z1bmNzIHZzX2NydGNfZnVuY3MgPSB7Cj4+PiA+ICsJLnNldF9jb25maWcJCT0g ZHJtX2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZywKPj4+ID4gKwkucGFnZV9mbGlwCQk9IGRybV9h dG9taWNfaGVscGVyX3BhZ2VfZmxpcCwKPj4+IAo+Pj4gZGVzdHJveSBpcyByZXF1aXJlZCwgc2Vl IGRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKCkKPiB3aWxsIGFkZCBkZXN0b3J5IAo+Pj4gCj4+PiA+ ICsJLnJlc2V0CQkJPSB2c19jcnRjX3Jlc2V0LAo+Pj4gPiArCS5hdG9taWNfZHVwbGljYXRlX3N0 YXRlID0gdnNfY3J0Y19hdG9taWNfZHVwbGljYXRlX3N0YXRlLAo+Pj4gPiArCS5hdG9taWNfZGVz dHJveV9zdGF0ZQk9IHZzX2NydGNfYXRvbWljX2Rlc3Ryb3lfc3RhdGUsCj4+PiAKPj4+IHBsZWFz ZSBjb25zaWRlciBhZGRpbmcgYXRvbWljX3ByaW50X3N0YXRlIHRvIG91dHB1dCBkcml2ZXItc3Bl Y2lmaWMgYml0cy4KPj4+IAo+IHdpbGwgYWRkIGF0b21pY19wcmludF9zdGF0ZSAgdG8gcHJpbnQg bXkgcHJpdmF0ZSBkZWZpbml0aW9ucwo+Pj4gPiArCS5lbmFibGVfdmJsYW5rCQk9IHZzX2NydGNf ZW5hYmxlX3ZibGFuaywKPj4+ID4gKwkuZGlzYWJsZV92YmxhbmsJCT0gdnNfY3J0Y19kaXNhYmxl X3ZibGFuaywKPj4+ID4gK307Cj4+PiA+ICsKPj4+ID4gK3N0YXRpYyB1OCBjYWxfcGl4ZWxfYml0 cyh1MzIgYnVzX2Zvcm1hdCkKPj4+IAo+Pj4gVGhpcyBsb29rcyBsaWtlIGEgZ2VuZXJpYyBoZWxw ZXIgY29kZSwgd2hpY2ggY2FuIGdvIHRvIGEgY29tbW9uIHBsYWNlLgo+Pj4gCj4+PiA+ICt7Cj4+ PiA+ICsJdTggYnBwOwo+Pj4gPiArCj4+PiA+ICsJc3dpdGNoIChidXNfZm9ybWF0KSB7Cj4+PiA+ ICsJY2FzZSBNRURJQV9CVVNfRk1UX1JHQjU2NV8xWDE2Ogo+Pj4gPiArCWNhc2UgTUVESUFfQlVT X0ZNVF9VWVZZOF8xWDE2Ogo+Pj4gPiArCQlicHAgPSAxNjsKPj4+ID4gKwkJYnJlYWs7Cj4+PiA+ ICsJY2FzZSBNRURJQV9CVVNfRk1UX1JHQjY2Nl8xWDE4Ogo+Pj4gPiArCWNhc2UgTUVESUFfQlVT X0ZNVF9SR0I2NjZfMVgyNF9DUEFESEk6Cj4+PiA+ICsJCWJwcCA9IDE4Owo+Pj4gPiArCQlicmVh azsKPj4+ID4gKwljYXNlIE1FRElBX0JVU19GTVRfVVlWWTEwXzFYMjA6Cj4+PiA+ICsJCWJwcCA9 IDIwOwo+Pj4gPiArCQlicmVhazsKPj4+ID4gKwljYXNlIE1FRElBX0JVU19GTVRfQkdSODg4XzFY MjQ6Cj4+PiA+ICsJY2FzZSBNRURJQV9CVVNfRk1UX1VZWVZZWThfMF81WDI0Ogo+Pj4gPiArCWNh c2UgTUVESUFfQlVTX0ZNVF9ZVVY4XzFYMjQ6Cj4+PiA+ICsJCWJwcCA9IDI0Owo+Pj4gPiArCQli cmVhazsKPj4+ID4gKwljYXNlIE1FRElBX0JVU19GTVRfUkdCMTAxMDEwXzFYMzA6Cj4+PiA+ICsJ Y2FzZSBNRURJQV9CVVNfRk1UX1VZWVZZWTEwXzBfNVgzMDoKPj4+ID4gKwljYXNlIE1FRElBX0JV U19GTVRfWVVWMTBfMVgzMDoKPj4+ID4gKwkJYnBwID0gMzA7Cj4+PiA+ICsJCWJyZWFrOwo+Pj4g PiArCWRlZmF1bHQ6Cj4+PiA+ICsJCWJwcCA9IDI0Owo+Pj4gPiArCQlicmVhazsKPj4+ID4gKwl9 Cj4+PiA+ICsKPj4+ID4gKwlyZXR1cm4gYnBwOwo+Pj4gPiArfQo+Pj4gPiArCj4+PiA+ICtzdGF0 aWMgdm9pZCB2c19jcnRjX2F0b21pY19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+Pj4g PiArCQkJCSAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+Pj4gPiArewo+Pj4gPiAr CXN0cnVjdCB2c19jcnRjICp2c19jcnRjID0gdG9fdnNfY3J0YyhjcnRjKTsKPj4+ID4gKwlzdHJ1 Y3QgdnNfZGMgKmRjID0gZGV2X2dldF9kcnZkYXRhKHZzX2NydGMtPmRldik7Cj4+PiA+ICsJc3Ry dWN0IHZzX2NydGNfc3RhdGUgKnZzX2NydGNfc3RhdGUgPSB0b192c19jcnRjX3N0YXRlKGNydGMt PnN0YXRlKTsKPj4+ID4gKwo+Pj4gPiArCXZzX2NydGNfc3RhdGUtPmJwcCA9IGNhbF9waXhlbF9i aXRzKHZzX2NydGNfc3RhdGUtPm91dHB1dF9mbXQpOwo+Pj4gPiArCj4+PiA+ICsJdnNfZGNfZW5h YmxlKGRjLCBjcnRjKTsKPj4+ID4gKwlkcm1fY3J0Y192Ymxhbmtfb24oY3J0Yyk7Cj4+PiA+ICt9 Cj4+PiA+ICsKPj4+ID4gK3N0YXRpYyB2b2lkIHZzX2NydGNfYXRvbWljX2Rpc2FibGUoc3RydWN0 IGRybV9jcnRjICpjcnRjLAo+Pj4gPiArCQkJCSAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSkKPj4+ID4gK3sKPj4+ID4gKwlzdHJ1Y3QgdnNfY3J0YyAqdnNfY3J0YyA9IHRvX3ZzX2Ny dGMoY3J0Yyk7Cj4+PiA+ICsJc3RydWN0IHZzX2RjICpkYyA9IGRldl9nZXRfZHJ2ZGF0YSh2c19j cnRjLT5kZXYpOwo+Pj4gPiArCj4+PiA+ICsJZHJtX2NydGNfdmJsYW5rX29mZihjcnRjKTsKPj4+ ID4gKwo+Pj4gPiArCXZzX2RjX2Rpc2FibGUoZGMsIGNydGMpOwo+Pj4gPiArCj4+PiA+ICsJaWYg KGNydGMtPnN0YXRlLT5ldmVudCAmJiAhY3J0Yy0+c3RhdGUtPmFjdGl2ZSkgewo+Pj4gPiArCQlz cGluX2xvY2tfaXJxKCZjcnRjLT5kZXYtPmV2ZW50X2xvY2spOwo+Pj4gPiArCQlkcm1fY3J0Y19z ZW5kX3ZibGFua19ldmVudChjcnRjLCBjcnRjLT5zdGF0ZS0+ZXZlbnQpOwo+Pj4gPiArCQlzcGlu X3VubG9ja19pcnEoJmNydGMtPmRldi0+ZXZlbnRfbG9jayk7Cj4+PiA+ICsKPj4+ID4gKwkJY3J0 Yy0+c3RhdGUtPmV2ZW50ID0gTlVMTDsKPj4+IAo+Pj4gSSB0aGluayBldmVuIHNob3VsZCBiZSBj bGVhcmVkIHdpdGhpbiB0aGUgbG9jay4KPj4gCj4+IGV2ZW50X2xvY2sgZG9lc24ndCBwcm90ZWN0 IGFueXRoaW5nIGluIHRoZSBjcnRjIHN0YXRlLgo+IAo+IGhvdyBhYm91dCBtYXRjaCBsaWtlIHRo aXM6Cj4gc3Bpbl9sb2NrX2lycSgmY3J0Yy0+ZGV2LT5ldmVudF9sb2NrKTsKPiBpZiAoY3J0Yy0+ c3RhdGUtPmV2ZW50KSB7Cj4gCWRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50KGNydGMsIGNydGMt PnN0YXRlLT5ldmVudCk7Cj4gCWNydGMtPnN0YXRlLT5ldmVudCA9IE5VTEw7Cj4gfQo+IHNwaW5f dW5sb2NrX2lycSgmY3J0Yy0+ZGV2LT5ldmVudF9sb2NrKTsKPiAKPj4gCj4+IEJ1dCB0aGUgYmln Z2VyIHByb2JsZW0gaW4gdGhpcyBjb2RlIGlzIHRoZSBwcmV2YWxlbnQgY3J0Yy0+c3RhdGUKPj4g dXNhZ2UuIFRoYXQgc2hvdWxkIHByZXR0eSBtdWNoIG5ldmVyIGJlIGRvbmUsIGVzcGVjaWFsbHkg aW4gYW55dGhpbmcKPj4gdGhhdCBjYW4gZ2V0IGNhbGxlZCBmcm9tIHRoZSBhY3R1YWwgY29tbWl0 IHBoYXNlIHdoZXJlIHlvdSBubyBsb25nZXIKPj4gaGF2ZSB0aGUgbG9ja3MgaGVsZC4gSW5zdGVh ZCBvbmUgc2hvdWxkIGFsbW9zdCBhbHdheXMgdXNlIHRoZQo+PiBnZXRfe25ldyxvbGR9X3N0YXRl KCkgc3R1ZmYsIG9yIHRoZSBvbGQvbmV3L29sZG5ldyBzdGF0ZSBpdGVyYXRvcnMuCj4gCj4gdGhl IHByZXZhbGVudCBjcnRjLT5zdGF0ZSB1c2FnZSA6Cj4gY3J0Yy0+c3RhdGUgc2hvdWxkIG5vdCBi ZSB1c2VkIGRpcmVjdGx5Pwo+IG5lZWQgcmVwbGFjZSBpdCBieSBnZXRfe25ldyxvbGR9X3N0YXRl KCkKPiAKPiBmb3IgZXhhbXBsZToKPiBkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudChjcnRjLCBj cnRjLT5zdGF0ZS0+ZXZlbnQpOwo+IAo+IAo+IHNob3VsZCBkbyBsaWtlIHRoaXMgOgo+IHN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0 YXRlKHN0YXRlLCBjcnRjKTsKPiAuLi4KPiBkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudChjcnRj LCBjcnRjX3N0YXRlLT5ldmVudCk7Cj4gLi4uCj4gCj4gSWYgdGhlcmUgaXMgYSBwcm9ibGVtLCBo ZWxwIGZ1cnRoZXIgY29ycmVjdAo+IHdpc2ggZ2l2ZSBhIGV4YW1wbGUKPiBUaGFua3MKPiAKPj4g Cj4+PiAKPj4+ID4gKwl9Cj4+PiA+ICt9Cj4+PiA+ICsKPj4+ID4gK3N0YXRpYyB2b2lkIHZzX2Ny dGNfYXRvbWljX2JlZ2luKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPj4+ID4gKwkJCQkgc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+Pj4gPiArewo+Pj4gPiArCXN0cnVjdCBkcm1fY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRl LAo+Pj4gPiArCQkJCQkJCQkJICBjcnRjKTsKPj4+ID4gKwo+Pj4gPiArCXN0cnVjdCB2c19jcnRj ICp2c19jcnRjID0gdG9fdnNfY3J0YyhjcnRjKTsKPj4+ID4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYg PSB2c19jcnRjLT5kZXY7Cj4+PiA+ICsJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iID0g Y3J0Yy0+c3RhdGUtPmdhbW1hX2x1dDsKPj4gCj4+IEVnLiBoZXJlIHlvdSBhcmUgdXNpbmcgZHJt X2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUoKSBjb3JyZWN0bHksIGJ1dAo+PiB0aGVuIHByb2Nl ZWQgdG8gZGlyZWN0bHkgYWNjZXNzIGNydGMtPnN0YXRlIGFueXdheS4KPj4gCj4gc3RydWN0IGRy bV9wcm9wZXJ0eV9ibG9iICpibG9iID0gY3J0Yy0+c3RhdGUtPmdhbW1hX2x1dDsKPiBjaGFuZ2Ug dG8gCj4gc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iID0gY3J0Y19zdGF0ZSAtPmdhbW1h X2x1dDsKPiAKPj4+ID4gKwlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0Owo+Pj4gPiArCXN0cnVj dCB2c19kYyAqZGMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPj4+ID4gKwo+Pj4gPiArCWlmIChj cnRjX3N0YXRlLT5jb2xvcl9tZ210X2NoYW5nZWQpIHsKPj4+ID4gKwkJaWYgKGJsb2IgJiYgYmxv Yi0+bGVuZ3RoKSB7Cj4+PiA+ICsJCQlsdXQgPSBibG9iLT5kYXRhOwo+Pj4gPiArCQkJdnNfZGNf c2V0X2dhbW1hKGRjLCBjcnRjLCBsdXQsCj4+PiA+ICsJCQkJCWJsb2ItPmxlbmd0aCAvIHNpemVv ZigqbHV0KSk7Cj4+PiA+ICsJCQl2c19kY19lbmFibGVfZ2FtbWEoZGMsIGNydGMsIHRydWUpOwo+ Pj4gPiArCQl9IGVsc2Ugewo+Pj4gPiArCQkJdnNfZGNfZW5hYmxlX2dhbW1hKGRjLCBjcnRjLCBm YWxzZSk7Cj4+PiA+ICsJCX0KPj4+ID4gKwl9Cj4+PiA+ICt9Cj4+IAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0 CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5v cmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yaXNjdgo=