drm_pagemap 迁移路径与 mmap_lock / PTL 使用分析

发布时间:2026/7/22 0:29:17
drm_pagemap 迁移路径与 mmap_lock / PTL 使用分析 本文分析drivers/gpu/drm/drm_pagemap.c中 device-private 内存迁移的实现,重点说明两条 “迁回系统内存 (to RAM)” 路径在CPU 页表保护上的差异:fault 路径__drm_pagemap_migrate_to_ram()(CPU page fault 触发)eviction 路径drm_pagemap_evict_to_ram()(驱动主动腾显存触发)核心结论:对 CPU PTE 的 “换成 migration entry → 拷贝 → 恢复” 这一读-改-写序列,两条路径都依赖 PTL(page table lock)保证原子性;区别只在于 fault 路径额外持有mmap_read_lock以便按虚拟地址遍历 VMA,而 eviction 路径完全以 page 为中心、通过 folio lock + rmap 定位 PTE,因此无需 mmap_lock。1. 背景:两把锁各自保护什么锁保护对象谁在写方持有