Commit b2a4d007 authored by Elliot Berman's avatar Elliot Berman Committed by Marc Zyngier

KVM: arm64: Ignore kvm-arm.mode if !is_hyp_mode_available()

Ignore kvm-arm.mode if !is_hyp_mode_available(). Specifically, we want
to avoid switching kvm_mode to KVM_MODE_PROTECTED if hypervisor mode is
not available. This prevents "Protected KVM" cpu capability being
reported when Linux is booting in EL1 and would not have KVM enabled.
Reasonably though, we should warn if the command line is requesting a
KVM mode at all if KVM isn't actually available. Allow
"kvm-arm.mode=none" to skip the warning since this would disable KVM
anyway.
Signed-off-by: default avatarElliot Berman <quic_eberman@quicinc.com>
Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20220920190658.2880184-1-quic_eberman@quicinc.com
parent 096560dd
...@@ -2270,6 +2270,16 @@ static int __init early_kvm_mode_cfg(char *arg) ...@@ -2270,6 +2270,16 @@ static int __init early_kvm_mode_cfg(char *arg)
if (!arg) if (!arg)
return -EINVAL; return -EINVAL;
if (strcmp(arg, "none") == 0) {
kvm_mode = KVM_MODE_NONE;
return 0;
}
if (!is_hyp_mode_available()) {
pr_warn_once("KVM is not available. Ignoring kvm-arm.mode\n");
return 0;
}
if (strcmp(arg, "protected") == 0) { if (strcmp(arg, "protected") == 0) {
if (!is_kernel_in_hyp_mode()) if (!is_kernel_in_hyp_mode())
kvm_mode = KVM_MODE_PROTECTED; kvm_mode = KVM_MODE_PROTECTED;
...@@ -2284,11 +2294,6 @@ static int __init early_kvm_mode_cfg(char *arg) ...@@ -2284,11 +2294,6 @@ static int __init early_kvm_mode_cfg(char *arg)
return 0; return 0;
} }
if (strcmp(arg, "none") == 0) {
kvm_mode = KVM_MODE_NONE;
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