ARM: HYP/non-sec: move switch to non-sec to the last boot phase
Having the switch to non-secure in the "prep" phase is causing all kind of troubles, as that stage can be called multiple times. Instead, move the switch to non-secure to the last possible phase, when there is no turning back anymore. Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Acked-by: Ian Campbell <ijc@hellion.org.uk>
This commit is contained in:
parent
b1cdd8baa1
commit
c19e0dd741
@ -242,7 +242,6 @@ static void boot_prep_linux(bootm_headers_t *images)
|
||||
printf("FDT and ATAGS support not compiled in - hanging\n");
|
||||
hang();
|
||||
}
|
||||
do_nonsec_virt_switch();
|
||||
}
|
||||
|
||||
/* Subcommand: GO */
|
||||
@ -260,8 +259,10 @@ static void boot_jump_linux(bootm_headers_t *images, int flag)
|
||||
|
||||
announce_and_cleanup(fake);
|
||||
|
||||
if (!fake)
|
||||
if (!fake) {
|
||||
do_nonsec_virt_switch();
|
||||
kernel_entry(images->ft_addr);
|
||||
}
|
||||
#else
|
||||
unsigned long machid = gd->bd->bi_arch_number;
|
||||
char *s;
|
||||
@ -287,8 +288,10 @@ static void boot_jump_linux(bootm_headers_t *images, int flag)
|
||||
else
|
||||
r2 = gd->bd->bi_boot_params;
|
||||
|
||||
if (!fake)
|
||||
if (!fake) {
|
||||
do_nonsec_virt_switch();
|
||||
kernel_entry(0, machid, r2);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user