On Wed, Mar 4, 2026 at 9:11 AM Sean Christopherson <[email protected]> wrote: > diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c > index 991ee4c03363..099bf8ac10ee 100644 > --- a/arch/x86/kvm/svm/nested.c > +++ b/arch/x86/kvm/svm/nested.c > @@ -1848,7 +1848,7 @@ static int svm_get_nested_state(struct kvm_vcpu *vcpu, > if (is_guest_mode(vcpu)) { > kvm_state.hdr.svm.vmcb_pa = svm->nested.vmcb12_gpa; > if (nested_npt_enabled(svm)) { > - kvm_state.hdr.svm.flags |= KVM_STATE_SVM_VALID_GPAT; > + kvm_state->flags |= KVM_STATE_NESTED_GPAT_VALID; > kvm_state.hdr.svm.gpat = svm->vmcb->save.g_pat; > } > kvm_state.size += KVM_STATE_NESTED_SVM_VMCB_SIZE; > @@ -1914,7 +1914,8 @@ static int svm_set_nested_state(struct kvm_vcpu *vcpu, > > if (kvm_state->flags & ~(KVM_STATE_NESTED_GUEST_MODE | > KVM_STATE_NESTED_RUN_PENDING | > - KVM_STATE_NESTED_GIF_SET)) > + KVM_STATE_NESTED_GIF_SET | > + KVM_STATE_NESTED_GPAT_VALID)) > return -EINVAL;
Unless I'm missing something, this breaks forward compatibility completely. An older kernel will refuse to accept a nested state blob with GPAT_VALID set.

