访问非用户分配
GPU 对非驻留分配的访问是非法的。 此类访问会导致为生成错误的应用程序删除设备。
有两种不同的模型来处理此类无效访问,具体取决于故障引擎是否支持 GPU 虚拟寻址:
对于不支持 GPU 虚拟寻址并使用分配和修补位置列表来修补内存引用的引擎:
当用户模式驱动程序提交引用不驻留在设备上的分配的分配列表 (即用户模式驱动程序未在该分配) 上调用 MakeResidentCb 时,将发生无效访问。 发生此无效访问时,图形内核会将错误的上下文/设备置于错误状态。
对于支持 GPU 虚拟寻址但访问 GPU 虚拟地址 (VA) 无效的引擎:
GPU 预期会以中断的形式引发不可恢复的页面错误。 发生页面错误中断时,内核模式驱动程序需要通过新的页面错误通知将错误转发到图形内核。 当图形内核收到此通知时,它会在出错的引擎上启动引擎重置,并使错误的上下文/设备出错。 如果引擎重置失败,图形内核会将错误提升为完整的适配器范围的超时检测和恢复 (TDR) 。
访问无效的 VA 可能是因为 VA 后面没有分配,或者存在有效的分配,但它不是驻留的。