Re: [PATCHv4 29/30] ACPICA: Avoid cache flush on TDX guest

Josh Poimboeuf
2022-02-27T22:05:37Z

On Thu, Feb 24, 2022 at 06:56:29PM +0300, Kirill A. Shutemov wrote:
> +/*
> + * ACPI_FLUSH_CPU_CACHE() flushes caches on entering sleep states.
> + * It is required to prevent data loss.
> + *
> + * While running inside TDX guest, the kernel can bypass cache flushing.
> + * Changing sleep state in a virtual machine doesn't affect the host system
> + * sleep state and cannot lead to data loss.
> + *
> + * TODO: Is it safe to generalize this from TDX guests to all guest kernels?
> + */
> +#define ACPI_FLUSH_CPU_CACHE() \
> +do { \
> + if (!cpu_feature_enabled(X86_FEATURE_TDX_GUEST)) \
> + wbinvd(); \
> +} while (0)

If it's safe, why not do it for all VMs? Is there something specific
about TDX which makes this more obviously known to be safe than for
regular VMs?

The patch description and the above comment make it sound like "we're
not really sure this is safe, so we'll just use TDX as a testing ground
for the idea." Which doesn't really inspire a lot of confidence in the
stability of TD sleep states.

--
Josh