clk: implement clock rate protection mechanism
Status from this message: Applied to clk-protect-rate, with the exception that I did not apply
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v5 Latest10 patches 9 repliesApplied
- v410 patches 7 repliesSuperseded
- v3 posting 8/80 of 10 patches 0 repliesSuperseded
Earlier versions · 9
| Version | Posted | Patches | Replies | Status |
|---|---|---|---|---|
| v3 posting 7/8 | 0 of 10 patches | 0 replies | Superseded | |
| v3 posting 6/8 | 0 of 10 patches | 0 replies | Superseded | |
| v3 posting 5/8 | 0 of 10 patches | 0 replies | Superseded | |
| v3 posting 4/8 | 0 of 10 patches | 0 replies | Superseded | |
| v3 posting 3/8 | 0 of 10 patches | 0 replies | Superseded | |
| v3 posting 2/8 | 0 of 10 patches | 0 replies | Superseded | |
| v3 posting 1/8 | 10 patches | 0 replies | Superseded | |
| v2 | 11 patches | 0 replies | Superseded | |
| v1 | 0 of 10 patches | 0 replies | Superseded |
Patches in v5 Applied
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/10 | clk: fix incorrect usage of ENOSYSdrivers/ | +1 | 0 replies | |
| 2/10 | clk: take the prepare lock out of clk_core_set_parentdrivers/ | +20 | 0 replies | |
| 3/10 | clk: add clk_core_set_phase_nolock functiondrivers/ | +21 | 0 replies | |
| 4/10 | clk: rework calls to round and determine rate callbacksdrivers/ | +52 | 0 replies | |
| 5/10 | clk: use round rate to bail out early in set_ratedrivers/ | +23 | 0 replies | |
| 6/10 | clk: add clock protection mechanism to clk coredrivers/ include/ | +113 | 0 replies | |
| 7/10 | clk: cosmetic changes to clk_summary debugfs entrydrivers/ | +4 | 0 replies | |
| 8/10 | clk: fix CLK_SET_RATE_GATE with clock rate protectiondrivers/ | +13 | 1 reply | |
| 9/10 | clk: add clk_rate_exclusive apidrivers/ include/ | +234 | 0 replies | |
| 10/10 | clk: fix set_rate_range when current rate is out of rangedrivers/ | +33 | 0 replies |
Reviews trailers per patch
All 10 patches have a Reviewed-by or Acked-by.
| Patch | Linus Walleij | Quentin Schulz | Maxime Ripard | Michael Turquette |
|---|---|---|---|---|
| 1/10 | A-b | T-b | T-b | A-b |
| 2/10 | A-b | T-b | T-b | A-b |
| 3/10 | A-b | T-b | T-b | A-b |
| 4/10 | A-b | T-b | T-b | A-b |
| 5/10 | A-b | T-b | T-b | A-b |
| 6/10 | T-b | A-b | ||
| 7/10 | A-b | T-b | T-b | A-b |
| 8/10 | A-b | T-b | T-b | A-b |
| 9/10 | T-b | A-b | ||
| 10/10 | T-b | A-b |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 4 reviewers.
Cover letter [PATCH v5 00/10] clk: implement clock rate protection mechanism
This Patchset is related the RFC [0] and the discussion around CLK_SET_RATE_GATE available here [1]
This patchset introduce clock protection to the CCF core. This can then be used for:
* Provide a way for a consumer to claim exclusivity over the rate control of a provider. Some clock consumers require that a clock rate must not deviate from its selected frequency. There can be several reasons for this, not least of which is that some hardware may not be able to handle or recover from a glitch caused by changing the clock rate while the hardware is in operation. For such HW, The ability to get exclusive control of a clock's rate, and release that exclusivity, could be seen as a fundamental clock rate control primitive. The exclusivity is not preemptible, so when claimed more than once, is rate is effectively locked.
* Provide a similar functionality to providers themselves, fixing CLK_SET_RATE_GATE flag (enforce clock gating along the tree). While there might still be a few platforms relying the broken implementation, tests done has shown this change to be pretty safe.
Changes since v4: [4]
- Fixup documentation comments
- Fix error on exclusive API when CCF is disabled
Changes since v3: [3]
- Reorder patches following Stephen comments
- Add before/after examples to the cosmetic change
- Remove loops around protection where possible
- Rename the API from "protect" to "exclusive" which decribe what the code better
Changes since v2: [2]
- Fix issues reported by Adriana Reus (Thanks !)
- Dropped patch "clk: move CLK_SET_RATE_GATE protection from prepare to enable". This was broken as the protect count, like the prepare_count should only be accessed under the prepare_lock.
Changes since v1: [1]
- Check if the rate would actually change before continuing, and bail-out early if not.
Changes since RFC: [0]
- s/clk_protect/clk_rate_protect
- Request rework around core_nolock function
- Add clk_set_rate_protect
- Reword clk_rate_protect and clk_unprotect documentation
- Add few comments to explain the code
- Add fixes for CLK_SET_RATE_GATE
This was tested with the audio use case mentioned in [1]
[0]: https://lkml.kernel.org/r/[email protected]
[1]: https://lkml.kernel.org/r/148942423440.82235.17188153691656009029@resonance
[2]: https://lkml.kernel.org/r/[email protected]
[3]: https://lkml.kernel.org/r/[email protected]
[4]: https://lkml.kernel.org/r/[email protected]
Jerome Brunet (10):
clk: fix incorrect usage of ENOSYS
clk: take the prepare lock out of clk_core_set_parent
clk: add clk_core_set_phase_nolock function
clk: rework calls to round and determine rate callbacks
clk: use round rate to bail out early in set_rate
clk: add clock protection mechanism to clk core
clk: cosmetic changes to clk_summary debugfs entry
clk: fix CLK_SET_RATE_GATE with clock rate protection
clk: add clk_rate_exclusive api
clk: fix set_rate_range when current rate is out of range
drivers/clk/clk.c | 509 +++++++++++++++++++++++++++++++++++++------ include/linux/clk-provider.h | 1 + include/linux/clk.h | 62 ++++++ 3 files changed, 502 insertions(+), 70 deletions(-)
Signature · 1 line
2.14.3