v14 2026-09-24

设备页缺页时迁移 · v14

讨论设备页 migrate-on-fault 优化:一次页表遍历中缺页并替换为迁移项,避免重复 walk 开销。

原始补丁链接

子 Patch(12)

1/12
mm/Kconfig: changes for migrate on fault for device pages
在 mm/Kconfig 中让 migrate_device 路径显式使能 HMM 与 MMU_NOTIFIER:统一 HMM/migrate_device 页表遍历后,migrate_device 会调用 HMM,避免随机配置下编译断链。
2/12
mm: add helper to convert HMM pfn to migrate pfn
新增 pfn 转换 helper,把 HMM pagewalk 收集到的 HMM pfn 及其标志转成 migrate_vma 侧的 pfn 表示,使统一遍历后迁移决策能继续使用 migrate_vma 世界的数据结构。
3/12
mm/hmm: preparations for HMM to participate in migration
让 hmm_range_fault 保存稳定 vma,迁移全程要求 mmap_lock,遇 lock-drop 返回错误;重命名 hmm_vma_walk 字段并在迁移时发 mmu_notifier,为后续 HMM 迁移铺路。
4/12
mm/hmm: do the plumbing for HMM to participate in migration
在 hmm_range_fault 与 pagewalk 回调中为迁移收集做准备:迁移时锁住 pmd/pte,调用 hmm_vma_handle_migrate_prepare* 占位函数,缺页处理时再解锁。
5/12
mm/hmm: implement folio split for migrate needs in HMM pagewalk
在 HMM pagewalk 中实现 PMD 大 folio 拆分,处理起止地址未 PMD 对齐或 PMD migration entry 安装失败的情况,使迁移可按更细粒度继续。
6/12
mm/hmm: migrate collection in HMM pagewalk - pte level
PTE 级实现 hmm_vma_handle_migrate_prepare,移植 migrate_vma_collect_pmd 并拆分 pte 大 folio,置 HMM_PFN_MIGRATE 后插 migration PTE;当前由 hmm_select_migrate 关闭。
7/12
mm/hmm: migrate collection in HMM pagewalk - pmd level
PMD 级实现 hmm_vma_handle_migrate_prepare_pmd,移植 migrate_vma_collect_huge_pmd 逻辑,决定迁移并安装 PMD migration entry,与 PTE 级配合完成收集。
8/12
mm/hmm: add lazy MMU mode support for migration in HMM pagewalk
在 HMM pagewalk 迁移路径调用 lazy_mmu_mode_enable/disable,批量修改页表时避免逐次 TLB flush,降低插 migration entry 和收集的开销。
9/12
mm/hmm: implement rollback for device page migration in HMM pagewalk
迁移 pagewalk 增加回滚:drop lock 后 PTE 被清或改级别使 migration entry 丢失时,释放已收集 folio 引用并撤销 HMM_PFN_MIGRATE,已有 migration PTE 则跳过。
10/12
mm: enable device page migration from HMM pagewalk
启用 HMM pagewalk 迁移:hmm_range_fault 执行收集并插 migration entry,migrate_vma_setup 改走该路径,新增 MIGRATE_VMA_FAULT/WRITE 控制缺页与写权限,删旧 collect*。
11/12
lib/test_hmm: add a new testcase for the migrate on fault
扩展 lib/test_hmm 测试驱动和 selftests,新增 migrate on fault 用例,验证 HMM pagewalk 的收集、migration PTE 安装以及迁移后页状态。
12/12
Documentation/mm/hmm: document migration through hmm_range_fault()
From: Mika Penttilä mpenttil@redhat.com Describe the two new MIGRATE_VMA_FAULT / MIGRATE_VMA_WRITE flags of migrate_vma_setup(), and add a section on driving the migration collection phase directly