From: Francesco Lavra <francescolavra.fl@gmail.com>
To: Hongbo Zhang <hongbo.zhang@linaro.org>
Cc: linaro-dev@lists.linaro.org, linux-kernel@vger.kernel.org,
linux-pm@vger.kernel.org, STEricsson_nomadik_linux@list.st.com,
kernel@igloocommunity.org, linaro-kernel@lists.linaro.org,
"hongbo.zhang" <hongbo.zhang@linaro.com>,
patches@linaro.org, amit.kachhap@linaro.org
Subject: Re: [PATCH 1/5] Thermal: do bind operation after thermal zone or cooling device register returns.
Date: Wed, 24 Oct 2012 00:13:41 +0200 [thread overview]
Message-ID: <50871695.2040904@gmail.com> (raw)
In-Reply-To: <CAJLyvQyrZ56_KhUTpuv=2fet=12QHSCUjgUKHF9n3cmaATke5w@mail.gmail.com>
Hi,
On 10/23/2012 10:23 AM, Hongbo Zhang wrote:
> Hi Francesco,
> I found out more points about this issue.
>
> [1]
> cdev should be ready when get_max_state callback be called, otherwise
> parameter cdev is useless, imagine there may be cases that
> get_max_state call back is shared by more than one cooling devices of
> same kind, like this:
> common_get_max_state(*cdev, *state)
> {
> if (cdev == cdev1) *state = 3;
> else if (cdev == cdev) *state = 5;
> else
> }
>
> [2]
> In my cpufreq cooling case(in fact cdev is not used to calculate
> max_state), the cooling_cpufreq_list should be ready when
> get_max_state call back is called. In this patch I defer the binding
> when registration finished, but this is not perfect now, see this
> routine in cpufreq_cooling_register:
>
> thermal_cooling_device_register;
> at this time: thermal_bind_work -> get_max_state -> get NULL
> cooling_cpufreq_list
> and then: list_add_tail(&cpufreq_dev->node, &cooling_cpufreq_list)
> This is due to we cannot know exactly when the bind work is executed.
> (and this can be fixed by moving mutex_lock(&cooling_cpufreq_lock)
> aheadof thermal_cooling_device_register and other corresponding
> modifications, but I found another way as below)
>
> [3]
> Root cause of this problem is calling get_max_state in register -> bind routine.
> Better solution is to add another parameter in cooling device register
> function, also add a max_state member in struct cdev, like:
> thermal_cooling_device_register(char *type, void *devdata, const
> struct thermal_cooling_device_ops *ops, unsigned long max_state)
> and then in the bind function:
> if(cdev->max_state)
> max_state = cdev->max_state;
> else
> cdev->get_max_state(cdev, &max_state)
>
> It is common sense that the cooling driver should know its cooling
> max_state(ability) before registration, and it can be offered when
> register.
> I think this way doesn't change both thermal and cooling layer much,
> it is more clear.
> I will update this patch soon.
I still believe the thermal layer doesn't need any change to work around
this problem, and I still believe that when a cooling device is being
registered, all of its ops should be fully functional.
The problem with the cpufreq cooling device driver is that its callbacks
use the internal list of devices to retrieve the struct
cpufreq_cooling_device instance corresponding to a given struct
thermal_cooling_device. This is not necessary, because the struct
thermal_cooling_device has a private data pointer (devdata) which in
this case is exactly a reference to the struct cpufreq_cooling_device
instance the callbacks are looking for. In fact, I think the
cooling_cpufreq_list is not necessary at all, and should be removed from
the cpufreq cooling driver.
So the 3 callbacks, instead of iterating through the device list, should
have something like:
struct cpufreq_cooling_device *cpufreq_device = cdev->devdata;
That would do the trick.
--
Francesco
next prev parent reply other threads:[~2012-10-23 22:11 UTC|newest]
Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-16 11:44 [PATCH 0/5] Fix thermal bugs and Upstream ST-Ericsson thermal driver hongbo.zhang
2012-10-16 11:44 ` [PATCH 1/5] Thermal: do bind operation after thermal zone or cooling device register returns hongbo.zhang
2012-10-21 10:05 ` Francesco Lavra
2012-10-23 8:23 ` Hongbo Zhang
2012-10-23 22:13 ` Francesco Lavra [this message]
2012-10-24 2:37 ` Hongbo Zhang
2012-10-16 11:44 ` [PATCH 2/5] Thermal: add indent for code alignment hongbo.zhang
2012-10-17 14:21 ` Viresh Kumar
2012-10-16 11:44 ` [PATCH 3/5] Thermal: fix empty list checking method hongbo.zhang
2012-10-17 14:24 ` Viresh Kumar
2012-10-16 11:44 ` [PATCH 4/5] Thermal: make sure cpufreq cooling register after cpufreq driver hongbo.zhang
2012-10-17 14:36 ` Viresh Kumar
2012-10-16 11:44 ` [PATCH 5/5] Thermal: Add ST-Ericsson db8500 thermal dirver hongbo.zhang
2012-10-17 15:23 ` Viresh Kumar
2012-10-17 16:58 ` Joe Perches
2012-10-17 17:02 ` Viresh Kumar
2012-10-18 7:35 ` Hongbo Zhang
2012-10-18 8:07 ` Viresh Kumar
2012-10-18 10:45 ` Hongbo Zhang
2012-10-18 18:08 ` viresh kumar
2012-10-21 15:01 ` Francesco Lavra
2012-10-22 12:02 ` Hongbo Zhang
2012-10-22 18:51 ` Francesco Lavra
2012-10-24 4:40 ` Hongbo Zhang
2012-10-24 11:58 ` [PATCH V2 0/6] Fix thermal bugs and Upstream ST-Ericsson thermal driver hongbo.zhang
2012-10-24 11:58 ` [PATCH V2 1/6] Thermal: add indent for code alignment hongbo.zhang
2012-10-24 11:58 ` [PATCH V2 2/6] Thermal: make sure cpufreq cooling register after cpufreq driver hongbo.zhang
2012-10-29 11:42 ` Amit Kachhap
2012-10-30 8:59 ` Hongbo Zhang
2012-10-24 11:58 ` [PATCH V2 3/6] Thermal: fix bug of counting cpu frequencies hongbo.zhang
2012-10-24 13:34 ` Viresh Kumar
2012-10-29 11:54 ` Amit Kachhap
2012-10-24 11:58 ` [PATCH V2 4/6] Thermal: Remove the cooling_cpufreq_list hongbo.zhang
2012-10-25 19:14 ` Francesco Lavra
2012-10-26 2:59 ` Hongbo Zhang
2012-10-26 7:09 ` hongbo.zhang
2012-10-27 6:39 ` Francesco Lavra
2012-10-30 8:03 ` Amit Kachhap
2012-10-30 8:53 ` Hongbo Zhang
2012-10-24 11:58 ` [PATCH V2 5/6] Thermal: Add ST-Ericsson DB8500 thermal dirver hongbo.zhang
2012-10-24 14:38 ` Viresh Kumar
2012-10-25 8:26 ` Hongbo Zhang
2012-10-25 8:41 ` Viresh Kumar
2012-10-25 9:33 ` Hongbo Zhang
2012-10-25 9:42 ` Viresh Kumar
2012-10-25 10:43 ` Hongbo Zhang
2012-10-25 9:56 ` Hongbo Zhang
2012-10-25 10:04 ` Viresh Kumar
2012-10-25 10:11 ` Viresh Kumar
2012-10-25 10:45 ` Hongbo Zhang
2012-10-25 11:13 ` [PATCH V2 5/6] Thermal: Add ST-Ericsson DB8500 thermal driver hongbo.zhang
2012-10-27 10:53 ` Francesco Lavra
2012-10-24 11:58 ` [PATCH V2 6/6] Thermal: Add ST-Ericsson DB8500 thermal properties and platform data hongbo.zhang
2012-10-24 14:32 ` Joe Perches
2012-10-25 3:45 ` Hongbo Zhang
2012-10-24 14:47 ` Viresh Kumar
2012-10-25 3:49 ` Hongbo Zhang
2012-10-25 11:15 ` hongbo.zhang
2012-10-25 11:39 ` hongbo.zhang
2012-10-30 16:48 ` [PATCH V3 0/5] Fix thermal bugs and Upstream ST-Ericsson thermal driver hongbo.zhang
2012-10-30 16:48 ` [PATCH V3 1/5] Thermal: add indent for code alignment hongbo.zhang
2012-11-07 6:54 ` Zhang Rui
2012-10-30 16:48 ` [PATCH V3 2/5] Thermal: fix bug of counting cpu frequencies hongbo.zhang
2012-11-07 6:54 ` Zhang Rui
2012-10-30 16:48 ` [PATCH V3 3/5] Thermal: Remove the cooling_cpufreq_list hongbo.zhang
2012-11-07 6:54 ` Zhang Rui
2012-11-09 11:54 ` Hongbo Zhang
2012-10-30 16:49 ` [PATCH V3 4/5] Thermal: Add ST-Ericsson DB8500 thermal driver hongbo.zhang
2012-10-31 2:33 ` Viresh Kumar
2012-11-01 14:48 ` Francesco Lavra
[not found] ` <744357E9AAD1214791ACBA4B0B90926324F81A@SHSMSX101.ccr.corp.intel.com>
2012-11-06 10:17 ` Hongbo Zhang
2012-11-06 10:30 ` Hongbo Zhang
2012-10-30 16:49 ` [PATCH V3 5/5] Thermal: Add ST-Ericsson DB8500 thermal properties and platform data hongbo.zhang
2012-10-31 2:18 ` viresh kumar
2012-11-06 7:25 ` Hongbo Zhang
2012-10-31 2:08 ` [PATCH V3 0/5] Fix thermal bugs and Upstream ST-Ericsson thermal driver viresh kumar
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=50871695.2040904@gmail.com \
--to=francescolavra.fl@gmail.com \
--cc=STEricsson_nomadik_linux@list.st.com \
--cc=amit.kachhap@linaro.org \
--cc=hongbo.zhang@linaro.com \
--cc=hongbo.zhang@linaro.org \
--cc=kernel@igloocommunity.org \
--cc=linaro-dev@lists.linaro.org \
--cc=linaro-kernel@lists.linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=patches@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;
as well as URLs for NNTP newsgroup(s).