wsl/libhsakmt: add same process check for ipc buffer
Signed-off-by: Flora Cui <flora.cui@amd.com> Reviewed-by: Tianci Yin <tianci.yin@amd.com> Part-of: <http://10.67.69.192/wsl/rocr-runtime/-/merge_requests/85>
This commit is contained in:
+1
-1
@@ -205,7 +205,7 @@ public:
|
||||
gpusize base_addr,
|
||||
gpusize size);
|
||||
|
||||
ErrorCode CreateGpuMemory(const GpuMemoryCreateInfo &create_info, GpuMemory **gpu_mem);
|
||||
ErrorCode CreateGpuMemory(const GpuMemoryCreateInfo &create_info, GpuMemory **gpu_mem, gpusize *gpu_va = nullptr);
|
||||
ErrorCode HandleApertureAlloc(gpusize size, gpusize *out_gpu_virt_addr);
|
||||
void HandleApertureFree(gpusize gpu_addr);
|
||||
|
||||
|
||||
+8
-2
@@ -84,7 +84,8 @@ union GpuMemoryDescFlags {
|
||||
uint32_t is_va_required :1;
|
||||
uint32_t is_imported_vram_vmem :1;
|
||||
uint32_t is_imported_vram_ipc :1;
|
||||
uint32_t unused : 20;
|
||||
uint32_t is_imported_from_same_process : 3; // imported from same process, record shared cnt
|
||||
uint32_t unused : 17;
|
||||
};
|
||||
|
||||
uint32_t reserved;
|
||||
@@ -148,6 +149,8 @@ struct SharedHandleInfo {
|
||||
uint64_t size;
|
||||
uint32_t flags;
|
||||
int mem_flags;
|
||||
pid_t pid;
|
||||
gpusize gpu_addr;
|
||||
};
|
||||
|
||||
using GpuMemoryHandle = void *;
|
||||
@@ -187,6 +190,9 @@ public:
|
||||
inline void GetQueueReference() { desc_.flags.is_queue_referenced = 1; }
|
||||
inline void PutQueueReference() { desc_.flags.is_queue_referenced = 0; }
|
||||
inline bool IsQueueReferenced() const { return desc_.flags.is_queue_referenced; }
|
||||
inline void IncSharedReference() { desc_.flags.is_imported_from_same_process++; }
|
||||
inline uint32_t DecSharedReference() { return (desc_.flags.is_imported_from_same_process == 0) ? 0 : --desc_.flags.is_imported_from_same_process; }
|
||||
inline bool IsSharedFromSameProcess() const { return desc_.flags.is_imported_from_same_process > 0; }
|
||||
|
||||
WinAllocationHandle GetAllocationHandle(size_t index) const { return alloc_handles_ptr_[index]; }
|
||||
size_t NumChunks() const { return num_allocations_; }
|
||||
@@ -207,7 +213,7 @@ public:
|
||||
ErrorCode Evict();
|
||||
|
||||
ErrorCode ExportPhysicalHandle(int* dmabuf_fd, uint32_t flags = SHARED_ALLOCATION_ALL_ACCESS);
|
||||
ErrorCode ImportPhysicalHandle(const GpuMemoryCreateInfo &create_info);
|
||||
ErrorCode ImportPhysicalHandle(const GpuMemoryCreateInfo &create_info, gpusize *gpu_addr = nullptr);
|
||||
~GpuMemory();
|
||||
protected:
|
||||
explicit GpuMemory(WDDMDevice *device);
|
||||
|
||||
@@ -54,6 +54,7 @@ enum class ErrorCode {
|
||||
Timeout,
|
||||
SyscallFail,
|
||||
InvalidateParams,
|
||||
SameProcessSameDevice,
|
||||
Unknown,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user