| Date | Wed, 16 Mar 2022 15:13:18 -0700 | Subject | Re: [PATCHv6 29/30] ACPICA: Avoid cache flush inside virtual machines | From | Dave Hansen <> |
| |
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>
|