On Mon, Jun 6, 2016 at 11:43 AM, Chen-Yu Tsai <w...@csie.org> wrote: > Hi, > > On Mon, Jun 6, 2016 at 11:27 AM, Hongbo Zhang <macro.wav...@gmail.com> wrote: >> Hi York, >> Which version of u-boot do you use? I don't have such problem. >> I was using the latest u-boot (when I re-worked this patch set), it was >> e4a94ce Merge git://git.denx.de/u-boot-dm >> but there is some thing wrong that this version of u-boot cannot load >> my kernel properly, so I went a little backward to >> c7757d4 arm: meson: implement calls to secure monitor >> because I need Beniamino's commits. >> The above two patch sets are identical, and there is no such compiling >> error for me, and I've tested the later. > > CONFIG_MAX_CPUS is not defined for all platforms. > > On sunxi and mx7, we use CONFIG_ARMV7_PSCI_NR_CPUS. > > ChenYu >
Hi, Thanks for pointing it out, I see. That means we don't have a unique macro for number of CPUs, it is time to define it now, CONFIG_ARMV7_PSCI_NR_CPUS is better? > >> >> On Sat, Jun 4, 2016 at 3:44 AM, York Sun <york....@nxp.com> wrote: >>> On 06/02/2016 01:07 AM, macro.wav...@gmail.com wrote: >>>> From: Hongbo Zhang <hongbo.zh...@nxp.com> >>>> >>>> There are issues of legacy fuction psci_get_cpu_stack_top: >>>> >>>> First, the current algorithm arranges stacks from an fixed adress towards >>>> psci_text_end, if there are more CPUs, the stacks will overlap with psci >>>> text >>>> segment and even other segments. >>>> This patch places stacks from psci text segment towards highter address, >>>> and >>>> all the stack space is reserved, so overlap can be avoided. >>>> >>>> Second, even there is one word reserved in each stack for saving target >>>> PC, but >>>> this reserved space isn't used at all, the target PC is still saved to >>>> where >>>> the stack top pointer points. >>>> This patch doesn't reserve this word as before, new way of saving target PC >>>> will be introduced in following patch. >>>> >>>> Signed-off-by: Hongbo Zhang <hongbo.zh...@nxp.com> >>>> Signed-off-by: Wang Dongsheng <dongsheng.w...@nxp.com> >>>> --- >>>> arch/arm/cpu/armv7/psci.S | 10 +++++----- >>>> arch/arm/cpu/armv7/virt-dt.c | 9 +++++++-- >>>> arch/arm/include/asm/psci.h | 3 +++ >>>> 3 files changed, 15 insertions(+), 7 deletions(-) >>>> >>>> diff --git a/arch/arm/cpu/armv7/psci.S b/arch/arm/cpu/armv7/psci.S >>>> index 8e25300..91a1dd1 100644 >>>> --- a/arch/arm/cpu/armv7/psci.S >>>> +++ b/arch/arm/cpu/armv7/psci.S >>>> @@ -274,16 +274,16 @@ ENDPROC(psci_cpu_off_common) >>>> >>>> @ expects CPU ID in r0 and returns stack top in r0 >>>> ENTRY(psci_get_cpu_stack_top) >>>> - mov r5, #0x400 @ 1kB of stack per CPU >>>> - mul r0, r0, r5 >>>> + mov r5, #PSCI_PERCPU_STACK_SIZE @ 1kB of stack per CPU >>>> + add r0, r0, #1 >>>> + mul r0, r0, r5 @ offset of each stack >>>> >>>> ldr r5, =psci_text_end @ end of monitor text >>>> - add r5, r5, #0x2000 @ Skip two pages >>>> + add r5, r5, #0x1000 @ Skip one page >>>> lsr r5, r5, #12 @ Align to start of page >>>> lsl r5, r5, #12 >>>> - sub r5, r5, #4 @ reserve 1 word for target >>>> PC >>>> - sub r0, r5, r0 @ here's our stack! >>>> >>>> + add r0, r5, r0 @ here's our stack! >>>> bx lr >>>> ENDPROC(psci_get_cpu_stack_top) >>>> >>>> diff --git a/arch/arm/cpu/armv7/virt-dt.c b/arch/arm/cpu/armv7/virt-dt.c >>>> index 5e31891..4fe6f58 100644 >>>> --- a/arch/arm/cpu/armv7/virt-dt.c >>>> +++ b/arch/arm/cpu/armv7/virt-dt.c >>>> @@ -127,14 +127,19 @@ int armv7_apply_memory_carveout(u64 *start, u64 >>>> *size) >>>> >>>> int psci_update_dt(void *fdt) >>>> { >>>> + size_t sec_sz = __secure_end - __secure_start; >>>> +#ifdef CONFIG_ARMV7_PSCI >>>> + sec_sz += CONFIG_MAX_CPUS * PSCI_PERCPU_STACK_SIZE; >>>> + /* margin to align psci_text_end to page end*/ >>>> + sec_sz += 0x1000; >>>> +#endif >>> >>> This causes a compiling error >>> >>> +(mx7dsabresd) ../arch/arm/cpu/armv7/virt-dt.c: In function >>> ‘psci_update_dt’: >>> +(mx7dsabresd) ../arch/arm/cpu/armv7/virt-dt.c:132:12: error: >>> ‘CONFIG_MAX_CPUS’ >>> undeclared (first use in this function) >>> +(mx7dsabresd) ../arch/arm/cpu/armv7/virt-dt.c:132:12: note: each undeclared >>> identifier is reported only once for each function it appears in >>> >>> York _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot