Re: [PATCH RFC 1/7] x86/virt/tdx: Add SEAMCALL wrapper to enter/exit TDX guest
From: Dave Hansen
Date: Fri Dec 13 2024 - 11:16:53 EST
On 12/11/24 10:43, Adrian Hunter wrote:
...
> - size = tdvmcall_a0_read(vcpu);
> - write = tdvmcall_a1_read(vcpu);
> - port = tdvmcall_a2_read(vcpu);
> + size = tdx->vp_enter_out.io_size;
> + write = tdx->vp_enter_out.io_direction == TDX_WRITE;
> + port = tdx->vp_enter_out.io_port;
...> + case TDVMCALL_IO:
> + out->io_size = args.r12;
> + out->io_direction = args.r13 ? TDX_WRITE : TDX_READ;
> + out->io_port = args.r14;
> + out->io_value = args.r15;
> + break;
I honestly don't understand the need for the abstracted structure to sit
in the middle. It doesn't get stored or serialized or anything, right?
So why have _another_ structure?
Why can't this just be (for instance):
size = tdx->foo.r12;
?
Basically, you hand around the raw arguments until you need to use them.