Re: [PATCH 2/7] KVM: SVM: Disable interception of FRED MSRs for FRED supported guests
From: Sean Christopherson
Date: Fri Mar 06 2026 - 21:10:30 EST
On Thu, Jan 29, 2026, Shivansh Dhiman wrote:
> +static void svm_recalc_fred_msr_intercepts(struct kvm_vcpu *vcpu)
> +{
> + struct vcpu_svm *svm = to_svm(vcpu);
> + bool fred_enabled = svm->vmcb->control.virt_ext & FRED_VIRT_ENABLE_MASK;
Please use guest_cpu_cap_has(). The VMCB enable bit is a reflection of the
guest's capabilities, not the other way around.
And s/fred_enabled/intercept.
> +
> + svm_set_intercept_for_msr(vcpu, MSR_IA32_FRED_RSP0, MSR_TYPE_RW, !fred_enabled);
> + svm_set_intercept_for_msr(vcpu, MSR_IA32_FRED_RSP1, MSR_TYPE_RW, !fred_enabled);
> + svm_set_intercept_for_msr(vcpu, MSR_IA32_FRED_RSP2, MSR_TYPE_RW, !fred_enabled);
> + svm_set_intercept_for_msr(vcpu, MSR_IA32_FRED_RSP3, MSR_TYPE_RW, !fred_enabled);
> + svm_set_intercept_for_msr(vcpu, MSR_IA32_FRED_STKLVLS, MSR_TYPE_RW, !fred_enabled);
> + svm_set_intercept_for_msr(vcpu, MSR_IA32_FRED_SSP1, MSR_TYPE_RW, !fred_enabled);
> + svm_set_intercept_for_msr(vcpu, MSR_IA32_FRED_SSP2, MSR_TYPE_RW, !fred_enabled);
> + svm_set_intercept_for_msr(vcpu, MSR_IA32_FRED_SSP3, MSR_TYPE_RW, !fred_enabled);
> + svm_set_intercept_for_msr(vcpu, MSR_IA32_FRED_CONFIG, MSR_TYPE_RW, !fred_enabled);
> +}
> +
> static void svm_recalc_msr_intercepts(struct kvm_vcpu *vcpu)
> {
> struct vcpu_svm *svm = to_svm(vcpu);
> @@ -795,6 +811,8 @@ static void svm_recalc_msr_intercepts(struct kvm_vcpu *vcpu)
> if (sev_es_guest(vcpu->kvm))
> sev_es_recalc_msr_intercepts(vcpu);
>
> + svm_recalc_fred_msr_intercepts(vcpu);
> +
> /*
> * x2APIC intercepts are modified on-demand and cannot be filtered by
> * userspace.
> --
> 2.43.0
>