> > @@ -33,12 +34,24 @@ static int __always_unused seamcall(u64 fn, u64 rcx, u64 rdx, u64 r8, u64 r9, > > struct tdx_module_output *out) > > { > > int cpu, ret = 0; > > + int retry; > > u64 sret; > > > > /* Need a stable CPU id for printing error message */ > > cpu = get_cpu(); > > > > - sret = __seamcall(fn, rcx, rdx, r8, r9, out); > > + /* > > + * Certain SEAMCALL leaf functions may return error due to > > + * running out of entropy, in which case the SEAMCALL should > > + * be retried. Handle this in SEAMCALL common function. > > + * > > + * Mimic the existing rdrand_long() to retry > > + * RDRAND_RETRY_LOOPS times. > > + */ > > + retry = RDRAND_RETRY_LOOPS; > > Nit: I'd just do a "int retry = RDRAND_RETRY_LOOPS" and simplify this > comment to "Mimic rdrand_long() retry behavior." OK will do. But I think you are talking about replacing the second paragraph but not the entire comment? > > > + do { > > + sret = __seamcall(fn, rcx, rdx, r8, r9, out); > > + } while (sret == TDX_RND_NO_ENTROPY && --retry); > > > > /* Save SEAMCALL return code if the caller wants it */ > > if (seamcall_ret) > > diff --git a/arch/x86/virt/vmx/tdx/tdx.h b/arch/x86/virt/vmx/tdx/tdx.h > > index 48ad1a1ba737..55dbb1b8c971 100644 > > --- a/arch/x86/virt/vmx/tdx/tdx.h > > +++ b/arch/x86/virt/vmx/tdx/tdx.h > > @@ -4,6 +4,23 @@ > > > > #include <linux/types.h> > > > > +/* > > + * This file contains both macros and data structures defined by the TDX > > + * architecture and Linux defined software data structures and functions. > > + * The two should not be mixed together for better readability. The > > + * architectural definitions come first. > > + */ > > + > > +/* > > + * TDX SEAMCALL error codes > > + */ > > +#define TDX_RND_NO_ENTROPY 0x8000020300000000ULL > > + > > +/* > > + * Do not put any hardware-defined TDX structure representations below > > + * this comment! > > + */ > > + > > struct tdx_module_output; > > u64 __seamcall(u64 fn, u64 rcx, u64 rdx, u64 r8, u64 r9, > > struct tdx_module_output *out); > > In general, LGTM > > Reviewed-by: David Hildenbrand <david@xxxxxxxxxx> Thanks!