Messages in this thread | | | Date | Fri, 4 Feb 2022 16:20:23 +0300 | From | "Kirill A. Shutemov" <> | Subject | Re: [PATCHv2 03/29] x86/tdx: Add __tdx_module_call() and __tdx_hypercall() helper functions |
| |
On Fri, Feb 04, 2022 at 10:51:38PM +1300, Kai Huang wrote: > > + .if \host > > + seamcall > > + /* > > + * SEAMCALL instruction is essentially a VMExit from VMX root > > + * mode to SEAM VMX root mode. VMfailInvalid (CF=1) indicates > > + * that the targeted SEAM firmware is not loaded or disabled, > > + * or P-SEAMLDR is busy with another SEAMCALL. %rax is not > > + * changed in this case. > > + * > > + * Set %rax to TDX_SEAMCALL_VMFAILINVALID for VMfailInvalid. > > + * This value will never be used as actual SEAMCALL error code. > > + */ > > + jnc .Lno_vmfailinvalid > > + mov $TDX_SEAMCALL_VMFAILINVALID, %rax > > + jmp .Lno_output_struct > > If I read correctly, in case of VMfailInvalid, another "pop %r12" is needed > before jmp to .Lno_output_struct, otherwise it doesn't match the stack (pushed > twice).
Oopsie. Thanks for catching it.
> However, since "test %rax, %rax" will also catch TDX_SEAMCALL_VMFAILINVALID, it > seems we can just delete above "jmp .Lno_output_struct"?
Good point. Will do it this way.
-- Kirill A. Shutemov
| |