| Message ID | CAAhSdy3z70oEePkgOBziVOKgFGae-0xMD+8xmsMV2PWM1v0ToA@mail.gmail.com |
|---|---|
| State | Accepted |
| Headers | show |
| Series | [GIT,PULL] KVM/riscv changes for 6.20 | expand |
On Sat, Feb 7, 2026 at 4:21 AM Anup Patel <anup@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(-) >
diff --cc tools/testing/selftests/kvm/lib/riscv/processor.c index 373cf4d1ed809,e6ec7c224fc3e..0000000000000 --- a/tools/testing/selftests/kvm/lib/riscv/processor.c 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);
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: +++ 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); } 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(-)