On Wed, 2023-06-28 at 11:09 +0800, Chao Gao wrote: > > +/* > > + * Wrapper of __seamcall() to convert SEAMCALL leaf function error code > > + * to kernel error code. @seamcall_ret and @out contain the SEAMCALL > > + * leaf function return code and the additional output respectively if > > + * not NULL. > > + */ > > +static int __always_unused seamcall(u64 fn, u64 rcx, u64 rdx, u64 r8, u64 > > r9, > > + u64 *seamcall_ret, > > + struct tdx_module_output *out) > > +{ > > + u64 sret; > > + int cpu; > > + > > + /* Need a stable CPU id for printing error message */ > > + cpu = get_cpu(); > > + sret = __seamcall(fn, rcx, rdx, r8, r9, out); > > + put_cpu(); > > + > > + /* Save SEAMCALL return code if the caller wants it */ > > + if (seamcall_ret) > > + *seamcall_ret = sret; > > Hi Kai, > > All callers in this series pass NULL for seamcall_ret. I am no sure if > you keep it intentionally. In this series all the callers doesn't need seamcall_ret. > > > + > > + switch (sret) { > > + case 0: > > + /* SEAMCALL was successful */ > > Nit: if you add > > #define TDX_SUCCESS 0 > > and do > > case TDX_SUCCESS: > return 0; > > then the code becomes self-explanatory. i.e., you can drop the comment. If using this, I ended up with below: --- a/arch/x86/include/asm/tdx.h +++ b/arch/x86/include/asm/tdx.h @@ -23,6 +23,8 @@ #define TDX_SEAMCALL_GP (TDX_SW_ERROR | X86_TRAP_GP) #define TDX_SEAMCALL_UD (TDX_SW_ERROR | X86_TRAP_UD) +#define TDX_SUCCESS 0 + Hi Kirill/Dave/David, Are you happy with this?