[GIT PULL 3/3] 3rd Round of Exynos-PM-2 Updates for v3.18

Bartlomiej Zolnierkiewicz b.zolnierkie at samsung.com
Thu Oct 2 06:35:18 PDT 2014


Hi,

On Wednesday, October 01, 2014 08:31:47 PM Arnd Bergmann wrote:
> On Wednesday 01 October 2014 18:49:20 Bartlomiej Zolnierkiewicz wrote:
> > On Wednesday, October 01, 2014 06:01:29 PM Arnd Bergmann wrote:
> > > On Thursday 25 September 2014, Kukjin Kim wrote:
> > > > Exynos 2nd PM related updates for v3.18
> > > > 
> > > > - Firmware supporting suspend and resume to excute of low
> > > >    level operations to enter and leave power mode for exynos
> > > >    : introduce suspend() and resume() firmware operations
> > > > 
> > > > - Fix AFTR mode on boards with secure firmware enabled and
> > > >    allows exynos cpuidle driver usage on exynos4x12 SoCs
> > > > 
> > > > - Fix build with PM_SLEEP=n and ARM_EXYNOS_CPUIDLE=y
> > > > 
> > > > - SWRESET is needed to boot secondary CPU on exynos3250
> > > > 
> > > 
> > > I needed another fixup to make this build, but I'm not sure about
> > > whether this is the right solution.
> > 
> > Could you please share the build errors and the used config?
> 
> I'm building with an additional series that works around all known
> build failures in randconfig, so it's possible that the configuration
> causes other problems in your tree, or that one of my own patches
> introduces the problem and the exynos tree by itself is fine.
> 
> This is the build error I get:
> 
> arch/arm/mach-exynos/built-in.o: In function `exynos_suspend':
> :(.text+0x294): undefined reference to `cpu_suspend'
> :(.text+0x29c): undefined reference to `cpu_suspend'
> arch/arm/mach-exynos/built-in.o: In function `skip_cp15':
> :(.data+0x58): undefined reference to `cpu_resume'
> arch/arm/mach-exynos/built-in.o: In function `cp15_save_power':
> :(.data+0x70): undefined reference to `cpu_resume'
> 
> The defconfig file is attached, the details don't matter to
> other readers, except that it has CONFIG_ARM_CPU_SUSPEND
> disabled, which means that sleep.S can't be linked properly.

It turned out that the breakage came through Exynos tree.  "ARM:
EXYNOS: Add support for firmware-assisted suspend/resume" added to
arch/arm/mach-exynos/firmware.c new references to functions from
arch/arm/mach-exynos/sleep.S causing the CONFIG_PM_SLEEP=n build
breakage.  Then "ARM: EXYNOS: Fix build with PM_SLEEP=n and
ARM_EXYNOS_CPUIDLE=y" tried to fix the CONFIG_PM_SLEEP=n issue by
always building sleep.S causing in turn the CONFIG_ARM_CPU_SUSPEND=n
build breakage.  I have not noticed the problem earlier because I
have overlooked the fact that cpu_suspend() is available only when
CONFIG_ARM_CPU_SUSPEND=y and in all configs tested by me it was on
(it gets disabled only when both CONFIG_PM and CONFIG_MCPM are off).
Sorry for that.

Your patch seems to be a correct fix except that the resume entry
should use IS_ENABLED(CONFIG_EXYNOS_CPU_SUSPEND) instead of
IS_ENABLED(CONFIG_PM_SLEEP) as resume firmware operations is also
used by Exynos cpuidle support.

How should we proceed further to get this tree merged?

PS What is interesting in your defconfig is that it has CONFIG_MCPM
enabled but CONFIG_ARM_CPU_SUSPEND is disabled so there are probably
some MPCM related changes in your tree.

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics




More information about the linux-arm-kernel mailing list