Re: [PATCHv6 29/30] ACPICA: Avoid cache flush inside virtual machines

Dan Williams
2022-03-17T15:32:53Z

On Wed, Mar 16, 2022 at 3:13 PM Dave Hansen <dave.hansen@intel.com> wrote:
>
> On 3/15/22 19:08, Kirill A. Shutemov wrote:
> > While running inside virtual machine, 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.
> >
> > Before entering sleep states, the ACPI code flushes caches to prevent
> > data loss using the WBINVD instruction. This mechanism is required on
> > bare metal.
> >
> > But, any use WBINVD inside of a guest is worthless. Changing sleep
> > state in a virtual machine doesn't affect the host system sleep state
> > and cannot lead to data loss, so most hypervisors simply ignore it.
> > Despite this, the ACPI code calls WBINVD unconditionally anyway.
> > It's useless, but also normally harmless.
> >
> > In TDX guests, though, WBINVD stops being harmless; it triggers a
> > virtualization exception (#VE). If the ACPI cache-flushing WBINVD
> > were left in place, TDX guests would need handling to recover from
> > the exception.
> >
> > Avoid using WBINVD whenever running under a hypervisor. This both
> > removes the useless WBINVDs and saves TDX from implementing WBINVD
> > handling.
>
> Looks good. Did you have more acks on this earlier that got removed? I
> thought I remembered more acks on earlier versions.
>
> Reviewed-by: Dave Hansen <dave.hansen@linux.intel.com>

Yeah, my previous reviewed-by still stands:

Reviewed-by: Dan Williams <dan.j.williams@intel.com>