mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 02:53:36 +02:00
KVM: SVM: Disallow EFER.LMSLE when not supported by hardware
Modern AMD CPUs do not support segment limit checks in 64-bit mode
(i.e. EFER.LMSLE must be zero). Do not allow a guest to set EFER.LMSLE
on a CPU that requires the bit to be zero.
For backwards compatibility, allow EFER.LMSLE to be set on CPUs that
support segment limit checks in 64-bit mode, even though KVM's
implementation of the feature is incomplete (e.g. KVM's emulator does
not enforce segment limits in 64-bit mode).
Fixes: eec4b140c9 ("KVM: SVM: Allow EFER.LMSLE to be set with nested svm")
Signed-off-by: Jim Mattson <jmattson@google.com>
Reviewed-by: Nikunj A Dadhania <nikunj@amd.com>
Reviewed-by: Yosry Ahmed <yosry.ahmed@linux.dev>
Link: https://lore.kernel.org/r/20251001001529.1119031-3-jmattson@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
parent
4793f990ea
commit
c53c632592
|
|
@ -5320,7 +5320,9 @@ static __init int svm_hardware_setup(void)
|
|||
|
||||
if (nested) {
|
||||
pr_info("Nested Virtualization enabled\n");
|
||||
kvm_enable_efer_bits(EFER_SVME | EFER_LMSLE);
|
||||
kvm_enable_efer_bits(EFER_SVME);
|
||||
if (!boot_cpu_has(X86_FEATURE_EFER_LMSLE_MBZ))
|
||||
kvm_enable_efer_bits(EFER_LMSLE);
|
||||
|
||||
r = nested_svm_init_msrpm_merge_offsets();
|
||||
if (r)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user