[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250516212833.2544737-1-seanjc@google.com>
Date: Fri, 16 May 2025 14:28:25 -0700
From: Sean Christopherson <seanjc@...gle.com>
To: Thomas Gleixner <tglx@...utronix.de>, Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de>,
Dave Hansen <dave.hansen@...ux.intel.com>, x86@...nel.org,
Sean Christopherson <seanjc@...gle.com>, Paolo Bonzini <pbonzini@...hat.com>,
Maarten Lankhorst <maarten.lankhorst@...ux.intel.com>, Maxime Ripard <mripard@...nel.org>,
Thomas Zimmermann <tzimmermann@...e.de>, David Airlie <airlied@...il.com>, Simona Vetter <simona@...ll.ch>
Cc: linux-kernel@...r.kernel.org, kvm@...r.kernel.org,
dri-devel@...ts.freedesktop.org, Zheyun Shen <szy0127@...u.edu.cn>,
Tom Lendacky <thomas.lendacky@....com>, Kevin Loughlin <kevinloughlin@...gle.com>,
Kai Huang <kai.huang@...el.com>, Mingwei Zhang <mizhang@...gle.com>
Subject: [PATCH v2 0/8] x86, KVM: Optimize SEV cache flushing
This is the combination of Kevin's WBNOINVD series[1] with Zheyun's targeted
flushing series[2]. The combined goal is to use WBNOINVD instead of WBINVD
when doing cached maintenance to prevent data corruption due to C-bit aliasing,
and to reduce the number of cache invalidations by only performing flushes on
CPUs that have entered the relevant VM since the last cache flush.
Assuming I get the appropate acks (and that I didn't manage to break anything
when rebasing), my plan is to take this through the kvm-x86 tree in the 6.17
timeframe.
v2:
- Add a missing -ENOMEM in __sev_guest_init(). [Tom]
- Collect reviews. [Kai, Tom]
- Fix stub prototypes. [Zheyun]
- Kill off dead pr_err() code on DRM's wbinvd_on_all_cpus() usage.
v1: https://lore.kernel.org/all/20250227014858.3244505-1-seanjc@google.com
[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
Kevin Loughlin (2):
x86, lib: Add WBNOINVD helper functions
KVM: SEV: Prefer WBNOINVD over WBINVD for cache maintenance efficiency
Sean Christopherson (3):
drm/gpu: Remove dead checks on wbinvd_on_all_cpus()'s return value
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 | 81 +++++++++++++++++++---------
arch/x86/kvm/svm/svm.h | 1 +
arch/x86/kvm/x86.c | 11 +---
arch/x86/lib/cache-smp.c | 26 ++++++++-
drivers/gpu/drm/drm_cache.c | 9 ++--
7 files changed, 125 insertions(+), 45 deletions(-)
base-commit: 7ef51a41466bc846ad794d505e2e34ff97157f7f
--
2.49.0.1112.g889b7c5bd8-goog
Powered by blists - more mailing lists