All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Zhang, Rui" <rui.zhang@intel.com>
To: "rafael@kernel.org" <rafael@kernel.org>
Cc: "viresh.kumar@linaro.org" <viresh.kumar@linaro.org>,
	"daniel.lezcano@linaro.org" <daniel.lezcano@linaro.org>,
	"Wang, Quanxian" <quanxian.wang@intel.com>,
	"rjw@rjwysocki.net" <rjw@rjwysocki.net>,
	"srinivas.pandruvada@linux.intel.com" 
	<srinivas.pandruvada@linux.intel.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>
Subject: Re: [PATCH v1 1/4] ACPI: processor: Reorder acpi_processor_driver_init()
Date: Mon, 13 Mar 2023 14:54:28 +0000	[thread overview]
Message-ID: <ff9d343113b184f08877952608d3424d87687a42.camel@intel.com> (raw)
In-Reply-To: <CAJZ5v0hm3S_3eOsVm5vTUX23ynPXhY469ctZUpLdHZFt+b2KHA@mail.gmail.com>

On Mon, 2023-03-13 at 14:48 +0100, Rafael J. Wysocki wrote:
> On Sun, Mar 12, 2023 at 5:09 PM Zhang, Rui <rui.zhang@intel.com>
> wrote:
> > On Fri, 2023-03-03 at 20:19 +0100, Rafael J. Wysocki wrote:
> > > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> > > 
> > > The cpufreq policy notifier in the ACPI processor driver may as
> > > well be registered before the driver itself, which causes
> > > acpi_processor_cpufreq_init to be true (unless the notifier
> > > registration fails, which is unlikely at that point) when the
> > > ACPI CPU thermal cooling devices are registered, so the
> > > processor_get_max_state() result does not change while
> > > acpi_processor_driver_init() is running.
> > > 
> > > Change the ordering in acpi_processor_driver_init() accordingly
> > > to prevent the max_state value from remaining 0 permanently for
> > > all
> > > ACPI CPU cooling devices.
> > > 
> > > Fixes: a365105c685c("thermal: sysfs: Reuse cdev->max_state")
> > > Reported-by: Wang, Quanxian <quanxian.wang@intel.com>
> > > Link:
> > > https://lore.kernel.org/linux-pm/53ec1f06f61c984100868926f282647e57ecfb2d.camel@intel.com/
> > > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> > 
> > The full patch series fixes the problem but this one does not.
> 
> That is a correct observation, but the $subject patch fixes part of
> the problem (which is not addressed by the rest of the series AFAICS)
> and so it deserves a Fixes tag of its own IMO.

Am I understanding this correctly that this patch helps in below case?

cpufreq driver like intel_pstate is registered before we register the
notifier callback in processor_driver. In this case, we are not able to
catch the CPUFREQ_CREATE_POLICY notification and cpufreq should be
counted as part of cooling states when registering the ACPI CPU cooling
device. (acpi_processor_cpufreq_init must be set at this time)

Or else, in normal case, the ACPI CPU cdev->max_state always return 0
(when t-state not available) until we receive the CPUFREQ_CREATE_POLICY
notification and call thermal_cooling_device_update(), both with and
without this patch.

Patch 2,3,4 works on my test platform, without applying patch 1/4.

thanks,
rui

> 
> I guess I should clarify that in the changelog.
> 
> > This is because,
> > 
> > static int cpu_has_cpufreq(unsigned int cpu)
> > {
> >         struct
> > cpufreq_policy *policy;
> > 
> >         if (!acpi_processor_cpufreq_init)
> >                 return 0;
> > 
> >         policy = cpufreq_cpu_get(cpu);
> >         if (policy) {
> >                 cpufreq_cpu_put(policy);
> >                 return 1;
> >         }
> >         return 0;
> > }
> > 
> > Although acpi_processor_cpufreq_init is set to true with patch 1/4,
> > but
> > we don't have cpufreq driver registered, thus cpufreq_cpu_get()
> > return
> > NULL.
> > so acpi_processor_cpufreq_init is not the only dependency here. :(
> 
> Right.  That's why the other patches in the series are needed too.
> 
> > > ---
> > >  drivers/acpi/processor_driver.c |   12 ++++++------
> > >  1 file changed, 6 insertions(+), 6 deletions(-)
> > > 
> > > Index: linux-pm/drivers/acpi/processor_driver.c
> > > =================================================================
> > > ==
> > > --- linux-pm.orig/drivers/acpi/processor_driver.c
> > > +++ linux-pm/drivers/acpi/processor_driver.c
> > > @@ -263,6 +263,12 @@ static int __init acpi_processor_driver_
> > >       if (acpi_disabled)
> > >               return 0;
> > > 
> > > +     if
> > > (!cpufreq_register_notifier(&acpi_processor_notifier_block,
> > > +                                    CPUFREQ_POLICY_NOTIFIER)) {
> > > +             acpi_processor_cpufreq_init = true;
> > > +             acpi_processor_ignore_ppc_init();
> > > +     }
> > > +
> > >       result = driver_register(&acpi_processor_driver);
> > >       if (result < 0)
> > >               return result;
> > > @@ -276,12 +282,6 @@ static int __init acpi_processor_driver_
> > >       cpuhp_setup_state_nocalls(CPUHP_ACPI_CPUDRV_DEAD,
> > > "acpi/cpu-
> > > drv:dead",
> > >                                 NULL, acpi_soft_cpu_dead);
> > > 
> > > -     if
> > > (!cpufreq_register_notifier(&acpi_processor_notifier_block,
> > > -                                    CPUFREQ_POLICY_NOTIFIER)) {
> > > -             acpi_processor_cpufreq_init = true;
> > > -             acpi_processor_ignore_ppc_init();
> > > -     }
> > > -
> > >       acpi_processor_throttling_init();
> > >       return 0;
> > >  err:
> > > 
> > > 
> > > 

  reply	other threads:[~2023-03-13 14:55 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-03 19:18 [PATCH v1 0/4] thermal: core/ACPI: Fix processor cooling device regression Rafael J. Wysocki
2023-03-03 19:19 ` [PATCH v1 1/4] ACPI: processor: Reorder acpi_processor_driver_init() Rafael J. Wysocki
2023-03-07 16:51   ` Zhang, Rui
2023-03-10 18:31     ` Rafael J. Wysocki
2023-03-12 16:08   ` Zhang, Rui
2023-03-13 13:48     ` Rafael J. Wysocki
2023-03-13 14:54       ` Zhang, Rui [this message]
2023-03-13 14:58         ` Rafael J. Wysocki
2023-03-03 19:21 ` [PATCH v1 2/4] thermal: core: Introduce thermal_cooling_device_present() Rafael J. Wysocki
2023-03-03 19:23 ` [PATCH v1 3/4] thermal: core: Introduce thermal_cooling_device_update() Rafael J. Wysocki
2023-03-07 16:40   ` Zhang, Rui
2023-03-10 18:25     ` Rafael J. Wysocki
2023-03-27 20:57   ` Imre Deak
2023-03-28 15:35     ` Rafael J. Wysocki
2023-03-03 19:23 ` [PATCH v1 4/4] ACPI: processor: thermal: Update CPU cooling devices on cpufreq policy changes Rafael J. Wysocki
2023-03-07 16:43   ` Zhang, Rui
2023-03-10 18:29     ` Rafael J. Wysocki
2023-03-12 14:44       ` Zhang, Rui
2023-03-13 13:50         ` Rafael J. Wysocki

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=ff9d343113b184f08877952608d3424d87687a42.camel@intel.com \
    --to=rui.zhang@intel.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=quanxian.wang@intel.com \
    --cc=rafael@kernel.org \
    --cc=rjw@rjwysocki.net \
    --cc=srinivas.pandruvada@linux.intel.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 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.