Re: [PATCH v5 0/5] Implement Eager Page Splitting for RISC-V
Anup Patel <[email protected]> Sat, 1 Aug 2026 14:05:29 +0530
| Newsgroups | org.kernel.vger.kvm,org.infradead.lists.kvm-riscv,org.infradead.lists.linux-riscv,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <CAAhSdy15rQDkLVncPmdQ3+tKyFXv6HiuUe1=xKCG+Q1rzBOqVA@mail.gmail.com> |
On Fri, Jul 31, 2026 at 2:45 PM Wang Yechao <[email protected]> wrote: > > Eager Page Splitting is implemented on x86 and ARM. It improves the > performance of dirty logging (used in live migrations) when guest memory > is backed by huge pages. > > This series implement Eager Page Splitting for RISC-V. The Implementation > similar to x86 and ARM. It provides two ways to split huge pages in ioctl > context instead of on fault in vCPU context: > > - Split huge pages when dirty logging is enabled when > KVM_DIRTY_LOG_INITIALLY_SET is not set. This happens when enabling the > KVM_MEM_LOG_DIRTY_PAGES flag of a memslot, and splits the whole memslot > into 4K mappings. > > - Split huge pages during KVM_CLEAR_DIRTY_LOG when > KVM_DIRTY_LOG_INITIALLY_SET is set. This happens when enabling dirty log > in small chunks. It does not split the whole memslot, but only the > requested chunk range. > > Changes in v5: > - PATCH1: Move pgd_split_page_cache freeing to kvm_riscv_mmu_free_pgd(). > - PATCH3: Add a comment to explain why TLB flush is not needed here. > - Link to v4: > https://lore.kernel.org/linux-riscv/[email protected]/ > > Changes in v4: > - Rebase on v7.2-rc1 version. > sashiko-bot AI review > (https://sashiko.dev/#/patchset/[email protected]) > - Add the rwlock_needbreak() check when toup split cache. > - ALIGN_DOWN the start addr to PMD_SIZE. > > Changes in v3 resend: > - Fix patch format to ensure emails reach the linux-riscv and kvm-riscv > mailing lists. > - Move the free pgd_split_page_cache into kvm_arch_destroy_vm(). > https://lore.kernel.org/kvm-riscv/[email protected]/ > > Changes in v3: > - Rebase on v7.1 version. > - Add patch03 to remove the redundant TLB flush operations. > > sashiko-bot AI review > (https://sashiko.dev/#/message/20260603104847.9692C1F00893%40smtp.kernel.org) > - Check the kvm->arch.pgd before split huge pages. > - Align the start address to PMD_SIZE before split. > - Flushing remote TLBs before Dropping mmu_lock. > > Changes in v2: > - Rename the split_page_cache. > - Rename the kvm_riscv_split_huge_pages and > kvm_riscv_split_memory_region. > - Add lockdep_assert_held check before split huge pages. > - Update Documentation/admin-guide/kernel-parameters.txt. > - Link to v2 > https://lore.kernel.org/linux-riscv/[email protected]/ > > - Link to v1: > https://lore.kernel.org/linux-riscv/[email protected]/ > > Wang Yechao (5): > RISC-V: KVM: Add the split page cache for ioctl context > RISC-V: KVM: Split huge pages when dirty logging is enabled > RISC-V: KVM: Remove redundant TLB flush operations > RISC-V: KVM: Split huge pages during KVM_CLEAR_DIRTY_LOG > RISC-V: KVM: Add the eager_page_split module parameter > > .../admin-guide/kernel-parameters.txt | 7 +- > arch/riscv/include/asm/kvm_gstage.h | 6 +- > arch/riscv/include/asm/kvm_host.h | 1 + > arch/riscv/kvm/gstage.c | 23 ++-- > arch/riscv/kvm/mmu.c | 100 +++++++++++++++++- > 5 files changed, 120 insertions(+), 17 deletions(-) > Queued this series for Linux-7.3 Thanks, Anup