内存钉扎、Dirty Logging 与迁移

内存钉扎、Dirty Logging 与迁移

1. Pinning

DMA mapping需把用户页长期钉住,防止 reclaim/migration后设备仍访问旧物理地址。Type1使用长期 pin语义并记录每个 DMA mapping的 pages。

2. Accounting

锁页受 RLIMIT_MEMLOCK、进程权限和 mm accounting约束。QEMU通常需足够 memlock限制;盲目 unlimited扩大资源耗尽风险。

3. 页生命周期

1
2
3
4
map -> pin -> iommu_map
DMA active
stop device DMA
unmap -> iommu_unmap -> dirty/account -> unpin

必须先停止 DMA再 unmap,单纯关闭用户映射不停止硬件。

4. MM归属

本 Type1实现为每个 DMA mapping保存 group leader和 mm_struct引用,用于 locked-memory accounting,即使创建 mapping的 task退出也能完成记账和释放。Mdev外部 pinning路径还支持使 vaddr失效及重新设置;此文件没有注册通用 mmu_notifier

5. Dirty tracking

迁移需知道 device DMA写过哪些 guest pages。本树通过:

  • IOMMU dirty bitmap能力;
  • device DMA logging feature;
    -软件 bitmap/ranges;

组合提供 dirty报告,具体设备/backend不一定支持。

6. IOVA bitmap

iova_bitmap.c在 IOVA范围与用户 bitmap之间迭代和设置 bits,处理 page size、范围和用户复制。

7. Migration states

VFIO device migration feature表达 running、stop、stop-copy、resuming等状态及 data fd。合法转换由 driver实现,Core检查 feature格式。

8. Vendor migration

mlx5和 HiSilicon accelerator VFIO PCI driver实现设备特定 state save/restore和 dirty tracking,不表示通用 vfio-pci可迁移所有 PCI设备。

9. 风险

-设备内部状态不可完整保存;
-DMA未 quiesce;
-dirty bitmap漏记;
-目标硬件/firmware不兼容;
-migration data不可信;
-大规模 pin导致 host内存压力。

10. RK3588

本树未见适用于 RK3588集成设备的 mdev/migration parent driver。普通 platform VFIO不能自动提供 live migration。

文章互动

阅读 --

留言

0 条留言

正在加载留言…