[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250402082833.9835-1-amit@kernel.org>
Date: Wed, 2 Apr 2025 10:28:31 +0200
From: Amit Shah <amit@...nel.org>
To: linux-kernel@...r.kernel.org,
kvm@...r.kernel.org,
x86@...nel.org,
linux-doc@...r.kernel.org
Cc: amit.shah@....com,
thomas.lendacky@....com,
bp@...en8.de,
tglx@...utronix.de,
peterz@...radead.org,
jpoimboe@...nel.org,
pawan.kumar.gupta@...ux.intel.com,
corbet@....net,
mingo@...hat.com,
dave.hansen@...ux.intel.com,
hpa@...or.com,
seanjc@...gle.com,
pbonzini@...hat.com,
daniel.sneddon@...ux.intel.com,
kai.huang@...el.com,
sandipan.das@....com,
boris.ostrovsky@...cle.com,
Babu.Moger@....com,
david.kaplan@....com,
dwmw@...zon.co.uk,
andrew.cooper3@...rix.com,
Amit Shah <amit@...nel.org>
Subject: [RFC PATCH v4 0/2] KVM: Add support for the ERAPS feature
Zen5+ AMD CPUs have a larger RSB (64 entries on Zen5), and use all of it in
the host context. The hypervisor needs to set up a couple things before it's
exposed to guests. Patch 1 adds that support.
The feature also adds host/guest tagging to entries in the RSB, which helps
with preserving RSB entries instead of flushing them across VMEXITs. The
patches at
https://lore.kernel.org/kvm/cover.1732219175.git.jpoimboe@kernel.org/
address that.
The feature isn't yet part of an APM update that details its working, so this
is still tagged as RFC. The notes at
https://amitshah.net/2024/11/eraps-reduces-software-tax-for-hardware-bugs/
may help follow along till the APM is public.
Patch 2 is something I used for development and debugging, I don't intend to
submit it for inclusion, but let me know if you think it's useful and I'll
prepare it for final inclusion as well.
One thing I'm not sure about, though, and would like clarification. Quoting
from my reply to the v3 series:
When EPT/NPT is disabled, and shadow MMU is used by kvm, the CR3
register on the CPU holds the PGD of the qemu process. So if a task
switch happens within the guest, the CR3 on the CPU is not updated, but
KVM's shadow MMU routines change the page tables pointed to by that
CR3. Contrasting to the NPT case, the CPU's CR3 holds the guest PGD
directly, and task switches within the guest cause an update to the
CPU's CR3.
Am I misremembering and misreading the code?
v4:
* Address Sean's comments from v3
* remove a bunch of comments in favour of a better commit message
* Drop patch 1 fromt the series - Josh's patches handle the most common case,
and the AutoIBRS-disabled case can be tackled later if required after Josh's
patches have been merged upstream.
v3:
* rebase on top of Josh's RSB tweaks series
* with that rebase, only the non-AutoIBRS case needs special ERAPS support.
AutoIBRS is currently disabled when SEV-SNP is active (commit acaa4b5c4c8)
* remove comment about RSB_CLEAR_LOOPS and the size of the RSB -- it's not
necessary anymore with the rework
* remove comment from patch 2 in svm.c in favour of the commit message
v2:
* reword comments to highlight context switch as the main trigger for RSB
flushes in hardware (Dave Hansen)
* Split out outdated comment updates in (v1) patch1 to be a standalone
patch1 in this series, to reinforce RSB filling is only required for RSB
poisoning cases for AMD
* Remove mentions of BTC/BTC_NO (Andrew Cooper)
* Add braces in case stmt (kernel test robot)
* s/boot_cpu_has/cpu_feature_enabled (Boris Petkov)
Amit Shah (2):
x86: kvm: svm: set up ERAPS support for guests
debug: add tracepoint for flush_rap_on_vmrun
arch/x86/include/asm/cpufeatures.h | 1 +
arch/x86/include/asm/svm.h | 6 +++++-
arch/x86/kvm/cpuid.c | 10 +++++++++-
arch/x86/kvm/svm/svm.c | 9 +++++++++
arch/x86/kvm/svm/svm.h | 15 +++++++++++++++
arch/x86/kvm/trace.h | 16 ++++++++++++++++
arch/x86/kvm/x86.c | 1 +
7 files changed, 56 insertions(+), 2 deletions(-)
--
2.49.0
Powered by blists - more mailing lists