[PATCH 1/4] RISC-V: KVM: Add the split page cache for ioctl context
Anup Patel
anup at brainfault.org
Wed Jun 3 01:18:38 PDT 2026
On Wed, May 13, 2026 at 1:09 PM <wang.yechao255 at zte.com.cn> wrote:
>
> From: Wang Yechao <wang.yechao255 at zte.com.cn>
>
> Add the split page cache for dirty logging enablement and the
> KVM_CLEAR_DIRTY_LOG ioctl.
>
> Signed-off-by: Wang Yechao <wang.yechao255 at zte.com.cn>
> ---
> arch/riscv/include/asm/kvm_host.h | 2 ++
> arch/riscv/kvm/mmu.c | 3 +++
> 2 files changed, 5 insertions(+)
>
> diff --git a/arch/riscv/include/asm/kvm_host.h b/arch/riscv/include/asm/kvm_host.h
> index 75b0a951c1bc..e2f40854305f 100644
> --- a/arch/riscv/include/asm/kvm_host.h
> +++ b/arch/riscv/include/asm/kvm_host.h
> @@ -93,6 +93,8 @@ struct kvm_arch {
>
> /* KVM_CAP_RISCV_MP_STATE_RESET */
> bool mp_state_reset;
> +
> + struct kvm_mmu_memory_cache split_page_cache;
Rename it to pgd_split_page_cache and add it below
pgd_levels.
> };
>
> struct kvm_cpu_trap {
> diff --git a/arch/riscv/kvm/mmu.c b/arch/riscv/kvm/mmu.c
> index 2d3def024270..85a3fb2622a4 100644
> --- a/arch/riscv/kvm/mmu.c
> +++ b/arch/riscv/kvm/mmu.c
> @@ -549,6 +549,7 @@ int kvm_riscv_mmu_alloc_pgd(struct kvm *kvm)
> kvm->arch.pgd = page_to_virt(pgd_page);
> kvm->arch.pgd_phys = page_to_phys(pgd_page);
> kvm->arch.pgd_levels = kvm_riscv_gstage_max_pgd_levels;
> + kvm->arch.split_page_cache.gfp_zero = __GFP_ZERO;
>
> return 0;
> }
> @@ -572,6 +573,8 @@ void kvm_riscv_mmu_free_pgd(struct kvm *kvm)
>
> if (pgd)
> free_pages((unsigned long)pgd, get_order(kvm_riscv_gstage_pgd_size));
> +
> + kvm_mmu_free_memory_cache(&kvm->arch.split_page_cache);
> }
>
> void kvm_riscv_mmu_update_hgatp(struct kvm_vcpu *vcpu)
> --
> 2.27.0
Regards,
Anup
More information about the kvm-riscv
mailing list