lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <d554355c-f678-4f90-a56b-675877be01e9@linux.intel.com>
Date: Fri, 15 Aug 2025 15:18:42 +0800
From: Binbin Wu <binbin.wu@...ux.intel.com>
To: Sagi Shahar <sagis@...gle.com>
Cc: linux-kselftest@...r.kernel.org, Paolo Bonzini <pbonzini@...hat.com>,
 Shuah Khan <shuah@...nel.org>, Sean Christopherson <seanjc@...gle.com>,
 Ackerley Tng <ackerleytng@...gle.com>, Ryan Afranji <afranji@...gle.com>,
 Andrew Jones <ajones@...tanamicro.com>,
 Isaku Yamahata <isaku.yamahata@...el.com>,
 Erdem Aktas <erdemaktas@...gle.com>,
 Rick Edgecombe <rick.p.edgecombe@...el.com>,
 Roger Wang <runanwang@...gle.com>, Oliver Upton <oliver.upton@...ux.dev>,
 "Pratik R. Sampat" <pratikrajesh.sampat@....com>,
 Reinette Chatre <reinette.chatre@...el.com>, Ira Weiny
 <ira.weiny@...el.com>, linux-kernel@...r.kernel.org, kvm@...r.kernel.org
Subject: Re: [PATCH v8 29/30] KVM: selftests: TDX: Add TDX UPM selftests for
 implicit conversion



On 8/8/2025 4:16 AM, Sagi Shahar wrote:
> From: Ackerley Tng <ackerleytng@...gle.com>
>
> This tests the use of guest memory without explicit TDG.VP.VMCALL<MapGPA>
> calls.
>
> Provide a 2MB memory region to the TDX guest with a 40KB focus area at
> offset 1MB intended to be shared between host and guest. The guest does
> not request memory to be shared or private using TDG.VP.VMCALL<MapGPA> but
> instead relies on memory to be converted automatically based on its
> access via shared or private mapping. The host automatically
> converts the memory when guest exits with KVM_EXIT_MEMORY_FAULT.
>
> The 2MB region starts out as private with the guest filling it with a
> pattern, followed by a check from the host to ensure the host is not able
> to see the pattern. The guest then accesses the 40KB focus area via
> its shared mapping to trigger implicit conversion followed by checks that
> the host and guest has the same view of the memory. Finally the guest
> accesses the 40KB memory via its private mapping to trigger the implicit
> conversion to private followed by checks to confirm this is the case.
>
> Signed-off-by: Ackerley Tng <ackerleytng@...gle.com>
> Signed-off-by: Sagi Shahar <sagis@...gle.com>
> ---
>   .../testing/selftests/kvm/x86/tdx_upm_test.c  | 88 ++++++++++++++++---
>   1 file changed, 76 insertions(+), 12 deletions(-)
>
> diff --git a/tools/testing/selftests/kvm/x86/tdx_upm_test.c b/tools/testing/selftests/kvm/x86/tdx_upm_test.c
> index 387258ab1a62..2ea5bf6d24b7 100644
> --- a/tools/testing/selftests/kvm/x86/tdx_upm_test.c
> +++ b/tools/testing/selftests/kvm/x86/tdx_upm_test.c
> @@ -150,10 +150,10 @@ enum {
>    * Does vcpu_run, and also manages memory conversions if requested by the TD.
>    */
>   void vcpu_run_and_manage_memory_conversions(struct kvm_vm *vm,
> -					    struct kvm_vcpu *vcpu)
> +					    struct kvm_vcpu *vcpu, bool handle_conversions)
>   {
>   	for (;;) {
> -		vcpu_run(vcpu);
> +		_vcpu_run(vcpu);
Why this change?


>   		if (vcpu->run->exit_reason == KVM_EXIT_HYPERCALL &&
>   		    vcpu->run->hypercall.nr == KVM_HC_MAP_GPA_RANGE) {
>   			uint64_t gpa = vcpu->run->hypercall.args[0];
> @@ -164,6 +164,13 @@ void vcpu_run_and_manage_memory_conversions(struct kvm_vm *vm,
>   						  KVM_MAP_GPA_RANGE_ENCRYPTED);
>   			vcpu->run->hypercall.ret = 0;
>   			continue;
> +		} else if (handle_conversions &&
> +			vcpu->run->exit_reason == KVM_EXIT_MEMORY_FAULT) {
> +			handle_memory_conversion(vm, vcpu->id, vcpu->run->memory_fault.gpa,
> +						 vcpu->run->memory_fault.size,
> +						 vcpu->run->memory_fault.flags ==
> +						  KVM_MEMORY_EXIT_FLAG_PRIVATE);
> +			continue;
>   		} else if (vcpu->run->exit_reason == KVM_EXIT_IO &&
>   			   vcpu->run->io.port == TDX_UPM_TEST_ACCEPT_PRINT_PORT) {
>   			uint64_t gpa = tdx_test_read_64bit(vcpu,
> @@ -241,8 +248,48 @@ static void guest_upm_explicit(void)
>   	tdx_test_success();
>   }
>   
>
[...]

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ