All of lore.kernel.org
 help / color / mirror / Atom feed
From: Binbin Wu <binbin.wu@linux.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 15/29] KVM: selftests: TDX: Add TDX MSR read/write tests
Date: Fri, 1 Mar 2024 20:09:52 +0800	[thread overview]
Message-ID: <c005384e-4dae-46d3-81b2-c96ce8cd4acb@linux.intel.com> (raw)
In-Reply-To: <d4d8831c-0b11-4219-b00e-37e6f0781fe1@linux.intel.com>



On 3/1/2024 8:00 PM, Binbin Wu wrote:
>
>
> On 12/13/2023 4:46 AM, Sagi Shahar wrote:
>> The test verifies reads and writes for MSR registers with different 
>> access
>> level.
>>
>> Signed-off-by: Sagi Shahar <sagis@google.com>
>> Signed-off-by: Ackerley Tng <ackerleytng@google.com>
>> Signed-off-by: Ryan Afranji <afranji@google.com>
>> ---
>>   .../selftests/kvm/include/x86_64/tdx/tdx.h    |   5 +
>>   .../selftests/kvm/lib/x86_64/tdx/tdx.c        |  27 +++
>>   .../selftests/kvm/x86_64/tdx_vm_tests.c       | 209 ++++++++++++++++++
>>   3 files changed, 241 insertions(+)
>>
>> diff --git a/tools/testing/selftests/kvm/include/x86_64/tdx/tdx.h 
>> b/tools/testing/selftests/kvm/include/x86_64/tdx/tdx.h
>> index 63788012bf94..85ba6aab79a7 100644
>> --- a/tools/testing/selftests/kvm/include/x86_64/tdx/tdx.h
>> +++ b/tools/testing/selftests/kvm/include/x86_64/tdx/tdx.h
>> @@ -9,11 +9,16 @@
>>   #define TDG_VP_VMCALL_REPORT_FATAL_ERROR 0x10003
>>     #define TDG_VP_VMCALL_INSTRUCTION_IO 30
>> +#define TDG_VP_VMCALL_INSTRUCTION_RDMSR 31
>> +#define TDG_VP_VMCALL_INSTRUCTION_WRMSR 32
>> +
>>   void handle_userspace_tdg_vp_vmcall_exit(struct kvm_vcpu *vcpu);
>>   uint64_t tdg_vp_vmcall_instruction_io(uint64_t port, uint64_t size,
>>                         uint64_t write, uint64_t *data);
>>   void tdg_vp_vmcall_report_fatal_error(uint64_t error_code, uint64_t 
>> data_gpa);
>>   uint64_t tdg_vp_vmcall_get_td_vmcall_info(uint64_t *r11, uint64_t 
>> *r12,
>>                       uint64_t *r13, uint64_t *r14);
>> +uint64_t tdg_vp_vmcall_instruction_rdmsr(uint64_t index, uint64_t 
>> *ret_value);
>> +uint64_t tdg_vp_vmcall_instruction_wrmsr(uint64_t index, uint64_t 
>> value);
>>     #endif // SELFTEST_TDX_TDX_H
>> diff --git a/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx.c 
>> b/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx.c
>> index e5a9e13c62e2..88ea6f2a6469 100644
>> --- a/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx.c
>> +++ b/tools/testing/selftests/kvm/lib/x86_64/tdx/tdx.c
>> @@ -87,3 +87,30 @@ uint64_t tdg_vp_vmcall_get_td_vmcall_info(uint64_t 
>> *r11, uint64_t *r12,
>>         return ret;
>>   }
>> +
>> +uint64_t tdg_vp_vmcall_instruction_rdmsr(uint64_t index, uint64_t 
>> *ret_value)
>> +{
>> +    uint64_t ret;
>> +    struct tdx_hypercall_args args = {
>> +        .r11 = TDG_VP_VMCALL_INSTRUCTION_RDMSR,
>> +        .r12 = index,
>> +    };
>> +
>> +    ret = __tdx_hypercall(&args, TDX_HCALL_HAS_OUTPUT);
>> +
>> +    if (ret_value)
>> +        *ret_value = args.r11;
>> +
>> +    return ret;
>> +}
>> +
>> +uint64_t tdg_vp_vmcall_instruction_wrmsr(uint64_t index, uint64_t 
>> value)
>> +{
>> +    struct tdx_hypercall_args args = {
>> +        .r11 = TDG_VP_VMCALL_INSTRUCTION_WRMSR,
>> +        .r12 = index,
>> +        .r13 = value,
>> +    };
>> +
>> +    return __tdx_hypercall(&args, 0);
>> +}
>> diff --git a/tools/testing/selftests/kvm/x86_64/tdx_vm_tests.c 
>> b/tools/testing/selftests/kvm/x86_64/tdx_vm_tests.c
>> index 699cba36e9ce..5db3701cc6d9 100644
>> --- a/tools/testing/selftests/kvm/x86_64/tdx_vm_tests.c
>> +++ b/tools/testing/selftests/kvm/x86_64/tdx_vm_tests.c
>> @@ -515,6 +515,213 @@ void verify_guest_reads(void)
>>       printf("\t ... PASSED\n");
>>   }
>>   +/*
>> + * Define a filter which denies all MSR access except the following:
>> + * MSR_X2APIC_APIC_ICR: Allow read/write access (allowed by default)
>
> The default filtering behavior of tdx_msr_test_filter is
> KVM_MSR_FILTER_DEFAULT_DENY, and MSR_X2APIC_APIC_ICR is not covered
> by any specific range, shouldn't MSR_X2APIC_APIC_ICR be denied by 
> default?

Sorry, please ignore this comment.

I see the description from the KVM document later:
"x2APIC MSR accesses cannot be filtered (KVM silently ignores filters 
that cover any x2APIC MSRs)."

>
>> + * MSR_IA32_MISC_ENABLE: Allow read access
>> + * MSR_IA32_POWER_CTL: Allow write access
>> + */
>> +#define MSR_X2APIC_APIC_ICR 0x830
>> +static u64 tdx_msr_test_allow_bits = 0xFFFFFFFFFFFFFFFF;
>> +struct kvm_msr_filter tdx_msr_test_filter = {
>> +    .flags = KVM_MSR_FILTER_DEFAULT_DENY,
>> +    .ranges = {
>> +        {
>> +            .flags = KVM_MSR_FILTER_READ,
>> +            .nmsrs = 1,
>> +            .base = MSR_IA32_MISC_ENABLE,
>> +            .bitmap = (uint8_t *)&tdx_msr_test_allow_bits,
>> +        }, {
>> +            .flags = KVM_MSR_FILTER_WRITE,
>> +            .nmsrs = 1,
>> +            .base = MSR_IA32_POWER_CTL,
>> +            .bitmap = (uint8_t *)&tdx_msr_test_allow_bits,
>> +        },
>> +    },
>> +};
>> +
>> +/*
>> + * Verifies MSR read functionality.
>> + */
>> +void guest_msr_read(void)
>> +{
>> +    uint64_t data;
>> +    uint64_t ret;
>> +
>> +    ret = tdg_vp_vmcall_instruction_rdmsr(MSR_X2APIC_APIC_ICR, &data);
>> +    if (ret)
>> +        tdx_test_fatal(ret);
>> +
>> +    ret = tdx_test_report_64bit_to_user_space(data);
>> +    if (ret)
>> +        tdx_test_fatal(ret);
>> +
>> +    ret = tdg_vp_vmcall_instruction_rdmsr(MSR_IA32_MISC_ENABLE, &data);
>> +    if (ret)
>> +        tdx_test_fatal(ret);
>> +
>> +    ret = tdx_test_report_64bit_to_user_space(data);
>> +    if (ret)
>> +        tdx_test_fatal(ret);
>> +
>> +    /* We expect this call to fail since MSR_IA32_POWER_CTL is write 
>> only */
>> +    ret = tdg_vp_vmcall_instruction_rdmsr(MSR_IA32_POWER_CTL, &data);
>> +    if (ret) {
>> +        ret = tdx_test_report_64bit_to_user_space(ret);
>> +        if (ret)
>> +            tdx_test_fatal(ret);
>> +    } else {
>> +        tdx_test_fatal(-99);
>> +    }
>> +
>> +    tdx_test_success();
>> +}
>> +
>> +void verify_guest_msr_reads(void)
>> +{
>> +    struct kvm_vm *vm;
>> +    struct kvm_vcpu *vcpu;
>> +
>> +    uint64_t data;
>> +    int ret;
>> +
>> +    vm = td_create();
>> +    td_initialize(vm, VM_MEM_SRC_ANONYMOUS, 0);
>> +
>> +    /*
>> +     * Set explicit MSR filter map to control access to the MSR 
>> registers
>> +     * used in the test.
>> +     */
>> +    printf("\t ... Setting test MSR filter\n");
>> +    ret = kvm_check_cap(KVM_CAP_X86_USER_SPACE_MSR);
>> +    TEST_ASSERT(ret, "KVM_CAP_X86_USER_SPACE_MSR is unavailable");
>> +    vm_enable_cap(vm, KVM_CAP_X86_USER_SPACE_MSR, 
>> KVM_MSR_EXIT_REASON_FILTER);
>> +
>> +    ret = kvm_check_cap(KVM_CAP_X86_MSR_FILTER);
>> +    TEST_ASSERT(ret, "KVM_CAP_X86_MSR_FILTER is unavailable");
>> +
>> +    ret = ioctl(vm->fd, KVM_X86_SET_MSR_FILTER, &tdx_msr_test_filter);
>> +    TEST_ASSERT(ret == 0,
>> +            "KVM_X86_SET_MSR_FILTER failed, ret: %i errno: %i (%s)",
>> +            ret, errno, strerror(errno));
>> +
>> +    vcpu = td_vcpu_add(vm, 0, guest_msr_read);
>> +    td_finalize(vm);
>> +
>> +    printf("Verifying guest msr reads:\n");
>> +
>> +    printf("\t ... Setting test MSR values\n");
>> +    /* Write arbitrary to the MSRs. */
>> +    vcpu_set_msr(vcpu, MSR_X2APIC_APIC_ICR, 4);
>> +    vcpu_set_msr(vcpu, MSR_IA32_MISC_ENABLE, 5);
>> +    vcpu_set_msr(vcpu, MSR_IA32_POWER_CTL, 6);
>> +
>> +    printf("\t ... Running guest\n");
>> +    td_vcpu_run(vcpu);
>> +    TDX_TEST_CHECK_GUEST_FAILURE(vcpu);
>> +    data = tdx_test_read_64bit_report_from_guest(vcpu);
>> +    TEST_ASSERT_EQ(data, 4);
>> +
>> +    td_vcpu_run(vcpu);
>> +    TDX_TEST_CHECK_GUEST_FAILURE(vcpu);
>> +    data = tdx_test_read_64bit_report_from_guest(vcpu);
>> +    TEST_ASSERT_EQ(data, 5);
>> +
>> +    td_vcpu_run(vcpu);
>> +    TDX_TEST_CHECK_GUEST_FAILURE(vcpu);
>> +    data = tdx_test_read_64bit_report_from_guest(vcpu);
>> +    TEST_ASSERT_EQ(data, TDG_VP_VMCALL_INVALID_OPERAND);
>> +
>> +    td_vcpu_run(vcpu);
>> +    TDX_TEST_ASSERT_SUCCESS(vcpu);
>> +
>> +    kvm_vm_free(vm);
>> +    printf("\t ... PASSED\n");
>> +}
>> +
>> +/*
>> + * Verifies MSR write functionality.
>> + */
>> +void guest_msr_write(void)
>> +{
>> +    uint64_t ret;
>> +
>> +    ret = tdg_vp_vmcall_instruction_wrmsr(MSR_X2APIC_APIC_ICR, 4);
>> +    if (ret)
>> +        tdx_test_fatal(ret);
>> +
>> +    /* We expect this call to fail since MSR_IA32_MISC_ENABLE is 
>> read only */
>> +    ret = tdg_vp_vmcall_instruction_wrmsr(MSR_IA32_MISC_ENABLE, 5);
>> +    if (ret) {
>> +        ret = tdx_test_report_64bit_to_user_space(ret);
>> +        if (ret)
>> +            tdx_test_fatal(ret);
>> +    } else {
>> +        tdx_test_fatal(-99);
>> +    }
>> +
>> +
>> +    ret = tdg_vp_vmcall_instruction_wrmsr(MSR_IA32_POWER_CTL, 6);
>> +    if (ret)
>> +        tdx_test_fatal(ret);
>> +
>> +    tdx_test_success();
>> +}
>> +
>> +void verify_guest_msr_writes(void)
>> +{
>> +    struct kvm_vcpu *vcpu;
>> +    struct kvm_vm *vm;
>> +
>> +    uint64_t data;
>> +    int ret;
>> +
>> +    vm = td_create();
>> +    td_initialize(vm, VM_MEM_SRC_ANONYMOUS, 0);
>> +
>> +    /*
>> +     * Set explicit MSR filter map to control access to the MSR 
>> registers
>> +     * used in the test.
>> +     */
>> +    printf("\t ... Setting test MSR filter\n");
>> +    ret = kvm_check_cap(KVM_CAP_X86_USER_SPACE_MSR);
>> +    TEST_ASSERT(ret, "KVM_CAP_X86_USER_SPACE_MSR is unavailable");
>> +    vm_enable_cap(vm, KVM_CAP_X86_USER_SPACE_MSR, 
>> KVM_MSR_EXIT_REASON_FILTER);
>> +
>> +    ret = kvm_check_cap(KVM_CAP_X86_MSR_FILTER);
>> +    TEST_ASSERT(ret, "KVM_CAP_X86_MSR_FILTER is unavailable");
>> +
>> +    ret = ioctl(vm->fd, KVM_X86_SET_MSR_FILTER, &tdx_msr_test_filter);
>> +    TEST_ASSERT(ret == 0,
>> +            "KVM_X86_SET_MSR_FILTER failed, ret: %i errno: %i (%s)",
>> +            ret, errno, strerror(errno));
>> +
>> +    vcpu = td_vcpu_add(vm, 0, guest_msr_write);
>> +    td_finalize(vm);
>> +
>> +    printf("Verifying guest msr writes:\n");
>> +
>> +    printf("\t ... Running guest\n");
>> +    /* Only the write to MSR_IA32_MISC_ENABLE should trigger an exit */
>> +    td_vcpu_run(vcpu);
>> +    TDX_TEST_CHECK_GUEST_FAILURE(vcpu);
>> +    data = tdx_test_read_64bit_report_from_guest(vcpu);
>> +    TEST_ASSERT_EQ(data, TDG_VP_VMCALL_INVALID_OPERAND);
>> +
>> +    td_vcpu_run(vcpu);
>> +    TDX_TEST_ASSERT_SUCCESS(vcpu);
>> +
>> +    printf("\t ... Verifying MSR values writen by guest\n");
>> +
>> +    TEST_ASSERT_EQ(vcpu_get_msr(vcpu, MSR_X2APIC_APIC_ICR), 4);
>> +    TEST_ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_MISC_ENABLE), 0x1800);
>> +    TEST_ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_POWER_CTL), 6);
>> +
>> +    kvm_vm_free(vm);
>> +    printf("\t ... PASSED\n");
>> +}
>> +
>> +
>>   int main(int argc, char **argv)
>>   {
>>       setbuf(stdout, NULL);
>> @@ -531,6 +738,8 @@ int main(int argc, char **argv)
>>       run_in_new_process(&verify_get_td_vmcall_info);
>>       run_in_new_process(&verify_guest_writes);
>>       run_in_new_process(&verify_guest_reads);
>> +    run_in_new_process(&verify_guest_msr_writes);
>> +    run_in_new_process(&verify_guest_msr_reads);
>>         return 0;
>>   }
>
>


  reply	other threads:[~2024-03-01 12:09 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
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 [this message]
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=c005384e-4dae-46d3-81b2-c96ce8cd4acb@linux.intel.com \
    --to=binbin.wu@linux.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.