From: Sean Christopherson <seanjc@google.com>
To: Ackerley Tng <ackerleytng@google.com>
Cc: Lisa Wang <wyihan@google.com>,
Andrew Jones <ajones@ventanamicro.com>,
Binbin Wu <binbin.wu@linux.intel.com>,
Chao Gao <chao.gao@intel.com>,
Chenyi Qiang <chenyi.qiang@intel.com>,
Dave Hansen <dave.hansen@linux.intel.com>,
Erdem Aktas <erdemaktas@google.com>,
Ira Weiny <ira.weiny@intel.com>,
Isaku Yamahata <isaku.yamahata@intel.com>,
Kiryl Shutsemau <kas@kernel.org>,
linux-kselftest@vger.kernel.org,
Paolo Bonzini <pbonzini@redhat.com>,
"Pratik R. Sampat" <pratikrajesh.sampat@amd.com>,
Reinette Chatre <reinette.chatre@intel.com>,
Rick Edgecombe <rick.p.edgecombe@intel.com>,
Roger Wang <runanwang@google.com>,
Ryan Afranji <afranji@google.com>,
Sagi Shahar <sagis@google.com>, Shuah Khan <shuah@kernel.org>,
Oliver Upton <oupton@kernel.org>,
Jeremiah McReynolds <jmcrey@google.com>,
kvm@vger.kernel.org, linux-coco@lists.linux.dev,
linux-kernel@vger.kernel.org, x86@kernel.org
Subject: Re: [PATCH v13 19/22] KVM: selftests: Finalize TD memory as part of kvm_arch_vm_finalize_vcpus
Date: Fri, 5 Jun 2026 13:48:54 -0700 [thread overview]
Message-ID: <aiM2Nm9Eh68mIVX3@google.com> (raw)
In-Reply-To: <CAEvNRgF09SfDm=OgbrS8-wpfxbNecQkqAQwf1ELq1jWu7NjbUA@mail.gmail.com>
On Fri, Jun 05, 2026, Ackerley Tng wrote:
> Sean Christopherson <seanjc@google.com> writes:
>
> >
> > [...snip...]
> >
> >> Was kvm_arch_vm_finalize_vcpus() supposed to be for finalizing vCPUs
> >> instead?
> >>
> >> The awkward part is that kvm_arch_vm_finalize_vcpus() is called from
> >> __vm_create_with_vcpus().
> >>
> >> While building this POC to test conversions [1] I only wanted to create
> >> the vm and vcpus and didn't want to finalize yet, since I still needed
> >> to do more mappings in the guest (and I needed the vm pointer to do
> >> mappings in the guest).
> >
> > Hmm, I would argue this is a flaw in the selftests infrastructure. IMO, as a
> > developer, it's quite surprising that the current value of a global variable
> > doesn't show up in the VM automagically. I totally understand why selftests
> > work that way, but it's certainly odd and annoying. If _that_ were solved, then
> > the kludginess of what you're doing goes away.
> >
> > The other way this could be solved is by adding support for annotating globals
> > with a __shared flag, a la the kernel's __bss_decrypted, so that loading memory
> > into the VM can automatically mark the associated globals' pages as shared.
> >
>
> More generally, is your opinion that tests should not have to add extra
> memslots?
I don't care? What I care about is making it as easy and intuitive as possible
for people to write tests, and to minimize maintenance costs.
> If I wanted a shared page, would I have to do
>
> static __shared test_page[4096] = {0};
>
> and then rely on ELF loading to put that in the guest for me? Are there
> some compiler flags/how will I require that test_page be page aligned?
Compilere and linker shenanigans.
> If I mark 10 globals as __shared, would the compiler automatically
> consolidate the shared memory together?
Yes, follow the __bss_decrypted breadcrumbs.
#define __bss_decrypted __section(".bss..decrypted")
> I think it's a bit constraining to require that all guest memory be set
> up statically. It's nice to have but I'd like another option...
You do have options, they just require more work.
> Many tests use vm_userspace_mem_region_add(), CoCo tests that require
> finalizing shouldn't be disallowed that option.
What does that have to do with finalizing the VM?
> >> It's also possible to have some kvm_vm_finalize() call that can be
> >> explicitly and manually invoked from selftests just for CoCo selftests.
> >
> > Why bother? It's obviously possible to all kvm_arch_vm_finalize_vcpus() directly.
>
> Works for me to call directly. Do you mean kvm_arch_vm_finalize_vcpus()
> is the right function where the TD is finalized?
>
> For tests that need to do more setup after creating a vm, is the only
> way out to call __vm_create() then vm_vcpu_add() to avoid premature
> finalization in __vm_create_with_vcpus() when
> kvm_arch_vm_finalize_vcpus() is called?
Depends on what you're doing. Sometimes, the answer will be yes. That's why
there are "low level" APIs, so that some tests can do fancy things, while most
tests can leave the details to the infrastructure.
If there's a recurring problem, or we anticipate one, then we can and should
figure out how to minimize the pain so that tests don't have to deal with the
same boilerplate issues over and over. Hence the __shared idea.
next prev parent reply other threads:[~2026-06-05 20:48 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-21 23:16 [PATCH v13 00/22] TDX KVM selftests Lisa Wang
2026-05-21 23:16 ` [PATCH v13 01/22] KVM: selftests: Add macros to simplify creating VM shapes for non-default types Lisa Wang
2026-05-21 23:16 ` [PATCH v13 02/22] KVM: selftests: Update kvm_init_vm_address_properties() for TDX Lisa Wang
2026-05-21 23:16 ` [PATCH v13 03/22] KVM: selftests: Initialize the TDX VM Lisa Wang
2026-05-21 23:16 ` [PATCH v13 04/22] KVM: selftests: TDX: Use KVM_TDX_CAPABILITIES to validate TDs' attribute configuration Lisa Wang
2026-05-21 23:16 ` [PATCH v13 05/22] KVM: selftests: Expose segment definitions to assembly files Lisa Wang
2026-05-21 23:16 ` [PATCH v13 06/22] tools: include: Add kbuild.h for assembly structure offsets Lisa Wang
2026-05-21 23:16 ` [PATCH v13 07/22] KVM: selftests: Introduce structures for TDX guest boot parameters Lisa Wang
2026-05-22 17:43 ` Yosry Ahmed
2026-05-22 23:05 ` Sean Christopherson
[not found] ` <CAO9r8zMaiGL8v=f72EAwWbwofoUHOkH8r6Se22k2TVxnUCQLOQ@mail.gmail.com>
2026-05-28 19:25 ` Yosry Ahmed
2026-05-21 23:16 ` [PATCH v13 08/22] KVM: selftests: Add TDX boot code Lisa Wang
2026-05-21 23:16 ` [PATCH v13 09/22] KVM: selftests: Expose functions to get default sregs values Lisa Wang
2026-05-21 23:16 ` [PATCH v13 10/22] KVM: selftests: Set up TDX boot code region Lisa Wang
2026-05-21 23:16 ` [PATCH v13 11/22] KVM: selftests: Set up TDX boot parameters region Lisa Wang
2026-05-21 23:16 ` [PATCH v13 12/22] KVM: selftests: Back the first memory region with guest_memfd for TDX Lisa Wang
2026-05-21 23:16 ` [PATCH v13 13/22] KVM: selftests: Set first memory region as shared if guest_memfd Lisa Wang
2026-05-21 23:16 ` [PATCH v13 14/22] KVM: selftests: Expose function to allocate vCPU stack Lisa Wang
2026-05-21 23:16 ` [PATCH v13 15/22] KVM: selftests: Call KVM_TDX_INIT_VCPU when creating a new TDX vcpu Lisa Wang
2026-05-21 23:16 ` [PATCH v13 16/22] KVM: selftests: Load per-vCPU guest stack in TDX boot parameters Lisa Wang
2026-05-21 23:16 ` [PATCH v13 17/22] KVM: selftests: Set entry point for TDX guest code Lisa Wang
2026-05-21 23:16 ` [PATCH v13 18/22] KVM: selftests: Add helpers to init TDX memory and finalize VM Lisa Wang
2026-05-21 23:17 ` [PATCH v13 19/22] KVM: selftests: Finalize TD memory as part of kvm_arch_vm_finalize_vcpus Lisa Wang
2026-06-05 13:58 ` Ackerley Tng
2026-06-05 17:58 ` Sean Christopherson
2026-06-05 18:27 ` Ackerley Tng
2026-06-05 20:48 ` Sean Christopherson [this message]
2026-05-21 23:17 ` [PATCH v13 20/22] KVM: selftests: Implement MMIO WRITE for the TDX VM Lisa Wang
2026-05-21 23:17 ` [PATCH v13 21/22] KVM: selftests: Add ucall support for TDX Lisa Wang
2026-05-21 23:17 ` [PATCH v13 22/22] KVM: selftests: Add TDX lifecycle test Lisa Wang
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=aiM2Nm9Eh68mIVX3@google.com \
--to=seanjc@google.com \
--cc=ackerleytng@google.com \
--cc=afranji@google.com \
--cc=ajones@ventanamicro.com \
--cc=binbin.wu@linux.intel.com \
--cc=chao.gao@intel.com \
--cc=chenyi.qiang@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=erdemaktas@google.com \
--cc=ira.weiny@intel.com \
--cc=isaku.yamahata@intel.com \
--cc=jmcrey@google.com \
--cc=kas@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=linux-coco@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=oupton@kernel.org \
--cc=pbonzini@redhat.com \
--cc=pratikrajesh.sampat@amd.com \
--cc=reinette.chatre@intel.com \
--cc=rick.p.edgecombe@intel.com \
--cc=runanwang@google.com \
--cc=sagis@google.com \
--cc=shuah@kernel.org \
--cc=wyihan@google.com \
--cc=x86@kernel.org \
/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