From 4ee483cd7a1a0d313228587fc141ea29f3520c12 Mon Sep 17 00:00:00 2001 From: Xiaogang Chen Date: Fri, 21 Oct 2022 16:29:37 -0500 Subject: [PATCH 1/2] amdgpu: Add an api amdgpu_device_dup_fd Add api amdgpu_device_dup_fd to duplicate fd for render node that libdrm uses for each gpu. Signed-off-by: Xiaogang Chen --- amdgpu/amdgpu.h | 12 ++++++++++++ amdgpu/amdgpu_device.c | 16 ++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/amdgpu/amdgpu.h b/amdgpu/amdgpu.h index 5ef2524a..dc3feadf 100644 --- a/amdgpu/amdgpu.h +++ b/amdgpu/amdgpu.h @@ -1870,6 +1870,18 @@ int amdgpu_vm_reserve_vmid(amdgpu_device_handle dev, uint32_t flags); */ int amdgpu_vm_unreserve_vmid(amdgpu_device_handle dev, uint32_t flags); +/** + * Get a DRM render node FD Returns a duplicate of the render node file descriptor used by the device. + * It is the caller's responsibility to close this file descriptor when it is + * no longer needed. + * + * \param dev - \c [in] Opaque device handle returned by amdgpu_device_initialize + * + * \return render node file descriptor on success\n + * <0 - Negative POSIX error code + */ +int amdgpu_device_dup_fd(amdgpu_device_handle dev); + #ifdef __cplusplus } #endif diff --git a/amdgpu/amdgpu_device.c b/amdgpu/amdgpu_device.c index aeb5e3c5..12439dc5 100644 --- a/amdgpu/amdgpu_device.c +++ b/amdgpu/amdgpu_device.c @@ -314,3 +314,19 @@ drm_public int amdgpu_query_sw_info(amdgpu_device_handle dev, } return -EINVAL; } + +drm_public int amdgpu_device_dup_fd(amdgpu_device_handle dev) +{ + struct amdgpu_device *dev_tmp; + + pthread_mutex_lock(&dev_mutex); + for (dev_tmp = dev_list; dev_tmp; dev_tmp = dev_tmp->next){ + if (dev_tmp == dev){ + pthread_mutex_unlock(&dev_mutex); + return fcntl(dev_tmp->fd, F_DUPFD_CLOEXEC, 0); + } + } + pthread_mutex_unlock(&dev_mutex); + + return -EINVAL; +} From 6436650fa79c8c648f2dc460cc8b2f22496864e4 Mon Sep 17 00:00:00 2001 From: Xiaogang Chen Date: Fri, 21 Oct 2022 16:59:59 -0500 Subject: [PATCH 2/2] amdgpu: Add amdgpu_device_dup_fd at amdgpu-symbols.txt Add amdgpu_device_dup_fd at amdgpu-symbols.txt for debian build Signed-off-by: Xiaogang Chen --- amdgpu/amdgpu-symbols.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/amdgpu/amdgpu-symbols.txt b/amdgpu/amdgpu-symbols.txt index d41d9c24..640ef908 100644 --- a/amdgpu/amdgpu-symbols.txt +++ b/amdgpu/amdgpu-symbols.txt @@ -35,6 +35,7 @@ amdgpu_cs_query_fence_status amdgpu_cs_query_reset_state amdgpu_cs_query_reset_state2 amdgpu_query_sw_info +amdgpu_device_dup_fd amdgpu_cs_signal_semaphore amdgpu_cs_submit amdgpu_cs_submit_raw