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@xxxxxxxxxx/ 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