[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