From nobody Fri Dec 19 20:15:19 2025 Received: from mail-pj1-f74.google.com (mail-pj1-f74.google.com [209.85.216.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C9CCF3081DC for ; Fri, 7 Nov 2025 20:11:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762546321; cv=none; b=DUj8FJCPQehuIELaj9SxmWCUCg6OxKYL2p+AZJiia1L5VvcqE1jHpNcLU3/c34YaSUavhz4iVL+aNu2JIVrLsCaTfAy+IEWRU2kTMQqa5j/BvpteMM6+VOAQ5LLH+JgdFbk5p2d14nAIhhtete6ZubGfsLeiO3rgkthFfgAClRA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762546321; c=relaxed/simple; bh=6mhxmlCkJdMvlQlffB6c92IR/AzJRxNT+9oxiSDNPT0=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=lNxTW0FwdctSkSJbjExuPRwPWf427t3SIvkHkB+qDA+gYPNRZQ++9yjLrvTXbAy5kpJbLBd87tMK69wH5iAgXMnglatZk4ENje2IX0HvrFXTrxriAxW/5O0IlYPxhzXNr4MhWDDUknI1hfjHr8TKRWASG8QxFsSFuXZyEFNpBPE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--jmattson.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=MUan9kFo; arc=none smtp.client-ip=209.85.216.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--jmattson.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="MUan9kFo" Received: by mail-pj1-f74.google.com with SMTP id 98e67ed59e1d1-341616a6fb7so1547812a91.0 for ; Fri, 07 Nov 2025 12:11:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1762546319; x=1763151119; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=lhiSMyqm92MMUM5EN3rog8SDMgfsHheSQRcp3hOaMHg=; b=MUan9kFo2st0Pg5KqyUd8n0jRMRsy3eah99ZDUdVM7dzCX8Os5EqU8hMPVf3yz0rnR QuOXnTPQTHws2RrIb5JKHKGupA51x9SjD8KPUeTz/zENHz7CP9LWPKvsPdgL1MKs7RJZ ZfzNWXWbVfxrSQpxqoPx818KIgWsNxFy7xoP1jcazRo5LB8gjan279sLlKQJPphfIXu9 4vjvU7H/k57uArMRN+DS4PT7dn2syO7bREJfWMtyD1CNuhViG/bx+L77qWzbdXemVKPB 9Gxmuz7tjUbaomSSySbnfvzQZNyZ/KWYsZbQ4hvsN7DYDbOJef9lr/y8bKI2aAFwciPJ gA1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762546319; x=1763151119; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=lhiSMyqm92MMUM5EN3rog8SDMgfsHheSQRcp3hOaMHg=; b=pVd28W5eXYT8y+H/hIwiX9f7gkW8zfEkro3ErLMwvJDaxDKcNzxjFE0qtqCVCTcbOg dI6ZVr2QiCXmDiFoxhLt7wzbe5A8maMcAeIfe4lmaeNbLgNfIdGFW5skXVg66bWKChEU 9WiD6KNCFIJ65K7mhOVvKicR84irPoqDY03zBFFrpUk/YkM07uLsTeIh7LIJB0cUMjAe E5br64DNhvao2qToZrZD4aPNh8VvqjNCNXsXQvHqFwXs9BtrUd1LTBU5zOO9Umsdlie/ gQdTkqPKlvbPSJYQqmzkdIboVHfUaHB6Jx/tmW5MRHZuoQDhBaI0+j5e5NcdN7Ku0TVb tn1w== X-Forwarded-Encrypted: i=1; AJvYcCWZVXwtAbGTMz5AtNBLiDl0xDgjiIO5sFk2bJ5uyq8lOTIvuzdxQSdAlZvKEbw6X8QD2oJyjuHVvf0+7nA=@vger.kernel.org X-Gm-Message-State: AOJu0YxF4qDst21U7Q8UYY4jPgxkHH08+exLBBeF8qLTr3DDFjcz2Pyp o23pPLVDluR1NoS5ni83kW6oo5g96SwLEqwwlqNVbd5PNb5q7/NZ9gH5lGsm3jw/xEcFYkyLpkV 5BJMvXxRU5RTxmg== X-Google-Smtp-Source: AGHT+IFpJp+VwLKq8k0TLxsmj++3hUzm6S2CN12G8usM3ikhh4AiSOVq9alb1RG6mNKwrtTVoiHTzNlX1lqs3Q== X-Received: from pjof5.prod.google.com ([2002:a17:90a:8e85:b0:330:7dd8:2dc2]) (user=jmattson job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90a:e710:b0:339:f09b:d36f with SMTP id 98e67ed59e1d1-3436cbab88emr348383a91.28.1762546319147; Fri, 07 Nov 2025 12:11:59 -0800 (PST) Date: Fri, 7 Nov 2025 12:11:24 -0800 In-Reply-To: <20251107201151.3303170-1-jmattson@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20251107201151.3303170-1-jmattson@google.com> X-Mailer: git-send-email 2.51.2.1041.gc1ab5b90ca-goog Message-ID: <20251107201151.3303170-2-jmattson@google.com> Subject: [RFC PATCH 1/6] KVM: x86: nSVM: Shuffle guest PAT and PAT MSR in svm_set_nested_state() From: Jim Mattson To: Sean Christopherson , Paolo Bonzini , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Alexander Graf , Joerg Roedel , Avi Kivity , "=?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?=" , David Hildenbrand , kvm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Jim Mattson Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When L2 is active and using nested paging, accesses to the PAT MSR should be redirected to the Guest PAT register. As a result, KVM_GET_MSRS will save the Guest PAT register rather than the PAT MSR. However, on restore, KVM_SET_MSRS is called before KVM_SET_NESTED_STATE, so the Guest PAT register will be restored to the PAT MSR. To fix the serialization of the Guest PAT register and the PAT MSR, copy the PAT MSR to the Guest PAT register (vmcb02->save.g_pat) and copy vmcb01->save.g_pat to the PAT MSR in svm_set_nested_state() under the right conditions. One of these conditions is a new SVM nested state flag, which will be set in the commit that modifies the KVM_{GET,SET}_MSRS semantics. Signed-off-by: Jim Mattson --- arch/x86/include/uapi/asm/kvm.h | 2 ++ arch/x86/kvm/svm/nested.c | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/arch/x86/include/uapi/asm/kvm.h b/arch/x86/include/uapi/asm/kv= m.h index d420c9c066d4..df8ae68f56f7 100644 --- a/arch/x86/include/uapi/asm/kvm.h +++ b/arch/x86/include/uapi/asm/kvm.h @@ -494,6 +494,7 @@ struct kvm_sync_regs { #define KVM_STATE_NESTED_SVM_VMCB_SIZE 0x1000 =20 #define KVM_STATE_VMX_PREEMPTION_TIMER_DEADLINE 0x00000001 +#define KVM_STATE_SVM_VALID_GPAT 0x00000001 =20 /* vendor-independent attributes for system fd (group 0) */ #define KVM_X86_GRP_SYSTEM 0 @@ -529,6 +530,7 @@ struct kvm_svm_nested_state_data { =20 struct kvm_svm_nested_state_hdr { __u64 vmcb_pa; + __u32 flags; }; =20 /* for KVM_CAP_NESTED_STATE */ diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c index a6443feab252..ad11b11f482e 100644 --- a/arch/x86/kvm/svm/nested.c +++ b/arch/x86/kvm/svm/nested.c @@ -1052,6 +1052,7 @@ void svm_copy_vmrun_state(struct vmcb_save_area *to_s= ave, to_save->rsp =3D from_save->rsp; to_save->rip =3D from_save->rip; to_save->cpl =3D 0; + to_save->g_pat =3D from_save->g_pat; =20 if (kvm_cpu_cap_has(X86_FEATURE_SHSTK)) { to_save->s_cet =3D from_save->s_cet; @@ -1890,6 +1891,20 @@ static int svm_set_nested_state(struct kvm_vcpu *vcp= u, if (WARN_ON_ONCE(ret)) goto out_free; =20 + /* + * If nested paging is enabled in vmcb12, then KVM_SET_MSRS restored + * the guest PAT register to the PAT MSR. Move this to the guest PAT + * register (svm->vmcb->save.g_pat) and restore the PAT MSR from + * svm->vmcb01.ptr->save.g_pat). + */ + if ((kvm_state->hdr.svm.flags & KVM_STATE_SVM_VALID_GPAT) && + nested_npt_enabled(svm)) { + ret =3D -EINVAL; + svm->vmcb->save.g_pat =3D vcpu->arch.pat; + if (!kvm_pat_valid(svm->vmcb01.ptr->save.g_pat)) + goto out_free; + vcpu->arch.pat =3D svm->vmcb01.ptr->save.g_pat; + } svm->nested.force_msr_bitmap_recalc =3D true; =20 kvm_make_request(KVM_REQ_GET_NESTED_STATE_PAGES, vcpu); --=20 2.51.2.1041.gc1ab5b90ca-goog From nobody Fri Dec 19 20:15:19 2025 Received: from mail-pj1-f74.google.com (mail-pj1-f74.google.com [209.85.216.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8097530AADB for ; Fri, 7 Nov 2025 20:12:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762546323; cv=none; b=FADgHANz9eMUdbs/o7DG3KuA3e4Uzm9c6ZjsEUI5JsC7qi4mrl9BmqAT0KR+xMzB7Gulq5c1hAUOxkhTeG6eSttf6sdgK2MAuE4jXweMBrorNx7BU41c5TA/UEq2/fAJI1whzgg0CmvkGW71NCf8dIorhFwq/fLQ4BpneBS6qyQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762546323; c=relaxed/simple; bh=sI2clx6m6yDxI8SOWEjPQNsSFN7NbjLqZ0gLeTraeyA=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=ZmotkEc1Sq2HQJ6tPspJRGisBLrzWfW8NPTboFYt1kaTUXP3b81vF6VOP1XPwv2oI1PwFJ5GxHogy6AVEBeTD7DQi5qcaxNqgjN85nuSsOflT55Mjn6giQ12bWpAbWAzangXQSbm20SPTQkxMXSJ1//abpJy+uEPg7wBVhNXdik= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--jmattson.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=JwJeoGOD; arc=none smtp.client-ip=209.85.216.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--jmattson.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="JwJeoGOD" Received: by mail-pj1-f74.google.com with SMTP id 98e67ed59e1d1-340562297b9so1070423a91.1 for ; Fri, 07 Nov 2025 12:12:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1762546321; x=1763151121; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=rxGIOgK9FDWxY7r1m8JPVJNrWZHinYe3MXWstZ+fuD0=; b=JwJeoGOD9qkNcqpLN062nDjTalqw+jTVJgVBuKtjy5DPTLgHmte2qyidY1JQtHJj/p zAgkWnAaNJ36Yv8qvu5JeluUEEZZjUaHh32urGLBjnGGlxI0di8xXYPFnU1hIivWnrVA IXbjRfoQxPZRiAB9EueTRULEyVTU+syPkiMnsyZ5f7jxlBAf06C3GgxcjIvlbBAAQB7L H75mDR9zpHbGCZNao13qmuOH5xJTKjureCUV+5p54VQ8D/0BDZVbv0krhTbWW7zno4hZ 1yHiNnUOplBikWum9RQOmtcP3FA5fuhaVU2zTS/vFJRQTYdBEgFeLuzW1/ydOnzOiPUD PhxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762546321; x=1763151121; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=rxGIOgK9FDWxY7r1m8JPVJNrWZHinYe3MXWstZ+fuD0=; b=TtNmmmzmJyuIsgxVM3+yaZZBpL4n7NqJ0ynbNDO2CedYruiLjUUlFLKwq1rVGRXngM OwCf8kXMeZR6NDGjBHLpOw3O6X/hjGJLvZqS3oOBR8RLZKiMLx5fTNmTjZ6TUGAjuBM8 j43fZs3/5glKv+RPsld2a66gv/dHDjyNKh+F21EbXi8yx4deuBFwzrbYU45+hRDSZpJJ +XrRKq0p/JrHmMkHkjByo/COroaDRbxxx8HGOfZIUQBn7hupjRvU2dymO+rvE+FCqSNf l9sN1PbwveW/w7V8owr0tmaUPZSmwhC+S458KLTf3zmbnNXt2tHLji+W5Ish5su3/LWA Q0DA== X-Forwarded-Encrypted: i=1; AJvYcCU1b0Orai+rFCM0cNDa7PSQi6Kjl1RuKc+JYE0Ank9ANTc4E6i/NN0zaYO05bW6UIr0gbj9eIt4h6hwi44=@vger.kernel.org X-Gm-Message-State: AOJu0YzgOTgrMx3xMPrmM0C9srXVpq9li4d1/nO4Xa/M2vHJAnE7KAF7 YgHUhkICjy9J0OltcaaKY3zgRb1+kWb+iH6N0NA4Nu2TQRNwpmc6jWcc8KnsYoW7msIglWDaS3u DPzs2bCAB9/o/7Q== X-Google-Smtp-Source: AGHT+IGch52OnpzoFrGgut3GHntDyv4eE8MmfDX0ABWgIg6EW1CvmgksElczIbEJwEfGnzU2ioOfmfCMWL/5WQ== X-Received: from pjbcu24.prod.google.com ([2002:a17:90a:fa98:b0:342:b238:e0a5]) (user=jmattson job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:3f85:b0:343:6a63:85d5 with SMTP id 98e67ed59e1d1-3436accd340mr652802a91.16.1762546320755; Fri, 07 Nov 2025 12:12:00 -0800 (PST) Date: Fri, 7 Nov 2025 12:11:25 -0800 In-Reply-To: <20251107201151.3303170-1-jmattson@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20251107201151.3303170-1-jmattson@google.com> X-Mailer: git-send-email 2.51.2.1041.gc1ab5b90ca-goog Message-ID: <20251107201151.3303170-3-jmattson@google.com> Subject: [RFC PATCH 2/6] KVM: x86: nSVM: Redirect PAT MSR accesses to gPAT when NPT is enabled in vmcb12 From: Jim Mattson To: Sean Christopherson , Paolo Bonzini , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Alexander Graf , Joerg Roedel , Avi Kivity , "=?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?=" , David Hildenbrand , kvm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Jim Mattson Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" According to the APM volume 2, section 15.25.2: "Replicated State," While nested paging is enabled, all (guest) references to the state of the paging registers by x86 code (MOV to/from CRn, etc.) read and write the guest copy of the registers. The PAT MSR is explicitly enumerated as a "paging register" in that section of the APM. Implement the architected behavior by redirecting PAT MSR accesses from vcpu->arch.pat to svm->vmcb->save.g_pat when L2 is active and nested paging is enabled in vmcb12. Note that the change in KVM_{GET,SET}_MSRS semantics breaks serialization. Trigger a fixup in svm_set_nested_state() by setting the VALID_GPAT flag in the SVM nested state header. Fixes: 3d6368ef580a ("KVM: SVM: Add VMRUN handler") Signed-off-by: Jim Mattson --- arch/x86/kvm/svm/nested.c | 1 + arch/x86/kvm/svm/svm.c | 25 +++++++++++++++++-------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c index ad11b11f482e..c68511948501 100644 --- a/arch/x86/kvm/svm/nested.c +++ b/arch/x86/kvm/svm/nested.c @@ -1728,6 +1728,7 @@ static int svm_get_nested_state(struct kvm_vcpu *vcpu, /* First fill in the header and copy it out. */ if (is_guest_mode(vcpu)) { kvm_state.hdr.svm.vmcb_pa =3D svm->nested.vmcb12_gpa; + kvm_state.hdr.svm.flags =3D KVM_STATE_SVM_VALID_GPAT; kvm_state.size +=3D KVM_STATE_NESTED_SVM_VMCB_SIZE; kvm_state.flags |=3D KVM_STATE_NESTED_GUEST_MODE; =20 diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index b4e5a0684f57..7e192fd5fb7f 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -2675,6 +2675,12 @@ static int svm_get_msr(struct kvm_vcpu *vcpu, struct= msr_data *msr_info) return 1; msr_info->data =3D svm->tsc_ratio_msr; break; + case MSR_IA32_CR_PAT: + if (!(is_guest_mode(vcpu) && nested_npt_enabled(svm))) + msr_info->data =3D vcpu->arch.pat; + else + msr_info->data =3D svm->vmcb->save.g_pat; + break; case MSR_STAR: msr_info->data =3D svm->vmcb01.ptr->save.star; break; @@ -2864,14 +2870,17 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, struc= t msr_data *msr) =20 break; case MSR_IA32_CR_PAT: - ret =3D kvm_set_msr_common(vcpu, msr); - if (ret) - break; - - svm->vmcb01.ptr->save.g_pat =3D data; - if (is_guest_mode(vcpu)) - nested_vmcb02_compute_g_pat(svm); - vmcb_mark_dirty(svm->vmcb, VMCB_NPT); + if (!kvm_pat_valid(data)) + return 1; + if (!(is_guest_mode(vcpu) && nested_npt_enabled(svm))) { + vcpu->arch.pat =3D data; + svm->vmcb01.ptr->save.g_pat =3D data; + vmcb_mark_dirty(svm->vmcb01.ptr, VMCB_NPT); + } + if (is_guest_mode(vcpu)) { + svm->vmcb->save.g_pat =3D data; + vmcb_mark_dirty(svm->vmcb, VMCB_NPT); + } break; case MSR_IA32_SPEC_CTRL: if (!msr->host_initiated && --=20 2.51.2.1041.gc1ab5b90ca-goog From nobody Fri Dec 19 20:15:19 2025 Received: from mail-pf1-f202.google.com (mail-pf1-f202.google.com [209.85.210.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0B6AD30B526 for ; Fri, 7 Nov 2025 20:12:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762546324; cv=none; b=if9cONrWj15MQDbwJEjbK873TnCQb9JmeQ4uC88Yp2V5QUzDPX3QZ1d01AYgHUwQ4pxy4vmUmkJeqXc9RREMMH7CZJ8NClggtGTKJX9PvJ0l7z+x6Q85SfijvuEIAfRUgPB84XKJzLZbPXOnEqyC11wS9uDFzH0alCGQimQW7G0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762546324; c=relaxed/simple; bh=UBLmYwQUKIRlECodStHOn5ZyGn+RVuUZH1lnC54MR5o=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=BF1IaPDAgQJB7X73SoQQHRnnjEaz98k4hzAv4yduQa7IR9smFzYft5tJL4iXNo+FMRCoFpDTgWjL8FtSqeftX4oOT69OHfroqk77J/Kc0rOSxNHz1Q1ePB0uxmZa3IpTE2fSwzkJLiJrrLxD497PvzSd1XUB8f6LjdQ6OcYY3gk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--jmattson.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=aGv3EwSa; arc=none smtp.client-ip=209.85.210.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--jmattson.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="aGv3EwSa" Received: by mail-pf1-f202.google.com with SMTP id d2e1a72fcca58-7b0e73b0eadso2421819b3a.3 for ; Fri, 07 Nov 2025 12:12:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1762546322; x=1763151122; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=zY5ooH63yC1l2oevmKp10xqE2ANPXtJ+gHeVu/JOJ04=; b=aGv3EwSaLNkfI1Min+8nUD+YWF+9IozV4stZ4DPEz2mV53idTcNtkxsYoUPtspKrpE 0UHXvJQE1dgZQifV3KeIAQjM1o0sQLYwxxmdcJBS5ifmgsqwAqeYl2MH3w7MqFOr9fCJ Kk7Ofk0DSFFfuwwYjx8VUQY09I1WOzD5J6Qix97kxxOEYFzAHrQEtq8AkzzedrNRdUeQ oBHlbtq/NSTUcoUQ4PiwGgT3pQZ15dSmAkocWRnt6816jQTmhwr8YHKPywB0nciia8SH JzqAuCMKaNjNYCAwX5ymqKQSjGLxXWLpbKlAagdLKLDiWc3fRbqt+Jfc+JeMtkfZq7L3 Rq4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762546322; x=1763151122; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=zY5ooH63yC1l2oevmKp10xqE2ANPXtJ+gHeVu/JOJ04=; b=n/eNvU3c7u+ny9rOSBWo1H3FyVjo73Kai0YAeXJ+xFQOiuJpvfumHbe0/Tbna4qPAH HY+oY2T1kmAPtbjt28cScKnfRLXdvf5r9fgEFMnrN/4bLpz+YtF5B5v3v9EFEqql1K7P vR0xIskQ9oyCM7npnerTM6f28oB8BRdTsdD5viHNNBYpctvp8WIX3P3Rm7AW3us9oC/H lBwZvwuEPgXl6Oy5Qwx2IN+yV3MjC60KLXBfYJRak6MlqBplYG7hf1HcXo9t8B1FG18s wk3HgTR4aNvJwDTBtC8M8+23296hyUF3toKm/c749jyB27CfO7MOrEomvGtUburRXDMF aWiw== X-Forwarded-Encrypted: i=1; AJvYcCUrjnLJ8UKB/j0GQTQ2wP+av6c5767bZxFp2xJVtkCAV9IAv3mgJAeHvK8DNyBaWC8vo6GWgOuT3VYgbas=@vger.kernel.org X-Gm-Message-State: AOJu0YyI2h3XLmpX3GRHEy1U80yO6R++bZz7TX0spNdghuCA+Xq5iy7U aH0+VkrBVgMDwU5N/duXSUaVWlLm+hAangDibA/GjxPOaHrmgefokLwUsX2IBhrJxosBnIktA17 IPOsc3BTQvF4hLA== X-Google-Smtp-Source: AGHT+IGxOHMW9tvmB7BFaZh+51NkzwK3iCtiNQKTGPfozT1eR95viIjcpptukgzHxOaiA2buBP9aC0pf/SuY+g== X-Received: from pga20.prod.google.com ([2002:a05:6a02:4f94:b0:b6b:f3ec:692b]) (user=jmattson job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:7f9d:b0:34f:ec32:6a3c with SMTP id adf61e73a8af0-353a1ae2b3bmr494680637.28.1762546322264; Fri, 07 Nov 2025 12:12:02 -0800 (PST) Date: Fri, 7 Nov 2025 12:11:26 -0800 In-Reply-To: <20251107201151.3303170-1-jmattson@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20251107201151.3303170-1-jmattson@google.com> X-Mailer: git-send-email 2.51.2.1041.gc1ab5b90ca-goog Message-ID: <20251107201151.3303170-4-jmattson@google.com> Subject: [RFC PATCH 3/6] KVM: x86: nSVM: Copy current vmcb02 g_pat to vmcb12 g_pat on #VMEXIT From: Jim Mattson To: Sean Christopherson , Paolo Bonzini , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Alexander Graf , Joerg Roedel , Avi Kivity , "=?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?=" , David Hildenbrand , kvm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Jim Mattson Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" According to the APM volume 3 pseudo-code for "VMRUN," when nested paging is enabled in the VMCB, the guest PAT register is copied into the g_pat field of the VMCB on #VMEXIT. In KVM, the guest PAT register is the g_pat field of vmcb02. When nested paging is enabled in vmcb12, copy the g_pat field of the vmcb02 to the g_pat field of the vmcb12 in nested_svm_vmexit(). Fixes: 15038e147247 ("KVM: SVM: obey guest PAT") Signed-off-by: Jim Mattson --- arch/x86/kvm/svm/nested.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c index c68511948501..51a89d6aa29f 100644 --- a/arch/x86/kvm/svm/nested.c +++ b/arch/x86/kvm/svm/nested.c @@ -1126,6 +1126,9 @@ int nested_svm_vmexit(struct vcpu_svm *svm) vmcb12->save.dr6 =3D svm->vcpu.arch.dr6; vmcb12->save.cpl =3D vmcb02->save.cpl; =20 + if (nested_npt_enabled(svm)) + vmcb12->save.g_pat =3D vmcb02->save.g_pat; + if (guest_cpu_cap_has(vcpu, X86_FEATURE_SHSTK)) { vmcb12->save.s_cet =3D vmcb02->save.s_cet; vmcb12->save.isst_addr =3D vmcb02->save.isst_addr; --=20 2.51.2.1041.gc1ab5b90ca-goog From nobody Fri Dec 19 20:15:19 2025 Received: from mail-pf1-f202.google.com (mail-pf1-f202.google.com [209.85.210.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9401330CDBC for ; Fri, 7 Nov 2025 20:12:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762546326; cv=none; b=GgKTim7/o8ViNUOY8RoWO+1MJfBgdJzM9z6KOucrimX7qtt8/L4zH5qT/MmmrcPIxxw6Rg9cmxilw6WmtqOgazCDWeacxqt1APNwA5d0blq8+ugA3RFY5Z44bZkfuwnEt+nCQF9P7awkxibXZmYHKog+2zNsBnLT8QLW9AT74pU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762546326; c=relaxed/simple; bh=s0aUXhsTFzfk1DYtsdr82lS54IECwej4kn2Gtennk5g=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=O8S3vr50f8/Q7XYeV6cN56STb5lUvlq0uJKP2nDo35ih2msyvLHiuIXH5xlcsHsWSQWcNkqnHJqXGxPwp1sTcfYbctUH6d0mkZguJeCcxzbwCDjSux+zXHgsmnZiqOhMpXQbgIBRi6A0SSlABvGVyp4reesTCt8yUdT/r9LimB0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--jmattson.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=MDvGG+tF; arc=none smtp.client-ip=209.85.210.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--jmattson.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="MDvGG+tF" Received: by mail-pf1-f202.google.com with SMTP id d2e1a72fcca58-7afd7789d4cso1651021b3a.2 for ; Fri, 07 Nov 2025 12:12:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1762546324; x=1763151124; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=CY264xw56ZDC82FBQPjZ1NQ2YNykk6EQ4FAudA0Gbzg=; b=MDvGG+tFYQD2VQ9SAXQ2PmE9IJ5NY/imxKkt1WLgH1VApkHFJthlYwTffC8kRB/PV5 XZA6sAwTqNH3wg2ioim8LAnTeUtc0i6tt70D/HKIH6kTbKcP57bqV/g7tmLxvI788wg1 6P/2uTLGL03TlLOCp0wWTebkm4iZ8IWTd7PPXyOnzMMJqSbfzZZfi1FMC22CMEwlUzbw LpFYRddzqorV+9dqSFef4cjmulqXY0qf48a1cmMWzXzzxZymvP1kv+aUwut/pC20NaP5 EJOgJkeQeuwpvn/ziCFaLfWdzISaIvW9pmvntg6P/MKkc998GgJDBWlMsiZcC7NfiDv1 9mJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762546324; x=1763151124; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=CY264xw56ZDC82FBQPjZ1NQ2YNykk6EQ4FAudA0Gbzg=; b=EvJufi8WhFdH7OBog8GwOhOMqRbkxHCuY0dfb+kD0mpsDzFeEV2vzAGuHNv+HBWusI SWCOsb4NCaqlN5TtZPQwxnEz5Q6sxZLiy2Sym5OSbIh3Feah/pm8dxjw8LDf0/5Uu3wm e6hMlT+4DrGQk4ziSu4HfcOdwSEb9gbcVbHVnDP7Z/vROgoznJ3yZ/LvkLJEp+lVbSqR lCy9BkXJXr6rwAqQqZHbBiuOcqm5OLIzgMbuiTXwjQKnMcHlVIreYGzKGAJ3Jj9A9Lf/ gBoCsRy4CkLmb9cy4d6yX2emChOgn4D6wtxxADkX1YOT7ZMEY2LWa2fFKhLXWL9RdAlr ZFRA== X-Forwarded-Encrypted: i=1; AJvYcCVvN/9xx33DxvS+uExy1ErC2XZhvLzWmKKOUm0hYyyDw/EjS/SJes2XD1biyOaGaC4MhYzglRVyiBLsHfM=@vger.kernel.org X-Gm-Message-State: AOJu0Ywc4pZEbJfG9+zOI0PU29lxHSIT3PGSpiDan7pQFNmtD4hqvt32 qMG2c9ZXeU7cz8Y7pFg4B5Lo4KMCZyJQRGwkXrUCwiLK8oeRBE6ZCR1j8ahf3MLh4UKWsqfkoSi lV3B5ZZXcWQ1+AA== X-Google-Smtp-Source: AGHT+IGJkeAiHWSbfAqAmbrJhJXI8l2dLLx+G2d5KdfR6vlYzKFWd4yJEYIk6DV9zBrXVdkdiXsmyfy5904hwA== X-Received: from pfes7.prod.google.com ([2002:aa7:8d47:0:b0:7ae:ad77:dfcd]) (user=jmattson job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:1a8f:b0:772:3b9d:70fb with SMTP id d2e1a72fcca58-7b22718089dmr646594b3a.31.1762546323829; Fri, 07 Nov 2025 12:12:03 -0800 (PST) Date: Fri, 7 Nov 2025 12:11:27 -0800 In-Reply-To: <20251107201151.3303170-1-jmattson@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20251107201151.3303170-1-jmattson@google.com> X-Mailer: git-send-email 2.51.2.1041.gc1ab5b90ca-goog Message-ID: <20251107201151.3303170-5-jmattson@google.com> Subject: [RFC PATCH 4/6] KVM: x86: nSVM: Cache g_pat in vmcb_ctrl_area_cached From: Jim Mattson To: Sean Christopherson , Paolo Bonzini , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Alexander Graf , Joerg Roedel , Avi Kivity , "=?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?=" , David Hildenbrand , kvm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Jim Mattson Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add a g_pat field to the vmcb_ctrl_area_cached struct for caching the VMCB12 g_pat at emulated VMRUN. This is a preliminary step to allow for proper validation and handling of the VMCB12 g_pat when nested paging is enabled in VMCB12. Fixes: 3d6368ef580a ("KVM: SVM: Add VMRUN handler") Signed-off-by: Jim Mattson --- arch/x86/kvm/svm/nested.c | 6 ++++++ arch/x86/kvm/svm/svm.h | 1 + 2 files changed, 7 insertions(+) diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c index 51a89d6aa29f..6e48572e2bd7 100644 --- a/arch/x86/kvm/svm/nested.c +++ b/arch/x86/kvm/svm/nested.c @@ -984,6 +984,12 @@ int nested_svm_vmrun(struct kvm_vcpu *vcpu) =20 nested_copy_vmcb_control_to_cache(svm, &vmcb12->control); nested_copy_vmcb_save_to_cache(svm, &vmcb12->save); + /* + * To facilitate independent validation of the cached state + * save area and the cached control area, we cache the vmcb12 + * g_pat with the cached controls. + */ + svm->nested.ctl.g_pat =3D vmcb12->save.g_pat; =20 if (!nested_vmcb_check_save(vcpu) || !nested_vmcb_check_controls(vcpu)) { diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h index e4b04f435b3d..c91e20aa3ec2 100644 --- a/arch/x86/kvm/svm/svm.h +++ b/arch/x86/kvm/svm/svm.h @@ -176,6 +176,7 @@ struct vmcb_ctrl_area_cached { u64 virt_ext; u32 clean; u64 bus_lock_rip; + u64 g_pat; union { #if IS_ENABLED(CONFIG_HYPERV) || IS_ENABLED(CONFIG_KVM_HYPERV) struct hv_vmcb_enlightenments hv_enlightenments; --=20 2.51.2.1041.gc1ab5b90ca-goog From nobody Fri Dec 19 20:15:19 2025 Received: from mail-pj1-f73.google.com (mail-pj1-f73.google.com [209.85.216.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3A67230E0EB for ; Fri, 7 Nov 2025 20:12:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762546328; cv=none; b=Pj/GmpyMz45v99KR4sqlZt2Jf3HndTSls1z1zCuFucMa5rRPLAXpcekfCznmKfpol4K0TcSI4JUGlI04sODa4CwI8vYjQk1r0SAXreOztHrVkWi1uCiObor4cf+8X19b7PVHWzF4PTqqF/3CHjJKKNAV5YvIvKPvwfeOKCMbGIA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762546328; c=relaxed/simple; bh=0PSUXZdtAcAVckwW4lK0mGvQ71b1MKoWNaHJVsrSzZk=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=KAlJ9rbBYrUQaSsiUGSnLywu5gYK7u0MoqczIvG1Y/8HXdf5yXGUHbX64tuQsCG8tp1Gs7O1ZV2Z3iGmQ7U8QbO1YhdHeQjN0/tzqbXuu2jaUOgSWhauPIOfA00X30oiL8CIdLRNHxn+OeFdhvJjUHHOvqvy5Hfxpm6cYGU8Nn4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--jmattson.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=HpZd5jDD; arc=none smtp.client-ip=209.85.216.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--jmattson.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="HpZd5jDD" Received: by mail-pj1-f73.google.com with SMTP id 98e67ed59e1d1-3416dc5754fso2019915a91.1 for ; Fri, 07 Nov 2025 12:12:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1762546325; x=1763151125; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=V1c44yEBK31lRCe8Lbf69dQHnIbjaXo/fMdKgYC3v+E=; b=HpZd5jDDA7maAjugMbhW4c3/UfWEnnPik7iYt6wIqmVT5WZ+pirj7rWx/REWW3hlOv xisYn+tXSvmcUi2wM/ZQlfUDmphV08vt9aE/8ICLNK9AeQSwvfdcjPaeOPoyDfaF0+y/ bzsg+N2uid758X9xh9CgZrSSuGd82WjLf4ldpiaxXgiYGakla+OvW5SHqGGBDGqmGtP9 aQJ5eBaPXo/VtzfA88SMuV6h0oCRW1+6+RYsk7AHkfPp41ZlY6ffrJ99drrXzfIJxKua dKdT8cR8dwEahtBUvwAXj/DNr7a7pO33Pr1dtD8v1ry8t2W1SyzINkwQMjHUJ5RukYIH ZKYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762546325; x=1763151125; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=V1c44yEBK31lRCe8Lbf69dQHnIbjaXo/fMdKgYC3v+E=; b=ilS2GleHxspwdPt21gioXN5Hf5JmcAoRjGSgMDgW2dz/rKLkFrRbRKWewJhcj+Wmr6 e1bIQUDfC/R4gO1p0jxer3tJ6jltlosmcRdnMoeVdrfwMoDyjCxR+O39W1JSxWYGkflK w3FoXObbILYZu+KKDhIVVuJEVNsIxgQ6AJ4UUSCZrh8orT2tglI94UJJZ1ei9oiXH3iR RILAi0as6r/q6W/KcT4G2JoA6WwftpnJvhQjvpJwaTuEi8f3wjS7UVTWGAsoffgXseKf nhNEqvn2iYzwOTimXztYFuZZC1IErO+2yc99K0lvFctPH110u/3ox7z+fRxE2xwVlU2W WVtw== X-Forwarded-Encrypted: i=1; AJvYcCWvMc2dXUkfb6BNBPiMtww0JdthcmAxg+OzuvAXxtYzRXmNrYjOJZtnDyvJlCO4Lmkrl2JeBVPlMAZDhXg=@vger.kernel.org X-Gm-Message-State: AOJu0Yw2vpk2M5o0vGOjcVkPzAVx5f/9to1mOG5iJBFyc+siOC4LslF0 CJxxEhwXITiqrBCRDfsSOctKInhn35dU4z0DrPmbS2f8vQFgiwic3ix515O5crQPYr6wZsHMeTf niHXysihCKaJ7iA== X-Google-Smtp-Source: AGHT+IFmjsIKMoEWnsUYi/J8vax4CWimpYEJ50LiM8ewxXqIhiQY8LKKFNOWWpBuxiDjIkkZLdAnyBQIvKPkIA== X-Received: from pjbnc11.prod.google.com ([2002:a17:90b:37cb:b0:33b:ca21:e3e7]) (user=jmattson job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:3145:b0:343:688e:3252 with SMTP id 98e67ed59e1d1-3436cb89d6cmr561450a91.12.1762546325387; Fri, 07 Nov 2025 12:12:05 -0800 (PST) Date: Fri, 7 Nov 2025 12:11:28 -0800 In-Reply-To: <20251107201151.3303170-1-jmattson@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20251107201151.3303170-1-jmattson@google.com> X-Mailer: git-send-email 2.51.2.1041.gc1ab5b90ca-goog Message-ID: <20251107201151.3303170-6-jmattson@google.com> Subject: [RFC PATCH 5/6] KVM: x86: nSVM: Add validity check for the VMCB12 g_pat From: Jim Mattson To: Sean Christopherson , Paolo Bonzini , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Alexander Graf , Joerg Roedel , Avi Kivity , "=?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?=" , David Hildenbrand , kvm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Jim Mattson Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When nested paging is enabled for VMCB12, an invalid g_pat causes an immediate #VMEXIT with exit code VMEXIT_INVALID, as specified in the APM. Fixes: 3d6368ef580a ("KVM: SVM: Add VMRUN handler") Signed-off-by: Jim Mattson --- arch/x86/kvm/svm/nested.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c index 6e48572e2bd7..43429399993c 100644 --- a/arch/x86/kvm/svm/nested.c +++ b/arch/x86/kvm/svm/nested.c @@ -336,6 +336,10 @@ static bool __nested_vmcb_check_controls(struct kvm_vc= pu *vcpu, if (CC((control->nested_ctl & SVM_NESTED_CTL_NP_ENABLE) && !npt_enabled)) return false; =20 + if (CC((control->nested_ctl & SVM_NESTED_CTL_NP_ENABLE) && + npt_enabled && !kvm_pat_valid(control->g_pat))) + return false; + if (CC(!nested_svm_check_bitmap_pa(vcpu, control->msrpm_base_pa, MSRPM_SIZE))) return false; --=20 2.51.2.1041.gc1ab5b90ca-goog From nobody Fri Dec 19 20:15:19 2025 Received: from mail-pg1-f201.google.com (mail-pg1-f201.google.com [209.85.215.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 880AE32AAAF for ; Fri, 7 Nov 2025 20:12:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762546329; cv=none; b=WKkYFvCLa8v4f2IRHXT/b8nB5BP0sKvcSDFR6nr9msNPrPIFl8RRaYtK+so2dQhA9FI1c5pNv1gyDT1HuPmjLi9P2O7/94y8TLDdpmT8wRF+5ONkBf/rFZ24eUBgEcUINiHFyOd65paa5qkKVMfkbcO8apRvfd2E34qkm+7SpOg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762546329; c=relaxed/simple; bh=A9B2jBetxyTpijSN5qBDOVR7TSExvw4XrrMBpuNK3/E=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=ZauOx5o5324QiWSehL57n4w9F5QjlsCS/e1yHbZlFqBXgHe58p6itfUSIXx/7Z2LDD49nh8Ga8TwRLtIUK0d+4DtXNU8VCt/EtLaKiBdbN0n92ZKTFVNbGKxKryd+48KzGMsI51MbqTVZqn90in/hpu6r4UDRS7ybACbbKliyNA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--jmattson.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=jv8uKtNc; arc=none smtp.client-ip=209.85.215.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--jmattson.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="jv8uKtNc" Received: by mail-pg1-f201.google.com with SMTP id 41be03b00d2f7-b630b4d8d52so1051977a12.3 for ; Fri, 07 Nov 2025 12:12:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1762546327; x=1763151127; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=qKeLCCM6sdWIqGdgWzNkrGSaMg8DXqAf6MQfYLasg+w=; b=jv8uKtNcO9dLQzlZlsjVJOnH9E+U7ebI7kqJL259fNr3iIpl8Nc2q1FfsETnVsTEnQ tuIuZP5Twnwd3hWOox2tNgDIdDaxfqTY+LC1sE8hjO396lvpJv238r6na8ZtErldGGV3 nrg+qZnYQ7QIz0mJaAqhQNKRIYs/knZoLwZ6YSmF8wGreEcPLADrYuUerpdiK2d+puBo ZUnvjrvECJajAi6CfFKeyG7mlZz8qR4HNndWkTnuNyo/5hln5VJdMnXeuBiwJH4XSOqx aUgXPLzjCTRGYncXW1nlidshokBUDX/wlJTJ10lzMCaWxwpDJe8MFAV7YlxtTvolxZ6R X7xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762546327; x=1763151127; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=qKeLCCM6sdWIqGdgWzNkrGSaMg8DXqAf6MQfYLasg+w=; b=I1aCkQkEy00gfNDf9UTS5IPlKbXMT/P6k4Dq0LCkdopgaJOiYRxL91Q6Ldeo2/pFDn zeY4RGTDQ5XhFrLSvWwxif/vh/HbRScuVciu3Q5rr+QuTWuwek0rUz9YOGnie+615jck QiAOvbC4XeeXiXPQrXoJkvyUBTLrI29LDTHTp6vgPdIkAOK1ANl5MSD9yke2vnnbDFzP b2UvTcR0EZEr7ZT7eSDJiQr1C+zJHQPa3au9uXbD+nVRW8Xv4/8obKjmVS5VYfYHd9Ax fB2zXJqJ+PEU/HA8Xc9UfEgYixV0HRl4QBr5kmUTVyzgAAB57ccF8qfKhZVGjZ6NbGLu zcJw== X-Forwarded-Encrypted: i=1; AJvYcCX2V+3udAnQkXNoBSNm8z1EuQ/2xxuZbTBdPxStCgQLR5OJgKaRqzDbUdez9sh3F96/9cjzlB4gAp2Oo10=@vger.kernel.org X-Gm-Message-State: AOJu0YyiYvrxnAEHYvrtSbfAifFThMKb8Eclz6dbCNOcErLA9ORXI78o MLm4p4dzh8NdS3SNoFjDPMkYQ0SJ4XWX2JhaO40FTpdnGKggtsFKU4hfGt3dwhwu/a2p2UJp78g U37VtX1Tq4VeYyw== X-Google-Smtp-Source: AGHT+IEMX81+3tMgOE6zuX67fA9qMfaXSo8kQxA665QBfG7436SzZBgAY0VnspsXWL8BWaeSJWhcyshGWiIDDA== X-Received: from pjbgx24.prod.google.com ([2002:a17:90b:1258:b0:341:88c5:20ac]) (user=jmattson job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:1d0a:b0:340:e8e9:cc76 with SMTP id 98e67ed59e1d1-3436cb22a57mr496539a91.11.1762546326716; Fri, 07 Nov 2025 12:12:06 -0800 (PST) Date: Fri, 7 Nov 2025 12:11:29 -0800 In-Reply-To: <20251107201151.3303170-1-jmattson@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20251107201151.3303170-1-jmattson@google.com> X-Mailer: git-send-email 2.51.2.1041.gc1ab5b90ca-goog Message-ID: <20251107201151.3303170-7-jmattson@google.com> Subject: [RFC PATCH 6/6] KVM: x86: nSVM: Use cached VMCB12 g_pat in VMCB02 when using NPT From: Jim Mattson To: Sean Christopherson , Paolo Bonzini , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Alexander Graf , Joerg Roedel , Avi Kivity , "=?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?=" , David Hildenbrand , kvm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Jim Mattson Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When nested paging is enabled in VMCB12, copy the (cached and validated) VMCB12 g_pat to VMCB02. Fixes: 15038e147247 ("KVM: SVM: obey guest PAT") Signed-off-by: Jim Mattson --- arch/x86/kvm/svm/nested.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c index 43429399993c..21d8db10525d 100644 --- a/arch/x86/kvm/svm/nested.c +++ b/arch/x86/kvm/svm/nested.c @@ -605,8 +605,10 @@ void nested_vmcb02_compute_g_pat(struct vcpu_svm *svm) if (!svm->nested.vmcb02.ptr) return; =20 - /* FIXME: merge g_pat from vmcb01 and vmcb12. */ - svm->nested.vmcb02.ptr->save.g_pat =3D svm->vmcb01.ptr->save.g_pat; + if (nested_npt_enabled(svm)) + svm->nested.vmcb02.ptr->save.g_pat =3D svm->nested.ctl.g_pat; + else + svm->nested.vmcb02.ptr->save.g_pat =3D svm->vmcb01.ptr->save.g_pat; } =20 static void nested_vmcb02_prepare_save(struct vcpu_svm *svm, struct vmcb *= vmcb12) --=20 2.51.2.1041.gc1ab5b90ca-goog