All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sean Christopherson <seanjc@google.com>
To: Yosry Ahmed <yosry.ahmed@linux.dev>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Jim Mattson <jmattson@google.com>,
	kvm@vger.kernel.org,  linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 13/13] KVM: nSVM: Only copy NP_ENABLE from VMCB01's misc_ctl
Date: Tue, 9 Dec 2025 08:23:28 -0800	[thread overview]
Message-ID: <aThNAPkIRcTxsUMr@google.com> (raw)
In-Reply-To: <20251110222922.613224-14-yosry.ahmed@linux.dev>

On Mon, Nov 10, 2025, Yosry Ahmed wrote:
> The 'misc_ctl' field in VMCB02 is taken as-is from VMCB01. However, the
> only bit that needs to copied is NP_ENABLE.

Nit, explicitly state that all other existing bits are for SEV right away, e.g.

  However, the only bit that needs to copied is NP_ENABLE, as all other known
  bits in misc_ctl are related to SEV guests, and KVM doesn't support nested
  virtualization for SEV guests.

> This is a nop now because other bits are for SEV guests, which do not support
> nested.  Nonetheless, this hardens against future bugs if/when other bits are
> set for L1 but should not be set for L2.
> 
> Opportunistically add a comment explaining why NP_ENABLE is taken from
> VMCB01 and not VMCB02.
> 
> Suggested-by: Jim Mattson <jmattson@google.com>
> Signed-off-by: Yosry Ahmed <yosry.ahmed@linux.dev>
> ---
>  arch/x86/kvm/svm/nested.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c
> index 503cb7f5a4c5f..4e278c1f9e6b3 100644
> --- a/arch/x86/kvm/svm/nested.c
> +++ b/arch/x86/kvm/svm/nested.c
> @@ -837,8 +837,16 @@ static void nested_vmcb02_prepare_control(struct vcpu_svm *svm,
>  						V_NMI_BLOCKING_MASK);
>  	}
>  
> -	/* Copied from vmcb01.  msrpm_base can be overwritten later.  */
> -	vmcb02->control.misc_ctl = vmcb01->control.misc_ctl;
> +	/*
> +	 * Copied from vmcb01.  msrpm_base can be overwritten later.
> +	 *
> +	 * NP_ENABLE in vmcb12 is only used for consistency checks.  If L1
> +	 * enables NPTs, KVM shadows L1's NPTs and uses those to run L2. If L1
> +	 * disables NPT, KVM runs L2 with the same NPTs used to run L1. For the
> +	 * latter, L1 runs L2 with shadow page tables that translate L2 GVAs to
> +	 * L1 GPAs, so the same NPTs can be used for L1 and L2.
> +	 */
> +	vmcb02->control.misc_ctl = vmcb01->control.misc_ctl & SVM_MISC_CTL_NP_ENABLE;
>  	vmcb02->control.iopm_base_pa = vmcb01->control.iopm_base_pa;
>  	vmcb02->control.msrpm_base_pa = vmcb01->control.msrpm_base_pa;
>  
> -- 
> 2.51.2.1041.gc1ab5b90ca-goog
> 

  reply	other threads:[~2025-12-09 16:23 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-10 22:29 [PATCH v2 00/13] Nested SVM fixes, cleanups, and hardening Yosry Ahmed
2025-11-10 22:29 ` [PATCH v2 01/13] KVM: SVM: Switch svm_copy_lbrs() to a macro Yosry Ahmed
2025-11-10 22:29 ` [PATCH v2 02/13] KVM: SVM: Add missing save/restore handling of LBR MSRs Yosry Ahmed
2025-11-10 22:29 ` [PATCH v2 03/13] KVM: selftests: Add a test for LBR save/restore (ft. nested) Yosry Ahmed
2025-11-10 22:29 ` [PATCH v2 04/13] KVM: nSVM: Fix consistency checks for NP_ENABLE Yosry Ahmed
2025-12-09 16:27   ` Sean Christopherson
2025-12-09 18:07     ` Yosry Ahmed
2025-12-09 18:26       ` Sean Christopherson
2025-12-09 18:35         ` Yosry Ahmed
2025-12-09 18:42           ` Sean Christopherson
2025-12-09 20:02             ` Yosry Ahmed
2025-12-12 18:32               ` Sean Christopherson
2025-12-12 18:38                 ` Yosry Ahmed
2025-12-13  1:07                   ` Sean Christopherson
2025-11-10 22:29 ` [PATCH v2 05/13] KVM: nSVM: Add missing consistency check for EFER, CR0, CR4, and CS Yosry Ahmed
2025-11-10 22:29 ` [PATCH v2 06/13] KVM: nSVM: Add missing consistency check for event_inj Yosry Ahmed
2025-11-10 22:29 ` [PATCH v2 07/13] KVM: SVM: Rename vmcb->nested_ctl to vmcb->misc_ctl Yosry Ahmed
2025-11-10 22:29 ` [PATCH v2 08/13] KVM: SVM: Rename vmcb->virt_ext to vmcb->misc_ctl2 Yosry Ahmed
2025-11-10 22:29 ` [PATCH v2 09/13] KVM: nSVM: Cache all used fields from VMCB12 Yosry Ahmed
2025-11-10 22:29 ` [PATCH v2 10/13] KVM: nSVM: Restrict mapping VMCB12 on nested VMRUN Yosry Ahmed
2025-12-09 16:03   ` Sean Christopherson
2025-12-09 18:24     ` Yosry Ahmed
2025-12-09 18:49       ` Sean Christopherson
2025-12-10 23:05     ` Yosry Ahmed
2025-12-11  0:55       ` Yosry Ahmed
2025-12-12 23:30         ` Sean Christopherson
2025-11-10 22:29 ` [PATCH v2 11/13] KVM: nSVM: Simplify nested_svm_vmrun() Yosry Ahmed
2025-12-09 16:11   ` Sean Christopherson
2025-12-09 18:30     ` Yosry Ahmed
2025-12-09 19:09       ` Sean Christopherson
2025-12-10 16:16         ` Yosry Ahmed
2025-12-12 23:23           ` Sean Christopherson
2025-12-11 19:25     ` Yosry Ahmed
2025-12-11 20:13       ` Yosry Ahmed
2025-12-13  0:01         ` Sean Christopherson
2025-12-15 18:34     ` Yosry Ahmed
2025-11-10 22:29 ` [PATCH v2 12/13] KVM: nSVM: Sanitize control fields copied from VMCB12 Yosry Ahmed
2025-12-09 16:19   ` Sean Christopherson
2025-12-09 18:37     ` Yosry Ahmed
2025-11-10 22:29 ` [PATCH v2 13/13] KVM: nSVM: Only copy NP_ENABLE from VMCB01's misc_ctl Yosry Ahmed
2025-12-09 16:23   ` Sean Christopherson [this message]
2025-12-09 18:38     ` Yosry Ahmed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aThNAPkIRcTxsUMr@google.com \
    --to=seanjc@google.com \
    --cc=jmattson@google.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=yosry.ahmed@linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.