Re: [PATCH v12 13/23] KVM: selftests: TDX: Use KVM_TDX_CAPABILITIES to validate TDs' attribute configuration

From: Binbin Wu

Date: Wed Oct 29 2025 - 21:35:12 EST




On 10/29/2025 5:20 AM, Sagi Shahar wrote:
From: Isaku Yamahata <isaku.yamahata@xxxxxxxxx>

Make sure that all the attributes enabled by the test are reported as
supported by the TDX module.
More accurately, supported by both the TDX module and KVM.
KVM filters out the attributes not supported by itself.

Otherwise,
Reviewed-by: Binbin Wu <binbin.wu@xxxxxxxxxxxxxxx>


This also exercises the KVM_TDX_CAPABILITIES ioctl.

Signed-off-by: Isaku Yamahata <isaku.yamahata@xxxxxxxxx>
Co-developed-by: Sagi Shahar <sagis@xxxxxxxxxx>
Signed-off-by: Sagi Shahar <sagis@xxxxxxxxxx>
---
tools/testing/selftests/kvm/lib/x86/tdx/tdx_util.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)

diff --git a/tools/testing/selftests/kvm/lib/x86/tdx/tdx_util.c b/tools/testing/selftests/kvm/lib/x86/tdx/tdx_util.c
index 7a622b4810b1..2551b3eac8f8 100644
--- a/tools/testing/selftests/kvm/lib/x86/tdx/tdx_util.c
+++ b/tools/testing/selftests/kvm/lib/x86/tdx/tdx_util.c
@@ -231,6 +231,18 @@ static void vm_tdx_filter_cpuid(struct kvm_vm *vm,
free(tdx_cap);
}
+static void tdx_check_attributes(struct kvm_vm *vm, uint64_t attributes)
+{
+ struct kvm_tdx_capabilities *tdx_cap;
+
+ tdx_cap = tdx_read_capabilities(vm);
+
+ /* Make sure all the attributes are reported as supported */
+ TEST_ASSERT_EQ(attributes & tdx_cap->supported_attrs, attributes);
+
+ free(tdx_cap);
+}
+
void vm_tdx_init_vm(struct kvm_vm *vm, uint64_t attributes)
{
struct kvm_tdx_init_vm *init_vm;
@@ -250,6 +262,8 @@ void vm_tdx_init_vm(struct kvm_vm *vm, uint64_t attributes)
memcpy(&init_vm->cpuid, cpuid, kvm_cpuid2_size(cpuid->nent));
free(cpuid);
+ tdx_check_attributes(vm, attributes);
+
init_vm->attributes = attributes;
vm_tdx_vm_ioctl(vm, KVM_TDX_INIT_VM, 0, init_vm);