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:
Marc Zyngier 2014-07-12 14:23:58 +01:00 committed by Albert ARIBAUD
parent b1cdd8baa1
commit c19e0dd741
1 changed files with 6 additions and 3 deletions

View File

@ -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
}