Re: [PATCH v12 05/22] x86/virt/tdx: Add SEAMCALL infrastructure

From: Chao Gao
Date: Tue Jun 27 2023 - 23:10:34 EST


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