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 87C31C982E6 for ; Mon, 21 Sep 2026 23:44:42 +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:MIME-Version:References:In-Reply-To: Message-ID:Date:Cc:To:From:Subject:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=6Rxr7n7HtPdEGi6/iVthElgYK9RSwrfeslUh8H1CPT8=; b=u6JT9cuTOsacke 0cnQbP4dhpxnWy4iKHGfutJk7iRqeLjWAwwjqPC9OQDXCXfzcrdTmOhCcgHsnzA5mp1tsjKCNBVZo UIXJUIGjgdQ7pcqp/Mr72202FSCHiJO/14/xeNCSLmeihjoHruYtsourxNoPFzwwSGWt5n8l7Znz8 S/0WD06tzwjdKAfGMZOaqDxmHwumvl6Zm8Qqduh18q/6Fs2INBbWtY1n85Y8uZ9TehIvwBP6063ng tK2GW1babyCRKJvhp1mB9C43PqpYfylemPbMHGkcx1PqJ0XulT3ws384YhDEY0bpbajXOC8CF6Pan WlxYIjBJ+MH4HTEVr3zQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x8ngg-00000003hzj-0tZ6; Mon, 21 Sep 2026 23:44:42 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x8nfq-00000003hQY-2gyE; Mon, 21 Sep 2026 23:43:50 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 5F0BE44884; Mon, 21 Sep 2026 23:43:50 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A96821F00898; Mon, 21 Sep 2026 23:43:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790034230; bh=hu7bHNATY0PvnEcsV4mC2quF/7mPtsLL83QQCQBE1uA=; h=Subject:From:To:Cc:Date:In-Reply-To:References; b=N5bU0vlmAIu3nEYF7h0d31cd5vP9Gv4J/4NHrFP36xc4QSOmZcSi03CQkqflPXKKr s5RV7ZzEUzwFLmXyw81LkJz+f7nJ5lJfsQ/kPqQ+FWUYYxXHFsaLzo0AT8kcY1/Z8s +R6RZWFCRFyMbD/d/O1VlXCdQXdczuAvoM6KbgnP+VFIWZGjuB79kv2ZefI0vP6Qfi GCAfAv355LFwI1twTsU7gFcctJ1ssHG3Z2/lZrgEc2IEKANwYvuXlAqoi9zd8JXadu WSI4JBlY3bDdkMsSvcSiwBUnwWyedpudon3hDjZv8wZu/XMqi6jd6ncysSSQ6Y8+Ob 1RpM0lNcP2mHQ== Subject: Re: [PATCH net-next v7 07/11] net: pcs: xpcs: add Rockchip RK3568 platform glue driver From: netdev-bot+sashiko@kernel.org To: coiaprant@gmail.com Cc: andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, heiko@sntech.de, vkoul@kernel.org, maxime.chevallier@bootlin.com, mcoquelin.stm32@gmail.com, alexandre.torgue@foss.st.com, prabhakar.mahadev-lad.rj@bp.renesas.com, romain.gantois@bootlin.com, hkallweit1@gmail.com, neil.armstrong@linaro.org, linux@armlinux.org.uk, shawn.lin@rock-chips.com, david@ixit.cz, netdev@vger.kernel.org, linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, linux-renesas-soc@vger.kernel.org Date: Mon, 21 Sep 2026 23:43:48 +0000 Message-ID: <179003422823.2160803.10777218910514192511@kernel.org> In-Reply-To: <20260917204624.2427486-8-coiaprant@gmail.com> References: <20260917204624.2427486-8-coiaprant@gmail.com> X-sashiko-severity: High MIME-Version: 1.0 X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg OSBwb3RlbnRpYWwKaXNzdWUocykgdG8gY29uc2lkZXIuCgpDcml0aWNhbDogMCDCtyBIaWdoOiAx IMK3IE1lZGl1bTogNCDCtyBMb3c6IDQKCklmIHlvdSBiZWxpZXZlIG5vbmUgb2YgdGhlIGlzc3Vl cyBhcmUgbGVnaXRpbWF0ZSwgcGxlYXNlIHJlcGx5IHRvIGVhY2gKaXNzdWUgb2YgTWVkaXVtIHNl dmVyaXR5IG9yIGhpZ2hlciBhbmQgZXhwbGFpbiB3aHkgdGhlIEFJIGlzIHdyb25nLgpJZiBhbnkg b2YgdGhlbSBhcmUgbGVnaXRpbWF0ZSBhbmQgeW91IHBsYW4gdG8gcmVzcGluLCBwbGVhc2UgbGV0 IHBhdGNod29yawprbm93IGJ5IGluY2x1ZGluZyAicHctYm90OiBjciIgYXMgYSBzZXBhcmF0ZSBs aW5lIGF0IHRoZSBlbmQgb2YgeW91ciByZXBseQoob25lIHN1Y2ggcmVwbHkgcGVyIHNlcmllcyBp cyBlbm91Z2gpLgoKLSBbSGlnaF0gVXNlLWFmdGVyLWZyZWUgLyBUT0NUT1UgaW4geHBjc19ya19j cmVhdGUoKQogIChkcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MtcmsuYzo1MTctNTQ1KS4KLSBbTWVk aXVtXSBLY29uZmlnIGRlcGVuZGVuY3kgcHJvcGFnYXRpb24gYnVnOiBQQ1NfWFBDU19ST0NLQ0hJ UCBoYXMKICBgZGVwZW5kcyBvbiBPRiAmJiAoQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1Qp YCBidXQgZG9lcyBgc2VsZWN04oCmCi0gW01lZGl1bV0gQXN5bW1ldHJpYyBNTUQgcmVtYXBwaW5n IG1ha2VzIHJlYWQtbW9kaWZ5LXdyaXRlIGFuZCB3cml0ZS10by0KICBjbGVhciBzZXF1ZW5jZXMg aW5jb2hlcmVudCBhbmQgc2hhcmVzIGNvbnRyb2wgc3RhdGUgYWNyb3NzIHBvcnRzLgotIFtNZWRp dW1dIFRoZSBNRElPIGJ1cyBjYWxsYmFja3MgZm9yZ2UgcmVzdWx0cyBmb3IgTU1EcyB0aGUgZ2x1 ZSBjYW5ub3QKICBtYXAuCi0gW01lZGl1bV0gTm8gc3lzdGVtLXNsZWVwIGhhbmRsaW5nIGZvciB0 aGUgU2VyRGVzIFBIWSBvciB0aGUgUENTLgotIFtMb3ddIEZBTFNFIFBPU0lUSVZFIChzZXJpZXMt cmVzb2x2ZWQpOiAneHBjc19ya19jcmVhdGUoKSBoYXMgbm8gaW4tCiAgdHJlZSBjYWxsZXIgLyBk cml2ZXIgaXMgaW5lcnQnLgotIFtMb3ddIEFuIHVucmVsYXRlZCwgdXNlci12aXNpYmxlIHJlc3Ry dWN0dXJpbmcgb2YgZXhpc3RpbmcgY29kZSBpcwogIGJ1bmRsZWQgaW50byB0aGlzICdhZGQgbmV3 IGRyaXZlcicgcGF0Y2g6IHBjcy14cGNzLXBsYXQubyBpcyByZW1vdmVk4oCmCi0gW0xvd10gQ29t bWVudCB2cy4gY29kZSBtaXNtYXRjaCBhYm91dCB0aGUgcG93ZXIgZG9tYWluLgotIFtMb3ddIERU IHNjaGVtYSB2cy4gRFRTIG1pc21hdGNoIGluIHRoZSBzZXJpZXM6CiAgRG9jdW1lbnRhdGlvbi9k ZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3Mvcm9ja2NoaXAscmszNTY4LXhwY3MueWFtbOKApgoK LS0KCm5ldDogcGNzOiB4cGNzOiBhZGQgUm9ja2NoaXAgUkszNTY4IHBsYXRmb3JtIGdsdWUgZHJp dmVyCgpUaGlzIGFkZHMgYSBwbGF0Zm9ybSBnbHVlIGRyaXZlciB0aGF0IGV4cG9zZXMgdGhlIFJL MzU2OCBYUENTIEFQQjMgcmVnaXN0ZXIKc3BhY2UgYXMgYSB2aXJ0dWFsIE1ESU8gYnVzIHNvIHRo ZSBnZW5lcmljIHBjcy14cGNzIGNvcmUgY2FuIGRyaXZlIGl0LCB3aXRoCnBlci1wb3J0IE1NRCBy ZW1hcHBpbmcgZm9yIHRoZSBmb3VyIE1JSSBwb3J0cy4gSXQgYWxzbyBzcGxpdHMgdGhlIGdlbmVy aWMKcGNzLXhwY3MtcGxhdC5vIGdsdWUgb3V0IG9mIHRoZSBwY3NfeHBjcyBjb21wb3NpdGUgbW9k dWxlIGJlaGluZCBhIG5ldwpQQ1NfWFBDU19QTEFURk9STSBzeW1ib2wsIGFuZCBhZGRzIFBDU19Y UENTX1JPQ0tDSElQLgoKTGluazogaHR0cHM6Ly9kbC5yYWR4YS5jb20vcm9jazMvZG9jcy9ody9k YXRhc2hlZXQvUm9ja2NoaXAlMjBSSzM1NjglMjBUUk0lMjBQYXJ0MSUyMFYxLjEtMjAyMTAzMDEu cGRmIChQYWdlIDU5LCBDUlVfQ0xLU0VMX0NPTjI5KQpMaW5rOiBodHRwczovL2RsLnJhZHhhLmNv bS9yb2NrMy9kb2NzL2h3L2RhdGFzaGVldC9Sb2NrY2hpcCUyMFJLMzU2OCUyMFRSTSUyMFBhcnQy JTIwVjEuMS0yMDIxMDMwMS5wZGYgKFBhZ2UgMjA3OCkKCkEgY291cGxlIG9mIG5vdGVzIGJlZm9y ZSB0aGUgZGlmZiwgb24gbWF0ZXJpYWwgdGhhdCBsaXZlcyBpbiBvdGhlciBwYXRjaGVzCm9mIHRo ZSBzZXJpZXMgYnV0IGlzIGNsb3NlbHkgdGllZCB0byB0aGlzIG9uZS4KCltTZXZlcml0eTogTG93 XQpUaGUgYmluZGluZyBhZGRlZCBieSB0aGUgc2VyaWVzLApEb2N1bWVudGF0aW9uL2RldmljZXRy ZWUvYmluZGluZ3MvbmV0L3Bjcy9yb2NrY2hpcCxyazM1NjgteHBjcy55YW1sLCBsaXN0cwpwaHlz IGFuZCBwaHktbmFtZXMgaW4gaXRzIHVuY29uZGl0aW9uYWwgcmVxdWlyZWQ6IGxpc3QsIGJ1dCB0 aGUgeHBjcyBub2RlCmFkZGVkIHRvIGFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4 LmR0c2kgcHJvdmlkZXMgbmVpdGhlci4KClRoZSBqdXN0aWZpY2F0aW9uIGdpdmVuIGlzIHRoYXQg ImR0YnNfY2hlY2sgb25seSB2YWxpZGF0ZXMgcmVxdWlyZWQKcHJvcGVydGllcyBmb3IgZW5hYmxl ZCBub2RlcyIuICBJcyB0aGF0IGFjY3VyYXRlPyAgZHRzY2hlbWEgc2VsZWN0cyBzY2hlbWFzCmJ5 IGNvbXBhdGlibGUgYW5kIHZhbGlkYXRlcyBldmVyeSBub2RlIHByZXNlbnQgaW4gdGhlIERUQjsg dGhlcmUgaXMgbm8Kc3RhdHVzLWJhc2VkIGZpbHRlcmluZywgc28gZXZlcnkgUkszNTY4IGJvYXJk IERUQiB0aGF0IG1lcmVseSBpbmhlcml0cyB0aGUKZGlzYWJsZWQgU29DIG5vZGUgd291bGQgcmVw b3J0IHRoZSB0d28gbWlzc2luZyByZXF1aXJlZCBwcm9wZXJ0aWVzIHVubGVzcwp0aGUgYm9hcmQg aXRzZWxmIGFkZHMgdGhlbSAob25seSByazM1NjgtcGhvdG9uaWNhdC5kdHMgZG9lcykuCgpXb3Vs ZCBpdCBtYWtlIHNlbnNlIHRvIG1ha2UgcGh5cy9waHktbmFtZXMgY29uZGl0aW9uYWwgaW4gdGhl IGJpbmRpbmcsIG9yCnRvIHN1cHBseSB0aGVtIGluIHRoZSBkdHNpPwoKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9uZXQvcGNzL0tjb25maWcgYi9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZwo+IGluZGV4 IGU0MTdmZDY2ZjY2MGEuLjNkYjliMzQzYWMwYzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9uZXQv cGNzL0tjb25maWcKPiArKysgYi9kcml2ZXJzL25ldC9wY3MvS2NvbmZpZwo+IEBAIC0xMiw2ICsx MiwzMSBAQCBjb25maWcgUENTX1hQQ1MKPiAgCSAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBkcml2 ZXIgYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIFN5bm9wc3lzCj4gIAkgIERlc2lnbldhcmUgWFBD UyBjb250cm9sbGVycy4KPiAgCj4gK2lmIFBDU19YUENTCj4gKwo+ICtjb25maWcgUENTX1hQQ1Nf UExBVEZPUk0KPiArCXRyaXN0YXRlICJHZW5lcmljIFhQQ1MgY29udHJvbGxlciBzdXBwb3J0Igo+ ICsJZGVmYXVsdCBQQ1NfWFBDUwo+ICsJaGVscAo+ICsJICBHZW5lcmljIERXWFBDUyBkcml2ZXIg Zm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJlcXVpcmUgYW55Cj4gKwkgIHBsYXRmb3JtIHNwZWNp ZmljIGNvZGUgdG8gZnVuY3Rpb24gb3IgaXMgdXNpbmcgcGxhdGZvcm0KPiArCSAgZGF0YSBmb3Ig c2V0dXAuCj4gKwo+ICsJICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVy ZmFjZSwgc2F5IFkgb3IgTSBoZXJlLgo+ICsKPiArY29uZmlnIFBDU19YUENTX1JPQ0tDSElQCj4g Kwl0cmlzdGF0ZSAiUm9ja2NoaXAgWFBDUyBjb250cm9sbGVyIHN1cHBvcnQiCj4gKwlkZWZhdWx0 IEFSQ0hfUk9DS0NISVAKPiArCWRlcGVuZHMgb24gT0YgJiYgKEFSQ0hfUk9DS0NISVAgfHwgQ09N UElMRV9URVNUKQo+ICsJc2VsZWN0IEdFTkVSSUNfUEhZCj4gKwlzZWxlY3QgUE1fR0VORVJJQ19E T01BSU5TCgpbU2V2ZXJpdHk6IE1lZGl1bV0KRG9lcyB0aGlzIHNlbGVjdCBob2xkIHVwIGluIHRo ZSBDT01QSUxFX1RFU1QgY29uZmlndXJhdGlvbnMgdGhpcyBodW5rIG5ld2x5Cm1ha2VzIGV4cHJl c3NpYmxlPyAgUE1fR0VORVJJQ19ET01BSU5TIGluIGtlcm5lbC9wb3dlci9LY29uZmlnIGlzOgoK CWNvbmZpZyBQTV9HRU5FUklDX0RPTUFJTlMKCQlib29sCgkJZGVwZW5kcyBvbiBQTQoKVGhlIGNv bW1pdCBtZXNzYWdlIGNvdmVycyBvbmx5IHRoZSBvdGhlciBsZWc6CgogICAgUENTX1hQQ1NfUk9D S0NISVAgc2VsZWN0cyBHRU5FUklDX1BIWSBhbmQgUE1fR0VORVJJQ19ET01BSU5TLgogICAgQVJD SF9ST0NLQ0hJUCBhbHJlYWR5IHNlbGVjdHMgUE0sIHNvIHRoZSBkZXBlbmRlbmN5IG9mIFBNX0dF TkVSSUNfRE9NQUlOUwogICAgb24gUE0gaXMgc2F0aXNmaWVkIG9uIHRoZSB0YXJnZXQgcGxhdGZv cm0uCgpXaXRoIENPTVBJTEVfVEVTVCBvbiBhbiBhcmNoIHdoZXJlIENPTkZJR19QTT1uLCB0aGUg c2VsZWN0IGlzIGFuIHVubWV0CmRpcmVjdCBkZXBlbmRlbmN5IGFuZCBLY29uZmlnIGZvcmNlLWVu YWJsZXMgUE1fR0VORVJJQ19ET01BSU5TIGFueXdheS4KZHJpdmVycy9NYWtlZmlsZSB0aGVuIGJ1 aWxkcyBwbWRvbWFpbi8gYW5kIGRyaXZlcnMvcG1kb21haW4vY29yZS5jIGRvZXM6CgoJaWYgKCFk ZXYgfHwgZGV2LT5wb3dlci5pZ25vcmVfY2hpbGRyZW4pCgpwb3dlci5pZ25vcmVfY2hpbGRyZW4g b25seSBleGlzdHMgaW5zaWRlICNpZmRlZiBDT05GSUdfUE0gaW4gc3RydWN0CmRldl9wbV9pbmZv LCBzbyBkb2VzIHRoaXMgYnJlYWsgdGhlIGJ1aWxkIGZvciByYW5kY29uZmlnPwoKU2luY2UgeHBj c19ya19zZXJkZXNfcGh5X3Bvd2Vyb24oKSB0cmVhdHMgYW55IG5vbi16ZXJvCmRldl9wbV9nZW5w ZF9ycG1fYWx3YXlzX29uKCkgcmV0dXJuIGFzIGZhdGFsLCBhbmQgdGhlCiFDT05GSUdfUE1fR0VO RVJJQ19ET01BSU5TIHN0dWIgcmV0dXJucyAtRU9QTk9UU1VQUCwgd291bGQgImRlcGVuZHMgb24g UE0iCihvciBkZXBlbmRzIG9uIFBNX0dFTkVSSUNfRE9NQUlOUykgZXhwcmVzcyB0aGUgcmVxdWly ZW1lbnQgYmV0dGVyIHRoYW4gYW4KdW5jb25kaXRpb25hbCBzZWxlY3Q/Cgo+ICsJaGVscAo+ICsJ ICBTdXBwb3J0IGZvciBYUENTIGNvbnRyb2xsZXIgb24gUm9ja2NoaXAgUkszNTZ4IFNvQy4KPiAr Cj4gKwkgIElmIHlvdSBoYXZlIGEgUm9ja2NoaXAgU29DIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNh eSBZIG9yIE0gaGVyZS4KPiArCj4gK2VuZGlmICMgUENTX1hQQ1MKPiArCj4gIGNvbmZpZyBQQ1Nf TFlOWAo+ICAJdHJpc3RhdGUKPiAgCWhlbHAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNz L01ha2VmaWxlIGIvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlCj4gaW5kZXggNGY3OTIwNjE4Yjkw MC4uZjlmNmNmMjU3OGQ3MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGUK PiArKysgYi9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGUKPiBAQCAtMSwxMCArMSwxMSBAQAo+ICAj IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gICMgTWFrZWZpbGUgZm9yIExpbnV4 IFBDUyBkcml2ZXJzCj4gIAo+IC1wY3NfeHBjcy0kKENPTkZJR19QQ1NfWFBDUykJOj0gcGNzLXhw Y3MubyBwY3MteHBjcy1wbGF0Lm8gXAo+IC0JCQkJICAgcGNzLXhwY3MtbnhwLm8gcGNzLXhwY3Mt d3gubwo+ICtwY3NfeHBjcy0kKENPTkZJR19QQ1NfWFBDUykJOj0gcGNzLXhwY3MubyBwY3MteHBj cy1ueHAubyBwY3MteHBjcy13eC5vCj4gIAo+ICBvYmotJChDT05GSUdfUENTX1hQQ1MpCQkrPSBw Y3NfeHBjcy5vCj4gK29iai0kKENPTkZJR19QQ1NfWFBDU19QTEFURk9STSkgKz0gcGNzLXhwY3Mt cGxhdC5vCj4gK29iai0kKENPTkZJR19QQ1NfWFBDU19ST0NLQ0hJUCkgKz0gcGNzLXhwY3Mtcmsu bwoKW1NldmVyaXR5OiBMb3ddClRoaXMgaXNuJ3QgYSBidWcsIGJ1dCBjb3VsZCB0aGUgcGNzLXhw Y3MtcGxhdC5vIHNwbGl0IGJlIGEgc2VwYXJhdGUKcHJlcGFyYXRvcnkgcGF0Y2g/ICBOb3RoaW5n IGluIHBjcy14cGNzLXJrLm8gbmVlZHMgaXQsIHNpbmNlIHRoZSBSb2NrY2hpcApnbHVlIGlzIGFk ZGVkIHdpdGggaXRzIG93biBvYmotIGxpbmUuCgpUaGUgY29tbWl0IG1lc3NhZ2Ugc2F5czoKCiAg ICBUaGUgc3ltYm9sIGRlZmF1bHRzIHRvIFBDU19YUENTLCBzbyBleGlzdGluZyBjb25maWd1cmF0 aW9ucyBrZWVwIHRoZQogICAgc25wcyxkdy14cGNzIHBsYXRmb3JtIGdsdWUgZW5hYmxlZCB3aXRo b3V0IGFueSBjaGFuZ2UuCgpUaGUgZ2VuZXJpYyBwbGF0Zm9ybSBnbHVlIGRvZXMgY2hhbmdlIG5h bWUgdGhvdWdoOiBpdCBub3cgc2hpcHMgYXMKcGNzLXhwY3MtcGxhdC5rbyBpbnN0ZWFkIG9mIGJl aW5nIGxpbmtlZCBpbnRvIHBjc194cGNzLmtvLCBhbmQgaXQgYmVjb21lcwp1c2VyLWRpc2FibGFi bGUgdmlhIGEgbmV3IHByb21wdC4gIEhhbmQtbWFpbnRhaW5lZCBjb25maWdzIGFuZCBpbml0cmFt ZnMKbW9kdWxlIGxpc3RzIHRoYXQgb25seSBwdWxsIGluIHBjc194cGNzIHdvdWxkIHNpbGVudGx5 IGxvc2UgdGhlIHBsYXRmb3JtCmRyaXZlci4gIFdvdWxkIGl0IGJlIHdvcnRoIHN0YXRpbmcgdGhh dCBjb25zZXF1ZW5jZSBleHBsaWNpdGx5PwoKPiAgb2JqLSQoQ09ORklHX1BDU19MWU5YKQkJKz0g cGNzLWx5bngubwo+ICBvYmotJChDT05GSUdfUENTX01US19MWU5YSSkJKz0gcGNzLW10ay1seW54 aS5vCj4gIG9iai0kKENPTkZJR19QQ1NfUlpOMV9NSUlDKQkrPSBwY3MtcnpuMS1taWljLm8KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmMgYi9kcml2ZXJzL25ldC9w Y3MvcGNzLXhwY3MtcmsuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAw MDAwMC4uMWM3MjVkNmEwMDhkYwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL25ldC9w Y3MvcGNzLXhwY3MtcmsuYwo+IEBAIC0wLDAgKzEsNTgyIEBACgpbIC4uLiBdCgo+ICtzdGF0aWMg aW50IHhwY3NfcmtfbWRpb19yZWFkX3JlbWFwcGluZyhpbnQgYWRkciwgaW50IGRldiwgaW50IHJl ZykKPiArewo+ICsJc3dpdGNoIChkZXYpIHsKPiArCWNhc2UgTURJT19NTURfUE1BUE1EOgo+ICsJ CXJldHVybiBST0NLQ0hJUF9NTURfUE1BUE1EOwo+ICsJY2FzZSBNRElPX01NRF9WRU5EMjoKPiAr CQlicmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIC1FTlhJTzsKPiArCX0KPiArCj4gKwkv Kgo+ICsJICogUmVhZHMgYXJlIHJlZGlyZWN0ZWQgYnkgaGFyZHdhcmUgdG8gdGhlIHBvcnQncyBy ZWFkLW9ubHkgbWlycm9yOwo+ICsJICogb25seSB3cml0ZXMgaGF2ZSB0byBiZSB0YXJnZXRlZCBh dCBNSUkgKHNlZSB0aGUgd3JpdGUgcGF0aCkuCj4gKwkgKi8KPiArCXN3aXRjaCAoYWRkcikgewo+ ICsJY2FzZSAwOgo+ICsJCXJldHVybiBST0NLQ0hJUF9NTURfTUlJOwo+ICsJY2FzZSAxOgo+ICsJ CXJldHVybiBST0NLQ0hJUF9NTURfTUlJMTsKPiArCWNhc2UgMjoKPiArCQlyZXR1cm4gUk9DS0NI SVBfTU1EX01JSTI7Cj4gKwljYXNlIDM6Cj4gKwkJcmV0dXJuIFJPQ0tDSElQX01NRF9NSUkzOwo+ ICsJZGVmYXVsdDoKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCX0KPiArfQo+ICsKPiArc3RhdGlj IGludCB4cGNzX3JrX21kaW9fd3JpdGVfcmVtYXBwaW5nKGludCBhZGRyLCBpbnQgZGV2LCBpbnQg cmVnKQo+ICt7Cj4gKwlzd2l0Y2ggKGRldikgewo+ICsJY2FzZSBNRElPX01NRF9QTUFQTUQ6Cj4g KwkJcmV0dXJuIFJPQ0tDSElQX01NRF9QTUFQTUQ7Cj4gKwljYXNlIE1ESU9fTU1EX1ZFTkQyOgo+ ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlyZXR1cm4gLUVOWElPOwo+ICsJfQo+ICsKPiAr CS8qCj4gKwkgKiBUaGVzZSByZWdpc3RlcnMgcGh5c2ljYWxseSBsaXZlIG9ubHkgaW4gTUlJICh0 aGUgbWFuYWdlbWVudCBwb3J0KS4KPiArCSAqIFBvcnRzIDEtMyBleHBvc2UgcmVhZC1vbmx5IG1p cnJvcnMgb2YgdGhlc2UgYml0cywgc28gd3JpdGVzIG11c3QKPiArCSAqIGFsd2F5cyB0YXJnZXQg TUlJOyB0aGUgcmVhZCBwYXRoIHJlbWFwcyBwZXIgYWRkcmVzcyBhbmQgdGhlCj4gKwkgKiBoYXJk d2FyZSByZWRpcmVjdHMgdG8gdGhlIHBvcnQncyBtaXJyb3IuCj4gKwkgKi8KPiArCXN3aXRjaCAo cmVnKSB7Cj4gKwljYXNlIERXX1ZSX01JSV9BTl9DVFJMOgo+ICsJY2FzZSBEV19WUl9NSUlfQU5f SU5UUl9TVFM6Cj4gKwljYXNlIERXX1ZSX01JSV9FRUVfTUNUUkwwOgo+ICsJY2FzZSBEV19WUl9N SUlfRUVFX01DVFJMMToKPiArCWNhc2UgRFdfVlJfTUlJX0RJR19DVFJMMjoKPiArCQlyZXR1cm4g Uk9DS0NISVBfTU1EX01JSTsKCltTZXZlcml0eTogTWVkaXVtXQpBcmUgdGhlc2UgcmVnaXN0ZXJz IHJlYWxseSB3cml0ZS1vbmx5IGZyb20gdGhlIGNvcmUncyBwb2ludCBvZiB2aWV3PyAgVGhlCnJl YWQgcGF0aCBtYXBzIHRoZW0gcGVyIHBvcnQgKGFkZHIgMSAtPiBNTUQgMiwgMiAtPiBNTUQgMywg MyAtPiBNTUQgNCkKd2hpbGUgdGhlIHdyaXRlIHBhdGggZm9yY2VzIE1NRCA3IGZvciBldmVyeSBh ZGRyZXNzLCBhbmQgcGNzLXhwY3MgcGVyZm9ybXMKcmVhZC1tb2RpZnktd3JpdGVzIGFuZCB3cml0 ZS10by1jbGVhciBvbiBleGFjdGx5IHRoZXNlOgoKZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmM6 eHBjc19jb25maWdfYW5lZ19jMzdfc2dtaWkoKQoJcmV0ID0geHBjc19tb2RpZnkoeHBjcywgTURJ T19NTURfVkVORDIsIERXX1ZSX01JSV9BTl9DVFJMLCBtYXNrLCB2YWwpOwoKZHJpdmVycy9uZXQv cGNzL3Bjcy14cGNzLmM6eHBjc19jb25maWdfZWVlKCkKCXJldCA9IHhwY3NfbW9kaWZ5KHhwY3Ms IE1ESU9fTU1EX1ZFTkQyLCBEV19WUl9NSUlfRUVFX01DVFJMMCwgbWFzaywgdmFsKTsKCS4uLgoJ cmV0dXJuIHhwY3NfbW9kaWZ5KHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBEV19WUl9NSUlfRUVFX01D VFJMMSwgLi4uKTsKCmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jOnhwY3NfZ2V0X3N0YXRlX2Mz N19zZ21paSgpCglyZXQgPSB4cGNzX3dyaXRlKHhwY3MsIE1ESU9fTU1EX1ZFTkQyLCBEV19WUl9N SUlfQU5fSU5UUl9TVFMsIDApOwoKRm9yIHBvcnRzIDEtMyB0aGUgbW9kaWZ5IHJlYWRzIE1NRCAy LzMvNCBhbmQgd3JpdGVzIHRoZSByZXN1bHQgaW50byBNTUQgNywKc28gY2FuIGEgcG9ydCAxLTMg aW5zdGFuY2UgY2xvYmJlciB0aGUgQU4vRUVFL0RJR19DVFJMMiBjb25maWd1cmF0aW9uIHRoYXQK cG9ydCAwIChwb3NzaWJseSBhIGRpZmZlcmVudCBHTUFDKSBwcm9ncmFtbWVkPwoKQW5kIHNpbmNl IHRoZSB3cml0ZS10by1jbGVhciBvZiBEV19WUl9NSUlfQU5fSU5UUl9TVFMgaXMgcmVkaXJlY3Rl ZCB0bwpNTUQgNywgZG9lcyB0aGUgcGVyLXBvcnQgQ0wzNyBBTi1jb21wbGV0ZSBsYXRjaCBldmVy IGdldCBjbGVhcmVkIGZvciBwb3J0cwoxLTM/CgptZGlvX2xvY2sgc2VyaWFsaXNlcyBzaW5nbGUg YWNjZXNzZXMgYnV0IG5vdCB0aGUgY29yZSdzIEFOX0NUUkwgcGx1cwpESUdfQ1RSTDEgb3IgRUVF X01DVFJMMCBwbHVzIEVFRV9NQ1RSTDEgc2VxdWVuY2VzLiAgV291bGQgbWFwcGluZyByZWFkcyBv Zgp0aGVzZSByZWdpc3RlcnMgdG8gTU1EIDcgYXMgd2VsbCBrZWVwIHRoZSByZWFkLW1vZGlmeS13 cml0ZXMgY29oZXJlbnQ/Cgo+ICsJZGVmYXVsdDoKPiArCQlicmVhazsKPiArCX0KPiArCj4gKwlz d2l0Y2ggKGFkZHIpIHsKPiArCWNhc2UgMDoKPiArCQlyZXR1cm4gUk9DS0NISVBfTU1EX01JSTsK PiArCWNhc2UgMToKPiArCQlyZXR1cm4gUk9DS0NISVBfTU1EX01JSTE7Cj4gKwljYXNlIDI6Cj4g KwkJcmV0dXJuIFJPQ0tDSElQX01NRF9NSUkyOwo+ICsJY2FzZSAzOgo+ICsJCXJldHVybiBST0NL Q0hJUF9NTURfTUlJMzsKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwl9Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgeHBjc19ya19yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVz LCBpbnQgYWRkciwgaW50IHJlZykKPiArewo+ICsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0g YnVzLT5wcml2Owo+ICsJaW50IGRldjsKPiArCj4gKwlpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3Zh bGlkYXRlKGFkZHIpKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsKPiArCWRldiA9IHhwY3Nfcmtf bWRpb19yZWFkX3JlbWFwcGluZyhhZGRyLCBNRElPX01NRF9WRU5EMiwgcmVnKTsKPiArCWlmIChk ZXYgPCAwKQo+ICsJCXJldHVybiAweGZmZmY7Cj4gKwo+ICsJcmV0dXJuIHhwY3NfcmtfcmVhZF9y ZWcocHhwY3MsIGRldiwgcmVnKTsKPiArfQo+ICsKPiArc3RhdGljIGludCB4cGNzX3JrX3dyaXRl X2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbCkKPiAr ewo+ICsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gYnVzLT5wcml2Owo+ICsJaW50IGRldjsK PiArCj4gKwlpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKQo+ICsJCXJldHVy biAtRU5PREVWOwo+ICsKPiArCWRldiA9IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoYWRk ciwgTURJT19NTURfVkVORDIsIHJlZyk7Cj4gKwlpZiAoZGV2IDwgMCkKPiArCQlyZXR1cm4gMDsK PiArCj4gKwlyZXR1cm4geHBjc19ya193cml0ZV9yZWcocHhwY3MsIGRldiwgcmVnLCB2YWwpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHhwY3NfcmtfcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1 cywgaW50IGFkZHIsIGludCBkZXYsIGludCByZWcpCj4gK3sKPiArCXN0cnVjdCBkd194cGNzX3Jr ICpweHBjcyA9IGJ1cy0+cHJpdjsKPiArCj4gKwlpZiAoIXhwY3NfcmtfbWRpb19hZGRyX3ZhbGlk YXRlKGFkZHIpKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsKPiArCWRldiA9IHhwY3NfcmtfbWRp b19yZWFkX3JlbWFwcGluZyhhZGRyLCBkZXYsIHJlZyk7Cj4gKwlpZiAoZGV2IDwgMCkKPiArCQly ZXR1cm4gMHhmZmZmOwo+ICsKPiArCXJldHVybiB4cGNzX3JrX3JlYWRfcmVnKHB4cGNzLCBkZXYs IHJlZyk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgeHBjc19ya193cml0ZV9jNDUoc3RydWN0IG1p aV9idXMgKmJ1cywgaW50IGFkZHIsIGludCBkZXYsIGludCByZWcsIHUxNiB2YWwpCj4gK3sKPiAr CXN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGJ1cy0+cHJpdjsKPiArCj4gKwlpZiAoIXhwY3Nf cmtfbWRpb19hZGRyX3ZhbGlkYXRlKGFkZHIpKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsKPiAr CWRldiA9IHhwY3NfcmtfbWRpb193cml0ZV9yZW1hcHBpbmcoYWRkciwgZGV2LCByZWcpOwo+ICsJ aWYgKGRldiA8IDApCj4gKwkJcmV0dXJuIDA7CgpbU2V2ZXJpdHk6IE1lZGl1bV0KU2hvdWxkIGFu IHVubWFwcGFibGUgTU1EIGJlIHJlcG9ydGVkIGFzIGEgc3VjY2Vzc2Z1bCB3cml0ZSBhbmQgYXMg YSAweGZmZmYKcmVhZD8gIFRoZSByZW1hcHBpbmcgaGVscGVycyByZXR1cm4gLUVOWElPIGZvciBh bnl0aGluZyBvdGhlciB0aGFuCk1ESU9fTU1EX1BNQVBNRCBhbmQgTURJT19NTURfVkVORDIsIHdo aWNoIGluY2x1ZGVzIE1ESU9fTU1EX1BDUyBhbmQKTURJT19NTURfQU4sIGFuZCB0aGVzZSBmb3Vy IGJ1cyBjYWxsYmFja3MgdHVybiB0aGF0IGludG8gInJldHVybiAwIiBvcgoicmV0dXJuIDB4ZmZm ZiIuCgpGaWx0ZXJpbmcgdGhlIGFsaWFzaW5nIE1NRHMgaXMgY2xlYXJseSBuZWVkZWQsIGJ1dCB0 aGUgbWlpX2J1cyBjb250cmFjdCBpcwp0aGF0IDAgZnJvbSBhIHdyaXRlIGNhbGxiYWNrIG1lYW5z IHRoZSB3cml0ZSByZWFjaGVkIHRoZSBkZXZpY2UuICBIZXJlIHRoZQpjb3JlIGlzIHRvbGQgYSBy ZWdpc3RlciB3cml0ZSBzdWNjZWVkZWQgd2hlbiBub3RoaW5nIHdhcyBpc3N1ZWQ6Cgpkcml2ZXJz L25ldC9wY3MvcGNzLXhwY3MuYzp4cGNzX3NvZnRfcmVzZXQoKQoJY2FzZSBEV19BTl9DNzM6Cglj YXNlIERXXzEwR0JBU0VSOgoJCWRldiA9IE1ESU9fTU1EX1BDUzsKCmFuZCB0aGUgbWF0Y2hpbmcg cmVhZGJhY2sgb2YgMHhmZmZmIG1ha2VzIEJNQ1JfUkVTRVQgbG9vayBwZXJtYW5lbnRseQphc3Nl cnRlZCwgd2hpY2ggeHBjc19wb2xsX3Jlc2V0KCkgb25seSBsb2dzLgoKTm90ZSB0aGlzIGluc3Rh bmNlIGRvZXMgYWR2ZXJ0aXNlIHRob3NlIG1vZGVzOiB4cGNzX3JlYWRfaWRzKCkgZmFsbHMgYmFj awp0byB0aGUgVkVORDIgUEhZU0lEIGJlY2F1c2UgdGhlIE1NRF9QQ1MgcmVhZCByZXR1cm5zIHRo ZSBmYWJyaWNhdGVkCjB4ZmZmZiwgc28gZGVzYyBzdGF5cyBzeW5vcHN5c194cGNzX2NvbXBhdCBh bmQgeHBjc19nZXRfaW50ZXJmYWNlcygpCnB1Ymxpc2hlcyBVU1hHTUlJLzEwR0JBU0VSL0M3MyBp biBwY3Muc3VwcG9ydGVkX2ludGVyZmFjZXMuCgpXb3VsZCByZXR1cm5pbmcgLUVPUE5PVFNVUFAg KG9yIC1FTk9ERVYpIGZvciB0aGUgdW5tYXBwYWJsZSBNTURzIGJlCmJldHRlciwgc28gdGhlIGNv cmUgc2VlcyB0aGUgZmFpbHVyZSBpbnN0ZWFkIG9mIHNpbGVudGx5IGRpdmVyZ2luZyBmcm9tIHRo ZQpoYXJkd2FyZSBzdGF0ZT8KCj4gKwo+ICsJcmV0dXJuIHhwY3Nfcmtfd3JpdGVfcmVnKHB4cGNz LCBkZXYsIHJlZywgdmFsKTsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBkd194cGNzX3JrICp4 cGNzX3JrX2NyZWF0ZV9kYXRhKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiAr CXN0cnVjdCBkd194cGNzX3JrICpweHBjczsKPiArCj4gKwlweHBjcyA9IGRldm1fa3phbGxvYygm cGRldi0+ZGV2LCBzaXplb2YoKnB4cGNzKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIXB4cGNzKQo+ ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICsKPiArCXB4cGNzLT5wZGV2ID0gcGRldjsK PiArCj4gKwlkZXZfc2V0X2RydmRhdGEoJnBkZXYtPmRldiwgcHhwY3MpOwo+ICsKPiArCXJldHVy biBweHBjczsKPiArfQoKWyAuLi4gXQoKPiArc3RhdGljIGludCB4cGNzX3JrX3NlcmRlc19waHlf cG93ZXJvbihzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2Ug KmRldiA9ICZweHBjcy0+cGRldi0+ZGV2Owo+ICsJaW50IHJldDsKPiArCj4gKwkvKgo+ICsJICog VGhlIHBvd2VyIGRvbWFpbiBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBlbmFibGVkLCB3aGljaCBh bGxvd3MgdXMgdG8KPiArCSAqIGR5bmFtaWNhbGx5IHR1cm4gdGhlIENTUiBjbG9jayBvbi9vZmYg dXNpbmcgUE0gd2hpbGUga2VlcGluZyB0aGUgUENTCj4gKwkgKiBwb3dlcmVkIG9uLgo+ICsJICov Cj4gKwlyZXQgPSBkZXZfcG1fZ2VucGRfcnBtX2Fsd2F5c19vbihkZXYsIHRydWUpOwo+ICsJaWYg KHJldCkgewo+ICsJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHBvd2VyIG9uIHBvd2VyLWRvbWFp bnNcbiIpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gcGh5X2luaXQocHhw Y3MtPnNlcmRlc19waHkpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoZGV2LCAiRmFpbGVk IHRvIGluaXQgU2VyRGVzIFBIWVxuIik7Cj4gKwkJZ290byBwbV9kb21haW47Cj4gKwl9Cj4gKwo+ ICsJcmV0ID0gcGh5X3Bvd2VyX29uKHB4cGNzLT5zZXJkZXNfcGh5KTsKPiArCWlmIChyZXQpIHsK PiArCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBwb3dlciBvbiBTZXJEZXMgUEhZXG4iKTsKPiAr CQlnb3RvIHNlcmRlc19waHk7Cj4gKwl9CgpbU2V2ZXJpdHk6IE1lZGl1bV0KRG9lcyBhbnl0aGlu ZyByZS1pbml0aWFsaXNlIHRoZSBTZXJEZXMgYWZ0ZXIgYSBzeXN0ZW0gc3VzcGVuZC9yZXN1bWUg Y3ljbGU/CnBoeV9pbml0KCkgYW5kIHBoeV9wb3dlcl9vbigpIHJ1biBvbmx5IGhlcmUsIGF0IHBy b2JlLCBhbmQKZGV2X3BtX2dlbnBkX3JwbV9hbHdheXNfb24oKSBpcyBvbmx5IGhvbm91cmVkIGJ5 IHRoZSBydW50aW1lIHBhdGg6Cgpkcml2ZXJzL3BtZG9tYWluL2NvcmUuYzpnZW5wZF9wb3dlcl9v ZmYoKQoJY2hlY2tzIHRvX2dwZF9kYXRhKHBkZCktPnJwbV9hbHdheXNfb24KCmRyaXZlcnMvcG1k b21haW4vY29yZS5jOmdlbnBkX3N5bmNfcG93ZXJfb2ZmKCkKCWlmICghZ2VucGRfc3RhdHVzX29u KGdlbnBkKSB8fCBnZW5wZF9pc19hbHdheXNfb24oZ2VucGQpKQoJCXJldHVybjsKCglpZiAoZ2Vu cGQtPnN1c3BlbmRlZF9jb3VudCAhPSBnZW5wZC0+ZGV2aWNlX2NvdW50CgkgICAgfHwgYXRvbWlj X3JlYWQoJmdlbnBkLT5zZF9jb3VudCkgPiAwKQoJCXJldHVybjsKCmdlbnBkX3N5bmNfcG93ZXJf b2ZmKCkgaXMgdGhlIG5vaXJxL3N5c2NvcmUgcGF0aCBhbmQgZG9lcyBub3QgbG9vayBhdApycG1f YWx3YXlzX29uLCBzbyBvbmNlIHRoZSBvdGhlciBQRF9QSVBFIGNvbnN1bWVycyBhcmUgc3VzcGVu ZGVkIHRoZSBkb21haW4KY2FuIGJlIHBvd2VyZWQgb2ZmIGR1cmluZyBTMy4gIHBoeS1yb2NrY2hp cC1uYW5lbmctY29tYnBoeS5jIGhhcyBubwpzdXNwZW5kL3Jlc3VtZSBjYWxsYmFja3MgZWl0aGVy LCBhbmQgcGh5LWNvcmUgc3RpbGwgYmVsaWV2ZXMgdGhlIFBIWSBpcwppbml0aWFsaXNlZCBhbmQg cG93ZXJlZC4KCk9uIHJlc3VtZSB0aGUgb25seSB0aGluZyByZXN0b3JlZCBpcyB0aGUgQ1NSIGNs b2NrIHZpYQpwbV9ydW50aW1lX2ZvcmNlX3Jlc3VtZSgpLCBzbyB3b3VsZCB0aGUgU0dNSUkgcG9y dCBjb21lIGJhY2sgdXAsIGdpdmVuIHRoYXQKdGhlIHByb2JlIGNvbW1lbnQgYmVsb3cgc2F5cyBy ZWdpc3RlciBhY2Nlc3MgYW5kIHRoZSBzb2Z0IHJlc2V0IG5lZWQgdGhlClNlckRlcyBUWCBjbG9j az8KCj4gKwo+ICsJcmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgeHBjc19ya19z ZXJkZXNfcGh5X3Bvd2Vyb2ZmLCBweHBjcyk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2X2Vycihk ZXYsICJGYWlsZWQgdG8gcmVnaXN0ZXIgZGV2bSBmb3IgU2VyRGVzIFBIWTogJWRcbiIsIHJldCk7 Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKClsgLi4uIF0KCj4gK3N0 YXRpYyBpbnQgeHBjc19ya19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7 Cj4gKwlzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3M7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXB4cGNz ID0geHBjc19ya19jcmVhdGVfZGF0YShwZGV2KTsKPiArCWlmIChJU19FUlIocHhwY3MpKQo+ICsJ CXJldHVybiBQVFJfRVJSKHB4cGNzKTsKPiArCj4gKwkvKgo+ICsJICogVGhlIFhQQ1MgbWF5IGJl IGF0dGFjaGVkIHRvIGEgcG93ZXIgZG9tYWluIChlLmcuIFBEX1BJUEUpLiBUaGUgZG9tYWluCj4g KwkgKiBtdXN0IGJlIHBvd2VyZWQgb24gYmVmb3JlIGFueSByZWdpc3RlciBhY2Nlc3MsIG90aGVy d2lzZSB0aGUgU29DIHdpbGwKPiArCSAqIHRyaWdnZXIgYSBzeW5jaHJvbm91cyBleHRlcm5hbCBh Ym9ydCAoU0Vycm9yKS4KCltTZXZlcml0eTogTG93XQpUaGlzIGlzbid0IGEgYnVnLCBidXQgIm1h eSBiZSBhdHRhY2hlZCB0byBhIHBvd2VyIGRvbWFpbiIgcmVhZHMgYXMgaWYgdGhlCmRvbWFpbiB3 ZXJlIG9wdGlvbmFsLCB3aGlsZSB0aGUgY29kZSBiZWxvdyBtYWtlcyBpdCBtYW5kYXRvcnk6Cnhw Y3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9uKCkgcHJvcGFnYXRlcyB0aGUgZGV2X3BtX2dlbnBkX3Jw bV9hbHdheXNfb24oKQplcnJvciwgYW5kIHRoYXQgcmV0dXJucyAtRU5PREVWIHdoZW4gZGV2X3Rv X2dlbnBkX3NhZmUoKSBmaW5kcyBubyBnZW5wZC4KClRoZSBjb21tZW50IGluIHhwY3Nfcmtfc2Vy ZGVzX3BoeV9wb3dlcm9uKCkgKCJUaGUgcG93ZXIgZG9tYWluIGlzIHJlcXVpcmVkCmFuZCBtdXN0 IGJlIGVuYWJsZWQiKSBhbmQgdGhlIGJpbmRpbmcsIHdoaWNoIGxpc3RzIHBvd2VyLWRvbWFpbnMg dW5kZXIKcmVxdWlyZWQ6LCBib3RoIHNheSB0aGUgb3Bwb3NpdGUuICBDb3VsZCB0aGVzZSBiZSBt YWRlIGNvbnNpc3RlbnQ/Cgo+ICsJICoKPiArCSAqIEFjY2Vzc2luZyB0aGUgWFBDUyByZWdpc3Rl cnMgYWxzbyByZXF1aXJlcyBhIFRYIGNsb2NrIGZyb20gdGhlIFNlckRlcywKPiArCSAqIHdoaWNo IGlzIG5lZWRlZCBmb3IgdGhlIHNvZnQgcmVzZXQuCj4gKwkgKi8KPiArCXJldCA9IHhwY3Nfcmtf c2VyZGVzX3BoeV9pbml0KHB4cGNzKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKClsg Li4uIF0KCj4gK3N0cnVjdCBkd194cGNzICp4cGNzX3JrX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpk ZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCj4gK3sKClsgLi4uIF0KCj4gKwlwZGV2ID0gb2Zf ZmluZF9kZXZpY2VfYnlfbm9kZShwY3NfbnApOwo+ICsJb2Zfbm9kZV9wdXQocGNzX25wKTsKPiAr CWlmICghcGRldikKPiArCQlyZXR1cm4gRVJSX1BUUigtRVBST0JFX0RFRkVSKTsKPiArCj4gKwkv Kgo+ICsJICogUGluIHRoZSBzdXBwbGllciBiZWZvcmUgcmVhZGluZyBpdHMgZHJ2ZGF0YTogZGV2 aWNlX2xpbmtfYWRkKCkKPiArCSAqIHJlZnVzZXMgdG8gY3JlYXRlIGEgbWFuYWdlZCBsaW5rIHdo aWxlIHRoZSBzdXBwbGllciBpcyBiZWluZwo+ICsJICogdW5ib3VuZCwgc28gaWYgaXQgc3VjY2Vl ZHMgdGhlIGRydmRhdGEgY2Fubm90IGJlIGZyZWVkIHVuZGVyIHVzLgo+ICsJICogVGhlIGxpbmsg aXMgcmVsZWFzZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZSBjb25zdW1lciBkZXZpY2UgaXMKPiAr CSAqIGRlc3Ryb3llZCAoRExfRkxBR19BVVRPUkVNT1ZFX0NPTlNVTUVSKSwgd2hpY2ggY292ZXJz IGFsbCBwcm9iZQo+ICsJICogZmFpbHVyZSBwYXRocywgc28gbm8gZXhwbGljaXQgZGV2aWNlX2xp bmtfcmVtb3ZlKCkgaXMgbmVlZGVkLgo+ICsJICovCj4gKwlpZiAoIWRldmljZV9saW5rX2FkZChk ZXYsICZwZGV2LT5kZXYsIERMX0ZMQUdfQVVUT1JFTU9WRV9DT05TVU1FUikpIHsKPiArCQlwdXRf ZGV2aWNlKCZwZGV2LT5kZXYpOwo+ICsJCXJldHVybiBFUlJfUFRSKC1FUFJPQkVfREVGRVIpOwo+ ICsJfQo+ICsKPiArCXB4cGNzID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7Cj4gKwlpZiAo IXB4cGNzIHx8ICFweHBjcy0+YnVzKSB7Cj4gKwkJcHV0X2RldmljZSgmcGRldi0+ZGV2KTsKPiAr CQlyZXR1cm4gRVJSX1BUUigtRVBST0JFX0RFRkVSKTsKPiArCX0KCltTZXZlcml0eTogSGlnaF0K RG9lcyB0aGUgZGV2aWNlIGNvcmUgYWN0dWFsbHkgZ3VhcmFudGVlIHdoYXQgdGhpcyBjb21tZW50 IGRlc2NyaWJlcz8KZGV2aWNlX2xpbmtfaW5pdF9zdGF0dXMoKSBoYW5kbGVzIHRoZSB1bmJpbmRp bmcgc3VwcGxpZXIgZXhwbGljaXRseSByYXRoZXIKdGhhbiByZWZ1c2luZzoKCmRyaXZlcnMvYmFz ZS9jb3JlLmM6ZGV2aWNlX2xpbmtfaW5pdF9zdGF0dXMoKQoJY2FzZSBETF9ERVZfVU5CSU5ESU5H OgoJCWxpbmstPnN0YXR1cyA9IERMX1NUQVRFX1NVUFBMSUVSX1VOQklORDsKCQlicmVhazsKCmRl dmljZV9saW5rX2FkZCgpIHJldHVybnMgTlVMTCBvbmx5IGZvciBpbnZhbGlkIGZsYWdzLAohZGV2 aWNlX3BtX2luaXRpYWxpemVkKHN1cHBsaWVyKSwgZGVwZW5kZW5jeSBjeWNsZXMsIG9yIHRoZQpT WU5DX1NUQVRFX09OTFkgY29uZGl0aW9ucy4gIEJ5IHRoZSB0aW1lIHRoZSBzdXBwbGllciBpcyB1 bmJpbmRpbmcgaXQgaGFzCmFscmVhZHkgcGFzc2VkIGRldmljZV9saW5rc19idXN5KCkgYW5kIGRl dmljZV9saW5rc191bmJpbmRfY29uc3VtZXJzKCksIHNvCmEgbGluayBjcmVhdGVkIGFmdGVyd2Fy ZHMgbmVpdGhlciBibG9ja3Mgbm9yIGlzIHdhaXRlZCBmb3IuCgpNZWFud2hpbGUgdGhlIHN1cHBs aWVyJ3MgZGV2cmVzIGlzIGZyZWVkIGJlZm9yZSBkcnZkYXRhIGlzIGNsZWFyZWQ6Cgpkcml2ZXJz L2Jhc2UvZGQuYzpkZXZpY2VfdW5iaW5kX2NsZWFudXAoKQoJZGV2cmVzX3JlbGVhc2VfYWxsKGRl dik7CgkuLi4KCWRldl9zZXRfZHJ2ZGF0YShkZXYsIE5VTEwpOwoKU28gY2FuIHRoaXMgaGFwcGVu PwoKQ1BVIEE6IGVjaG8gPHBkZXY+ID4gL3N5cy9idXMvcGxhdGZvcm0vZHJpdmVycy9ya194cGNz LWR3eHBjcy91bmJpbmQKCV9fZGV2aWNlX3JlbGVhc2VfZHJpdmVyKCkJLyogRExfREVWX1VOQklO RElORyAqLwoJICBkZXZpY2VfcmVtb3ZlKCkKCSAgICBkZXZpY2VfdW5iaW5kX2NsZWFudXAoKQoJ ICAgICAgZGV2cmVzX3JlbGVhc2VfYWxsKCkJLyogZnJlZXMgcHhwY3MsIG1paV9idXMsIHJlZ19i YXNlICovCgpDUFUgQjogTUFDIHByb2JlIC0+IHhwY3NfcmtfY3JlYXRlKCkKCWRldmljZV9saW5r X2FkZCgpCQkvKiBzdWNjZWVkcywgRExfU1RBVEVfU1VQUExJRVJfVU5CSU5EICovCglweHBjcyA9 IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOyAgLyogc3RpbGwgdGhlIGZyZWVkIHBvaW50ZXIg Ki8KCWlmICghcHhwY3MgfHwgIXB4cGNzLT5idXMpCS8qIHBhc3NlcyBvbiBmcmVlZCBtZW1vcnkg Ki8KCnhwY3NfcmtfY3JlYXRlX2RhdGEoKSBwdWJsaXNoZXMgZHJ2ZGF0YSBiZWZvcmUgYW55IGZp ZWxkIGlzIGluaXRpYWxpc2VkLCBzbwp0aGUgc2FtZSB3aW5kb3cgZXhpc3RzIG9uIHRoZSBzdXBw bGllcidzIHByb2JlLWZhaWx1cmUgcGF0aCwgYW5kCnB1dF9kZXZpY2UoJnBkZXYtPmRldikgcGlu cyBzdHJ1Y3QgZGV2aWNlIG9ubHksIG5vdCB0aGUgZHJpdmVyLW93bmVkCmRldnJlcy4KCldvdWxk IGRldmljZV9sb2NrKCkgcGx1cyBkZXZpY2VfaXNfYm91bmQoKSwgb3IgYSByZWZjb3VudGVkIGhh bmRsZSBvbiB0aGUKTURJTyBidXMsIGNsb3NlIHRoaXM/Cgo+ICsKPiArCXhwY3MgPSB4cGNzX2Ny ZWF0ZV9tZGlvZGV2KHB4cGNzLT5idXMsIChpbnQpcG9ydCk7CgpIZXJlIHRoZSBwb3NzaWJseSBm cmVlZCBtaWlfYnVzIGlzIGhhbmRlZCB0byB0aGUgZ2VuZXJpYyBjb3JlLCB3aGljaCBrZWVwcwp1 c2luZyBpdCBmb3IgZXZlcnkgbGF0ZXIgcmVnaXN0ZXIgYWNjZXNzLCBkZXJlZmVyZW5jaW5nIGJ1 cy0+cHJpdiAodGhlCmZyZWVkIHN0cnVjdCBkd194cGNzX3JrKSBhbmQgcHhwY3MtPnJlZ19iYXNl LiAgSXMgdGhlcmUgYW55dGhpbmcgcHJldmVudGluZwp0aGF0PwoKPiArCWlmIChJU19FUlIoeHBj cykpIHsKPiArCQlwdXRfZGV2aWNlKCZwZGV2LT5kZXYpOwo+ICsJCXJldHVybiB4cGNzOwo+ICsJ fQo+ICsKPiArCXhwY3NfY29uZmlnX2VlZV9tdWx0X2ZhY3QoeHBjcywgcHhwY3MtPmVlZV9tdWx0 X2ZhY3QpOwo+ICsJcHV0X2RldmljZSgmcGRldi0+ZGV2KTsKPiArCXJldHVybiB4cGNzOwo+ICt9 Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKHhwY3NfcmtfY3JlYXRlKTsKClsgLi4uIF0KCj4gK3N0YXRp YyBERUZJTkVfUlVOVElNRV9ERVZfUE1fT1BTKHhwY3NfcmtfcG1fb3BzLAo+ICsJCQkgICB4cGNz X3JrX3BtX3J1bnRpbWVfc3VzcGVuZCwKPiArCQkJICAgeHBjc19ya19wbV9ydW50aW1lX3Jlc3Vt ZSwKPiArCQkJICAgTlVMTCk7CgpUaGlzIG9ubHkgc3VwcGxpZXMgdGhlIHJ1bnRpbWUgY2FsbGJh Y2tzIHBsdXMgdGhlIGdlbmVyaWMKcG1fcnVudGltZV9mb3JjZV9zdXNwZW5kL2ZvcmNlX3Jlc3Vt ZSBzbGVlcCBwYWlyLCB3aGljaCBnYXRlIHRoZSBDU1IgY2xvY2s7CnNlZSB0aGUgcXVlc3Rpb24g YWJvdmUgYWJvdXQgcmUtaW5pdGlhbGlzaW5nIHRoZSBTZXJEZXMgb24gcmVzdW1lLgoKLS0gClNh c2hpa28gQUkgcmV2aWV3IMK3IGh0dHBzOi8vbmV0ZGV2LWFpLmJvdHMubGludXguZGV2L3Nhc2hp a28vIy9wYXRjaHNldC8yMDI2MDkxNzIwNDYyNC4yNDI3NDg2LTEtY29pYXByYW50JTQwZ21haWwu Y29tCgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlAbGlzdHMuaW5mcmFkZWFk Lm9yZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1w aHkK