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 67132CD5BAC for ; Thu, 21 May 2026 09:00:18 +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:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: References:In-Reply-To:Cc:To:Subject:From:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=nn5GyL0ac5IZxXMXhduZk+5Hvezr6drgxCcoOM8Ha6E=; b=Ro9lJ6Ok+cEB7v i3ENWKU2RhC9ak95ANwBBBo/Eq3dVXkEGexYa3RL/WR0PUQ95AzuTE9oPw0Ws7fOsPwRsKB92EJb+ QD+QywRBNA68A34k5w+Ni0kPcpZBA0imSQg6mXSf6TfFioWGb9khMCHugTfK741ivgojgzB5n660Y tFSegdg+hlHWH6lRvSLIy7CFg6DrSyTIWXrCqEknH2iNZeM3Ugh/8H7C8iE+vEEb17n/I/zXnMMTT Il4LLKLs4qlXbKxo6DIJTyi6g5kQea54zZt3RESAPIU8dbZTmsu3IOAgoUSLjeFmL/lNmbl4PFzlf /QGck5guJnTs9PZmmiUA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wPzGB-00000007Dzn-3tDt; Thu, 21 May 2026 09:00:07 +0000 Received: from tor.source.kernel.org ([2600:3c04:e001:324:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wPzGB-00000007DzY-0gQr for linux-amlogic@lists.infradead.org; Thu, 21 May 2026 09:00:07 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 15BA7601F4; Thu, 21 May 2026 09:00:06 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 377841F000E9; Thu, 21 May 2026 09:00:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779354005; bh=YuNOutbIKFNcGBRG6RS+kt+hqAaWYY7b+WS4E/mXI6Q=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=NGNOsEBvhZDxBwjHpEzxrOBxoXOnDdu8GfMx9afkSSEFCcF+tK/oMFk4JzIgKyWga V9UUEJcQema6G48IDTWy0xojxdcMKJsRkBTNDEFj4xiW/IaQDjlePP7pG8ayMxiIPr Rf5Mb29IDFvl70MS/oj3fk7NyfHApo2Mi0tP6w0Cf7pAuavSGj+zdYB04446rFVV7g AeydRSRuZLm5i03lAQvb9zdNA9p78YD5LaWEUobKVyeFd5nefsohJlg8uuNpwIN1MX 8/Gh++z1W7TtFNsucDsdLUAdEXYtAR2FmLOStG3WPzh/IH5RU41fIlPaJx9cmN5vg4 Nw6pYVZslGXnw== From: sashiko-bot@kernel.org Subject: Re: [PATCH v8 2/3] dmaengine: amlogic: Add general DMA driver for A9 To: "Xianwei Zhao via B4 Relay" Cc: robh@kernel.org, Frank.Li@kernel.org, conor+dt@kernel.org, linux-amlogic@lists.infradead.org, neil.armstrong@linaro.org, vkoul@kernel.org, dmaengine@vger.kernel.org, devicetree@vger.kernel.org In-Reply-To: <20260521-amlogic-dma-v8-2-86cc2ce94142@amlogic.com> References: <20260521-amlogic-dma-v8-2-86cc2ce94142@amlogic.com> Date: Thu, 21 May 2026 09:00:04 +0000 Message-Id: <20260521090005.377841F000E9@smtp.kernel.org> X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MTcgcG90ZW50aWFsIGlzc3VlKHMpIHRvIGNvbnNpZGVyOgotIFtDcml0aWNhbF0gVGhlIG5haXZl IHJpbmcgYnVmZmVyIGFsbG9jYXRvciBvdmVyZmxvd3Mgb24gbGFyZ2Ugc2NhdHRlcmxpc3RzIGFu ZCBzaWxlbnRseSBvdmVyd3JpdGVzIGFjdGl2ZSBpbi1mbGlnaHQgRE1BIGRlc2NyaXB0b3JzLgot IFtIaWdoXSBUaGUgRE1BIGVuZ2luZSBkZXZpY2UgaXMgdW5yZWdpc3RlcmVkIHR3aWNlIG9uIGRy aXZlciByZW1vdmFsIGFuZCBwcm9iZSBlcnJvciBwYXRocy4KLSBbSGlnaF0gVGhlIERNQSBjb250 cm9sbGVyIGlzIGV4cG9zZWQgdG8gY2xpZW50cyBiZWZvcmUgaGFyZHdhcmUgYW5kIGludGVycnVw dHMgYXJlIGZ1bGx5IGluaXRpYWxpemVkLgotIFtIaWdoXSBJbnRlZ2VyIHRydW5jYXRpb24gaW4g dGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBhbGxvY2F0aW9uIGxlbmd0aCBmb3IgYGFtbF9kbWFfZGV2 YCBsZWFkcyB0byBhIGhlYXAgYnVmZmVyIG92ZXJmbG93LgotIFtIaWdoXSBUaGUgZHJpdmVyIGFs bG9jYXRlcyBtZW1vcnkgd2l0aCBgR0ZQX0tFUk5FTGAgaW5zaWRlIGEgRE1BIHByZXBhcmF0aW9u IGNhbGxiYWNrLCB3aGljaCBjYW4gc2xlZXAgaW4gYXRvbWljIGNvbnRleHQuCi0gW0hpZ2hdIFRo ZSBkcml2ZXIgdW5jb25kaXRpb25hbGx5IGRlcmVmZXJlbmNlcyBgY3VyX2Rlc2NgIGluIHRoZSBp bnRlcnJ1cHQgaGFuZGxlciBhbmQgYHRlcm1pbmF0ZV9hbGxgLCBsZWFkaW5nIHRvIGEga2VybmVs IHBhbmljIGlmIHRoZSBjaGFubmVsIGlzIGlkbGUuCi0gW0hpZ2hdIEEgc2luZ2xlIERNQSB0cmFu c2ZlciBlcnJvciBwZXJtYW5lbnRseSBkZWFkbG9ja3MgdGhlIGNoYW5uZWwuCi0gW0hpZ2hdIENh bGxpbmcgYGFtbF9kbWFfcHJlcF9zbGF2ZV9zZ2Agd2l0aCBhbiBlbXB0eSBzY2F0dGVybGlzdCBy ZXN1bHRzIGluIGEgYnVmZmVyIHVuZGVyZmxvdyB3cml0ZS4KLSBbSGlnaF0gTWlzbWF0Y2ggYmV0 d2VlbiBhbGxvY2F0ZWQgbGlua3MgYW5kIHdyaXR0ZW4gbGlua3MgZm9yIHplcm8tbGVuZ3RoIHNj YXR0ZXJsaXN0IGVsZW1lbnRzLgotIFtIaWdoXSBNaXNzaW5nIGB0YXNrbGV0X2tpbGwoKWAgZHVy aW5nIGRyaXZlciByZW1vdmFsIGxlYWRzIHRvIFVzZS1BZnRlci1GcmVlLgotIFtIaWdoXSBGb3Ig V0NIIChERVZfVE9fTUVNKSBjaGFubmVscywgdGhlIGhhcmR3YXJlIGlzIG5ldmVyIHVucGF1c2Vk IGFmdGVyIGB0ZXJtaW5hdGVfYWxsKClgIG9yIGBwYXVzZSgpYC4KLSBbSGlnaF0gVGhlIDY0LWJp dCBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBETUEgZGVzY3JpcHRvciBsaXN0IGlzIHRydW5jYXRl ZCB0byAzMiBiaXRzLCBjYXVzaW5nIERNQSBmYXVsdHMuCi0gW01lZGl1bV0gSW5jb3JyZWN0IGFu ZCBub24tY29tcGxpYW50IGRlc2NyaXB0b3IgcmVzaWR1ZSBjYWxjdWxhdGlvbiBpbiBgYW1sX2Rt YV90eF9zdGF0dXNgLgotIFtNZWRpdW1dIFNpZ25lZCBpbnRlZ2VyIG92ZXJmbG93IGR1ZSB0byAz Mi1iaXQgc2hpZnQgaW4gdGhlIGludGVycnVwdCBoYW5kbGVyLgotIFtNZWRpdW1dIENvbmN1cnJl bnQgbW9kaWZpY2F0aW9uIG9mIGBhbWxfY2hhbi0+c3RhdHVzYCB3aXRob3V0IGxvY2tpbmcgY2F1 c2VzIHN0YXRlIGNvcnJ1cHRpb24uCi0gW01lZGl1bV0gVGhlIHNoYXJlZCBpbnRlcnJ1cHQgaGFu ZGxlciB1bmNvbmRpdGlvbmFsbHkgcmV0dXJucyBgSVJRX0hBTkRMRURgIGV2ZW4gd2hlbiBpdCBw cm9jZXNzZXMgbm8gZXZlbnRzLgotIFtNZWRpdW1dIEhhcmR3YXJlIGRlc2NyaXB0b3IgZmllbGRz IHVzZSBuYXRpdmUgZW5kaWFubmVzcyBhbmQgdW5hbGlnbmVkIDY0LWJpdCBhY2Nlc3MuCi0tCgpj b21taXQgNjMyOGE2MmRmN2EwMzE1NzNkYWU1YTExM2YxZjRhNWIwOGZkN2Q1MApBdXRob3I6IFhp YW53ZWkgWmhhbyA8eGlhbndlaS56aGFvQGFtbG9naWMuY29tPgpTdWJqZWN0OiBkbWFlbmdpbmU6 IGFtbG9naWM6IEFkZCBnZW5lcmFsIERNQSBkcml2ZXIgZm9yIEE5CgpUaGlzIHBhdGNoIGFkZHMg YSBuZXcgRE1BIGVuZ2luZSBkcml2ZXIgZm9yIHRoZSBBbWxvZ2ljIEE5IGdlbmVyYWwtcHVycG9z ZQpETUEgY29udHJvbGxlci4gSXQgaGFuZGxlcyB0cmFuc2ZlciBvcGVyYXRpb25zIHVzaW5nIHRo ZSB2aXJ0LWRtYSBmcmFtZXdvcmsKYW5kIHJlZ2lzdGVycyB0aGUgY29udHJvbGxlciB1c2luZyB0 aGUgZG1hZW5naW5lIEFQSS4KCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL2FtbG9naWMtZG1h LmMgYi9kcml2ZXJzL2RtYS9hbWxvZ2ljLWRtYS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp bmRleCAwMDAwMDAwMDAwMDAwLi43ZGFlNWJhMTVjN2U3Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBi L2RyaXZlcnMvZG1hL2FtbG9naWMtZG1hLmMKPiBAQCAtMCwwICsxLDY4MiBAQApbIC4uLiBdCj4g K3N0cnVjdCBhbWxfZG1hX3NnX2xpbmsgewo+ICsjZGVmaW5lIExJTktfTEVOCQlHRU5NQVNLKDI2 LCAwKQo+ICsjZGVmaW5lIExJTktfSVJRCQlCSVQoMjcpCj4gKyNkZWZpbmUgTElOS19FT0MJCUJJ VCgyOCkKPiArI2RlZmluZSBMSU5LX0xPT1AJCUJJVCgyOSkKPiArI2RlZmluZSBMSU5LX0VSUgkJ QklUKDMwKQo+ICsjZGVmaW5lIExJTktfT1dORVIJCUJJVCgzMSkKPiArCXUzMiBjdGw7Cj4gKwl1 NjQgYWRkcmVzczsKPiArCXUzMiByZXZlcmVkOwo+ICt9IF9fcGFja2VkOwoKW1NldmVyaXR5OiBN ZWRpdW1dCldpbGwgdGhpcyBfX3BhY2tlZCBzdHJ1Y3R1cmUgY2F1c2UgYWxpZ25tZW50IGZhdWx0 cyBvbiBhcmNoaXRlY3R1cmVzIHNlbnNpdGl2ZQp0byB1bmFsaWduZWQgbWVtb3J5IGFjY2Vzc2Vz PyBUaGUgNjQtYml0IGFkZHJlc3MgZmllbGQgaXMgZm9yY2VkIHRvIGFuCnVuYWxpZ25lZCA0LWJ5 dGUgb2Zmc2V0LiBBcmUgdGhlIG5hdGl2ZSB0eXBlcyAodTMyLCB1NjQpIHNhZmUgaGVyZSwgb3Ig Y291bGQKdGhleSBicmVhayBETUEgZXhlY3V0aW9uIG9uIGJpZy1lbmRpYW4ga2VybmVscz8KClsg Li4uIF0KPiArc3RhdGljIGVudW0gZG1hX3N0YXR1cyBhbWxfZG1hX3R4X3N0YXR1cyhzdHJ1Y3Qg ZG1hX2NoYW4gKmNoYW4sCj4gKwkJCQkJIGRtYV9jb29raWVfdCBjb29raWUsCj4gKwkJCQkJIHN0 cnVjdCBkbWFfdHhfc3RhdGUgKnR4c3RhdGUpCj4gK3sKWyAuLi4gXQo+ICsJc3Bpbl9sb2NrX2ly cXNhdmUoJmFtbF9jaGFuLT52Y2hhbi5sb2NrLCBmbGFncyk7Cj4gKwl2ZCA9IHZjaGFuX2ZpbmRf ZGVzYygmYW1sX2NoYW4tPnZjaGFuLCBjb29raWUpOwo+ICsJaWYgKHZkKSB7Cj4gKwkJbGlzdF9m b3JfZWFjaF9lbnRyeSh2ZCwgJmFtbF9jaGFuLT52Y2hhbi5kZXNjX2lzc3VlZCwgbm9kZSkgewo+ ICsJCQlhbWxfZGVzYyA9IHRvX2FtbF9kbWFfZGVzYyh2ZCk7Cj4gKwkJCXJlc2lkdWUgKz0gYW1s X2Rlc2MtPmRhdGFfbGVuOwo+ICsJCQlpZiAodmQtPnR4LmNvb2tpZSA9PSBjb29raWUpCj4gKwkJ CQlicmVhazsKPiArCQl9CgpbU2V2ZXJpdHk6IE1lZGl1bV0KRG9lcyB0aGlzIGluY29ycmVjdGx5 IGFjY3VtdWxhdGUgdGhlIGRhdGFfbGVuIG9mIGluZGVwZW5kZW50IGRlc2NyaXB0b3JzPwpGdXJ0 aGVybW9yZSwgc2luY2UgbGlzdF9mb3JfZWFjaF9lbnRyeSgpIG92ZXJ3cml0ZXMgdGhlIGxvb3Ag Y3Vyc29yICd2ZCcsIGNvdWxkCnRoaXMgdHJhdmVyc2UgdGhlIGVudGlyZSBkZXNjX2lzc3VlZCBs aXN0IHdpdGhvdXQgYnJlYWtpbmcgaWYgdGhlIHRhcmdldApjb29raWUgcmVzaWRlcyBpbiBkZXNj X3N1Ym1pdHRlZCwgdGhlcmVieSByZXR1cm5pbmcgYW4gaW5jb3JyZWN0IHRvdGFsPwoKWyAuLi4g XQo+ICtzdGF0aWMgaW50IGZpbmRfZG1hX2NoYW5fbGluayhzdHJ1Y3QgYW1sX2RtYV9jaGFuICph bWxfY2hhbiwgdTMyIG51bSkKPiArewo+ICsJaW50IGlkeDsKPiArCXVuc2lnbmVkIGxvbmcgZmxh Z3M7Cj4gKwo+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJmFtbF9jaGFuLT52Y2hhbi5sb2NrLCBmbGFn cyk7Cj4gKwlpZiAoKGFtbF9jaGFuLT5pZHhfbmV4dCArIG51bSkgPj0gRE1BX01BWF9MSU5LKQo+ ICsJCWlkeCA9IDA7Cj4gKwllbHNlCj4gKwkJaWR4ID0gYW1sX2NoYW4tPmlkeF9uZXh0Owo+ICsJ YW1sX2NoYW4tPmlkeF9uZXh0ID0gaWR4ICsgbnVtOwo+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmYW1sX2NoYW4tPnZjaGFuLmxvY2ssIGZsYWdzKTsKPiArCj4gKwlyZXR1cm4gaWR4Owo+ICt9 CgpbU2V2ZXJpdHk6IENyaXRpY2FsXQpJcyBpdCBwb3NzaWJsZSBmb3IgJ251bScgdG8gYmUgbGFy Z2VyIHRoYW4gRE1BX01BWF9MSU5LICgyNTYpPyBJZiBhIHNjYXR0ZXJsaXN0Cm5lZWRzIG1vcmUg dGhhbiAyNTYgbGlua3MsIGNvdWxkIGlkeF9uZXh0IGJlY29tZSBvdXQgb2YgYm91bmRzIGFuZCBj YXVzZSB0aGUKZGVzY3JpcHRvciBwcmVwYXJhdGlvbiBsb29wIHRvIHdyaXRlIHBhc3QgdGhlIGVu ZCBvZiB0aGUgc2dfbGluayBhcnJheT8gQ291bGQKdGhpcyBhbHNvIHNpbGVudGx5IG92ZXJ3cml0 ZSBhY3RpdmUgaW4tZmxpZ2h0IGRlc2NyaXB0b3JzIHdpdGhvdXQgY2hlY2tpbmcgaWYKdGhleSBh cmUgY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZD8KClsgLi4uIF0KPiArc3RhdGljIHN0cnVjdCBk bWFfYXN5bmNfdHhfZGVzY3JpcHRvciAqYW1sX2RtYV9wcmVwX3NsYXZlX3NnCj4gKwkJKHN0cnVj dCBkbWFfY2hhbiAqY2hhbiwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZ2wsCj4gKwkJdW5zaWduZWQg aW50IHNnX2xlbiwgZW51bSBkbWFfdHJhbnNmZXJfZGlyZWN0aW9uIGRpcmVjdGlvbiwKPiArCQl1 bnNpZ25lZCBsb25nIGZsYWdzLCB2b2lkICpjb250ZXh0KQo+ICt7ClsgLi4uIF0KPiArCWFtbF9k ZXNjID0ga3phbGxvYyhzaXplb2YoKmFtbF9kZXNjKSwgR0ZQX0tFUk5FTCk7CgpbU2V2ZXJpdHk6 IEhpZ2hdCkNhbiB0aGlzIGFsbG9jYXRpb24gc2xlZXAgaW4gYXRvbWljIGNvbnRleHQ/IERtYWVu Z2luZSBwcmVwIGNhbGxiYWNrcyBhcmUKZXhwZWN0ZWQgdG8gYmUgY2FsbGFibGUgZnJvbSBhdG9t aWMgY29udGV4dHMgKGUuZy4gaW5zaWRlIGludGVycnVwdCBoYW5kbGVycyBvcgp3aGlsZSBob2xk aW5nIHNwaW5sb2NrcykuIFNob3VsZCBHRlBfTk9XQUlUIG9yIEdGUF9BVE9NSUMgYmUgdXNlZCBp bnN0ZWFkPwoKPiArCWlmICghYW1sX2Rlc2MpCj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwlsaW5rX2Nv dW50ID0gc2dfbmVudHNfZm9yX2RtYShzZ2wsIHNnX2xlbiwgU0dfTUFYX0xFTik7Cj4gKwlhbWxf ZGVzYy0+aWR4ID0gZmluZF9kbWFfY2hhbl9saW5rKGFtbF9jaGFuLCBsaW5rX2NvdW50KTsKPiAr CXNnX2xpbmsgPSBhbWxfY2hhbi0+c2dfbGluayArIGFtbF9kZXNjLT5pZHg7Cj4gKwlmb3JfZWFj aF9zZyhzZ2wsIHNnLCBzZ19sZW4sIGkpIHsKPiArCQlhdmFpbCA9IHNnX2RtYV9sZW4oc2cpOwo+ ICsJCXBhZGRyID0gc2ctPmRtYV9hZGRyZXNzOwo+ICsJCXdoaWxlIChhdmFpbCA+IFNHX01BWF9M RU4pIHsKPiArCQkJLyogc2V0IGRtYSBhZGRyZXNzIGFuZCBsZW4gdG8gc2dsaW5rKi8KPiArCQkJ c2dfbGluay0+YWRkcmVzcyA9IHBhZGRyOwo+ICsJCQlzZ19saW5rLT5jdGwgPSBGSUVMRF9QUkVQ KExJTktfTEVOLCBTR19NQVhfTEVOKTsKPiArCQkJcGFkZHIgPSBwYWRkciArIFNHX01BWF9MRU47 Cj4gKwkJCWF2YWlsID0gYXZhaWwgLSBTR19NQVhfTEVOOwo+ICsJCQlzZ19saW5rKys7Cj4gKwkJ fQo+ICsJCS8qIHNldCBkbWEgYWRkcmVzcyBhbmQgbGVuIHRvIHNnbGluayovCj4gKwkJc2dfbGlu ay0+YWRkcmVzcyA9IHBhZGRyOwo+ICsJCXNnX2xpbmstPmN0bCA9IEZJRUxEX1BSRVAoTElOS19M RU4sIGF2YWlsKTsKPiArCj4gKwkJYW1sX2Rlc2MtPmRhdGFfbGVuICs9IHNnX2RtYV9sZW4oc2cp Owo+ICsJCXNnX2xpbmsrKzsKPiArCX0KCltTZXZlcml0eTogSGlnaF0KSWYgYSBzY2F0dGVybGlz dCBlbGVtZW50IGhhcyBhIGxlbmd0aCBvZiAwLCBzZ19uZW50c19mb3JfZG1hKCkgd2lsbCBub3Qg YWxsb2NhdGUKYSBsaW5rIHNsb3QgZm9yIGl0LiBXaWxsIHRoaXMgbG9vcCB1bmNvbmRpdGlvbmFs bHkgaW5jcmVtZW50IHNnX2xpbmsrKyBmb3IgdGhhdAplbGVtZW50IGFueXdheSwgY2F1c2luZyB0 aGUgZHJpdmVyIHRvIGNvbnN1bWUgbW9yZSBsaW5rIHNsb3RzIHRoYW4gYWxsb2NhdGVkIGFuZApj b3JydXB0IHRoZSByaW5nIGJ1ZmZlcj8KCj4gKwo+ICsJLyogdGhlIGxhc3Qgc2cgc2V0IGVvYyBm bGFnICovCj4gKwlzZ19saW5rLS07Cj4gKwlzZ19saW5rLT5jdGwgfD0gTElOS19FT0M7CgpbU2V2 ZXJpdHk6IEhpZ2hdCklmIGFtbF9kbWFfcHJlcF9zbGF2ZV9zZygpIGlzIGNhbGxlZCB3aXRoIHNn X2xlbiA9PSAwLCB0aGUgZm9yX2VhY2hfc2cgbG9vcAp3aWxsIG5vdCBleGVjdXRlLiBDb3VsZCB0 aGlzIGNhdXNlIHNnX2xpbmstLSB0byBwb2ludCBiZWZvcmUgdGhlIGFsbG9jYXRlZApkZXNjcmlw dG9yIGluZGV4LCBsZWFkaW5nIHRvIGFuIG91dC1vZi1ib3VuZHMgdW5kZXJmbG93IHdyaXRlPwoK WyAuLi4gXQo+ICtzdGF0aWMgaW50IGFtbF9kbWFfY2hhbl9wYXVzZShzdHJ1Y3QgZG1hX2NoYW4g KmNoYW4pCj4gK3sKPiArCXN0cnVjdCBhbWxfZG1hX2NoYW4gKmFtbF9jaGFuID0gdG9fYW1sX2Rt YV9jaGFuKGNoYW4pOwo+ICsJc3RydWN0IGFtbF9kbWFfZGV2ICphbWxfZG1hID0gYW1sX2NoYW4t PmFtbF9kbWE7Cj4gKwo+ICsJcmVnbWFwX3NldF9iaXRzKGFtbF9kbWEtPnJlZ21hcCwgYW1sX2No YW4tPnJlZ19vZmZzICsgUkNIX0NGRywgQ0ZHX1BBVVNFKTsKPiArCWFtbF9jaGFuLT5wcmVfc3Rh dHVzID0gYW1sX2NoYW4tPnN0YXR1czsKPiArCWFtbF9jaGFuLT5zdGF0dXMgPSBETUFfUEFVU0VE OwoKW1NldmVyaXR5OiBNZWRpdW1dCkFyZSB0aGVzZSBzdGF0dXMgdXBkYXRlcyBzdWJqZWN0IHRv IHJhY2UgY29uZGl0aW9ucz8gYW1sX2NoYW4tPnN0YXR1cyBpcwptb2RpZmllZCBoZXJlIHdpdGhv dXQgYWNxdWlyaW5nIGFtbF9jaGFuLT52Y2hhbi5sb2NrLCB3aGlsZSBpdCBpcyBhbHNvIG1vZGlm aWVkCmNvbmN1cnJlbnRseSBieSB0aGUgaW50ZXJydXB0IGhhbmRsZXIuCgpbIC4uLiBdCj4gK3N0 YXRpYyB2b2lkIGFtbF9kbWFfc3RhcnQoc3RydWN0IGFtbF9kbWFfY2hhbiAqYW1sX2NoYW4pCj4g K3sKWyAuLi4gXQo+ICsJaWYgKGFtbF9jaGFuLT5kaXJlY3Rpb24gPT0gRE1BX01FTV9UT19ERVYp IHsKPiArCQlyZWdtYXBfd3JpdGUoYW1sX2RtYS0+cmVnbWFwLCBhbWxfY2hhbi0+cmVnX29mZnMg KyBSQ0hfQUREUiwKPiArCQkJICAgICAoYW1sX2NoYW4tPnNnX2xpbmtfcGh5cyArIGFtbF9kZXNj LT5pZHggKiBETUFfTElOS19TSVpFKSk7CgpbU2V2ZXJpdHk6IEhpZ2hdCkRvZXMgcGFzc2luZyBh IDY0LWJpdCBkbWFfYWRkcl90IChzZ19saW5rX3BoeXMpIHRvIHJlZ21hcF93cml0ZSgpIHNpbGVu dGx5CnRydW5jYXRlIHRoZSB1cHBlciAzMiBiaXRzIG9mIHRoZSBhZGRyZXNzPyBJZiBtZW1vcnkg aXMgYWxsb2NhdGVkIGFib3ZlIDRHQiwKd2lsbCB0aGlzIGxlYWQgdG8gaW5jb3JyZWN0IG1lbW9y eSBhY2Nlc3NlcyBieSB0aGUgRE1BIGNvbnRyb2xsZXI/Cgo+ICsJCXJlZ21hcF93cml0ZShhbWxf ZG1hLT5yZWdtYXAsIGFtbF9jaGFuLT5yZWdfb2ZmcyArIFJDSF9MRU4sIGFtbF9kZXNjLT5kYXRh X2xlbik7Cj4gKwkJcmVnbWFwX2NsZWFyX2JpdHMoYW1sX2RtYS0+cmVnbWFwLCBSQ0hfSU5UX01B U0ssIEJJVChjaGFuX2lkKSk7Cj4gKwkJLyogZm9yIHJjaCAodHgpIG5lZWQgc2V0IGNmZyAwIHRv IHRyaWdnZXIgc3RhcnQgKi8KPiArCQlyZWdtYXBfd3JpdGUoYW1sX2RtYS0+cmVnbWFwLCBhbWxf Y2hhbi0+cmVnX29mZnMgKyBSQ0hfQ0ZHLCAwKTsKPiArCX0gZWxzZSBpZiAoYW1sX2NoYW4tPmRp cmVjdGlvbiA9PSBETUFfREVWX1RPX01FTSkgewo+ICsJCXJlZ21hcF93cml0ZShhbWxfZG1hLT5y ZWdtYXAsIGFtbF9jaGFuLT5yZWdfb2ZmcyArIFdDSF9BRERSLAo+ICsJCQkgICAgIChhbWxfY2hh bi0+c2dfbGlua19waHlzICsgYW1sX2Rlc2MtPmlkeCAqIERNQV9MSU5LX1NJWkUpKTsKPiArCQly ZWdtYXBfd3JpdGUoYW1sX2RtYS0+cmVnbWFwLCBhbWxfY2hhbi0+cmVnX29mZnMgKyBXQ0hfTEVO LCBhbWxfZGVzYy0+ZGF0YV9sZW4pOwo+ICsJCXJlZ21hcF9jbGVhcl9iaXRzKGFtbF9kbWEtPnJl Z21hcCwgV0NIX0lOVF9NQVNLLCBCSVQoY2hhbl9pZCkpOwo+ICsJfQoKW1NldmVyaXR5OiBIaWdo XQpGb3IgV0NIIChERVZfVE9fTUVNKSBjaGFubmVscywgYW1sX2RtYV9zdGFydCgpIG5lZ2xlY3Rz IHRvIHdyaXRlIHRvIFdDSF9DRkcuCklmIGFtbF9kbWFfdGVybWluYXRlX2FsbCgpIG9yIGFtbF9k bWFfY2hhbl9wYXVzZSgpIHByZXZpb3VzbHkgc2V0IHRoZSBDRkdfUEFVU0UKYml0LCB3aWxsIFdD SCBjaGFubmVscyByZW1haW4gaW5kZWZpbml0ZWx5IHBhdXNlZD8KCj4gK30KWyAuLi4gXQo+ICtz dGF0aWMgaXJxcmV0dXJuX3QgYW1sX2RtYV9pbnRlcnJ1cHRfaGFuZGxlcihpbnQgaXJxLCB2b2lk ICpkZXZfaWQpCj4gK3sKWyAuLi4gXQo+ICsJd2hpbGUgKGRvbmUpIHsKPiArCQlpID0gZmZzKGRv bmUpIC0gMTsKPiArCQlyZWdtYXBfd3JpdGUoYW1sX2RtYS0+cmVnbWFwLCBDTEVBUl9SQ0gsIEJJ VChpKSk7Cj4gKwkJZG9uZSAmPSB+QklUKGkpOwo+ICsJCWFtbF9jaGFuID0gYW1sX2RtYS0+YW1s X3JjaFtpXTsKPiArCQlpZiAoIWFtbF9jaGFuKSB7Cj4gKwkJCWRldl9lcnIoYW1sX2RtYS0+ZG1h X2RldmljZS5kZXYsICJpZHggJWQgcmNoIG5vdCBpbml0aWFsaXplZFxuIiwgaSk7Cj4gKwkJCWNv bnRpbnVlOwo+ICsJCX0KPiArCQlhbWxfY2hhbi0+c3RhdHVzID0gKGVyciAmICgxIDw8IGkpKSA/ IERNQV9FUlJPUiA6IERNQV9DT01QTEVURTsKCltTZXZlcml0eTogTWVkaXVtXQpDb3VsZCB0aGlz IHNoaWZ0IHJlc3VsdCBpbiBhIHNpZ25lZCBpbnRlZ2VyIG92ZXJmbG93PyBJZiAnaScgcmVhY2hl cyAzMQooc2luY2UgTUFYX0NIQU5fSUQgaXMgMzIpLCBzaGlmdGluZyB0aGUgc2lnbmVkIDMyLWJp dCBsaXRlcmFsICcxJyBjYXVzZXMKdW5kZWZpbmVkIGJlaGF2aW9yLiBTaG91bGQgdGhpcyB1c2Ug MVUgPDwgaSBvciBCSVQoaSkgaW5zdGVhZD8KCltTZXZlcml0eTogSGlnaF0KSWYgYSBoYXJkd2Fy ZSBlcnJvciBvY2N1cnMgYW5kIGFtbF9jaGFuLT5zdGF0dXMgaXMgc2V0IHRvIERNQV9FUlJPUiwg aXMgdGhlcmUKYW55IG1lY2hhbmlzbSB0byByZXNldCB0aGUgc3RhdHVzIGJhY2sgdG8gRE1BX0NP TVBMRVRFPyBXaXRob3V0IGEgcmVzZXQgcGF0aCwKd2lsbCBhbWxfZG1hX3N0YXJ0KCkgc2ltcGx5 IHJldHVybiBpbW1lZGlhdGVseSBmb3IgYWxsIGZ1dHVyZSB0cmFuc2ZlcnMsCnBlcm1hbmVudGx5 IGRlYWRsb2NraW5nIHRoZSBjaGFubmVsPwoKPiArCQlzcGluX2xvY2soJmFtbF9jaGFuLT52Y2hh bi5sb2NrKTsKPiArCQlhbWxfZGVzYyA9IGFtbF9jaGFuLT5jdXJfZGVzYzsKPiArCQlpZiAoYW1s X2NoYW4tPnN0YXR1cyA9PSBETUFfRVJST1IpIHsKPiArCQkJYW1sX2Rlc2MtPnZkLnR4X3Jlc3Vs dC5yZXN1bHQgPSBETUFfVFJBTlNfUkVBRF9GQUlMRUQ7Cj4gKwkJCXJlZ21hcF9yZWFkKGFtbF9k bWEtPnJlZ21hcCwgYW1sX2NoYW4tPnJlZ19vZmZzICsgUkNIX1JEX0xFTiwgJmNwbF9kYXRhKTsK PiArCQkJYW1sX2Rlc2MtPnZkLnR4X3Jlc3VsdC5yZXNpZHVlID0gYW1sX2Rlc2MtPmRhdGFfbGVu IC0gY3BsX2RhdGE7Cj4gKwkJfQoKW1NldmVyaXR5OiBIaWdoXQpJZiBhIHNwdXJpb3VzIGludGVy cnVwdCBmaXJlcywgb3IgaWYgaXQgZmlyZXMgY29uY3VycmVudGx5IHdpdGgKYW1sX2RtYV90ZXJt aW5hdGVfYWxsKCkgKHdoaWNoIHNldHMgY3VyX2Rlc2MgdG8gTlVMTCksIHdpbGwgYW1sX2Rlc2Mg YmUgTlVMTApoZXJlPyBUaGlzIGFwcGVhcnMgdG8gdW5jb25kaXRpb25hbGx5IGRlcmVmZXJlbmNl IGFtbF9kZXNjLCBwb3RlbnRpYWxseSBjYXVzaW5nCmEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNl LgoKWyAuLi4gXQo+ICsJfQo+ICsKPiArCXJldHVybiBJUlFfSEFORExFRDsKPiArfQoKW1NldmVy aXR5OiBNZWRpdW1dCkJlY2F1c2UgdGhpcyBkcml2ZXIgcmVxdWVzdHMgYSBzaGFyZWQgaW50ZXJy dXB0IGxpbmUgKElSUUZfU0hBUkVEKSwgc2hvdWxkbid0CnRoZSBoYW5kbGVyIHJldHVybiBJUlFf Tk9ORSBpZiBpdCBwcm9jZXNzZWQgbm8gZXZlbnRzIChlLmcuLCBkb25lIGFuZCBlbmQKd2VyZSBi b3RoIDApPyBSZXR1cm5pbmcgSVJRX0hBTkRMRUQgdW5jb25kaXRpb25hbGx5IGNvdWxkIGJyZWFr IHNoYXJlZCBpbnRlcnJ1cHQKc2VtYW50aWNzIGFuZCBjYXVzZSBpc3N1ZXMgd2l0aCB0aGUga2Vy bmVsJ3Mgc3B1cmlvdXMgaW50ZXJydXB0IGRldGVjdGlvbi4KClsgLi4uIF0KPiArc3RhdGljIGlu dCBhbWxfZG1hX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiArCXN0 cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBwZGV2LT5kZXYub2Zfbm9kZTsKPiArCXN0cnVjdCBkbWFf ZGV2aWNlICpkbWFfZGV2Owo+ICsJc3RydWN0IGFtbF9kbWFfZGV2ICphbWxfZG1hOwo+ICsJaW50 IHJldCwgaSwgbGVuOwo+ICsJdTMyIGNoYW5fbnI7ClsgLi4uIF0KPiArCXJldCA9IG9mX3Byb3Bl cnR5X3JlYWRfdTMyKG5wLCAiZG1hLWNoYW5uZWxzIiwgJmNoYW5fbnIpOwo+ICsJaWYgKHJldCkK PiArCQlyZXR1cm4gZGV2X2Vycl9wcm9iZSgmcGRldi0+ZGV2LCByZXQsICJmYWlsZWQgdG8gcmVh ZCBkbWEtY2hhbm5lbHNcbiIpOwo+ICsKPiArCWxlbiA9IHNpemVvZihzdHJ1Y3QgYW1sX2RtYV9k ZXYpICsgc2l6ZW9mKHN0cnVjdCBhbWxfZG1hX2NoYW4pICogY2hhbl9ucjsKPiArCWFtbF9kbWEg PSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgbGVuLCBHRlBfS0VSTkVMKTsKCltTZXZlcml0eTog SGlnaF0KSXMgdGhlIGNhbGN1bGF0aW9uIG9mICdsZW4nIHN1c2NlcHRpYmxlIHRvIGFuIGludGVn ZXIgb3ZlcmZsb3c/ICdjaGFuX25yJyBpcwpyZWFkIGRpcmVjdGx5IGZyb20gdGhlIGRldmljZSB0 cmVlIGFuZCBpc24ndCBib3VuZHMtY2hlY2tlZCBiZWZvcmUgYmVpbmcgdXNlZAppbiB0aGUgY2Fs Y3VsYXRpb24gb2YgdGhlIHNpZ25lZCBpbnRlZ2VyICdsZW4nLiBDb3VsZCBhIGxhcmdlICdjaGFu X25yJyBjYXVzZQphIGhlYXAgYnVmZmVyIG92ZXJmbG93IGxhdGVyIGR1cmluZyBpbml0aWFsaXph dGlvbj8KClsgLi4uIF0KPiArCXJldCA9IGRtYWVuZ2luZW1fYXN5bmNfZGV2aWNlX3JlZ2lzdGVy KGRtYV9kZXYpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gZGV2X2Vycl9wcm9iZSgmcGRldi0+ ZGV2LCByZXQsICJmYWlsZWQgdG8gcmVnaXN0ZXIgZG1hZW5naW5lbVxuIik7Cj4gKwo+ICsJcmV0 ID0gb2ZfZG1hX2NvbnRyb2xsZXJfcmVnaXN0ZXIobnAsIGFtbF9vZl9kbWFfeGxhdGUsIGFtbF9k bWEpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIGVycl9kbWFlbmdpbmVtX3JlZ2lzdGVyOwo+ICsK PiArCXJlZ21hcF93cml0ZShhbWxfZG1hLT5yZWdtYXAsIFJDSF9JTlRfTUFTSywgMHhmZmZmZmZm Zik7Cj4gKwlyZWdtYXBfd3JpdGUoYW1sX2RtYS0+cmVnbWFwLCBXQ0hfSU5UX01BU0ssIDB4ZmZm ZmZmZmYpOwo+ICsKPiArCXJldCA9IGRldm1fcmVxdWVzdF9pcnEoJnBkZXYtPmRldiwgYW1sX2Rt YS0+aXJxLCBhbWxfZG1hX2ludGVycnVwdF9oYW5kbGVyLAo+ICsJCQkgICAgICAgSVJRRl9TSEFS RUQsIGRldl9uYW1lKCZwZGV2LT5kZXYpLCBhbWxfZG1hKTsKCltTZXZlcml0eTogSGlnaF0KRG9l cyBleHBvc2luZyB0aGUgRE1BIGNvbnRyb2xsZXIgdG8gY2xpZW50cyBiZWZvcmUgdGhlIGludGVy cnVwdCBpcyByZXF1ZXN0ZWQKbGVhdmUgYSB3aW5kb3cgd2hlcmUgYSBjbGllbnQgY291bGQgcXVl dWUgYSB0cmFuc2ZlciBhbmQgdGhlIGhhcmR3YXJlIGNvdWxkCmdlbmVyYXRlIGFuIHVuaGFuZGxl ZCBpbnRlcnJ1cHQ/IFNob3VsZCB0aGUgaW50ZXJydXB0IGJlIGluaXRpYWxpemVkIGJlZm9yZQpk bWFlbmdpbmVtX2FzeW5jX2RldmljZV9yZWdpc3RlcigpIGFuZCBvZl9kbWFfY29udHJvbGxlcl9y ZWdpc3RlcigpIGFyZSBjYWxsZWQ/Cgo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoJnBkZXYt PmRldiwgImZhaWxlZCB0byByZXF1ZXN0X2lycVxuIik7Cj4gKwkJZ290byBlcnJfb2ZfZG1hX2Nv bnRyb2xsZXI7Cj4gKwl9Cj4gKwo+ICsJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgYW1sX2Rt YSk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtlcnJfb2ZfZG1hX2NvbnRyb2xsZXI6Cj4gKwlv Zl9kbWFfY29udHJvbGxlcl9mcmVlKG5wKTsKPiArZXJyX2RtYWVuZ2luZW1fcmVnaXN0ZXI6Cj4g KwlkbWFfYXN5bmNfZGV2aWNlX3VucmVnaXN0ZXIoZG1hX2Rldik7CgpbU2V2ZXJpdHk6IEhpZ2hd CkJlY2F1c2UgZG1hZW5naW5lbV9hc3luY19kZXZpY2VfcmVnaXN0ZXIoKSBhbHJlYWR5IHJlZ2lz dGVycyBhIGRldnJlcyBhY3Rpb24KdG8gdW5yZWdpc3RlciB0aGUgZGV2aWNlIHVwb24gZmFpbHVy ZSwgZG9lcyBjYWxsaW5nIGRtYV9hc3luY19kZXZpY2VfdW5yZWdpc3RlcigpCmhlcmUgbWFudWFs bHkgcmVzdWx0IGluIGEgZG91YmxlLWZyZWUgb3IgbGlzdCBjb3JydXB0aW9uPwoKPiArCj4gKwly ZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBhbWxfZG1hX3JlbW92ZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgYW1sX2RtYV9kZXYgKmFtbF9k bWEgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPiArCj4gKwlvZl9kbWFfY29udHJvbGxl cl9mcmVlKCgmcGRldi0+ZGV2KS0+b2Zfbm9kZSk7Cj4gKwlkbWFfYXN5bmNfZGV2aWNlX3VucmVn aXN0ZXIoJmFtbF9kbWEtPmRtYV9kZXZpY2UpOwoKW1NldmVyaXR5OiBIaWdoXQpTaW1pbGFybHks IGRvZXMgY2FsbGluZyBkbWFfYXN5bmNfZGV2aWNlX3VucmVnaXN0ZXIoKSBoZXJlIGNhdXNlIGEg ZG91YmxlLWZyZWUKc2luY2UgZG1hZW5naW5lbV9hc3luY19kZXZpY2VfcmVnaXN0ZXIoKSB3YXMg dXNlZD8KCltTZXZlcml0eTogSGlnaF0KSXMgYSBjYWxsIHRvIHRhc2tsZXRfa2lsbCgpIG5lZWRl ZCBoZXJlIGR1cmluZyByZW1vdmFsPyBTaW5jZSB0aGUgdmlydC1kbWEKZnJhbWV3b3JrIHNjaGVk dWxlcyB0YXNrbGV0cyBmb3IgRE1BIGNvbXBsZXRpb25zLCBmYWlsaW5nIHRvIGtpbGwgdGhlbSBj b3VsZApsZWFkIHRvIGEgdXNlLWFmdGVyLWZyZWUgaWYgYSB0YXNrbGV0IGV4ZWN1dGVzIGFmdGVy IHRoZSBkcml2ZXIgaGFzIGJlZW4gdW5sb2FkZWQuCgo+ICt9CgotLSAKU2FzaGlrbyBBSSByZXZp ZXcgwrcgaHR0cHM6Ly9zYXNoaWtvLmRldi8jL3BhdGNoc2V0LzIwMjYwNTIxLWFtbG9naWMtZG1h LXY4LTAtODZjYzJjZTk0MTQyQGFtbG9naWMuY29tP3BhcnQ9MgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYW1sb2dpYyBtYWlsaW5nIGxpc3QK bGludXgtYW1sb2dpY0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYW1sb2dpYwo=