From: Stephen Boyd <sboyd@kernel.org>
To: Dmitry Osipenko <dmitry.osipenko@collabora.com>,
Maxime Ripard <maxime@cerno.tech>
Cc: Mike Turquette <mturquette@baylibre.com>,
Dave Stevenson <dave.stevenson@raspberrypi.com>,
Phil Elwell <phil@raspberrypi.com>,
Tim Gover <tim.gover@raspberrypi.com>,
Dom Cobley <dom@raspberrypi.com>,
dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org,
linux-tegra@vger.kernel.org
Subject: Re: [PATCH v7 06/12] clk: Always set the rate on clk_set_range_rate
Date: Thu, 24 Mar 2022 12:09:05 -0700 [thread overview]
Message-ID: <20220324190907.08E28C340EE@smtp.kernel.org> (raw)
In-Reply-To: <20220323085140.ifeclmttkrqo55ru@houat>
Quoting Maxime Ripard (2022-03-23 01:51:40)
> Hi,
>
>
> The whole point of this patch is to give an opportunity to every driver
> to change the rate whenever the boundaries have changed, so we very much
> want to have the option to change it if clk_set_rate() has never been
> called.
>
> However, I think the issue is why req_rate would be 0 in the first
> place?
>
> req_rate is initialized to what recalc_rate returns:
> https://elixir.bootlin.com/linux/latest/source/drivers/clk/clk.c#L3607
>
> So the case where req_rate is 0 shouldn't occur unless you had an
> explicit clk_set_rate to 0, or if your clock was orphaned at some point.
>
> Judging from the code, it seems like the latter is the most plausible.
> Indeed, __clk_core_init() will set req_rate to 0 if the clock is
> orphaned (just like rate and accuracy), and
> clk_core_reparent_orphans_nolock will be in charge of updating them when
> the clock is no longer an orphan.
>
> However, clk_core_reparent_orphans_nolock() will update rate by calling
> __clk_recalc_rate and accuracy by calling __clk_recalc_accuracies, but
> it never sets req_rate.
>
> I'm not sure if this is the right patch, Stephen will tell, but could
> you test:
It looks correct to me. Would be helpful to have some comment of course
that we're setting a default req_rate because we want a
clk_set_rate_range() before clk_set_rate() to work properly when this
clk is initially an orphan. We should be able to code up a test case for
that too by registering an orphan and then registering the parent and
then calling clk_set_rate_range().
WARNING: multiple messages have this Message-ID (diff)
From: Stephen Boyd <sboyd@kernel.org>
To: Dmitry Osipenko <dmitry.osipenko@collabora.com>,
Maxime Ripard <maxime@cerno.tech>
Cc: Dom Cobley <dom@raspberrypi.com>,
Tim Gover <tim.gover@raspberrypi.com>,
Dave Stevenson <dave.stevenson@raspberrypi.com>,
Mike Turquette <mturquette@baylibre.com>,
dri-devel@lists.freedesktop.org, linux-clk@vger.kernel.org,
linux-tegra@vger.kernel.org, Phil Elwell <phil@raspberrypi.com>
Subject: Re: [PATCH v7 06/12] clk: Always set the rate on clk_set_range_rate
Date: Thu, 24 Mar 2022 12:09:05 -0700 [thread overview]
Message-ID: <20220324190907.08E28C340EE@smtp.kernel.org> (raw)
In-Reply-To: <20220323085140.ifeclmttkrqo55ru@houat>
Quoting Maxime Ripard (2022-03-23 01:51:40)
> Hi,
>
>
> The whole point of this patch is to give an opportunity to every driver
> to change the rate whenever the boundaries have changed, so we very much
> want to have the option to change it if clk_set_rate() has never been
> called.
>
> However, I think the issue is why req_rate would be 0 in the first
> place?
>
> req_rate is initialized to what recalc_rate returns:
> https://elixir.bootlin.com/linux/latest/source/drivers/clk/clk.c#L3607
>
> So the case where req_rate is 0 shouldn't occur unless you had an
> explicit clk_set_rate to 0, or if your clock was orphaned at some point.
>
> Judging from the code, it seems like the latter is the most plausible.
> Indeed, __clk_core_init() will set req_rate to 0 if the clock is
> orphaned (just like rate and accuracy), and
> clk_core_reparent_orphans_nolock will be in charge of updating them when
> the clock is no longer an orphan.
>
> However, clk_core_reparent_orphans_nolock() will update rate by calling
> __clk_recalc_rate and accuracy by calling __clk_recalc_accuracies, but
> it never sets req_rate.
>
> I'm not sure if this is the right patch, Stephen will tell, but could
> you test:
It looks correct to me. Would be helpful to have some comment of course
that we're setting a default req_rate because we want a
clk_set_rate_range() before clk_set_rate() to work properly when this
clk is initially an orphan. We should be able to code up a test case for
that too by registering an orphan and then registering the parent and
then calling clk_set_rate_range().
next prev parent reply other threads:[~2022-03-24 19:09 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-25 14:35 [PATCH v7 00/12] clk: Improve clock range handling Maxime Ripard
2022-02-25 14:35 ` Maxime Ripard
2022-02-25 14:35 ` [PATCH v7 01/12] clk: Fix clk_hw_get_clk() when dev is NULL Maxime Ripard
2022-02-25 14:35 ` Maxime Ripard
2022-02-25 14:35 ` [PATCH v7 02/12] clk: Introduce Kunit Tests for the framework Maxime Ripard
2022-02-25 14:35 ` Maxime Ripard
2022-02-25 14:35 ` [PATCH v7 03/12] clk: Enforce that disjoints limits are invalid Maxime Ripard
2022-02-25 14:35 ` Maxime Ripard
2022-02-25 14:35 ` [PATCH v7 04/12] clk: Always clamp the rounded rate Maxime Ripard
2022-02-25 14:35 ` Maxime Ripard
2022-02-25 14:35 ` [PATCH v7 05/12] clk: Use clamp instead of open-coding our own Maxime Ripard
2022-02-25 14:35 ` Maxime Ripard
2022-02-25 14:35 ` [PATCH v7 06/12] clk: Always set the rate on clk_set_range_rate Maxime Ripard
2022-02-25 14:35 ` Maxime Ripard
2022-03-22 19:05 ` Dmitry Osipenko
2022-03-22 19:05 ` Dmitry Osipenko
2022-03-23 8:51 ` Maxime Ripard
2022-03-23 8:51 ` Maxime Ripard
2022-03-24 19:09 ` Stephen Boyd [this message]
2022-03-24 19:09 ` Stephen Boyd
2022-03-24 19:25 ` Dmitry Osipenko
2022-03-24 19:25 ` Dmitry Osipenko
2022-02-25 14:35 ` [PATCH v7 07/12] clk: Add clk_drop_range Maxime Ripard
2022-02-25 14:35 ` Maxime Ripard
2022-02-25 14:35 ` [PATCH v7 08/12] clk: bcm: rpi: Add variant structure Maxime Ripard
2022-02-25 14:35 ` Maxime Ripard
2022-02-25 14:35 ` [PATCH v7 09/12] clk: bcm: rpi: Set a default minimum rate Maxime Ripard
2022-02-25 14:35 ` Maxime Ripard
2022-02-25 14:35 ` [PATCH v7 10/12] clk: bcm: rpi: Run some clocks at the minimum rate allowed Maxime Ripard
2022-02-25 14:35 ` Maxime Ripard
2022-02-25 14:35 ` [PATCH v7 11/12] drm/vc4: Add logging and comments Maxime Ripard
2022-02-25 14:35 ` Maxime Ripard
2022-04-06 8:50 ` Thomas Zimmermann
2022-04-06 8:50 ` Thomas Zimmermann
2022-02-25 14:35 ` [PATCH v7 12/12] drm/vc4: hdmi: Remove clock rate initialization Maxime Ripard
2022-02-25 14:35 ` Maxime Ripard
2022-04-06 8:53 ` Thomas Zimmermann
2022-04-06 8:53 ` Thomas Zimmermann
2022-03-12 3:08 ` [PATCH v7 00/12] clk: Improve clock range handling Stephen Boyd
2022-03-12 3:08 ` Stephen Boyd
2022-03-16 8:37 ` Maxime Ripard
2022-03-16 8:37 ` Maxime Ripard
2022-04-06 10:42 ` Maxime Ripard
2022-04-06 10:42 ` 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=20220324190907.08E28C340EE@smtp.kernel.org \
--to=sboyd@kernel.org \
--cc=dave.stevenson@raspberrypi.com \
--cc=dmitry.osipenko@collabora.com \
--cc=dom@raspberrypi.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=maxime@cerno.tech \
--cc=mturquette@baylibre.com \
--cc=phil@raspberrypi.com \
--cc=tim.gover@raspberrypi.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.