setup vwfi correctly on cpu0

parse_vwfi runs after init_traps on cpu0, potentially resulting in the
wrong HCR_EL2 for it. Secondary cpus boot after parse_vwfi, so in their
case init_traps will write the correct set of flags to HCR_EL2.

For cpu0, fix the issue by changing HCR_EL2 setting from a new
presmp_initcall.

Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
Reviewed-by: Julien Grall <julien.grall@arm.com>
This commit is contained in:
Stefano Stabellini committed 2017-04-03 13:41:04 -07:00
1 parent 80f9c31670
commit b32d442abd
1 file changed
+19
+19
View File
@@ -117,6 +117,25 @@ static void __init parse_vwfi(const char *s)
}
custom_param("vwfi", parse_vwfi);
static int __init vwfi_init(void)
{
/*
* HCR_EL2 has already been set on cpu0, change the setting here, if
* needed. Other cpus haven't booted yet, init_traps will setup
* HCR_EL2 correctly.
*/
if ( vwfi == NATIVE )
{
register_t hcr;
hcr = READ_SYSREG(HCR_EL2);
WRITE_SYSREG(hcr & ~(HCR_TWI|HCR_TWE), HCR_EL2);
}
return 0;
}
presmp_initcall(vwfi_init);
void init_traps(void)
{
/* Setup Hyp vector base */
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.