Re: [PATCH 0/7] x86, KVM: Optimize SEV cache flushing

Tom Lendacky
2025-03-03T16:46:50Z

On 2/26/25 19:48, Sean Christopherson wrote:
> This is the combination of Kevin's WBNOINVD series[1] with Zheyun's targeted
> flushing series[2]. This is very, very lightly tested (emphasis on "very").

We ran this series through our SEV validation tests over the weekend on
Rome, Milan and Genoa systems and didn't observe any issues.

Thanks,
Tom

>
> Note, I dropped Reviewed-by tags for patches to which I made non-trivial
> modifications.
>
> [1] https://lore.kernel.org/all/20250201000259.3289143-1-kevinloughlin@google.com
> [2] https://lore.kernel.org/all/20250128015345.7929-1-szy0127@sjtu.edu.cn
>
> Relative to those series:
>
> - Name the WBNOINVD opcode macro ASM_WBNOINVD to avoid a conflict with
> KVM's CPUID stuff.
> - Fix issues with SMP=n.
> - Define all helpers in x86/lib.
> - Don't return 0 from the helpers.
> - Rename the CPU bitmap to avoid a naming collisions with KVM's existing
> pCPU bitmap for WBINVD, and to not have WBINVD (versus WBNOINVD) in the
> name.
> - Fix builds where CPU bitmaps are off-stack.
> - Massage comments.
> - Mark a CPU as having done VMRUN in pre_sev_run(), but test to see if
> the CPU already ran to avoid the locked RMW, i.e. to (hopefully) avoid
> bouncing the cache line.
>
> Kevin Loughlin (2):
> x86, lib: Add WBNOINVD helper functions
> KVM: SEV: Prefer WBNOINVD over WBINVD for cache maintenance efficiency
>
> Sean Christopherson (2):
> x86, lib: Drop the unused return value from wbinvd_on_all_cpus()
> KVM: x86: Use wbinvd_on_cpu() instead of an open-coded equivalent
>
> Zheyun Shen (3):
> KVM: SVM: Remove wbinvd in sev_vm_destroy()
> x86, lib: Add wbinvd and wbnoinvd helpers to target multiple CPUs
> KVM: SVM: Flush cache only on CPUs running SEV guest
>
> arch/x86/include/asm/smp.h | 23 ++++++--
> arch/x86/include/asm/special_insns.h | 19 ++++++-
> arch/x86/kvm/svm/sev.c | 79 +++++++++++++++++++---------
> arch/x86/kvm/svm/svm.h | 1 +
> arch/x86/kvm/x86.c | 11 +---
> arch/x86/lib/cache-smp.c | 26 ++++++++-
> 6 files changed, 119 insertions(+), 40 deletions(-)
>
>
> base-commit: fed48e2967f402f561d80075a20c5c9e16866e53