From: Saravana Kannan <skannan@codeaurora.org>
To: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
Viresh Kumar <viresh.kumar@linaro.org>,
Linux PM mailing list <linux-pm@vger.kernel.org>
Subject: Re: Bug in cpufreq_update_util hook handling?
Date: Wed, 21 Jun 2017 18:59:27 -0700 [thread overview]
Message-ID: <594B247F.9050307@codeaurora.org> (raw)
In-Reply-To: <CAJZ5v0j_ZAkNffse920BngRe6kEn5_7crQw8KFgaMMh-4YhLww@mail.gmail.com>
On 06/21/2017 05:36 PM, Rafael J. Wysocki wrote:
> On Thu, Jun 22, 2017 at 2:24 AM, Saravana Kannan <skannan@codeaurora.org> wrote:
>> cpufreq_add_update_util_hook() registers the "data" and we are using RCUs to
>> store "data".
>>
>> When we need to send util updates, scheduler calls cpufreq_update_util()
>> that just uses a rcu_dereference_sched() to access the data pointer.
>>
>> When the governor is stopped, to unregister the hook, it calls
>> cpufreq_remove_update_util_hook() and calls synchronize_sched(). The
>> assumption that the governor is making (and is allowed to make) is that
>> after synchronize_sched() all references to "data" and "func" are no longer
>> used (since cpufreq_remove_update_util_hook is supposed to replace data with
>> NULL).
>>
>> I'm no RCU, expert, if I understand it right, if we don't use
>> "rcu_read_lock()" and "rcu_read_unlock()" in cpufreq_update_util(), then the
>> scheduler can continue calling into the governor hooks after the governor
>> has stopped.
>>
>> rcu_read_lock();
>> data = rcu_dereference_sched(*per_cpu_ptr(&cpufreq_update_util_data,
>> cpu_of(rq)));
>> if (data)
>> data->func(data, sched_clock(), flags);
>> rcu_read_unlock();
>>
>> Is my understanding right?
>
> No, it isn't.
>
> This is RCU-sched (as documented) and this code already runs in a
> read-side critical section.
>
> Thanks,
> Rafael
>
Thanks for the answer. We were seeing some issues in our internal tree.
But that was probably because the calls were made from sections that
weren't read-side critical.
-Saravana
--
Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
prev parent reply other threads:[~2017-06-22 1:59 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-22 0:24 Bug in cpufreq_update_util hook handling? Saravana Kannan
2017-06-22 0:36 ` Rafael J. Wysocki
2017-06-22 1:59 ` Saravana Kannan [this message]
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=594B247F.9050307@codeaurora.org \
--to=skannan@codeaurora.org \
--cc=linux-pm@vger.kernel.org \
--cc=rafael@kernel.org \
--cc=rjw@rjwysocki.net \
--cc=viresh.kumar@linaro.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.