Commit 1945a067 authored by Marc Zyngier's avatar Marc Zyngier Committed by Will Deacon

arm64: Make kvm-arm.mode={nvhe, protected} an alias of id_aa64mmfr1.vh=0

Admitedly, passing id_aa64mmfr1.vh=0 on the command-line isn't
that easy to understand, and it is likely that users would much
prefer write "kvm-arm.mode=nvhe", or "...=protected".

So here you go. This has the added advantage that we can now
always honor the "kvm-arm.mode=protected" option, even when
booting on a VHE system.
Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Acked-by: default avatarDavid Brazdil <dbrazdil@google.com>
Link: https://lore.kernel.org/r/20210208095732.3267263-18-maz@kernel.orgSigned-off-by: default avatarWill Deacon <will@kernel.org>
parent 863ace77
...@@ -2257,6 +2257,9 @@ ...@@ -2257,6 +2257,9 @@
kvm-arm.mode= kvm-arm.mode=
[KVM,ARM] Select one of KVM/arm64's modes of operation. [KVM,ARM] Select one of KVM/arm64's modes of operation.
nvhe: Standard nVHE-based mode, without support for
protected guests.
protected: nVHE-based mode with support for guests whose protected: nVHE-based mode with support for guests whose
state is kept private from the host. state is kept private from the host.
Not valid if the kernel is running in EL2. Not valid if the kernel is running in EL2.
......
...@@ -45,6 +45,8 @@ static const struct { ...@@ -45,6 +45,8 @@ static const struct {
char alias[FTR_ALIAS_NAME_LEN]; char alias[FTR_ALIAS_NAME_LEN];
char feature[FTR_ALIAS_OPTION_LEN]; char feature[FTR_ALIAS_OPTION_LEN];
} aliases[] __initconst = { } aliases[] __initconst = {
{ "kvm-arm.mode=nvhe", "id_aa64mmfr1.vh=0" },
{ "kvm-arm.mode=protected", "id_aa64mmfr1.vh=0" },
}; };
static int __init find_field(const char *cmdline, static int __init find_field(const char *cmdline,
......
...@@ -1966,6 +1966,9 @@ static int __init early_kvm_mode_cfg(char *arg) ...@@ -1966,6 +1966,9 @@ static int __init early_kvm_mode_cfg(char *arg)
return 0; return 0;
} }
if (strcmp(arg, "nvhe") == 0 && !WARN_ON(is_kernel_in_hyp_mode()))
return 0;
return -EINVAL; return -EINVAL;
} }
early_param("kvm-arm.mode", early_kvm_mode_cfg); early_param("kvm-arm.mode", early_kvm_mode_cfg);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment