From: Chen Yu <yu.c.chen@intel.com>
To: Sagi Shahar <sagis@google.com>
Cc: <linux-kselftest@vger.kernel.org>,
Ackerley Tng <ackerleytng@google.com>,
Ryan Afranji <afranji@google.com>,
Erdem Aktas <erdemaktas@google.com>,
Isaku Yamahata <isaku.yamahata@intel.com>,
Sean Christopherson <seanjc@google.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Shuah Khan <shuah@kernel.org>, Peter Gonda <pgonda@google.com>,
Haibo Xu <haibo1.xu@intel.com>,
Chao Peng <chao.p.peng@linux.intel.com>,
"Vishal Annapurve" <vannapurve@google.com>,
Roger Wang <runanwang@google.com>,
"Vipin Sharma" <vipinsh@google.com>, <jmattson@google.com>,
<dmatlack@google.com>, <linux-kernel@vger.kernel.org>,
<kvm@vger.kernel.org>, <linux-mm@kvack.org>
Subject: Re: [RFC PATCH v5 08/29] KVM: selftests: TDX: Add TDX lifecycle test
Date: Fri, 23 Feb 2024 09:55:06 +0800 [thread overview]
Message-ID: <Zdf6+mvU0PqrPt3t@chenyu5-mobl2> (raw)
In-Reply-To: <20231212204647.2170650-9-sagis@google.com>
Hi Sagi,
On 2023-12-12 at 12:46:23 -0800, Sagi Shahar wrote:
> From: Erdem Aktas <erdemaktas@google.com>
>
> Adding a test to verify TDX lifecycle by creating a TD and running a
> dummy TDG.VP.VMCALL <Instruction.IO> inside it.
>
> Signed-off-by: Erdem Aktas <erdemaktas@google.com>
> Signed-off-by: Ryan Afranji <afranji@google.com>
> Signed-off-by: Sagi Shahar <sagis@google.com>
> Co-developed-by: Ackerley Tng <ackerleytng@google.com>
> Signed-off-by: Ackerley Tng <ackerleytng@google.com>
> ---
> tools/testing/selftests/kvm/Makefile | 4 +
> .../selftests/kvm/include/x86_64/tdx/tdcall.h | 35 ++++++++
> .../selftests/kvm/include/x86_64/tdx/tdx.h | 12 +++
> .../kvm/include/x86_64/tdx/test_util.h | 52 +++++++++++
> .../selftests/kvm/lib/x86_64/tdx/tdcall.S | 90 +++++++++++++++++++
> .../selftests/kvm/lib/x86_64/tdx/tdx.c | 27 ++++++
> .../selftests/kvm/lib/x86_64/tdx/tdx_util.c | 1 +
> .../selftests/kvm/lib/x86_64/tdx/test_util.c | 34 +++++++
> .../selftests/kvm/x86_64/tdx_vm_tests.c | 45 ++++++++++
> 9 files changed, 300 insertions(+)
> create mode 100644 tools/testing/selftests/kvm/include/x86_64/tdx/tdcall.h
> create mode 100644 tools/testing/selftests/kvm/include/x86_64/tdx/tdx.h
> create mode 100644 tools/testing/selftests/kvm/include/x86_64/tdx/test_util.h
> create mode 100644 tools/testing/selftests/kvm/lib/x86_64/tdx/tdcall.S
> create mode 100644 tools/testing/selftests/kvm/lib/x86_64/tdx/tdx.c
> create mode 100644 tools/testing/selftests/kvm/lib/x86_64/tdx/test_util.c
> create mode 100644 tools/testing/selftests/kvm/x86_64/tdx_vm_tests.c
>
> diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile
> index a35150ab855f..80d4a50eeb9f 100644
> --- a/tools/testing/selftests/kvm/Makefile
> +++ b/tools/testing/selftests/kvm/Makefile
> @@ -52,6 +52,9 @@ LIBKVM_x86_64 += lib/x86_64/vmx.c
> LIBKVM_x86_64 += lib/x86_64/sev.c
> LIBKVM_x86_64 += lib/x86_64/tdx/tdx_util.c
> LIBKVM_x86_64 += lib/x86_64/tdx/td_boot.S
> +LIBKVM_x86_64 += lib/x86_64/tdx/tdcall.S
> +LIBKVM_x86_64 += lib/x86_64/tdx/tdx.c
> +LIBKVM_x86_64 += lib/x86_64/tdx/test_util.c
>
> LIBKVM_aarch64 += lib/aarch64/gic.c
> LIBKVM_aarch64 += lib/aarch64/gic_v3.c
> @@ -152,6 +155,7 @@ TEST_GEN_PROGS_x86_64 += set_memory_region_test
> TEST_GEN_PROGS_x86_64 += steal_time
> TEST_GEN_PROGS_x86_64 += kvm_binary_stats_test
> TEST_GEN_PROGS_x86_64 += system_counter_offset_test
> +TEST_GEN_PROGS_x86_64 += x86_64/tdx_vm_tests
>
> # Compiled outputs used by test targets
> TEST_GEN_PROGS_EXTENDED_x86_64 += x86_64/nx_huge_pages_test
> diff --git a/tools/testing/selftests/kvm/include/x86_64/tdx/tdcall.h b/tools/testing/selftests/kvm/include/x86_64/tdx/tdcall.h
> new file mode 100644
> index 000000000000..78001bfec9c8
> --- /dev/null
> +++ b/tools/testing/selftests/kvm/include/x86_64/tdx/tdcall.h
> @@ -0,0 +1,35 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/* Adapted from arch/x86/include/asm/shared/tdx.h */
> +
> +#ifndef SELFTESTS_TDX_TDCALL_H
> +#define SELFTESTS_TDX_TDCALL_H
> +
> +#include <linux/bits.h>
> +#include <linux/types.h>
> +
> +#define TDG_VP_VMCALL_INSTRUCTION_IO_READ 0
> +#define TDG_VP_VMCALL_INSTRUCTION_IO_WRITE 1
> +
> +#define TDX_HCALL_HAS_OUTPUT BIT(0)
> +
> +#define TDX_HYPERCALL_STANDARD 0
> +
> +/*
> + * Used in __tdx_hypercall() to pass down and get back registers' values of
> + * the TDCALL instruction when requesting services from the VMM.
> + *
> + * This is a software only structure and not part of the TDX module/VMM ABI.
> + */
> +struct tdx_hypercall_args {
> + u64 r10;
> + u64 r11;
> + u64 r12;
> + u64 r13;
> + u64 r14;
> + u64 r15;
> +};
> +
> +/* Used to request services from the VMM */
> +u64 __tdx_hypercall(struct tdx_hypercall_args *args, unsigned long flags);
> +
> +#endif // SELFTESTS_TDX_TDCALL_H
> diff --git a/tools/testing/selftests/kvm/include/x86_64/tdx/tdx.h b/tools/testing/selftests/kvm/include/x86_64/tdx/tdx.h
> new file mode 100644
> index 000000000000..a7161efe4ee2
> --- /dev/null
> +++ b/tools/testing/selftests/kvm/include/x86_64/tdx/tdx.h
> @@ -0,0 +1,12 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +#ifndef SELFTEST_TDX_TDX_H
> +#define SELFTEST_TDX_TDX_H
> +
> +#include <stdint.h>
> +
> +#define TDG_VP_VMCALL_INSTRUCTION_IO 30
> +
> +uint64_t tdg_vp_vmcall_instruction_io(uint64_t port, uint64_t size,
> + uint64_t write, uint64_t *data);
> +
> +#endif // SELFTEST_TDX_TDX_H
> diff --git a/tools/testing/selftests/kvm/include/x86_64/tdx/test_util.h b/tools/testing/selftests/kvm/include/x86_64/tdx/test_util.h
> new file mode 100644
> index 000000000000..b570b6d978ff
> --- /dev/null
> +++ b/tools/testing/selftests/kvm/include/x86_64/tdx/test_util.h
> @@ -0,0 +1,52 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +#ifndef SELFTEST_TDX_TEST_UTIL_H
> +#define SELFTEST_TDX_TEST_UTIL_H
> +
> +#include <stdbool.h>
> +
> +#include "tdcall.h"
> +
> +#define TDX_TEST_SUCCESS_PORT 0x30
> +#define TDX_TEST_SUCCESS_SIZE 4
> +
> +/**
> + * Assert that tdx_test_success() was called in the guest.
> + */
> +#define TDX_TEST_ASSERT_SUCCESS(VCPU) \
> + (TEST_ASSERT( \
> + ((VCPU)->run->exit_reason == KVM_EXIT_IO) && \
> + ((VCPU)->run->io.port == TDX_TEST_SUCCESS_PORT) && \
> + ((VCPU)->run->io.size == TDX_TEST_SUCCESS_SIZE) && \
> + ((VCPU)->run->io.direction == \
> + TDG_VP_VMCALL_INSTRUCTION_IO_WRITE), \
> + "Unexpected exit values while waiting for test completion: %u (%s) %d %d %d\n", \
> + (VCPU)->run->exit_reason, \
> + exit_reason_str((VCPU)->run->exit_reason), \
> + (VCPU)->run->io.port, (VCPU)->run->io.size, \
> + (VCPU)->run->io.direction))
> +
> +/**
> + * Run a test in a new process.
> + *
> + * There might be multiple tests we are running and if one test fails, it will
> + * prevent the subsequent tests to run due to how tests are failing with
> + * TEST_ASSERT function. The run_in_new_process function will run a test in a
> + * new process context and wait for it to finish or fail to prevent TEST_ASSERT
> + * to kill the main testing process.
> + */
> +void run_in_new_process(void (*func)(void));
> +
> +/**
> + * Verify that the TDX is supported by KVM.
> + */
> +bool is_tdx_enabled(void);
> +
> +/**
> + * Report test success to userspace.
> + *
> + * Use TDX_TEST_ASSERT_SUCCESS() to assert that this function was called in the
> + * guest.
> + */
> +void tdx_test_success(void);
> +
> +#endif // SELFTEST_TDX_TEST_UTIL_H
> diff --git a/tools/testing/selftests/kvm/lib/x86_64/tdx/tdcall.S b/tools/testing/selftests/kvm/lib/x86_64/tdx/tdcall.S
> new file mode 100644
> index 000000000000..df9c1ed4bb2d
> --- /dev/null
> +++ b/tools/testing/selftests/kvm/lib/x86_64/tdx/tdcall.S
> @@ -0,0 +1,90 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/* Adapted from arch/x86/coco/tdx/tdcall.S */
> +
> +#define TDX_HYPERCALL_r10 0 /* offsetof(struct tdx_hypercall_args, r10) */
> +#define TDX_HYPERCALL_r11 8 /* offsetof(struct tdx_hypercall_args, r11) */
> +#define TDX_HYPERCALL_r12 16 /* offsetof(struct tdx_hypercall_args, r12) */
> +#define TDX_HYPERCALL_r13 24 /* offsetof(struct tdx_hypercall_args, r13) */
> +#define TDX_HYPERCALL_r14 32 /* offsetof(struct tdx_hypercall_args, r14) */
> +#define TDX_HYPERCALL_r15 40 /* offsetof(struct tdx_hypercall_args, r15) */
> +
> +/*
> + * Bitmasks of exposed registers (with VMM).
> + */
> +#define TDX_R10 0x400
> +#define TDX_R11 0x800
> +#define TDX_R12 0x1000
> +#define TDX_R13 0x2000
> +#define TDX_R14 0x4000
> +#define TDX_R15 0x8000
> +
> +#define TDX_HCALL_HAS_OUTPUT 0x1
> +
> +/*
> + * These registers are clobbered to hold arguments for each
> + * TDVMCALL. They are safe to expose to the VMM.
> + * Each bit in this mask represents a register ID. Bit field
> + * details can be found in TDX GHCI specification, section
> + * titled "TDCALL [TDG.VP.VMCALL] leaf".
> + */
> +#define TDVMCALL_EXPOSE_REGS_MASK ( TDX_R10 | TDX_R11 | \
> + TDX_R12 | TDX_R13 | \
> + TDX_R14 | TDX_R15 )
> +
> +.code64
> +.section .text
> +
> +.globl __tdx_hypercall
> +.type __tdx_hypercall, @function
> +__tdx_hypercall:
> + /* Set up stack frame */
> + push %rbp
> + movq %rsp, %rbp
> +
> + /* Save callee-saved GPRs as mandated by the x86_64 ABI */
> + push %r15
> + push %r14
> + push %r13
> + push %r12
> +
> + /* Mangle function call ABI into TDCALL ABI: */
> + /* Set TDCALL leaf ID (TDVMCALL (0)) in RAX */
> + xor %eax, %eax
> +
> + /* Copy hypercall registers from arg struct: */
> + movq TDX_HYPERCALL_r10(%rdi), %r10
> + movq TDX_HYPERCALL_r11(%rdi), %r11
> + movq TDX_HYPERCALL_r12(%rdi), %r12
> + movq TDX_HYPERCALL_r13(%rdi), %r13
> + movq TDX_HYPERCALL_r14(%rdi), %r14
> + movq TDX_HYPERCALL_r15(%rdi), %r15
> +
> + movl $TDVMCALL_EXPOSE_REGS_MASK, %ecx
> +
> + tdcall
> +
> + /* TDVMCALL leaf return code is in R10 */
> + movq %r10, %rax
> +
> + /* Copy hypercall result registers to arg struct if needed */
> + testq $TDX_HCALL_HAS_OUTPUT, %rsi
> + jz .Lout
> +
> + movq %r10, TDX_HYPERCALL_r10(%rdi)
> + movq %r11, TDX_HYPERCALL_r11(%rdi)
> + movq %r12, TDX_HYPERCALL_r12(%rdi)
> + movq %r13, TDX_HYPERCALL_r13(%rdi)
> + movq %r14, TDX_HYPERCALL_r14(%rdi)
> + movq %r15, TDX_HYPERCALL_r15(%rdi)
> +.Lout:
> + /* Restore callee-saved GPRs as mandated by the x86_64 ABI */
> + pop %r12
> + pop %r13
> + pop %r14
> + pop %r15
> +
> + pop %rbp
> + ret
> +
> +/* Disable executable stack */
> +.section .note.GNU-stack,"",%progbits
> diff --git a/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx.c b/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx.c
> new file mode 100644
> index 000000000000..c2414523487a
> --- /dev/null
> +++ b/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx.c
> @@ -0,0 +1,27 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +
> +#include "tdx/tdcall.h"
> +#include "tdx/tdx.h"
> +
> +uint64_t tdg_vp_vmcall_instruction_io(uint64_t port, uint64_t size,
> + uint64_t write, uint64_t *data)
> +{
> + uint64_t ret;
> + struct tdx_hypercall_args args = {
> + .r10 = TDX_HYPERCALL_STANDARD,
> + .r11 = TDG_VP_VMCALL_INSTRUCTION_IO,
> + .r12 = size,
> + .r13 = write,
> + .r14 = port,
> + };
> +
> + if (write)
> + args.r15 = *data;
> +
> + ret = __tdx_hypercall(&args, write ? 0 : TDX_HCALL_HAS_OUTPUT);
> +
> + if (!write)
> + *data = args.r11;
> +
> + return ret;
> +}
> diff --git a/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx_util.c b/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx_util.c
> index 063ff486fb86..b302060049d5 100644
> --- a/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx_util.c
> +++ b/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx_util.c
> @@ -224,6 +224,7 @@ static void tdx_enable_capabilities(struct kvm_vm *vm)
> KVM_X2APIC_API_USE_32BIT_IDS |
> KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK);
> vm_enable_cap(vm, KVM_CAP_SPLIT_IRQCHIP, 24);
> + vm_enable_cap(vm, KVM_CAP_MAX_VCPUS, 512);
> }
>
> static void tdx_configure_memory_encryption(struct kvm_vm *vm)
> diff --git a/tools/testing/selftests/kvm/lib/x86_64/tdx/test_util.c b/tools/testing/selftests/kvm/lib/x86_64/tdx/test_util.c
> new file mode 100644
> index 000000000000..6905d0ca3877
> --- /dev/null
> +++ b/tools/testing/selftests/kvm/lib/x86_64/tdx/test_util.c
> @@ -0,0 +1,34 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +
> +#include <stdbool.h>
> +#include <stdint.h>
> +#include <stdlib.h>
> +#include <sys/wait.h>
> +#include <unistd.h>
> +
> +#include "kvm_util_base.h"
> +#include "tdx/tdx.h"
> +#include "tdx/test_util.h"
> +
> +void run_in_new_process(void (*func)(void))
> +{
> + if (fork() == 0) {
> + func();
> + exit(0);
> + }
> + wait(NULL);
> +}
> +
> +bool is_tdx_enabled(void)
> +{
> + return !!(kvm_check_cap(KVM_CAP_VM_TYPES) & BIT(KVM_X86_TDX_VM));
> +}
> +
> +void tdx_test_success(void)
> +{
> + uint64_t code = 0;
> +
> + tdg_vp_vmcall_instruction_io(TDX_TEST_SUCCESS_PORT,
> + TDX_TEST_SUCCESS_SIZE,
> + TDG_VP_VMCALL_INSTRUCTION_IO_WRITE, &code);
> +}
> diff --git a/tools/testing/selftests/kvm/x86_64/tdx_vm_tests.c b/tools/testing/selftests/kvm/x86_64/tdx_vm_tests.c
> new file mode 100644
> index 000000000000..a18d1c9d6026
> --- /dev/null
> +++ b/tools/testing/selftests/kvm/x86_64/tdx_vm_tests.c
> @@ -0,0 +1,45 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +
> +#include <signal.h>
> +#include "kvm_util_base.h"
> +#include "tdx/tdx_util.h"
> +#include "tdx/test_util.h"
> +#include "test_util.h"
> +
> +void guest_code_lifecycle(void)
> +{
> + tdx_test_success();
> +}
> +
> +void verify_td_lifecycle(void)
> +{
> + struct kvm_vm *vm;
> + struct kvm_vcpu *vcpu;
> +
> + vm = td_create();
> + td_initialize(vm, VM_MEM_SRC_ANONYMOUS, 0);
From a user point of view, this lifecycle test is very useful
to me for vm creation/destruction time test, and I believe you
have an enhanced version to specify the memory size. May I know if
there is any plan to add that part too? And maybe allow the user
to customize the memory size rather than a fixed size.
thanks,
Chenyu
next prev parent reply other threads:[~2024-02-23 1:55 UTC|newest]
Thread overview: 109+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-12 20:46 [RFC PATCH v5 00/29] TDX KVM selftests Sagi Shahar
2023-12-12 20:46 ` [RFC PATCH v5 01/29] KVM: selftests: Add function to allow one-to-one GVA to GPA mappings Sagi Shahar
2024-02-21 1:43 ` Binbin Wu
2024-07-23 19:55 ` Sagi Shahar
2024-03-21 22:29 ` Zhang, Dongsheng X
2024-07-23 19:56 ` Sagi Shahar
2023-12-12 20:46 ` [RFC PATCH v5 02/29] KVM: selftests: Expose function that sets up sregs based on VM's mode Sagi Shahar
2024-02-21 2:18 ` Binbin Wu
2023-12-12 20:46 ` [RFC PATCH v5 03/29] KVM: selftests: Store initial stack address in struct kvm_vcpu Sagi Shahar
2024-02-21 2:29 ` Binbin Wu
2023-12-12 20:46 ` [RFC PATCH v5 04/29] KVM: selftests: Refactor steps in vCPU descriptor table initialization Sagi Shahar
2024-02-21 5:43 ` Binbin Wu
2024-07-23 21:25 ` Sagi Shahar
2023-12-12 20:46 ` [RFC PATCH v5 05/29] KVM: selftests: Add helper functions to create TDX VMs Sagi Shahar
2024-02-22 9:24 ` Yan Zhao
2024-02-28 16:19 ` Binbin Wu
2024-03-21 22:54 ` Zhang, Dongsheng X
2024-04-12 5:34 ` Ackerley Tng
2023-12-12 20:46 ` [RFC PATCH v5 06/29] KVM: selftests: TDX: Use KVM_TDX_CAPABILITIES to validate TDs' attribute configuration Sagi Shahar
2024-02-29 8:31 ` Binbin Wu
2023-12-12 20:46 ` [RFC PATCH v5 07/29] KVM: selftests: TDX: Update load_td_memory_region for VM memory backed by guest memfd Sagi Shahar
2024-02-22 9:19 ` Yan Zhao
2024-07-24 16:42 ` Ackerley Tng
2024-07-25 18:19 ` Ackerley Tng
2023-12-12 20:46 ` [RFC PATCH v5 08/29] KVM: selftests: TDX: Add TDX lifecycle test Sagi Shahar
2024-02-23 1:55 ` Chen Yu [this message]
2024-03-01 4:58 ` Yan Zhao
2024-03-01 7:36 ` Yan Zhao
2024-03-21 23:20 ` Zhang, Dongsheng X
2024-04-12 4:42 ` Ackerley Tng
2024-03-22 21:33 ` Chen, Zide
2024-07-25 19:52 ` Sagi Shahar
2023-12-12 20:46 ` [RFC PATCH v5 09/29] KVM: selftests: TDX: Add report_fatal_error test Sagi Shahar
2024-02-29 12:31 ` Binbin Wu
2024-03-01 6:52 ` Binbin Wu
2024-07-25 20:37 ` Sagi Shahar
2024-03-01 12:09 ` Yan Zhao
2024-04-12 4:56 ` Ackerley Tng
2024-04-12 11:57 ` Yan Zhao
2024-04-15 8:05 ` Ackerley Tng
2024-04-15 10:09 ` Yan Zhao
2024-04-16 18:50 ` Sean Christopherson
2024-04-17 22:41 ` Yan Zhao
2024-04-22 21:23 ` Sean Christopherson
2024-07-28 11:16 ` Binbin Wu
2023-12-12 20:46 ` [RFC PATCH v5 10/29] KVM: selftests: TDX: Adding test case for TDX port IO Sagi Shahar
2024-02-29 13:20 ` Binbin Wu
2024-03-04 2:19 ` Yan Zhao
2024-03-04 9:16 ` Binbin Wu
2024-03-04 9:18 ` Yan Zhao
2024-07-25 22:35 ` Sagi Shahar
2023-12-12 20:46 ` [RFC PATCH v5 11/29] KVM: selftests: TDX: Add basic TDX CPUID test Sagi Shahar
2023-12-12 20:46 ` [RFC PATCH v5 12/29] KVM: selftests: TDX: Add basic get_td_vmcall_info test Sagi Shahar
2024-03-01 6:03 ` Binbin Wu
2023-12-12 20:46 ` [RFC PATCH v5 13/29] KVM: selftests: TDX: Add TDX IO writes test Sagi Shahar
2024-03-01 6:55 ` Binbin Wu
2023-12-12 20:46 ` [RFC PATCH v5 14/29] KVM: selftests: TDX: Add TDX IO reads test Sagi Shahar
2024-03-01 8:22 ` Binbin Wu
2023-12-12 20:46 ` [RFC PATCH v5 15/29] KVM: selftests: TDX: Add TDX MSR read/write tests Sagi Shahar
2024-03-01 12:00 ` Binbin Wu
2024-03-01 12:09 ` Binbin Wu
2024-03-05 0:22 ` Yan Zhao
2024-03-21 23:40 ` Zhang, Dongsheng X
2023-12-12 20:46 ` [RFC PATCH v5 16/29] KVM: selftests: TDX: Add TDX HLT exit test Sagi Shahar
2024-03-02 7:31 ` Binbin Wu
2024-03-05 5:40 ` Yan Zhao
2024-07-27 23:23 ` Sagi Shahar
2023-12-12 20:46 ` [RFC PATCH v5 17/29] KVM: selftests: TDX: Add TDX MMIO reads test Sagi Shahar
2024-03-05 7:09 ` Yan Zhao
2024-03-21 23:45 ` Zhang, Dongsheng X
2023-12-12 20:46 ` [RFC PATCH v5 18/29] KVM: selftests: TDX: Add TDX MMIO writes test Sagi Shahar
2024-03-02 7:58 ` Binbin Wu
2024-03-05 8:58 ` Yan Zhao
2024-07-30 19:03 ` Sagi Shahar
2024-03-21 23:46 ` Zhang, Dongsheng X
2023-12-12 20:46 ` [RFC PATCH v5 19/29] KVM: selftests: TDX: Add TDX CPUID TDVMCALL test Sagi Shahar
2023-12-12 20:46 ` [RFC PATCH v5 20/29] KVM: selftests: TDX: Verify the behavior when host consumes a TD private memory Sagi Shahar
2023-12-12 20:46 ` [RFC PATCH v5 21/29] KVM: selftests: TDX: Add TDG.VP.INFO test Sagi Shahar
2024-03-06 4:50 ` Yan Zhao
2023-12-12 20:46 ` [RFC PATCH v5 22/29] KVM: selftests: Add functions to allow mapping as shared Sagi Shahar
2024-03-05 11:09 ` Yan Zhao
[not found] ` <DS7PR11MB7886BD37E5E56DAB9A0087A3F6292@DS7PR11MB7886.namprd11.prod.outlook.com>
2024-03-16 6:24 ` Chen, Zide
2023-12-12 20:46 ` [RFC PATCH v5 23/29] KVM: selftests: TDX: Add shared memory test Sagi Shahar
2024-03-01 12:02 ` Yan Zhao
2024-03-06 1:36 ` Yan Zhao
2024-03-06 1:20 ` Yan Zhao
[not found] ` <DS7PR11MB7886AA5F8A19CDFCB5566B0EF6292@DS7PR11MB7886.namprd11.prod.outlook.com>
2024-03-16 6:24 ` Chen, Zide
2023-12-12 20:46 ` [RFC PATCH v5 24/29] KVM: selftests: Expose _vm_vaddr_alloc Sagi Shahar
2024-03-04 9:55 ` Binbin Wu
2024-03-06 1:49 ` Yan Zhao
2023-12-12 20:46 ` [RFC PATCH v5 25/29] KVM: selftests: TDX: Add support for TDG.MEM.PAGE.ACCEPT Sagi Shahar
2023-12-12 20:46 ` [RFC PATCH v5 26/29] KVM: selftests: TDX: Add support for TDG.VP.VEINFO.GET Sagi Shahar
2024-03-04 13:56 ` Binbin Wu
2023-12-12 20:46 ` [RFC PATCH v5 27/29] KVM: selftests: Propagate KVM_EXIT_MEMORY_FAULT to userspace Sagi Shahar
[not found] ` <DS7PR11MB78860170A5FD77253573BC09F6292@DS7PR11MB7886.namprd11.prod.outlook.com>
2024-03-14 21:46 ` Chen, Zide
2023-12-12 20:46 ` [RFC PATCH v5 28/29] KVM: selftests: TDX: Add TDX UPM selftest Sagi Shahar
2024-03-05 4:57 ` Binbin Wu
2024-03-06 8:54 ` Yan Zhao
2023-12-12 20:46 ` [RFC PATCH v5 29/29] KVM: selftests: TDX: Add TDX UPM selftests for implicit conversion Sagi Shahar
2024-06-05 18:38 ` [RFC PATCH v5 00/29] TDX KVM selftests Verma, Vishal L
2024-06-05 20:10 ` Sagi Shahar
2024-06-05 20:15 ` Verma, Vishal L
2024-06-05 20:18 ` Verma, Vishal L
2024-06-05 20:42 ` Sagi Shahar
2024-06-05 20:56 ` Edgecombe, Rick P
2024-06-05 21:34 ` Sagi Shahar
2024-06-05 21:44 ` Edgecombe, Rick P
2024-06-21 2:51 ` Edgecombe, Rick P
2024-06-21 20:52 ` Sagi Shahar
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=Zdf6+mvU0PqrPt3t@chenyu5-mobl2 \
--to=yu.c.chen@intel.com \
--cc=ackerleytng@google.com \
--cc=afranji@google.com \
--cc=chao.p.peng@linux.intel.com \
--cc=dmatlack@google.com \
--cc=erdemaktas@google.com \
--cc=haibo1.xu@intel.com \
--cc=isaku.yamahata@intel.com \
--cc=jmattson@google.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=pbonzini@redhat.com \
--cc=pgonda@google.com \
--cc=runanwang@google.com \
--cc=sagis@google.com \
--cc=seanjc@google.com \
--cc=shuah@kernel.org \
--cc=vannapurve@google.com \
--cc=vipinsh@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