From: sashiko-bot@kernel.org
To: "Lisa Wang" <wyihan@google.com>
Cc: kvm@vger.kernel.org
Subject: Re: [PATCH v16 19/20] KVM: selftests: Add support for TDX ucalls, via TDVMCALL_REPORT_FATAL_ERROR
Date: Fri, 06 Nov 2026 00:02:19 +0000 [thread overview]
Message-ID: <sashiko-outbox-200422@kernel.org> (raw)
In-Reply-To: <20261105-tdx-selftests-v16-19-2024e8fa517a@google.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] kvm: selftests: ucall_arch_init() permanently overwrites global ucall_x86_ops
--
commit e57af1ee0994af97f6ae447fc9a5abebc0287e67
Author: Sean Christopherson <seanjc@google.com>
KVM: selftests: Add support for TDX ucalls, via TDVMCALL_REPORT_FATAL_ERROR
This patch adds TDX ucall support in KVM selftests by passing the ucall
payload address and a magic value via TDVMCALL_REPORT_FATAL_ERROR. When a
TDX VM is initialized in ucall_arch_init(), ucall_x86_ops is updated to
use the TDX ucall callbacks and synced to the guest.
> diff --git a/tools/testing/selftests/kvm/lib/x86/ucall.c b/tools/testing/selftests/kvm/lib/x86/ucall.c
> index 3aec4dd46d1b2..2a1c61785e5fb 100644
> --- a/tools/testing/selftests/kvm/lib/x86/ucall.c
> +++ b/tools/testing/selftests/kvm/lib/x86/ucall.c
[ ... ]
> @@ -37,6 +61,11 @@ static struct {
>
> void ucall_arch_init(struct kvm_vm *vm, gpa_t mmio_gpa)
> {
> + if (is_tdx_vm(vm)) {
> + ucall_x86_ops.do_ucall = ucall_tdx_do_ucall;
> + ucall_x86_ops.get_ucall = ucall_tdx_get_ucall;
> + }
> +
> sync_global_to_guest(vm, ucall_x86_ops);
> }
[Severity: Medium]
As reported by Sashiko on v15 [1], since ucall_x86_ops is a process-wide
global structure in tools/testing/selftests/kvm/lib/x86/ucall.c:
static struct {
void (*do_ucall)(gva_t uc);
void *(*get_ucall)(struct kvm_vcpu *vcpu);
} ucall_x86_ops = {
.do_ucall = ucall_x86_do_ucall,
.get_ucall = ucall_x86_get_ucall,
};
does overwriting ucall_x86_ops in ucall_arch_init() when is_tdx_vm(vm) is
true without restoring the default handlers when !is_tdx_vm(vm) break tests
that create a non-TDX VM after a TDX VM (or run both concurrently) in the
same process?
If a non-TDX VM is initialized after a TDX VM via ucall_init() ->
ucall_arch_init(), sync_global_to_guest(vm, ucall_x86_ops) will copy
ucall_tdx_do_ucall into the non-TDX guest, causing the guest to execute
TDCALL and fault with #UD on its first ucall.
Similarly, on the host side, ucall_arch_get_ucall() dispatches through the
single global ucall_x86_ops.get_ucall pointer:
void *ucall_arch_get_ucall(struct kvm_vcpu *vcpu)
{
return ucall_x86_ops.get_ucall(vcpu);
}
so get_ucall() -> ucall_arch_get_ucall() will check for
KVM_SYSTEM_EVENT_TDX_FATAL instead of KVM_EXIT_IO for any non-TDX VM once a
TDX VM has been initialized. Should ucall_arch_init() restore the default x86
callbacks when !is_tdx_vm(vm) (or should ucall_arch_get_ucall() dispatch
based on is_tdx_vm(vcpu->vm))?
[1] https://lore.kernel.org/r/20261002091337.9BDF91F0089A@smtp.kernel.org
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261105-tdx-selftests-v16-0-2024e8fa517a@google.com?part=19
next prev parent reply other threads:[~2026-11-06 0:02 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-05 23:46 [PATCH v16 00/20] TDX KVM selftests Lisa Wang
2026-11-05 23:46 ` [PATCH v16 01/20] KVM: selftests: Add macros to simplify creating VM shapes for non-default types Lisa Wang
2026-11-05 23:46 ` [PATCH v16 02/20] KVM: selftests: Update kvm_init_vm_address_properties() for TDX Lisa Wang
2026-11-05 23:46 ` [PATCH v16 03/20] KVM: selftests: Initialize the TDX VM Lisa Wang
2026-11-05 23:46 ` [PATCH v16 04/20] KVM: selftests: Expose segment definitions to assembly files Lisa Wang
2026-11-05 23:46 ` [PATCH v16 05/20] tools: include: Add kbuild.h for assembly structure offsets Lisa Wang
2026-11-05 23:46 ` [PATCH v16 06/20] KVM: selftests: Introduce structures for TDX guest boot parameters Lisa Wang
2026-11-05 23:46 ` [PATCH v16 07/20] KVM: selftests: Add TDX boot code Lisa Wang
2026-11-05 23:46 ` [PATCH v16 08/20] KVM: selftests: Expose functions to get default sregs values Lisa Wang
2026-11-05 23:46 ` [PATCH v16 09/20] KVM: selftests: Set up TDX boot code region Lisa Wang
2026-11-05 23:46 ` [PATCH v16 10/20] KVM: selftests: Set up TDX boot parameters region Lisa Wang
2026-11-05 23:46 ` [PATCH v16 11/20] KVM: selftests: Require guest_memfd for TDX VMs Lisa Wang
2026-11-05 23:46 ` [PATCH v16 12/20] KVM: selftests: Call KVM_TDX_INIT_VCPU when creating a new TDX vcpu Lisa Wang
2026-11-05 23:46 ` [PATCH v16 13/20] KVM: selftests: Load per-vCPU guest stack in TDX boot parameters Lisa Wang
2026-11-05 23:46 ` [PATCH v16 14/20] KVM: selftests: Set entry point for TDX guest code Lisa Wang
2026-11-05 23:46 ` [PATCH v16 15/20] KVM: selftests: Add helpers to init TDX memory and finalize VM Lisa Wang
2026-11-05 23:47 ` [PATCH v16 16/20] KVM: selftests: Load private memory and finalize TDX VM in kvm_arch_vm_finalize_vcpus() Lisa Wang
2026-11-05 23:47 ` [PATCH v16 17/20] KVM: selftests: Add a helper to issue TDVMCALLs from the TDX vm Lisa Wang
2026-11-05 23:47 ` [PATCH v16 18/20] KVM: selftests: Add support for per-VM ucall ops on x86 Lisa Wang
2026-11-06 0:02 ` sashiko-bot
2026-11-06 14:52 ` Sean Christopherson
2026-11-06 16:47 ` [PATCH v16.1] KVM: selftests: Add support for TDX ucalls, via TDVMCALL_REPORT_FATAL_ERROR Sean Christopherson
2026-11-05 23:47 ` [PATCH v16 19/20] " Lisa Wang
2026-11-06 0:02 ` sashiko-bot [this message]
2026-11-05 23:47 ` [PATCH v16 20/20] 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=sashiko-outbox-200422@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=wyihan@google.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