Re: [PATCH] ARM: EXYNOS: cpuidle: Fix build breakage on !SMP

2015-02-05 Thread Bartlomiej Zolnierkiewicz

Hi,

On Thursday, February 05, 2015 08:12:20 AM Krzysztof Kozlowski wrote:
 On śro, 2015-02-04 at 19:07 +0100, Bartlomiej Zolnierkiewicz wrote:
  Hi,
  
  On Wednesday, February 04, 2015 11:27:26 AM Krzysztof Kozlowski wrote:
   The Exynos cpuidle driver has coupled cpuidle built-in so it cannot be
   built without SMP:
   
   arch/arm/mach-exynos/pm.c: In function ‘exynos_cpu0_enter_aftr’:
   arch/arm/mach-exynos/pm.c:246:4: error: implicit declaration of function 
   ‘arch_send_wakeup_ipi_mask’ [-Werror=implicit-function-declaration]
   arch/arm/mach-exynos/built-in.o: In function `exynos_pre_enter_aftr':
   ../arch/arm/mach-exynos/pm.c:300: undefined reference to 
   `cpu_boot_reg_base'
   arch/arm/mach-exynos/built-in.o: In function `exynos_cpu1_powerdown':
   ../arch/arm/mach-exynos/pm.c:282: undefined reference to 
   `exynos_cpu_power_down'
   
   Make the cpuidle driver depending on SMP because this will be the
   fastest way to fix build break without adding a bunch of ifdefs in few
   places.
  
  There shouldn't be a lot of new ifdefs (please see below) and I would
  very much prefer for cpuidle to stay supported also on UP kernels.
 
 Sure, I'm fine with your patch.

Thanks!

I tested it today with SMP  UP kernels on Origen4210 board and it works
fine in both cases (-next is fine on Origen4210, the problem I hit yestereday
was caused by a configuration issue on my side).

Kukjin, please apply it.  Thank you.

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung RD Institute Poland
Samsung Electronics

 Best regards,
 Krzysztof
 
  
   Signed-off-by: Krzysztof Kozlowski k.kozlow...@samsung.com
   ---
arch/arm/mach-exynos/pm.c   | 2 ++
drivers/cpuidle/Kconfig.arm | 3 ++-
2 files changed, 4 insertions(+), 1 deletion(-)
   
   diff --git a/arch/arm/mach-exynos/pm.c b/arch/arm/mach-exynos/pm.c
   index e6209dadc00d..17db00ff7f3a 100644
   --- a/arch/arm/mach-exynos/pm.c
   +++ b/arch/arm/mach-exynos/pm.c
   @@ -181,6 +181,7 @@ void exynos_enter_aftr(void)
 cpu_pm_exit();
}

   +#ifdef CONFIG_ARM_EXYNOS_CPUIDLE
static atomic_t cpu1_wakeup = ATOMIC_INIT(0);

static int exynos_cpu0_enter_aftr(void)
   @@ -302,3 +303,4 @@ struct cpuidle_exynos_data 
   cpuidle_coupled_exynos_data = {
 .pre_enter_aftr = exynos_pre_enter_aftr,
 .post_enter_aftr= exynos_post_enter_aftr,
};
   +#endif /* CONFIG_ARM_EXYNOS_CPUIDLE */
   diff --git a/drivers/cpuidle/Kconfig.arm b/drivers/cpuidle/Kconfig.arm
   index 8e07c9419153..5eb86a4f74d9 100644
   --- a/drivers/cpuidle/Kconfig.arm
   +++ b/drivers/cpuidle/Kconfig.arm
   @@ -55,7 +55,8 @@ config ARM_AT91_CPUIDLE
config ARM_EXYNOS_CPUIDLE
 bool Cpu Idle Driver for the Exynos processors
 depends on ARCH_EXYNOS
   - select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
   + depends on SMP
   + select ARCH_NEEDS_CPU_IDLE_COUPLED
 help
   Select this to enable cpuidle for Exynos processors
  
  How's about the patch below instead?  It builds fine for UP and SMP.
  I will do more testing tomorrow (unfortunately it seems that something
  else broke Origen4210 in -next).
  
  From: Bartlomiej Zolnierkiewicz b.zolnier...@samsung.com
  Subject: [PATCH] ARM: EXYNOS: cpuidle: Fix build breakage on !SMP
  
  The Exynos cpuidle driver has coupled cpuidle built-in so it cannot be
  built without SMP:
  
  arch/arm/mach-exynos/pm.c: In function ‘exynos_cpu0_enter_aftr’:
  arch/arm/mach-exynos/pm.c:246:4: error: implicit declaration of function 
  ‘arch_send_wakeup_ipi_mask’ [-Werror=implicit-function-declaration]
  arch/arm/mach-exynos/built-in.o: In function `exynos_pre_enter_aftr':
  ../arch/arm/mach-exynos/pm.c:300: undefined reference to `cpu_boot_reg_base'
  arch/arm/mach-exynos/built-in.o: In function `exynos_cpu1_powerdown':
  ../arch/arm/mach-exynos/pm.c:282: undefined reference to 
  `exynos_cpu_power_down'
  
  Fix it by adding missing checks for SMP.
  
  Reported-by: Krzysztof Kozlowski k.kozlow...@samsung.com
  Signed-off-by: Bartlomiej Zolnierkiewicz b.zolnier...@samsung.com
  ---
   arch/arm/mach-exynos/exynos.c|2 +-
   arch/arm/mach-exynos/pm.c|2 ++
   drivers/cpuidle/cpuidle-exynos.c |3 ++-
   3 files changed, 5 insertions(+), 2 deletions(-)
  
  Index: b/arch/arm/mach-exynos/exynos.c
  ===
  --- a/arch/arm/mach-exynos/exynos.c 2015-02-04 18:30:23.555819717 +0100
  +++ b/arch/arm/mach-exynos/exynos.c 2015-02-04 18:43:23.539807815 +0100
  @@ -211,7 +211,7 @@ static void __init exynos_dt_machine_ini
  if (!IS_ENABLED(CONFIG_SMP))
  exynos_sysram_init();
   
  -#ifdef CONFIG_ARM_EXYNOS_CPUIDLE
  +#if defined(CONFIG_SMP)  defined(CONFIG_ARM_EXYNOS_CPUIDLE)
  if (of_machine_is_compatible(samsung,exynos4210))
  exynos_cpuidle.dev.platform_data = cpuidle_coupled_exynos_data;
   #endif
  Index: b/arch/arm/mach-exynos/pm.c

Re: [PATCH] ARM: EXYNOS: cpuidle: Fix build breakage on !SMP

2015-02-04 Thread Bartlomiej Zolnierkiewicz

Hi,

On Wednesday, February 04, 2015 11:27:26 AM Krzysztof Kozlowski wrote:
 The Exynos cpuidle driver has coupled cpuidle built-in so it cannot be
 built without SMP:
 
 arch/arm/mach-exynos/pm.c: In function ‘exynos_cpu0_enter_aftr’:
 arch/arm/mach-exynos/pm.c:246:4: error: implicit declaration of function 
 ‘arch_send_wakeup_ipi_mask’ [-Werror=implicit-function-declaration]
 arch/arm/mach-exynos/built-in.o: In function `exynos_pre_enter_aftr':
 ../arch/arm/mach-exynos/pm.c:300: undefined reference to `cpu_boot_reg_base'
 arch/arm/mach-exynos/built-in.o: In function `exynos_cpu1_powerdown':
 ../arch/arm/mach-exynos/pm.c:282: undefined reference to 
 `exynos_cpu_power_down'
 
 Make the cpuidle driver depending on SMP because this will be the
 fastest way to fix build break without adding a bunch of ifdefs in few
 places.

There shouldn't be a lot of new ifdefs (please see below) and I would
very much prefer for cpuidle to stay supported also on UP kernels.

 Signed-off-by: Krzysztof Kozlowski k.kozlow...@samsung.com
 ---
  arch/arm/mach-exynos/pm.c   | 2 ++
  drivers/cpuidle/Kconfig.arm | 3 ++-
  2 files changed, 4 insertions(+), 1 deletion(-)
 
 diff --git a/arch/arm/mach-exynos/pm.c b/arch/arm/mach-exynos/pm.c
 index e6209dadc00d..17db00ff7f3a 100644
 --- a/arch/arm/mach-exynos/pm.c
 +++ b/arch/arm/mach-exynos/pm.c
 @@ -181,6 +181,7 @@ void exynos_enter_aftr(void)
   cpu_pm_exit();
  }
  
 +#ifdef CONFIG_ARM_EXYNOS_CPUIDLE
  static atomic_t cpu1_wakeup = ATOMIC_INIT(0);
  
  static int exynos_cpu0_enter_aftr(void)
 @@ -302,3 +303,4 @@ struct cpuidle_exynos_data cpuidle_coupled_exynos_data = {
   .pre_enter_aftr = exynos_pre_enter_aftr,
   .post_enter_aftr= exynos_post_enter_aftr,
  };
 +#endif /* CONFIG_ARM_EXYNOS_CPUIDLE */
 diff --git a/drivers/cpuidle/Kconfig.arm b/drivers/cpuidle/Kconfig.arm
 index 8e07c9419153..5eb86a4f74d9 100644
 --- a/drivers/cpuidle/Kconfig.arm
 +++ b/drivers/cpuidle/Kconfig.arm
 @@ -55,7 +55,8 @@ config ARM_AT91_CPUIDLE
  config ARM_EXYNOS_CPUIDLE
   bool Cpu Idle Driver for the Exynos processors
   depends on ARCH_EXYNOS
 - select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
 + depends on SMP
 + select ARCH_NEEDS_CPU_IDLE_COUPLED
   help
 Select this to enable cpuidle for Exynos processors

How's about the patch below instead?  It builds fine for UP and SMP.
I will do more testing tomorrow (unfortunately it seems that something
else broke Origen4210 in -next).

From: Bartlomiej Zolnierkiewicz b.zolnier...@samsung.com
Subject: [PATCH] ARM: EXYNOS: cpuidle: Fix build breakage on !SMP

The Exynos cpuidle driver has coupled cpuidle built-in so it cannot be
built without SMP:

arch/arm/mach-exynos/pm.c: In function ‘exynos_cpu0_enter_aftr’:
arch/arm/mach-exynos/pm.c:246:4: error: implicit declaration of function 
‘arch_send_wakeup_ipi_mask’ [-Werror=implicit-function-declaration]
arch/arm/mach-exynos/built-in.o: In function `exynos_pre_enter_aftr':
../arch/arm/mach-exynos/pm.c:300: undefined reference to `cpu_boot_reg_base'
arch/arm/mach-exynos/built-in.o: In function `exynos_cpu1_powerdown':
../arch/arm/mach-exynos/pm.c:282: undefined reference to `exynos_cpu_power_down'

Fix it by adding missing checks for SMP.

Reported-by: Krzysztof Kozlowski k.kozlow...@samsung.com
Signed-off-by: Bartlomiej Zolnierkiewicz b.zolnier...@samsung.com
---
 arch/arm/mach-exynos/exynos.c|2 +-
 arch/arm/mach-exynos/pm.c|2 ++
 drivers/cpuidle/cpuidle-exynos.c |3 ++-
 3 files changed, 5 insertions(+), 2 deletions(-)

Index: b/arch/arm/mach-exynos/exynos.c
===
--- a/arch/arm/mach-exynos/exynos.c 2015-02-04 18:30:23.555819717 +0100
+++ b/arch/arm/mach-exynos/exynos.c 2015-02-04 18:43:23.539807815 +0100
@@ -211,7 +211,7 @@ static void __init exynos_dt_machine_ini
if (!IS_ENABLED(CONFIG_SMP))
exynos_sysram_init();
 
-#ifdef CONFIG_ARM_EXYNOS_CPUIDLE
+#if defined(CONFIG_SMP)  defined(CONFIG_ARM_EXYNOS_CPUIDLE)
if (of_machine_is_compatible(samsung,exynos4210))
exynos_cpuidle.dev.platform_data = cpuidle_coupled_exynos_data;
 #endif
Index: b/arch/arm/mach-exynos/pm.c
===
--- a/arch/arm/mach-exynos/pm.c 2015-02-04 18:30:23.563819719 +0100
+++ b/arch/arm/mach-exynos/pm.c 2015-02-04 18:47:32.951804008 +0100
@@ -181,6 +181,7 @@ void exynos_enter_aftr(void)
cpu_pm_exit();
 }
 
+#if defined(CONFIG_SMP)  defined(CONFIG_ARM_EXYNOS_CPUIDLE)
 static atomic_t cpu1_wakeup = ATOMIC_INIT(0);
 
 static int exynos_cpu0_enter_aftr(void)
@@ -302,3 +303,4 @@ struct cpuidle_exynos_data cpuidle_coupl
.pre_enter_aftr = exynos_pre_enter_aftr,
.post_enter_aftr= exynos_post_enter_aftr,
 };
+#endif /* CONFIG_SMP  CONFIG_ARM_EXYNOS_CPUIDLE */
Index: b/drivers/cpuidle/cpuidle-exynos.c

Re: [PATCH] ARM: EXYNOS: cpuidle: Fix build breakage on !SMP

2015-02-04 Thread Krzysztof Kozlowski
On śro, 2015-02-04 at 19:07 +0100, Bartlomiej Zolnierkiewicz wrote:
 Hi,
 
 On Wednesday, February 04, 2015 11:27:26 AM Krzysztof Kozlowski wrote:
  The Exynos cpuidle driver has coupled cpuidle built-in so it cannot be
  built without SMP:
  
  arch/arm/mach-exynos/pm.c: In function ‘exynos_cpu0_enter_aftr’:
  arch/arm/mach-exynos/pm.c:246:4: error: implicit declaration of function 
  ‘arch_send_wakeup_ipi_mask’ [-Werror=implicit-function-declaration]
  arch/arm/mach-exynos/built-in.o: In function `exynos_pre_enter_aftr':
  ../arch/arm/mach-exynos/pm.c:300: undefined reference to `cpu_boot_reg_base'
  arch/arm/mach-exynos/built-in.o: In function `exynos_cpu1_powerdown':
  ../arch/arm/mach-exynos/pm.c:282: undefined reference to 
  `exynos_cpu_power_down'
  
  Make the cpuidle driver depending on SMP because this will be the
  fastest way to fix build break without adding a bunch of ifdefs in few
  places.
 
 There shouldn't be a lot of new ifdefs (please see below) and I would
 very much prefer for cpuidle to stay supported also on UP kernels.

Sure, I'm fine with your patch.

Best regards,
Krzysztof

 
  Signed-off-by: Krzysztof Kozlowski k.kozlow...@samsung.com
  ---
   arch/arm/mach-exynos/pm.c   | 2 ++
   drivers/cpuidle/Kconfig.arm | 3 ++-
   2 files changed, 4 insertions(+), 1 deletion(-)
  
  diff --git a/arch/arm/mach-exynos/pm.c b/arch/arm/mach-exynos/pm.c
  index e6209dadc00d..17db00ff7f3a 100644
  --- a/arch/arm/mach-exynos/pm.c
  +++ b/arch/arm/mach-exynos/pm.c
  @@ -181,6 +181,7 @@ void exynos_enter_aftr(void)
  cpu_pm_exit();
   }
   
  +#ifdef CONFIG_ARM_EXYNOS_CPUIDLE
   static atomic_t cpu1_wakeup = ATOMIC_INIT(0);
   
   static int exynos_cpu0_enter_aftr(void)
  @@ -302,3 +303,4 @@ struct cpuidle_exynos_data cpuidle_coupled_exynos_data 
  = {
  .pre_enter_aftr = exynos_pre_enter_aftr,
  .post_enter_aftr= exynos_post_enter_aftr,
   };
  +#endif /* CONFIG_ARM_EXYNOS_CPUIDLE */
  diff --git a/drivers/cpuidle/Kconfig.arm b/drivers/cpuidle/Kconfig.arm
  index 8e07c9419153..5eb86a4f74d9 100644
  --- a/drivers/cpuidle/Kconfig.arm
  +++ b/drivers/cpuidle/Kconfig.arm
  @@ -55,7 +55,8 @@ config ARM_AT91_CPUIDLE
   config ARM_EXYNOS_CPUIDLE
  bool Cpu Idle Driver for the Exynos processors
  depends on ARCH_EXYNOS
  -   select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
  +   depends on SMP
  +   select ARCH_NEEDS_CPU_IDLE_COUPLED
  help
Select this to enable cpuidle for Exynos processors
 
 How's about the patch below instead?  It builds fine for UP and SMP.
 I will do more testing tomorrow (unfortunately it seems that something
 else broke Origen4210 in -next).
 
 From: Bartlomiej Zolnierkiewicz b.zolnier...@samsung.com
 Subject: [PATCH] ARM: EXYNOS: cpuidle: Fix build breakage on !SMP
 
 The Exynos cpuidle driver has coupled cpuidle built-in so it cannot be
 built without SMP:
 
 arch/arm/mach-exynos/pm.c: In function ‘exynos_cpu0_enter_aftr’:
 arch/arm/mach-exynos/pm.c:246:4: error: implicit declaration of function 
 ‘arch_send_wakeup_ipi_mask’ [-Werror=implicit-function-declaration]
 arch/arm/mach-exynos/built-in.o: In function `exynos_pre_enter_aftr':
 ../arch/arm/mach-exynos/pm.c:300: undefined reference to `cpu_boot_reg_base'
 arch/arm/mach-exynos/built-in.o: In function `exynos_cpu1_powerdown':
 ../arch/arm/mach-exynos/pm.c:282: undefined reference to 
 `exynos_cpu_power_down'
 
 Fix it by adding missing checks for SMP.
 
 Reported-by: Krzysztof Kozlowski k.kozlow...@samsung.com
 Signed-off-by: Bartlomiej Zolnierkiewicz b.zolnier...@samsung.com
 ---
  arch/arm/mach-exynos/exynos.c|2 +-
  arch/arm/mach-exynos/pm.c|2 ++
  drivers/cpuidle/cpuidle-exynos.c |3 ++-
  3 files changed, 5 insertions(+), 2 deletions(-)
 
 Index: b/arch/arm/mach-exynos/exynos.c
 ===
 --- a/arch/arm/mach-exynos/exynos.c   2015-02-04 18:30:23.555819717 +0100
 +++ b/arch/arm/mach-exynos/exynos.c   2015-02-04 18:43:23.539807815 +0100
 @@ -211,7 +211,7 @@ static void __init exynos_dt_machine_ini
   if (!IS_ENABLED(CONFIG_SMP))
   exynos_sysram_init();
  
 -#ifdef CONFIG_ARM_EXYNOS_CPUIDLE
 +#if defined(CONFIG_SMP)  defined(CONFIG_ARM_EXYNOS_CPUIDLE)
   if (of_machine_is_compatible(samsung,exynos4210))
   exynos_cpuidle.dev.platform_data = cpuidle_coupled_exynos_data;
  #endif
 Index: b/arch/arm/mach-exynos/pm.c
 ===
 --- a/arch/arm/mach-exynos/pm.c   2015-02-04 18:30:23.563819719 +0100
 +++ b/arch/arm/mach-exynos/pm.c   2015-02-04 18:47:32.951804008 +0100
 @@ -181,6 +181,7 @@ void exynos_enter_aftr(void)
   cpu_pm_exit();
  }
  
 +#if defined(CONFIG_SMP)  defined(CONFIG_ARM_EXYNOS_CPUIDLE)
  static atomic_t cpu1_wakeup = ATOMIC_INIT(0);
  
  static int exynos_cpu0_enter_aftr(void)
 @@ -302,3 +303,4 @@ struct cpuidle_exynos_data cpuidle_coupl
   .pre_enter_aftr

[PATCH] ARM: EXYNOS: cpuidle: Fix build breakage on !SMP

2015-02-04 Thread Krzysztof Kozlowski
The Exynos cpuidle driver has coupled cpuidle built-in so it cannot be
built without SMP:

arch/arm/mach-exynos/pm.c: In function ‘exynos_cpu0_enter_aftr’:
arch/arm/mach-exynos/pm.c:246:4: error: implicit declaration of function 
‘arch_send_wakeup_ipi_mask’ [-Werror=implicit-function-declaration]
arch/arm/mach-exynos/built-in.o: In function `exynos_pre_enter_aftr':
../arch/arm/mach-exynos/pm.c:300: undefined reference to `cpu_boot_reg_base'
arch/arm/mach-exynos/built-in.o: In function `exynos_cpu1_powerdown':
../arch/arm/mach-exynos/pm.c:282: undefined reference to `exynos_cpu_power_down'

Make the cpuidle driver depending on SMP because this will be the
fastest way to fix build break without adding a bunch of ifdefs in few
places.

Signed-off-by: Krzysztof Kozlowski k.kozlow...@samsung.com
---
 arch/arm/mach-exynos/pm.c   | 2 ++
 drivers/cpuidle/Kconfig.arm | 3 ++-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/arch/arm/mach-exynos/pm.c b/arch/arm/mach-exynos/pm.c
index e6209dadc00d..17db00ff7f3a 100644
--- a/arch/arm/mach-exynos/pm.c
+++ b/arch/arm/mach-exynos/pm.c
@@ -181,6 +181,7 @@ void exynos_enter_aftr(void)
cpu_pm_exit();
 }
 
+#ifdef CONFIG_ARM_EXYNOS_CPUIDLE
 static atomic_t cpu1_wakeup = ATOMIC_INIT(0);
 
 static int exynos_cpu0_enter_aftr(void)
@@ -302,3 +303,4 @@ struct cpuidle_exynos_data cpuidle_coupled_exynos_data = {
.pre_enter_aftr = exynos_pre_enter_aftr,
.post_enter_aftr= exynos_post_enter_aftr,
 };
+#endif /* CONFIG_ARM_EXYNOS_CPUIDLE */
diff --git a/drivers/cpuidle/Kconfig.arm b/drivers/cpuidle/Kconfig.arm
index 8e07c9419153..5eb86a4f74d9 100644
--- a/drivers/cpuidle/Kconfig.arm
+++ b/drivers/cpuidle/Kconfig.arm
@@ -55,7 +55,8 @@ config ARM_AT91_CPUIDLE
 config ARM_EXYNOS_CPUIDLE
bool Cpu Idle Driver for the Exynos processors
depends on ARCH_EXYNOS
-   select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
+   depends on SMP
+   select ARCH_NEEDS_CPU_IDLE_COUPLED
help
  Select this to enable cpuidle for Exynos processors
 
-- 
1.9.1

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