RE: [PATCH 01/17] PM: fix suspend control for IVA2

2009-10-22 Thread Artem Bityutskiy
On Thu, 2009-10-22 at 16:21 -0500, Woodruff, Richard wrote:
> > From: linux-omap-ow...@vger.kernel.org [mailto:linux-omap-
> > ow...@vger.kernel.org] On Behalf Of Paul Walmsley
> > Sent: Thursday, October 22, 2009 5:24 AM
> 
> > > IVA2 controls its target power state individually, thus suspend should not
> > > touch IVA2. Without this patch DSP suspend always fails.
> >
> > We don't allow other device drivers to touch PRCM bits, so we should
> > probably should remove all PRCM register accesses from the DSPBridge code,
> > so all power control should go through the ARM.
> >
> > Is there a reason why the ARM code can't handle the DSP powerdomain?
> 
> Sharing with DSP is something which probably could use some improvement.
> 
> Today DSP self-manages its domain.  Its (bios) micro-kernel makes decisions 
> to optimize its domain. The ARM can't really micro-manage the DSP as he 
> doesn't even want to know at the detail level what the DSP is up to at every 
> instant.
> 
> - During idle time cpuidle should just be checking dsp status to see if its 
> current state gets in the way of a low c-state.
> 
> - bridge does register with suspend frame work so he should do the right 
> thing when in the system.
> 
> * problem is when bridge isn't there what to do.  This is especially after an 
> unload of the bridge.

Just a side note reminder: bridge does not exist in the real world.

[dedek...@sauron linux-omap-2.6]\$ ls drivers/dsp/bridge
ls: cannot access drivers/dsp/bridge: No such file or directory

-- 
Best Regards,
Artem Bityutskiy (Артём Битюцкий)

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH 01/17] PM: fix suspend control for IVA2

2009-10-22 Thread Woodruff, Richard

> From: linux-omap-ow...@vger.kernel.org [mailto:linux-omap-
> ow...@vger.kernel.org] On Behalf Of Paul Walmsley
> Sent: Thursday, October 22, 2009 5:24 AM

> > IVA2 controls its target power state individually, thus suspend should not
> > touch IVA2. Without this patch DSP suspend always fails.
>
> We don't allow other device drivers to touch PRCM bits, so we should
> probably should remove all PRCM register accesses from the DSPBridge code,
> so all power control should go through the ARM.
>
> Is there a reason why the ARM code can't handle the DSP powerdomain?

Sharing with DSP is something which probably could use some improvement.

Today DSP self-manages its domain.  Its (bios) micro-kernel makes decisions to 
optimize its domain. The ARM can't really micro-manage the DSP as he doesn't 
even want to know at the detail level what the DSP is up to at every instant.

- During idle time cpuidle should just be checking dsp status to see if its 
current state gets in the way of a low c-state.

- bridge does register with suspend frame work so he should do the right thing 
when in the system.

* problem is when bridge isn't there what to do.  This is especially after an 
unload of the bridge.

What has been proposed in the past is like what Kevin inputted in related 
thread about having maintenance hand off.  But for some reason it never quite 
to the top of the list.

- bridge does request thought clock frame work clocks especially of those which 
are public peripherals.

- bridge could request everything but it was not projected as power efficient 
waking up the big arm core for something the dsp could do itself and has all 
control over.  This is especially true if you have dsp doing the rendering for 
something like mp3.  it gets the wake ups and streaming and only every great 
while wakes the arm to give it a pile more data.  Waking the arm every time it 
runs its equivalent of cpuidle was discourged.

- main other sharing conflict was with irq routing between arm and bridge.  
Right now its kind of init mode setup.  I guess this is ok for todays usage.

.. so after context current code is not requesting through pm code 
purposefully.  The hardware has been evolving from omap1,2,3,4 to make for more 
of a distributed model.  After all the details/constraints are understood with 
silicon there is some time to re-evaluate if its paying back or not.

Regards,
Richard W.


--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 01/17] PM: fix suspend control for IVA2

2009-10-22 Thread Paul Walmsley
Hi Tero, Ameya, Girish,

On Fri, 16 Oct 2009, Tero Kristo wrote:

> From: Tero Kristo 
> 
> IVA2 controls its target power state individually, thus suspend should not
> touch IVA2. Without this patch DSP suspend always fails.

We don't allow other device drivers to touch PRCM bits, so we should 
probably should remove all PRCM register accesses from the DSPBridge code, 
so all power control should go through the ARM.

Is there a reason why the ARM code can't handle the DSP powerdomain?


- Paul
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 01/17] PM: fix suspend control for IVA2

2009-10-20 Thread Kevin Hilman
 writes:

>>-Original Message-
>>From: ext Girish S G [mailto:giris...@ti.com] 
>>Sent: 16 October, 2009 20:16
>>To: Kristo Tero (Nokia-D/Tampere); linux-omap@vger.kernel.org
>>Subject: RE: [PATCH 01/17] PM: fix suspend control for IVA2
>>
>>
>>
>>> -Original Message-
>>> From: linux-omap-ow...@vger.kernel.org 
>>[mailto:linux-omap-ow...@vger.kernel.org] On Behalf Of Tero
>>> Kristo
>>> 
>>> From: Tero Kristo 
>>> 
>>> IVA2 controls its target power state individually, thus 
>>suspend should not
>>> touch IVA2. Without this patch DSP suspend always fails.
>>> 
>>> Signed-off-by: Tero Kristo 
>>> Acked-by: Ameya Palande 
>>> ---
>>>  arch/arm/mach-omap2/pm34xx.c |9 -
>>>  1 files changed, 8 insertions(+), 1 deletions(-)
>>> 
>>>  static struct prm_setup_vc prm_setup = {
>>> .clksetup = 0xff,
>>> @@ -676,6 +676,12 @@ static int omap3_pm_suspend(void)
>>> pwrst->saved_state = 
>>pwrdm_read_next_pwrst(pwrst->pwrdm);
>>> /* Set ones wanted by suspend */
>>> list_for_each_entry(pwrst, &pwrst_list, node) {
>>> +   /* Special handling for IVA2, just use current 
>>sleep state */
>>> +   if (pwrst->pwrdm == iva2_pwrdm) {
>>> +   state = pwrdm_read_pwrst(pwrst->pwrdm);
>>> +   if (state < PWRDM_POWER_ON)
>>> +   pwrst->next_state = state;
>>> +   }
>>
>>Agree, IVA2 pwrdm is handled autonomously by bridge. I think 
>>this needs some additional change to remove all the redundant
>>configuration of iva pwdm. There are some inconsistencies like, 
>>  - Say enable_off_mode is disabled. Before doing system 
>>wide suspend if DSP hibernates then IVA2 will be put to OFF. In that
>>case we have IVA2 going to OFF and other domains in RET. This 
>>might not be an issue, but it's bad from sytem PM framework integrity
>>perspective.
>
> This is an issue with bridge driver, and I am not sure how this should be 
> fixed. Currently bridge driver does not care whether off mode is enabled or 
> not.
>
>>  - enable_off_mode->omap3_pm_off_mode_enable will also 
>>touch IVA2 power domain next state. This we don't want to do if dsp
>>bridge is already taking care of IVA2.
>>
>>IMO, we need to have some mechanism wherein if bridge PM takes 
>>care of IVA then PM framework should not configure the IVA
>>powerstate. It should only do if bridge PM is disabled.
>
> Should we have a Kconfig option for this? Like CONFIG_OMAP3_BRIDGE_PM, and 
> disable all iva2 controls from pm34xx.c if it is enabled? Otherwise control 
> IVA2 as currently done.
>

Rather than Kconfig, this should be run-time.

There should be some sort of flag for indpendent IVA2 control and a
register function that bridge (or any other DSP controller) could
register for and take over control of IVA2.

This way, if no bridge is loaded, IVA2 can still properly be suspended.

Kevin

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH 01/17] PM: fix suspend control for IVA2

2009-10-19 Thread Girish S G


> -Original Message-
> From: tero.kri...@nokia.com [mailto:tero.kri...@nokia.com]
> Sent: Monday, October 19, 2009 4:23 AM
> To: giris...@ti.com; linux-omap@vger.kernel.org
> Subject: RE: [PATCH 01/17] PM: fix suspend control for IVA2

> >
> >Agree, IVA2 pwrdm is handled autonomously by bridge. I think
> >this needs some additional change to remove all the redundant
> >configuration of iva pwdm. There are some inconsistencies like,
> > - Say enable_off_mode is disabled. Before doing system
> >wide suspend if DSP hibernates then IVA2 will be put to OFF. In that
> >case we have IVA2 going to OFF and other domains in RET. This
> >might not be an issue, but it's bad from sytem PM framework integrity
> >perspective.
> 
> This is an issue with bridge driver, and I am not sure how this should be 
> fixed. Currently bridge
> driver does not care whether off mode is enabled or not.

I have seen bridge considering enable_off_mode flag in suspend/resume path. But 
while hibernation (idle timeout) it goes to OFF,
irrespective of the OFF flag.

> 
> > - enable_off_mode->omap3_pm_off_mode_enable will also
> >touch IVA2 power domain next state. This we don't want to do if dsp
> >bridge is already taking care of IVA2.
> >
> >IMO, we need to have some mechanism wherein if bridge PM takes
> >care of IVA then PM framework should not configure the IVA
> >powerstate. It should only do if bridge PM is disabled.
> 
> Should we have a Kconfig option for this? Like CONFIG_OMAP3_BRIDGE_PM, and 
> disable all iva2 controls
> from pm34xx.c if it is enabled? Otherwise control IVA2 as currently done.

Yes, this looks ok to me.


-Girish

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH 01/17] PM: fix suspend control for IVA2

2009-10-19 Thread Tero.Kristo
 

>-Original Message-
>From: ext Girish S G [mailto:giris...@ti.com] 
>Sent: 16 October, 2009 20:16
>To: Kristo Tero (Nokia-D/Tampere); linux-omap@vger.kernel.org
>Subject: RE: [PATCH 01/17] PM: fix suspend control for IVA2
>
>
>
>> -Original Message-
>> From: linux-omap-ow...@vger.kernel.org 
>[mailto:linux-omap-ow...@vger.kernel.org] On Behalf Of Tero
>> Kristo
>> 
>> From: Tero Kristo 
>> 
>> IVA2 controls its target power state individually, thus 
>suspend should not
>> touch IVA2. Without this patch DSP suspend always fails.
>> 
>> Signed-off-by: Tero Kristo 
>> Acked-by: Ameya Palande 
>> ---
>>  arch/arm/mach-omap2/pm34xx.c |9 -
>>  1 files changed, 8 insertions(+), 1 deletions(-)
>> 
>>  static struct prm_setup_vc prm_setup = {
>>  .clksetup = 0xff,
>> @@ -676,6 +676,12 @@ static int omap3_pm_suspend(void)
>>  pwrst->saved_state = 
>pwrdm_read_next_pwrst(pwrst->pwrdm);
>>  /* Set ones wanted by suspend */
>>  list_for_each_entry(pwrst, &pwrst_list, node) {
>> +/* Special handling for IVA2, just use current 
>sleep state */
>> +if (pwrst->pwrdm == iva2_pwrdm) {
>> +state = pwrdm_read_pwrst(pwrst->pwrdm);
>> +if (state < PWRDM_POWER_ON)
>> +pwrst->next_state = state;
>> +}
>
>Agree, IVA2 pwrdm is handled autonomously by bridge. I think 
>this needs some additional change to remove all the redundant
>configuration of iva pwdm. There are some inconsistencies like, 
>   - Say enable_off_mode is disabled. Before doing system 
>wide suspend if DSP hibernates then IVA2 will be put to OFF. In that
>case we have IVA2 going to OFF and other domains in RET. This 
>might not be an issue, but it's bad from sytem PM framework integrity
>perspective.

This is an issue with bridge driver, and I am not sure how this should be 
fixed. Currently bridge driver does not care whether off mode is enabled or not.

>   - enable_off_mode->omap3_pm_off_mode_enable will also 
>touch IVA2 power domain next state. This we don't want to do if dsp
>bridge is already taking care of IVA2.
>
>IMO, we need to have some mechanism wherein if bridge PM takes 
>care of IVA then PM framework should not configure the IVA
>powerstate. It should only do if bridge PM is disabled.

Should we have a Kconfig option for this? Like CONFIG_OMAP3_BRIDGE_PM, and 
disable all iva2 controls from pm34xx.c if it is enabled? Otherwise control 
IVA2 as currently done.

-Tero
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH 01/17] PM: fix suspend control for IVA2

2009-10-16 Thread Girish S G


> -Original Message-
> From: linux-omap-ow...@vger.kernel.org 
> [mailto:linux-omap-ow...@vger.kernel.org] On Behalf Of Tero
> Kristo
> 
> From: Tero Kristo 
> 
> IVA2 controls its target power state individually, thus suspend should not
> touch IVA2. Without this patch DSP suspend always fails.
> 
> Signed-off-by: Tero Kristo 
> Acked-by: Ameya Palande 
> ---
>  arch/arm/mach-omap2/pm34xx.c |9 -
>  1 files changed, 8 insertions(+), 1 deletions(-)
> 
>  static struct prm_setup_vc prm_setup = {
>   .clksetup = 0xff,
> @@ -676,6 +676,12 @@ static int omap3_pm_suspend(void)
>   pwrst->saved_state = pwrdm_read_next_pwrst(pwrst->pwrdm);
>   /* Set ones wanted by suspend */
>   list_for_each_entry(pwrst, &pwrst_list, node) {
> + /* Special handling for IVA2, just use current sleep state */
> + if (pwrst->pwrdm == iva2_pwrdm) {
> + state = pwrdm_read_pwrst(pwrst->pwrdm);
> + if (state < PWRDM_POWER_ON)
> + pwrst->next_state = state;
> + }

Agree, IVA2 pwrdm is handled autonomously by bridge. I think this needs some 
additional change to remove all the redundant
configuration of iva pwdm. There are some inconsistencies like, 
- Say enable_off_mode is disabled. Before doing system wide suspend if 
DSP hibernates then IVA2 will be put to OFF. In that
case we have IVA2 going to OFF and other domains in RET. This might not be an 
issue, but it's bad from sytem PM framework integrity
perspective.
- enable_off_mode->omap3_pm_off_mode_enable will also touch IVA2 power 
domain next state. This we don't want to do if dsp
bridge is already taking care of IVA2.

IMO, we need to have some mechanism wherein if bridge PM takes care of IVA then 
PM framework should not configure the IVA
powerstate. It should only do if bridge PM is disabled.


-Girish

  


--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 01/17] PM: fix suspend control for IVA2

2009-10-16 Thread Tero Kristo
From: Tero Kristo 

IVA2 controls its target power state individually, thus suspend should not
touch IVA2. Without this patch DSP suspend always fails.

Signed-off-by: Tero Kristo 
Acked-by: Ameya Palande 
---
 arch/arm/mach-omap2/pm34xx.c |9 -
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index a3e3729..5e2ef63 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -81,7 +81,7 @@ static int (*_omap_save_secure_sram)(u32 *addr);
 
 static struct powerdomain *mpu_pwrdm, *neon_pwrdm;
 static struct powerdomain *core_pwrdm, *per_pwrdm;
-static struct powerdomain *cam_pwrdm;
+static struct powerdomain *cam_pwrdm, *iva2_pwrdm;
 
 static struct prm_setup_vc prm_setup = {
.clksetup = 0xff,
@@ -676,6 +676,12 @@ static int omap3_pm_suspend(void)
pwrst->saved_state = pwrdm_read_next_pwrst(pwrst->pwrdm);
/* Set ones wanted by suspend */
list_for_each_entry(pwrst, &pwrst_list, node) {
+   /* Special handling for IVA2, just use current sleep state */
+   if (pwrst->pwrdm == iva2_pwrdm) {
+   state = pwrdm_read_pwrst(pwrst->pwrdm);
+   if (state < PWRDM_POWER_ON)
+   pwrst->next_state = state;
+   }
if (set_pwrdm_state(pwrst->pwrdm, pwrst->next_state))
goto restore;
if (pwrdm_clear_all_prev_pwrst(pwrst->pwrdm))
@@ -1183,6 +1189,7 @@ static int __init omap3_pm_init(void)
per_pwrdm = pwrdm_lookup("per_pwrdm");
core_pwrdm = pwrdm_lookup("core_pwrdm");
cam_pwrdm = pwrdm_lookup("cam_pwrdm");
+   iva2_pwrdm = pwrdm_lookup("iva2_pwrdm");
 
omap_push_sram_idle();
 #ifdef CONFIG_SUSPEND
-- 
1.5.4.3

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html