Skip to content

MMU related improvements for KVM RISC-V

Anup Patel kvm kvm-riscv linux-riscv lkml 3 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v3 Latest12 patches 15 repliesIn review
  2. v212 patches 11 repliesSuperseded
  3. v113 patches 11 repliesSuperseded

Changes in v3 from the cover letter

- Rebased upon Linux-6.16-rc2 and latest riscv_kvm_queue branch
- Added Reviewed-by tags to appropriate patches

Patches in v3 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/12RISC-V: KVM: Check kvm_riscv_vcpu_alloc_vector_context() return valuearch/riscv/kvm/vcpu.c+3 -22 replies
2/12RISC-V: KVM: Drop the return value of kvm_riscv_vcpu_aia_init()arch/riscv/include/asm/kvm_aia.h arch/riscv/kvm/aia_device.c arch/riscv/kvm/vcpu.c+4 -82 replies
3/12RISC-V: KVM: Rename and move kvm_riscv_local_tlb_sanitize()arch/riscv/include/asm/kvm_host.h arch/riscv/kvm/tlb.c arch/riscv/kvm/vcpu.c +1 more+26 -270 replies
4/12RISC-V: KVM: Replace KVM_REQ_HFENCE_GVMA_VMID_ALL with KVM_REQ_TLB_FLUSHarch/riscv/include/asm/kvm_host.h arch/riscv/kvm/tlb.c arch/riscv/kvm/vcpu.c+8 -121 reply
5/12RISC-V: KVM: Don't flush TLB when PTE is unchangedarch/riscv/kvm/mmu.c+9 -51 reply
6/12RISC-V: KVM: Implement kvm_arch_flush_remote_tlbs_range()arch/riscv/include/asm/kvm_host.h arch/riscv/kvm/mmu.c arch/riscv/kvm/tlb.c+11 -11 reply
7/12RISC-V: KVM: Use ncsr_xyz() in kvm_riscv_vcpu_trap_redirect()arch/riscv/kvm/vcpu_exit.c+7 -61 reply
8/12RISC-V: KVM: Factor-out MMU related declarations into separate headersarch/riscv/include/asm/kvm_host.h arch/riscv/include/asm/kvm_mmu.h arch/riscv/include/asm/kvm_tlb.h +9 more+143 -981 reply
9/12RISC-V: KVM: Introduce struct kvm_gstage_mappingarch/riscv/include/asm/kvm_mmu.h arch/riscv/kvm/mmu.c arch/riscv/kvm/vcpu_exit.c+43 -271 reply
10/12RISC-V: KVM: Add vmid field to struct kvm_riscv_hfencearch/riscv/include/asm/kvm_tlb.h arch/riscv/kvm/tlb.c+17 -141 reply
11/12RISC-V: KVM: Factor-out g-stage page table managementarch/riscv/include/asm/kvm_gstage.h arch/riscv/include/asm/kvm_mmu.h arch/riscv/kvm/Makefile +7 more+530 -4321 reply
12/12RISC-V: KVM: Pass VMID as parameter to kvm_riscv_hfence_xyz() APIsarch/riscv/include/asm/kvm_tlb.h arch/riscv/kvm/gstage.c arch/riscv/kvm/tlb.c +2 more+73 -501 reply

Reviews trailers per patch

All 12 patches have a Reviewed-by or Acked-by.

PatchNutty LiuAtish Patra
SeriesT-b
1/12R-b R-b
2/12R-b R-b R-b
3/12R-b R-b
4/12R-b R-b
5/12R-b R-b
6/12R-b R-b
7/12R-b R-b
8/12R-b R-b
9/12R-b R-b
10/12R-b R-b
11/12R-b
12/12R-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v3 thread

Cover letter [PATCH v3 00/12] MMU related improvements for KVM RISC-V

This series primarily has various MMU improvements for KVM RISC-V and it also serves as a preparatory series for the upcoming nested virtualization support.

PATCH1 to PATCH4: Few cosmetic improvements
PATCH5 to PATCH7: TLB maintenance and SBI NACL related improvements PATCH8 to PATCH12: MMU related preparatory work for nested virtualization

These patches can also be found in the riscv_kvm_mmu_imp_v3 branch
at: https://github.com/avpatel/linux.git

Changes since v2:
- Rebased upon Linux-6.16-rc2 and latest riscv_kvm_queue branch
- Added Reviewed-by tags to appropriate patches

Changes since v1:
- Rebased upon Linux-6.16-rc1
- Dropped PATCH1 and PATCH2 of v1 series since these are queued as fixes for Linux-6.16
- Addressed Atish's comment on PATCH1 in this series
- Added new PATCH7 in this series

Anup Patel (12):
RISC-V: KVM: Check kvm_riscv_vcpu_alloc_vector_context() return value
RISC-V: KVM: Drop the return value of kvm_riscv_vcpu_aia_init()
RISC-V: KVM: Rename and move kvm_riscv_local_tlb_sanitize()
RISC-V: KVM: Replace KVM_REQ_HFENCE_GVMA_VMID_ALL with
KVM_REQ_TLB_FLUSH
RISC-V: KVM: Don't flush TLB when PTE is unchanged
RISC-V: KVM: Implement kvm_arch_flush_remote_tlbs_range()
RISC-V: KVM: Use ncsr_xyz() in kvm_riscv_vcpu_trap_redirect()
RISC-V: KVM: Factor-out MMU related declarations into separate headers
RISC-V: KVM: Introduce struct kvm_gstage_mapping
RISC-V: KVM: Add vmid field to struct kvm_riscv_hfence
RISC-V: KVM: Factor-out g-stage page table management
RISC-V: KVM: Pass VMID as parameter to kvm_riscv_hfence_xyz() APIs

 arch/riscv/include/asm/kvm_aia.h    |   2 +-
 arch/riscv/include/asm/kvm_gstage.h |  72 ++++
 arch/riscv/include/asm/kvm_host.h   | 103 +-----
 arch/riscv/include/asm/kvm_mmu.h    |  21 ++
 arch/riscv/include/asm/kvm_tlb.h    |  84 +++++
 arch/riscv/include/asm/kvm_vmid.h   |  27 ++
 arch/riscv/kvm/Makefile             |   1 +
 arch/riscv/kvm/aia_device.c         |   6 +-
 arch/riscv/kvm/aia_imsic.c          |  12 +-
 arch/riscv/kvm/gstage.c             | 338 +++++++++++++++++++
 arch/riscv/kvm/main.c               |   3 +-
 arch/riscv/kvm/mmu.c                | 499 ++++++----------------------
 arch/riscv/kvm/tlb.c                | 110 +++---
 arch/riscv/kvm/vcpu.c               |  26 +-
 arch/riscv/kvm/vcpu_exit.c          |  20 +-
 arch/riscv/kvm/vcpu_sbi_replace.c   |  17 +-
 arch/riscv/kvm/vcpu_sbi_v01.c       |  25 +-
 arch/riscv/kvm/vm.c                 |   7 +-
 arch/riscv/kvm/vmid.c               |  25 ++
 19 files changed, 795 insertions(+), 603 deletions(-)
 create mode 100644 arch/riscv/include/asm/kvm_gstage.h
 create mode 100644 arch/riscv/include/asm/kvm_mmu.h
 create mode 100644 arch/riscv/include/asm/kvm_tlb.h
 create mode 100644 arch/riscv/include/asm/kvm_vmid.h
 create mode 100644 arch/riscv/kvm/gstage.c
Signature · 1 line
2.43.0