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 F1C14C88E7D for ; Mon, 14 Sep 2026 20:25:02 +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=V1QPx7UijYwOzvIaKPOitgKNp9qGyFnAPTcrdfObCrQ=; b=xAE0KMw3Geqfyl Zjfx+Sn4/VVZ91QJtQhYFhphNe62WkeKxFwPpEHhlVk3+pn/jXZk8wiDLT9vsRhkLQqA6Krh0qY3k 2jM/D2fmxHXaGklTG1pRb246xRpvy5oBIDuSdiTWbs9X1nSDzkqwFRQC5XFNifwSbxl5PE51JF3iN lwO9duY4Hbi3fw6P0A+kFmB6yx6UTbe6UR+zPTVh9OoUwrDU3m7AdARv9o29IPD00Ai4K3qA+WVOc rzGpTwvP68eWUnaAeUpBrCfOa9BS+OXsFN0wbp3b5hLN1Hi0Jl+Tc2HSq5V0TbT8lbaRxDaDuai65 fNpNfL+utleh/D4iyGkw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x6DEc-00000004akw-2XKs; Mon, 14 Sep 2026 20:25:02 +0000 Received: from tor.source.kernel.org ([172.105.4.254]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x6DEQ-00000004aRn-252M; Mon, 14 Sep 2026 20:24:50 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id C2174602C5; Mon, 14 Sep 2026 20:24:49 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 09CF11F0089B; Mon, 14 Sep 2026 20:24:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1789417489; bh=OMMuydY+HeFbYXxtpaEu5EzSRSgh0D+mnFhpMS3MlYc=; h=Subject:From:To:Cc:Date:In-Reply-To:References; b=OP28RTtTZbrWRtWJ6KNB7eDOWxxWj0whdphMwls2X7V8eD+p6FUeznbEXk+AOb0nm TJxbcfpqlk1J1uXjjRSx35aKDZebcXVu32skRn5RF4ESczR38UtaVT/UubGZC02akT qF82YQ3hAhLC9zW788NWNe0KRygv0UEChdWXkTQpfrB7UkxhF76aXC10hMEbhdGdI2 FWIPBh2ZZFYLE/RVvqSrddisVzlJH7isjLIyxdgddvuiMPTgNeF5EGrMY0ZmODhcPZ afnk3jm9gyNAS4hIQE5/EZmb4py2cguCsYjJ8/4oVbxYE/hW/XyrEC0Y60Gimf1z9X pdisggaqfcIcg== Subject: Re: [PATCH net-next v5 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, 14 Sep 2026 20:24:47 +0000 Message-ID: <178941748759.22033.1861925605437398903@kernel.org> In-Reply-To: <20260913185849.907479-8-coiaprant@gmail.com> References: <20260913185849.907479-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 NiBwb3RlbnRpYWwKaXNzdWUocykgdG8gY29uc2lkZXI6CgpDcml0aWNhbDogMCDCtyBIaWdoOiAx IMK3IE1lZGl1bTogMyDCtyBMb3c6IDIKCi0gW0hpZ2hdIEluY29ycmVjdCBNTUQgd3JpdGUgcmVt YXBwaW5nIGZvciBNSUkgdmVuZG9yIHJlZ2lzdGVycyBicmVha3MKICBjb25maWd1cmF0aW9uIGZv ciBwb3J0cyAxLCAyLCBhbmQgMy4KLSBbTWVkaXVtXSBUaGUgcGF0Y2ggc2lsZW50bHkgcmUtcGFj a2FnZXMgdGhlIHByZS1leGlzdGluZyBnZW5lcmljCiAgU3lub3BzeXMgWFBDUyBwbGF0Zm9ybSBk cml2ZXIuCi0gW01lZGl1bV0geHBjc19ya19pbml0X2NsaygpIChkcml2ZXJzL25ldC9wY3MvcGNz LXhwY3MtcmsuYzozNjEtMzYyKQogIGNvbXB1dGVzIGBweHBjcy0+ZWVlX211bHRfZmFjdCA9IERJ Vl9ST1VORF9DTE9TRVNUKDEwMCAq4oCmCi0gW01lZGl1bV0gQWNxdWlyaW5nIGBkZXZpY2VfbG9j aygpYCBvZiBhbm90aGVyIGRldmljZSBmcm9tIHdpdGhpbiBhCiAgcHJvYmUgcGF0aCBjYXVzZXMg YSBsb2NrZGVwIHdhcm5pbmcgKHJlY3Vyc2l2ZSBsb2NraW5nKS4KLSBbTG93XSBDb25jZXJuIHRo YXQgdGhlIG5ld2x5IGV4cG9ydGVkIHhwY3NfcmtfY3JlYXRlKCkKICAoaW5jbHVkZS9saW51eC9w Y3MvcGNzLXhwY3MtcmsuaCkgaGFzIG5vIGluLXRyZWUgY2FsbGVyIGFuZCBubyBLY29uZmln4oCm Ci0gW0xvd10gVGhlIHJvY2tjaGlwLHJrMzU2OC14cGNzIGJpbmRpbmcgbGlzdHMgYHBoeXNgIGFu ZCBgcGh5LW5hbWVzYCBpbgogIGl0cyBgcmVxdWlyZWQ6YCBsaXN04oCmCgotLQoKbmV0OiBwY3M6 IHhwY3M6IGFkZCBSb2NrY2hpcCBSSzM1NjggcGxhdGZvcm0gZ2x1ZSBkcml2ZXIKCkFkZHMgYSBw bGF0Zm9ybSBnbHVlIGRyaXZlciBmb3IgdGhlIERlc2lnbldhcmUgWFBDUyBibG9jayBmb3VuZCBv biBSSzM1NjgsCmV4cG9zaW5nIHRoZSBBUEIzLW1hcHBlZCBYUENTIHJlZ2lzdGVycyBhcyBhIHZp cnR1YWwgTURJTyBidXMgd2l0aCBwZXItcG9ydApNTUQgcmVtYXBwaW5nIHNvIHRoZSBnZW5lcmlj IHBjcy14cGNzIGNvcmUgY2FuIGNyZWF0ZSBhIHBoeWxpbmtfcGNzLiAgQWxzbwphZGRzIG5ldyBL Y29uZmlnIHN5bWJvbHMgZm9yIHRoZSBnZW5lcmljIGFuZCBSb2NrY2hpcCBYUENTIGdsdWUgYW5k IGFuCmV4cG9ydGVkIHhwY3NfcmtfY3JlYXRlKCkgaGVscGVyIGZvciBNQUMgZHJpdmVycy4KCkxp bms6IGh0dHBzOi8vZGwucmFkeGEuY29tL3JvY2szL2RvY3MvaHcvZGF0YXNoZWV0L1JvY2tjaGlw JTIwUkszNTY4JTIwVFJNJTIwUGFydDIlMjBWMS4xLTIwMjEwMzAxLnBkZiAoUGFnZSAyMDc4KQoK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL0tjb25maWcgYi9kcml2ZXJzL25ldC9wY3Mv S2NvbmZpZwo+IGluZGV4IGU0MTdmZDY2ZjY2MGEuLjA4MDUzOGYxOTNkNTkgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9uZXQvcGNzL0tjb25maWcKPiArKysgYi9kcml2ZXJzL25ldC9wY3MvS2NvbmZp Zwo+IEBAIC0xMiw2ICsxMiwzMSBAQCBjb25maWcgUENTX1hQQ1MKPiAgCSAgVGhpcyBtb2R1bGUg cHJvdmlkZXMgYSBkcml2ZXIgYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIFN5bm9wc3lzCj4gIAkg IERlc2lnbldhcmUgWFBDUyBjb250cm9sbGVycy4KPiAgCj4gK2lmIFBDU19YUENTCj4gKwo+ICtj b25maWcgUENTX1hQQ1NfUExBVEZPUk0KPiArCXRyaXN0YXRlICJHZW5lcmljIFhQQ1MgY29udHJv bGxlciBzdXBwb3J0Igo+ICsJZGVmYXVsdCBQQ1NfWFBDUwo+ICsJaGVscAo+ICsJICBHZW5lcmlj IERXWFBDUyBkcml2ZXIgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJlcXVpcmUgYW55Cj4gKwkg IHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgdG8gZnVuY3Rpb24gb3IgaXMgdXNpbmcgcGxhdGZvcm0K PiArCSAgZGF0YSBmb3Igc2V0dXAuCj4gKwo+ICsJICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIg d2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLgo+ICsKPiArY29uZmlnIFBDU19Y UENTX1JPQ0tDSElQCj4gKwl0cmlzdGF0ZSAiUm9ja2NoaXAgWFBDUyBjb250cm9sbGVyIHN1cHBv cnQiCj4gKwlkZWZhdWx0IEFSQ0hfUk9DS0NISVAKPiArCWRlcGVuZHMgb24gT0YgJiYgKEFSQ0hf Uk9DS0NISVAgfHwgQ09NUElMRV9URVNUKQo+ICsJZGVwZW5kcyBvbiBHRU5FUklDX1BIWSB8fCBD T01QSUxFX1RFU1QKPiArCWRlcGVuZHMgb24gUE1fR0VORVJJQ19ET01BSU5TIHx8IENPTVBJTEVf VEVTVAo+ICsJaGVscAo+ICsJICBTdXBwb3J0IGZvciBYUENTIGNvbnRyb2xsZXIgb24gUm9ja2No aXAgUkszNTZ4IFNvQy4KPiArCj4gKwkgIElmIHlvdSBoYXZlIGEgUm9ja2NoaXAgU29DIHdpdGgg dGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS4KPiArCj4gK2VuZGlmICMgUENTX1hQQ1MK PiArCj4gIGNvbmZpZyBQQ1NfTFlOWAo+ICAJdHJpc3RhdGUKPiAgCWhlbHAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlIGIvZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlCj4g aW5kZXggNGY3OTIwNjE4YjkwMC4uZjlmNmNmMjU3OGQ3MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L25ldC9wY3MvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGUKPiBAQCAt MSwxMCArMSwxMSBAQAo+ICAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gICMg TWFrZWZpbGUgZm9yIExpbnV4IFBDUyBkcml2ZXJzCj4gIAo+IC1wY3NfeHBjcy0kKENPTkZJR19Q Q1NfWFBDUykJOj0gcGNzLXhwY3MubyBwY3MteHBjcy1wbGF0Lm8gXAo+IC0JCQkJICAgcGNzLXhw Y3MtbnhwLm8gcGNzLXhwY3Mtd3gubwo+ICtwY3NfeHBjcy0kKENPTkZJR19QQ1NfWFBDUykJOj0g cGNzLXhwY3MubyBwY3MteHBjcy1ueHAubyBwY3MteHBjcy13eC5vCj4gIAo+ICBvYmotJChDT05G SUdfUENTX1hQQ1MpCQkrPSBwY3NfeHBjcy5vCj4gK29iai0kKENPTkZJR19QQ1NfWFBDU19QTEFU Rk9STSkgKz0gcGNzLXhwY3MtcGxhdC5vCj4gK29iai0kKENPTkZJR19QQ1NfWFBDU19ST0NLQ0hJ UCkgKz0gcGNzLXhwY3MtcmsubwoKW1NldmVyaXR5OiBNZWRpdW1dClNob3VsZCB0aGlzIHJlcGFj a2FnaW5nIG9mIHRoZSBwcmUtZXhpc3RpbmcgZ2VuZXJpYyBwbGF0Zm9ybSBnbHVlIGJlIGEKc2Vw YXJhdGUgcGF0Y2gsIG9yIGF0IGxlYXN0IGJlIGRlc2NyaWJlZCBpbiB0aGUgY29tbWl0IG1lc3Nh Z2U/CgpwY3MteHBjcy1wbGF0Lm8gaXMgbW92ZWQgb3V0IG9mIHRoZSBwY3NfeHBjcyBjb21wb3Np dGUgb2JqZWN0IGFuZCBidWlsdCBhcwppdHMgb3duIG1vZHVsZSwgYW5kIHRoZSBuZXcgUENTX1hQ Q1NfUExBVEZPUk0gdHJpc3RhdGUgbWFrZXMgdGhlIHNucHMsZHcteHBjcwpwbGF0Zm9ybSBnbHVl IHVzZXItc2VsZWN0YWJsZSB3aGVyZSBpdCB3YXMgcHJldmlvdXNseSB1bmNvbmRpdGlvbmFsIHVu ZGVyClBDU19YUENTLiAgU28gdGhlIHNucHMsZHcteHBjcyBwbGF0Zm9ybSBkcml2ZXIgc2hpcHMg aW4gcGNzLXhwY3MtcGxhdC5rbwppbnN0ZWFkIG9mIHBjc194cGNzLmtvIGFmdGVyIHRoaXMgcGF0 Y2guCgpUaGUgY29tbWl0IG1lc3NhZ2Ugb25seSBkZXNjcmliZXMgYWRkaW5nIHRoZSBSb2NrY2hp cCBnbHVlIGRyaXZlciBhbmQgZG9lcwpub3QgbWVudGlvbiB0aGlzIGNoYW5nZSB0byBleGlzdGlu ZyBmdW5jdGlvbmFsaXR5LiAgQ291bGQgdGhlIE1ha2VmaWxlIGFuZApLY29uZmlnIHJlZmFjdG9y IGJlIHNwbGl0IG91dCB3aXRoIGl0cyBvd24gcmF0aW9uYWxlPwoKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvcGNzL3Bjcy14cGNzLXJrLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3Mtcmsu Ywo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwMC4uN2ZkMTQwOGMw NDRjYwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3Mtcmsu Ywo+IEBAIC0wLDAgKzEsNTU5IEBACgpbIC4uLiBdCgo+ICtzdGF0aWMgaW50IHhwY3Nfcmtfc2Vy ZGVzX3BoeV9pbml0KHN0cnVjdCBkd194cGNzX3JrICpweHBjcykKPiArewo+ICsJc3RydWN0IGRl dmljZSAqZGV2ID0gJnB4cGNzLT5wZGV2LT5kZXY7Cj4gKwo+ICsJcHhwY3MtPnNlcmRlc19waHkg PSBkZXZtX3BoeV9nZXQoZGV2LCAic2VyZGVzIik7Cj4gKwlpZiAoSVNfRVJSKHB4cGNzLT5zZXJk ZXNfcGh5KSkKPiArCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHhwY3MtPnNl cmRlc19waHkpLAo+ICsJCQkJCSJGYWlsZWQgdG8gZ2V0IFNlckRlcyBQSFlcbiIpOwo+ICsKPiAr CXJldHVybiAwOwo+ICt9CgpbU2V2ZXJpdHk6IExvd10KeHBjc19ya19zZXJkZXNfcGh5X2luaXQo KSB0cmVhdHMgdGhlICJzZXJkZXMiIHBoeSBhcyBtYW5kYXRvcnkgYW5kIGZhaWxzCnByb2JlIHdo ZW4gaXQgY2Fubm90IGJlIHJlc29sdmVkLCBhbmQgdGhlIGJpbmRpbmcgYWRkZWQgbGF0ZXIgaW4g dGhpcyBzZXJpZXMKKERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3Jv Y2tjaGlwLHJrMzU2OC14cGNzLnlhbWwpIGxpc3RzCnBoeXMgYW5kIHBoeS1uYW1lcyB1bmRlciBy ZXF1aXJlZDoKCiAgcmVxdWlyZWQ6CiAgICAtIGNvbXBhdGlibGUKICAgIC0gcmVnCiAgICAuLi4K ICAgIC0gcGh5cwogICAgLSBwaHktbmFtZXMKICAgIC0gcG93ZXItZG9tYWlucwoKVGhlIFNvQyBu b2RlIGFkZGVkIGluIGFyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY4LmR0c2kgb25s eSBoYXM6CgoJeHBjczogZXRoZXJuZXQtcGNzQGZkYTAwMDAwIHsKCQljb21wYXRpYmxlID0gInJv Y2tjaGlwLHJrMzU2OC14cGNzIjsKCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKCQkjc2l6ZS1jZWxs cyA9IDwwPjsKCQlyZWcgPSA8MHgwIDB4ZmRhMDAwMDAgMHgwIDB4MjAwMDAwPjsKCQljbG9ja3Mg PSA8JmNydSBQQ0xLX1hQQ1M+LCA8JmNydSBDTEtfWFBDU19FRUU+OwoJCWNsb2NrLW5hbWVzID0g ImNzciIsICJlZWUiOwoJCXBvd2VyLWRvbWFpbnMgPSA8JnBvd2VyIFJLMzU2OF9QRF9QSVBFPjsK CQlzdGF0dXMgPSAiZGlzYWJsZWQiOwoKQ0hFQ0tfRFRCUyB2YWxpZGF0ZXMgbm9kZXMgcmVnYXJk bGVzcyBvZiBzdGF0dXMsIHNvIGRvZXMgZXZlcnkgUkszNTY4IERUQgpub3cgcmVwb3J0IG1pc3Np bmcgcGh5cy9waHktbmFtZXMgZm9yIHRoaXMgbm9kZT8gIE9ubHkKcmszNTY4LXBob3RvbmljYXQu ZHRzIGFkZHMgdGhlbSwgc28gYSBib2FyZCB0aGF0IGp1c3QgZmxpcHMgdGhpcyBub2RlIHRvCnN0 YXR1cyA9ICJva2F5IiB3b3VsZCBhbHNvIGZhaWwgcHJvYmUgd2l0aCAiRmFpbGVkIHRvIGdldCBT ZXJEZXMgUEhZIi4KClNob3VsZCB0aGUgU29DIG5vZGUgY2FycnkgcGh5cy9waHktbmFtZXMsIG9y IHNob3VsZCB0aGUgYmluZGluZyBub3QgbWFyawp0aGVtIHJlcXVpcmVkIGF0IHRoZSBTb0MgbGV2 ZWw/CgpbIC4uLiBdCgo+ICtzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9jbGsoc3RydWN0IGR3X3hw Y3NfcmsgKnB4cGNzKQo+ICt7ClsgLi4uIF0KPiArCS8qCj4gKwkgKiBDb21wdXRlIHRoZSBtdWx0 aXBsaWVyIGZvciB0aGUgRUVFIGNsb2NrIHNvIHRoYXQKPiArCSAqIGNsa19lZWVfcGVyaW9kICog KG11bHRfZmFjdCArIDEpIGZhbGxzIHdpdGhpbiA4MC4uMTIwIG5zLgo+ICsJICoKPiArCSAqIE9u IFJLMzU2OCwgY2xrX3hwY3NfZWVlIGlzIG11eGVkIGJldHdlZW4gZ3BsbDIwMCAoMjAwIE1Ieiwg NSBucykKPiArCSAqIGFuZCBjcGxsMTI1ICgxMjUgTUh6LCA4IG5zKSwgc2VsZWN0ZWQgYnkgQ1JV X0NMS1NFTF9DT04yOSBiaXQgMTMuCj4gKwkgKiBUaGUgcmVzZXQgdmFsdWUgaXMgMCAoMjAwIE1I eiksIGJ1dCBkZXJpdmUgdGhlIHZhbHVlIGF0IHJ1bnRpbWUgdG8KPiArCSAqIHN0YXkgY29ycmVj dCBpZiB0aGUgbXV4IGlzIGNoYW5nZWQgYnkgYSBib2FyZC4KPiArCSAqLwo+ICsJcHhwY3MtPmVl ZV9tdWx0X2ZhY3QgPSBESVZfUk9VTkRfQ0xPU0VTVCgxMDAgKiBjbGtfZ2V0X3JhdGUocHhwY3Mt PmVlZV9jbGspLAo+ICsJCQkJCQkgMTAwMDAwMDAwMFVMKSAtIDE7CgpbU2V2ZXJpdHk6IE1lZGl1 bV0KQ2FuIHRoaXMgdmFsdWUgb3ZlcmZsb3cgdGhlIDQtYml0IHJlZ2lzdGVyIGZpZWxkIGl0IGVu ZHMgdXAgaW4/CgpGb3IgdGhlIHJlc2V0IGNvbmZpZ3VyYXRpb24gbmFtZWQgaW4gdGhlIGNvbW1l bnQgKDIwMCBNSHosIDUgbnMpIHRoaXMKY29tcHV0ZXMgMTAwICogMjAwMDAwMDAwIC8gMTAwMDAw MDAwMCAtIDEgPSAxOS4gIFRoYXQgaXMgcGFzc2VkIG9uCnVuY2hlY2tlZDoKCgl4cGNzX2NvbmZp Z19lZWVfbXVsdF9mYWN0KHhwY3MsIHB4cGNzLT5lZWVfbXVsdF9mYWN0KTsKCmFuZCB0aGUgY29y ZSBwcm9ncmFtcyBpdCBpbiB4cGNzX2NvbmZpZ19lZWUoKToKCglkcml2ZXJzL25ldC9wY3MvcGNz LXhwY3MuYzoKCQkgICAgICBGSUVMRF9QUkVQKERXX1ZSX01JSV9FRUVfTVVMVF9GQUNUXzEwME5T LAoJCQkJIHhwY3MtPmVlZV9tdWx0X2ZhY3QpOwoKd2l0aAoKCWRyaXZlcnMvbmV0L3Bjcy9wY3Mt eHBjcy5oOgoJI2RlZmluZSBEV19WUl9NSUlfRUVFX01VTFRfRkFDVF8xMDBOUwkJR0VOTUFTSygx MSwgOCkKCkZJRUxEX1BSRVAgb24gYSBydW50aW1lIHZhbHVlIGRvZXMgbm8gcmFuZ2UgY2hlY2ss IHNvIDE5ICgweDEzKSBiZWNvbWVzIDMuClRoZSBoYXJkd2FyZSBpcyB0aGVuIHRvbGQgdGhlIDEw MCBucyByZWZlcmVuY2UgaXMgNCBFRUUgY2xvY2sgcGVyaW9kcwooMjAgbnMpIHJhdGhlciB0aGFu IHRoZSA4MC4uMTIwIG5zIHRoZSBjb21tZW50IGFuZCB0aGUga2VybmVsLWRvYyBvZgp4cGNzX2Nv bmZpZ19lZWVfbXVsdF9mYWN0KCkgcmVxdWlyZSwgd2hpY2ggYWZmZWN0cyBhbGwgZGVyaXZlZCBM UEkgdGltZXJzCm9uY2UgRUVFIGlzIGVuYWJsZWQuICBTaW5jZSB0aGUgZmllbGQgY2FwcyB0aGUg Y291bnQgYXQgMTYgcGVyaW9kcywgaXMgMTUKdGhlIG9ubHkgcmVwcmVzZW50YWJsZSB2YWx1ZSBm b3IgYSA1IG5zIGNsb2NrLCBhbmQgc2hvdWxkIHRoaXMgYmUgY2xhbXBlZD8KClR3byBtb3JlIHRo aW5ncyBhYm91dCB0aGUgc2FtZSBleHByZXNzaW9uOgoKLSAxMDAgKiBjbGtfZ2V0X3JhdGUoKSBp cyBldmFsdWF0ZWQgaW4gdW5zaWduZWQgbG9uZywgc28gb24gMzItYml0IGJ1aWxkcwogIDEwMCAq IDIwMDAwMDAwMCB3cmFwcyB0byAyODIwMTMwODE2IGFuZCB5aWVsZHMgbXVsdF9mYWN0IDIuICBX b3VsZAogIG11bF91NjRfdTMyX2RpdigpIG9yIGEgdTY0IGludGVybWVkaWF0ZSBiZSBiZXR0ZXIg aGVyZT8KCi0gSWYgY2xrX2dldF9yYXRlKCkgcmV0dXJucyAwLCAwIC0gMSBzdG9yZWQgaW4gYSB1 OCBiZWNvbWVzIDI1NSwgZ2l2aW5nCiAgZmllbGQgdmFsdWUgMTUuICBJcyBhIHplcm8gcmF0ZSB3 b3J0aCByZWplY3Rpbmc/CgpbIC4uLiBdCgo+IEBAIC0wLDAgKzEsNTU5IEBACj4gKy8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gKy8qCj4gKyAqIFJvY2tjaGlwIFhQQ1MgcGxh dGZvcm0gZGV2aWNlIGRyaXZlcgo+ICsgKgo+ICsgKiBCYXNlZCBvbiB0aGUgU3lub3BzeXMgRGVz aWduV2FyZSBYUENTIHBsYXRmb3JtIGRyaXZlci4KPiArICogQ29weXJpZ2h0IChDKSAyMDI0IFNl cmdlIFNlbWluCj4gKyAqCj4gKyAqIEFkYXB0ZWQgZm9yIFJvY2tjaGlwIFNvQ3MsIHdpdGggcmVm ZXJlbmNlIHRvIHRoZSBSb2NrY2hpcCBPRU0gZHJpdmVyLgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MjYgQ29pYSBQcmFudAo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9hdG9taWMuaD4KPiAr I2luY2x1ZGUgPGxpbnV4L2JpdGZpZWxkLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPiAr I2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L2lvcG9sbC5oPgo+ICsjaW5jbHVkZSA8bGludXgvbWF0aC5oPgo+ICsjaW5j bHVkZSA8bGludXgvbWRpby5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9vZi5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L3Bjcy9wY3MteHBjcy1yay5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGh5Lmg+ Cj4gKyNpbmNsdWRlIDxsaW51eC9waHkvcGh5Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9y bV9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3BtX2RvbWFpbi5oPgo+ICsjaW5jbHVkZSA8 bGludXgvcG1fcnVudGltZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcHJvcGVydHkuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L3NpemVzLmg+Cj4gKwo+ICsjaW5jbHVkZSAicGNzLXhwY3MuaCIKPiArCj4g K3N0cnVjdCBkd194cGNzX3JrIHsKPiArCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7Cj4g KwlzdHJ1Y3QgbWlpX2J1cyAqYnVzOwo+ICsJdm9pZCBfX2lvbWVtICpyZWdfYmFzZTsKPiArCXN0 cnVjdCBwaHkgKnNlcmRlc19waHk7Cj4gKwlzdHJ1Y3QgY2xrICpjc3JfY2xrOwo+ICsJc3RydWN0 IGNsayAqZWVlX2NsazsKPiArCXU4IGVlZV9tdWx0X2ZhY3Q7Cj4gK307Cj4gKwo+ICtzdGF0aWMg cHRyZGlmZl90IHhwY3NfcmtfYWRkcl9mb3JtYXQoaW50IGRldiwgaW50IHJlZykKPiArewo+ICsJ cmV0dXJuIEZJRUxEX1BSRVAoMHg3MDAwMCwgZGV2KSB8IEZJRUxEX1BSRVAoMHhmZmZmLCByZWcp Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHhwY3NfcmtfcmVhZF9yZWcoc3RydWN0IGR3X3hwY3Nf cmsgKnB4cGNzLCBpbnQgZGV2LCBpbnQgcmVnKQo+ICt7Cj4gKwlwdHJkaWZmX3QgY3NyOwo+ICsJ aW50IHJldDsKPiArCj4gKwljc3IgPSB4cGNzX3JrX2FkZHJfZm9ybWF0KGRldiwgcmVnKTsKPiAr Cj4gKwlyZXQgPSBwbV9ydW50aW1lX3Jlc3VtZV9hbmRfZ2V0KCZweHBjcy0+cGRldi0+ZGV2KTsK PiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXQgPSByZWFkbChweHBjcy0+ cmVnX2Jhc2UgKyAoY3NyIDw8IDIpKSAmIDB4ZmZmZjsKPiArCj4gKwlwbV9ydW50aW1lX3B1dCgm cHhwY3MtPnBkZXYtPmRldik7Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IHhwY3Nfcmtfd3JpdGVfcmVnKHN0cnVjdCBkd194cGNzX3JrICpweHBjcywgaW50IGRldiwgaW50 IHJlZywgdTE2IHZhbCkKPiArewo+ICsJcHRyZGlmZl90IGNzcjsKPiArCWludCByZXQ7Cj4gKwo+ ICsJY3NyID0geHBjc19ya19hZGRyX2Zvcm1hdChkZXYsIHJlZyk7Cj4gKwo+ICsJcmV0ID0gcG1f cnVudGltZV9yZXN1bWVfYW5kX2dldCgmcHhwY3MtPnBkZXYtPmRldik7Cj4gKwlpZiAocmV0KQo+ ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJd3JpdGVsKHZhbCwgcHhwY3MtPnJlZ19iYXNlICsgKGNz ciA8PCAyKSk7Cj4gKwo+ICsJcG1fcnVudGltZV9wdXQoJnB4cGNzLT5wZGV2LT5kZXYpOwo+ICsJ cmV0dXJuIDA7Cj4gK30KPiArCj4gKyNkZWZpbmUgUk9DS0NISVBfTU1EX01JSTEJMgo+ICsjZGVm aW5lIFJPQ0tDSElQX01NRF9NSUkyCTMKPiArI2RlZmluZSBST0NLQ0hJUF9NTURfTUlJMwk0Cj4g KyNkZWZpbmUgUk9DS0NISVBfTU1EX1BNQVBNRAk2Cj4gKyNkZWZpbmUgUk9DS0NISVBfTU1EX01J SQk3Cj4gKwo+ICtzdGF0aWMgYm9vbCB4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZShpbnQgYWRk cikKPiArewo+ICsJcmV0dXJuICEoYWRkciA8IDAgfHwgYWRkciA+IDMpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaW50IHhwY3NfcmtfbWRpb19yZWFkX3JlbWFwcGluZyhpbnQgYWRkciwgaW50IGRldiwg aW50IHJlZykKPiArewo+ICsJc3dpdGNoIChkZXYpIHsKPiArCWNhc2UgTURJT19NTURfUE1BUE1E Ogo+ICsJCXJldHVybiBST0NLQ0hJUF9NTURfUE1BUE1EOwo+ICsJY2FzZSBNRElPX01NRF9WRU5E MjoKPiArCQlicmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIC1FTlhJTzsKPiArCX0KPiAr Cj4gKwkvKiByZWFkIHJlbWFwcGluZyB0byBNSUkgaXMgcGVyZm9ybWVkIGJ5IEhXICovCj4gKwlz d2l0Y2ggKGFkZHIpIHsKPiArCWNhc2UgMDoKPiArCQlyZXR1cm4gUk9DS0NISVBfTU1EX01JSTsK PiArCWNhc2UgMToKPiArCQlyZXR1cm4gUk9DS0NISVBfTU1EX01JSTE7Cj4gKwljYXNlIDI6Cj4g KwkJcmV0dXJuIFJPQ0tDSElQX01NRF9NSUkyOwo+ICsJY2FzZSAzOgo+ICsJCXJldHVybiBST0NL Q0hJUF9NTURfTUlJMzsKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwl9Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgeHBjc19ya19tZGlvX3dyaXRlX3JlbWFwcGluZyhpbnQgYWRk ciwgaW50IGRldiwgaW50IHJlZykKPiArewo+ICsJc3dpdGNoIChkZXYpIHsKPiArCWNhc2UgTURJ T19NTURfUE1BUE1EOgo+ICsJCXJldHVybiBST0NLQ0hJUF9NTURfUE1BUE1EOwo+ICsJY2FzZSBN RElPX01NRF9WRU5EMjoKPiArCQlicmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIC1FTlhJ TzsKPiArCX0KPiArCj4gKwkvKiBXcml0YWJsZSBvbmx5IG9uIE1JSSAqLwo+ICsJc3dpdGNoIChy ZWcpIHsKPiArCWNhc2UgRFdfVlJfTUlJX0FOX0NUUkw6Cj4gKwljYXNlIERXX1ZSX01JSV9BTl9J TlRSX1NUUzoKPiArCWNhc2UgRFdfVlJfTUlJX0VFRV9NQ1RSTDA6Cj4gKwljYXNlIERXX1ZSX01J SV9FRUVfTUNUUkwxOgo+ICsJY2FzZSBEV19WUl9NSUlfRElHX0NUUkwyOgo+ICsJCXJldHVybiBS T0NLQ0hJUF9NTURfTUlJOwo+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 aWYgKGRldiA8IDApCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJcmV0dXJuIHhwY3Nfcmtfd3JpdGVf cmVnKHB4cGNzLCBkZXYsIHJlZywgdmFsKTsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBkd194 cGNzX3JrICp4cGNzX3JrX2NyZWF0ZV9kYXRhKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp Cj4gK3sKPiArCXN0cnVjdCBkd194cGNzX3JrICpweHBjczsKPiArCj4gKwlweHBjcyA9IGRldm1f a3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKnB4cGNzKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAo IXB4cGNzKQo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICsKPiArCXB4cGNzLT5wZGV2 ID0gcGRldjsKPiArCj4gKwlkZXZfc2V0X2RydmRhdGEoJnBkZXYtPmRldiwgcHhwY3MpOwo+ICsK PiArCXJldHVybiBweHBjczsKPiArfQo+ICsKPiArc3RhdGljIGludCB4cGNzX3JrX3NlcmRlc19w aHlfaW5pdChzdHJ1Y3QgZHdfeHBjc19yayAqcHhwY3MpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2Ug KmRldiA9ICZweHBjcy0+cGRldi0+ZGV2Owo+ICsKPiArCXB4cGNzLT5zZXJkZXNfcGh5ID0gZGV2 bV9waHlfZ2V0KGRldiwgInNlcmRlcyIpOwo+ICsJaWYgKElTX0VSUihweHBjcy0+c2VyZGVzX3Bo eSkpCj4gKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHB4cGNzLT5zZXJkZXNf cGh5KSwKPiArCQkJCQkiRmFpbGVkIHRvIGdldCBTZXJEZXMgUEhZXG4iKTsKPiArCj4gKwlyZXR1 cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgeHBjc19ya19zZXJkZXNfcGh5X3Bvd2Vyb2Zm KHZvaWQgKmRhdGEpCj4gK3sKPiArCXN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRhdGE7Cj4g KwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcHhwY3MtPnBkZXYtPmRldjsKPiArCj4gKwlwaHlfcG93 ZXJfb2ZmKHB4cGNzLT5zZXJkZXNfcGh5KTsKPiArCXBoeV9leGl0KHB4cGNzLT5zZXJkZXNfcGh5 KTsKPiArCj4gKwlkZXZfcG1fZ2VucGRfcnBtX2Fsd2F5c19vbihkZXYsIGZhbHNlKTsKPiArfQo+ ICsKPiArc3RhdGljIGludCB4cGNzX3JrX3NlcmRlc19waHlfcG93ZXJvbihzdHJ1Y3QgZHdfeHBj c19yayAqcHhwY3MpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZweHBjcy0+cGRldi0+ ZGV2Owo+ICsJaW50IHJldDsKPiArCj4gKwkvKgo+ICsJICogVGhlIHBvd2VyIGRvbWFpbiBpcyBy ZXF1aXJlZCBhbmQgbXVzdCBiZSBlbmFibGVkLCB3aGljaCBhbGxvd3MgdXMgdG8KPiArCSAqIGR5 bmFtaWNhbGx5IHR1cm4gdGhlIENTUiBjbG9jayBvbi9vZmYgdXNpbmcgUE0gd2hpbGUga2VlcGlu ZyB0aGUgUENTCj4gKwkgKiBwb3dlcmVkIG9uLgo+ICsJICovCj4gKwlyZXQgPSBkZXZfcG1fZ2Vu cGRfcnBtX2Fsd2F5c19vbihkZXYsIHRydWUpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIo ZGV2LCAiRmFpbGVkIHRvIHBvd2VyIG9uIHBvd2VyLWRvbWFpbnNcbiIpOwo+ICsJCXJldHVybiBy ZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gcGh5X2luaXQocHhwY3MtPnNlcmRlc19waHkpOwo+ICsJ aWYgKHJldCkgewo+ICsJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGluaXQgU2VyRGVzIFBIWVxu Iik7Cj4gKwkJZ290byBwbV9kb21haW47Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gcGh5X3Bvd2VyX29u KHB4cGNzLT5zZXJkZXNfcGh5KTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKGRldiwgIkZh aWxlZCB0byBwb3dlciBvbiBTZXJEZXMgUEhZXG4iKTsKPiArCQlnb3RvIHNlcmRlc19waHk7Cj4g Kwl9Cj4gKwo+ICsJcmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgeHBjc19ya19z ZXJkZXNfcGh5X3Bvd2Vyb2ZmLCBweHBjcyk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2X2Vycihk ZXYsICJGYWlsZWQgdG8gcmVnaXN0ZXIgZGV2bSBmb3IgU2VyRGVzIFBIWTogJWRcbiIsIHJldCk7 Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK3NlcmRlc19w aHk6Cj4gKwlwaHlfZXhpdChweHBjcy0+c2VyZGVzX3BoeSk7Cj4gK3BtX2RvbWFpbjoKPiArCWRl dl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgZmFsc2UpOwo+ICsJcmV0dXJuIHJldDsKPiAr fQo+ICsKPiArc3RhdGljIGludCB4cGNzX3JrX2luaXRfcmVzKHN0cnVjdCBkd194cGNzX3JrICpw eHBjcykKPiArewo+ICsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHB4cGNzLT5wZGV2 Owo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKPiArCXN0cnVjdCByZXNvdXJj ZSAqcmVzOwo+ICsKPiArCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09V UkNFX01FTSwgMCk7Cj4gKwlpZiAoIXJlcykgewo+ICsJCWRldl9lcnIoZGV2LCAiTm8gcmVnLXNw YWNlIGZvdW5kXG4iKTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwlpZiAocmVz b3VyY2Vfc2l6ZShyZXMpIDwgU1pfMk0pIHsKPiArCQlkZXZfZXJyKGRldiwgIkludmFsaWQgcmVn LXNwYWNlIHNpemVcbiIpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXB4cGNz LT5yZWdfYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJlcyk7Cj4gKwlpZiAoSVNf RVJSKHB4cGNzLT5yZWdfYmFzZSkpIHsKPiArCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBtYXAg cmVnLXNwYWNlXG4iKTsKPiArCQlyZXR1cm4gUFRSX0VSUihweHBjcy0+cmVnX2Jhc2UpOwo+ICsJ fQo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB4cGNzX3JrX2V4aXRf Y2xrKHZvaWQgKmRhdGEpCj4gK3sKPiArCXN0cnVjdCBkd194cGNzX3JrICpweHBjcyA9IGRhdGE7 Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcHhwY3MtPnBkZXYtPmRldjsKPiArCj4gKwlwbV9y dW50aW1lX2ZvcmNlX3N1c3BlbmQoZGV2KTsKPiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShweHBj cy0+ZWVlX2Nsayk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgeHBjc19ya19pbml0X2NsayhzdHJ1 Y3QgZHdfeHBjc19yayAqcHhwY3MpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZweHBj cy0+cGRldi0+ZGV2Owo+ICsJaW50IHJldDsKPiArCj4gKwlweHBjcy0+Y3NyX2NsayA9IGRldm1f Y2xrX2dldChkZXYsICJjc3IiKTsKPiArCWlmIChJU19FUlIocHhwY3MtPmNzcl9jbGspKQo+ICsJ CXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihweHBjcy0+Y3NyX2NsayksCj4gKwkJ CQkJICJGYWlsZWQgdG8gZ2V0IENTUiBjbG9ja1xuIik7Cj4gKwo+ICsJcHhwY3MtPmVlZV9jbGsg PSBkZXZtX2Nsa19nZXQoZGV2LCAiZWVlIik7Cj4gKwlpZiAoSVNfRVJSKHB4cGNzLT5lZWVfY2xr KSkKPiArCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHhwY3MtPmVlZV9jbGsp LAo+ICsJCQkJCSAiRmFpbGVkIHRvIGdldCBFRUUgY2xvY2tcbiIpOwo+ICsKPiArCXJldCA9IGNs a19wcmVwYXJlX2VuYWJsZShweHBjcy0+ZWVlX2Nsayk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2 X2VycihkZXYsICJGYWlsZWQgdG8gZW5hYmxlIEVFRSBjbG9ja1xuIik7Cj4gKwkJcmV0dXJuIHJl dDsKPiArCX0KPiArCj4gKwkvKgo+ICsJICogQ29tcHV0ZSB0aGUgbXVsdGlwbGllciBmb3IgdGhl IEVFRSBjbG9jayBzbyB0aGF0Cj4gKwkgKiBjbGtfZWVlX3BlcmlvZCAqIChtdWx0X2ZhY3QgKyAx KSBmYWxscyB3aXRoaW4gODAuLjEyMCBucy4KPiArCSAqCj4gKwkgKiBPbiBSSzM1NjgsIGNsa194 cGNzX2VlZSBpcyBtdXhlZCBiZXR3ZWVuIGdwbGwyMDAgKDIwMCBNSHosIDUgbnMpCj4gKwkgKiBh bmQgY3BsbDEyNSAoMTI1IE1IeiwgOCBucyksIHNlbGVjdGVkIGJ5IENSVV9DTEtTRUxfQ09OMjkg Yml0IDEzLgo+ICsJICogVGhlIHJlc2V0IHZhbHVlIGlzIDAgKDIwMCBNSHopLCBidXQgZGVyaXZl IHRoZSB2YWx1ZSBhdCBydW50aW1lIHRvCj4gKwkgKiBzdGF5IGNvcnJlY3QgaWYgdGhlIG11eCBp cyBjaGFuZ2VkIGJ5IGEgYm9hcmQuCj4gKwkgKi8KPiArCXB4cGNzLT5lZWVfbXVsdF9mYWN0ID0g RElWX1JPVU5EX0NMT1NFU1QoMTAwICogY2xrX2dldF9yYXRlKHB4cGNzLT5lZWVfY2xrKSwKPiAr CQkJCQkJIDEwMDAwMDAwMDBVTCkgLSAxOwo+ICsKPiArCXBtX3J1bnRpbWVfc2V0X3N1c3BlbmRl ZChkZXYpOwo+ICsJcG1fcnVudGltZV9lbmFibGUoZGV2KTsKPiArCj4gKwlyZXQgPSBkZXZtX2Fk ZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCB4cGNzX3JrX2V4aXRfY2xrLCBweHBjcyk7Cj4gKwlpZiAo cmV0KSB7Cj4gKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gcmVnaXN0ZXIgZGV2bSBmb3IgRUVF IGNsb2NrOiAlZFxuIiwgcmV0KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCXJldHVy biAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHhwY3NfcmtfaW5pdF9idXMoc3RydWN0IGR3X3hw Y3NfcmsgKnB4cGNzKQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcHhwY3MtPnBkZXYt PmRldjsKPiArCXN0YXRpYyBhdG9taWNfdCBpZCA9IEFUT01JQ19JTklUKC0xKTsKPiArCXN0cnVj dCBtaWlfYnVzICpidXM7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWJ1cyA9IGRldm1fbWRpb2J1c19h bGxvY19zaXplKGRldiwgMCk7Cj4gKwlpZiAoIWJ1cykKPiArCQlyZXR1cm4gLUVOT01FTTsKPiAr Cj4gKwlidXMtPm5hbWUgPSAiUm9ja2NoaXAgRFcgWFBDUyBNQ0kvQVBCMyI7Cj4gKwlidXMtPnJl YWQgPSB4cGNzX3JrX3JlYWRfYzIyOwo+ICsJYnVzLT53cml0ZSA9IHhwY3Nfcmtfd3JpdGVfYzIy Owo+ICsJYnVzLT5yZWFkX2M0NSA9IHhwY3NfcmtfcmVhZF9jNDU7Cj4gKwlidXMtPndyaXRlX2M0 NSA9IHhwY3Nfcmtfd3JpdGVfYzQ1Owo+ICsJYnVzLT5waHlfbWFzayA9IH4wOwo+ICsJYnVzLT5w YXJlbnQgPSBkZXY7Cj4gKwlidXMtPnByaXYgPSBweHBjczsKPiArCj4gKwlzbnByaW50ZihidXMt PmlkLCBNSUlfQlVTX0lEX1NJWkUsCj4gKwkJICJyb2NrY2hpcF9kd3hwY3MtJXgiLCBhdG9taWNf aW5jX3JldHVybigmaWQpKTsKPiArCj4gKwkvKgo+ICsJICogTURJTy1idXMgaGVyZSBzZXJ2ZXMg YXMganVzdCBhIGJhY2stZW5kIGVuZ2luZSBhYnN0cmFjdGluZyBvdXQKPiArCSAqIHRoZSBNRElP IGFuZCBNQ0kvQVBCMyBJTyBpbnRlcmZhY2VzIHV0aWxpemVkIGZvciB0aGUgUm9ja2NoaXAgRFdY UENTIENTUnMKPiArCSAqIGFjY2Vzcy4KPiArCSAqLwo+ICsJcmV0ID0gZGV2bV9tZGlvYnVzX3Jl Z2lzdGVyKGRldiwgYnVzKTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKGRldiwgIkZhaWxl ZCB0byBjcmVhdGUgTURJTyBidXNcbiIpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJ cHhwY3MtPmJ1cyA9IGJ1czsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHhw Y3NfcmtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICsJc3RydWN0 IGR3X3hwY3NfcmsgKnB4cGNzOwo+ICsJaW50IHJldDsKPiArCj4gKwlweHBjcyA9IHhwY3Nfcmtf Y3JlYXRlX2RhdGEocGRldik7Cj4gKwlpZiAoSVNfRVJSKHB4cGNzKSkKPiArCQlyZXR1cm4gUFRS X0VSUihweHBjcyk7Cj4gKwo+ICsJLyoKPiArCSAqIFRoZSBYUENTIG1heSBiZSBhdHRhY2hlZCB0 byBhIHBvd2VyIGRvbWFpbiAoZS5nLiBQRF9QSVBFKS4gVGhlIGRvbWFpbgo+ICsJICogbXVzdCBi ZSBwb3dlcmVkIG9uIGJlZm9yZSBhbnkgcmVnaXN0ZXIgYWNjZXNzLCBvdGhlcndpc2UgdGhlIFNv QyB3aWxsCj4gKwkgKiB0cmlnZ2VyIGEgc3luY2hyb25vdXMgZXh0ZXJuYWwgYWJvcnQgKFNFcnJv cikuCj4gKwkgKgo+ICsJICogQWNjZXNzaW5nIHRoZSBYUENTIHJlZ2lzdGVycyBhbHNvIHJlcXVp cmVzIGEgVFggY2xvY2sgZnJvbSB0aGUgU2VyRGVzLAo+ICsJICogd2hpY2ggaXMgbmVlZGVkIGZv ciB0aGUgc29mdCByZXNldC4KPiArCSAqLwo+ICsJcmV0ID0geHBjc19ya19zZXJkZXNfcGh5X2lu aXQocHhwY3MpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXJldCA9IHhw Y3Nfcmtfc2VyZGVzX3BoeV9wb3dlcm9uKHB4cGNzKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJu IHJldDsKPiArCj4gKwlyZXQgPSB4cGNzX3JrX2luaXRfcmVzKHB4cGNzKTsKPiArCWlmIChyZXQp Cj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXQgPSB4cGNzX3JrX2luaXRfY2xrKHB4cGNzKTsK PiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXQgPSB4cGNzX3JrX2luaXRf YnVzKHB4cGNzKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXR1cm4g MDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgeHBjc19ya19v Zl9pZHNbXSA9IHsKPiArCXsgLmNvbXBhdGlibGUgPSAicm9ja2NoaXAscmszNTY4LXhwY3MiIH0s Cj4gKwl7IC8qIHNlbnRpbmVsICovIH0sCj4gK307Cj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2Ys IHhwY3Nfcmtfb2ZfaWRzKTsKPiArCj4gK3N0cnVjdCBkd194cGNzICp4cGNzX3JrX2NyZWF0ZShz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCj4gK3sKPiArCXN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKnBjc19ucDsK PiArCXN0cnVjdCBkd194cGNzX3JrICpweHBjczsKPiArCXN0cnVjdCBkd194cGNzICp4cGNzOwo+ ICsJdTMyIHBvcnQ7Cj4gKwo+ICsJaWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKG5wKSkKPiAr CQlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsKPiArCj4gKwlpZiAob2ZfcHJvcGVydHlfcmVhZF91 MzIobnAsICJyZWciLCAmcG9ydCkpCj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gKwo+ ICsJaWYgKCF4cGNzX3JrX21kaW9fYWRkcl92YWxpZGF0ZSgoaW50KXBvcnQpKQo+ICsJCXJldHVy biBFUlJfUFRSKC1FSU5WQUwpOwo+ICsKPiArCS8qIFRoZSBYUENTIHBkZXYgaXMgYXR0YWNoZWQg dG8gdGhlIHBhcmVudCBub2RlICovCj4gKwlwY3NfbnAgPSBvZl9nZXRfcGFyZW50KG5wKTsKPiAr CWlmICghcGNzX25wKQo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwo+ICsKPiArCWlmICgh b2ZfZGV2aWNlX2lzX2F2YWlsYWJsZShwY3NfbnApKSB7Cj4gKwkJb2Zfbm9kZV9wdXQocGNzX25w KTsKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsKPiArCX0KPiArCj4gKwlpZiAoIW9mX21h dGNoX25vZGUoeHBjc19ya19vZl9pZHMsIHBjc19ucCkpIHsKPiArCQlvZl9ub2RlX3B1dChwY3Nf bnApOwo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ICsJfQo+ICsKPiArCXBkZXYgPSBv Zl9maW5kX2RldmljZV9ieV9ub2RlKHBjc19ucCk7Cj4gKwlvZl9ub2RlX3B1dChwY3NfbnApOwo+ ICsJaWYgKCFwZGV2KQo+ICsJCXJldHVybiBFUlJfUFRSKC1FUFJPQkVfREVGRVIpOwo+ICsKPiAr CWRldmljZV9sb2NrKCZwZGV2LT5kZXYpOwoKW1NldmVyaXR5OiBNZWRpdW1dCnhwY3NfcmtfY3Jl YXRlKCkgaXMgY2FsbGVkIGZyb20gYSBNQUMgZHJpdmVyJ3MgcHJvYmUgcGF0aCwgd2hpY2ggaXMK YWxyZWFkeSBydW5uaW5nIHVuZGVyIGRldmljZV9sb2NrKCkgb2YgdGhlIE1BQyBkZXZpY2UgdGFr ZW4gYnkKcmVhbGx5X3Byb2JlKCkuICBUYWtpbmcgZGV2aWNlX2xvY2soJnBkZXYtPmRldikgaGVy ZSBuZXN0cyBhIHNlY29uZApzdHJ1Y3QgZGV2aWNlIG11dGV4LCBhbmQgc2luY2UgYWxsIGRldmlj ZSBtdXRleGVzIHNoYXJlIG9uZSBsb2NrZGVwCmNsYXNzIHVubGVzcyBhbm5vdGF0ZWQsIGxvY2tk ZXAgd2lsbCByZXBvcnQgInBvc3NpYmxlIHJlY3Vyc2l2ZQpsb2NraW5nIGRldGVjdGVkIiBvbiB0 aGUgZmlyc3QgcHJvYmUuICBUaGF0IGlzIGEgc3BsYXQgaW4gdGhlIGxvZ3Mgb24KYW55IENPTkZJ R19QUk9WRV9MT0NLSU5HIGJ1aWxkLCBhbmQgYSBwYW5pYyB3aXRoIHBhbmljX29uX3dhcm4gc2V0 LgoKSG9sZGluZyB0aGUgWFBDUyBkZXZpY2UncyBsb2NrIGFjcm9zcyB4cGNzX2NyZWF0ZV9tZGlv ZGV2KCkgYW5kCmRldmljZV9saW5rX2FkZCgpIGlzIGFsc28gdW51c3VhbCAtIGRldmljZV9saW5r X2FkZCgpIGRvZXMgaXRzIG93bgpsb2NraW5nIGFuZCB0aGUgZHJpdmVyIGNvcmUgbm9ybWFsbHkg ZXhwZWN0cyBzdXBwbGllciBkZXZpY2UgbG9ja3Mgbm90CnRvIGJlIGhlbGQgYnkgY29uc3VtZXJz LgoKV2hhdCByYWNlIGlzIHRoZSBsb2NrIGFjdHVhbGx5IHByb3RlY3RpbmcgYWdhaW5zdD8gIHB4 cGNzIGFuZApweHBjcy0+YnVzIGFyZSBwdWJsaXNoZWQgYnkgeHBjc19ya19wcm9iZSgpIHZpYSBk ZXZfc2V0X2RydmRhdGEoKSBhbmQKeHBjc19ya19pbml0X2J1cygpLCBhbmQgdGhlICFweHBjcyB8 fCAhcHhwY3MtPmJ1cyBjYXNlIGFscmVhZHkgcmV0dXJucwotRVBST0JFX0RFRkVSLCBzbyB0aGUg Y29uc3VtZXIgcmV0cmllcyBsYXRlcjsgdGhlIGRldmljZSBsaW5rIHRoZW4Ka2VlcHMgdGhlIHN1 cHBsaWVyIGFyb3VuZC4gIENhbiB0aGUgZGV2aWNlX2xvY2soKS9kZXZpY2VfdW5sb2NrKCkgcGFp cnMKc2ltcGx5IGJlIGRyb3BwZWQsIG9yIGlzIHNvbWV0aGluZyBlbHNlIG5lZWRlZCBoZXJlIChl LmcuIGNoZWNraW5nIHRoYXQKdGhlIHN1cHBsaWVyIGlzIGJvdW5kKSB0byBjbG9zZSB0aGUgd2lu ZG93IHlvdSBoYWQgaW4gbWluZD8KCj4gKwlweHBjcyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBk ZXYpOwo+ICsJaWYgKCFweHBjcyB8fCAhcHhwY3MtPmJ1cykgewo+ICsJCWRldmljZV91bmxvY2so JnBkZXYtPmRldik7Cj4gKwkJcHV0X2RldmljZSgmcGRldi0+ZGV2KTsKPiArCQlyZXR1cm4gRVJS X1BUUigtRVBST0JFX0RFRkVSKTsKPiArCX0KPiArCj4gKwl4cGNzID0geHBjc19jcmVhdGVfbWRp b2RldihweHBjcy0+YnVzLCAoaW50KXBvcnQpOwo+ICsJaWYgKElTX0VSUih4cGNzKSkgewo+ICsJ CWRldmljZV91bmxvY2soJnBkZXYtPmRldik7Cj4gKwkJcHV0X2RldmljZSgmcGRldi0+ZGV2KTsK PiArCQlyZXR1cm4geHBjczsKPiArCX0KPiArCj4gKwlpZiAoIWRldmljZV9saW5rX2FkZChkZXYs ICZwZGV2LT5kZXYsIERMX0ZMQUdfQVVUT1JFTU9WRV9DT05TVU1FUikpIHsKPiArCQl4cGNzX2Rl c3Ryb3koeHBjcyk7Cj4gKwkJZGV2aWNlX3VubG9jaygmcGRldi0+ZGV2KTsKPiArCQlwdXRfZGV2 aWNlKCZwZGV2LT5kZXYpOwo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICsJfQo+ICsK PiArCXhwY3NfY29uZmlnX2VlZV9tdWx0X2ZhY3QoeHBjcywgcHhwY3MtPmVlZV9tdWx0X2ZhY3Qp Owo+ICsJZGV2aWNlX3VubG9jaygmcGRldi0+ZGV2KTsKPiArCXB1dF9kZXZpY2UoJnBkZXYtPmRl dik7Cj4gKwlyZXR1cm4geHBjczsKPiArfQo+ICtFWFBPUlRfU1lNQk9MX0dQTCh4cGNzX3JrX2Ny ZWF0ZSk7Cj4gKwo+ICtzdGF0aWMgaW50IHhwY3NfcmtfcG1fcnVudGltZV9zdXNwZW5kKHN0cnVj dCBkZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IGR3X3hwY3NfcmsgKnB4cGNzID0gZGV2X2dl dF9kcnZkYXRhKGRldik7Cj4gKwo+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHB4cGNzLT5jc3Jf Y2xrKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCB4cGNzX3JrX3Bt X3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IGR3X3hw Y3NfcmsgKnB4cGNzID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwo+ICsJcmV0dXJuIGNsa19w cmVwYXJlX2VuYWJsZShweHBjcy0+Y3NyX2Nsayk7Cj4gK30KPiArCj4gK3N0YXRpYyBERUZJTkVf UlVOVElNRV9ERVZfUE1fT1BTKHhwY3NfcmtfcG1fb3BzLAo+ICsJCQkgICB4cGNzX3JrX3BtX3J1 bnRpbWVfc3VzcGVuZCwKPiArCQkJICAgeHBjc19ya19wbV9ydW50aW1lX3Jlc3VtZSwKPiArCQkJ ICAgTlVMTCk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB4cGNzX3JrX2Ry aXZlciA9IHsKPiArCS5wcm9iZSA9IHhwY3NfcmtfcHJvYmUsCj4gKwkuZHJpdmVyID0gewo+ICsJ CS5uYW1lID0gInJrX3hwY3MtZHd4cGNzIiwKPiArCQkucG0gPSBwbV9wdHIoJnhwY3NfcmtfcG1f b3BzKSwKPiArCQkub2ZfbWF0Y2hfdGFibGUgPSB4cGNzX3JrX29mX2lkcywKPiArCX0sCj4gK307 Cj4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoeHBjc19ya19kcml2ZXIpOwo+ICsKPiArTU9EVUxF X0RFU0NSSVBUSU9OKCJSb2NrY2hpcCBYUENTIHBsYXRmb3JtIGRldmljZSBkcml2ZXIiKTsKPiAr TU9EVUxFX0FVVEhPUigiQ29pYSBQcmFudCA8Y29pYXByYW50QGdtYWlsLmNvbT4iKTsKPiArTU9E VUxFX0xJQ0VOU0UoIkdQTCIpOwoKW1NldmVyaXR5OiBIaWdoXQpUaGlzIGJsb2NrIGluIHhwY3Nf cmtfbWRpb193cml0ZV9yZW1hcHBpbmcoKSBpZ25vcmVzIGFkZHIgZW50aXJlbHk6CmFueSB3cml0 ZSB0byBEV19WUl9NSUlfQU5fQ1RSTCwgRFdfVlJfTUlJX0FOX0lOVFJfU1RTLApEV19WUl9NSUlf RUVFX01DVFJMMCwgRFdfVlJfTUlJX0VFRV9NQ1RSTDEgb3IgRFdfVlJfTUlJX0RJR19DVFJMMiBp cwpyb3V0ZWQgdG8gUk9DS0NISVBfTU1EX01JSSwgd2hpY2ggcGVyIHRoZSBjb21taXQgbWVzc2Fn ZSBpcyBwb3J0IDAncwpNTUQgKDcpLCByZWdhcmRsZXNzIG9mIHdoaWNoIG9mIHRoZSBmb3VyIHBv cnRzIHRoZSBNRElPIGFkZHJlc3MKc2VsZWN0cy4KClNvIHdoZW4gdGhlIGNvcmUgY29uZmlndXJl cyBhIFBDUyBpbnN0YW5jZSBjcmVhdGVkIHdpdGggYWRkciAxLCAyIG9yIDMKLSB4cGNzX2NvbmZp Z19hbmVnX2MzN19zZ21paSgpIHdyaXRpbmcgRFdfVlJfTUlJX0FOX0NUUkwgYW5kCkRXX1ZSX01J SV9ESUdfQ1RSTDIsIHhwY3NfY29uZmlnX2VlZSgpIHdyaXRpbmcgRFdfVlJfTUlJX0VFRV9NQ1RS TDAvMSwKYW5kIHRoZSBpbnRlcnJ1cHQtc3RhdHVzIGNsZWFyIG9uIERXX1ZSX01JSV9BTl9JTlRS X1NUUyAtIHRoZSB3cml0ZQpsYW5kcyBvbiBwb3J0IDAgaW5zdGVhZC4gIFRoYXQgaGFzIHR3byBl ZmZlY3RzOiB0aGUgaW50ZW5kZWQgcG9ydCBpcwpuZXZlciBjb25maWd1cmVkIChzbyBpdHMgbGlu ayBzdGF5cyBicm9rZW4pLCBhbmQgcG9ydCAwJ3MKYXV0by1uZWdvdGlhdGlvbi9FRUUgc3RhdGUg aXMgc2lsZW50bHkgY2xvYmJlcmVkIGJ5IGFuIHVucmVsYXRlZAppbnRlcmZhY2UsIGluY2x1ZGlu ZyBpdHMgcGVuZGluZyBBTiBpbnRlcnJ1cHQgc3RhdHVzLgoKVGhlIHJlYWQgcGF0aCBpcyBub3Qg c3ltbWV0cmljIGVpdGhlcjogeHBjc19ya19tZGlvX3JlYWRfcmVtYXBwaW5nKCkKcmVtYXBzIHBl ciBhZGRyIHdpdGggdGhlIGNvbW1lbnQgInJlYWQgcmVtYXBwaW5nIHRvIE1JSSBpcyBwZXJmb3Jt ZWQgYnkKSFciLCBzbyBhIHdyaXRlIHRvIHRoZXNlIHJlZ2lzdGVycyBvbiBwb3J0IDIgZm9sbG93 ZWQgYnkgYSByZWFkIGJhY2sKd291bGQgbm90IHJldHVybiB3aGF0IHdhcyB3cml0dGVuLiAgSXMg dGhhdCBhc3ltbWV0cnkgZGVsaWJlcmF0ZT8KCkRvZXMgdGhlIFRSTSBzYXkgdGhlc2UgdmVuZG9y IHJlZ2lzdGVycyBwaHlzaWNhbGx5IGV4aXN0IG9ubHkgaW4gTU1EIDcKYW5kIGFyZSBzaGFyZWQg YnkgYWxsIGZvdXIgTUlJIHBvcnRzPyAgSWYgc28sIHJlZGlyZWN0aW5nIHdyaXRlcwpzaWxlbnRs eSBzdGlsbCBsZWF2ZXMgcGVyLXBvcnQgY29uZmlndXJhdGlvbiBpbXBvc3NpYmxlLCBhbmQgdGhl IGRyaXZlcgpwcm9iYWJseSBuZWVkcyB0byBzYXkgc28gZXhwbGljaXRseSAocmVqZWN0IHRoZSBh Y2Nlc3MsIG9yIGRvY3VtZW50IGhvdwp0aGUgc2hhcmVkIGJsb2NrIGlzIG1lYW50IHRvIGJlIHBy b2dyYW1tZWQpIHJhdGhlciB0aGFuIGFsaWFzaW5nIHBvcnRzCjEuLjMgb250byBwb3J0IDAuICBJ ZiBpbnN0ZWFkIGVhY2ggcG9ydCBoYXMgaXRzIG93biBjb3B5IG9mIHRoZXNlCnJlZ2lzdGVycywg dGhpcyBzd2l0Y2ggc2hvdWxkIGJlIGRyb3BwZWQgc28gdGhlIGFkZHItYmFzZWQgbWFwcGluZwpi ZWxvdyBhcHBsaWVzLiAgV2hpY2ggaXMgaXQ/CgotLSAKU2FzaGlrbyBBSSByZXZpZXcgwrcgaHR0 cHM6Ly9uZXRkZXYtYWkuYm90cy5saW51eC5kZXYvc2FzaGlrby8jL3BhdGNoc2V0LzIwMjYwOTEz MTg1ODQ5LjkwNzQ3OS0xLWNvaWFwcmFudCU0MGdtYWlsLmNvbQoKLS0gCmxpbnV4LXBoeSBtYWls aW5nIGxpc3QKbGludXgtcGh5QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cHM6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcGh5Cg==