From: Michael Turquette <mturquette@baylibre.com>
To: Jerome Brunet <jbrunet@baylibre.com>,
Stephen Boyd <sboyd@codeaurora.org>
Cc: linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org,
Russell King <linux@armlinux.org.uk>,
Linus Walleij <linus.walleij@linaro.org>,
Quentin Schulz <quentin.schulz@free-electrons.com>,
Kevin Hilman <khilman@baylibre.com>,
Maxime Ripard <maxime.ripard@free-electrons.com>
Subject: Re: [PATCH v5 00/10] clk: implement clock rate protection mechanism
Date: Mon, 23 Apr 2018 11:21:36 -0700 [thread overview]
Message-ID: <20180423182136.43156.94025@harbor.lan> (raw)
In-Reply-To: <1517575828.3153.23.camel@baylibre.com>
Quoting Jerome Brunet (2018-02-02 04:50:28)
> On Thu, 2018-02-01 at 09:43 -0800, Stephen Boyd wrote:
> > > > > Applied to clk-protect-rate, with the exception that I did not ap=
ply
> > > > > "clk: fix CLK_SET_RATE_GATE with clock rate protection" as it bre=
aks
> > > > > qcom clk code.
> > > > > =
> > > > > Stephen, do you plan to fix up the qcom clock code so that the
> > > > > SET_RATE_GATE improvement can go in?
> > > > > =
> > > > =
> > > > I started working on it a while back. Let's see if I can finish
> > > > it off this weekend.
> > > > =
> > > =
> > > Hi Stephen,
> > > =
> > > Have you been able find something to fix the qcom code regarding this=
issue ?
> > > =
> > =
> > This is what I have. I'm unhappy with a few things. First, I made
> > a spinlock for each clk, which is overkill. Most likely, just a
> > single spinlock is needed per clk-controller device. Second, I
> > haven't finished off the branch/gate part, so gating/ungating of
> > branches needs to be locked as well to prevent branches from
> > turning on while rates change. And finally, the 'branches' list is
> > duplicating a bunch of information about the child clks of an
> > RCG, so it feels like we need a core framework API to enable and
> > disable clks forcibly while remembering what is enabled/disabled
> > or at least to walk the clk tree and call some function.
> =
> Looks similar to Mike's CCR idea ;)
Giving clk provider drivers more control over the clocks that they
provide is a similar concept, but the ancient ccr series dealt almost
exclusively with set_rate and set_parent ops.
> =
> > =
> > The spinlock per clk-controller is duplicating the regmap lock we
> > already have, so we may want a regmap API to grab the lock, and
> > then another regmap API to do reads/writes without grabbing the
> > lock, and then finally release the lock with a regmap unlock API.
> =
> There is 'regsequence' for multiple write in a burst, but that's only if =
you do
> write only ... I suppose you are more in read/update/writeback mode, so it
> probably does not help much.
> =
> Maybe we could extend regmap's regsequence, to do a sequence of
> regmap_update_bits() ?
> =
> Another possibility could be to provide your own lock/unlock ops when
> registering the regmap. With this, you might be able to supply your own s=
pinlock
> to regmap. This is already supported by regmap, would it help ?
Stephen, was there ever an update on your end? This patch has been
dangling for a while and I thought it was time to ping on it.
Regards,
Mike
> =
> > This part is mostly an optimization, but it would be nice to have
> > so that multiple writes could be done in sequence. This way, the
> > RCG code could do the special locking sequence and the branch
> > code could do the fire and forget single bit update.
>
=20
WARNING: multiple messages have this Message-ID (diff)
From: Michael Turquette <mturquette@baylibre.com>
To: Jerome Brunet <jbrunet@baylibre.com>,
Stephen Boyd <sboyd@codeaurora.org>
Cc: linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org,
Russell King <linux@armlinux.org.uk>,
Linus Walleij <linus.walleij@linaro.org>,
Quentin Schulz <quentin.schulz@free-electrons.com>,
Kevin Hilman <khilman@baylibre.com>,
Maxime Ripard <maxime.ripard@free-electrons.com>
Subject: Re: [PATCH v5 00/10] clk: implement clock rate protection mechanism
Date: Mon, 23 Apr 2018 11:21:36 -0700 [thread overview]
Message-ID: <20180423182136.43156.94025@harbor.lan> (raw)
In-Reply-To: <1517575828.3153.23.camel@baylibre.com>
Quoting Jerome Brunet (2018-02-02 04:50:28)
> On Thu, 2018-02-01 at 09:43 -0800, Stephen Boyd wrote:
> > > > > Applied to clk-protect-rate, with the exception that I did not apply
> > > > > "clk: fix CLK_SET_RATE_GATE with clock rate protection" as it breaks
> > > > > qcom clk code.
> > > > >
> > > > > Stephen, do you plan to fix up the qcom clock code so that the
> > > > > SET_RATE_GATE improvement can go in?
> > > > >
> > > >
> > > > I started working on it a while back. Let's see if I can finish
> > > > it off this weekend.
> > > >
> > >
> > > Hi Stephen,
> > >
> > > Have you been able find something to fix the qcom code regarding this issue ?
> > >
> >
> > This is what I have. I'm unhappy with a few things. First, I made
> > a spinlock for each clk, which is overkill. Most likely, just a
> > single spinlock is needed per clk-controller device. Second, I
> > haven't finished off the branch/gate part, so gating/ungating of
> > branches needs to be locked as well to prevent branches from
> > turning on while rates change. And finally, the 'branches' list is
> > duplicating a bunch of information about the child clks of an
> > RCG, so it feels like we need a core framework API to enable and
> > disable clks forcibly while remembering what is enabled/disabled
> > or at least to walk the clk tree and call some function.
>
> Looks similar to Mike's CCR idea ;)
Giving clk provider drivers more control over the clocks that they
provide is a similar concept, but the ancient ccr series dealt almost
exclusively with set_rate and set_parent ops.
>
> >
> > The spinlock per clk-controller is duplicating the regmap lock we
> > already have, so we may want a regmap API to grab the lock, and
> > then another regmap API to do reads/writes without grabbing the
> > lock, and then finally release the lock with a regmap unlock API.
>
> There is 'regsequence' for multiple write in a burst, but that's only if you do
> write only ... I suppose you are more in read/update/writeback mode, so it
> probably does not help much.
>
> Maybe we could extend regmap's regsequence, to do a sequence of
> regmap_update_bits() ?
>
> Another possibility could be to provide your own lock/unlock ops when
> registering the regmap. With this, you might be able to supply your own spinlock
> to regmap. This is already supported by regmap, would it help ?
Stephen, was there ever an update on your end? This patch has been
dangling for a while and I thought it was time to ping on it.
Regards,
Mike
>
> > This part is mostly an optimization, but it would be nice to have
> > so that multiple writes could be done in sequence. This way, the
> > RCG code could do the special locking sequence and the branch
> > code could do the fire and forget single bit update.
>
next prev parent reply other threads:[~2018-04-23 18:21 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-01 21:51 [PATCH v5 00/10] clk: implement clock rate protection mechanism Jerome Brunet
2017-12-01 21:51 ` [PATCH v5 01/10] clk: fix incorrect usage of ENOSYS Jerome Brunet
2017-12-01 21:51 ` [PATCH v5 02/10] clk: take the prepare lock out of clk_core_set_parent Jerome Brunet
2017-12-01 21:51 ` [PATCH v5 03/10] clk: add clk_core_set_phase_nolock function Jerome Brunet
2017-12-01 21:51 ` [PATCH v5 04/10] clk: rework calls to round and determine rate callbacks Jerome Brunet
2017-12-01 21:51 ` [PATCH v5 05/10] clk: use round rate to bail out early in set_rate Jerome Brunet
2017-12-01 21:51 ` [PATCH v5 06/10] clk: add clock protection mechanism to clk core Jerome Brunet
2017-12-01 21:51 ` [PATCH v5 07/10] clk: cosmetic changes to clk_summary debugfs entry Jerome Brunet
2017-12-01 21:51 ` [PATCH v5 08/10] clk: fix CLK_SET_RATE_GATE with clock rate protection Jerome Brunet
2018-03-30 8:20 ` Jerome Brunet
2017-12-01 21:51 ` [PATCH v5 09/10] clk: add clk_rate_exclusive api Jerome Brunet
2017-12-01 21:52 ` [PATCH v5 10/10] clk: fix set_rate_range when current rate is out of range Jerome Brunet
2017-12-20 0:38 ` [PATCH v5 00/10] clk: implement clock rate protection mechanism Michael Turquette
2017-12-20 0:38 ` Michael Turquette
2017-12-20 17:45 ` Jerome Brunet
2017-12-22 2:15 ` Stephen Boyd
2018-01-29 9:22 ` Jerome Brunet
2018-02-01 17:43 ` Stephen Boyd
2018-02-02 12:50 ` Jerome Brunet
2018-04-23 18:21 ` Michael Turquette [this message]
2018-04-23 18:21 ` Michael Turquette
2018-05-24 14:53 ` Jerome Brunet
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=20180423182136.43156.94025@harbor.lan \
--to=mturquette@baylibre.com \
--cc=jbrunet@baylibre.com \
--cc=khilman@baylibre.com \
--cc=linus.walleij@linaro.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=maxime.ripard@free-electrons.com \
--cc=quentin.schulz@free-electrons.com \
--cc=sboyd@codeaurora.org \
/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.