[PW_SID:1093985] Implement Eager Page Splitting for RISC-V#1929
[PW_SID:1093985] Implement Eager Page Splitting for RISC-V#1929linux-riscv-bot wants to merge 5 commits into
Conversation
Add the split page cache for dirty logging enablement and the KVM_CLEAR_DIRTY_LOG ioctl. Signed-off-by: Wang Yechao <wang.yechao255@zte.com.cn> Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
Split huge pages eagerly when enabling dirty logging. The goal is to avoid doing it while faulting on write-protected pages, which negatively impacts guest performance. The benefits of eager page splitting are the same as in x86 and arm64, added with commit a3fe5db ("KVM: x86/mmu: Split huge pages mapped by the TDP MMU when dirty logging is enabled") and commit e7bf7a4 ("KVM: arm64: Split huge pages when dirty logging is enabled") Signed-off-by: Wang Yechao <wang.yechao255@zte.com.cn> Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
Split huge pages on the range specified using KVM_CLEAR_DIRTY_LOG. And do not split when enabling dirty logging if KVM_DIRTY_LOG_INITIALLY_SET is set. Signed-off-by: Wang Yechao <wang.yechao255@zte.com.cn> Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
Add an eager_page_split module parameter for RISC-V KVM, following the same approach as on x86. This parameter controls whether eager page splitting is enabled. The default value is on. When eager page splitting is enabled, KVM proactively splits large pages (huge pages) into smaller pages when needed for dirty logging or other operations. Disabling it can be beneficial for VM workloads that rarely perform writes, or that only write to a small region of memory, as it allows huge pages to remain intact for read accesses. Signed-off-by: Wang Yechao <wang.yechao255@zte.com.cn> Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
|
Patch 1: "[1/4] RISC-V: KVM: Add the split page cache for ioctl context" |
|
Patch 1: "[1/4] RISC-V: KVM: Add the split page cache for ioctl context" |
|
Patch 1: "[1/4] RISC-V: KVM: Add the split page cache for ioctl context" |
|
Patch 1: "[1/4] RISC-V: KVM: Add the split page cache for ioctl context" |
|
Patch 1: "[1/4] RISC-V: KVM: Add the split page cache for ioctl context" |
|
Patch 1: "[1/4] RISC-V: KVM: Add the split page cache for ioctl context" |
|
Patch 1: "[1/4] RISC-V: KVM: Add the split page cache for ioctl context" |
|
Patch 1: "[1/4] RISC-V: KVM: Add the split page cache for ioctl context" |
|
Patch 1: "[1/4] RISC-V: KVM: Add the split page cache for ioctl context" |
|
Patch 1: "[1/4] RISC-V: KVM: Add the split page cache for ioctl context" |
|
Patch 1: "[1/4] RISC-V: KVM: Add the split page cache for ioctl context" |
|
Patch 1: "[1/4] RISC-V: KVM: Add the split page cache for ioctl context" |
|
Patch 2: "[2/4] RISC-V: KVM: Split huge pages when dirty logging is enabled" |
|
Patch 2: "[2/4] RISC-V: KVM: Split huge pages when dirty logging is enabled" |
|
Patch 2: "[2/4] RISC-V: KVM: Split huge pages when dirty logging is enabled" |
|
Patch 2: "[2/4] RISC-V: KVM: Split huge pages when dirty logging is enabled" |
|
Patch 2: "[2/4] RISC-V: KVM: Split huge pages when dirty logging is enabled" |
|
Patch 2: "[2/4] RISC-V: KVM: Split huge pages when dirty logging is enabled" |
|
Patch 2: "[2/4] RISC-V: KVM: Split huge pages when dirty logging is enabled" |
|
Patch 2: "[2/4] RISC-V: KVM: Split huge pages when dirty logging is enabled" |
|
Patch 2: "[2/4] RISC-V: KVM: Split huge pages when dirty logging is enabled" |
|
Patch 2: "[2/4] RISC-V: KVM: Split huge pages when dirty logging is enabled" |
|
Patch 2: "[2/4] RISC-V: KVM: Split huge pages when dirty logging is enabled" |
|
Patch 2: "[2/4] RISC-V: KVM: Split huge pages when dirty logging is enabled" |
|
Patch 3: "[3/4] RISC-V: KVM: Split huge pages during KVM_CLEAR_DIRTY_LOG" |
|
Patch 3: "[3/4] RISC-V: KVM: Split huge pages during KVM_CLEAR_DIRTY_LOG" |
|
Patch 3: "[3/4] RISC-V: KVM: Split huge pages during KVM_CLEAR_DIRTY_LOG" |
|
Patch 3: "[3/4] RISC-V: KVM: Split huge pages during KVM_CLEAR_DIRTY_LOG" |
|
Patch 3: "[3/4] RISC-V: KVM: Split huge pages during KVM_CLEAR_DIRTY_LOG" |
|
Patch 3: "[3/4] RISC-V: KVM: Split huge pages during KVM_CLEAR_DIRTY_LOG" |
|
Patch 3: "[3/4] RISC-V: KVM: Split huge pages during KVM_CLEAR_DIRTY_LOG" |
|
Patch 3: "[3/4] RISC-V: KVM: Split huge pages during KVM_CLEAR_DIRTY_LOG" |
|
Patch 3: "[3/4] RISC-V: KVM: Split huge pages during KVM_CLEAR_DIRTY_LOG" |
|
Patch 3: "[3/4] RISC-V: KVM: Split huge pages during KVM_CLEAR_DIRTY_LOG" |
|
Patch 3: "[3/4] RISC-V: KVM: Split huge pages during KVM_CLEAR_DIRTY_LOG" |
|
Patch 3: "[3/4] RISC-V: KVM: Split huge pages during KVM_CLEAR_DIRTY_LOG" |
|
Patch 4: "[4/4] RISC-V: KVM: Add the eager_page_split module parameter" |
|
Patch 4: "[4/4] RISC-V: KVM: Add the eager_page_split module parameter" |
|
Patch 4: "[4/4] RISC-V: KVM: Add the eager_page_split module parameter" |
|
Patch 4: "[4/4] RISC-V: KVM: Add the eager_page_split module parameter" |
|
Patch 4: "[4/4] RISC-V: KVM: Add the eager_page_split module parameter" |
|
Patch 4: "[4/4] RISC-V: KVM: Add the eager_page_split module parameter" |
|
Patch 4: "[4/4] RISC-V: KVM: Add the eager_page_split module parameter" |
|
Patch 4: "[4/4] RISC-V: KVM: Add the eager_page_split module parameter" |
|
Patch 4: "[4/4] RISC-V: KVM: Add the eager_page_split module parameter" |
|
Patch 4: "[4/4] RISC-V: KVM: Add the eager_page_split module parameter" |
|
Patch 4: "[4/4] RISC-V: KVM: Add the eager_page_split module parameter" |
|
Patch 4: "[4/4] RISC-V: KVM: Add the eager_page_split module parameter" |
2d4fcdd to
cd9d421
Compare
PR for series 1093985 applied to workflow__riscv__fixes
Name: Implement Eager Page Splitting for RISC-V
URL: https://patchwork.kernel.org/project/linux-riscv/list/?series=1093985
Version: 1