Re: [PATCH v12 06/22] x86/virt/tdx: Handle SEAMCALL running out of entropy error

From: Peter Zijlstra
Date: Wed Jun 28 2023 - 09:03:20 EST


On Tue, Jun 27, 2023 at 02:12:36AM +1200, Kai Huang wrote:

> 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 rdrand_long() retry behavior.

Yeah, except that doesn't have preemption disabled.. you do.

> + */
> + do {
> + sret = __seamcall(fn, rcx, rdx, r8, r9, out);
> + } while (sret == TDX_RND_NO_ENTROPY && --retry);
> +
> put_cpu();