LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Krzysztof Kozlowski <k.kozlowski@samsung.com>
To: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>,
	Kukjin Kim <kgene@kernel.org>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	linux-pm@vger.kernel.org, linux-samsung-soc@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	Kyungmin Park <kyungmin.park@samsung.com>
Subject: Re: [PATCH] ARM: EXYNOS: cpuidle: Fix build breakage on !SMP
Date: Thu, 05 Feb 2015 08:12:20 +0100	[thread overview]
Message-ID: <1423120340.29408.0.camel@AMDC1943> (raw)
In-Reply-To: <8043345.BDfdhXvZOx@amdc1032>

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.kozlowski@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.zolnierkie@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.kozlowski@samsung.com>
> Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@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
> ===================================================================
> --- a/drivers/cpuidle/cpuidle-exynos.c	2015-02-04 18:30:32.935819577 +0100
> +++ b/drivers/cpuidle/cpuidle-exynos.c	2015-02-04 18:46:01.619805400 +0100
> @@ -117,7 +117,8 @@ static int exynos_cpuidle_probe(struct p
>  {
>  	int ret;
>  
> -	if (of_machine_is_compatible("samsung,exynos4210")) {
> +	if (IS_ENABLED(CONFIG_SMP) &&
> +	    of_machine_is_compatible("samsung,exynos4210")) {
>  		exynos_cpuidle_pdata = pdev->dev.platform_data;
>  
>  		ret = cpuidle_register(&exynos_coupled_idle_driver,


  reply	other threads:[~2015-02-05  7:12 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-04 10:27 Krzysztof Kozlowski
2015-02-04 18:07 ` Bartlomiej Zolnierkiewicz
2015-02-05  7:12   ` Krzysztof Kozlowski [this message]
2015-02-05 12:32     ` Bartlomiej Zolnierkiewicz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1423120340.29408.0.camel@AMDC1943 \
    --to=k.kozlowski@samsung.com \
    --cc=b.zolnierkie@samsung.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=kgene@kernel.org \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=m.szyprowski@samsung.com \
    --cc=rjw@rjwysocki.net \
    --subject='Re: [PATCH] ARM: EXYNOS: cpuidle: Fix build breakage on '\!'SMP' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).