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)