[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