>+/* >+ * 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. >+ >+ 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. >+ return 0;