All of lore.kernel.org
 help / color / mirror / Atom feed
* [Discussion] Performance levels of power domains
@ 2016-10-26 10:52 Viresh Kumar
  2016-10-26 11:09 ` Sudeep Holla
  2016-10-26 19:00 ` Kevin Hilman
  0 siblings, 2 replies; 21+ messages in thread
From: Viresh Kumar @ 2016-10-26 10:52 UTC (permalink / raw)
  To: linux-pm
  Cc: Rafael J. Wysocki, Vincent Guittot, Ulf Hansson,
	Michael Turquette, Kevin Hilman, Stephen Boyd, Nayak, Rajendra,
	Georgi Djakov, Lists linaro-kernel, Mark Brown

Hi Guys,

I wanted to involve you guys to get a discussion going
for a problem we want to solve, and so this mail.


Platform details:

Some of the Qualcom SoCs have the option to configure
the performance level of their Power Domains. The performance
levels are identified by integer values (lets say 0-9, 0 being the lowest).

Another M3 core handles the *real* voltage scaling based on the input
received (from software) in terms of these performance levels. The M3
core translates the levels into a range of voltages (corners) and selects
the right one by itself.

Software needs to provide the performance level for the entire domain
to the M3 core and so software also needs to handle performance requests
from all the devices that lie in the domain X and find a Performance Level P,
which can satisfy all the devices (normally the highest requrested level).


Problem statement:

As we aren't dealing with Voltages here, we can't really get the benefits
of the Regulators framework. The regulators are managed internally
by the M3 core. All we need is a way for software to comeout with inputs
for the M3 core.

The OPP framework can be used to include performance levels for
each OPP (frequency) entry.

But what framework can be used to select performance level of power
domains ?

By name, power-domain or genpd looks to be the right choice, but until
now it is only managing power-on and power-off of devices and domains.

Should we extend that (along with runtime PM), or do something else?

Qualcomm guys, please correct my understanding of the hardware in
case, something wasn't explained correctly.

--
viresh

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Discussion] Performance levels of power domains
  2016-10-26 10:52 [Discussion] Performance levels of power domains Viresh Kumar
@ 2016-10-26 11:09 ` Sudeep Holla
  2016-10-26 11:16   ` Viresh Kumar
  2016-10-26 19:00 ` Kevin Hilman
  1 sibling, 1 reply; 21+ messages in thread
From: Sudeep Holla @ 2016-10-26 11:09 UTC (permalink / raw)
  To: Viresh Kumar, linux-pm
  Cc: Sudeep Holla, Lists linaro-kernel, Stephen Boyd,
	Michael Turquette, Rafael J. Wysocki, Mark Brown, Nayak,
	Rajendra, Georgi Djakov



On 26/10/16 11:52, Viresh Kumar wrote:
> Hi Guys,
>
> I wanted to involve you guys to get a discussion going
> for a problem we want to solve, and so this mail.
>
>
> Platform details:
>
> Some of the Qualcom SoCs have the option to configure
> the performance level of their Power Domains. The performance
> levels are identified by integer values (lets say 0-9, 0 being the lowest).
>
> Another M3 core handles the *real* voltage scaling based on the input
> received (from software) in terms of these performance levels. The M3
> core translates the levels into a range of voltages (corners) and selects
> the right one by itself.
>

Just out of curiosity, what's the protocol used to communicate with this
M3. This is what we already have on Vexpress TC2 and Juno. Currently M3
provides the information of voltage and frequency for each OPP, but that
may change as it's not always constant.

> Software needs to provide the performance level for the entire domain
> to the M3 core and so software also needs to handle performance requests
> from all the devices that lie in the domain X and find a Performance Level P,
> which can satisfy all the devices (normally the highest requrested level).
>

That's interesting and this is where it's different and gets complex
than what we have today. Do you have more details on this ?

I am mainly interested as there are efforts to standardize these
communication with M3 and there's WIP protocol development[1]. It would
be good to see if this user-case is also considered. And yes I am
interested in the problem you have explained below but just can't my
head around it as I can't fully visualize such systems.

-- 
Regards,
Sudeep

[1] 
http://s3.amazonaws.com/connect.linaro.org/las16/Presentations/Tuesday/LAS16-200%20--%20%20SCMI%20-%20System%20Management%20and%20Control%20Interface.pdf

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Discussion] Performance levels of power domains
  2016-10-26 11:09 ` Sudeep Holla
@ 2016-10-26 11:16   ` Viresh Kumar
  2016-10-26 11:21     ` Sudeep Holla
  0 siblings, 1 reply; 21+ messages in thread
From: Viresh Kumar @ 2016-10-26 11:16 UTC (permalink / raw)
  To: Sudeep Holla
  Cc: linux-pm, Lists linaro-kernel, Stephen Boyd, Michael Turquette,
	Rafael J. Wysocki, Mark Brown, Nayak, Rajendra, Georgi Djakov

On 26-10-16, 12:09, Sudeep Holla wrote:
> Just out of curiosity, what's the protocol used to communicate with this
> M3.

I will let Qcom guys answer this :)

> This is what we already have on Vexpress TC2 and Juno. Currently M3
> provides the information of voltage and frequency for each OPP, but that
> may change as it's not always constant.

Yeah, I do remember that. But it was always in terms of voltages and
so this thing is different here.

> That's interesting and this is where it's different and gets complex
> than what we have today. Do you have more details on this ?

I have written everything that I knew about it :)

> I am mainly interested as there are efforts to standardize these
> communication with M3 and there's WIP protocol development[1]. It would
> be good to see if this user-case is also considered.

What do you mean by that ?

> And yes I am
> interested in the problem you have explained below but just can't my
> head around it as I can't fully visualize such systems.

:)

-- 
viresh

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Discussion] Performance levels of power domains
  2016-10-26 11:16   ` Viresh Kumar
@ 2016-10-26 11:21     ` Sudeep Holla
  2016-10-28  0:22       ` Stephen Boyd
  0 siblings, 1 reply; 21+ messages in thread
From: Sudeep Holla @ 2016-10-26 11:21 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: Sudeep Holla, linux-pm, Lists linaro-kernel, Stephen Boyd,
	Michael Turquette, Rafael J. Wysocki, Mark Brown, Nayak,
	Rajendra, Georgi Djakov



On 26/10/16 12:16, Viresh Kumar wrote:
> On 26-10-16, 12:09, Sudeep Holla wrote:

[...]

>> I am mainly interested as there are efforts to standardize these
>> communication with M3 and there's WIP protocol development[1]. It would
>> be good to see if this user-case is also considered.
>
> What do you mean by that ?

Basically I wanted to know more details so that such system are also
considered(I agree it may not have any impact on the protocol at all,
but still good to consider them) when designing this new SCMI protocol.

-- 
Regards,
Sudeep

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Discussion] Performance levels of power domains
  2016-10-26 10:52 [Discussion] Performance levels of power domains Viresh Kumar
  2016-10-26 11:09 ` Sudeep Holla
@ 2016-10-26 19:00 ` Kevin Hilman
  2016-10-27  3:46   ` Viresh Kumar
                     ` (2 more replies)
  1 sibling, 3 replies; 21+ messages in thread
From: Kevin Hilman @ 2016-10-26 19:00 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: linux-pm, Rafael J. Wysocki, Vincent Guittot, Ulf Hansson,
	Michael Turquette, Stephen Boyd, Nayak, Rajendra, Georgi Djakov,
	Lists linaro-kernel, Mark Brown

Viresh Kumar <viresh.kumar@linaro.org> writes:

> Hi Guys,
>
> I wanted to involve you guys to get a discussion going
> for a problem we want to solve, and so this mail.
>
>
> Platform details:
>
> Some of the Qualcom SoCs have the option to configure
> the performance level of their Power Domains. The performance
> levels are identified by integer values (lets say 0-9, 0 being the lowest).
>
> Another M3 core handles the *real* voltage scaling based on the input
> received (from software) in terms of these performance levels. The M3
> core translates the levels into a range of voltages (corners) and selects
> the right one by itself.
>
> Software needs to provide the performance level for the entire domain
> to the M3 core and so software also needs to handle performance requests
> from all the devices that lie in the domain X and find a Performance Level P,
> which can satisfy all the devices (normally the highest requrested level).
>
>
> Problem statement:
>
> As we aren't dealing with Voltages here, we can't really get the benefits
> of the Regulators framework. The regulators are managed internally
> by the M3 core. All we need is a way for software to comeout with inputs
> for the M3 core.
>
> The OPP framework can be used to include performance levels for
> each OPP (frequency) entry.
>
> But what framework can be used to select performance level of power
> domains ?
>
> By name, power-domain or genpd looks to be the right choice, but until
> now it is only managing power-on and power-off of devices and domains.

genpd has also recently been extended to support multiple states, though
those are still idle states, not active (performance) states.

> Should we extend that (along with runtime PM), or do something else?

Yes.  As I've suggested to qcom/linaro folks (off-list discussions), I
think extending genpd to handle performance states is a logical
extension.  Otherwise, you will be (re)inventing something that looks an
awful lot like genpd anyways.

The other related framework is per-device PM QoS which could be used to
set constraints on specific devices, and the genpd governors would then
be responsible for looking at the constraints and changing states as
needed.

Kevin

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Discussion] Performance levels of power domains
  2016-10-26 19:00 ` Kevin Hilman
@ 2016-10-27  3:46   ` Viresh Kumar
  2016-10-27  7:17     ` Vincent Guittot
  2016-10-27 10:14     ` Rafael J. Wysocki
  2016-10-27  7:13   ` Vincent Guittot
  2016-10-27 10:11   ` Rafael J. Wysocki
  2 siblings, 2 replies; 21+ messages in thread
From: Viresh Kumar @ 2016-10-27  3:46 UTC (permalink / raw)
  To: Kevin Hilman
  Cc: linux-pm, Rafael J. Wysocki, Vincent Guittot, Ulf Hansson,
	Michael Turquette, Stephen Boyd, Nayak, Rajendra, Georgi Djakov,
	Lists linaro-kernel, Mark Brown

On 26-10-16, 12:00, Kevin Hilman wrote:
> Yes.  As I've suggested to qcom/linaro folks (off-list discussions), I

No one told me this story :)

> think extending genpd to handle performance states is a logical
> extension.  Otherwise, you will be (re)inventing something that looks an
> awful lot like genpd anyways.

I completely agree. Runtime PM and genpd look to be the perfect
placeholder for such stuff. I actually tried to convince Ulf yesterday
on this and he wasn't sure if it will ever get accepted upstream and
that's when I started this thread :)

> The other related framework is per-device PM QoS which could be used to
> set constraints on specific devices, and the genpd governors would then
> be responsible for looking at the constraints and changing states as
> needed.

I am not sure if genpd governors are also background governors like
cpufreq, but we need to make sure that the voltage is raised after the
function requesting a change returns, so that the clk rate can be
increased then.

-- 
viresh

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Discussion] Performance levels of power domains
  2016-10-26 19:00 ` Kevin Hilman
  2016-10-27  3:46   ` Viresh Kumar
@ 2016-10-27  7:13   ` Vincent Guittot
  2016-10-27 10:11   ` Rafael J. Wysocki
  2 siblings, 0 replies; 21+ messages in thread
From: Vincent Guittot @ 2016-10-27  7:13 UTC (permalink / raw)
  To: Kevin Hilman
  Cc: Viresh Kumar, linux-pm, Rafael J. Wysocki, Ulf Hansson,
	Michael Turquette, Stephen Boyd, Nayak, Rajendra, Georgi Djakov,
	Lists linaro-kernel, Mark Brown

On 26 October 2016 at 21:00, Kevin Hilman <khilman@baylibre.com> wrote:
> Viresh Kumar <viresh.kumar@linaro.org> writes:
>
>> Hi Guys,
>>
>> I wanted to involve you guys to get a discussion going
>> for a problem we want to solve, and so this mail.
>>
>>
>> Platform details:
>>
>> Some of the Qualcom SoCs have the option to configure
>> the performance level of their Power Domains. The performance
>> levels are identified by integer values (lets say 0-9, 0 being the lowest).
>>
>> Another M3 core handles the *real* voltage scaling based on the input
>> received (from software) in terms of these performance levels. The M3
>> core translates the levels into a range of voltages (corners) and selects
>> the right one by itself.
>>
>> Software needs to provide the performance level for the entire domain
>> to the M3 core and so software also needs to handle performance requests
>> from all the devices that lie in the domain X and find a Performance Level P,
>> which can satisfy all the devices (normally the highest requrested level).
>>
>>
>> Problem statement:
>>
>> As we aren't dealing with Voltages here, we can't really get the benefits
>> of the Regulators framework. The regulators are managed internally
>> by the M3 core. All we need is a way for software to comeout with inputs
>> for the M3 core.
>>
>> The OPP framework can be used to include performance levels for
>> each OPP (frequency) entry.
>>
>> But what framework can be used to select performance level of power
>> domains ?
>>
>> By name, power-domain or genpd looks to be the right choice, but until
>> now it is only managing power-on and power-off of devices and domains.
>
> genpd has also recently been extended to support multiple states, though
> those are still idle states, not active (performance) states.
>
>> Should we extend that (along with runtime PM), or do something else?
>
> Yes.  As I've suggested to qcom/linaro folks (off-list discussions), I
> think extending genpd to handle performance states is a logical
> extension.  Otherwise, you will be (re)inventing something that looks an
> awful lot like genpd anyways.

I think that we are mixing 2 different topics. This one is about
setting the voltage of shared voltage domain whereas the scaling bus
topic, that we also discuss with Kevin, includes path, throughput and
routing aspects, which are the intricate part of the discussion

That being said, I agreed that generic power domain could be a natural
place to select running level and not only the idle one.

>
> The other related framework is per-device PM QoS which could be used to
> set constraints on specific devices, and the genpd governors would then
> be responsible for looking at the constraints and changing states as
> needed.
>
> Kevin

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Discussion] Performance levels of power domains
  2016-10-27  3:46   ` Viresh Kumar
@ 2016-10-27  7:17     ` Vincent Guittot
  2016-10-27  8:28       ` Viresh Kumar
  2016-10-27 10:14     ` Rafael J. Wysocki
  1 sibling, 1 reply; 21+ messages in thread
From: Vincent Guittot @ 2016-10-27  7:17 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: Kevin Hilman, linux-pm, Rafael J. Wysocki, Ulf Hansson,
	Michael Turquette, Stephen Boyd, Nayak, Rajendra, Georgi Djakov,
	Lists linaro-kernel, Mark Brown

On 27 October 2016 at 05:46, Viresh Kumar <viresh.kumar@linaro.org> wrote:
> On 26-10-16, 12:00, Kevin Hilman wrote:
>> Yes.  As I've suggested to qcom/linaro folks (off-list discussions), I
>
> No one told me this story :)
>
>> think extending genpd to handle performance states is a logical
>> extension.  Otherwise, you will be (re)inventing something that looks an
>> awful lot like genpd anyways.
>
> I completely agree. Runtime PM and genpd look to be the perfect
> placeholder for such stuff. I actually tried to convince Ulf yesterday
> on this and he wasn't sure if it will ever get accepted upstream and
> that's when I started this thread :)
>
>> The other related framework is per-device PM QoS which could be used to
>> set constraints on specific devices, and the genpd governors would then
>> be responsible for looking at the constraints and changing states as
>> needed.
>
> I am not sure if genpd governors are also background governors like
> cpufreq, but we need to make sure that the voltage is raised after the
> function requesting a change returns, so that the clk rate can be
> increased then.

The M3 core takes only care of the voltage but not the clock ?

Just to be sure to understand the problem:
-There is no real voltage value but instead an opaque index that has
to be used with frequency instead of a voltage.
-This index is used by the M3 core to set voltages but M3 core doesn't
set the clock which is managed by Linux.
-The M3 core takes only one index input for the whole voltage domain
and Linux must aggregate the constraints (with probably a max policy)
of all devices that belong this domain

Am i missing something ?

Vincent
>
> --
> viresh

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Discussion] Performance levels of power domains
  2016-10-27  7:17     ` Vincent Guittot
@ 2016-10-27  8:28       ` Viresh Kumar
  0 siblings, 0 replies; 21+ messages in thread
From: Viresh Kumar @ 2016-10-27  8:28 UTC (permalink / raw)
  To: Vincent Guittot
  Cc: Kevin Hilman, linux-pm, Rafael J. Wysocki, Ulf Hansson,
	Michael Turquette, Stephen Boyd, Nayak, Rajendra, Georgi Djakov,
	Lists linaro-kernel, Mark Brown

On 27-10-16, 09:17, Vincent Guittot wrote:
> The M3 core takes only care of the voltage but not the clock ?

Yes. The is handled normally.

> Just to be sure to understand the problem:
> -There is no real voltage value but instead an opaque index that has
> to be used with frequency instead of a voltage.
> -This index is used by the M3 core to set voltages but M3 core doesn't
> set the clock which is managed by Linux.
> -The M3 core takes only one index input for the whole voltage domain
> and Linux must aggregate the constraints (with probably a max policy)
> of all devices that belong this domain
> 
> Am i missing something ?

No. All matches to my understanding of the problem.

-- 
viresh

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Discussion] Performance levels of power domains
  2016-10-26 19:00 ` Kevin Hilman
  2016-10-27  3:46   ` Viresh Kumar
  2016-10-27  7:13   ` Vincent Guittot
@ 2016-10-27 10:11   ` Rafael J. Wysocki
  2016-10-27 10:23     ` Viresh Kumar
                       ` (4 more replies)
  2 siblings, 5 replies; 21+ messages in thread
From: Rafael J. Wysocki @ 2016-10-27 10:11 UTC (permalink / raw)
  To: Kevin Hilman
  Cc: Viresh Kumar, linux-pm, Rafael J. Wysocki, Vincent Guittot,
	Ulf Hansson, Michael Turquette, Stephen Boyd, Nayak, Rajendra,
	Georgi Djakov, Lists linaro-kernel, Mark Brown

On Wed, Oct 26, 2016 at 9:00 PM, Kevin Hilman <khilman@baylibre.com> wrote:
> Viresh Kumar <viresh.kumar@linaro.org> writes:
>
>> Hi Guys,
>>
>> I wanted to involve you guys to get a discussion going
>> for a problem we want to solve, and so this mail.
>>
>>
>> Platform details:
>>
>> Some of the Qualcom SoCs have the option to configure
>> the performance level of their Power Domains. The performance
>> levels are identified by integer values (lets say 0-9, 0 being the lowest).
>>
>> Another M3 core handles the *real* voltage scaling based on the input
>> received (from software) in terms of these performance levels. The M3
>> core translates the levels into a range of voltages (corners) and selects
>> the right one by itself.
>>
>> Software needs to provide the performance level for the entire domain
>> to the M3 core and so software also needs to handle performance requests
>> from all the devices that lie in the domain X and find a Performance Level P,
>> which can satisfy all the devices (normally the highest requrested level).
>>
>>
>> Problem statement:
>>
>> As we aren't dealing with Voltages here, we can't really get the benefits
>> of the Regulators framework. The regulators are managed internally
>> by the M3 core. All we need is a way for software to comeout with inputs
>> for the M3 core.
>>
>> The OPP framework can be used to include performance levels for
>> each OPP (frequency) entry.
>>
>> But what framework can be used to select performance level of power
>> domains ?
>>
>> By name, power-domain or genpd looks to be the right choice, but until
>> now it is only managing power-on and power-off of devices and domains.
>
> genpd has also recently been extended to support multiple states, though
> those are still idle states, not active (performance) states.
>
>> Should we extend that (along with runtime PM), or do something else?
>
> Yes.  As I've suggested to qcom/linaro folks (off-list discussions), I
> think extending genpd to handle performance states is a logical
> extension.  Otherwise, you will be (re)inventing something that looks an
> awful lot like genpd anyways.

On the Intel side we also have a mechanism to tell the processor about
the power/performance preference and it would be good to have a common
way to do it on all platforms and genpd doesn't look like a
particularly good place for that.

> The other related framework is per-device PM QoS which could be used to
> set constraints on specific devices, and the genpd governors would then
> be responsible for looking at the constraints and changing states as
> needed.

Right.

Let's talk about this at the LPC.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Discussion] Performance levels of power domains
  2016-10-27  3:46   ` Viresh Kumar
  2016-10-27  7:17     ` Vincent Guittot
@ 2016-10-27 10:14     ` Rafael J. Wysocki
  1 sibling, 0 replies; 21+ messages in thread
From: Rafael J. Wysocki @ 2016-10-27 10:14 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: Kevin Hilman, linux-pm, Rafael J. Wysocki, Vincent Guittot,
	Ulf Hansson, Michael Turquette, Stephen Boyd, Nayak, Rajendra,
	Georgi Djakov, Lists linaro-kernel, Mark Brown

On Thu, Oct 27, 2016 at 5:46 AM, Viresh Kumar <viresh.kumar@linaro.org> wrote:
> On 26-10-16, 12:00, Kevin Hilman wrote:
>> Yes.  As I've suggested to qcom/linaro folks (off-list discussions), I
>
> No one told me this story :)
>
>> think extending genpd to handle performance states is a logical
>> extension.  Otherwise, you will be (re)inventing something that looks an
>> awful lot like genpd anyways.
>
> I completely agree. Runtime PM and genpd look to be the perfect
> placeholder for such stuff. I actually tried to convince Ulf yesterday
> on this and he wasn't sure if it will ever get accepted upstream and
> that's when I started this thread :)
>
>> The other related framework is per-device PM QoS which could be used to
>> set constraints on specific devices, and the genpd governors would then
>> be responsible for looking at the constraints and changing states as
>> needed.
>
> I am not sure if genpd governors are also background governors like
> cpufreq, but we need to make sure that the voltage is raised after the
> function requesting a change returns, so that the clk rate can be
> increased then.

Well, as I've just written in a message to Kevin, there are reasons
why genpd may not be the best place for that.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Discussion] Performance levels of power domains
  2016-10-27 10:11   ` Rafael J. Wysocki
@ 2016-10-27 10:23     ` Viresh Kumar
  2016-10-27 10:26       ` Rafael J. Wysocki
  2016-10-27 11:46     ` Ulf Hansson
                       ` (3 subsequent siblings)
  4 siblings, 1 reply; 21+ messages in thread
From: Viresh Kumar @ 2016-10-27 10:23 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Kevin Hilman, linux-pm, Rafael J. Wysocki, Vincent Guittot,
	Ulf Hansson, Michael Turquette, Stephen Boyd, Nayak, Rajendra,
	Georgi Djakov, Lists linaro-kernel, Mark Brown

On 27-10-16, 12:11, Rafael J. Wysocki wrote:
> On the Intel side we also have a mechanism to tell the processor about
> the power/performance preference and it would be good to have a common
> way to do it on all platforms and genpd doesn't look like a
> particularly good place for that.
> 
> Let's talk about this at the LPC.

Thanks for your feedback Rafael.

As I wouldn't be attending the LPC (though would try to get some
information from the guys who are going to attend it), will it be
possible for you to summarize why you think genpd is not the right
choice here?

-- 
viresh

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Discussion] Performance levels of power domains
  2016-10-27 10:23     ` Viresh Kumar
@ 2016-10-27 10:26       ` Rafael J. Wysocki
  0 siblings, 0 replies; 21+ messages in thread
From: Rafael J. Wysocki @ 2016-10-27 10:26 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: Rafael J. Wysocki, Kevin Hilman, linux-pm, Rafael J. Wysocki,
	Vincent Guittot, Ulf Hansson, Michael Turquette, Stephen Boyd,
	Nayak, Rajendra, Georgi Djakov, Lists linaro-kernel, Mark Brown

On Thu, Oct 27, 2016 at 12:23 PM, Viresh Kumar <viresh.kumar@linaro.org> wrote:
> On 27-10-16, 12:11, Rafael J. Wysocki wrote:
>> On the Intel side we also have a mechanism to tell the processor about
>> the power/performance preference and it would be good to have a common
>> way to do it on all platforms and genpd doesn't look like a
>> particularly good place for that.
>>
>> Let's talk about this at the LPC.
>
> Thanks for your feedback Rafael.
>
> As I wouldn't be attending the LPC (though would try to get some
> information from the guys who are going to attend it), will it be
> possible for you to summarize why you think genpd is not the right
> choice here?

There is a mechanism to tell the processor about power/performance
preferences on the Intel side and it is not related to genpd in any
way.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Discussion] Performance levels of power domains
  2016-10-27 10:11   ` Rafael J. Wysocki
  2016-10-27 10:23     ` Viresh Kumar
@ 2016-10-27 11:46     ` Ulf Hansson
  2016-10-28  4:02       ` Viresh Kumar
  2016-10-27 13:12     ` Sudeep K N
                       ` (2 subsequent siblings)
  4 siblings, 1 reply; 21+ messages in thread
From: Ulf Hansson @ 2016-10-27 11:46 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Kevin Hilman, Viresh Kumar, linux-pm, Rafael J. Wysocki,
	Vincent Guittot, Michael Turquette, Stephen Boyd, Nayak,
	Rajendra, Georgi Djakov, Lists linaro-kernel, Mark Brown

On 27 October 2016 at 12:11, Rafael J. Wysocki <rafael@kernel.org> wrote:
> On Wed, Oct 26, 2016 at 9:00 PM, Kevin Hilman <khilman@baylibre.com> wrote:
>> Viresh Kumar <viresh.kumar@linaro.org> writes:
>>
>>> Hi Guys,
>>>
>>> I wanted to involve you guys to get a discussion going
>>> for a problem we want to solve, and so this mail.
>>>
>>>
>>> Platform details:
>>>
>>> Some of the Qualcom SoCs have the option to configure
>>> the performance level of their Power Domains. The performance
>>> levels are identified by integer values (lets say 0-9, 0 being the lowest).
>>>
>>> Another M3 core handles the *real* voltage scaling based on the input
>>> received (from software) in terms of these performance levels. The M3
>>> core translates the levels into a range of voltages (corners) and selects
>>> the right one by itself.
>>>
>>> Software needs to provide the performance level for the entire domain
>>> to the M3 core and so software also needs to handle performance requests
>>> from all the devices that lie in the domain X and find a Performance Level P,
>>> which can satisfy all the devices (normally the highest requrested level).
>>>
>>>
>>> Problem statement:
>>>
>>> As we aren't dealing with Voltages here, we can't really get the benefits
>>> of the Regulators framework. The regulators are managed internally
>>> by the M3 core. All we need is a way for software to comeout with inputs
>>> for the M3 core.
>>>
>>> The OPP framework can be used to include performance levels for
>>> each OPP (frequency) entry.
>>>
>>> But what framework can be used to select performance level of power
>>> domains ?
>>>
>>> By name, power-domain or genpd looks to be the right choice, but until
>>> now it is only managing power-on and power-off of devices and domains.
>>
>> genpd has also recently been extended to support multiple states, though
>> those are still idle states, not active (performance) states.
>>
>>> Should we extend that (along with runtime PM), or do something else?
>>
>> Yes.  As I've suggested to qcom/linaro folks (off-list discussions), I
>> think extending genpd to handle performance states is a logical
>> extension.  Otherwise, you will be (re)inventing something that looks an
>> awful lot like genpd anyways.
>
> On the Intel side we also have a mechanism to tell the processor about
> the power/performance preference and it would be good to have a common
> way to do it on all platforms and genpd doesn't look like a
> particularly good place for that.

One thing that would be interesting to know is where the
power/performance preference "voting" can be done. Is that in also in
the separate processor or is that a job for the kernel?

>
>> The other related framework is per-device PM QoS which could be used to
>> set constraints on specific devices, and the genpd governors would then
>> be responsible for looking at the constraints and changing states as
>> needed.

I guess dev PM QoS could be extended to cover performance preferences
as well, but at the same time that framework is about dealing with
idle - not performance.

Perhaps the OPP framework might be better place? One could also think
of extending this to support "OPP PM domains"...

>
> Right.
>
> Let's talk about this at the LPC.

Yes, count me in!

>
> Thanks,
> Rafael

Kind regards
Uffe

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Discussion] Performance levels of power domains
  2016-10-27 10:11   ` Rafael J. Wysocki
  2016-10-27 10:23     ` Viresh Kumar
  2016-10-27 11:46     ` Ulf Hansson
@ 2016-10-27 13:12     ` Sudeep K N
  2016-10-27 17:24     ` Kevin Hilman
  2016-11-09 11:46     ` Viresh Kumar
  4 siblings, 0 replies; 21+ messages in thread
From: Sudeep K N @ 2016-10-27 13:12 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Kevin Hilman, Lists linaro-kernel, linux-pm, Viresh Kumar,
	Michael Turquette, Rafael J. Wysocki, Georgi Djakov, Mark Brown,
	Nayak, Rajendra, Stephen Boyd

On Thu, Oct 27, 2016 at 11:11 AM, Rafael J. Wysocki <rafael@kernel.org> wrote:

[...]

> Let's talk about this at the LPC.
>

I am interested too.

-- 
Regards,
Sudeep

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Discussion] Performance levels of power domains
  2016-10-27 10:11   ` Rafael J. Wysocki
                       ` (2 preceding siblings ...)
  2016-10-27 13:12     ` Sudeep K N
@ 2016-10-27 17:24     ` Kevin Hilman
  2016-11-09 11:46     ` Viresh Kumar
  4 siblings, 0 replies; 21+ messages in thread
From: Kevin Hilman @ 2016-10-27 17:24 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Viresh Kumar, linux-pm, Rafael J. Wysocki, Vincent Guittot,
	Ulf Hansson, Michael Turquette, Stephen Boyd, Nayak, Rajendra,
	Georgi Djakov, Lists linaro-kernel, Mark Brown

"Rafael J. Wysocki" <rafael@kernel.org> writes:

> On Wed, Oct 26, 2016 at 9:00 PM, Kevin Hilman <khilman@baylibre.com> wrote:
>> Viresh Kumar <viresh.kumar@linaro.org> writes:
>>
>>> Hi Guys,
>>>
>>> I wanted to involve you guys to get a discussion going
>>> for a problem we want to solve, and so this mail.
>>>
>>>
>>> Platform details:
>>>
>>> Some of the Qualcom SoCs have the option to configure
>>> the performance level of their Power Domains. The performance
>>> levels are identified by integer values (lets say 0-9, 0 being the lowest).
>>>
>>> Another M3 core handles the *real* voltage scaling based on the input
>>> received (from software) in terms of these performance levels. The M3
>>> core translates the levels into a range of voltages (corners) and selects
>>> the right one by itself.
>>>
>>> Software needs to provide the performance level for the entire domain
>>> to the M3 core and so software also needs to handle performance requests
>>> from all the devices that lie in the domain X and find a Performance Level P,
>>> which can satisfy all the devices (normally the highest requrested level).
>>>
>>>
>>> Problem statement:
>>>
>>> As we aren't dealing with Voltages here, we can't really get the benefits
>>> of the Regulators framework. The regulators are managed internally
>>> by the M3 core. All we need is a way for software to comeout with inputs
>>> for the M3 core.
>>>
>>> The OPP framework can be used to include performance levels for
>>> each OPP (frequency) entry.
>>>
>>> But what framework can be used to select performance level of power
>>> domains ?
>>>
>>> By name, power-domain or genpd looks to be the right choice, but until
>>> now it is only managing power-on and power-off of devices and domains.
>>
>> genpd has also recently been extended to support multiple states, though
>> those are still idle states, not active (performance) states.
>>
>>> Should we extend that (along with runtime PM), or do something else?
>>
>> Yes.  As I've suggested to qcom/linaro folks (off-list discussions), I
>> think extending genpd to handle performance states is a logical
>> extension.  Otherwise, you will be (re)inventing something that looks an
>> awful lot like genpd anyways.
>
> On the Intel side we also have a mechanism to tell the processor about
> the power/performance preference and it would be good to have a common
> way to do it on all platforms and genpd doesn't look like a
> particularly good place for that.
>
>> The other related framework is per-device PM QoS which could be used to
>> set constraints on specific devices, and the genpd governors would then
>> be responsible for looking at the constraints and changing states as
>> needed.
>
> Right.
>
> Let's talk about this at the LPC.

Sounds good.

Kevin

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Discussion] Performance levels of power domains
  2016-10-26 11:21     ` Sudeep Holla
@ 2016-10-28  0:22       ` Stephen Boyd
  2016-10-28  8:52         ` Sudeep Holla
  0 siblings, 1 reply; 21+ messages in thread
From: Stephen Boyd @ 2016-10-28  0:22 UTC (permalink / raw)
  To: Sudeep Holla
  Cc: Viresh Kumar, linux-pm, Lists linaro-kernel, Michael Turquette,
	Rafael J. Wysocki, Mark Brown, Nayak, Rajendra, Georgi Djakov,
	Bjorn Andersson

On 10/26, Sudeep Holla wrote:
> 
> 
> On 26/10/16 12:16, Viresh Kumar wrote:
> >On 26-10-16, 12:09, Sudeep Holla wrote:
> 
> [...]
> 
> >>I am mainly interested as there are efforts to standardize these
> >>communication with M3 and there's WIP protocol development[1]. It would
> >>be good to see if this user-case is also considered.
> >
> >What do you mean by that ?
> 
> Basically I wanted to know more details so that such system are also
> considered(I agree it may not have any impact on the protocol at all,
> but still good to consider them) when designing this new SCMI protocol.
> 

There are a couple different wire protocols used to communicate
with the RPM on these platforms. The first one is at
drivers/mfd/qcom_rpm.c, and the second one is at
drivers/soc/qcom/smd-rpm.c. Bjorn upstreamed these drivers based
on the codeaurora sources.

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Discussion] Performance levels of power domains
  2016-10-27 11:46     ` Ulf Hansson
@ 2016-10-28  4:02       ` Viresh Kumar
  0 siblings, 0 replies; 21+ messages in thread
From: Viresh Kumar @ 2016-10-28  4:02 UTC (permalink / raw)
  To: Ulf Hansson
  Cc: Rafael J. Wysocki, Kevin Hilman, linux-pm, Rafael J. Wysocki,
	Vincent Guittot, Michael Turquette, Stephen Boyd, Nayak,
	Rajendra, Georgi Djakov, Lists linaro-kernel, Mark Brown

On 27-10-16, 13:46, Ulf Hansson wrote:
> One thing that would be interesting to know is where the
> power/performance preference "voting" can be done. Is that in also in
> the separate processor or is that a job for the kernel?

In our case it is required to be done by the kernel.

> Perhaps the OPP framework might be better place? One could also think
> of extending this to support "OPP PM domains"...

OPP framework will surely get some updates for this, as it needs to
relate the frequencies with power levels for the domains.

-- 
viresh

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Discussion] Performance levels of power domains
  2016-10-28  0:22       ` Stephen Boyd
@ 2016-10-28  8:52         ` Sudeep Holla
  0 siblings, 0 replies; 21+ messages in thread
From: Sudeep Holla @ 2016-10-28  8:52 UTC (permalink / raw)
  To: Stephen Boyd
  Cc: Sudeep Holla, Viresh Kumar, linux-pm, Lists linaro-kernel,
	Michael Turquette, Rafael J. Wysocki, Mark Brown, Nayak,
	Rajendra, Georgi Djakov, Bjorn Andersson



On 28/10/16 01:22, Stephen Boyd wrote:
> On 10/26, Sudeep Holla wrote:
>>
>>
>> On 26/10/16 12:16, Viresh Kumar wrote:
>>> On 26-10-16, 12:09, Sudeep Holla wrote:
>>
>> [...]
>>
>>>> I am mainly interested as there are efforts to standardize these
>>>> communication with M3 and there's WIP protocol development[1]. It would
>>>> be good to see if this user-case is also considered.
>>>
>>> What do you mean by that ?
>>
>> Basically I wanted to know more details so that such system are also
>> considered(I agree it may not have any impact on the protocol at all,
>> but still good to consider them) when designing this new SCMI protocol.
>>
>
> There are a couple different wire protocols used to communicate
> with the RPM on these platforms. The first one is at
> drivers/mfd/qcom_rpm.c, and the second one is at
> drivers/soc/qcom/smd-rpm.c. Bjorn upstreamed these drivers based
> on the codeaurora sources.
>

Thanks for information Stephen, I will have a look.

-- 
Regards,
Sudeep

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Discussion] Performance levels of power domains
  2016-10-27 10:11   ` Rafael J. Wysocki
                       ` (3 preceding siblings ...)
  2016-10-27 17:24     ` Kevin Hilman
@ 2016-11-09 11:46     ` Viresh Kumar
  2016-11-10 19:14       ` Kevin Hilman
  4 siblings, 1 reply; 21+ messages in thread
From: Viresh Kumar @ 2016-11-09 11:46 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Kevin Hilman, linux-pm, Rafael J. Wysocki, Vincent Guittot,
	Ulf Hansson, Michael Turquette, Stephen Boyd, Nayak, Rajendra,
	Georgi Djakov, Lists linaro-kernel, Mark Brown

On 27 October 2016 at 15:41, Rafael J. Wysocki <rafael@kernel.org> wrote:
> On Wed, Oct 26, 2016 at 9:00 PM, Kevin Hilman <khilman@baylibre.com> wrote:
>> Viresh Kumar <viresh.kumar@linaro.org> writes:
>>
>>> Hi Guys,
>>>
>>> I wanted to involve you guys to get a discussion going
>>> for a problem we want to solve, and so this mail.
>>>
>>>
>>> Platform details:
>>>
>>> Some of the Qualcom SoCs have the option to configure
>>> the performance level of their Power Domains. The performance
>>> levels are identified by integer values (lets say 0-9, 0 being the lowest).
>>>
>>> Another M3 core handles the *real* voltage scaling based on the input
>>> received (from software) in terms of these performance levels. The M3
>>> core translates the levels into a range of voltages (corners) and selects
>>> the right one by itself.
>>>
>>> Software needs to provide the performance level for the entire domain
>>> to the M3 core and so software also needs to handle performance requests
>>> from all the devices that lie in the domain X and find a Performance Level P,
>>> which can satisfy all the devices (normally the highest requrested level).
>>>
>>>
>>> Problem statement:
>>>
>>> As we aren't dealing with Voltages here, we can't really get the benefits
>>> of the Regulators framework. The regulators are managed internally
>>> by the M3 core. All we need is a way for software to comeout with inputs
>>> for the M3 core.
>>>
>>> The OPP framework can be used to include performance levels for
>>> each OPP (frequency) entry.
>>>
>>> But what framework can be used to select performance level of power
>>> domains ?
>>>
>>> By name, power-domain or genpd looks to be the right choice, but until
>>> now it is only managing power-on and power-off of devices and domains.
>>
>> genpd has also recently been extended to support multiple states, though
>> those are still idle states, not active (performance) states.
>>
>>> Should we extend that (along with runtime PM), or do something else?
>>
>> Yes.  As I've suggested to qcom/linaro folks (off-list discussions), I
>> think extending genpd to handle performance states is a logical
>> extension.  Otherwise, you will be (re)inventing something that looks an
>> awful lot like genpd anyways.
>
> On the Intel side we also have a mechanism to tell the processor about
> the power/performance preference and it would be good to have a common
> way to do it on all platforms and genpd doesn't look like a
> particularly good place for that.
>
>> The other related framework is per-device PM QoS which could be used to
>> set constraints on specific devices, and the genpd governors would then
>> be responsible for looking at the constraints and changing states as
>> needed.
>
> Right.
>
> Let's talk about this at the LPC.

Any updates from LPC on this ?

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Discussion] Performance levels of power domains
  2016-11-09 11:46     ` Viresh Kumar
@ 2016-11-10 19:14       ` Kevin Hilman
  0 siblings, 0 replies; 21+ messages in thread
From: Kevin Hilman @ 2016-11-10 19:14 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: Rafael J. Wysocki, linux-pm, Rafael J. Wysocki, Vincent Guittot,
	Ulf Hansson, Michael Turquette, Stephen Boyd, Nayak, Rajendra,
	Georgi Djakov, Lists linaro-kernel, Mark Brown

Viresh Kumar <viresh.kumar@linaro.org> writes:

> On 27 October 2016 at 15:41, Rafael J. Wysocki <rafael@kernel.org> wrote:
>> On Wed, Oct 26, 2016 at 9:00 PM, Kevin Hilman <khilman@baylibre.com> wrote:
>>> Viresh Kumar <viresh.kumar@linaro.org> writes:
>>>
>>>> Hi Guys,
>>>>
>>>> I wanted to involve you guys to get a discussion going
>>>> for a problem we want to solve, and so this mail.
>>>>
>>>>
>>>> Platform details:
>>>>
>>>> Some of the Qualcom SoCs have the option to configure
>>>> the performance level of their Power Domains. The performance
>>>> levels are identified by integer values (lets say 0-9, 0 being the lowest).
>>>>
>>>> Another M3 core handles the *real* voltage scaling based on the input
>>>> received (from software) in terms of these performance levels. The M3
>>>> core translates the levels into a range of voltages (corners) and selects
>>>> the right one by itself.
>>>>
>>>> Software needs to provide the performance level for the entire domain
>>>> to the M3 core and so software also needs to handle performance requests
>>>> from all the devices that lie in the domain X and find a Performance Level P,
>>>> which can satisfy all the devices (normally the highest requrested level).
>>>>
>>>>
>>>> Problem statement:
>>>>
>>>> As we aren't dealing with Voltages here, we can't really get the benefits
>>>> of the Regulators framework. The regulators are managed internally
>>>> by the M3 core. All we need is a way for software to comeout with inputs
>>>> for the M3 core.
>>>>
>>>> The OPP framework can be used to include performance levels for
>>>> each OPP (frequency) entry.
>>>>
>>>> But what framework can be used to select performance level of power
>>>> domains ?
>>>>
>>>> By name, power-domain or genpd looks to be the right choice, but until
>>>> now it is only managing power-on and power-off of devices and domains.
>>>
>>> genpd has also recently been extended to support multiple states, though
>>> those are still idle states, not active (performance) states.
>>>
>>>> Should we extend that (along with runtime PM), or do something else?
>>>
>>> Yes.  As I've suggested to qcom/linaro folks (off-list discussions), I
>>> think extending genpd to handle performance states is a logical
>>> extension.  Otherwise, you will be (re)inventing something that looks an
>>> awful lot like genpd anyways.
>>
>> On the Intel side we also have a mechanism to tell the processor about
>> the power/performance preference and it would be good to have a common
>> way to do it on all platforms and genpd doesn't look like a
>> particularly good place for that.
>>
>>> The other related framework is per-device PM QoS which could be used to
>>> set constraints on specific devices, and the genpd governors would then
>>> be responsible for looking at the constraints and changing states as
>>> needed.
>>
>> Right.
>>
>> Let's talk about this at the LPC.
>
> Any updates from LPC on this ?

The short version: we agreed that extending genpd to support performance
states/levels is the right way to go.

Kevin

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2016-11-10 19:14 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-26 10:52 [Discussion] Performance levels of power domains Viresh Kumar
2016-10-26 11:09 ` Sudeep Holla
2016-10-26 11:16   ` Viresh Kumar
2016-10-26 11:21     ` Sudeep Holla
2016-10-28  0:22       ` Stephen Boyd
2016-10-28  8:52         ` Sudeep Holla
2016-10-26 19:00 ` Kevin Hilman
2016-10-27  3:46   ` Viresh Kumar
2016-10-27  7:17     ` Vincent Guittot
2016-10-27  8:28       ` Viresh Kumar
2016-10-27 10:14     ` Rafael J. Wysocki
2016-10-27  7:13   ` Vincent Guittot
2016-10-27 10:11   ` Rafael J. Wysocki
2016-10-27 10:23     ` Viresh Kumar
2016-10-27 10:26       ` Rafael J. Wysocki
2016-10-27 11:46     ` Ulf Hansson
2016-10-28  4:02       ` Viresh Kumar
2016-10-27 13:12     ` Sudeep K N
2016-10-27 17:24     ` Kevin Hilman
2016-11-09 11:46     ` Viresh Kumar
2016-11-10 19:14       ` Kevin Hilman

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.