On Wed, Jun 28, 2023 at 03:34:05AM +0000, Huang, Kai wrote: > 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. I'm fine keeping it if it is needed by KVM TDX enabling. Otherwise, just drop it. > > > + > > > + 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? Sure, looks good. -- Kiryl Shutsemau / Kirill A. Shutemov