[GIT PULL] KVM/riscv changes for 6.20

Paolo Bonzini pbonzini at redhat.com
Mon Feb 9 10:07:33 PST 2026


On Sat, Feb 7, 2026 at 4:21 AM Anup Patel <anup at brainfault.org> wrote:
>
> 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.

Good, thanks.  Pulled.

Paolo


> 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