|
@@ -4120,6 +4120,13 @@ static int svm_get_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
|
|
|
|
|
|
msr_info->data = svm->spec_ctrl;
|
|
msr_info->data = svm->spec_ctrl;
|
|
break;
|
|
break;
|
|
|
|
+ case MSR_AMD64_VIRT_SPEC_CTRL:
|
|
|
|
+ if (!msr_info->host_initiated &&
|
|
|
|
+ !guest_cpuid_has(vcpu, X86_FEATURE_VIRT_SSBD))
|
|
|
|
+ return 1;
|
|
|
|
+
|
|
|
|
+ msr_info->data = svm->virt_spec_ctrl;
|
|
|
|
+ break;
|
|
case MSR_F15H_IC_CFG: {
|
|
case MSR_F15H_IC_CFG: {
|
|
|
|
|
|
int family, model;
|
|
int family, model;
|
|
@@ -4251,6 +4258,16 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr)
|
|
break;
|
|
break;
|
|
set_msr_interception(svm->msrpm, MSR_IA32_PRED_CMD, 0, 1);
|
|
set_msr_interception(svm->msrpm, MSR_IA32_PRED_CMD, 0, 1);
|
|
break;
|
|
break;
|
|
|
|
+ case MSR_AMD64_VIRT_SPEC_CTRL:
|
|
|
|
+ if (!msr->host_initiated &&
|
|
|
|
+ !guest_cpuid_has(vcpu, X86_FEATURE_VIRT_SSBD))
|
|
|
|
+ return 1;
|
|
|
|
+
|
|
|
|
+ if (data & ~SPEC_CTRL_SSBD)
|
|
|
|
+ return 1;
|
|
|
|
+
|
|
|
|
+ svm->virt_spec_ctrl = data;
|
|
|
|
+ break;
|
|
case MSR_STAR:
|
|
case MSR_STAR:
|
|
svm->vmcb->save.star = data;
|
|
svm->vmcb->save.star = data;
|
|
break;
|
|
break;
|
|
@@ -5791,7 +5808,7 @@ static bool svm_cpu_has_accelerated_tpr(void)
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
-static bool svm_has_high_real_mode_segbase(void)
|
|
|
|
|
|
+static bool svm_has_emulated_msr(int index)
|
|
{
|
|
{
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
@@ -7017,7 +7034,7 @@ static struct kvm_x86_ops svm_x86_ops __ro_after_init = {
|
|
.hardware_enable = svm_hardware_enable,
|
|
.hardware_enable = svm_hardware_enable,
|
|
.hardware_disable = svm_hardware_disable,
|
|
.hardware_disable = svm_hardware_disable,
|
|
.cpu_has_accelerated_tpr = svm_cpu_has_accelerated_tpr,
|
|
.cpu_has_accelerated_tpr = svm_cpu_has_accelerated_tpr,
|
|
- .cpu_has_high_real_mode_segbase = svm_has_high_real_mode_segbase,
|
|
|
|
|
|
+ .has_emulated_msr = svm_has_emulated_msr,
|
|
|
|
|
|
.vcpu_create = svm_create_vcpu,
|
|
.vcpu_create = svm_create_vcpu,
|
|
.vcpu_free = svm_free_vcpu,
|
|
.vcpu_free = svm_free_vcpu,
|