Update pointer info to include IPC memory.
IPC memory was previously returned as HSA_POINTER_ALLOCATED and had garbage in the node_id field. Due to ROCR_VISIBLE_DEVICES we need to be able to distinguish between imported memory and regular memory because imported memory may not be owned by an agent that is visible in the process. Differentiating these flags allows the users to expect null agent for the owning agent. Fixes Change-Id: Ide3489cec1ee2072dc9697fa5cb71ddb17999d14
此提交包含在:
@@ -3276,6 +3276,7 @@ HSAKMT_STATUS fmm_register_shared_memory(const HsaSharedMemoryHandle *SharedMemo
|
||||
err = HSAKMT_STATUS_ERROR;
|
||||
goto err_free_obj;
|
||||
}
|
||||
obj->node_id = gpu_mem[gpu_mem_id].node_id;
|
||||
map_fd = importArgs.mmap_offset >= (1ULL<<40) ? kfd_fd :
|
||||
gpu_mem[gpu_mem_id].drm_render_fd;
|
||||
ret = mmap(reservedMem, (SizeInPages << PAGE_SHIFT),
|
||||
@@ -3496,7 +3497,9 @@ HSAKMT_STATUS fmm_get_mem_info(const void *address, HsaPointerInfo *info)
|
||||
}
|
||||
/* Successful vm_find_object returns with the aperture locked */
|
||||
|
||||
if (vm_obj->metadata)
|
||||
if (vm_obj->is_imported_kfd_bo)
|
||||
info->Type = HSA_POINTER_REGISTERED_SHARED;
|
||||
else if (vm_obj->metadata)
|
||||
info->Type = HSA_POINTER_REGISTERED_GRAPHICS;
|
||||
else if (vm_obj->userptr)
|
||||
info->Type = HSA_POINTER_REGISTERED_USER;
|
||||
|
||||
新增問題並參考
封鎖使用者