On 10/29/2025 5:20 AM, Sagi Shahar wrote:
From: Isaku Yamahata <[email protected]>

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 <[email protected]>


This also exercises the KVM_TDX_CAPABILITIES ioctl.

Signed-off-by: Isaku Yamahata <[email protected]>
Co-developed-by: Sagi Shahar <[email protected]>
Signed-off-by: Sagi Shahar <[email protected]>
---
  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);


Reply via email to