[U-Boot] [PATCH] vxworks: fixed cpu enable using PSCI on armv8

Bin Meng bmeng.cn at gmail.com
Wed Mar 28 04:36:17 UTC 2018


Hi Vasyl,

On Wed, Mar 28, 2018 at 3:29 AM, Vasyl Vavrychuk <vvavrychuk at gmail.com> wrote:
> Without armv8_setup_psci register VBAR_EL3 is not set up property which
> makes SMC calls jump to invalid location.
>
> smp_kick_all_cpus is required to make slave cpus leave gic_wait_for_interrupt.
> Without this they will never pursue booting process.
>
> This implementation is very similiar to what is done in boot_jump_linux
> in arch/arm/lib/bootm.c file.
>
> Tested on VxWorks 7 release SR0520 2017-12-08.
>

On what board?

As I mentioned before, why do you want to use 'bootvx' to boot a
VxWorks 7 kernel? I believe VxWorks 7 ARM kernel is loaded via
'bootm'. See doc/README.vxworks.

> Signed-off-by: Vasyl Vavrychuk <vasyl.vavrychuk at globallogic.com>
> ---
>  cmd/elf.c | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/cmd/elf.c b/cmd/elf.c
> index 5745a389da..db690fc619 100644
> --- a/cmd/elf.c
> +++ b/cmd/elf.c
> @@ -372,6 +372,11 @@ int do_bootvx(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>         printf("## Starting vxWorks at 0x%08lx ...\n", addr);
>
>         dcache_disable();
> +#if defined(CONFIG_ARM64) && defined(CONFIG_ARMV8_PSCI)
> +       armv8_setup_psci();
> +       smp_kick_all_cpus();

What about ARMv8 32-bit? What about ARMv7? Should we call
smp_kick_all_cpus() for ARMv7 as well? Seems to me the logic of
#ifdefs here needs to be tuned.

> +#endif
> +
>  #ifdef CONFIG_X86
>         /* VxWorks on x86 uses stack to pass parameters */
>         ((asmlinkage void (*)(int))addr)(0);
> --

Regards,
Bin


More information about the U-Boot mailing list