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 B1397EB7ED7 for ; Wed, 4 Mar 2026 12:09:56 +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=J/vSHYl/zeedWq2s9J2GLz/C+OMXsU4m4BeXZtYn5sg=; b=veDWqBKt5busnDR4FZPKXdG8F5 HHP50OKTx5roHBQ6YDLxKTfZUev0yY80jFzr+LH3fZzIQ109zjoEbK/5GN1wEJIIhHGD/ZUag+BXd le4tFK3feZ3fZ2dGSxfj/En9Jj29xk50CVEa14tQrvbgL0oloTCnKoK4PUHpIh1FDeznNZnS0Bh5F 9zR3WeBPqCn1n/SFKICk95lHV19uuzP9TbCWLnVEHUMEqCisX3lzffR360aGAi8TWv6iE1H6KjMXM /Q7T30dEIrw7lSRQPIyMv1qbzMOq+mIrWKIqriVJ9doFaYjcjtTUPEFS/W3sTHArzj7f1lFtoDOff xPQTqLsQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vxl31-0000000H9gv-0eau; Wed, 04 Mar 2026 12:09:51 +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 1vxl2y-0000000H9fV-3viH; Wed, 04 Mar 2026 12:09:50 +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=J/vSHYl/zeedWq2s9J2GLz/C+OMXsU4m4BeXZtYn5sg=; b=YXfzLo2QqdItrAztYXnxz6YOFg rTZ+0dpqM6PM3TPb+cSNBWkgc4pAVwCJquzKnWUOnYZwlXCUQBchfIF6zB8a4m+vaRESj3yMahdHs GkN4cPWfWukZJnSLitWpcns++X55OEEmsNI1QBfTH2/R9qVqdLGtzZmb0w+VVWHNYXVUDlKi2hwD3 Sixbu+v9xarDc6mITjI6GVjXQBAIXNiw2MbpKZzi3eALv2NZWBgsqzu9v1HUrDaxYUKah7ZzyBQvj mTZ1B8XSB8fCoidHxW4lAx7tnxhKNeBaIA0fX3QH3p8Eq/i77wSaMUCETky/FKqAcW1Y0uupLIS6u VeE9VxVQ==; From: Heiko Stuebner To: Sebastian Reichel , Andy Yan Cc: Quentin Schulz , mturquette@baylibre.com, sboyd@kernel.org, zhangqing@rock-chips.com, linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Andy Yan Subject: Re: [PATCH] clk: rockchip: rk3588: Don't change PLL rates when setting dclk_vop2_src Date: Wed, 04 Mar 2026 13:09:29 +0100 Message-ID: <2051535.usQuhbGJ8B@phil> In-Reply-To: <368a3ca3.110d.19a286b585d.Coremail.andyshrk@163.com> References: <20251008133135.3745785-1-heiko@sntech.de> <368a3ca3.110d.19a286b585d.Coremail.andyshrk@163.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-20260304_040948_994856_DA740BE8 X-CRM114-Status: GOOD ( 49.57 ) 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 Dienstag, 28. Oktober 2025, 02:25:14 Mitteleurop=C3=A4ische Normalzeit s= chrieb Andy Yan: >=20 > Hello=EF=BC=8C > =E5=9C=A8 2025-10-27 21:20:15=EF=BC=8C"Sebastian Reichel" =E5=86=99=E9=81=93=EF=BC=9A > >Hi, > > > >On Mon, Oct 27, 2025 at 10:03:57AM +0800, Andy Yan wrote: > >> At 2025-10-21 00:00:59, "Sebastian Reichel" wrote: > >> >On Mon, Oct 20, 2025 at 02:49:10PM +0200, Heiko Stuebner wrote: > >> >> Am Donnerstag, 16. Oktober 2025, 00:57:15 Mitteleurop=C3=A4ische So= mmerzeit schrieb Sebastian Reichel: > >> >> > On Wed, Oct 15, 2025 at 03:27:12PM +0200, Heiko St=C3=BCbner wrot= e: > >> >> > > Am Mittwoch, 15. Oktober 2025, 14:58:46 Mitteleurop=C3=A4ische = Sommerzeit schrieb Quentin Schulz: > >> >> > > > On 10/8/25 3:31 PM, Heiko Stuebner wrote: > >> >> > > > > dclk_vop2_src currently has CLK_SET_RATE_PARENT | CLK_SET_R= ATE_NO_REPARENT > >> >> > > > > flags set, which is vastly different than dclk_vop0_src or = dclk_vop1_src, > >> >> > > > > which have none of those. > >> >> > > > >=20 > >> >> > > > > With these flags in dclk_vop2_src, actually setting the clo= ck then results > >> >> > > > > in a lot of other peripherals breaking, because setting the= rate results > >> >> > > > > in the PLL source getting changed: > >> >> > > > >=20 > >> >> > > > > [ 14.898718] clk_core_set_rate_nolock: setting rate for d= clk_vop2 to 152840000 > >> >> > > > > [ 15.155017] clk_change_rate: setting rate for pll_gpll t= o 1680000000 > >> >> > > > > [ clk adjusting every gpll user ] > >> >> > > > >=20 > >> >> > > > > This includes possibly the other vops, i2s, spdif and even = the uarts. > >> >> > > > > Among other possible things, this breaks the uart console o= n a board > >> >> > > > > I use. Sometimes it recovers later on, but there will be a = big block > >> >> > > >=20 > >> >> > > > I can reproduce on the same board as yours and this fixes the= issue=20 > >> >> > > > indeed (note I can only reproduce for now when display the mo= detest=20 > >> >> > > > pattern, otherwise after boot the console seems fine to me). > >> >> > >=20 > >> >> > > I boot into a Debian rootfs with fbcon on my system, and the se= rial > >> >> > > console produces garbled output when the vop adjusts the clock > >> >> > >=20 > >> >> > > Sometimes it recovers after a bit, but other times it doesn't > >> >> > >=20 > >> >> > > > Reviewed-by: Quentin Schulz > >> >> > > > Tested-by: Quentin Schulz # RK3588= Tiger w/DP carrierboard > >> >> >=20 > >> >> > I'm pretty sure I've seen this while playing with USB-C DP AltMode > >> >> > on Rock 5B. So far I had no time to investigate further. > >> >> >=20 > >> >> > What I'm missing in the commit message is the impact on VOP. Also > >> >> > it might be a good idea to have Andy in Cc, so I've added him. > >> >>=20 > >> >> Hmm, it brings VP2 in line with the other two VPs, only VP2 had this > >> >> special setting - even right from the start, so it could very well > >> >> have been left there accidentially during submission. > >> > > >> >I did the initial upstream submission based on downstream (the TRM > >> >is quite bad regading describing the clock trees, so not much > >> >validation has been done by me). The old vendor kernel tree had it > >> >like this, but that also changed a bit over time afterwards and no > >> >longer has any special handling for VP2. OTOH it does set > >> >CLK_SET_RATE_NO_REPARENT for all dclk_vop_src, which you > >> >are now removing for VP2. > >> > > >> >FWIW these are the two flags: > >> > > >> >#define CLK_SET_RATE_PARENT BIT(2) /* propagate rate change up on= e level */ > >> >#define CLK_SET_RATE_NO_REPARENT BIT(7) /* don't re-parent on rate ch= ange */ > >> > > >> >So by removing CLK_SET_RATE_NO_REPARENT you are allowing dclk_vop2_src > >> >to be switched to a different PLL when a different rate is being > >> >requested. That change is completley unrelated to the bug you are > >> >seeing right now? I guess the actual bug is, that VP2 cannot set its rate with the same flexibility as the other VPs. I guess I can split that in two patches. One dropping the SET_RATE_PARENT, to fix the actual bug, the other dropping the NO_REPARENT flag to give VP2 the same possiblities to find a rate. > >> >> So in the end VP2 will have to deal with this, because when the VP > >> >> causes a rate change in the GPLL, this changes so many clocks of > >> >> other possibly running devices. Not only the uart, but also emmc > >> >> and many more. And all those devices do not like if their clock gets > >> >> changed under them I think. > >> > > >> >It's certainly weird, that VP2 was (and still is in upstream) handled > >> >special. Note that GPLL being changed is not really necessary. > >> >dclk_vop2_src parent can be GPLL, CPLL, V0PLL or AUPLL. Effects on > >> >other hardware IP very much depends on the parent setup. What I try > >> >to understand is if there is also a bug in the rockchipdrm driver > >> >and/or if removing CLK_SET_RATE_NO_REPARENT is a good idea. That's > >> >why I hoped Andy could chime in and provide some background :) > >>=20 > >> The main limitation is that there are not enough PLLs on the SoC > >> to be used for the display side. In our downstream code > >> implementation, we usually exclusively assign V0PLL to a certain > >> VP. Other VPs generally need to share the PLL with other > >> peripherals , or use the HDMI PHY PLL. > >>=20 > >> For GPLL and CPLL, they will be set to a fixed frequency during > >> the system startup stage, and they should not be modified again as > >> these two PLL always shared by other peripherals. > >>=20 > >> When shared with other peripherals, we can not do > >> CLK_SET_RATE_PARENT,. However, when we need a relatively precise > >> frequency in certain scenarios, such as driving an eDP or DSI > >> panel=EF=BC=88see what we do for eDP on rk3588s-evb1-v10.dts and > >> rk3588-coolpi-cm5-genbook.dts =EF=BC=89, we tend to use V0PLL. But sin= ce > >> V0PLL does not proper initializated at system startup, we then > >> need CLK_SET_RATE_PARENT. This does indeed seem to be a > >> contradiction. > > > >I suppose for eDP and DSI, which are more or less fixed, it would While DSI is fixed, eDP is not. While the Analogix-DP cannot support DP+ (DP converted to HDMI), it can support a real DP connection just fine. 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 54A0CEB7ECF for ; Wed, 4 Mar 2026 12:09:56 +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=+oQL7ZY/jVakhQN8ZxWEwmS7yOXOU5KBCzYQTq9C0sM=; b=tAxhLQS/uDGpKX rco31l29sqqeL+hqV7Q0VohyCUss0OKCOotFTjmvHdl51W5rWm/HKN6BlX9ofqzmVd2TRGpW4FX1U NJQrF/exCkfWiwqXT/ms9N6/61M7XfAcQN2f6m86ZLmB5bCtxliWP/GpbNjdeXQw23XnRXDGZXT9V 7sUszPJye8ZzNn4KoTnNvHa78DHWWU84UfynDOhFWyQX9pz1xNJQl5KRZa36wdusZhOQrEJ+ny+yq eWm6KHAODXx6mJgTmk2+38rBXhXN5iHrZ+9OUcHXdt3as0qAfHmArrEq2/BwO2GNonY1UK98t1tnb zuvkmfuclhAWhiCn+now==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vxl31-0000000H9hD-1xfm; Wed, 04 Mar 2026 12:09:51 +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 1vxl2y-0000000H9fV-3viH; Wed, 04 Mar 2026 12:09:50 +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=J/vSHYl/zeedWq2s9J2GLz/C+OMXsU4m4BeXZtYn5sg=; b=YXfzLo2QqdItrAztYXnxz6YOFg rTZ+0dpqM6PM3TPb+cSNBWkgc4pAVwCJquzKnWUOnYZwlXCUQBchfIF6zB8a4m+vaRESj3yMahdHs GkN4cPWfWukZJnSLitWpcns++X55OEEmsNI1QBfTH2/R9qVqdLGtzZmb0w+VVWHNYXVUDlKi2hwD3 Sixbu+v9xarDc6mITjI6GVjXQBAIXNiw2MbpKZzi3eALv2NZWBgsqzu9v1HUrDaxYUKah7ZzyBQvj mTZ1B8XSB8fCoidHxW4lAx7tnxhKNeBaIA0fX3QH3p8Eq/i77wSaMUCETky/FKqAcW1Y0uupLIS6u VeE9VxVQ==; From: Heiko Stuebner To: Sebastian Reichel , Andy Yan Cc: Quentin Schulz , mturquette@baylibre.com, sboyd@kernel.org, zhangqing@rock-chips.com, linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Andy Yan Subject: Re: [PATCH] clk: rockchip: rk3588: Don't change PLL rates when setting dclk_vop2_src Date: Wed, 04 Mar 2026 13:09:29 +0100 Message-ID: <2051535.usQuhbGJ8B@phil> In-Reply-To: <368a3ca3.110d.19a286b585d.Coremail.andyshrk@163.com> References: <20251008133135.3745785-1-heiko@sntech.de> <368a3ca3.110d.19a286b585d.Coremail.andyshrk@163.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260304_040948_994856_DA740BE8 X-CRM114-Status: GOOD ( 49.57 ) 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 QW0gRGllbnN0YWcsIDI4LiBPa3RvYmVyIDIwMjUsIDAyOjI1OjE0IE1pdHRlbGV1cm9ww6Rpc2No ZSBOb3JtYWx6ZWl0IHNjaHJpZWIgQW5keSBZYW46Cj4gCj4gSGVsbG/vvIwKPiDlnKggMjAyNS0x MC0yNyAyMToyMDoxNe+8jCJTZWJhc3RpYW4gUmVpY2hlbCIgPHNlYmFzdGlhbi5yZWljaGVsQGNv bGxhYm9yYS5jb20+IOWGmemBk++8mgo+ID5IaSwKPiA+Cj4gPk9uIE1vbiwgT2N0IDI3LCAyMDI1 IGF0IDEwOjAzOjU3QU0gKzA4MDAsIEFuZHkgWWFuIHdyb3RlOgo+ID4+IEF0IDIwMjUtMTAtMjEg MDA6MDA6NTksICJTZWJhc3RpYW4gUmVpY2hlbCIgPHNlYmFzdGlhbi5yZWljaGVsQGNvbGxhYm9y YS5jb20+IHdyb3RlOgo+ID4+ID5PbiBNb24sIE9jdCAyMCwgMjAyNSBhdCAwMjo0OToxMFBNICsw MjAwLCBIZWlrbyBTdHVlYm5lciB3cm90ZToKPiA+PiA+PiBBbSBEb25uZXJzdGFnLCAxNi4gT2t0 b2JlciAyMDI1LCAwMDo1NzoxNSBNaXR0ZWxldXJvcMOkaXNjaGUgU29tbWVyemVpdCBzY2hyaWVi IFNlYmFzdGlhbiBSZWljaGVsOgo+ID4+ID4+ID4gT24gV2VkLCBPY3QgMTUsIDIwMjUgYXQgMDM6 Mjc6MTJQTSArMDIwMCwgSGVpa28gU3TDvGJuZXIgd3JvdGU6Cj4gPj4gPj4gPiA+IEFtIE1pdHR3 b2NoLCAxNS4gT2t0b2JlciAyMDI1LCAxNDo1ODo0NiBNaXR0ZWxldXJvcMOkaXNjaGUgU29tbWVy emVpdCBzY2hyaWViIFF1ZW50aW4gU2NodWx6Ogo+ID4+ID4+ID4gPiA+IE9uIDEwLzgvMjUgMzoz MSBQTSwgSGVpa28gU3R1ZWJuZXIgd3JvdGU6Cj4gPj4gPj4gPiA+ID4gPiBkY2xrX3ZvcDJfc3Jj IGN1cnJlbnRseSBoYXMgQ0xLX1NFVF9SQVRFX1BBUkVOVCB8IENMS19TRVRfUkFURV9OT19SRVBB UkVOVAo+ID4+ID4+ID4gPiA+ID4gZmxhZ3Mgc2V0LCB3aGljaCBpcyB2YXN0bHkgZGlmZmVyZW50 IHRoYW4gZGNsa192b3AwX3NyYyBvciBkY2xrX3ZvcDFfc3JjLAo+ID4+ID4+ID4gPiA+ID4gd2hp Y2ggaGF2ZSBub25lIG9mIHRob3NlLgo+ID4+ID4+ID4gPiA+ID4gCj4gPj4gPj4gPiA+ID4gPiBX aXRoIHRoZXNlIGZsYWdzIGluIGRjbGtfdm9wMl9zcmMsIGFjdHVhbGx5IHNldHRpbmcgdGhlIGNs b2NrIHRoZW4gcmVzdWx0cwo+ID4+ID4+ID4gPiA+ID4gaW4gYSBsb3Qgb2Ygb3RoZXIgcGVyaXBo ZXJhbHMgYnJlYWtpbmcsIGJlY2F1c2Ugc2V0dGluZyB0aGUgcmF0ZSByZXN1bHRzCj4gPj4gPj4g PiA+ID4gPiBpbiB0aGUgUExMIHNvdXJjZSBnZXR0aW5nIGNoYW5nZWQ6Cj4gPj4gPj4gPiA+ID4g PiAKPiA+PiA+PiA+ID4gPiA+IFsgICAxNC44OTg3MThdIGNsa19jb3JlX3NldF9yYXRlX25vbG9j azogc2V0dGluZyByYXRlIGZvciBkY2xrX3ZvcDIgdG8gMTUyODQwMDAwCj4gPj4gPj4gPiA+ID4g PiBbICAgMTUuMTU1MDE3XSBjbGtfY2hhbmdlX3JhdGU6IHNldHRpbmcgcmF0ZSBmb3IgcGxsX2dw bGwgdG8gMTY4MDAwMDAwMAo+ID4+ID4+ID4gPiA+ID4gWyBjbGsgYWRqdXN0aW5nIGV2ZXJ5IGdw bGwgdXNlciBdCj4gPj4gPj4gPiA+ID4gPiAKPiA+PiA+PiA+ID4gPiA+IFRoaXMgaW5jbHVkZXMg cG9zc2libHkgdGhlIG90aGVyIHZvcHMsIGkycywgc3BkaWYgYW5kIGV2ZW4gdGhlIHVhcnRzLgo+ ID4+ID4+ID4gPiA+ID4gQW1vbmcgb3RoZXIgcG9zc2libGUgdGhpbmdzLCB0aGlzIGJyZWFrcyB0 aGUgdWFydCBjb25zb2xlIG9uIGEgYm9hcmQKPiA+PiA+PiA+ID4gPiA+IEkgdXNlLiBTb21ldGlt ZXMgaXQgcmVjb3ZlcnMgbGF0ZXIgb24sIGJ1dCB0aGVyZSB3aWxsIGJlIGEgYmlnIGJsb2NrCj4g Pj4gPj4gPiA+ID4gCj4gPj4gPj4gPiA+ID4gSSBjYW4gcmVwcm9kdWNlIG9uIHRoZSBzYW1lIGJv YXJkIGFzIHlvdXJzIGFuZCB0aGlzIGZpeGVzIHRoZSBpc3N1ZSAKPiA+PiA+PiA+ID4gPiBpbmRl ZWQgKG5vdGUgSSBjYW4gb25seSByZXByb2R1Y2UgZm9yIG5vdyB3aGVuIGRpc3BsYXkgdGhlIG1v ZGV0ZXN0IAo+ID4+ID4+ID4gPiA+IHBhdHRlcm4sIG90aGVyd2lzZSBhZnRlciBib290IHRoZSBj b25zb2xlIHNlZW1zIGZpbmUgdG8gbWUpLgo+ID4+ID4+ID4gPiAKPiA+PiA+PiA+ID4gSSBib290 IGludG8gYSBEZWJpYW4gcm9vdGZzIHdpdGggZmJjb24gb24gbXkgc3lzdGVtLCBhbmQgdGhlIHNl cmlhbAo+ID4+ID4+ID4gPiBjb25zb2xlIHByb2R1Y2VzIGdhcmJsZWQgb3V0cHV0IHdoZW4gdGhl IHZvcCBhZGp1c3RzIHRoZSBjbG9jawo+ID4+ID4+ID4gPiAKPiA+PiA+PiA+ID4gU29tZXRpbWVz IGl0IHJlY292ZXJzIGFmdGVyIGEgYml0LCBidXQgb3RoZXIgdGltZXMgaXQgZG9lc24ndAo+ID4+ ID4+ID4gPiAKPiA+PiA+PiA+ID4gPiBSZXZpZXdlZC1ieTogUXVlbnRpbiBTY2h1bHogPHF1ZW50 aW4uc2NodWx6QGNoZXJyeS5kZT4KPiA+PiA+PiA+ID4gPiBUZXN0ZWQtYnk6IFF1ZW50aW4gU2No dWx6IDxxdWVudGluLnNjaHVsekBjaGVycnkuZGU+ICMgUkszNTg4IFRpZ2VyIHcvRFAgY2Fycmll cmJvYXJkCj4gPj4gPj4gPiAKPiA+PiA+PiA+IEknbSBwcmV0dHkgc3VyZSBJJ3ZlIHNlZW4gdGhp cyB3aGlsZSBwbGF5aW5nIHdpdGggVVNCLUMgRFAgQWx0TW9kZQo+ID4+ID4+ID4gb24gUm9jayA1 Qi4gU28gZmFyIEkgaGFkIG5vIHRpbWUgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4KPiA+PiA+PiA+ IAo+ID4+ID4+ID4gV2hhdCBJJ20gbWlzc2luZyBpbiB0aGUgY29tbWl0IG1lc3NhZ2UgaXMgdGhl IGltcGFjdCBvbiBWT1AuIEFsc28KPiA+PiA+PiA+IGl0IG1pZ2h0IGJlIGEgZ29vZCBpZGVhIHRv IGhhdmUgQW5keSBpbiBDYywgc28gSSd2ZSBhZGRlZCBoaW0uCj4gPj4gPj4gCj4gPj4gPj4gSG1t LCBpdCBicmluZ3MgVlAyIGluIGxpbmUgd2l0aCB0aGUgb3RoZXIgdHdvIFZQcywgb25seSBWUDIg aGFkIHRoaXMKPiA+PiA+PiBzcGVjaWFsIHNldHRpbmcgLSBldmVuIHJpZ2h0IGZyb20gdGhlIHN0 YXJ0LCBzbyBpdCBjb3VsZCB2ZXJ5IHdlbGwKPiA+PiA+PiBoYXZlIGJlZW4gbGVmdCB0aGVyZSBh Y2NpZGVudGlhbGx5IGR1cmluZyBzdWJtaXNzaW9uLgo+ID4+ID4KPiA+PiA+SSBkaWQgdGhlIGlu aXRpYWwgdXBzdHJlYW0gc3VibWlzc2lvbiBiYXNlZCBvbiBkb3duc3RyZWFtICh0aGUgVFJNCj4g Pj4gPmlzIHF1aXRlIGJhZCByZWdhZGluZyBkZXNjcmliaW5nIHRoZSBjbG9jayB0cmVlcywgc28g bm90IG11Y2gKPiA+PiA+dmFsaWRhdGlvbiBoYXMgYmVlbiBkb25lIGJ5IG1lKS4gVGhlIG9sZCB2 ZW5kb3Iga2VybmVsIHRyZWUgaGFkIGl0Cj4gPj4gPmxpa2UgdGhpcywgYnV0IHRoYXQgYWxzbyBj aGFuZ2VkIGEgYml0IG92ZXIgdGltZSBhZnRlcndhcmRzIGFuZCBubwo+ID4+ID5sb25nZXIgaGFz IGFueSBzcGVjaWFsIGhhbmRsaW5nIGZvciBWUDIuIE9UT0ggaXQgZG9lcyBzZXQKPiA+PiA+Q0xL X1NFVF9SQVRFX05PX1JFUEFSRU5UIGZvciBhbGwgZGNsa192b3A8bnVtYmVyPl9zcmMsIHdoaWNo IHlvdQo+ID4+ID5hcmUgbm93IHJlbW92aW5nIGZvciBWUDIuCj4gPj4gPgo+ID4+ID5GV0lXIHRo ZXNlIGFyZSB0aGUgdHdvIGZsYWdzOgo+ID4+ID4KPiA+PiA+I2RlZmluZSBDTEtfU0VUX1JBVEVf UEFSRU5UICAgICBCSVQoMikgLyogcHJvcGFnYXRlIHJhdGUgY2hhbmdlIHVwIG9uZSBsZXZlbCAq Lwo+ID4+ID4jZGVmaW5lIENMS19TRVRfUkFURV9OT19SRVBBUkVOVCBCSVQoNykgLyogZG9uJ3Qg cmUtcGFyZW50IG9uIHJhdGUgY2hhbmdlICovCj4gPj4gPgo+ID4+ID5TbyBieSByZW1vdmluZyBD TEtfU0VUX1JBVEVfTk9fUkVQQVJFTlQgeW91IGFyZSBhbGxvd2luZyBkY2xrX3ZvcDJfc3JjCj4g Pj4gPnRvIGJlIHN3aXRjaGVkIHRvIGEgZGlmZmVyZW50IFBMTCB3aGVuIGEgZGlmZmVyZW50IHJh dGUgaXMgYmVpbmcKPiA+PiA+cmVxdWVzdGVkLiBUaGF0IGNoYW5nZSBpcyBjb21wbGV0bGV5IHVu cmVsYXRlZCB0byB0aGUgYnVnIHlvdSBhcmUKPiA+PiA+c2VlaW5nIHJpZ2h0IG5vdz8KCkkgZ3Vl c3MgdGhlIGFjdHVhbCBidWcgaXMsIHRoYXQgVlAyIGNhbm5vdCBzZXQgaXRzIHJhdGUgd2l0aCB0 aGUgc2FtZQpmbGV4aWJpbGl0eSBhcyB0aGUgb3RoZXIgVlBzLiBJIGd1ZXNzIEkgY2FuIHNwbGl0 IHRoYXQgaW4gdHdvIHBhdGNoZXMuCgpPbmUgZHJvcHBpbmcgdGhlIFNFVF9SQVRFX1BBUkVOVCwg dG8gZml4IHRoZSBhY3R1YWwgYnVnLCB0aGUKb3RoZXIgZHJvcHBpbmcgdGhlIE5PX1JFUEFSRU5U IGZsYWcgdG8gZ2l2ZSBWUDIgdGhlIHNhbWUKcG9zc2libGl0aWVzIHRvIGZpbmQgYSByYXRlLgoK Cj4gPj4gPj4gU28gaW4gdGhlIGVuZCBWUDIgd2lsbCBoYXZlIHRvIGRlYWwgd2l0aCB0aGlzLCBi ZWNhdXNlIHdoZW4gdGhlIFZQCj4gPj4gPj4gY2F1c2VzIGEgcmF0ZSBjaGFuZ2UgaW4gdGhlIEdQ TEwsIHRoaXMgY2hhbmdlcyBzbyBtYW55IGNsb2NrcyBvZgo+ID4+ID4+IG90aGVyIHBvc3NpYmx5 IHJ1bm5pbmcgZGV2aWNlcy4gTm90IG9ubHkgdGhlIHVhcnQsIGJ1dCBhbHNvIGVtbWMKPiA+PiA+ PiBhbmQgbWFueSBtb3JlLiBBbmQgYWxsIHRob3NlIGRldmljZXMgZG8gbm90IGxpa2UgaWYgdGhl aXIgY2xvY2sgZ2V0cwo+ID4+ID4+IGNoYW5nZWQgdW5kZXIgdGhlbSBJIHRoaW5rLgo+ID4+ID4K PiA+PiA+SXQncyBjZXJ0YWlubHkgd2VpcmQsIHRoYXQgVlAyIHdhcyAoYW5kIHN0aWxsIGlzIGlu IHVwc3RyZWFtKSBoYW5kbGVkCj4gPj4gPnNwZWNpYWwuIE5vdGUgdGhhdCBHUExMIGJlaW5nIGNo YW5nZWQgaXMgbm90IHJlYWxseSBuZWNlc3NhcnkuCj4gPj4gPmRjbGtfdm9wMl9zcmMgcGFyZW50 IGNhbiBiZSBHUExMLCBDUExMLCBWMFBMTCBvciBBVVBMTC4gRWZmZWN0cyBvbgo+ID4+ID5vdGhl ciBoYXJkd2FyZSBJUCB2ZXJ5IG11Y2ggZGVwZW5kcyBvbiB0aGUgcGFyZW50IHNldHVwLiBXaGF0 IEkgdHJ5Cj4gPj4gPnRvIHVuZGVyc3RhbmQgaXMgaWYgdGhlcmUgaXMgYWxzbyBhIGJ1ZyBpbiB0 aGUgcm9ja2NoaXBkcm0gZHJpdmVyCj4gPj4gPmFuZC9vciBpZiByZW1vdmluZyBDTEtfU0VUX1JB VEVfTk9fUkVQQVJFTlQgaXMgYSBnb29kIGlkZWEuIFRoYXQncwo+ID4+ID53aHkgSSBob3BlZCBB bmR5IGNvdWxkIGNoaW1lIGluIGFuZCBwcm92aWRlIHNvbWUgYmFja2dyb3VuZCA6KQo+ID4+IAo+ ID4+IFRoZSBtYWluIGxpbWl0YXRpb24gaXMgdGhhdCB0aGVyZSBhcmUgbm90IGVub3VnaCBQTExz IG9uIHRoZSBTb0MKPiA+PiB0byBiZSB1c2VkIGZvciB0aGUgZGlzcGxheSBzaWRlLiBJbiBvdXIg ZG93bnN0cmVhbSBjb2RlCj4gPj4gaW1wbGVtZW50YXRpb24sIHdlIHVzdWFsbHkgZXhjbHVzaXZl bHkgYXNzaWduIFYwUExMIHRvIGEgY2VydGFpbgo+ID4+IFZQLiBPdGhlciBWUHMgZ2VuZXJhbGx5 IG5lZWQgdG8gc2hhcmUgdGhlIFBMTCB3aXRoIG90aGVyCj4gPj4gcGVyaXBoZXJhbHMgLCBvciB1 c2UgdGhlIEhETUkgUEhZIFBMTC4KPiA+PiAKPiA+PiBGb3IgR1BMTCBhbmQgQ1BMTCwgIHRoZXkg d2lsbCBiZSBzZXQgdG8gYSBmaXhlZCBmcmVxdWVuY3kgZHVyaW5nCj4gPj4gdGhlIHN5c3RlbSBz dGFydHVwIHN0YWdlLCBhbmQgdGhleSBzaG91bGQgbm90IGJlIG1vZGlmaWVkIGFnYWluIGFzCj4g Pj4gdGhlc2UgdHdvIFBMTCBhbHdheXMgc2hhcmVkIGJ5IG90aGVyIHBlcmlwaGVyYWxzLgo+ID4+ IAo+ID4+IFdoZW4gc2hhcmVkIHdpdGggb3RoZXIgcGVyaXBoZXJhbHMsICB3ZSBjYW4gbm90IGRv Cj4gPj4gQ0xLX1NFVF9SQVRFX1BBUkVOVCwuIEhvd2V2ZXIsIHdoZW4gd2UgbmVlZCBhIHJlbGF0 aXZlbHkgcHJlY2lzZQo+ID4+IGZyZXF1ZW5jeSBpbiBjZXJ0YWluIHNjZW5hcmlvcywgc3VjaCBh cyBkcml2aW5nIGFuIGVEUCBvciBEU0kKPiA+PiBwYW5lbO+8iHNlZSB3aGF0IHdlIGRvIGZvciBl RFAgb24gcmszNTg4cy1ldmIxLXYxMC5kdHMgYW5kCj4gPj4gcmszNTg4LWNvb2xwaS1jbTUtZ2Vu Ym9vay5kdHMg77yJLCB3ZSB0ZW5kIHRvIHVzZSBWMFBMTC4gQnV0IHNpbmNlCj4gPj4gVjBQTEwg ZG9lcyBub3QgcHJvcGVyIGluaXRpYWxpemF0ZWQgYXQgc3lzdGVtIHN0YXJ0dXAsIHdlIHRoZW4K PiA+PiBuZWVkIENMS19TRVRfUkFURV9QQVJFTlQuIFRoaXMgZG9lcyBpbmRlZWQgc2VlbSB0byBi ZSBhCj4gPj4gY29udHJhZGljdGlvbi4KPiA+Cj4gPkkgc3VwcG9zZSBmb3IgZURQIGFuZCBEU0ks IHdoaWNoIGFyZSBtb3JlIG9yIGxlc3MgZml4ZWQsIGl0IHdvdWxkCgpXaGlsZSBEU0kgaXMgZml4 ZWQsIGVEUCBpcyBub3QuIFdoaWxlIHRoZSBBbmFsb2dpeC1EUCBjYW5ub3Qgc3VwcG9ydApEUCsg KERQIGNvbnZlcnRlZCB0byBIRE1JKSwgaXQgY2FuIHN1cHBvcnQgYSByZWFsIERQIGNvbm5lY3Rp b24ganVzdCBmaW5lLgoKCkhlaWtvCgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKTGludXgtcm9ja2No aXBAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2xpbnV4LXJvY2tjaGlwCg==