From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 21AA112CD9B; Mon, 26 Feb 2024 17:29:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708968576; cv=none; b=i1sqV8aozsqMViy5zVyt9Q+EWucHDya2Ng2i2iISavET0AAs1ckiAhZoGFVEZw52vZuGrnBl9o0f7WjxGE0+dRTLFxshiB9tBiQ2crYAqF3jKg5lqol+zXj6715vNlyEsszSCZp58mbyvGlzumntAgOjEs9RMCDxbRmCnrEQ8+I= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708968576; c=relaxed/simple; bh=PPWpZn6QtPq4YjG7xsHntmUxU7EVh0Grx4E9f2KCnvc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=BD4wxe0WDF5PHsJKuQ86XiZ9rZNk7jpEb5ch2c/fawrSbslSWRV/1kDCOh/SLK2aa8TtmM7UnZFada4OjIDNViIiXe7nQ0rLVbfFxKaJK3yOTvkSPI4GSBfODBNKMYAojVHwCLSY+RcCwj11+2Y/8W6Yt7nnBNpgEG8dj2akI7A= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=DRekSXus; arc=none smtp.client-ip=209.85.218.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DRekSXus" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-a43488745bcso192359666b.3; Mon, 26 Feb 2024 09:29:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1708968571; x=1709573371; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=uTNfYrs5k6Gz8OzZ/jpN+432GP+s/eKGWOpfysyFss0=; b=DRekSXuscqmuuBFo+98sI6lTLq8uUleca6U7+/pduuHPyB5GE/908tNkpRWLa2GBny AT7RorkQWr1hG6zrSU898xM5ohwVGP1M0dwEvl/RFDszj6UTqXD4LCamTCUAeLTl5zXX 1VOu4DGFW+ide7lCXhGHPzkB/g3UIC2avGD+Ptrj8Z6Q4bkzLLIgIV3tGKOoGmD3ljdc Tnj1rU/x24GHQkq1YCcGT2OxXsX0qb1zdBf6I4sULyLEF2zyCaV67Zx3FDlpQsZQnOMP +BH13J63p41NK2MX652I+BY/aSMZGxD34vIDinzgKqphlHBPrN7v7x+rQWGtnC2mppzn DOOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708968571; x=1709573371; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uTNfYrs5k6Gz8OzZ/jpN+432GP+s/eKGWOpfysyFss0=; b=oZwGcKIzpjkNSvCpA/CJ8aifmqSX+di42VH/II5/WyQNb54df1xa44LNtmeMa6Fvyv 0K3+qsfsWIoqJW2d5U6zkiWPrS77YETadzm36VK7JJMDzW6rqO3LmLVtRMFtbIZKi/wl 5YSRPXH1JuHZlxApkOKobrdFnyGp6cag2KIZWtsV+aeMmy2GRNLyA91/n1ZAvIF3Buz6 3ksg9flXnqmSPS/eZPQJpiy1YuoIJ0Pa7qSzFydrCHuYYQDsvHKrl1h8L7DfdtSRWJKN 3mb+aRvqPY84bSvewo//9VL+Fhsd85QqARSAbJdRK904QjAT883NwVrHhENMONbAV5FD Fjqw== X-Forwarded-Encrypted: i=1; AJvYcCWp2QmYStuxCZMXJ3Kx8q79cWq9HUhh7xh9nmmFhuIo7Fx5rBNYKJBqxoxZf2jjvYDz0b5Yqs0BHLilhtFeCTOqgc9lqEikE+l7+I/S60912YzKX/8JpFbKp9m0ZC57u07Ulx31bR+PTdMtBijW9eYn9MqSKHovdse9DL44wjDs101bTQ== X-Gm-Message-State: AOJu0YzyPpak277B/pPblKl2Nh+yB0fBjs4jKcv0cFQirSBle4ZG3nuZ TYTitFMX36tIkFxihfNne2Kap8DO1APy7TCy97R9lVM4TN7OrxcZ X-Google-Smtp-Source: AGHT+IF/2k+pmfOW66mPmU1VQ//WB/gsjeh7KQflarLtcUM81gJHGL8o2NsXzTzgDh1Y2GpLoJ6CEg== X-Received: by 2002:a17:906:d297:b0:a42:f7af:741b with SMTP id ay23-20020a170906d29700b00a42f7af741bmr4236943ejb.51.1708968571164; Mon, 26 Feb 2024 09:29:31 -0800 (PST) Received: from jernej-laptop.localnet (86-58-6-171.dynamic.telemach.net. [86.58.6.171]) by smtp.gmail.com with ESMTPSA id bj3-20020a17090736c300b00a3f5ff7b675sm2617714ejc.23.2024.02.26.09.29.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Feb 2024 09:29:30 -0800 (PST) From: Jernej =?utf-8?B?xaBrcmFiZWM=?= To: =?utf-8?B?T25kxZllag==?= Jirman , Maxime Ripard , Frank Oltmanns Cc: Michael Turquette , Stephen Boyd , Chen-Yu Tsai , Samuel Holland , Guido =?ISO-8859-1?Q?G=FCnther?= , Purism Kernel Team , Neil Armstrong , Jessica Zhang , Sam Ravnborg , Maarten Lankhorst , Thomas Zimmermann , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley , linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org Subject: Re: [PATCH v2 0/6] Pinephone video out fixes (flipping between two frames) Date: Mon, 26 Feb 2024 18:29:28 +0100 Message-ID: <3546609.iIbC2pHGDl@jernej-laptop> In-Reply-To: <875xybr93t.fsf@oltmanns.dev> References: <20240205-pinephone-pll-fixes-v2-0-96a46a2d8c9b@oltmanns.dev> <87r0h8n64g.fsf@oltmanns.dev> <875xybr93t.fsf@oltmanns.dev> Precedence: bulk X-Mailing-List: linux-clk@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="UTF-8" Dne ponedeljek, 26. februar 2024 ob 08:13:42 CET je Frank Oltmanns napisal(= a): > Hi Jernej, > hi Maxime, > hi Ond=C5=99ej, >=20 > On 2024-02-19 at 10:41:19 +0100, Frank Oltmanns wrot= e: > > Hi Ond=C5=99ej, > > > > On 2024-02-11 at 20:25:29 +0100, Ond=C5=99ej Jirman wrote: > >> Hi Frank, > >> > >> On Sun, Feb 11, 2024 at 04:09:16PM +0100, Frank Oltmanns wrote: > >>> Hi Ond=C5=99ej, > >>> > >>> On 2024-02-05 at 17:02:00 +0100, Ond=C5=99ej Jirman wro= te: > >>> > On Mon, Feb 05, 2024 at 04:54:07PM +0100, Ond=C5=99ej Jirman wrote: > >>> >> On Mon, Feb 05, 2024 at 04:22:23PM +0100, Frank Oltmanns wrote: > >>> >> > >>> >> [...] > >>> >> > >>> >> Also sunxi-ng clk driver does apply NM factors at once to PLL_GPU = clock, > >>> >> which can cause sudden frequency increase beyond intended output f= requency, > >>> >> because division is applied immediately while multiplication is re= flected > >>> >> slowly. > >>> >> > >>> >> Eg. if you're changing divider from 7 to 1, you can get a sudden 7= x output > >>> >> frequency spike, before PLL VCO manages to lower the frequency thr= ough N clk > >>> >> divider feedback loop and lock on again. This can mess up whatever= 's connected > >>> >> to the output quite badly. > >>> >> > >>> >> You'd have to put logging on kernel writes to PLL_GPU register to = see what > >>> >> is written in there and if divider is lowered significantly on som= e GPU > >>> >> devfreq frequency transitions. > >>> > >>> By looking at the clocks in clk_summary in debugfs, the rate of PLL-G= PU > >>> always matches the rate of the GPU (at least at 120, 312, and 432 MHz= ). > >>> This is further underlined by the fact, that none of the rates can be > >>> achieved by integer dividing one of the other rates. sunxi-ng would > >>> only favor a different rate for pll-gpu than the one that is requested > >>> for the gpu, if pll-gpu is already running at a rate such that there > >>> exists an M =E2=88=88 {1, 2, 3, 4, 5, 6, 7, 8}, where > >>> rate of pll-gpu / M =3D requested gpu rate > >>> or if the requested rate could not be reached directly by pll-gpu. Bo= th > >>> is not the case for the rates in question (120, 192, 312, and 432 MHz= ). > >>> > >>> This means that the following divisor/multipliers are used by sunxi-n= g's > >>> ccu_nm: > >>> N =3D 5, M =3D 1 for 120 MHz (min value without PATCH 6) > >>> N =3D 8, M =3D 1 for 192 MHz (min value after applying PATCH 6) > >>> N =3D 13, M =3D 1 for 312 MHz > >>> N =3D 18, M =3D 1 for 432 MHz > >>> > >>> So, with or without PATCH 6, the divider stays constant and it's only > >>> the multiplier that changes. This means, there should be no unexpected > >>> frequency spikes, right? > >> > >> Maybe. Thanks for giving it a try. There may still be other kinds of g= litches > >> even if the divisor stays the same. It all depends how the register up= date is > >> implemented in the PLL block. It's hard to say. I guess, unless Allwin= ner > >> guarantees glitchless output from a given PLL when changing its parame= ters, > >> you can't rely on the output being clean during changes. > >> > >>> >> It's also unclear what happens when FRAC_CLK_OUT or PLL_MODE_SEL c= hanges. > >>> > >>> Those are not changed once the clock is initialized. The bug however > >>> occurs hours or days after booting. IMO, this makes it unlikely that = this > >>> could be the culprit. > >>> > >>> >> Maybe not much because M is supposed to be set to 1, but you still= need to > >>> >> care when enabling fractional mode, and setting M to 1 because tha= t's exactly > >>> >> the bad scenario if M was previously higher than 1. > >>> >> > >>> >> It's tricky. > >>> >> > >>> >> Having GPU module clock gated during PLL config changes may help! = You can > >>> >> do that without locking yourself out, unlike with the CPU PLL. > >>> >> > >>> >> There's a gate enable bit for it at GPU_CLK_REG.SCLK_GATING. (page= 122) > >>> > >>> The GPU should already be properly gated: > >>> https://elixir.bootlin.com/linux/v6.7.4/source/drivers/clk/sunxi-ng/c= cu-sun50i-a64.c#L599 > >> > >> How so? That's just clock declaration. How does it guarantee the clock= to the > >> module is gated during parent PLL configuration changes? > >> > > > > You're of course right. > > > > I now tried using a similar approach like the one for changes for on > > PLL-CPU. It's using a notifier to connect the CPU to the 24 MHz > > oscillator and, after PLL-CPU is at its new rate, connecting it back to > > PLL-CPU. > > > > For the GPU my approach was to disable the GPU prior to changing > > PLL-GPU's rate and then re-enabling it, once the rate change is > > complete. I think, that's what you were proposing, right? > > > > Unfortunately, this results in a frozen phone even more quickly. > > > > Below is my code. Again, it doesn't solve the problem, but maybe > > somebody can spot what I'm doing wrong. >=20 > It seems to me that all options for changing the GPU's rate in a stable > manner have been exhausted. There seems to be no common interpretation > what the phrase "Clock output of PLL_GPU can be used for GPU;and dynamic > frequency scaling is not supported" in the Allwinner A64 manual (chapter > 3.3.3) means. >=20 > The BSP uses a fixed rate of 432 MHz. Unless one of you has a clever > idea, I suggest to remove the OPPs from the device tree and set the GPU > to 432 MHz. >=20 > What are your thoughts on that? I can't find original source of these points. So I'm good with removing them. But instead of fully removing table, you can just leave one point and it should work. Best regards, Jernej >=20 > Best regards, > Frank >=20 > > > > Best regards, > > Frank > > > > diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c b/drivers/clk/sunxi-= ng/ccu-sun50i-a64.c > > index d68bdf7dd342..74538259d67a 100644 > > --- a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c > > +++ b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c > > @@ -977,6 +977,11 @@ static struct ccu_rate_reset_nb sun50i_a64_pll_vid= eo0_reset_tcon0_nb =3D { > > > > #define CCU_MIPI_DSI_CLK 0x168 > > > > +static struct ccu_div_nb sun50i_a64_gpu_nb =3D { > > + .common =3D &gpu_clk.common, > > + .delay_us =3D 1, /* ??? */ > > +}; > > + > > static int sun50i_a64_ccu_probe(struct platform_device *pdev) > > { > > void __iomem *reg; > > @@ -1025,6 +1030,10 @@ static int sun50i_a64_ccu_probe(struct platform_= device *pdev) > > sun50i_a64_pll_video0_reset_tcon0_nb.target_clk =3D tcon0_clk.common.= hw.clk; > > ccu_rate_reset_notifier_register(&sun50i_a64_pll_video0_reset_tcon0_n= b); > > > > + /* Gate then ungate GPU on PLL-GPU changes */ > > + ccu_div_notifier_register(pll_gpu_clk.common.hw.clk, > > + &sun50i_a64_gpu_nb); > > + > > return 0; > > } > > > > diff --git a/drivers/clk/sunxi-ng/ccu_div.c b/drivers/clk/sunxi-ng/ccu_= div.c > > index cb10a3ea23f9..83813c54fb2f 100644 > > --- a/drivers/clk/sunxi-ng/ccu_div.c > > +++ b/drivers/clk/sunxi-ng/ccu_div.c > > @@ -4,7 +4,9 @@ > > * Maxime Ripard > > */ > > > > +#include > > #include > > +#include > > #include > > > > #include "ccu_gate.h" > > @@ -142,3 +144,37 @@ const struct clk_ops ccu_div_ops =3D { > > .set_rate =3D ccu_div_set_rate, > > }; > > EXPORT_SYMBOL_NS_GPL(ccu_div_ops, SUNXI_CCU); > > + > > +static int ccu_div_notifier_cb(struct notifier_block *nb, > > + unsigned long event, void *data) > > +{ > > + struct ccu_div_nb *div_nb =3D to_ccu_div_nb(nb); > > + > > + if (event =3D=3D PRE_RATE_CHANGE) { > > + div_nb->original_enable =3D ccu_div_is_enabled(&div_nb->common->hw); > > + if (div_nb->original_enable) { > > + ccu_div_disable(&div_nb->common->hw); > > + udelay(div_nb->delay_us); > > + } > > + } else if (event =3D=3D POST_RATE_CHANGE) { > > + if (div_nb->original_enable) { > > + ccu_div_enable(&div_nb->common->hw); > > + udelay(div_nb->delay_us); > > + } > > + } > > + > > + return NOTIFY_OK; > > +} > > + > > +int ccu_div_notifier_register(struct clk *clk, struct ccu_div_nb *div_= nb) > > +{ > > + div_nb->clk_nb.notifier_call =3D ccu_div_notifier_cb; > > + > > + return clk_notifier_register(clk, &div_nb->clk_nb); > > +} > > diff --git a/drivers/clk/sunxi-ng/ccu_div.h b/drivers/clk/sunxi-ng/ccu_= div.h > > index 90d49ee8e0cc..e096c7be5dca 100644 > > --- a/drivers/clk/sunxi-ng/ccu_div.h > > +++ b/drivers/clk/sunxi-ng/ccu_div.h > > @@ -283,4 +283,16 @@ static inline struct ccu_div *hw_to_ccu_div(struct= clk_hw *hw) > > > > extern const struct clk_ops ccu_div_ops; > > > > +struct ccu_div_nb { > > + struct notifier_block clk_nb; > > + struct ccu_common *common; > > + > > + u32 delay_us; /* us to wait after changing parent rate */ > > + int original_enable;/* This is set by the notifier callback */ > > +}; > > + > > +#define to_ccu_div_nb(_nb) container_of(_nb, struct ccu_div_nb, clk_nb) > > + > > +int ccu_div_notifier_register(struct clk *clk, struct ccu_div_nb *mux_= nb); > > + > > #endif /* _CCU_DIV_H_ */ > > > > > > > >> > >> CLK_SET_RATE_PARENT only gates output on re-parenting, not on parent r= ate changes, > >> according to the header: > >> > >> https://elixir.bootlin.com/linux/v6.7.4/source/include/linux/clk-pro= vider.h#L19 > >> > >> You'd need perhaps CLK_SET_RATE_GATE *and* still verify that it actual= ly works > >> as expected via some tracing of gpu clock enable/disable/set_rate and = pll-gpu > >> set_rate. CLK_SET_RATE_GATE seems confusingly docummented: > >> > >> https://elixir.bootlin.com/linux/v6.7.4/source/drivers/clk/clk.c#L10= 34 > >> > >> so I don't particularly trust it does exaclty what the header claims a= nd what > >> would be needed to test the theory that gating gpu clock during rate c= hange > >> might help. > >> > >> kind regards, > >> o. > >> > >>> Thank you for your detailed proposal! It was insightful to read. But > >>> while those were all great ideas, they have all already been taken ca= re > >>> of. I'm fresh out of ideas again (except for pinning the GPU rate). > >>> > >>> Again, thank you so much, > >>> Frank > >>> > >>> >> > >>> >> Kind regards, > >>> >> o. > >>> >> > >>> >> > I very much appreciate your feedback! > >>> >> > > >>> >> > [1] https://gitlab.com/postmarketOS/pmaports/-/issues/805 > >>> >> > > >>> >> > Signed-off-by: Frank Oltmanns > >>> >> > --- > >>> >> > Changes in v2: > >>> >> > - dts: Increase minimum GPU frequency to 192 MHz. > >>> >> > - nkm and a64: Add minimum and maximum rate for PLL-MIPI. > >>> >> > - nkm: Use the same approach for skipping invalid rates in > >>> >> > ccu_nkm_find_best() as in ccu_nkm_find_best_with_parent_adj(). > >>> >> > - nkm: Improve names for ratio struct members and hence get rid = of > >>> >> > describing comments. > >>> >> > - nkm and a64: Correct description in the commit messages: M/N <= =3D 3 > >>> >> > - Remove patches for nm as they were not needed. > >>> >> > - st7703: Rework the commit message to cover more background for= the > >>> >> > change. > >>> >> > - Link to v1: https://lore.kernel.org/r/20231218-pinephone-pll-f= ixes-v1-0-e238b6ed6dc1@oltmanns.dev > >>> >> > > >>> >> > --- > >>> >> > Frank Oltmanns (6): > >>> >> > clk: sunxi-ng: nkm: Support constraints on m/n ratio and p= arent rate > >>> >> > clk: sunxi-ng: a64: Add constraints on PLL-MIPI's n/m rati= o and parent rate > >>> >> > clk: sunxi-ng: nkm: Support minimum and maximum rate > >>> >> > clk: sunxi-ng: a64: Set minimum and maximum rate for PLL-M= IPI > >>> >> > drm/panel: st7703: Drive XBD599 panel at higher clock rate > >>> >> > arm64: dts: allwinner: a64: Fix minimum GPU OPP rate > >>> >> > > >>> >> > arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 4 ++-- > >>> >> > drivers/clk/sunxi-ng/ccu-sun50i-a64.c | 14 +++++++---- > >>> >> > drivers/clk/sunxi-ng/ccu_nkm.c | 34 ++++++++++++= +++++++++++++++ > >>> >> > drivers/clk/sunxi-ng/ccu_nkm.h | 4 ++++ > >>> >> > drivers/gpu/drm/panel/panel-sitronix-st7703.c | 14 +++++------ > >>> >> > 5 files changed, 56 insertions(+), 14 deletions(-) > >>> >> > --- > >>> >> > base-commit: 059c53e877ca6e723e10490c27c1487a63e66efe > >>> >> > change-id: 20231218-pinephone-pll-fixes-0ccdfde273e4 > >>> >> > > >>> >> > Best regards, > >>> >> > -- > >>> >> > Frank Oltmanns > >>> >> > >=20 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 2D885C5478C for ; Mon, 26 Feb 2024 17:29:52 +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=MXfaK5V7vbBv1HkHlkE7Zxa8HLyMutiwvX32Nj5SRlA=; b=HWGaisuhmEKQB0 2CAb7zHHuL+Ih+FQe0N3BZJCtN0ihTz0xQ+znH/nGo7XTHAaZKRSt399N4YHIV+3+CPuVtF/itkTD 9U3qUkZsUsdtzhM+3Ni/hPzkojfTJ1/iXQIp70Kn3w5zhA9Yp/Fxh/TtG9kCWAC7e7DKlZbv0wUir qlz6tz6RD0eNua41C8jAdZyASMq0FWJv1Ld9+1k79ZF15OaVNOMXxuaw8vKQi3ywx5hZnkCl5Y4Zk WFVViSxSfpGj7NcogycW/M5OBdkmy9pABcjz1VCLhcaHpXfOEb1yiMBJ+3aO1Q9pp/+8iOnDasfr8 Nd5fHlaUN0ysgiqowb7w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1reenJ-00000001ye1-0ivJ; Mon, 26 Feb 2024 17:29:37 +0000 Received: from mail-ej1-x62d.google.com ([2a00:1450:4864:20::62d]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1reenF-00000001ycF-2HNq for linux-arm-kernel@lists.infradead.org; Mon, 26 Feb 2024 17:29:35 +0000 Received: by mail-ej1-x62d.google.com with SMTP id a640c23a62f3a-a43488745bcso192359366b.3 for ; Mon, 26 Feb 2024 09:29:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1708968571; x=1709573371; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=uTNfYrs5k6Gz8OzZ/jpN+432GP+s/eKGWOpfysyFss0=; b=GfLiKGeBvv7cnLL7FNF/Pl95yG4HfKhMxfEDSWIWrvGbLF9igbe+GI5BbSjJO0OYh3 PkPXgmj7cHuunnrbI+jf+sL7wqux5etx77rRe4YFRsaOL0uCQd9cFgz2Du69Fw8yrOtL FGIW5VHOOWdY6O/gmcQ0bNZEv5QaFUjXA340PMGnSo4W/LGyVIwQ8v3JhthzuJasiO4Z G3FNslML24+ryKZfIv9cYWEonGC0KuPAR3C36RhnXIl+hcIEFTc86eLMpg4cpY4zyHHs i5BBBLFrKKMg/5TOghx0BfuSd0lr16phic0ohhtvozIWPjCXgvKsIa1qN8rE/I8EYPOt wSUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708968571; x=1709573371; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uTNfYrs5k6Gz8OzZ/jpN+432GP+s/eKGWOpfysyFss0=; b=GOncSKdN9duwG6+Vc8kEWM49SEq0gOzNZYCa13EfiBSrH4Bd7Kpwn+6iiRsJSc9Jew XGOYdixi1PlU7FXkoz+w+7ZuzPTFYPuROJCXDoM0BJrQop1uJi39/4wIYDMuhh6x17nS u6nu/xNaMlCgSO9FeHc3Rlzey2NjWlCUAVg1PzA3XwvY7/cx1Z79NKZf5s1Gp6H7R8A3 axJYX0zmF2fc2vi3Ir8IzNvkgvt38g+DLwnBba1nCVVcFGdX9Vwbd0MjfFKeiFTzn9W2 R7kHG6F1vPnWfEF9r3IkkLU1bsuFyNoXyzRWSi/DP4EXG9lwtrufgqx2vMaUOfqZK1x0 I6KQ== X-Forwarded-Encrypted: i=1; AJvYcCUmwdvcVZbkOqqsL0ywDz5Lqkd7BuvwYx9GTOaif0n2y59sT0Je43ixtUZ65KTNUof7Jh0/31tB/7hJoJ7NtewAeBSaswOS0zZfXQSk57Oxl70+4zE= X-Gm-Message-State: AOJu0YyUqUHWe4J/0PXu8ouHkOOLGkD+kvbxEWWpTphyj4CFvjl4ry0v HWkEcmyF5rdoJiHw6LmHqETaW0MXgFoywyS4jFu2la/Hrzn5cbq9 X-Google-Smtp-Source: AGHT+IF/2k+pmfOW66mPmU1VQ//WB/gsjeh7KQflarLtcUM81gJHGL8o2NsXzTzgDh1Y2GpLoJ6CEg== X-Received: by 2002:a17:906:d297:b0:a42:f7af:741b with SMTP id ay23-20020a170906d29700b00a42f7af741bmr4236943ejb.51.1708968571164; Mon, 26 Feb 2024 09:29:31 -0800 (PST) Received: from jernej-laptop.localnet (86-58-6-171.dynamic.telemach.net. [86.58.6.171]) by smtp.gmail.com with ESMTPSA id bj3-20020a17090736c300b00a3f5ff7b675sm2617714ejc.23.2024.02.26.09.29.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Feb 2024 09:29:30 -0800 (PST) From: Jernej =?utf-8?B?xaBrcmFiZWM=?= To: =?utf-8?B?T25kxZllag==?= Jirman , Maxime Ripard , Frank Oltmanns Cc: Michael Turquette , Stephen Boyd , Chen-Yu Tsai , Samuel Holland , Guido =?ISO-8859-1?Q?G=FCnther?= , Purism Kernel Team , Neil Armstrong , Jessica Zhang , Sam Ravnborg , Maarten Lankhorst , Thomas Zimmermann , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley , linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org Subject: Re: [PATCH v2 0/6] Pinephone video out fixes (flipping between two frames) Date: Mon, 26 Feb 2024 18:29:28 +0100 Message-ID: <3546609.iIbC2pHGDl@jernej-laptop> In-Reply-To: <875xybr93t.fsf@oltmanns.dev> References: <20240205-pinephone-pll-fixes-v2-0-96a46a2d8c9b@oltmanns.dev> <87r0h8n64g.fsf@oltmanns.dev> <875xybr93t.fsf@oltmanns.dev> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240226_092933_636973_94EAD11D X-CRM114-Status: GOOD ( 68.42 ) 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RG5lIHBvbmVkZWxqZWssIDI2LiBmZWJydWFyIDIwMjQgb2IgMDg6MTM6NDIgQ0VUIGplIEZyYW5r IE9sdG1hbm5zIG5hcGlzYWwoYSk6Cj4gSGkgSmVybmVqLAo+IGhpIE1heGltZSwKPiBoaSBPbmTF mWVqLAo+IAo+IE9uIDIwMjQtMDItMTkgYXQgMTA6NDE6MTkgKzAxMDAsIEZyYW5rIE9sdG1hbm5z IDxmcmFua0BvbHRtYW5ucy5kZXY+IHdyb3RlOgo+ID4gSGkgT25kxZllaiwKPiA+Cj4gPiBPbiAy MDI0LTAyLTExIGF0IDIwOjI1OjI5ICswMTAwLCBPbmTFmWVqIEppcm1hbiA8bWVnaUB4ZmYuY3o+ IHdyb3RlOgo+ID4+IEhpIEZyYW5rLAo+ID4+Cj4gPj4gT24gU3VuLCBGZWIgMTEsIDIwMjQgYXQg MDQ6MDk6MTZQTSArMDEwMCwgRnJhbmsgT2x0bWFubnMgd3JvdGU6Cj4gPj4+IEhpIE9uZMWZZWos Cj4gPj4+Cj4gPj4+IE9uIDIwMjQtMDItMDUgYXQgMTc6MDI6MDAgKzAxMDAsIE9uZMWZZWogSmly bWFuIDxtZWdpQHhmZi5jej4gd3JvdGU6Cj4gPj4+ID4gT24gTW9uLCBGZWIgMDUsIDIwMjQgYXQg MDQ6NTQ6MDdQTSArMDEwMCwgT25kxZllaiBKaXJtYW4gd3JvdGU6Cj4gPj4+ID4+IE9uIE1vbiwg RmViIDA1LCAyMDI0IGF0IDA0OjIyOjIzUE0gKzAxMDAsIEZyYW5rIE9sdG1hbm5zIHdyb3RlOgo+ ID4+PiA+Pgo+ID4+PiA+PiBbLi4uXQo+ID4+PiA+Pgo+ID4+PiA+PiBBbHNvIHN1bnhpLW5nIGNs ayBkcml2ZXIgZG9lcyBhcHBseSBOTSBmYWN0b3JzIGF0IG9uY2UgdG8gUExMX0dQVSBjbG9jaywK PiA+Pj4gPj4gd2hpY2ggY2FuIGNhdXNlIHN1ZGRlbiBmcmVxdWVuY3kgaW5jcmVhc2UgYmV5b25k IGludGVuZGVkIG91dHB1dCBmcmVxdWVuY3ksCj4gPj4+ID4+IGJlY2F1c2UgZGl2aXNpb24gaXMg YXBwbGllZCBpbW1lZGlhdGVseSB3aGlsZSBtdWx0aXBsaWNhdGlvbiBpcyByZWZsZWN0ZWQKPiA+ Pj4gPj4gc2xvd2x5Lgo+ID4+PiA+Pgo+ID4+PiA+PiBFZy4gaWYgeW91J3JlIGNoYW5naW5nIGRp dmlkZXIgZnJvbSA3IHRvIDEsIHlvdSBjYW4gZ2V0IGEgc3VkZGVuIDd4IG91dHB1dAo+ID4+PiA+ PiBmcmVxdWVuY3kgc3Bpa2UsIGJlZm9yZSBQTEwgVkNPIG1hbmFnZXMgdG8gbG93ZXIgdGhlIGZy ZXF1ZW5jeSB0aHJvdWdoIE4gY2xrCj4gPj4+ID4+IGRpdmlkZXIgZmVlZGJhY2sgbG9vcCBhbmQg bG9jayBvbiBhZ2Fpbi4gVGhpcyBjYW4gbWVzcyB1cCB3aGF0ZXZlcidzIGNvbm5lY3RlZAo+ID4+ PiA+PiB0byB0aGUgb3V0cHV0IHF1aXRlIGJhZGx5Lgo+ID4+PiA+Pgo+ID4+PiA+PiBZb3UnZCBo YXZlIHRvIHB1dCBsb2dnaW5nIG9uIGtlcm5lbCB3cml0ZXMgdG8gUExMX0dQVSByZWdpc3RlciB0 byBzZWUgd2hhdAo+ID4+PiA+PiBpcyB3cml0dGVuIGluIHRoZXJlIGFuZCBpZiBkaXZpZGVyIGlz IGxvd2VyZWQgc2lnbmlmaWNhbnRseSBvbiBzb21lIEdQVQo+ID4+PiA+PiBkZXZmcmVxIGZyZXF1 ZW5jeSB0cmFuc2l0aW9ucy4KPiA+Pj4KPiA+Pj4gQnkgbG9va2luZyBhdCB0aGUgY2xvY2tzIGlu IGNsa19zdW1tYXJ5IGluIGRlYnVnZnMsIHRoZSByYXRlIG9mIFBMTC1HUFUKPiA+Pj4gYWx3YXlz IG1hdGNoZXMgdGhlIHJhdGUgb2YgdGhlIEdQVSAoYXQgbGVhc3QgYXQgMTIwLCAzMTIsIGFuZCA0 MzIgTUh6KS4KPiA+Pj4gVGhpcyBpcyBmdXJ0aGVyIHVuZGVybGluZWQgYnkgdGhlIGZhY3QsIHRo YXQgbm9uZSBvZiB0aGUgcmF0ZXMgY2FuIGJlCj4gPj4+IGFjaGlldmVkIGJ5IGludGVnZXIgZGl2 aWRpbmcgb25lIG9mIHRoZSBvdGhlciByYXRlcy4gc3VueGktbmcgd291bGQKPiA+Pj4gb25seSBm YXZvciBhIGRpZmZlcmVudCByYXRlIGZvciBwbGwtZ3B1IHRoYW4gdGhlIG9uZSB0aGF0IGlzIHJl cXVlc3RlZAo+ID4+PiBmb3IgdGhlIGdwdSwgaWYgcGxsLWdwdSBpcyBhbHJlYWR5IHJ1bm5pbmcg YXQgYSByYXRlIHN1Y2ggdGhhdCB0aGVyZQo+ID4+PiBleGlzdHMgYW4gTSDiiIggezEsIDIsIDMs IDQsIDUsIDYsIDcsIDh9LCB3aGVyZQo+ID4+PiAgIHJhdGUgb2YgcGxsLWdwdSAvIE0gPSByZXF1 ZXN0ZWQgZ3B1IHJhdGUKPiA+Pj4gb3IgaWYgdGhlIHJlcXVlc3RlZCByYXRlIGNvdWxkIG5vdCBi ZSByZWFjaGVkIGRpcmVjdGx5IGJ5IHBsbC1ncHUuIEJvdGgKPiA+Pj4gaXMgbm90IHRoZSBjYXNl IGZvciB0aGUgcmF0ZXMgaW4gcXVlc3Rpb24gKDEyMCwgMTkyLCAzMTIsIGFuZCA0MzIgTUh6KS4K PiA+Pj4KPiA+Pj4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgZGl2aXNvci9tdWx0aXBs aWVycyBhcmUgdXNlZCBieSBzdW54aS1uZydzCj4gPj4+IGNjdV9ubToKPiA+Pj4gTiA9ICA1LCBN ID0gMSBmb3IgMTIwIE1IeiAobWluIHZhbHVlIHdpdGhvdXQgUEFUQ0ggNikKPiA+Pj4gTiA9ICA4 LCBNID0gMSBmb3IgMTkyIE1IeiAobWluIHZhbHVlIGFmdGVyIGFwcGx5aW5nIFBBVENIIDYpCj4g Pj4+IE4gPSAxMywgTSA9IDEgZm9yIDMxMiBNSHoKPiA+Pj4gTiA9IDE4LCBNID0gMSBmb3IgNDMy IE1Iego+ID4+Pgo+ID4+PiBTbywgd2l0aCBvciB3aXRob3V0IFBBVENIIDYsIHRoZSBkaXZpZGVy IHN0YXlzIGNvbnN0YW50IGFuZCBpdCdzIG9ubHkKPiA+Pj4gdGhlIG11bHRpcGxpZXIgdGhhdCBj aGFuZ2VzLiBUaGlzIG1lYW5zLCB0aGVyZSBzaG91bGQgYmUgbm8gdW5leHBlY3RlZAo+ID4+PiBm cmVxdWVuY3kgc3Bpa2VzLCByaWdodD8KPiA+Pgo+ID4+IE1heWJlLiBUaGFua3MgZm9yIGdpdmlu ZyBpdCBhIHRyeS4gVGhlcmUgbWF5IHN0aWxsIGJlIG90aGVyIGtpbmRzIG9mIGdsaXRjaGVzCj4g Pj4gZXZlbiBpZiB0aGUgZGl2aXNvciBzdGF5cyB0aGUgc2FtZS4gSXQgYWxsIGRlcGVuZHMgaG93 IHRoZSByZWdpc3RlciB1cGRhdGUgaXMKPiA+PiBpbXBsZW1lbnRlZCBpbiB0aGUgUExMIGJsb2Nr LiBJdCdzIGhhcmQgdG8gc2F5LiBJIGd1ZXNzLCB1bmxlc3MgQWxsd2lubmVyCj4gPj4gZ3VhcmFu dGVlcyBnbGl0Y2hsZXNzIG91dHB1dCBmcm9tIGEgZ2l2ZW4gUExMIHdoZW4gY2hhbmdpbmcgaXRz IHBhcmFtZXRlcnMsCj4gPj4geW91IGNhbid0IHJlbHkgb24gdGhlIG91dHB1dCBiZWluZyBjbGVh biBkdXJpbmcgY2hhbmdlcy4KPiA+Pgo+ID4+PiA+PiBJdCdzIGFsc28gdW5jbGVhciB3aGF0IGhh cHBlbnMgd2hlbiBGUkFDX0NMS19PVVQgb3IgUExMX01PREVfU0VMIGNoYW5nZXMuCj4gPj4+Cj4g Pj4+IFRob3NlIGFyZSBub3QgY2hhbmdlZCBvbmNlIHRoZSBjbG9jayBpcyBpbml0aWFsaXplZC4g VGhlIGJ1ZyBob3dldmVyCj4gPj4+IG9jY3VycyBob3VycyBvciBkYXlzIGFmdGVyIGJvb3Rpbmcu IElNTywgdGhpcyBtYWtlcyBpdCB1bmxpa2VseSB0aGF0IHRoaXMKPiA+Pj4gY291bGQgYmUgdGhl IGN1bHByaXQuCj4gPj4+Cj4gPj4+ID4+IE1heWJlIG5vdCBtdWNoIGJlY2F1c2UgTSBpcyBzdXBw b3NlZCB0byBiZSBzZXQgdG8gMSwgYnV0IHlvdSBzdGlsbCBuZWVkIHRvCj4gPj4+ID4+IGNhcmUg d2hlbiBlbmFibGluZyBmcmFjdGlvbmFsIG1vZGUsIGFuZCBzZXR0aW5nIE0gdG8gMSBiZWNhdXNl IHRoYXQncyBleGFjdGx5Cj4gPj4+ID4+IHRoZSBiYWQgc2NlbmFyaW8gaWYgTSB3YXMgcHJldmlv dXNseSBoaWdoZXIgdGhhbiAxLgo+ID4+PiA+Pgo+ID4+PiA+PiBJdCdzIHRyaWNreS4KPiA+Pj4g Pj4KPiA+Pj4gPj4gSGF2aW5nIEdQVSBtb2R1bGUgY2xvY2sgZ2F0ZWQgZHVyaW5nIFBMTCBjb25m aWcgY2hhbmdlcyBtYXkgaGVscCEgWW91IGNhbgo+ID4+PiA+PiBkbyB0aGF0IHdpdGhvdXQgbG9j a2luZyB5b3Vyc2VsZiBvdXQsIHVubGlrZSB3aXRoIHRoZSBDUFUgUExMLgo+ID4+PiA+Pgo+ID4+ PiA+PiBUaGVyZSdzIGEgZ2F0ZSBlbmFibGUgYml0IGZvciBpdCBhdCBHUFVfQ0xLX1JFRy5TQ0xL X0dBVElORy4gKHBhZ2UgMTIyKQo+ID4+Pgo+ID4+PiBUaGUgR1BVIHNob3VsZCBhbHJlYWR5IGJl IHByb3Blcmx5IGdhdGVkOgo+ID4+PiBodHRwczovL2VsaXhpci5ib290bGluLmNvbS9saW51eC92 Ni43LjQvc291cmNlL2RyaXZlcnMvY2xrL3N1bnhpLW5nL2NjdS1zdW41MGktYTY0LmMjTDU5OQo+ ID4+Cj4gPj4gSG93IHNvPyBUaGF0J3MganVzdCBjbG9jayBkZWNsYXJhdGlvbi4gSG93IGRvZXMg aXQgZ3VhcmFudGVlIHRoZSBjbG9jayB0byB0aGUKPiA+PiBtb2R1bGUgaXMgZ2F0ZWQgZHVyaW5n IHBhcmVudCBQTEwgY29uZmlndXJhdGlvbiBjaGFuZ2VzPwo+ID4+Cj4gPgo+ID4gWW91J3JlIG9m IGNvdXJzZSByaWdodC4KPiA+Cj4gPiBJIG5vdyB0cmllZCB1c2luZyBhIHNpbWlsYXIgYXBwcm9h Y2ggbGlrZSB0aGUgb25lIGZvciBjaGFuZ2VzIGZvciBvbgo+ID4gUExMLUNQVS4gSXQncyB1c2lu ZyBhIG5vdGlmaWVyIHRvIGNvbm5lY3QgdGhlIENQVSB0byB0aGUgMjQgTUh6Cj4gPiBvc2NpbGxh dG9yIGFuZCwgYWZ0ZXIgUExMLUNQVSBpcyBhdCBpdHMgbmV3IHJhdGUsIGNvbm5lY3RpbmcgaXQg YmFjayB0bwo+ID4gUExMLUNQVS4KPiA+Cj4gPiBGb3IgdGhlIEdQVSBteSBhcHByb2FjaCB3YXMg dG8gZGlzYWJsZSB0aGUgR1BVIHByaW9yIHRvIGNoYW5naW5nCj4gPiBQTEwtR1BVJ3MgcmF0ZSBh bmQgdGhlbiByZS1lbmFibGluZyBpdCwgb25jZSB0aGUgcmF0ZSBjaGFuZ2UgaXMKPiA+IGNvbXBs ZXRlLiBJIHRoaW5rLCB0aGF0J3Mgd2hhdCB5b3Ugd2VyZSBwcm9wb3NpbmcsIHJpZ2h0Pwo+ID4K PiA+IFVuZm9ydHVuYXRlbHksIHRoaXMgcmVzdWx0cyBpbiBhIGZyb3plbiBwaG9uZSBldmVuIG1v cmUgcXVpY2tseS4KPiA+Cj4gPiBCZWxvdyBpcyBteSBjb2RlLiBBZ2FpbiwgaXQgZG9lc24ndCBz b2x2ZSB0aGUgcHJvYmxlbSwgYnV0IG1heWJlCj4gPiBzb21lYm9keSBjYW4gc3BvdCB3aGF0IEkn bSBkb2luZyB3cm9uZy4KPiAKPiBJdCBzZWVtcyB0byBtZSB0aGF0IGFsbCBvcHRpb25zIGZvciBj aGFuZ2luZyB0aGUgR1BVJ3MgcmF0ZSBpbiBhIHN0YWJsZQo+IG1hbm5lciBoYXZlIGJlZW4gZXho YXVzdGVkLiBUaGVyZSBzZWVtcyB0byBiZSBubyBjb21tb24gaW50ZXJwcmV0YXRpb24KPiB3aGF0 IHRoZSBwaHJhc2UgIkNsb2NrIG91dHB1dCBvZiBQTExfR1BVIGNhbiBiZSB1c2VkIGZvciBHUFU7 YW5kIGR5bmFtaWMKPiBmcmVxdWVuY3kgc2NhbGluZyBpcyBub3Qgc3VwcG9ydGVkIiBpbiB0aGUg QWxsd2lubmVyIEE2NCBtYW51YWwgKGNoYXB0ZXIKPiAzLjMuMykgbWVhbnMuCj4gCj4gVGhlIEJT UCB1c2VzIGEgZml4ZWQgcmF0ZSBvZiA0MzIgTUh6LiBVbmxlc3Mgb25lIG9mIHlvdSBoYXMgYSBj bGV2ZXIKPiBpZGVhLCBJIHN1Z2dlc3QgdG8gcmVtb3ZlIHRoZSBPUFBzIGZyb20gdGhlIGRldmlj ZSB0cmVlIGFuZCBzZXQgdGhlIEdQVQo+IHRvIDQzMiBNSHouCj4gCj4gV2hhdCBhcmUgeW91ciB0 aG91Z2h0cyBvbiB0aGF0PwoKSSBjYW4ndCBmaW5kIG9yaWdpbmFsIHNvdXJjZSBvZiB0aGVzZSBw b2ludHMuIFNvIEknbSBnb29kIHdpdGggcmVtb3ZpbmcKdGhlbS4gQnV0IGluc3RlYWQgb2YgZnVs bHkgcmVtb3ZpbmcgdGFibGUsIHlvdSBjYW4ganVzdCBsZWF2ZSBvbmUgcG9pbnQgYW5kCml0IHNo b3VsZCB3b3JrLgoKQmVzdCByZWdhcmRzLApKZXJuZWoKCj4gCj4gQmVzdCByZWdhcmRzLAo+ICAg RnJhbmsKPiAKPiA+Cj4gPiBCZXN0IHJlZ2FyZHMsCj4gPiAgIEZyYW5rCj4gPgo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvY2xrL3N1bnhpLW5nL2NjdS1zdW41MGktYTY0LmMgYi9kcml2ZXJzL2Ns ay9zdW54aS1uZy9jY3Utc3VuNTBpLWE2NC5jCj4gPiBpbmRleCBkNjhiZGY3ZGQzNDIuLjc0NTM4 MjU5ZDY3YSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvY2xrL3N1bnhpLW5nL2NjdS1zdW41MGkt YTY0LmMKPiA+ICsrKyBiL2RyaXZlcnMvY2xrL3N1bnhpLW5nL2NjdS1zdW41MGktYTY0LmMKPiA+ IEBAIC05NzcsNiArOTc3LDExIEBAIHN0YXRpYyBzdHJ1Y3QgY2N1X3JhdGVfcmVzZXRfbmIgc3Vu NTBpX2E2NF9wbGxfdmlkZW8wX3Jlc2V0X3Rjb24wX25iID0gewo+ID4KPiA+ICAjZGVmaW5lIEND VV9NSVBJX0RTSV9DTEsgMHgxNjgKPiA+Cj4gPiArc3RhdGljIHN0cnVjdCBjY3VfZGl2X25iIHN1 bjUwaV9hNjRfZ3B1X25iID0gewo+ID4gKwkuY29tbW9uCQk9ICZncHVfY2xrLmNvbW1vbiwKPiA+ ICsJLmRlbGF5X3VzCT0gMSwgLyogPz8/ICovCj4gPiArfTsKPiA+ICsKPiA+ICBzdGF0aWMgaW50 IHN1bjUwaV9hNjRfY2N1X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gPiAg ewo+ID4gIAl2b2lkIF9faW9tZW0gKnJlZzsKPiA+IEBAIC0xMDI1LDYgKzEwMzAsMTAgQEAgc3Rh dGljIGludCBzdW41MGlfYTY0X2NjdV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQo+ID4gIAlzdW41MGlfYTY0X3BsbF92aWRlbzBfcmVzZXRfdGNvbjBfbmIudGFyZ2V0X2NsayA9 IHRjb24wX2Nsay5jb21tb24uaHcuY2xrOwo+ID4gIAljY3VfcmF0ZV9yZXNldF9ub3RpZmllcl9y ZWdpc3Rlcigmc3VuNTBpX2E2NF9wbGxfdmlkZW8wX3Jlc2V0X3Rjb24wX25iKTsKPiA+Cj4gPiAr CS8qIEdhdGUgdGhlbiB1bmdhdGUgR1BVIG9uIFBMTC1HUFUgY2hhbmdlcyAqLwo+ID4gKwljY3Vf ZGl2X25vdGlmaWVyX3JlZ2lzdGVyKHBsbF9ncHVfY2xrLmNvbW1vbi5ody5jbGssCj4gPiArCQkJ CSAgJnN1bjUwaV9hNjRfZ3B1X25iKTsKPiA+ICsKPiA+ICAJcmV0dXJuIDA7Cj4gPiAgfQo+ID4K PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9zdW54aS1uZy9jY3VfZGl2LmMgYi9kcml2ZXJz L2Nsay9zdW54aS1uZy9jY3VfZGl2LmMKPiA+IGluZGV4IGNiMTBhM2VhMjNmOS4uODM4MTNjNTRm YjJmIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9jbGsvc3VueGktbmcvY2N1X2Rpdi5jCj4gPiAr KysgYi9kcml2ZXJzL2Nsay9zdW54aS1uZy9jY3VfZGl2LmMKPiA+IEBAIC00LDcgKzQsOSBAQAo+ ID4gICAqIE1heGltZSBSaXBhcmQgPG1heGltZS5yaXBhcmRAZnJlZS1lbGVjdHJvbnMuY29tPgo+ ID4gICAqLwo+ID4KPiA+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4gPiAgI2luY2x1ZGUgPGxp bnV4L2Nsay1wcm92aWRlci5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+ID4gICNp bmNsdWRlIDxsaW51eC9pby5oPgo+ID4KPiA+ICAjaW5jbHVkZSAiY2N1X2dhdGUuaCIKPiA+IEBA IC0xNDIsMyArMTQ0LDM3IEBAIGNvbnN0IHN0cnVjdCBjbGtfb3BzIGNjdV9kaXZfb3BzID0gewo+ ID4gIAkuc2V0X3JhdGUJPSBjY3VfZGl2X3NldF9yYXRlLAo+ID4gIH07Cj4gPiAgRVhQT1JUX1NZ TUJPTF9OU19HUEwoY2N1X2Rpdl9vcHMsIFNVTlhJX0NDVSk7Cj4gPiArCj4gPiArc3RhdGljIGlu dCBjY3VfZGl2X25vdGlmaWVyX2NiKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsCj4gPiArCQkJ ICAgICAgIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKmRhdGEpCj4gPiArewo+ID4gKwlzdHJ1 Y3QgY2N1X2Rpdl9uYiAqZGl2X25iID0gdG9fY2N1X2Rpdl9uYihuYik7Cj4gPiArCj4gPiArCWlm IChldmVudCA9PSBQUkVfUkFURV9DSEFOR0UpIHsKPiA+ICsJCWRpdl9uYi0+b3JpZ2luYWxfZW5h YmxlID0gY2N1X2Rpdl9pc19lbmFibGVkKCZkaXZfbmItPmNvbW1vbi0+aHcpOwo+ID4gKwkJaWYg KGRpdl9uYi0+b3JpZ2luYWxfZW5hYmxlKSB7Cj4gPiArCQkJY2N1X2Rpdl9kaXNhYmxlKCZkaXZf bmItPmNvbW1vbi0+aHcpOwo+ID4gKwkJCXVkZWxheShkaXZfbmItPmRlbGF5X3VzKTsKPiA+ICsJ CX0KPiA+ICsJfSBlbHNlIGlmIChldmVudCA9PSBQT1NUX1JBVEVfQ0hBTkdFKSB7Cj4gPiArCQlp ZiAoZGl2X25iLT5vcmlnaW5hbF9lbmFibGUpIHsKPiA+ICsJCQljY3VfZGl2X2VuYWJsZSgmZGl2 X25iLT5jb21tb24tPmh3KTsKPiA+ICsJCQl1ZGVsYXkoZGl2X25iLT5kZWxheV91cyk7Cj4gPiAr CQl9Cj4gPiArCX0KPiA+ICsKPiA+ICsJcmV0dXJuIE5PVElGWV9PSzsKPiA+ICt9Cj4gPiArCj4g PiAraW50IGNjdV9kaXZfbm90aWZpZXJfcmVnaXN0ZXIoc3RydWN0IGNsayAqY2xrLCBzdHJ1Y3Qg Y2N1X2Rpdl9uYiAqZGl2X25iKQo+ID4gK3sKPiA+ICsJZGl2X25iLT5jbGtfbmIubm90aWZpZXJf Y2FsbCA9IGNjdV9kaXZfbm90aWZpZXJfY2I7Cj4gPiArCj4gPiArCXJldHVybiBjbGtfbm90aWZp ZXJfcmVnaXN0ZXIoY2xrLCAmZGl2X25iLT5jbGtfbmIpOwo+ID4gK30KPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2Nsay9zdW54aS1uZy9jY3VfZGl2LmggYi9kcml2ZXJzL2Nsay9zdW54aS1uZy9j Y3VfZGl2LmgKPiA+IGluZGV4IDkwZDQ5ZWU4ZTBjYy4uZTA5NmM3YmU1ZGNhIDEwMDY0NAo+ID4g LS0tIGEvZHJpdmVycy9jbGsvc3VueGktbmcvY2N1X2Rpdi5oCj4gPiArKysgYi9kcml2ZXJzL2Ns ay9zdW54aS1uZy9jY3VfZGl2LmgKPiA+IEBAIC0yODMsNCArMjgzLDE2IEBAIHN0YXRpYyBpbmxp bmUgc3RydWN0IGNjdV9kaXYgKmh3X3RvX2NjdV9kaXYoc3RydWN0IGNsa19odyAqaHcpCj4gPgo+ ID4gIGV4dGVybiBjb25zdCBzdHJ1Y3QgY2xrX29wcyBjY3VfZGl2X29wczsKPiA+Cj4gPiArc3Ry dWN0IGNjdV9kaXZfbmIgewo+ID4gKwlzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sJY2xrX25iOwo+ID4g KwlzdHJ1Y3QgY2N1X2NvbW1vbgkqY29tbW9uOwo+ID4gKwo+ID4gKwl1MzIJZGVsYXlfdXM7CS8q IHVzIHRvIHdhaXQgYWZ0ZXIgY2hhbmdpbmcgcGFyZW50IHJhdGUgKi8KPiA+ICsJaW50CW9yaWdp bmFsX2VuYWJsZTsvKiBUaGlzIGlzIHNldCBieSB0aGUgbm90aWZpZXIgY2FsbGJhY2sgKi8KPiA+ ICt9Owo+ID4gKwo+ID4gKyNkZWZpbmUgdG9fY2N1X2Rpdl9uYihfbmIpIGNvbnRhaW5lcl9vZihf bmIsIHN0cnVjdCBjY3VfZGl2X25iLCBjbGtfbmIpCj4gPiArCj4gPiAraW50IGNjdV9kaXZfbm90 aWZpZXJfcmVnaXN0ZXIoc3RydWN0IGNsayAqY2xrLCBzdHJ1Y3QgY2N1X2Rpdl9uYiAqbXV4X25i KTsKPiA+ICsKPiA+ICAjZW5kaWYgLyogX0NDVV9ESVZfSF8gKi8KPiA+Cj4gPgo+ID4KPiA+Pgo+ ID4+IENMS19TRVRfUkFURV9QQVJFTlQgb25seSBnYXRlcyBvdXRwdXQgb24gcmUtcGFyZW50aW5n LCBub3Qgb24gcGFyZW50IHJhdGUgY2hhbmdlcywKPiA+PiBhY2NvcmRpbmcgdG8gdGhlIGhlYWRl cjoKPiA+Pgo+ID4+ICAgaHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20vbGludXgvdjYuNy40L3Nv dXJjZS9pbmNsdWRlL2xpbnV4L2Nsay1wcm92aWRlci5oI0wxOQo+ID4+Cj4gPj4gWW91J2QgbmVl ZCBwZXJoYXBzIENMS19TRVRfUkFURV9HQVRFICphbmQqIHN0aWxsIHZlcmlmeSB0aGF0IGl0IGFj dHVhbGx5IHdvcmtzCj4gPj4gYXMgZXhwZWN0ZWQgdmlhIHNvbWUgdHJhY2luZyBvZiBncHUgY2xv Y2sgZW5hYmxlL2Rpc2FibGUvc2V0X3JhdGUgYW5kIHBsbC1ncHUKPiA+PiBzZXRfcmF0ZS4gQ0xL X1NFVF9SQVRFX0dBVEUgc2VlbXMgY29uZnVzaW5nbHkgZG9jdW1tZW50ZWQ6Cj4gPj4KPiA+PiAg IGh0dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29tL2xpbnV4L3Y2LjcuNC9zb3VyY2UvZHJpdmVycy9j bGsvY2xrLmMjTDEwMzQKPiA+Pgo+ID4+IHNvIEkgZG9uJ3QgcGFydGljdWxhcmx5IHRydXN0IGl0 IGRvZXMgZXhhY2x0eSB3aGF0IHRoZSBoZWFkZXIgY2xhaW1zIGFuZCB3aGF0Cj4gPj4gd291bGQg YmUgbmVlZGVkIHRvIHRlc3QgdGhlIHRoZW9yeSB0aGF0IGdhdGluZyBncHUgY2xvY2sgZHVyaW5n IHJhdGUgY2hhbmdlCj4gPj4gbWlnaHQgaGVscC4KPiA+Pgo+ID4+IGtpbmQgcmVnYXJkcywKPiA+ PiAJby4KPiA+Pgo+ID4+PiBUaGFuayB5b3UgZm9yIHlvdXIgZGV0YWlsZWQgcHJvcG9zYWwhIEl0 IHdhcyBpbnNpZ2h0ZnVsIHRvIHJlYWQuIEJ1dAo+ID4+PiB3aGlsZSB0aG9zZSB3ZXJlIGFsbCBn cmVhdCBpZGVhcywgdGhleSBoYXZlIGFsbCBhbHJlYWR5IGJlZW4gdGFrZW4gY2FyZQo+ID4+PiBv Zi4gSSdtIGZyZXNoIG91dCBvZiBpZGVhcyBhZ2FpbiAoZXhjZXB0IGZvciBwaW5uaW5nIHRoZSBH UFUgcmF0ZSkuCj4gPj4+Cj4gPj4+IEFnYWluLCB0aGFuayB5b3Ugc28gbXVjaCwKPiA+Pj4gICBG cmFuawo+ID4+Pgo+ID4+PiA+Pgo+ID4+PiA+PiBLaW5kIHJlZ2FyZHMsCj4gPj4+ID4+IAlvLgo+ ID4+PiA+Pgo+ID4+PiA+PiA+IEkgdmVyeSBtdWNoIGFwcHJlY2lhdGUgeW91ciBmZWVkYmFjayEK PiA+Pj4gPj4gPgo+ID4+PiA+PiA+IFsxXSBodHRwczovL2dpdGxhYi5jb20vcG9zdG1hcmtldE9T L3BtYXBvcnRzLy0vaXNzdWVzLzgwNQo+ID4+PiA+PiA+Cj4gPj4+ID4+ID4gU2lnbmVkLW9mZi1i eTogRnJhbmsgT2x0bWFubnMgPGZyYW5rQG9sdG1hbm5zLmRldj4KPiA+Pj4gPj4gPiAtLS0KPiA+ Pj4gPj4gPiBDaGFuZ2VzIGluIHYyOgo+ID4+PiA+PiA+IC0gZHRzOiBJbmNyZWFzZSBtaW5pbXVt IEdQVSBmcmVxdWVuY3kgdG8gMTkyIE1Iei4KPiA+Pj4gPj4gPiAtIG5rbSBhbmQgYTY0OiBBZGQg bWluaW11bSBhbmQgbWF4aW11bSByYXRlIGZvciBQTEwtTUlQSS4KPiA+Pj4gPj4gPiAtIG5rbTog VXNlIHRoZSBzYW1lIGFwcHJvYWNoIGZvciBza2lwcGluZyBpbnZhbGlkIHJhdGVzIGluCj4gPj4+ ID4+ID4gICBjY3VfbmttX2ZpbmRfYmVzdCgpIGFzIGluIGNjdV9ua21fZmluZF9iZXN0X3dpdGhf cGFyZW50X2FkaigpLgo+ID4+PiA+PiA+IC0gbmttOiBJbXByb3ZlIG5hbWVzIGZvciByYXRpbyBz dHJ1Y3QgbWVtYmVycyBhbmQgaGVuY2UgZ2V0IHJpZCBvZgo+ID4+PiA+PiA+ICAgZGVzY3JpYmlu ZyBjb21tZW50cy4KPiA+Pj4gPj4gPiAtIG5rbSBhbmQgYTY0OiBDb3JyZWN0IGRlc2NyaXB0aW9u IGluIHRoZSBjb21taXQgbWVzc2FnZXM6IE0vTiA8PSAzCj4gPj4+ID4+ID4gLSBSZW1vdmUgcGF0 Y2hlcyBmb3Igbm0gYXMgdGhleSB3ZXJlIG5vdCBuZWVkZWQuCj4gPj4+ID4+ID4gLSBzdDc3MDM6 IFJld29yayB0aGUgY29tbWl0IG1lc3NhZ2UgdG8gY292ZXIgbW9yZSBiYWNrZ3JvdW5kIGZvciB0 aGUKPiA+Pj4gPj4gPiAgIGNoYW5nZS4KPiA+Pj4gPj4gPiAtIExpbmsgdG8gdjE6IGh0dHBzOi8v bG9yZS5rZXJuZWwub3JnL3IvMjAyMzEyMTgtcGluZXBob25lLXBsbC1maXhlcy12MS0wLWUyMzhi NmVkNmRjMUBvbHRtYW5ucy5kZXYKPiA+Pj4gPj4gPgo+ID4+PiA+PiA+IC0tLQo+ID4+PiA+PiA+ IEZyYW5rIE9sdG1hbm5zICg2KToKPiA+Pj4gPj4gPiAgICAgICBjbGs6IHN1bnhpLW5nOiBua206 IFN1cHBvcnQgY29uc3RyYWludHMgb24gbS9uIHJhdGlvIGFuZCBwYXJlbnQgcmF0ZQo+ID4+PiA+ PiA+ICAgICAgIGNsazogc3VueGktbmc6IGE2NDogQWRkIGNvbnN0cmFpbnRzIG9uIFBMTC1NSVBJ J3Mgbi9tIHJhdGlvIGFuZCBwYXJlbnQgcmF0ZQo+ID4+PiA+PiA+ICAgICAgIGNsazogc3VueGkt bmc6IG5rbTogU3VwcG9ydCBtaW5pbXVtIGFuZCBtYXhpbXVtIHJhdGUKPiA+Pj4gPj4gPiAgICAg ICBjbGs6IHN1bnhpLW5nOiBhNjQ6IFNldCBtaW5pbXVtIGFuZCBtYXhpbXVtIHJhdGUgZm9yIFBM TC1NSVBJCj4gPj4+ID4+ID4gICAgICAgZHJtL3BhbmVsOiBzdDc3MDM6IERyaXZlIFhCRDU5OSBw YW5lbCBhdCBoaWdoZXIgY2xvY2sgcmF0ZQo+ID4+PiA+PiA+ICAgICAgIGFybTY0OiBkdHM6IGFs bHdpbm5lcjogYTY0OiBGaXggbWluaW11bSBHUFUgT1BQIHJhdGUKPiA+Pj4gPj4gPgo+ID4+PiA+ PiA+ICBhcmNoL2FybTY0L2Jvb3QvZHRzL2FsbHdpbm5lci9zdW41MGktYTY0LmR0c2kgfCAgNCAr Ky0tCj4gPj4+ID4+ID4gIGRyaXZlcnMvY2xrL3N1bnhpLW5nL2NjdS1zdW41MGktYTY0LmMgICAg ICAgICB8IDE0ICsrKysrKystLS0tCj4gPj4+ID4+ID4gIGRyaXZlcnMvY2xrL3N1bnhpLW5nL2Nj dV9ua20uYyAgICAgICAgICAgICAgICB8IDM0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ ID4+PiA+PiA+ICBkcml2ZXJzL2Nsay9zdW54aS1uZy9jY3VfbmttLmggICAgICAgICAgICAgICAg fCAgNCArKysrCj4gPj4+ID4+ID4gIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1zaXRyb25p eC1zdDc3MDMuYyB8IDE0ICsrKysrLS0tLS0tCj4gPj4+ID4+ID4gIDUgZmlsZXMgY2hhbmdlZCwg NTYgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCj4gPj4+ID4+ID4gLS0tCj4gPj4+ID4+ ID4gYmFzZS1jb21taXQ6IDA1OWM1M2U4NzdjYTZlNzIzZTEwNDkwYzI3YzE0ODdhNjNlNjZlZmUK PiA+Pj4gPj4gPiBjaGFuZ2UtaWQ6IDIwMjMxMjE4LXBpbmVwaG9uZS1wbGwtZml4ZXMtMGNjZGZk ZTI3M2U0Cj4gPj4+ID4+ID4KPiA+Pj4gPj4gPiBCZXN0IHJlZ2FyZHMsCj4gPj4+ID4+ID4gLS0K PiA+Pj4gPj4gPiBGcmFuayBPbHRtYW5ucyA8ZnJhbmtAb2x0bWFubnMuZGV2Pgo+ID4+PiA+PiA+ Cj4gCgoKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K bGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtYXJtLWtlcm5lbAo=