[PATCH v4 20/28] ARM: owl: Implement CPU enable-method for S500
刘炜
liuwei at actions-semi.com
Mon Jul 3 01:13:34 PDT 2017
Hi, Andreas
Actually the owl_v7_invalidate_l1 is not needed, and the headsmp-owl.S file can be removed if pen release staff is not used. The CPUx can jump to secondary_startup directly by setting OWL_CPUx_ADDR register.
Because S900 is aarch64 architecture, it cannot boot CPUx simply by setting SPS register. It depends on the low-level arm-trusted-firmware. Linux kernel can boot up CPUx by PSCI interface, and the arm-trusted-firmware will power on CPUx, initialize EL3 register and jump to EL2 entry in Linux kernel.
Best Regards,
David Liu
-----Original Message-----
From: Andreas Färber [mailto:afaerber at suse.de]
Sent: Sunday, July 02, 2017 3:57 AM
To: 刘炜
Cc: Arnd Bergmann; Thomas Liau; Linux ARM; mp-cs; 张东风; 张天益; 96boards at ucrobotics.com; support at lemaker.org; Linux Kernel Mailing List; Russell King
Subject: Re: 答复: [PATCH v4 20/28] ARM: owl: Implement CPU enable-method for S500
Hi David,
Am 01.07.2017 um 06:42 schrieb 刘炜:
> OWL_CPUx_ADDR is the physical address of CPUx wakeup function.
> OWL_CPUx_FLAG is a valid flag of OWL_CPUx_ADDR.
>
> After CPUxs are wakeuped by SEV instruction, they will check their own OWL_CPUx_FLAG register. If the register vlaue is 0x55aa, CPUx will jump to OWL_CPUx_ADDR to boot up, otherwize go to sleep by WFE.
>
> So the pen release staff is not necessary, you can remove these code safely.
Thank you for the quick confirmation!
I have just tested a patch, and it appears to work.
Is owl_v7_invalidate_l1 necessary? mach-sunxi (that Arnd pointed to as
example) uses secondary_startup directly, without custom assembler code.
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/arch/arm/mach-actions/headsmp.S
> BTW: CPU2/3 must exit the power gate state before wakeup, and CPU1 is always power on and has no power gate control.
Yes, the S500 SPS was luckily documented in the manual. The power-gating
for CPU2/3 is already implemented:
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/arch/arm/mach-actions/platsmp.c
For S900 however SPS is sadly not documented... If you know who at
Actions Semi could help there, please also take a look at:
https://github.com/96boards/documentation/issues/59
Best regards,
Andreas
--
SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)
More information about the linux-arm-kernel
mailing list