1. 概述
本节详细分析 AMD GPU 驱动中 KFD 子系统对用户态指针 (userptr) 内存的处理机制。当应用程序通过KFD_IOC_ALLOC_MEM_FLAGS_USERPTR标志分配内存时,驱动需要将用户空间已分配的内存映射到 GPU 地址空间,使 GPU 能够直接访问用户态分配的内存。
这里先把“GPU 要访问这个 BO”作为需求放入脑海中,这是理解该类型 BO 会有哪些操作的原因。
1.1 核心函数
- 入口函数:
kfd_ioctl_alloc_memory_of_gpu()(kfd_chardev.c) - 核心实现:
amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu()(amdgpu_amdkfd_gpuvm.c) - 页面初始化:
init_user_pages()(amdgpu_amdkfd_gpuvm.c)
2. 用户态接口处理流程
文章:AMD rocr-libhsakmt 分析系列6-1: userptr 的 register 实