第五章 TTM后备存储: 4.8.3 TTM Eviction 的定向与搬迁执行 -- BO Move 路径 1. 概述当 TTM 决定驱逐一个 BO 后, 需要将其数据从当前位置 (通常是 VRAM) 搬迁到目标位置(通常是 GTT 或 SYSTEM)。 这个搬迁过程涉及多个层次的协作:TTM 核心层: 确定搬迁目标、创建/绑定 TTM 结构、调用驱动回调AMDGPU 驱动层: 选择搬迁策略 (GPU DMA / CPU memcpy / NULL move)AMDGPU VM 层: 更新页表状态、统计信息TTM 善后层: 管理旧资源释放、fence 同步、ghost object完整搬迁调用链: ttm_bo_evict() | +-- evict_flags() [1] 驱动决定搬迁目标 +-- ttm_bo_mem_space() [2] 在目标域分配资源 +-- ttm_bo_handle_move_mem() [3] 执行搬迁 | | | +-- ttm_bo_unmap_virtual() [3a] 取消用户态映射 | +-- ttm_tt_create() / populate() [3b] 准备 TTM 页表 | +-- bdev-funcs-move() [3c] 驱动搬迁回调 | | = amdgpu_bo_move() |