From: Lina Iyer <ilina@codeaurora.org>
To: Evan Green <evgreen@chromium.org>
Cc: Andy Gross <andy.gross@linaro.org>,
David Brown <david.brown@linaro.org>,
linux-arm-msm@vger.kernel.org, linux-soc@vger.kernel.org,
Rajendra Nayak <rnayak@codeaurora.org>,
Bjorn Andersson <bjorn.andersson@linaro.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 09/10] drivers: qcom: rpmh: add support for batch RPMH request
Date: Thu, 22 Feb 2018 17:04:51 +0000 [thread overview]
Message-ID: <20180222170451.GB7098@codeaurora.org> (raw)
In-Reply-To: <CAE=gft7DV3semzumy+62hQgrUWUvOATJs6BKB5x0mj=0dt+Tig@mail.gmail.com>
On Wed, Feb 21 2018 at 23:25 +0000, Evan Green wrote:
>Hello Lina,
>
>On Thu, Feb 15, 2018 at 9:35 AM, Lina Iyer <ilina@codeaurora.org> wrote:
>> Platform drivers need make a lot of resource state requests at the same
>> time, say, at the start or end of an usecase. It can be quite
>> inefficient to send each request separately. Instead they can give the
>> RPMH library a batch of requests to be sent and wait on the whole
>> transaction to be complete.
>>
>> rpmh_write_batch() is a blocking call that can be used to send multiple
>> RPMH command sets. Each RPMH command set is set asynchronously and the
>> API blocks until all the command sets are complete and receive their
>> tx_done callbacks.
>>
>> Signed-off-by: Lina Iyer <ilina@codeaurora.org>
>> ---
>> drivers/soc/qcom/rpmh.c | 150 ++++++++++++++++++++++++++++++++++++++++++++++++
>> include/soc/qcom/rpmh.h | 8 +++
>> 2 files changed, 158 insertions(+)
>>
>> diff --git a/drivers/soc/qcom/rpmh.c b/drivers/soc/qcom/rpmh.c
>> index dff4c46be3af..6f60bb9a4dfa 100644
>> --- a/drivers/soc/qcom/rpmh.c
>> +++ b/drivers/soc/qcom/rpmh.c
>[...]
>> @@ -394,6 +537,11 @@ int rpmh_flush(struct rpmh_client *rc)
>> }
>> spin_unlock_irqrestore(&rpm->lock, flags);
>>
>> + /* First flush the cached batch requests */
>> + ret = flush_batch(rc);
>> + if (ret)
>> + return ret;
>> +
>> /*
>> * Nobody else should be calling this function other than system PM,,
>> * hence we can run without locks.
This comment and the comment in the header of this function.
>> @@ -438,6 +586,8 @@ int rpmh_invalidate(struct rpmh_client *rc)
>> if (IS_ERR_OR_NULL(rc))
>> return -EINVAL;
>>
>> + invalidate_batch(rc);
>> +
>
>Similarly to my comments in patch 7, aren't there races here with
>adding new elements? After flush_batch, but before invalidate_batch,
>somebody could call cache_batch, which would add new things on the end
>of the array. These new items would be clobbered by invalidate_batch,
>without having been flushed first.
>
Flush is a system PM function and is not called by drivers and is not
expected to run conncurrently with other threads using the RPMH library.
Thanks,
Lina
next prev parent reply other threads:[~2018-02-22 17:04 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-15 17:34 [PATCH v2 00/10] drivers/qcom: add RPMH communication support Lina Iyer
2018-02-15 17:34 ` [PATCH v2 01/10] drivers: qcom: rpmh-rsc: add RPMH controller for QCOM SoCs Lina Iyer
2018-02-16 21:29 ` Evan Green
2018-02-16 23:51 ` Lina Iyer
2018-02-15 17:34 ` [PATCH v2 02/10] dt-bindings: introduce RPMH RSC bindings for Qualcomm SoCs Lina Iyer
2018-02-19 15:58 ` Rob Herring
2018-02-15 17:35 ` [PATCH v2 03/10] drivers: qcom: rpmh-rsc: log RPMH requests in FTRACE Lina Iyer
2018-02-15 19:57 ` Steven Rostedt
2018-02-15 20:38 ` Lina Iyer
2018-02-15 20:41 ` Lina Iyer
2018-02-15 20:51 ` Steven Rostedt
2018-02-15 20:55 ` Lina Iyer
2018-02-18 11:27 ` kbuild test robot
2018-02-15 17:35 ` [PATCH v2 04/10] drivers: qcom: rpmh: add RPMH helper functions Lina Iyer
2018-02-15 17:35 ` [PATCH v2 05/10] drivers: qcom: rpmh-rsc: write sleep/wake requests to TCS Lina Iyer
2018-02-16 23:50 ` Evan Green
2018-02-20 16:03 ` Lina Iyer
2018-02-15 17:35 ` [PATCH v2 06/10] drivers: qcom: rpmh-rsc: allow invalidation of sleep/wake TCS Lina Iyer
2018-02-15 17:35 ` [PATCH v2 07/10] drivers: qcom: rpmh: cache sleep/wake state requests Lina Iyer
2018-02-21 22:07 ` Evan Green
2018-02-22 16:58 ` Lina Iyer
2018-02-22 23:41 ` Evan Green
2018-02-15 17:35 ` [PATCH v2 08/10] drivers: qcom: rpmh: allow requests to be sent asynchronously Lina Iyer
2018-02-15 17:35 ` [PATCH v2 09/10] drivers: qcom: rpmh: add support for batch RPMH request Lina Iyer
2018-02-21 23:24 ` Evan Green
2018-02-22 17:04 ` Lina Iyer [this message]
2018-02-22 23:45 ` Evan Green
2018-02-15 17:35 ` [PATCH v2 10/10] drivers: qcom: rpmh-rsc: allow active requests from wake TCS Lina Iyer
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=20180222170451.GB7098@codeaurora.org \
--to=ilina@codeaurora.org \
--cc=andy.gross@linaro.org \
--cc=bjorn.andersson@linaro.org \
--cc=david.brown@linaro.org \
--cc=evgreen@chromium.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-soc@vger.kernel.org \
--cc=rnayak@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).