mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-23 05:08:24 +00:00
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
1 changed files with 6 additions and 3 deletions
|
@ -242,7 +242,6 @@ static void boot_prep_linux(bootm_headers_t *images)
|
||||||
printf("FDT and ATAGS support not compiled in - hanging\n");
|
printf("FDT and ATAGS support not compiled in - hanging\n");
|
||||||
hang();
|
hang();
|
||||||
}
|
}
|
||||||
do_nonsec_virt_switch();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Subcommand: GO */
|
/* Subcommand: GO */
|
||||||
|
@ -260,8 +259,10 @@ static void boot_jump_linux(bootm_headers_t *images, int flag)
|
||||||
|
|
||||||
announce_and_cleanup(fake);
|
announce_and_cleanup(fake);
|
||||||
|
|
||||||
if (!fake)
|
if (!fake) {
|
||||||
|
do_nonsec_virt_switch();
|
||||||
kernel_entry(images->ft_addr);
|
kernel_entry(images->ft_addr);
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
unsigned long machid = gd->bd->bi_arch_number;
|
unsigned long machid = gd->bd->bi_arch_number;
|
||||||
char *s;
|
char *s;
|
||||||
|
@ -287,8 +288,10 @@ static void boot_jump_linux(bootm_headers_t *images, int flag)
|
||||||
else
|
else
|
||||||
r2 = gd->bd->bi_boot_params;
|
r2 = gd->bd->bi_boot_params;
|
||||||
|
|
||||||
if (!fake)
|
if (!fake) {
|
||||||
|
do_nonsec_virt_switch();
|
||||||
kernel_entry(0, machid, r2);
|
kernel_entry(0, machid, r2);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue