From: Maxime Ripard <maxime@cerno.tech>
To: Mike Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>,
linux-clk@vger.kernel.org
Cc: Jerome Brunet <jbrunet@baylibre.com>,
Naresh Kamboju <naresh.kamboju@linaro.org>,
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
Alexander Stein <alexander.stein@ew.tq-group.com>,
Neil Armstrong <narmstrong@baylibre.com>,
Marek Szyprowski <m.szyprowski@samsung.com>,
Yassine Oudjana <y.oudjana@protonmail.com>,
Tony Lindgren <tony@atomide.com>,
Maxime Ripard <maxime@cerno.tech>
Subject: [PATCH v9 00/25] clk: More clock rate fixes and tests
Date: Tue, 16 Aug 2022 13:25:05 +0200 [thread overview]
Message-ID: <20220816112530.1837489-1-maxime@cerno.tech> (raw)
Hi,
Thanks to the feedback I got on the previous series, I found and fixed a
number of bugs in the clock framework and how it deals with rates,
especially when it comes to orphan clocks.
In order to make sure this doesn't pop up again as a regression, I've
extended the number of tests.
The first patch reintroduces the clk_set_rate_range call on clk_put, but
this time will only do so if there was a range set on that clock to
begin with. It should be less intrusive, and reduce the number of
potential side effects considerably.
We then have a fix for the qcom rcg2 issue that has been reported
recently.
All the other patches should be probably be flagged as fixes, but
they've never seem to have shown any real-world issues until now, and
they aren't all really trivial to backport either, so I'm not sure it's
worth it.
There's also some documentation improvements for recalc_rate and
clk_get_rate to hopefully make the documentation less ambiguous and
acknowledge that recalc_rate() returning 0 on error is fine.
Let me know what you think,
Maxime
Changes from v8:
- Fixed a regression when probing a clock driver backed by a device accessed
through a bus that might sleep
Changes from v7:
- Dropped the RPi fixes
- Rebased on 6.0-rc1
Changes from v6:
- Fixed a kernel build bot warning
Changes from v5:
- Rebased on current next (next-20220711)
- Dropped clk_get_rate_range, and used a custom function instead
- Switched all tests to use clk_hw_get_clk() instead of struct clk_hw->clk
- Removed some intermediate variables
- Added some comments
- Dropped clk_get_parent() changes
- Dropped test on clk_hw pointer non-NULL in clk_hw_get_name
- Made clk_has_parent more const
Changes from v4:
- Fix build breakage on SAM9x60
Changes from v3:
- constness warning fix in clk_core_forward_rate_req
Changes from v2:
- Rebased on top of current next
- Fixed locking issue in clk_get_rate_range
Changes from v1:
- Rebased on top of next-20220428
- Dropped the patch to prevent non-orphan clocks from registering if
their recalc_rate hook returns 0
- Added some patches to clarify the clk_get_rate and recalc_rate
documentation
- Dropped the patch to skip the range setup on an orphan clock that
was introducing a regression on RaspberryPi3 when a monitor wasn't
connected at boot
- Added a patch to skip the rate clamping in clk_round_rate() when
min_rate == max_rate == 0
- Added a new set of functions to query the clk boundaries and fix a
regression with the RaspberryPi4
- Fixed all the drivers hand-crafting their clk_rate_request
- Reworded the test suite descriptions
- Reordered a few patches to ease the review
- Reworded some commit logs to better explain the issues they address
- Collected the Tested-by of Alexander and Marek
- More tests
Maxime Ripard (25):
clk: test: Switch to clk_hw_get_clk
clk: Drop the rate range on clk_put()
clk: Skip clamping when rounding if there's no boundaries
clk: Mention that .recalc_rate can return 0 on error
clk: Clarify clk_get_rate() expectations
clk: tests: Add test suites description
clk: tests: Add reference to the orphan mux bug report
clk: tests: Add tests for uncached clock
clk: tests: Add tests for single parent mux
clk: tests: Add tests for mux with multiple parents
clk: tests: Add some tests for orphan with multiple parents
clk: Take into account uncached clocks in clk_set_rate_range()
clk: Set req_rate on reparenting
clk: Change clk_core_init_rate_req prototype
clk: Move clk_core_init_rate_req() from clk_core_round_rate_nolock()
to its caller
clk: Introduce clk_hw_init_rate_request()
clk: Add our request boundaries in clk_core_init_rate_req
clk: Switch from __clk_determine_rate to clk_core_round_rate_nolock
clk: Introduce clk_core_has_parent()
clk: Constify clk_has_parent()
clk: Stop forwarding clk_rate_requests to the parent
clk: Zero the clk_rate_request structure
clk: Introduce the clk_hw_get_rate_range function
clk: qcom: clk-rcg2: Take clock boundaries into consideration for
gfx3d
clk: tests: Add missing test case for ranges
drivers/clk/at91/clk-generated.c | 5 +-
drivers/clk/at91/clk-master.c | 9 +-
drivers/clk/at91/clk-peripheral.c | 4 +-
drivers/clk/clk-composite.c | 6 +-
drivers/clk/clk-divider.c | 20 +-
drivers/clk/clk.c | 288 ++++--
drivers/clk/clk_test.c | 1413 ++++++++++++++++++++++++++++-
drivers/clk/qcom/clk-rcg2.c | 9 +
include/linux/clk-provider.h | 18 +-
include/linux/clk.h | 2 +-
10 files changed, 1665 insertions(+), 109 deletions(-)
--
2.37.1
next reply other threads:[~2022-08-16 11:51 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-16 11:25 Maxime Ripard [this message]
2022-08-16 11:25 ` [PATCH v9 01/25] clk: test: Switch to clk_hw_get_clk Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 02/25] clk: Drop the rate range on clk_put() Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 03/25] clk: Skip clamping when rounding if there's no boundaries Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 04/25] clk: Mention that .recalc_rate can return 0 on error Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 05/25] clk: Clarify clk_get_rate() expectations Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 06/25] clk: tests: Add test suites description Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 07/25] clk: tests: Add reference to the orphan mux bug report Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 08/25] clk: tests: Add tests for uncached clock Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 09/25] clk: tests: Add tests for single parent mux Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 10/25] clk: tests: Add tests for mux with multiple parents Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 11/25] clk: tests: Add some tests for orphan " Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 12/25] clk: Take into account uncached clocks in clk_set_rate_range() Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 13/25] clk: Set req_rate on reparenting Maxime Ripard
2022-10-03 9:59 ` Marek Szyprowski
2022-10-04 20:59 ` Stephen Boyd
2022-10-10 9:56 ` Maxime Ripard
2022-10-10 14:52 ` Maxime Ripard
2022-10-11 1:15 ` Stephen Boyd
2022-08-16 11:25 ` [PATCH v9 14/25] clk: Change clk_core_init_rate_req prototype Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 15/25] clk: Move clk_core_init_rate_req() from clk_core_round_rate_nolock() to its caller Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 16/25] clk: Introduce clk_hw_init_rate_request() Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 17/25] clk: Add our request boundaries in clk_core_init_rate_req Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 18/25] clk: Switch from __clk_determine_rate to clk_core_round_rate_nolock Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 19/25] clk: Introduce clk_core_has_parent() Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 20/25] clk: Constify clk_has_parent() Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 21/25] clk: Stop forwarding clk_rate_requests to the parent Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 22/25] clk: Zero the clk_rate_request structure Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 23/25] clk: Introduce the clk_hw_get_rate_range function Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 24/25] clk: qcom: clk-rcg2: Take clock boundaries into consideration for gfx3d Maxime Ripard
2022-08-16 11:25 ` [PATCH v9 25/25] clk: tests: Add missing test case for ranges Maxime Ripard
2022-08-16 14:07 ` [PATCH v9 00/25] clk: More clock rate fixes and tests Alexander Stein
2022-08-18 6:44 ` Naresh Kamboju
2022-09-02 14:53 ` Maxime Ripard
2022-09-17 8:31 ` Stephen Boyd
2022-09-20 12:35 ` 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=20220816112530.1837489-1-maxime@cerno.tech \
--to=maxime@cerno.tech \
--cc=alexander.stein@ew.tq-group.com \
--cc=dmitry.baryshkov@linaro.org \
--cc=jbrunet@baylibre.com \
--cc=linux-clk@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=mturquette@baylibre.com \
--cc=naresh.kamboju@linaro.org \
--cc=narmstrong@baylibre.com \
--cc=sboyd@kernel.org \
--cc=tony@atomide.com \
--cc=y.oudjana@protonmail.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.