Kernel KVM virtualization development
 help / color / mirror / Atom feed
From: "Nikunj A. Dadhania" <nikunj@amd.com>
To: Sean Christopherson <seanjc@google.com>,
	Tom Lendacky <thomas.lendacky@amd.com>
Cc: Kai Huang <kai.huang@intel.com>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"pbonzini@redhat.com" <pbonzini@redhat.com>,
	"joao.m.martins@oracle.com" <joao.m.martins@oracle.com>,
	"bp@alien8.de" <bp@alien8.de>
Subject: Re: [PATCH v6 7/7] KVM: SVM: Add Page modification logging support
Date: Thu, 14 May 2026 09:44:40 +0530	[thread overview]
Message-ID: <2f86d83c-e727-4be0-82ee-9a76e77c4ab6@amd.com> (raw)
In-Reply-To: <ae_EBMJVuNA8PaW5@google.com>



On 4/28/2026 1:46 AM, Sean Christopherson wrote:
> On Sat, Apr 25, 2026, Tom Lendacky wrote:
>> On 4/24/26 11:25, Tom Lendacky wrote:
>>>> Now, maybe the APM is trying to say only the save area is undefined, in which
>>>> case PML Index is fine and can and should be left alone.  But if that's the case,
>>>> the APM needs to be updated to make explicitly clear what fields in the VMCS are
>>>> and are not valid after SHUTDOWN.
>>>
>>> I'm checking to see if I can get clarification on this.
>>
>> PML_INDEX will be valid even when a SHUTDOWN is intercepted. I'm working
>> to see if we can update the APM to identify what would be valid and what
>> wouldn't be in this situation.
>>
>> For a triple-fault SHUTDOWN, the saved x86 state could be inconsistent
>> because the CPU stopped in the middle of a sequence and redirected to
>> shutdown. Everything will be saved, but it might not be valid x86 state.
> 
> Yeah, I assumed that the APM wording was an overly-broad description of why guest
> state would be garbage.
> 
>> The question then becomes are there fields within the VMCB control area
>> that are based on x86 state that might not be valid (e.g. V_IRQ or nRIP,
>> etc.).
> 
> FWIW, even a conservative iset of "these fields/areas are guaranteed to be sane
> and consistent" would be super helpful.  The big problem right now is that the
> wording reads like the entire GHCB is suspect.

I believe you meant VMCB above, not GHCB. :-)

>>> The APM states that the VMCB is undefined after SHUTDOWN. PML index
>>> could be anything:
>>>
>>>   15.14.3 Shutdown Intercept
>>>   When this intercept occurs, any condition that normally causes a shutdown causes a #VMEXIT to the
>>>   VMM instead. After an intercepted shutdown, the state saved in the VMCB is undefined.

The anticipated APM update will clarify the wording as follows:

  "After an intercepted shutdown, the VMCB control area is valid (with the
   exception of offsets 60h, 61h, and 68h) and the VMCB state save area is
   undefined."

Based on this clarification, I will initialize the PML index only during
reset and leave it unchanged in the case of an INIT event.

diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
index d9dc725786e6..f5a17274868e 100644
--- a/arch/x86/kvm/svm/svm.c
+++ b/arch/x86/kvm/svm/svm.c
@@ -1216,7 +1216,9 @@ static void init_vmcb(struct kvm_vcpu *vcpu, bool init_event)
 		 * svm_update_cpu_dirty_logging()
 		 */
 		control->pml_addr = (u64)__sme_set(page_to_phys(vcpu->arch.pml_page));
-		control->pml_index = PML_HEAD_INDEX;
+
+		if (!init_event)
+			control->pml_index = PML_HEAD_INDEX;
 	}
 
 	if (sev_guest(vcpu->kvm))

Regards,
Nikunj


  reply	other threads:[~2026-05-14  4:14 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-07  6:32 [PATCH v6 0/7] KVM: SVM: Add Page Modification Logging (PML) support Nikunj A Dadhania
2026-04-07  6:32 ` [PATCH v6 1/7] KVM: x86: Carve out PML flush routine Nikunj A Dadhania
2026-05-08 22:52   ` Sean Christopherson
2026-05-12  5:36     ` Nikunj A. Dadhania
2026-04-07  6:32 ` [PATCH v6 2/7] KVM: x86: Move PML page to common vcpu arch structure Nikunj A Dadhania
2026-05-08 22:57   ` Sean Christopherson
2026-05-12  5:45     ` Nikunj A. Dadhania
2026-04-07  6:32 ` [PATCH v6 3/7] KVM: VMX: Use cpu_dirty_log_size instead of enable_pml for PML checks Nikunj A Dadhania
2026-04-07  6:32 ` [PATCH v6 4/7] x86/cpufeatures: Add Page modification logging Nikunj A Dadhania
2026-04-07  6:32 ` [PATCH v6 5/7] KVM: SVM: Use BIT_ULL for 64-bit nested_ctl bit definitions Nikunj A Dadhania
2026-04-07  6:32 ` [PATCH v6 6/7] KVM: nSVM: Add helpers to temporarily switch to vmcb01 Nikunj A Dadhania
2026-04-07  6:32 ` [PATCH v6 7/7] KVM: SVM: Add Page modification logging support Nikunj A Dadhania
2026-04-20  6:38   ` Nikunj A. Dadhania
2026-04-21 15:08     ` Sean Christopherson
2026-04-21 23:50       ` Huang, Kai
2026-04-22  0:30         ` Sean Christopherson
2026-04-22  1:42           ` Huang, Kai
2026-04-22  5:59             ` Nikunj A. Dadhania
2026-04-22  8:14               ` Huang, Kai
2026-04-22 13:20             ` Sean Christopherson
2026-04-22 22:14               ` Huang, Kai
2026-04-24 16:25               ` Tom Lendacky
2026-04-25 14:45                 ` Tom Lendacky
2026-04-27 20:16                   ` Sean Christopherson
2026-05-14  4:14                     ` Nikunj A. Dadhania [this message]
2026-04-21 23:04   ` Yosry Ahmed
2026-04-21 23:15     ` Sean Christopherson
2026-04-22  6:26       ` Nikunj A. Dadhania
2026-04-22 19:48         ` 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=2f86d83c-e727-4be0-82ee-9a76e77c4ab6@amd.com \
    --to=nikunj@amd.com \
    --cc=bp@alien8.de \
    --cc=joao.m.martins@oracle.com \
    --cc=kai.huang@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=seanjc@google.com \
    --cc=thomas.lendacky@amd.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox