[GIT PULL] KVM/riscv changes for 6.20

Anup Patel anup at brainfault.org
Fri Feb 6 19:21:12 PST 2026


Hi Paolo,

We have the following KVM RISC-V changes for 6.20:
1) Fixes for issues discovered by KVM API fuzzing in
    AIA virtualization
2) Allow Zalasr, Zilsd and Zclsd extensions for Guest/VM
3) Add riscv vm satp modes in KVM selftests
4) Transparent huge support for G-stage
5) Adjust the number of available guest irq files based
    on MMIO register sizes

Please pull.

Also, please note that we have a conflict with kvm-x86
tree in tools/testing/selftests/kvm/lib/riscv/processor.c due
to patch "KVM: riscv: selftests: Add riscv vm satp modes"
discovered on linux-next. This can be resolved as follows:

diff --cc tools/testing/selftests/kvm/lib/riscv/processor.c
index 373cf4d1ed809,e6ec7c224fc3e..0000000000000
--- a/tools/testing/selftests/kvm/lib/riscv/processor.c
+++ b/tools/testing/selftests/kvm/lib/riscv/processor.c
@@@ -64,15 -68,15 +64,15 @@@ static uint64_t pte_index(struct kvm_v

  void virt_arch_pgd_alloc(struct kvm_vm *vm)
  {
 -      size_t nr_pages = page_align(vm, ptrs_per_pte(vm) * 8) / vm->page_size;
 +      size_t nr_pages = vm_page_align(vm, ptrs_per_pte(vm) * 8) /
vm->page_size;

-       if (vm->pgd_created)
+       if (vm->mmu.pgd_created)
                return;

-       vm->pgd = vm_phy_pages_alloc(vm, nr_pages,
-                                    KVM_GUEST_PAGE_TABLE_MIN_PADDR,
-                                    vm->memslots[MEM_REGION_PT]);
-       vm->pgd_created = true;
+       vm->mmu.pgd = vm_phy_pages_alloc(vm, nr_pages,
+                                        KVM_GUEST_PAGE_TABLE_MIN_PADDR,
+                                        vm->memslots[MEM_REGION_PT]);
+       vm->mmu.pgd_created = true;
  }

  void virt_arch_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr)
@@@ -220,14 -212,8 +221,14 @@@ void riscv_vcpu_mmu_setup(struct kvm_vc
                TEST_FAIL("Unknown guest mode, mode: 0x%x", vm->mode);
        }

 +      max_satp_mode = vcpu_get_reg(vcpu, RISCV_CONFIG_REG(satp_mode));
 +
 +      if ((satp_mode >> SATP_MODE_SHIFT) > max_satp_mode)
 +              TEST_FAIL("Unable to set satp mode 0x%lx, max mode 0x%lx\n",
 +                        satp_mode >> SATP_MODE_SHIFT, max_satp_mode);
 +
-       satp = (vm->pgd >> PGTBL_PAGE_SIZE_SHIFT) & SATP_PPN;
+       satp = (vm->mmu.pgd >> PGTBL_PAGE_SIZE_SHIFT) & SATP_PPN;
 -      satp |= SATP_MODE_48;
 +      satp |= satp_mode;

        vcpu_set_reg(vcpu, RISCV_GENERAL_CSR_REG(satp), satp);
  }
diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c
b/tools/testing/selftests/kvm/lib/kvm_util.c
index 265e173b73709..1959bf556e88e 100644
--- a/tools/testing/selftests/kvm/lib/kvm_util.c
+++ b/tools/testing/selftests/kvm/lib/kvm_util.c
@@ -359,17 +359,17 @@ struct kvm_vm *____vm_create(struct vm_shape shape)
        case VM_MODE_P56V57_4K:
        case VM_MODE_P50V57_4K:
        case VM_MODE_P41V57_4K:
-               vm->pgtable_levels = 5;
+               vm->mmu.pgtable_levels = 5;
                break;
        case VM_MODE_P56V48_4K:
        case VM_MODE_P50V48_4K:
        case VM_MODE_P41V48_4K:
-               vm->pgtable_levels = 4;
+               vm->mmu.pgtable_levels = 4;
                break;
        case VM_MODE_P56V39_4K:
        case VM_MODE_P50V39_4K:
        case VM_MODE_P41V39_4K:
-               vm->pgtable_levels = 3;
+               vm->mmu.pgtable_levels = 3;
                break;
        default:
                TEST_FAIL("Unknown guest mode: 0x%x", vm->mode);

Regards,
Anup

The following changes since commit 63804fed149a6750ffd28610c5c1c98cce6bd377:

  Linux 6.19-rc7 (2026-01-25 14:11:24 -0800)

are available in the Git repository at:

  https://github.com/kvm-riscv/linux.git tags/kvm-riscv-6.20-1

for you to fetch changes up to 376e2f8cca2816c489a9196e65cc904d1a907fd2:

  irqchip/riscv-imsic: Adjust the number of available guest irq files
(2026-02-06 19:05:34 +0530)

----------------------------------------------------------------
KVM/riscv changes for 6.20

- Fixes for issues discovered by KVM API fuzzing in
  kvm_riscv_aia_imsic_has_attr(), kvm_riscv_aia_imsic_rw_attr(),
  and kvm_riscv_vcpu_aia_imsic_update()
- Allow Zalasr, Zilsd and Zclsd extensions for Guest/VM
- Add riscv vm satp modes in KVM selftests
- Transparent huge support for G-stage
- Adjust the number of available guest irq files based on
  MMIO register sizes in DeviceTree or ACPI

----------------------------------------------------------------
Jessica Liu (1):
      RISC-V: KVM: Transparent huge page support

Jiakai Xu (3):
      RISC-V: KVM: Fix null pointer dereference in
kvm_riscv_aia_imsic_has_attr()
      RISC-V: KVM: Fix null pointer dereference in kvm_riscv_aia_imsic_rw_attr()
      RISC-V: KVM: Skip IMSIC update if vCPU IMSIC state is not initialized

Pincheng Wang (2):
      riscv: KVM: allow Zilsd and Zclsd extensions for Guest/VM
      KVM: riscv: selftests: add Zilsd and Zclsd extension to get-reg-list test

Qiang Ma (1):
      RISC-V: KVM: Remove unnecessary 'ret' assignment

Wu Fei (1):
      KVM: riscv: selftests: Add riscv vm satp modes

Xu Lu (3):
      RISC-V: KVM: Allow Zalasr extensions for Guest/VM
      RISC-V: KVM: selftests: Add Zalasr extensions to get-reg-list test
      irqchip/riscv-imsic: Adjust the number of available guest irq files

 arch/riscv/include/uapi/asm/kvm.h                  |   3 +
 arch/riscv/kvm/aia.c                               |   2 +-
 arch/riscv/kvm/aia_imsic.c                         |  13 +-
 arch/riscv/kvm/mmu.c                               | 140 +++++++++++++++++++++
 arch/riscv/kvm/vcpu_onereg.c                       |   4 +
 arch/riscv/kvm/vcpu_pmu.c                          |   5 +-
 arch/riscv/mm/pgtable.c                            |   2 +
 drivers/irqchip/irq-riscv-imsic-state.c            |  12 +-
 include/linux/irqchip/riscv-imsic.h                |   3 +
 tools/testing/selftests/kvm/include/kvm_util.h     |  17 ++-
 .../selftests/kvm/include/riscv/processor.h        |   2 +
 tools/testing/selftests/kvm/lib/guest_modes.c      |  41 ++++--
 tools/testing/selftests/kvm/lib/kvm_util.c         |  33 +++++
 tools/testing/selftests/kvm/lib/riscv/processor.c  |  63 +++++++++-
 tools/testing/selftests/kvm/riscv/get-reg-list.c   |  12 ++
 15 files changed, 330 insertions(+), 22 deletions(-)



More information about the linux-riscv mailing list