From: Jonathan Cameron <jonathan.cameron@huawei.com>
To: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: Zihuan Zhang <zhangzihuan@kylinos.cn>,
Viresh Kumar <viresh.kumar@linaro.org>,
Catalin Marinas <catalin.marinas@arm.com>,
"Will Deacon" <will@kernel.org>, Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>,
Michael Ellerman <mpe@ellerman.id.au>,
Krzysztof Kozlowski <krzk@kernel.org>,
Alim Akhtar <alim.akhtar@samsung.com>,
Thierry Reding <thierry.reding@gmail.com>,
MyungJoo Ham <myungjoo.ham@samsung.com>,
Kyungmin Park <kyungmin.park@samsung.com>,
Chanwoo Choi <cw00.choi@samsung.com>,
"Jani Nikula" <jani.nikula@linux.intel.com>,
Rodrigo Vivi <rodrigo.vivi@intel.com>,
Tvrtko Ursulin <tursulin@ursulin.net>,
"David Airlie" <airlied@gmail.com>,
Simona Vetter <simona@ffwll.ch>,
Daniel Lezcano <daniel.lezcano@kernel.org>,
Sascha Hauer <s.hauer@pengutronix.de>,
"Shawn Guo" <shawnguo@kernel.org>,
Eduardo Valentin <edubezval@gmail.com>,
Keerthy <j-keerthy@ti.com>, Ben Horgan <ben.horgan@arm.com>,
zhenglifeng <zhenglifeng1@huawei.com>,
Zhang Rui <rui.zhang@intel.com>, Len Brown <lenb@kernel.org>,
Lukasz Luba <lukasz.luba@arm.com>,
"Pengutronix Kernel Team" <kernel@pengutronix.de>,
Beata Michalska <beata.michalska@arm.com>,
Fabio Estevam <festevam@gmail.com>,
Pavel Machek <pavel@kernel.org>,
"Sumit Gupta" <sumitg@nvidia.com>,
Prasanna Kumar T S M <ptsm@linux.microsoft.com>,
Sudeep Holla <sudeep.holla@arm.com>,
Yicong Yang <yangyicong@hisilicon.com>,
<linux-pm@vger.kernel.org>, <linux-acpi@vger.kernel.org>,
<linuxppc-dev@lists.ozlabs.org>,
<linux-arm-kernel@lists.infradead.org>,
<intel-gfx@lists.freedesktop.org>,
<dri-devel@lists.freedesktop.org>, <imx@lists.linux.dev>,
<linux-omap@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4 02/10] ACPI: processor: thermal: Use scope-based cleanup helper
Date: Fri, 5 Sep 2025 10:45:21 +0100 [thread overview]
Message-ID: <20250905104521.00003944@huawei.com> (raw)
In-Reply-To: <CAJZ5v0j5O4Q72P-OLiR4RK4g8E5joi_gu_O4HZymh9hJvy551g@mail.gmail.com>
On Wed, 3 Sep 2025 15:23:31 +0200
"Rafael J. Wysocki" <rafael@kernel.org> wrote:
> On Wed, Sep 3, 2025 at 3:18 PM Zihuan Zhang <zhangzihuan@kylinos.cn> wrote:
> >
> > Replace the manual cpufreq_cpu_put() with __free(put_cpufreq_policy)
> > annotation for policy references. This reduces the risk of reference
> > counting mistakes and aligns the code with the latest kernel style.
> >
> > No functional change intended.
> >
> > Signed-off-by: Zihuan Zhang <zhangzihuan@kylinos.cn>
> > ---
> > drivers/acpi/processor_thermal.c | 37 ++++++++++++++++++--------------
> > 1 file changed, 21 insertions(+), 16 deletions(-)
> >
> > diff --git a/drivers/acpi/processor_thermal.c b/drivers/acpi/processor_thermal.c
> > index 1219adb11ab9..5043f17d27b7 100644
> > --- a/drivers/acpi/processor_thermal.c
> > +++ b/drivers/acpi/processor_thermal.c
> > @@ -62,19 +62,14 @@ static int phys_package_first_cpu(int cpu)
> > return 0;
> > }
> >
> > -static int cpu_has_cpufreq(unsigned int cpu)
> > +static bool cpu_has_cpufreq(unsigned int cpu)
> > {
> > - struct cpufreq_policy *policy;
> > + struct cpufreq_policy *policy __free(put_cpufreq_policy) = cpufreq_cpu_get(cpu);
I'd put the order back as it was. See docs in cleanup.h, it is fine to
declare local variables inline if they are being use with __free()
That way if the simple check on acpi_process_cpu_freq_init fails no
get needs to occur.
So something like
static bool cpu_has_cpufreq(unsigned int cpu)
{
if (!acpi_processor_cpufreq_init)
return 0;
struct cpufreq_policy *policy __free(put_cpufreq_policy) = cpufreq_cpu_get(cpu);
return policy != NULL; //Personally I find !! on a pointer a bit weird :)
}
> >
> > if (!acpi_processor_cpufreq_init)
> > return 0;
> >
> > - policy = cpufreq_cpu_get(cpu);
> > - if (policy) {
> > - cpufreq_cpu_put(policy);
> > - return 1;
> > - }
> > - return 0;
> > + return !!policy;
> > }
> >
> > static int cpufreq_get_max_state(unsigned int cpu)
> > @@ -93,9 +88,23 @@ static int cpufreq_get_cur_state(unsigned int cpu)
> > return reduction_step(cpu);
> > }
> >
> > +static long long cpufreq_get_max_freq(unsigned int cpu)
> > +{
> > + long long max_freq;
> > + struct cpufreq_policy *policy __free(put_cpufreq_policy) =
> > + cpufreq_cpu_get(cpu);
Format consistently. If you are going to wrap to 80 chars here
then do it for the cpu_has_cpufreq() line that is identical to this.
> > +
> > + if (!policy)
> > + return -EINVAL;
> > +
> > + max_freq = (policy->cpuinfo.max_freq *
> > + (100 - reduction_step(cpu) * cpufreq_thermal_reduction_pctg)) / 100;
> > +
> > + return max_freq;
> > +}
> > +
> > static int cpufreq_set_cur_state(unsigned int cpu, int state)
> > {
> > - struct cpufreq_policy *policy;
> > struct acpi_processor *pr;
> > unsigned long max_freq;
> > int i, ret;
> > @@ -120,14 +129,10 @@ static int cpufreq_set_cur_state(unsigned int cpu, int state)
> > if (unlikely(!freq_qos_request_active(&pr->thermal_req)))
> > continue;
> >
> > - policy = cpufreq_cpu_get(i);
> > - if (!policy)
> > - return -EINVAL;
> > -
> > - max_freq = (policy->cpuinfo.max_freq *
> > - (100 - reduction_step(i) * cpufreq_thermal_reduction_pctg)) / 100;
> > + max_freq = cpufreq_get_max_freq(cpu);
> >
> > - cpufreq_cpu_put(policy);
> > + if (max_freq == -EINVAL)
> > + return -EINVAL;
>
> Please also move the code below to the new function so it does not
> need to return a value.
>
> >
> > ret = freq_qos_update_request(&pr->thermal_req, max_freq);
> > if (ret < 0) {
> > --
>
next prev parent reply other threads:[~2025-09-05 9:45 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-03 13:17 [PATCH v4 00/10] cpufreq: use __free() for all cpufreq_cpu_get() references Zihuan Zhang
2025-09-03 13:17 ` [PATCH v4 01/10] arm64: topology: Use scope-based cleanup helper Zihuan Zhang
2025-09-05 9:38 ` Jonathan Cameron
2025-09-03 13:17 ` [PATCH v4 02/10] ACPI: processor: thermal: " Zihuan Zhang
2025-09-03 13:23 ` Rafael J. Wysocki
2025-09-05 9:45 ` Jonathan Cameron [this message]
2025-09-03 13:17 ` [PATCH v4 03/10] cpufreq: intel_pstate: " Zihuan Zhang
2025-09-05 9:47 ` Jonathan Cameron
2025-09-05 9:48 ` Rafael J. Wysocki
2025-09-03 13:17 ` [PATCH v4 04/10] cpufreq: powernv: " Zihuan Zhang
2025-09-05 9:49 ` Jonathan Cameron
2025-09-03 13:17 ` [PATCH v4 05/10] PM / devfreq: " Zihuan Zhang
2025-09-05 10:01 ` Jonathan Cameron
2025-09-03 13:17 ` [PATCH v4 06/10] drm/i915: " Zihuan Zhang
2025-09-05 10:02 ` Jonathan Cameron
2025-09-03 13:17 ` [PATCH v4 07/10] powercap: dtpm_cpu: " Zihuan Zhang
2025-09-03 13:45 ` Rafael J. Wysocki
2025-09-04 10:37 ` Zihuan Zhang
2025-09-04 10:55 ` Krzysztof Kozlowski
2025-09-04 13:17 ` Rafael J. Wysocki
2025-09-05 7:44 ` Zihuan Zhang
2025-09-03 13:17 ` [PATCH v4 08/10] thermal: imx: " Zihuan Zhang
2025-09-05 10:05 ` Jonathan Cameron
2025-09-05 10:21 ` Zihuan Zhang
2025-09-03 13:17 ` [PATCH v4 09/10] thermal/drivers/ti-soc-thermal: " Zihuan Zhang
2025-09-05 6:57 ` Andreas Kemnade
2025-09-05 7:02 ` Krzysztof Kozlowski
2025-09-05 7:54 ` Zihuan Zhang
2025-09-03 13:17 ` [PATCH v4 10/10] PM: EM: " Zihuan Zhang
2025-09-03 13:21 ` Krzysztof Kozlowski
2025-09-03 13:41 ` Rafael J. Wysocki
2025-09-03 13:43 ` Krzysztof Kozlowski
2025-09-04 7:56 ` Zihuan Zhang
2025-09-03 19:43 ` ✓ i915.CI.BAT: success for cpufreq: use __free() for all cpufreq_cpu_get() references Patchwork
2025-09-04 23:50 ` ✗ i915.CI.Full: failure " Patchwork
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=20250905104521.00003944@huawei.com \
--to=jonathan.cameron@huawei.com \
--cc=airlied@gmail.com \
--cc=alim.akhtar@samsung.com \
--cc=beata.michalska@arm.com \
--cc=ben.horgan@arm.com \
--cc=bp@alien8.de \
--cc=catalin.marinas@arm.com \
--cc=cw00.choi@samsung.com \
--cc=daniel.lezcano@kernel.org \
--cc=dave.hansen@linux.intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=edubezval@gmail.com \
--cc=festevam@gmail.com \
--cc=imx@lists.linux.dev \
--cc=intel-gfx@lists.freedesktop.org \
--cc=j-keerthy@ti.com \
--cc=jani.nikula@linux.intel.com \
--cc=kernel@pengutronix.de \
--cc=krzk@kernel.org \
--cc=kyungmin.park@samsung.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=lukasz.luba@arm.com \
--cc=mpe@ellerman.id.au \
--cc=myungjoo.ham@samsung.com \
--cc=pavel@kernel.org \
--cc=ptsm@linux.microsoft.com \
--cc=rafael@kernel.org \
--cc=rodrigo.vivi@intel.com \
--cc=rui.zhang@intel.com \
--cc=s.hauer@pengutronix.de \
--cc=shawnguo@kernel.org \
--cc=simona@ffwll.ch \
--cc=srinivas.pandruvada@linux.intel.com \
--cc=sudeep.holla@arm.com \
--cc=sumitg@nvidia.com \
--cc=thierry.reding@gmail.com \
--cc=tursulin@ursulin.net \
--cc=viresh.kumar@linaro.org \
--cc=will@kernel.org \
--cc=yangyicong@hisilicon.com \
--cc=zhangzihuan@kylinos.cn \
--cc=zhenglifeng1@huawei.com \
/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.