All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eduardo Valentin <edubezval@gmail.com>
To: Lukasz Majewski <l.majewski@samsung.com>
Cc: Zhang Rui <rui.zhang@intel.com>,
	Linux PM list <linux-pm@vger.kernel.org>,
	Lukasz Majewski <l.majewski@majess.pl>,
	Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/3] thermal: core: fix: Initialize the max_state variable to 0
Date: Thu, 2 Oct 2014 18:26:51 -0400	[thread overview]
Message-ID: <20141002222649.GB11510@developer> (raw)
In-Reply-To: <1411547232-21493-3-git-send-email-l.majewski@samsung.com>

Hello Lukasz,

On Wed, Sep 24, 2014 at 10:27:11AM +0200, Lukasz Majewski wrote:
> Pointer to the uninitialized max_state variable is passed to get the
> maximal cooling state.
> For CPU cooling device (cpu_cooling.c) the cpufreq_get_max_state() is
> called, which even when error occurs will return the max_state variable
> unchanged.
> Since error for ->get_max_state() is not checked, the automatically


Good that you added a fix in your series for this.


> allocated value of max_state is used for (upper > max_state) comparison.
> For any possible max_state value it is very unlikely that it will be less
> than upper.
> As a consequence, the cooling device is bind even without the backed
> cpufreq table initialized.
> 
> This initialization will prevent from accidental binding trip points to
> cpu freq cooling frequencies when cpufreq driver itself is not yet fully
> initialized.

Although I agree with the fix, as long as we also include a check for
the .get_max_state return value,  I believe the problem you are
describing is about initialization sequence.

In general, I believe we need a better
sequencing between thermal and cpufreq subsystems. One way out is to
include a check for cpufreq driver in the thermal driver, and return
-EPROBE_DEFER  when cpufreq is not ready.

> 
> Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
> ---
>  drivers/thermal/thermal_core.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
> index 454884a..747618a 100644
> --- a/drivers/thermal/thermal_core.c
> +++ b/drivers/thermal/thermal_core.c
> @@ -927,7 +927,7 @@ int thermal_zone_bind_cooling_device(struct thermal_zone_device *tz,
>  	struct thermal_instance *pos;
>  	struct thermal_zone_device *pos1;
>  	struct thermal_cooling_device *pos2;
> -	unsigned long max_state;
> +	unsigned long max_state = 0;
>  	int result;
>  
>  	if (trip >= tz->trips || (trip < 0 && trip != THERMAL_TRIPS_NONE))
> -- 
> 2.0.0.rc2
> 


  reply	other threads:[~2014-10-02 22:27 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-24  8:27 [PATCH 0/3] thermal: fix: Various fixes for thermal subsystem Lukasz Majewski
2014-09-24  8:27 ` [PATCH 1/3] thermal: step_wise: fix: Prevent from binary overflow when trend is dropping Lukasz Majewski
2014-10-02 21:13   ` Eduardo Valentin
2014-10-03  7:26     ` Lukasz Majewski
2014-10-09  3:14   ` Zhang Rui
2014-09-24  8:27 ` [PATCH 2/3] thermal: core: fix: Initialize the max_state variable to 0 Lukasz Majewski
2014-10-02 22:26   ` Eduardo Valentin [this message]
2014-10-03  8:26     ` Lukasz Majewski
2014-10-06 18:01       ` Eduardo Valentin
2014-09-24  8:27 ` [PATCH 3/3] thermal: core: fix: Check return code of the ->get_max_state() callback Lukasz Majewski
2014-10-02 22:24   ` Eduardo Valentin
2014-10-03 10:40     ` Lukasz Majewski
2014-10-09  3:15       ` Zhang Rui
2014-10-09 16:47         ` Lukasz Majewski
2014-10-02 14:40 ` [PATCH 0/3] thermal: fix: Various fixes for thermal subsystem Lukasz Majewski
     [not found] ` <1411547232-21493-1-git-send-email-l.majewski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-11-13 17:02   ` [PATCH 0/8] thermal:cpu cooling:fix: Provide thermal core fixes with deferred probe for several drivers Lukasz Majewski
2014-11-13 17:02     ` Lukasz Majewski
2014-11-13 17:02     ` [PATCH 1/8] thermal:cpu cooling:armada: Provide deferred probing for armada driver Lukasz Majewski
2014-11-13 17:02     ` [PATCH 2/8] thermal:cpu cooling:kirkwood: Provide deferred probing for kirkwood driver Lukasz Majewski
2014-11-13 17:02     ` [PATCH 3/8] thermal:cpu cooling:rcar: Provide deferred probing for rcar driver Lukasz Majewski
2014-11-13 17:02     ` [PATCH 4/8] thermal:cpu cooling:spear: Provide deferred probing for spear driver Lukasz Majewski
2014-11-13 17:02     ` [PATCH 5/8] thermal:cpu cooling:tegra: Provide deferred probing for tegra driver Lukasz Majewski
2014-11-14 10:47       ` Mikko Perttunen
2014-11-14 11:24         ` Lukasz Majewski
2014-11-17 11:57           ` Thierry Reding
2014-11-17 12:51             ` Lukasz Majewski
2014-11-17 13:18               ` Thierry Reding
     [not found]         ` <5465DDC5.6090301-/1wQRMveznE@public.gmane.org>
2014-11-17 11:43           ` Thierry Reding
2014-11-17 11:43             ` Thierry Reding
2014-11-17 11:50             ` Lukasz Majewski
2014-11-17 12:01               ` Thierry Reding
2014-11-17 12:01                 ` Thierry Reding
2014-11-17 13:02                 ` Lukasz Majewski
2014-11-17 13:02                   ` Lukasz Majewski
2014-11-17 12:51             ` Mikko Perttunen
2014-11-17 12:51               ` Mikko Perttunen
2014-11-17 13:08               ` Thierry Reding
2014-11-17 13:24                 ` Mikko Perttunen
     [not found]       ` <1415898165-27406-6-git-send-email-l.majewski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-11-17 11:40         ` Thierry Reding
2014-11-17 11:40           ` Thierry Reding
2014-11-13 17:02     ` [PATCH 6/8] thermal:cpu cooling:ti: Provide deferred probing for ti drivers Lukasz Majewski
2014-11-20 19:00       ` Eduardo Valentin
2014-11-13 17:02     ` [PATCH 7/8] thermal:core:fix: Initialize the max_state variable to 0 Lukasz Majewski
2014-11-18 10:16     ` [PATCH v2] thermal:core:fix: Check return code of the ->get_max_state() callback Lukasz Majewski
     [not found]       ` <1416305790-27746-1-git-send-email-l.majewski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-11-21 18:08         ` Eduardo Valentin
2014-11-21 18:08           ` Eduardo Valentin
2014-11-24 10:38           ` Lukasz Majewski
2014-11-24 11:00             ` Viresh Kumar
2014-11-24 11:00               ` Viresh Kumar
2014-11-24 14:24               ` Lukasz Majewski
2014-11-25 10:46                 ` Viresh Kumar
2014-11-24 18:02             ` Eduardo Valentin
2014-11-24 18:02               ` Eduardo Valentin
2014-11-24 20:28               ` Lukasz Majewski
     [not found]     ` <1415898165-27406-1-git-send-email-l.majewski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-11-13 17:02       ` [PATCH 8/8] " Lukasz Majewski
2014-11-13 17:02         ` Lukasz Majewski
2014-11-20 18:54       ` [PATCH 0/8] thermal:cpu cooling:fix: Provide thermal core fixes with deferred probe for several drivers Eduardo Valentin
2014-11-20 18:54         ` Eduardo Valentin
2014-11-21  8:33         ` Lukasz Majewski
2014-11-21  2:47           ` Eduardo Valentin
2014-11-21 16:28             ` Lukasz Majewski
2014-11-21 16:28               ` Lukasz Majewski

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=20141002222649.GB11510@developer \
    --to=edubezval@gmail.com \
    --cc=b.zolnierkie@samsung.com \
    --cc=l.majewski@majess.pl \
    --cc=l.majewski@samsung.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=rui.zhang@intel.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.