Re: [PATCH 3/9] ARM: OMAP2+: PM: Remove bogus fiq_[enable/disable] tuple

2013-03-28 Thread Santosh Shilimkar
On Thursday 28 March 2013 12:32 AM, Santosh Shilimkar wrote:
> On Thursday 28 March 2013 12:06 AM, Kevin Hilman wrote:
>> Santosh Shilimkar  writes:
>>
>>> On OMAP platform, FIQ is reserved for secure environment only. If at all
>>> the FIQ needs to be disabled, it involves going through security
>>> API call. Hence the local_fiq_[enable/disable]() in the OMAP code is bogus.
>>>
>>> So just get rid of it.
>>
>> What about GP devices?
>>
> On GP devices as well FIQ isn't available for non-secure software since
> its marked secure only in ROM initialization. There has been heavy
> debate on this since some customers wanted to have it available
> for debug purpose but some other work-around was done rather
> than opening it for public.
> 

For record, patch with updated changelog for GP device is end of
the email.

Regards,
Santosh

>From 6b85638b83caac7bae9ffa202391882a9ad4388f Mon Sep 17 00:00:00 2001
From: Santosh Shilimkar 
Date: Mon, 11 Feb 2013 19:29:45 +0530
Subject: [PATCH v2 3/9] ARM: OMAP2+: PM: Remove bogus fiq_[enable/disable]
 tuple

On OMAP platform, FIQ is reserved for secure environment only. If at all
the FIQ needs to be disabled, it involves going through security
API call. Hence the local_fiq_[enable/disable]() in the OMAP code is bogus.
On GP devices too, the fiq is disabled for non-secure software.

So just get rid of it.

Signed-off-by: Santosh Shilimkar 
---
 arch/arm/mach-omap2/cpuidle34xx.c |3 ---
 arch/arm/mach-omap2/cpuidle44xx.c |7 ---
 arch/arm/mach-omap2/pm24xx.c  |   11 +++
 arch/arm/mach-omap2/pm34xx.c  |9 +
 arch/arm/mach-omap2/pm44xx.c  |4 
 5 files changed, 4 insertions(+), 30 deletions(-)

diff --git a/arch/arm/mach-omap2/cpuidle34xx.c 
b/arch/arm/mach-omap2/cpuidle34xx.c
index 80392fc..06f567f 100644
--- a/arch/arm/mach-omap2/cpuidle34xx.c
+++ b/arch/arm/mach-omap2/cpuidle34xx.c
@@ -107,8 +107,6 @@ static int __omap3_enter_idle(struct cpuidle_device *dev,
 {
struct omap3_idle_statedata *cx = &omap3_idle_data[index];
 
-   local_fiq_disable();
-
if (omap_irq_pending() || need_resched())
goto return_sleep_time;
 
@@ -143,7 +141,6 @@ static int __omap3_enter_idle(struct cpuidle_device *dev,
clkdm_allow_idle(mpu_pd->pwrdm_clkdms[0]);
 
 return_sleep_time:
-   local_fiq_enable();
 
return index;
 }
diff --git a/arch/arm/mach-omap2/cpuidle44xx.c 
b/arch/arm/mach-omap2/cpuidle44xx.c
index d639aef..944e64a 100644
--- a/arch/arm/mach-omap2/cpuidle44xx.c
+++ b/arch/arm/mach-omap2/cpuidle44xx.c
@@ -70,10 +70,7 @@ static int omap4_enter_idle_simple(struct cpuidle_device 
*dev,
struct cpuidle_driver *drv,
int index)
 {
-   local_fiq_disable();
omap_do_wfi();
-   local_fiq_enable();
-
return index;
 }
 
@@ -84,8 +81,6 @@ static int omap4_enter_idle_coupled(struct cpuidle_device 
*dev,
struct omap4_idle_statedata *cx = &omap4_idle_data[index];
int cpu_id = smp_processor_id();
 
-   local_fiq_disable();
-
/*
 * CPU0 has to wait and stay ON until CPU1 is OFF state.
 * This is necessary to honour hardware recommondation
@@ -158,8 +153,6 @@ fail:
cpuidle_coupled_parallel_barrier(dev, &abort_barrier);
cpu_done[dev->cpu] = false;
 
-   local_fiq_enable();
-
return index;
 }
 
diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c
index b59d939..ce956b0 100644
--- a/arch/arm/mach-omap2/pm24xx.c
+++ b/arch/arm/mach-omap2/pm24xx.c
@@ -200,22 +200,17 @@ static int omap2_can_sleep(void)
 
 static void omap2_pm_idle(void)
 {
-   local_fiq_disable();
-
if (!omap2_can_sleep()) {
if (omap_irq_pending())
-   goto out;
+   return;
omap2_enter_mpu_retention();
-   goto out;
+   return;
}
 
if (omap_irq_pending())
-   goto out;
+   return;
 
omap2_enter_full_retention();
-
-out:
-   local_fiq_enable();
 }
 
 static void __init prcm_setup_regs(void)
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index 2d93d8b..c018593 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -346,19 +346,14 @@ void omap_sram_idle(void)
 
 static void omap3_pm_idle(void)
 {
-   local_fiq_disable();
-
if (omap_irq_pending())
-   goto out;
+   return;
 
trace_cpu_idle(1, smp_processor_id());
 
omap_sram_idle();
 
trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id());
-
-out:
-   local_fiq_enable();
 }
 
 #ifdef CONFIG_SUSPEND
@@ -757,14 +752,12 @@ int __init omap3_pm_init(void)
pr_err("Memory allocation failed when allocating for 
secure sram context\n");
 
local_irq_disable();
-   local_fiq_disable();
 
omap_dma_global_con

Re: [PATCH 3/9] ARM: OMAP2+: PM: Remove bogus fiq_[enable/disable] tuple

2013-03-27 Thread Santosh Shilimkar
On Thursday 28 March 2013 12:06 AM, Kevin Hilman wrote:
> Santosh Shilimkar  writes:
> 
>> On OMAP platform, FIQ is reserved for secure environment only. If at all
>> the FIQ needs to be disabled, it involves going through security
>> API call. Hence the local_fiq_[enable/disable]() in the OMAP code is bogus.
>>
>> So just get rid of it.
> 
> What about GP devices?
> 
On GP devices as well FIQ isn't available for non-secure software since
its marked secure only in ROM initialization. There has been heavy
debate on this since some customers wanted to have it available
for debug purpose but some other work-around was done rather
than opening it for public.

Regards,
Santosh

--
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 3/9] ARM: OMAP2+: PM: Remove bogus fiq_[enable/disable] tuple

2013-03-27 Thread Kevin Hilman
Santosh Shilimkar  writes:

> On OMAP platform, FIQ is reserved for secure environment only. If at all
> the FIQ needs to be disabled, it involves going through security
> API call. Hence the local_fiq_[enable/disable]() in the OMAP code is bogus.
>
> So just get rid of it.

What about GP devices?

Kevin

> Signed-off-by: Santosh Shilimkar 
> ---
>  arch/arm/mach-omap2/cpuidle34xx.c |4 
>  arch/arm/mach-omap2/cpuidle44xx.c |7 ---
>  arch/arm/mach-omap2/pm24xx.c  |   11 +++
>  arch/arm/mach-omap2/pm34xx.c  |9 +
>  arch/arm/mach-omap2/pm44xx.c  |4 
>  5 files changed, 4 insertions(+), 31 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/cpuidle34xx.c 
> b/arch/arm/mach-omap2/cpuidle34xx.c
> index 22590db..f61b28c 100644
> --- a/arch/arm/mach-omap2/cpuidle34xx.c
> +++ b/arch/arm/mach-omap2/cpuidle34xx.c
> @@ -82,8 +82,6 @@ static int __omap3_enter_idle(struct cpuidle_device *dev,
>   struct omap3_idle_statedata *cx = &omap3_idle_data[index];
>   u32 mpu_state = cx->mpu_state, core_state = cx->core_state;
>  
> - local_fiq_disable();
> -
>   pwrdm_set_next_pwrst(mpu_pd, mpu_state);
>   pwrdm_set_next_pwrst(core_pd, core_state);
>  
> @@ -121,8 +119,6 @@ static int __omap3_enter_idle(struct cpuidle_device *dev,
>  
>  return_sleep_time:
>  
> - local_fiq_enable();
> -
>   return index;
>  }
>  
> diff --git a/arch/arm/mach-omap2/cpuidle44xx.c 
> b/arch/arm/mach-omap2/cpuidle44xx.c
> index d639aef..944e64a 100644
> --- a/arch/arm/mach-omap2/cpuidle44xx.c
> +++ b/arch/arm/mach-omap2/cpuidle44xx.c
> @@ -70,10 +70,7 @@ static int omap4_enter_idle_simple(struct cpuidle_device 
> *dev,
>   struct cpuidle_driver *drv,
>   int index)
>  {
> - local_fiq_disable();
>   omap_do_wfi();
> - local_fiq_enable();
> -
>   return index;
>  }
>  
> @@ -84,8 +81,6 @@ static int omap4_enter_idle_coupled(struct cpuidle_device 
> *dev,
>   struct omap4_idle_statedata *cx = &omap4_idle_data[index];
>   int cpu_id = smp_processor_id();
>  
> - local_fiq_disable();
> -
>   /*
>* CPU0 has to wait and stay ON until CPU1 is OFF state.
>* This is necessary to honour hardware recommondation
> @@ -158,8 +153,6 @@ fail:
>   cpuidle_coupled_parallel_barrier(dev, &abort_barrier);
>   cpu_done[dev->cpu] = false;
>  
> - local_fiq_enable();
> -
>   return index;
>  }
>  
> diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c
> index c333fa6..af29c31 100644
> --- a/arch/arm/mach-omap2/pm24xx.c
> +++ b/arch/arm/mach-omap2/pm24xx.c
> @@ -213,22 +213,17 @@ static int omap2_can_sleep(void)
>  
>  static void omap2_pm_idle(void)
>  {
> - local_fiq_disable();
> -
>   if (!omap2_can_sleep()) {
>   if (omap_irq_pending())
> - goto out;
> + return;
>   omap2_enter_mpu_retention();
> - goto out;
> + return;
>   }
>  
>   if (omap_irq_pending())
> - goto out;
> + return;
>  
>   omap2_enter_full_retention();
> -
> -out:
> - local_fiq_enable();
>  }
>  
>  static void __init prcm_setup_regs(void)
> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
> index 7be3622..2f7e58e 100644
> --- a/arch/arm/mach-omap2/pm34xx.c
> +++ b/arch/arm/mach-omap2/pm34xx.c
> @@ -346,10 +346,8 @@ void omap_sram_idle(void)
>  
>  static void omap3_pm_idle(void)
>  {
> - local_fiq_disable();
> -
>   if (omap_irq_pending())
> - goto out;
> + return;
>  
>   trace_power_start(POWER_CSTATE, 1, smp_processor_id());
>   trace_cpu_idle(1, smp_processor_id());
> @@ -358,9 +356,6 @@ static void omap3_pm_idle(void)
>  
>   trace_power_end(smp_processor_id());
>   trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id());
> -
> -out:
> - local_fiq_enable();
>  }
>  
>  #ifdef CONFIG_SUSPEND
> @@ -759,14 +754,12 @@ int __init omap3_pm_init(void)
>   pr_err("Memory allocation failed when allocating for 
> secure sram context\n");
>  
>   local_irq_disable();
> - local_fiq_disable();
>  
>   omap_dma_global_context_save();
>   omap3_save_secure_ram_context();
>   omap_dma_global_context_restore();
>  
>   local_irq_enable();
> - local_fiq_enable();
>   }
>  
>   omap3_save_scratchpad_contents();
> diff --git a/arch/arm/mach-omap2/pm44xx.c b/arch/arm/mach-omap2/pm44xx.c
> index aa6fd98..a96ae57 100644
> --- a/arch/arm/mach-omap2/pm44xx.c
> +++ b/arch/arm/mach-omap2/pm44xx.c
> @@ -121,11 +121,7 @@ static int __init pwrdms_setup(struct powerdomain 
> *pwrdm, void *unused)
>   */
>  static void omap_default_idle(void)
>  {
> - local_fiq_disable();
> -
>   omap_do_wfi();
> -
> - local_fiq_enable();
>  }
>  
>  /**
--
To unsubscribe from this list: send the line "unsubscribe li

[PATCH 3/9] ARM: OMAP2+: PM: Remove bogus fiq_[enable/disable] tuple

2013-02-20 Thread Santosh Shilimkar
On OMAP platform, FIQ is reserved for secure environment only. If at all
the FIQ needs to be disabled, it involves going through security
API call. Hence the local_fiq_[enable/disable]() in the OMAP code is bogus.

So just get rid of it.

Signed-off-by: Santosh Shilimkar 
---
 arch/arm/mach-omap2/cpuidle34xx.c |4 
 arch/arm/mach-omap2/cpuidle44xx.c |7 ---
 arch/arm/mach-omap2/pm24xx.c  |   11 +++
 arch/arm/mach-omap2/pm34xx.c  |9 +
 arch/arm/mach-omap2/pm44xx.c  |4 
 5 files changed, 4 insertions(+), 31 deletions(-)

diff --git a/arch/arm/mach-omap2/cpuidle34xx.c 
b/arch/arm/mach-omap2/cpuidle34xx.c
index 22590db..f61b28c 100644
--- a/arch/arm/mach-omap2/cpuidle34xx.c
+++ b/arch/arm/mach-omap2/cpuidle34xx.c
@@ -82,8 +82,6 @@ static int __omap3_enter_idle(struct cpuidle_device *dev,
struct omap3_idle_statedata *cx = &omap3_idle_data[index];
u32 mpu_state = cx->mpu_state, core_state = cx->core_state;
 
-   local_fiq_disable();
-
pwrdm_set_next_pwrst(mpu_pd, mpu_state);
pwrdm_set_next_pwrst(core_pd, core_state);
 
@@ -121,8 +119,6 @@ static int __omap3_enter_idle(struct cpuidle_device *dev,
 
 return_sleep_time:
 
-   local_fiq_enable();
-
return index;
 }
 
diff --git a/arch/arm/mach-omap2/cpuidle44xx.c 
b/arch/arm/mach-omap2/cpuidle44xx.c
index d639aef..944e64a 100644
--- a/arch/arm/mach-omap2/cpuidle44xx.c
+++ b/arch/arm/mach-omap2/cpuidle44xx.c
@@ -70,10 +70,7 @@ static int omap4_enter_idle_simple(struct cpuidle_device 
*dev,
struct cpuidle_driver *drv,
int index)
 {
-   local_fiq_disable();
omap_do_wfi();
-   local_fiq_enable();
-
return index;
 }
 
@@ -84,8 +81,6 @@ static int omap4_enter_idle_coupled(struct cpuidle_device 
*dev,
struct omap4_idle_statedata *cx = &omap4_idle_data[index];
int cpu_id = smp_processor_id();
 
-   local_fiq_disable();
-
/*
 * CPU0 has to wait and stay ON until CPU1 is OFF state.
 * This is necessary to honour hardware recommondation
@@ -158,8 +153,6 @@ fail:
cpuidle_coupled_parallel_barrier(dev, &abort_barrier);
cpu_done[dev->cpu] = false;
 
-   local_fiq_enable();
-
return index;
 }
 
diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c
index c333fa6..af29c31 100644
--- a/arch/arm/mach-omap2/pm24xx.c
+++ b/arch/arm/mach-omap2/pm24xx.c
@@ -213,22 +213,17 @@ static int omap2_can_sleep(void)
 
 static void omap2_pm_idle(void)
 {
-   local_fiq_disable();
-
if (!omap2_can_sleep()) {
if (omap_irq_pending())
-   goto out;
+   return;
omap2_enter_mpu_retention();
-   goto out;
+   return;
}
 
if (omap_irq_pending())
-   goto out;
+   return;
 
omap2_enter_full_retention();
-
-out:
-   local_fiq_enable();
 }
 
 static void __init prcm_setup_regs(void)
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index 7be3622..2f7e58e 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -346,10 +346,8 @@ void omap_sram_idle(void)
 
 static void omap3_pm_idle(void)
 {
-   local_fiq_disable();
-
if (omap_irq_pending())
-   goto out;
+   return;
 
trace_power_start(POWER_CSTATE, 1, smp_processor_id());
trace_cpu_idle(1, smp_processor_id());
@@ -358,9 +356,6 @@ static void omap3_pm_idle(void)
 
trace_power_end(smp_processor_id());
trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id());
-
-out:
-   local_fiq_enable();
 }
 
 #ifdef CONFIG_SUSPEND
@@ -759,14 +754,12 @@ int __init omap3_pm_init(void)
pr_err("Memory allocation failed when allocating for 
secure sram context\n");
 
local_irq_disable();
-   local_fiq_disable();
 
omap_dma_global_context_save();
omap3_save_secure_ram_context();
omap_dma_global_context_restore();
 
local_irq_enable();
-   local_fiq_enable();
}
 
omap3_save_scratchpad_contents();
diff --git a/arch/arm/mach-omap2/pm44xx.c b/arch/arm/mach-omap2/pm44xx.c
index aa6fd98..a96ae57 100644
--- a/arch/arm/mach-omap2/pm44xx.c
+++ b/arch/arm/mach-omap2/pm44xx.c
@@ -121,11 +121,7 @@ static int __init pwrdms_setup(struct powerdomain *pwrdm, 
void *unused)
  */
 static void omap_default_idle(void)
 {
-   local_fiq_disable();
-
omap_do_wfi();
-
-   local_fiq_enable();
 }
 
 /**
-- 
1.7.9.5

--
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