From: Sumit Gupta <sumitg@nvidia.com>
To: Viresh Kumar <viresh.kumar@linaro.org>
Cc: <rafael@kernel.org>, <treding@nvidia.com>, <jonathanh@nvidia.com>,
<linux-pm@vger.kernel.org>, <linux-tegra@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <bbasu@nvidia.com>,
Sumit Gupta <sumitg@nvidia.com>
Subject: Re: [Patch] cpufreq: tegra194: remove opp table in exit hook
Date: Mon, 14 Aug 2023 23:43:02 +0530 [thread overview]
Message-ID: <17b11665-874a-5b06-bc97-70f5202f238b@nvidia.com> (raw)
In-Reply-To: <20230810053127.y4wmumlggkro7r66@vireshk-i7>
On 10/08/23 11:01, Viresh Kumar wrote:
> External email: Use caution opening links or attachments
>
>
> On 09-08-23, 21:04, Sumit Gupta wrote:
>> Add exit hook and remove OPP table when all the CPU's in a policy
>> are offlined. It will fix the below error messages when onlining
>> first CPU from a policy whose all CPU's were previously offlined.
>>
>> debugfs: File 'cpu5' in directory 'opp' already present!
>> debugfs: File 'cpu6' in directory 'opp' already present!
>> debugfs: File 'cpu7' in directory 'opp' already present!
>>
>> Fixes: f41e1442ac5b ("cpufreq: tegra194: add OPP support and set bandwidth")
>> Signed-off-by: Sumit Gupta <sumitg@nvidia.com>
>> ---
>> drivers/cpufreq/tegra194-cpufreq.c | 13 +++++++++++++
>> 1 file changed, 13 insertions(+)
>>
>> diff --git a/drivers/cpufreq/tegra194-cpufreq.c b/drivers/cpufreq/tegra194-cpufreq.c
>> index c90b30469165..66a9c23544db 100644
>> --- a/drivers/cpufreq/tegra194-cpufreq.c
>> +++ b/drivers/cpufreq/tegra194-cpufreq.c
>> @@ -454,6 +454,8 @@ static int tegra_cpufreq_init_cpufreq_table(struct cpufreq_policy *policy,
>> if (ret < 0)
>> return ret;
>>
>> + dev_pm_opp_put(opp);
>> +
>> freq_table[j].driver_data = pos->driver_data;
>> freq_table[j].frequency = pos->frequency;
>> j++;
>> @@ -508,6 +510,16 @@ static int tegra194_cpufreq_init(struct cpufreq_policy *policy)
>> return 0;
>> }
>>
>> +static int tegra194_cpufreq_exit(struct cpufreq_policy *policy)
>> +{
>> + struct device *cpu_dev = get_cpu_device(policy->cpu);
>> +
>> + dev_pm_opp_remove_all_dynamic(cpu_dev);
>> + dev_pm_opp_of_cpumask_remove_table(policy->related_cpus);
>> +
>> + return 0;
>> +}
>> +
>> static int tegra194_cpufreq_set_target(struct cpufreq_policy *policy,
>> unsigned int index)
>> {
>> @@ -535,6 +547,7 @@ static struct cpufreq_driver tegra194_cpufreq_driver = {
>> .target_index = tegra194_cpufreq_set_target,
>> .get = tegra194_get_speed,
>> .init = tegra194_cpufreq_init,
>> + .exit = tegra194_cpufreq_exit,
>> .attr = cpufreq_generic_attr,
>> };
>
> If it is only about hotplugging of the CPUs, then you can also do this I guess.
>
> commit 263abfe74b5f ("cpufreq: dt: Implement online/offline() callbacks")
>
> But since your driver is capable of being built as a module, I suggest you try
> to build it as one and insert remove it multiple times. It must cause you some
> trouble as you don't implement an .exit() before this patch.
>
> Eventually, I think you need to do both, what this patch and 263abfe74b5f do.
> Just that the reasons need to be correct for both the changes.
>
> --
> viresh
Hi Viresh,
I got the same message on inserting and removing the module multiple
times as you suggested. After applying this change, the message is not
coming. So, the current change is resolving both scenarios as
__cpufreq_offline() calls either exit() or offline().
I can update the commit message to mention both scenarios and keep
change as it is?
cpufreq_remove_dev
|-__cpufreq_offline
|--tegra194_cpufreq_exit
cpuhp_cpufreq_offline
|-__cpufreq_offline
|--tegra194_cpufreq_exit
Thank you,
Sumit Gupta
next prev parent reply other threads:[~2023-08-14 18:14 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-09 15:34 [Patch] cpufreq: tegra194: remove opp table in exit hook Sumit Gupta
2023-08-10 5:31 ` Viresh Kumar
2023-08-14 18:13 ` Sumit Gupta [this message]
2023-08-16 3:34 ` Viresh Kumar
2023-08-25 11:33 ` Sumit Gupta
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=17b11665-874a-5b06-bc97-70f5202f238b@nvidia.com \
--to=sumitg@nvidia.com \
--cc=bbasu@nvidia.com \
--cc=jonathanh@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=rafael@kernel.org \
--cc=treding@nvidia.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox