All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lukasz Luba <lukasz.luba@arm.com>
To: Javi Merino <javi.merino@arm.com>, linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, Zhang Rui <rui.zhang@intel.com>,
	Eduardo Valentin <edubezval@gmail.com>
Subject: Re: [PATCH] devfreq_cooling: pass a pointer to devfreq in the power model callbacks
Date: Tue, 21 Jun 2016 09:38:27 +0100	[thread overview]
Message-ID: <5768FD03.4060801@arm.com> (raw)
In-Reply-To: <20160620173617.GC2941@e104805>

Hi,

On 20/06/16 18:36, Javi Merino wrote:
> Eduardo, Rui,
>
> On Fri, Jun 03, 2016 at 10:25:31AM +0100, Javi Merino wrote:
>> When the devfreq cooling device was designed, it was an oversight not to
>> pass a pointer to the struct devfreq as the first parameters of the
>> callbacks.  The design patterns of the kernel suggest it for a good
>> reason.
>>
>> By passing a pointer to struct devfreq, the driver can register one
>> function that works with multiple devices.  With the current
>> implementation, a driver that can work with multiple devices has to
>> create multiple copies of the same function with different parameters so
>> that each devfreq_cooling_device can use the appropriate one.  By
>> passing a pointer to struct devfreq, the driver can identify which
>> device it's referring to.
>>
>> Cc: Zhang Rui <rui.zhang@intel.com>
>> Cc: Eduardo Valentin <edubezval@gmail.com>
>> Reviewed-by: Punit Agrawal <punit.agrawal@arm.com>
>> Signed-off-by: Javi Merino <javi.merino@arm.com>
>> ---
>>   drivers/thermal/devfreq_cooling.c | 5 +++--
>>   include/linux/devfreq_cooling.h   | 6 ++++--
>>   2 files changed, 7 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/thermal/devfreq_cooling.c b/drivers/thermal/devfreq_cooling.c
>> index 01f0015f80dc..c549d83a0c7d 100644
>> --- a/drivers/thermal/devfreq_cooling.c
>> +++ b/drivers/thermal/devfreq_cooling.c
>> @@ -238,7 +238,7 @@ get_static_power(struct devfreq_cooling_device *dfc, unsigned long freq)
>>   		return 0;
>>   	}
>>
>> -	return dfc->power_ops->get_static_power(voltage);
>> +	return dfc->power_ops->get_static_power(df, voltage);
>>   }
>>
>>   /**
>> @@ -262,7 +262,8 @@ get_dynamic_power(struct devfreq_cooling_device *dfc, unsigned long freq,
>>   	struct devfreq_cooling_power *dfc_power = dfc->power_ops;
>>
>>   	if (dfc_power->get_dynamic_power)
>> -		return dfc_power->get_dynamic_power(freq, voltage);
>> +		return dfc_power->get_dynamic_power(dfc->devfreq, freq,
>> +						    voltage);
>>
>>   	freq_mhz = freq / 1000000;
>>   	power = (u64)dfc_power->dyn_power_coeff * freq_mhz * voltage * voltage;
>> diff --git a/include/linux/devfreq_cooling.h b/include/linux/devfreq_cooling.h
>> index 7adf6cc4b305..959714e93e5b 100644
>> --- a/include/linux/devfreq_cooling.h
>> +++ b/include/linux/devfreq_cooling.h
>> @@ -37,8 +37,10 @@
>>    *			@dyn_power_coeff * frequency * voltage^2
>>    */
>>   struct devfreq_cooling_power {
>> -	unsigned long (*get_static_power)(unsigned long voltage);
>> -	unsigned long (*get_dynamic_power)(unsigned long freq,
>> +	unsigned long (*get_static_power)(struct devfreq *devfreq,
>> +					  unsigned long voltage);
>> +	unsigned long (*get_dynamic_power)(struct devfreq *devfreq,
>> +					   unsigned long freq,
>>   					   unsigned long voltage);
>>   	unsigned long dyn_power_coeff;
>>   };
>
> If there are no objections, can you pick this for the next merge
> window?
>
> Thanks,
> Javi
>
This is very useful code, please pick it.

Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>

Regards,
Lukasz

  reply	other threads:[~2016-06-21  8:38 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-03  9:25 [PATCH] devfreq_cooling: pass a pointer to devfreq in the power model callbacks Javi Merino
2016-06-20 17:36 ` Javi Merino
2016-06-21  8:38   ` Lukasz Luba [this message]
  -- strict thread matches above, loose matches on Subject: below --
2015-12-04 14:44 Javi Merino
2015-12-21 11:37 ` Punit Agrawal

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=5768FD03.4060801@arm.com \
    --to=lukasz.luba@arm.com \
    --cc=edubezval@gmail.com \
    --cc=javi.merino@arm.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.