public inbox for linux-rtc@vger.kernel.org
 help / color / mirror / Atom feed
From: Maxime Ripard <maxime@cerno.tech>
To: Aidan MacDonald <aidanmacdonald.0x0@gmail.com>
Cc: "Stephen Boyd" <sboyd@kernel.org>,
	"Paul Cercueil" <paul@crapouillou.net>,
	"Maxime Coquelin" <mcoquelin.stm32@gmail.com>,
	"Chen-Yu Tsai" <wens@csie.org>, "Daniel Vetter" <daniel@ffwll.ch>,
	"Nicolas Ferre" <nicolas.ferre@microchip.com>,
	"Thierry Reding" <thierry.reding@gmail.com>,
	"Jaroslav Kysela" <perex@perex.cz>,
	"Shawn Guo" <shawnguo@kernel.org>,
	"Fabio Estevam" <festevam@gmail.com>,
	"Ulf Hansson" <ulf.hansson@linaro.org>,
	"Claudiu Beznea" <claudiu.beznea@microchip.com>,
	"Michael Turquette" <mturquette@baylibre.com>,
	"Dinh Nguyen" <dinguyen@kernel.org>,
	"Chunyan Zhang" <zhang.lyra@gmail.com>,
	"Manivannan Sadhasivam" <mani@kernel.org>,
	"Andreas Färber" <afaerber@suse.de>,
	"Jonathan Hunter" <jonathanh@nvidia.com>,
	"Abel Vesa" <abelvesa@kernel.org>,
	"Charles Keepax" <ckeepax@opensource.cirrus.com>,
	"Alessandro Zummo" <a.zummo@towertech.it>,
	"Peter De Schrijver" <pdeschrijver@nvidia.com>,
	"Orson Zhai" <orsonzhai@gmail.com>,
	"Alexandre Torgue" <alexandre.torgue@foss.st.com>,
	"Prashant Gaikwad" <pgaikwad@nvidia.com>,
	"Liam Girdwood" <lgirdwood@gmail.com>,
	"Alexandre Belloni" <alexandre.belloni@bootlin.com>,
	"Samuel Holland" <samuel@sholland.org>,
	"Matthias Brugger" <matthias.bgg@gmail.com>,
	"Richard Fitzgerald" <rf@opensource.cirrus.com>,
	"Vinod Koul" <vkoul@kernel.org>,
	"NXP Linux Team" <linux-imx@nxp.com>,
	"Sekhar Nori" <nsekhar@ti.com>,
	"Kishon Vijay Abraham I" <kishon@kernel.org>,
	"Linus Walleij" <linus.walleij@linaro.org>,
	"Takashi Iwai" <tiwai@suse.com>,
	"David Airlie" <airlied@gmail.com>,
	"Luca Ceresoli" <luca.ceresoli@bootlin.com>,
	"Jernej Skrabec" <jernej.skrabec@gmail.com>,
	"Pengutronix Kernel Team" <kernel@pengutronix.de>,
	"Baolin Wang" <baolin.wang@linux.alibaba.com>,
	"David Lechner" <david@lechnology.com>,
	"Sascha Hauer" <s.hauer@pengutronix.de>,
	"Mark Brown" <broonie@kernel.org>,
	"Max Filippov" <jcmvbkbc@gmail.com>,
	"Geert Uytterhoeven" <geert+renesas@glider.be>,
	linux-stm32@st-md-mailman.stormreply.com,
	alsa-devel@alsa-project.org, linux-mediatek@lists.infradead.org,
	linux-phy@lists.infradead.org, linux-mips@vger.kernel.org,
	linux-renesas-soc@vger.kernel.org,
	linux-actions@lists.infradead.org, linux-clk@vger.kernel.org,
	"AngeloGioacchino Del Regno"
	<angelogioacchino.delregno@collabora.com>,
	patches@opensource.cirrus.com, linux-tegra@vger.kernel.org,
	linux-rtc@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org,
	dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v2 56/65] clk: ingenic: cgu: Switch to determine_rate
Date: Fri, 24 Mar 2023 12:19:59 +0100	[thread overview]
Message-ID: <20230324111959.frjf4neopbs67ugd@houat> (raw)
In-Reply-To: <xpKMzGb1sOsucWMTlJIMzrT5KjLlZ7JP@localhost>

[-- Attachment #1: Type: text/plain, Size: 4343 bytes --]

Hi,

On Thu, Mar 23, 2023 at 03:35:30PM +0000, Aidan MacDonald wrote:
> 
> Stephen Boyd <sboyd@kernel.org> writes:
> 
> > Quoting Maxime Ripard (2022-11-09 03:00:45)
> >> On Mon, Nov 07, 2022 at 08:57:22PM +0000, Aidan MacDonald wrote:
> >> >
> >> > Maxime Ripard <maxime@cerno.tech> writes:
> >> >
> >> > > Hi,
> >> > >
> >> > > On Fri, Nov 04, 2022 at 05:35:29PM +0000, Aidan MacDonald wrote:
> >> >
> >> > Assigning the parent clock in the DT works once, at boot, but going off
> >> > what you wrote in the commit message, if the clock driver has a
> >> > .determine_rate() implementation that *can* reparent clocks then it
> >> > probably *will* reparent them, and the DT assignment will be lost.
> >>
> >> Yes, indeed, but assigned-clock-parents never provided any sort of
> >> guarantee on whether or not the clock was allowed to reparent or not.
> >> It's just a one-off thing, right before probe, and a clk_set_parent()
> >> call at probe will override that just fine.
> >>
> >> Just like assigned-clock-rates isn't permanent.
> >>
> >> > What I'm suggesting is a runtime constraint that the clock subsystem
> >> > would enforce, and actively prevent drivers from changing the parent.
> >> > Either explicitly with clk_set_parent() or due to .determine_rate().
> >> >
> >> > That way you could write a .determine_rate() implementation that *can*
> >> > select a better parent, but if the DT applies a constraint to fix the
> >> > clock to a particular parent, the clock subsystem will force that parent
> >> > to be used so you can be sure the clock is never reparented by accident.
> >>
> >> Yeah, that sounds like a good idea, and CLK_SET_RATE_NO_REPARENT isn't
> >> too far off from this, it's just ignored by clk_set_parent() for now. I
> >> guess we could rename CLK_SET_RATE_NO_REPARENT to CLK_NO_REPARENT, make
> >> clk_set_parent handle it, and set that flag whenever
> >> assigned-clock-parents is set on a clock.
> >>
> >> It's out of scope for this series though, and I certainly don't want to
> >> deal with all the regressions it might create :)
> >>
> >
> > This sounds like a new dt binding that says the assigned parent should
> > never change. It sounds sort of like gpio hogs. A clock-hogs binding?
> 
> Ideally we want the clock driver to be able to reparent clocks freely
> to get the best rate. But we also need some control over that to stop
> consumers from being reparented in undesired ways. Eg. you might want
> to make sure the GPU gets its own PLL so it can be reclocked easily,
> and putting another device on the GPU's PLL could prevent that.
> 
> The only way to achieve this today is (1) never do any reparenting in
> the clock driver; and (2) use assigned-clock-parents in the DT to set
> up the entire clock tree manually.
> 
> Maxime said that (2) is basically wrong -- if assigned-clock-parents
> provides no guarantee on what the OS does "after boot" then the OS is
> pretty much free to ignore it.

I didn't really say it's wrong, just that it never provided the
guarantee you expect it to provide. I can't really say whether it's an
issue or not on your platform.

It's mostly unrelated to this series though, none of these patches
affect that behavior in one way or the other.

> My suggestion: add a per-clock bitmap to keep track of which parents
> are allowed. Any operation that would select a parent clock not on the
> whitelist should fail. Automatic reparenting should only select from
> clocks on the whitelist. And we need new DT bindings for controlling
> the whitelist, for example:
> 
>     clock-parents-0 = <&clk1>, <&pll_c>;
>     clock-parents-1 = <&clk2>, <&pll_a>, <&pll_b>;
> 
> This means that clk1 can only have pll_c as a parent, while clk2 can
> have pll_a or pll_b as parents. By default every clock will be able
> to use any parent, so a list is only needed if the machine needs a
> more restrictive policy.
> 
> assigned-clock-parents should disable automatic reparenting, but allow
> explicit clk_set_parent(). This will allow clock drivers to start doing
> reparenting without breaking old DTs.

I'm generally not a fan of putting all these policies in the device
tree. Do you have an example where it wouldn't be possible to do exactly
this from the driver itself?

Maxime

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

  reply	other threads:[~2023-03-24 11:20 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20221018-clk-range-checks-fixes-v2-0-f6736dec138e@cerno.tech>
     [not found] ` <20221018-clk-range-checks-fixes-v2-56-f6736dec138e@cerno.tech>
2022-11-04 14:31   ` [PATCH v2 56/65] clk: ingenic: cgu: Switch to determine_rate Paul Cercueil
2022-11-04 14:59     ` Maxime Ripard
2022-11-04 17:35       ` Aidan MacDonald
2022-11-07  8:54         ` Maxime Ripard
2022-11-07 20:57           ` Aidan MacDonald
2022-11-09 11:00             ` Maxime Ripard
     [not found]               ` <06a293adc75990ed3e297b076fc38d8a.sboyd@kernel.org>
2023-03-23 15:35                 ` Aidan MacDonald
2023-03-24 11:19                   ` Maxime Ripard [this message]
2023-03-24 20:58                     ` Aidan MacDonald
2023-03-27 19:24                       ` Maxime Ripard
2023-04-05 12:57                         ` Paul Cercueil
2023-04-05 14:50                           ` Maxime Ripard
2023-04-05 15:29                             ` Paul Cercueil
2022-11-05 10:33       ` Paul Cercueil
2022-11-09 10:53         ` Maxime Ripard
2022-11-09 11:36           ` Paul Cercueil
     [not found] ` <20221018-clk-range-checks-fixes-v2-43-f6736dec138e@cerno.tech>
2022-11-04 15:44   ` [PATCH v2 43/65] ASoC: tlv320aic32x4: Add a determine_rate hook Mark Brown
2022-11-04 15:51     ` Maxime Ripard
2022-11-04 15:59       ` Mark Brown
2022-11-07  8:43         ` Maxime Ripard
2022-11-07 12:06           ` Mark Brown
2022-11-07 15:26             ` Maxime Ripard
2022-11-07 16:02               ` Mark Brown
     [not found]               ` <5819b1362f35ce306e1b6d566bfd44e5.sboyd@kernel.org>
2023-03-29 19:50                 ` Maxime Ripard
     [not found] ` <20221018-clk-range-checks-fixes-v2-21-f6736dec138e@cerno.tech>
2022-11-04 16:45   ` [PATCH v2 21/65] clk: davinci: da8xx-cfgchip: " David Lechner
2022-11-07 12:06     ` Maxime Ripard
2022-11-07 14:52       ` David Lechner
     [not found] ` <20221018-clk-range-checks-fixes-v2-22-f6736dec138e@cerno.tech>
2022-11-04 16:46   ` [PATCH v2 22/65] " David Lechner
     [not found] ` <20221018-clk-range-checks-fixes-v2-54-f6736dec138e@cerno.tech>
2022-11-04 16:49   ` [PATCH v2 54/65] clk: da8xx: clk48: Switch to determine_rate David Lechner
2022-11-07 14:52     ` Maxime Ripard
     [not found] ` <20221018-clk-range-checks-fixes-v2-42-f6736dec138e@cerno.tech>
2022-11-05  3:45   ` [PATCH v2 42/65] rtc: sun6i: Add a determine_rate hook Samuel Holland
     [not found] ` <20221018-clk-range-checks-fixes-v2-28-f6736dec138e@cerno.tech>
2022-11-07  7:51   ` [PATCH v2 28/65] clk: renesas: r9a06g032: " Geert Uytterhoeven
     [not found] ` <20221018-clk-range-checks-fixes-v2-65-f6736dec138e@cerno.tech>
2022-11-07 10:56   ` [PATCH v2 65/65] clk: Warn if we register a mux without determine_rate Charles Keepax
     [not found] ` <20221018-clk-range-checks-fixes-v2-20-f6736dec138e@cerno.tech>
2022-11-07 10:58   ` [PATCH v2 20/65] clk: wm831x: clkout: Add a determine_rate hook Charles Keepax
     [not found] ` <20221018-clk-range-checks-fixes-v2-34-f6736dec138e@cerno.tech>
2022-11-08 13:25   ` [PATCH v2 34/65] clk: ux500: prcmu: " Linus Walleij
2022-11-09 11:05     ` Maxime Ripard
     [not found] ` <20221018-clk-range-checks-fixes-v2-58-f6736dec138e@cerno.tech>
2022-11-09  2:43   ` [PATCH v2 58/65] clk: sprd: composite: Switch to determine_rate Chunyan Zhang
     [not found] ` <20221018-clk-range-checks-fixes-v2-35-f6736dec138e@cerno.tech>
2022-11-08 13:27   ` [PATCH v2 35/65] clk: ux500: sysctrl: Add a determine_rate hook Linus Walleij
2022-11-10 11:28   ` Ulf Hansson
2022-11-10 11:39     ` Linus Walleij
2022-11-10 13:05       ` Ulf Hansson
2022-11-11  9:20         ` Linus Walleij
2022-11-14  9:05           ` Lee Jones
     [not found] ` <20221018-clk-range-checks-fixes-v2-13-f6736dec138e@cerno.tech>
2022-11-13 22:35   ` [PATCH v2 13/65] clk: lmk04832: clkout: " Liam Beguin
     [not found] ` <f804380a14c346fdbbf3286bcb40b3c2.sboyd@kernel.org>
2023-03-22 10:01   ` [PATCH v2 00/65] clk: Make determine_rate mandatory for muxes Maxime Ripard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230324111959.frjf4neopbs67ugd@houat \
    --to=maxime@cerno.tech \
    --cc=a.zummo@towertech.it \
    --cc=abelvesa@kernel.org \
    --cc=afaerber@suse.de \
    --cc=aidanmacdonald.0x0@gmail.com \
    --cc=airlied@gmail.com \
    --cc=alexandre.belloni@bootlin.com \
    --cc=alexandre.torgue@foss.st.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=angelogioacchino.delregno@collabora.com \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=broonie@kernel.org \
    --cc=ckeepax@opensource.cirrus.com \
    --cc=claudiu.beznea@microchip.com \
    --cc=daniel@ffwll.ch \
    --cc=david@lechnology.com \
    --cc=dinguyen@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=festevam@gmail.com \
    --cc=geert+renesas@glider.be \
    --cc=jcmvbkbc@gmail.com \
    --cc=jernej.skrabec@gmail.com \
    --cc=jonathanh@nvidia.com \
    --cc=kernel@pengutronix.de \
    --cc=kishon@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-actions@lists.infradead.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-imx@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-phy@lists.infradead.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=linux-rtc@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=linux-sunxi@lists.linux.dev \
    --cc=linux-tegra@vger.kernel.org \
    --cc=luca.ceresoli@bootlin.com \
    --cc=mani@kernel.org \
    --cc=matthias.bgg@gmail.com \
    --cc=mcoquelin.stm32@gmail.com \
    --cc=mturquette@baylibre.com \
    --cc=nicolas.ferre@microchip.com \
    --cc=nsekhar@ti.com \
    --cc=orsonzhai@gmail.com \
    --cc=patches@opensource.cirrus.com \
    --cc=paul@crapouillou.net \
    --cc=pdeschrijver@nvidia.com \
    --cc=perex@perex.cz \
    --cc=pgaikwad@nvidia.com \
    --cc=rf@opensource.cirrus.com \
    --cc=s.hauer@pengutronix.de \
    --cc=samuel@sholland.org \
    --cc=sboyd@kernel.org \
    --cc=shawnguo@kernel.org \
    --cc=thierry.reding@gmail.com \
    --cc=tiwai@suse.com \
    --cc=ulf.hansson@linaro.org \
    --cc=vkoul@kernel.org \
    --cc=wens@csie.org \
    --cc=zhang.lyra@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox