On Fri, 2023-06-09 at 17:42 +0300, Nikolay Borisov wrote: > > On 4.06.23 г. 17:27 ч., Kai Huang wrote: > > Certain SEAMCALL leaf functions may return error due to running out of > > entropy, in which case the SEAMCALL should be retried as suggested by > > the TDX spec. > > > > Handle this case in SEAMCALL common function. Mimic the existing > > rdrand_long() to retry RDRAND_RETRY_LOOPS times. > > > > Signed-off-by: Kai Huang <kai.huang@xxxxxxxxx> > > --- > > > > v10 -> v11: > > - New patch > > > > --- > > arch/x86/virt/vmx/tdx/tdx.c | 15 ++++++++++++++- > > arch/x86/virt/vmx/tdx/tdx.h | 17 +++++++++++++++++ > > 2 files changed, 31 insertions(+), 1 deletion(-) > > > > <snip> > > > 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 > > Where is this return value documented, in TDX module 1.0 spec there are > only: 8000020[123]00000000 specified and there's 80000800 > (TDX_KEY_GENERATION_FAILED) and its description mentions the possible > failure due to lack of entropy? > It's documented in TDX module V1.5 ABI Specification: https://cdrdv2.intel.com/v1/dl/getContent/733579 The later versions of TDX module try to use TDX_RND_NO_ENTROPY to cover all errors due to running out of entropy, but TDX module 1.0 for now doesn't. This patch aims to resolve this error code in the common code.