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 694A0D29C35 for ; Mon, 19 Jan 2026 14:42:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Type: Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date :Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=AsvQ2zJ7s3smC+R/QqXVjJF4VqszKAjpYjPROPGYE4Q=; b=Qt9wvej8AS88sCQXMFigp3UqK5 gdZIunY0HZva9vM652rJIZFtYxn3Fpc5tVyt/hta3ZhdlJ88PEPNtkIWb/B65V4iQL6xE4Dam+Uxp JuHEglIEu8Xs9Z2lgHWGk6XuafO9ftrkJoBNc7/5SWdqELKYerP2L0tSpWTri2ZVEmkIyd+DV4EoM 6w6ePkvvRhEi4rPTscJktLZg/iTqRvm/x6ETfmUq/Vu+F1N8DXF3RGLMbCpc8Lx/udXj7j/R7ggEQ a44mJ0oyFT9dVgrMOVrbIl3y8Yr6vwLPeof2s58teaqHrginjVYaQH4kl6gy3vhzDQ1UD8RJp4zXA LjjnAC4w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vhqSl-00000002Hgr-3GYm; Mon, 19 Jan 2026 14:42:39 +0000 Received: from gloria.sntech.de ([185.11.138.130]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vhqSi-00000002HgI-3cXi; Mon, 19 Jan 2026 14:42:38 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sntech.de; s=gloria202408; h=Content-Type:Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Reply-To; bh=AsvQ2zJ7s3smC+R/QqXVjJF4VqszKAjpYjPROPGYE4Q=; b=cn1seQWzl/iLfmmO6+CMpmb350 VHnVMD9ksyl1/5DHJeogTzxTX6H1plvLzU996/2yup/mq03j0vmGQU4RfV0xCHVKPCK0RWCaY8sXL KN1n4nHe9rDKaruXEaFZes4OZruJTdi+AkXkTGBPNcIwWNag/jOQ9mnnDK8Y0wLK+767QKAhD2meb Weeww8Yh/1zIZKULoE6GPb4hoUqqLHyf2q9Digx6Mo1y7C7G4Iw2EdzwraSAOKeWIRfXkiW8ldTBr unRZ7xWhcF1WvI+FmEdegEA7uIc3N3aluN/76kK/C7cCePseM0SuwfgaTspHpOZiIbkjZlJ6IK0+S tw2Y4G1w==; Received: from i53875a9c.versanet.de ([83.135.90.156] helo=diego.localnet) by gloria.sntech.de with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vhqSW-0036qc-2O; Mon, 19 Jan 2026 15:42:24 +0100 From: Heiko =?UTF-8?B?U3TDvGJuZXI=?= To: Quentin Schulz , Alexey Charkov Cc: Rob Herring , Krzysztof Kozlowski , Conor Dooley , "Martin K. Petersen" , Shawn Lin , Manivannan Sadhasivam , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: Re: [PATCH] arm64: dts: rockchip: Explicitly request UFS reset pin on RK3576 Date: Mon, 19 Jan 2026 15:42:23 +0100 Message-ID: <8960787.MhkbZ0Pkbq@diego> In-Reply-To: References: <20260119-ufs-rst-v1-1-c8e96493948c@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260119_064237_136253_02A7732A X-CRM114-Status: GOOD ( 50.09 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Am Montag, 19. Januar 2026, 15:05:16 Mitteleurop=C3=A4ische Normalzeit schr= ieb Alexey Charkov: > On Mon, Jan 19, 2026 at 5:58=E2=80=AFPM Quentin Schulz wrote: > > > > Hi Alexey, > > > > On 1/19/26 2:43 PM, Alexey Charkov wrote: > > > Hi Quentin, > > > > > > On Mon, Jan 19, 2026 at 3:08=E2=80=AFPM Quentin Schulz wrote: > > >> > > >> Hi Alexey, > > >> > > >> On 1/19/26 10:22 AM, Alexey Charkov wrote: > > >>> Rockchip RK3576 UFS controller uses a dedicated pin to reset the co= nnected > > >>> UFS device, which can operate either in a hardware controlled mode = or as a > > >>> GPIO pin. > > >>> > > >>> Power-on default is GPIO mode, but the boot ROM reconfigures it to a > > >>> hardware controlled mode if it uses UFS to load the next boot stage. > > >>> > > >>> Given that existing bindings (and rk3576.dtsi) expect a GPIO-contro= lled > > >>> device reset, request the required pin config explicitly. > > >>> > > >>> This doesn't appear to affect Linux, but it does affect U-boot: > > >>> > > >>> Before: > > >>> =3D> md.l 0x2604b398 > > >>> 2604b398: 00000011 00000000 00000000 00000000 ................ > > >>> < ... snip ... > > > >>> =3D> ufs init > > >>> ufshcd-rockchip ufshc@2a2d0000: [RX, TX]: gear=3D[3, 3], lane[2, 2]= , pwr[FASTAUTO_MODE, FASTAUTO_MODE], rate =3D 2 > > >>> =3D> md.l 0x2604b398 > > >>> 2604b398: 00000011 00000000 00000000 00000000 ................ > > >>> > > >>> After: > > >>> =3D> md.l 0x2604b398 > > >>> 2604b398: 00000011 00000000 00000000 00000000 ................ > > >>> < ... snip ...> > > >>> =3D> ufs init > > >>> ufshcd-rockchip ufshc@2a2d0000: [RX, TX]: gear=3D[3, 3], lane[2, 2]= , pwr[FASTAUTO_MODE, FASTAUTO_MODE], rate =3D 2 > > >>> =3D> md.l 0x2604b398 > > >>> 2604b398: 00000010 00000000 00000000 00000000 ................ > > >>> > > >>> (0x2604b398 is the respective pin mux register, with its BIT0 drivi= ng the > > >>> mode of UFS_RST: unset =3D GPIO, set =3D hardware controlled UFS_RS= T) > > >>> > > >>> This helps ensure that GPIO-driven device reset actually fires when= the > > >>> system requests it, not when whatever black box magic inside the UF= SHC > > >>> decides to reset the flash chip. > > >>> > > >>> Cc: stable@vger.kernel.org > > >>> Fixes: c75e5e010fef ("scsi: arm64: dts: rockchip: Add UFS support f= or RK3576 SoC") > > >>> Reported-by: Quentin Schulz > > >>> Signed-off-by: Alexey Charkov > > >>> --- > > >>> This has originally surfaced during the review of UFS patches for U= =2Dboot > > >>> at [1], where it was found that the UFS reset line is not requested= to be > > >>> configured as GPIO but used as such. This leads in some cases to th= e UFS > > >>> driver appearing to control device resets, while in fact it is the > > >>> internal controller logic that drives the reset line (perhaps in > > >>> unexpected ways). > > >>> > > >>> Thanks Quentin Schulz for spotting this issue. > > >>> > > >>> [1] https://lore.kernel.org/u-boot/259fc358-f72b-4a24-9a71-ad90f208= 1335@cherry.de/ > > >>> --- > > >>> arch/arm64/boot/dts/rockchip/rk3576-pinctrl.dtsi | 7 +++++++ > > >>> arch/arm64/boot/dts/rockchip/rk3576.dtsi | 2 +- > > >>> 2 files changed, 8 insertions(+), 1 deletion(-) > > >>> > > >>> diff --git a/arch/arm64/boot/dts/rockchip/rk3576-pinctrl.dtsi b/arc= h/arm64/boot/dts/rockchip/rk3576-pinctrl.dtsi > > >>> index 0b0851a7e4ea..20cfd3393a75 100644 > > >>> --- a/arch/arm64/boot/dts/rockchip/rk3576-pinctrl.dtsi > > >>> +++ b/arch/arm64/boot/dts/rockchip/rk3576-pinctrl.dtsi > > >>> @@ -5228,6 +5228,13 @@ ufs_rst: ufs-rst { > > >>> /* ufs_rstn */ > > >>> <4 RK_PD0 1 &pcfg_pull_none>; > > >>> }; > > >>> + > > >>> + /omit-if-no-ref/ > > >>> + ufs_rst_gpio: ufs-rst-gpio { > > >>> + rockchip,pins =3D > > >>> + /* ufs_rstn */ > > >>> + <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_non= e>; > > >> > > >> The SoC default is pull-down according to the TRM. Can you check ple= ase? > > >> For example, the Rock 4D doesn't seem to have a hardware pull-up or > > >> pull-down on the line and the UFS module only seems to have a deboun= cer > > >> (capacitor between the line and ground). So except if the chip itself > > >> has a PU/PD, this may be an issue? > > > > > > The SoC default is indeed pull-down (as stated both in the TRM and in > > > the reference schematic from RK3576 EVB1). Which I believe means that > > > the attached device should be held in a reset state until the driver > > > takes over the control of the GPIO line (which, in turn, is consistent > > > with the observed behavior when reset handling is not enabled in the > > > driver but the reset pin is in GPIO mode). > > > > > > Are you concerned that the chip might unintentionally go in or out of > > > reset between the moment the pinctrl subsystem claims the pin and the > > > moment the driver starts outputting a state it desires? This hasn't > > > > Exactly that. > > > > Imagine for some reason the driver EPROBE_DEFER, there can be a lot of > > time between the original pinconf/pinmux and the time the GPIO is > > actually driven. > > > > At the same time.. I guess it may not matter much if the UFS chip gets > > out of reset temporarily as (I assume) when the UFS controller probes > > properly, it'll do a full reset of the UFS chip via the reset GPIO. > > Don't know anything about UFS, so maybe there could be damage if the UFS > > chip gets out of reset if its supplies or IO lines are in an illegal st= ate? > > > > > caused any observable issues in my testing, but I guess we could > > > explicitly set it to &pcfg_pull_down for more predictable behavior in > > > line with what's printed on the schematic. > > > > > > > s/schematics/TRM/ > > > > I'll let Heiko decide but I would personally go for a PD to match the > > default state of the SoC according to the TRM. >=20 > Happy to make a v2 with an explicit pull-down. Will wait a bit for any > other potential feedback though. I'd side with Quentin here, having the pin firmly on one state, when no-one (board nor driver) is caring would be my preference. Especially as Quentin said, this is the hardware-default too. Heiko 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 0FEFFD29C33 for ; Mon, 19 Jan 2026 14:42:47 +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:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=8iexuKeB6gDVXND2OHEbHjrhtd6Uuoe3kmHWGvqQTHo=; b=3UKUcUA65lzQ8r UlWVuxqQ88/hMxP9z0ZBs7GuIUDFQU0hfklwJfV6LFv15nn4N6bvdjF9/EzLtIEj4+m101uY1n7ux afmq8g4xFrG6ynkEVLPF5I9bK4Jgjj3haM7TAld06y/o7hGtKhcZiUwcHPnw8XGjhBpcQL3xsrx2e AHnSXdyVbPNGoATlLAgk31ov4kw3kOmXQzBS1Q/dmG6jGUQuTf+BB1meshPXhxchH5H3AN1sRV6bk 8R6w3eI3NMy7AZ8OT5c8mEOIXzW/OXUF0tz+8XJOumZWgvoX3ZLYDY/TgDvI8l3H4NJOnjiPuo6Va ay5svT/SudPIl0ne2RBQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vhqSm-00000002Hh7-0Js6; Mon, 19 Jan 2026 14:42:40 +0000 Received: from gloria.sntech.de ([185.11.138.130]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vhqSi-00000002HgI-3cXi; Mon, 19 Jan 2026 14:42:38 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sntech.de; s=gloria202408; h=Content-Type:Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Reply-To; bh=AsvQ2zJ7s3smC+R/QqXVjJF4VqszKAjpYjPROPGYE4Q=; b=cn1seQWzl/iLfmmO6+CMpmb350 VHnVMD9ksyl1/5DHJeogTzxTX6H1plvLzU996/2yup/mq03j0vmGQU4RfV0xCHVKPCK0RWCaY8sXL KN1n4nHe9rDKaruXEaFZes4OZruJTdi+AkXkTGBPNcIwWNag/jOQ9mnnDK8Y0wLK+767QKAhD2meb Weeww8Yh/1zIZKULoE6GPb4hoUqqLHyf2q9Digx6Mo1y7C7G4Iw2EdzwraSAOKeWIRfXkiW8ldTBr unRZ7xWhcF1WvI+FmEdegEA7uIc3N3aluN/76kK/C7cCePseM0SuwfgaTspHpOZiIbkjZlJ6IK0+S tw2Y4G1w==; Received: from i53875a9c.versanet.de ([83.135.90.156] helo=diego.localnet) by gloria.sntech.de with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vhqSW-0036qc-2O; Mon, 19 Jan 2026 15:42:24 +0100 From: Heiko =?UTF-8?B?U3TDvGJuZXI=?= To: Quentin Schulz , Alexey Charkov Cc: Rob Herring , Krzysztof Kozlowski , Conor Dooley , "Martin K. Petersen" , Shawn Lin , Manivannan Sadhasivam , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: Re: [PATCH] arm64: dts: rockchip: Explicitly request UFS reset pin on RK3576 Date: Mon, 19 Jan 2026 15:42:23 +0100 Message-ID: <8960787.MhkbZ0Pkbq@diego> In-Reply-To: References: <20260119-ufs-rst-v1-1-c8e96493948c@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260119_064237_136253_02A7732A X-CRM114-Status: GOOD ( 50.09 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org QW0gTW9udGFnLCAxOS4gSmFudWFyIDIwMjYsIDE1OjA1OjE2IE1pdHRlbGV1cm9ww6Rpc2NoZSBO b3JtYWx6ZWl0IHNjaHJpZWIgQWxleGV5IENoYXJrb3Y6Cj4gT24gTW9uLCBKYW4gMTksIDIwMjYg YXQgNTo1OOKAr1BNIFF1ZW50aW4gU2NodWx6IDxxdWVudGluLnNjaHVsekBjaGVycnkuZGU+IHdy b3RlOgo+ID4KPiA+IEhpIEFsZXhleSwKPiA+Cj4gPiBPbiAxLzE5LzI2IDI6NDMgUE0sIEFsZXhl eSBDaGFya292IHdyb3RlOgo+ID4gPiBIaSBRdWVudGluLAo+ID4gPgo+ID4gPiBPbiBNb24sIEph biAxOSwgMjAyNiBhdCAzOjA44oCvUE0gUXVlbnRpbiBTY2h1bHogPHF1ZW50aW4uc2NodWx6QGNo ZXJyeS5kZT4gd3JvdGU6Cj4gPiA+Pgo+ID4gPj4gSGkgQWxleGV5LAo+ID4gPj4KPiA+ID4+IE9u IDEvMTkvMjYgMTA6MjIgQU0sIEFsZXhleSBDaGFya292IHdyb3RlOgo+ID4gPj4+IFJvY2tjaGlw IFJLMzU3NiBVRlMgY29udHJvbGxlciB1c2VzIGEgZGVkaWNhdGVkIHBpbiB0byByZXNldCB0aGUg Y29ubmVjdGVkCj4gPiA+Pj4gVUZTIGRldmljZSwgd2hpY2ggY2FuIG9wZXJhdGUgZWl0aGVyIGlu IGEgaGFyZHdhcmUgY29udHJvbGxlZCBtb2RlIG9yIGFzIGEKPiA+ID4+PiBHUElPIHBpbi4KPiA+ ID4+Pgo+ID4gPj4+IFBvd2VyLW9uIGRlZmF1bHQgaXMgR1BJTyBtb2RlLCBidXQgdGhlIGJvb3Qg Uk9NIHJlY29uZmlndXJlcyBpdCB0byBhCj4gPiA+Pj4gaGFyZHdhcmUgY29udHJvbGxlZCBtb2Rl IGlmIGl0IHVzZXMgVUZTIHRvIGxvYWQgdGhlIG5leHQgYm9vdCBzdGFnZS4KPiA+ID4+Pgo+ID4g Pj4+IEdpdmVuIHRoYXQgZXhpc3RpbmcgYmluZGluZ3MgKGFuZCByazM1NzYuZHRzaSkgZXhwZWN0 IGEgR1BJTy1jb250cm9sbGVkCj4gPiA+Pj4gZGV2aWNlIHJlc2V0LCByZXF1ZXN0IHRoZSByZXF1 aXJlZCBwaW4gY29uZmlnIGV4cGxpY2l0bHkuCj4gPiA+Pj4KPiA+ID4+PiBUaGlzIGRvZXNuJ3Qg YXBwZWFyIHRvIGFmZmVjdCBMaW51eCwgYnV0IGl0IGRvZXMgYWZmZWN0IFUtYm9vdDoKPiA+ID4+ Pgo+ID4gPj4+IEJlZm9yZToKPiA+ID4+PiA9PiBtZC5sIDB4MjYwNGIzOTgKPiA+ID4+PiAyNjA0 YjM5ODogMDAwMDAwMTEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgIC4uLi4uLi4uLi4uLi4u Li4KPiA+ID4+PiA8IC4uLiBzbmlwIC4uLiA+Cj4gPiA+Pj4gPT4gdWZzIGluaXQKPiA+ID4+PiB1 ZnNoY2Qtcm9ja2NoaXAgdWZzaGNAMmEyZDAwMDA6IFtSWCwgVFhdOiBnZWFyPVszLCAzXSwgbGFu ZVsyLCAyXSwgcHdyW0ZBU1RBVVRPX01PREUsIEZBU1RBVVRPX01PREVdLCByYXRlID0gMgo+ID4g Pj4+ID0+IG1kLmwgMHgyNjA0YjM5OAo+ID4gPj4+IDI2MDRiMzk4OiAwMDAwMDAxMSAwMDAwMDAw MCAwMDAwMDAwMCAwMDAwMDAwMCAgLi4uLi4uLi4uLi4uLi4uLgo+ID4gPj4+Cj4gPiA+Pj4gQWZ0 ZXI6Cj4gPiA+Pj4gPT4gbWQubCAweDI2MDRiMzk4Cj4gPiA+Pj4gMjYwNGIzOTg6IDAwMDAwMDEx IDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwICAuLi4uLi4uLi4uLi4uLi4uCj4gPiA+Pj4gPCAu Li4gc25pcCAuLi4+Cj4gPiA+Pj4gPT4gdWZzIGluaXQKPiA+ID4+PiB1ZnNoY2Qtcm9ja2NoaXAg dWZzaGNAMmEyZDAwMDA6IFtSWCwgVFhdOiBnZWFyPVszLCAzXSwgbGFuZVsyLCAyXSwgcHdyW0ZB U1RBVVRPX01PREUsIEZBU1RBVVRPX01PREVdLCByYXRlID0gMgo+ID4gPj4+ID0+IG1kLmwgMHgy NjA0YjM5OAo+ID4gPj4+IDI2MDRiMzk4OiAwMDAwMDAxMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAw MDAwMCAgLi4uLi4uLi4uLi4uLi4uLgo+ID4gPj4+Cj4gPiA+Pj4gKDB4MjYwNGIzOTggaXMgdGhl IHJlc3BlY3RpdmUgcGluIG11eCByZWdpc3Rlciwgd2l0aCBpdHMgQklUMCBkcml2aW5nIHRoZQo+ ID4gPj4+IG1vZGUgb2YgVUZTX1JTVDogdW5zZXQgPSBHUElPLCBzZXQgPSBoYXJkd2FyZSBjb250 cm9sbGVkIFVGU19SU1QpCj4gPiA+Pj4KPiA+ID4+PiBUaGlzIGhlbHBzIGVuc3VyZSB0aGF0IEdQ SU8tZHJpdmVuIGRldmljZSByZXNldCBhY3R1YWxseSBmaXJlcyB3aGVuIHRoZQo+ID4gPj4+IHN5 c3RlbSByZXF1ZXN0cyBpdCwgbm90IHdoZW4gd2hhdGV2ZXIgYmxhY2sgYm94IG1hZ2ljIGluc2lk ZSB0aGUgVUZTSEMKPiA+ID4+PiBkZWNpZGVzIHRvIHJlc2V0IHRoZSBmbGFzaCBjaGlwLgo+ID4g Pj4+Cj4gPiA+Pj4gQ2M6IHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmcKPiA+ID4+PiBGaXhlczogYzc1 ZTVlMDEwZmVmICgic2NzaTogYXJtNjQ6IGR0czogcm9ja2NoaXA6IEFkZCBVRlMgc3VwcG9ydCBm b3IgUkszNTc2IFNvQyIpCj4gPiA+Pj4gUmVwb3J0ZWQtYnk6IFF1ZW50aW4gU2NodWx6IDxxdWVu dGluLnNjaHVsekBjaGVycnkuZGU+Cj4gPiA+Pj4gU2lnbmVkLW9mZi1ieTogQWxleGV5IENoYXJr b3YgPGFsY2hhcmtAZ21haWwuY29tPgo+ID4gPj4+IC0tLQo+ID4gPj4+IFRoaXMgaGFzIG9yaWdp bmFsbHkgc3VyZmFjZWQgZHVyaW5nIHRoZSByZXZpZXcgb2YgVUZTIHBhdGNoZXMgZm9yIFUtYm9v dAo+ID4gPj4+IGF0IFsxXSwgd2hlcmUgaXQgd2FzIGZvdW5kIHRoYXQgdGhlIFVGUyByZXNldCBs aW5lIGlzIG5vdCByZXF1ZXN0ZWQgdG8gYmUKPiA+ID4+PiBjb25maWd1cmVkIGFzIEdQSU8gYnV0 IHVzZWQgYXMgc3VjaC4gVGhpcyBsZWFkcyBpbiBzb21lIGNhc2VzIHRvIHRoZSBVRlMKPiA+ID4+ PiBkcml2ZXIgYXBwZWFyaW5nIHRvIGNvbnRyb2wgZGV2aWNlIHJlc2V0cywgd2hpbGUgaW4gZmFj dCBpdCBpcyB0aGUKPiA+ID4+PiBpbnRlcm5hbCBjb250cm9sbGVyIGxvZ2ljIHRoYXQgZHJpdmVz IHRoZSByZXNldCBsaW5lIChwZXJoYXBzIGluCj4gPiA+Pj4gdW5leHBlY3RlZCB3YXlzKS4KPiA+ ID4+Pgo+ID4gPj4+IFRoYW5rcyBRdWVudGluIFNjaHVseiBmb3Igc3BvdHRpbmcgdGhpcyBpc3N1 ZS4KPiA+ID4+Pgo+ID4gPj4+IFsxXSBodHRwczovL2xvcmUua2VybmVsLm9yZy91LWJvb3QvMjU5 ZmMzNTgtZjcyYi00YTI0LTlhNzEtYWQ5MGYyMDgxMzM1QGNoZXJyeS5kZS8KPiA+ID4+PiAtLS0K PiA+ID4+PiAgICBhcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU3Ni1waW5jdHJsLmR0 c2kgfCA3ICsrKysrKysKPiA+ID4+PiAgICBhcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3Jr MzU3Ni5kdHNpICAgICAgICAgfCAyICstCj4gPiA+Pj4gICAgMiBmaWxlcyBjaGFuZ2VkLCA4IGlu c2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiA+ID4+Pgo+ID4gPj4+IGRpZmYgLS1naXQgYS9h cmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU3Ni1waW5jdHJsLmR0c2kgYi9hcmNoL2Fy bTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU3Ni1waW5jdHJsLmR0c2kKPiA+ID4+PiBpbmRleCAw YjA4NTFhN2U0ZWEuLjIwY2ZkMzM5M2E3NSAxMDA2NDQKPiA+ID4+PiAtLS0gYS9hcmNoL2FybTY0 L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU3Ni1waW5jdHJsLmR0c2kKPiA+ID4+PiArKysgYi9hcmNo L2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU3Ni1waW5jdHJsLmR0c2kKPiA+ID4+PiBAQCAt NTIyOCw2ICs1MjI4LDEzIEBAIHVmc19yc3Q6IHVmcy1yc3Qgewo+ID4gPj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvKiB1ZnNfcnN0biAqLwo+ID4gPj4+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8NCBSS19QRDAgMSAmcGNmZ19wdWxsX25vbmU+Owo+ID4gPj4+ICAg ICAgICAgICAgICAgIH07Cj4gPiA+Pj4gKwo+ID4gPj4+ICsgICAgICAgICAgICAgL29taXQtaWYt bm8tcmVmLwo+ID4gPj4+ICsgICAgICAgICAgICAgdWZzX3JzdF9ncGlvOiB1ZnMtcnN0LWdwaW8g ewo+ID4gPj4+ICsgICAgICAgICAgICAgICAgICAgICByb2NrY2hpcCxwaW5zID0KPiA+ID4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB1ZnNfcnN0biAqLwo+ID4gPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDw0IFJLX1BEMCBSS19GVU5DX0dQSU8gJnBjZmdfcHVs bF9ub25lPjsKPiA+ID4+Cj4gPiA+PiBUaGUgU29DIGRlZmF1bHQgaXMgcHVsbC1kb3duIGFjY29y ZGluZyB0byB0aGUgVFJNLiBDYW4geW91IGNoZWNrIHBsZWFzZT8KPiA+ID4+IEZvciBleGFtcGxl LCB0aGUgUm9jayA0RCBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhIGhhcmR3YXJlIHB1bGwtdXAgb3IK PiA+ID4+IHB1bGwtZG93biBvbiB0aGUgbGluZSBhbmQgdGhlIFVGUyBtb2R1bGUgb25seSBzZWVt cyB0byBoYXZlIGEgZGVib3VuY2VyCj4gPiA+PiAoY2FwYWNpdG9yIGJldHdlZW4gdGhlIGxpbmUg YW5kIGdyb3VuZCkuIFNvIGV4Y2VwdCBpZiB0aGUgY2hpcCBpdHNlbGYKPiA+ID4+IGhhcyBhIFBV L1BELCB0aGlzIG1heSBiZSBhbiBpc3N1ZT8KPiA+ID4KPiA+ID4gVGhlIFNvQyBkZWZhdWx0IGlz IGluZGVlZCBwdWxsLWRvd24gKGFzIHN0YXRlZCBib3RoIGluIHRoZSBUUk0gYW5kIGluCj4gPiA+ IHRoZSByZWZlcmVuY2Ugc2NoZW1hdGljIGZyb20gUkszNTc2IEVWQjEpLiBXaGljaCBJIGJlbGll dmUgbWVhbnMgdGhhdAo+ID4gPiB0aGUgYXR0YWNoZWQgZGV2aWNlIHNob3VsZCBiZSBoZWxkIGlu IGEgcmVzZXQgc3RhdGUgdW50aWwgdGhlIGRyaXZlcgo+ID4gPiB0YWtlcyBvdmVyIHRoZSBjb250 cm9sIG9mIHRoZSBHUElPIGxpbmUgKHdoaWNoLCBpbiB0dXJuLCBpcyBjb25zaXN0ZW50Cj4gPiA+ IHdpdGggdGhlIG9ic2VydmVkIGJlaGF2aW9yIHdoZW4gcmVzZXQgaGFuZGxpbmcgaXMgbm90IGVu YWJsZWQgaW4gdGhlCj4gPiA+IGRyaXZlciBidXQgdGhlIHJlc2V0IHBpbiBpcyBpbiBHUElPIG1v ZGUpLgo+ID4gPgo+ID4gPiBBcmUgeW91IGNvbmNlcm5lZCB0aGF0IHRoZSBjaGlwIG1pZ2h0IHVu aW50ZW50aW9uYWxseSBnbyBpbiBvciBvdXQgb2YKPiA+ID4gcmVzZXQgYmV0d2VlbiB0aGUgbW9t ZW50IHRoZSBwaW5jdHJsIHN1YnN5c3RlbSBjbGFpbXMgdGhlIHBpbiBhbmQgdGhlCj4gPiA+IG1v bWVudCB0aGUgZHJpdmVyIHN0YXJ0cyBvdXRwdXR0aW5nIGEgc3RhdGUgaXQgZGVzaXJlcz8gVGhp cyBoYXNuJ3QKPiA+Cj4gPiBFeGFjdGx5IHRoYXQuCj4gPgo+ID4gSW1hZ2luZSBmb3Igc29tZSBy ZWFzb24gdGhlIGRyaXZlciBFUFJPQkVfREVGRVIsIHRoZXJlIGNhbiBiZSBhIGxvdCBvZgo+ID4g dGltZSBiZXR3ZWVuIHRoZSBvcmlnaW5hbCBwaW5jb25mL3Bpbm11eCBhbmQgdGhlIHRpbWUgdGhl IEdQSU8gaXMKPiA+IGFjdHVhbGx5IGRyaXZlbi4KPiA+Cj4gPiBBdCB0aGUgc2FtZSB0aW1lLi4g SSBndWVzcyBpdCBtYXkgbm90IG1hdHRlciBtdWNoIGlmIHRoZSBVRlMgY2hpcCBnZXRzCj4gPiBv dXQgb2YgcmVzZXQgdGVtcG9yYXJpbHkgYXMgKEkgYXNzdW1lKSB3aGVuIHRoZSBVRlMgY29udHJv bGxlciBwcm9iZXMKPiA+IHByb3Blcmx5LCBpdCdsbCBkbyBhIGZ1bGwgcmVzZXQgb2YgdGhlIFVG UyBjaGlwIHZpYSB0aGUgcmVzZXQgR1BJTy4KPiA+IERvbid0IGtub3cgYW55dGhpbmcgYWJvdXQg VUZTLCBzbyBtYXliZSB0aGVyZSBjb3VsZCBiZSBkYW1hZ2UgaWYgdGhlIFVGUwo+ID4gY2hpcCBn ZXRzIG91dCBvZiByZXNldCBpZiBpdHMgc3VwcGxpZXMgb3IgSU8gbGluZXMgYXJlIGluIGFuIGls bGVnYWwgc3RhdGU/Cj4gPgo+ID4gPiBjYXVzZWQgYW55IG9ic2VydmFibGUgaXNzdWVzIGluIG15 IHRlc3RpbmcsIGJ1dCBJIGd1ZXNzIHdlIGNvdWxkCj4gPiA+IGV4cGxpY2l0bHkgc2V0IGl0IHRv ICZwY2ZnX3B1bGxfZG93biBmb3IgbW9yZSBwcmVkaWN0YWJsZSBiZWhhdmlvciBpbgo+ID4gPiBs aW5lIHdpdGggd2hhdCdzIHByaW50ZWQgb24gdGhlIHNjaGVtYXRpYy4KPiA+ID4KPiA+Cj4gPiBz L3NjaGVtYXRpY3MvVFJNLwo+ID4KPiA+IEknbGwgbGV0IEhlaWtvIGRlY2lkZSBidXQgSSB3b3Vs ZCBwZXJzb25hbGx5IGdvIGZvciBhIFBEIHRvIG1hdGNoIHRoZQo+ID4gZGVmYXVsdCBzdGF0ZSBv ZiB0aGUgU29DIGFjY29yZGluZyB0byB0aGUgVFJNLgo+IAo+IEhhcHB5IHRvIG1ha2UgYSB2MiB3 aXRoIGFuIGV4cGxpY2l0IHB1bGwtZG93bi4gV2lsbCB3YWl0IGEgYml0IGZvciBhbnkKPiBvdGhl ciBwb3RlbnRpYWwgZmVlZGJhY2sgdGhvdWdoLgoKSSdkIHNpZGUgd2l0aCBRdWVudGluIGhlcmUs IGhhdmluZyB0aGUgcGluIGZpcm1seSBvbiBvbmUgc3RhdGUsIHdoZW4gbm8tb25lCihib2FyZCBu b3IgZHJpdmVyKSBpcyBjYXJpbmcgd291bGQgYmUgbXkgcHJlZmVyZW5jZS4KRXNwZWNpYWxseSBh cyBRdWVudGluIHNhaWQsIHRoaXMgaXMgdGhlIGhhcmR3YXJlLWRlZmF1bHQgdG9vLgoKSGVpa28K CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgt cm9ja2NoaXAgbWFpbGluZyBsaXN0CkxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yb2NrY2hp cAo=