[PATCH v3 0/2] RISC-V: KVM: Optimize hfence request handling for SMP guests

From: Wang Yechao

Date: Fri Jul 31 2026 - 05:42:54 EST


This series improves the hfence request handling in RISC-V KVM,
targeting scenarios where multiple VCPUs are running an SMP guest.

The first patch Introduce make_xfence_request_nodata for FENCE.I
requests and moves the hfence data/type validation out of the
VCPU loop to avoid redundant checks on every iteration.

The second patch fixes a more subtle performance issue: when one
VCPU's hfence queue becomes full and triggers a fallback, the
current code applies the fallback to all VCPUs indiscriminately.
This unnecessarily degrades healthy VCPUs and can cause their
queues to fill up prematurely due to lack of processing it.

With these changes, fallback is applied only to the VCPUs that
actually need it, preserving the efficiency of the normal path
for others.

Changes in v3:
- Re-order the PATCH1 and PATCH2, let the fix PATCH as first patch.
- Link to v2:
https://lore.kernel.org/kvm-riscv/20260707125034.416521-1-wang.yechao255@xxxxxxxxxx/

Changes in v2:
- Fix the patch01 broken the KVM_REQ_FENCE_I request(Sashiko AI review).

- Link to v1:
https://lore.kernel.org/linux-riscv/20260707113715.413265-1-wang.yechao255@xxxxxxxxxx/

Wang Yechao (2):
RISC-V: KVM: Separate req and fallback_req masks in
make_xfence_request
RISC-V: KVM: Introduce make_xfence_request_nodata for FENCE.I requests

arch/riscv/kvm/tlb.c | 46 +++++++++++++++++++++++++++++++++-----------
1 file changed, 35 insertions(+), 11 deletions(-)

--
2.39.3