Message ID | CAFULf_wD-qNq5=X5pv=E8+Q2wR-N2n2_z=txL5t7EwF4dQrLYg@mail.gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Forget this one. I did get this problem compiling a randconfig, but the explanation and the subsequent fix is incorrect. Sorry about the noise. Bjarne On Sun, Aug 14, 2011 at 6:41 PM, Bjarne Steinsbo <bsteinsbo@gmail.com> wrote: > It's conceivable to configure a kernel with CONFIG_PM, but without > CONFIG_PM_SLEEP. > > - If CONFIG_PM is defined, pm34xx.c calls cpu_suspend() in line 430. > - cpu_suspend() is a static inline defined in asm/suspend.h, calling > __cpu_suspend() to do the real job. > - But __cpu_suspend (in kernel/sleep.S) is only linked in if > CONFIG_PM_SLEEP is defined. > > The result is a link error: > arch/arm/mach-omap2/built-in.o: In function `cpu_suspend': > arch/arm/include/asm/suspend.h:17: undefined reference to `__cpu_suspend' > > There is a similar dependency error with a call to cpu_resume() in > sleep34xx.S, line 534. > > Since the code obviously assumes that PM_SLEEP should be defined if > PM, change the omap2 Kconfig > to reflect this. The existing selection of PM_OPP if PM serves as a > precedent for this solution. > > When selecting PM_SLEEP, also select SUSPEND, which PM_SLEEP depends on. > > Signed-off-by: Bjarne Steinsbo <bsteinsbo@gmail.com> > --- > arch/arm/mach-omap2/Kconfig | 2 ++ > 1 files changed, 2 insertions(+), 0 deletions(-) > > diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig > index 57b66d5..04a3a83 100644 > --- a/arch/arm/mach-omap2/Kconfig > +++ b/arch/arm/mach-omap2/Kconfig > @@ -36,6 +36,8 @@ config ARCH_OMAP3 > select ARM_L1_CACHE_SHIFT_6 if !ARCH_OMAP4 > select ARCH_HAS_OPP > select PM_OPP if PM > + select SUSPEND if PM > + select PM_SLEEP if PM > > config ARCH_OMAP4 > bool "TI OMAP4" > -- > 1.7.1 > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index 57b66d5..04a3a83 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig @@ -36,6 +36,8 @@ config ARCH_OMAP3 select ARM_L1_CACHE_SHIFT_6 if !ARCH_OMAP4 select ARCH_HAS_OPP select PM_OPP if PM + select SUSPEND if PM + select PM_SLEEP if PM config ARCH_OMAP4 bool "TI OMAP4"
It's conceivable to configure a kernel with CONFIG_PM, but without CONFIG_PM_SLEEP. - If CONFIG_PM is defined, pm34xx.c calls cpu_suspend() in line 430. - cpu_suspend() is a static inline defined in asm/suspend.h, calling __cpu_suspend() to do the real job. - But __cpu_suspend (in kernel/sleep.S) is only linked in if CONFIG_PM_SLEEP is defined. The result is a link error: arch/arm/mach-omap2/built-in.o: In function `cpu_suspend': arch/arm/include/asm/suspend.h:17: undefined reference to `__cpu_suspend' There is a similar dependency error with a call to cpu_resume() in sleep34xx.S, line 534. Since the code obviously assumes that PM_SLEEP should be defined if PM, change the omap2 Kconfig to reflect this. The existing selection of PM_OPP if PM serves as a precedent for this solution. When selecting PM_SLEEP, also select SUSPEND, which PM_SLEEP depends on. Signed-off-by: Bjarne Steinsbo <bsteinsbo@gmail.com> --- arch/arm/mach-omap2/Kconfig | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)