[PATCH v4 0/3] RISC-V: KVM: fix vcpu vector context handling
Andy Chiu <[email protected]> Fri, 24 Jul 2026 19:17:39 -0500
| Newsgroups | org.infradead.lists.kvm-riscv,org.infradead.lists.linux-riscv,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
This series fixes a vtype corruption encountered when running perf + vector workload on KVM. The root cause of the bug is that the kernel-mode vector (KMV) misattributes the guest's vcpu context as the user's context. To solve this, we need to correctly save the vcpu context when the kernel-mode vector is serving a guest. However, calling directly into KVM from RISC-V generic architecture code creates a reverse dependency, which is problematic when KVM is built as a module. To address this, we introduce an RCU-protected callback for context flushing, which KVM registers during module init. Patch 1 is a preparatory cleanup that refactors riscv_v_start_kernel_context(). Patch 2 prepares get/put_cpu_vector_context() for gaurding the use of vector in kvm_arch_vcpu_load/put() Patch 3 implements the callback mechanism and fixes the context handling. Patch summary: - unchanged patch: 1, 3 - new patch: none - modified patch: 2 Changelog v4: - Include a header to solve a mid-series build fail (patchwork ci) - Drop preempt_v_started test in may_use_simd (Sashiko) - Link to v3: https://lore.kernel.org/all/[email protected]/ Changelog v3: - Limit the export scope for {get,put}_cpu_vector_context() - clears RISCV_V_VCPU_NEED_RESTORE flag in host restore to prevent leaking - consolidates guest vector restore at returning to guest to prevent unnecessary save/restore between the preemptible window from vcpu_load to vcpu_enter_exit - Document flags added to riscv_v_flags - Link to v2: https://lore.kernel.org/all/[email protected]/ Changelog v2: - Address issues pointed out by sashiko (2, 3) - Link to v1: https://lore.kernel.org/all/[email protected]/ Andy Chiu (3): riscv: vector: refactor riscv_v_start_kernel_context riscv: vector: allow non-preemptible kernel-mode vector with IRQs off RISC-V: KVM: fix vcpu vector context handling for kernel-mode vector arch/riscv/include/asm/kvm_vcpu_vector.h | 24 +++++++ arch/riscv/include/asm/processor.h | 8 +++ arch/riscv/include/asm/simd.h | 16 +---- arch/riscv/include/asm/vector.h | 5 ++ arch/riscv/kernel/kernel_mode_vector.c | 80 ++++++++++++++++-------- arch/riscv/kvm/main.c | 4 ++ arch/riscv/kvm/vcpu.c | 12 ++++ arch/riscv/kvm/vcpu_vector.c | 22 ++++++- 8 files changed, 131 insertions(+), 40 deletions(-) -- 2.43.0 -- kvm-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/kvm-riscv