Re: [RFC 20/26] plugins/amdgpu: amdgpu_plugin_drm_restore_file() does not need to use libdrm
Tvrtko Ursulin <[email protected]> Mon, 2 Mar 2026 15:30:58 +0000
| Newsgroups | dev.linux.lists.criu |
|---|---|
| Message-ID | <[email protected]> |
On 02/03/2026 14:59, Francis, David wrote: > > I think we used those major, minor values somewhere once > but now that we don't, this looks sensible > > This patch is > Reviewed-By: David Francis <[email protected]> Thank you! And if the major and minor will be needed in the future I think they can be obtained more simply by fstat. Regards, Tvrtko > ________________________________________ > From: Tvrtko Ursulin <[email protected]> > Sent: Friday, February 20, 2026 7:05 AM > To: [email protected] > Cc: Francis, David; Tvrtko Ursulin > Subject: [RFC 20/26] plugins/amdgpu: amdgpu_plugin_drm_restore_file() does not need to use libdrm > > There is no need to initialize and de-initialize libdrm only to use the > duplicated fd for calls to drmPrimeFDToHandle(). From the kernel's > perspective it is exactly the same file so operation is identical to just > using the passed in file descriptor. > > Signed-off-by: Tvrtko Ursulin <[email protected]> > --- > plugins/amdgpu/amdgpu_plugin_drm.c | 18 +++--------------- > 1 file changed, 3 insertions(+), 15 deletions(-) > > diff --git a/plugins/amdgpu/amdgpu_plugin_drm.c b/plugins/amdgpu/amdgpu_plugin_drm.c > index de6d6f178d51..99a6804f51eb 100644 > --- a/plugins/amdgpu/amdgpu_plugin_drm.c > +++ b/plugins/amdgpu/amdgpu_plugin_drm.c > @@ -454,9 +454,7 @@ int amdgpu_plugin_drm_restore_file(int fd, CriuRenderNode *rd) > { > int ret = 0; > bool retry_needed = false; > - uint32_t major, minor; > - amdgpu_device_handle h_dev; > - int device_fd, *dmabufs; > + int *dmabufs; > > dmabufs = xzalloc(sizeof(int) * rd->num_of_bos); > if (!dmabufs) { > @@ -464,14 +462,6 @@ int amdgpu_plugin_drm_restore_file(int fd, CriuRenderNode *rd) > return -ENOMEM; > } > > - ret = amdgpu_device_initialize(fd, &major, &minor, &h_dev); > - if (ret) { > - pr_info("Error in init amdgpu device\n"); > - goto exit; > - } > - > - device_fd = amdgpu_device_get_fd(h_dev); > - > for (int i = 0; i < rd->num_of_bos; i++) { > DrmBoEntry *boinfo = rd->bo_entries[i]; > int dmabuf_fd = -1; > @@ -495,7 +485,7 @@ int amdgpu_plugin_drm_restore_file(int fd, CriuRenderNode *rd) > } > > if (boinfo->is_import) { > - drmPrimeFDToHandle(device_fd, dmabuf_fd, &handle); > + drmPrimeFDToHandle(fd, dmabuf_fd, &handle); > } else { > union drm_amdgpu_gem_create create_args = { 0 }; > > @@ -511,7 +501,7 @@ int amdgpu_plugin_drm_restore_file(int fd, CriuRenderNode *rd) > } > handle = create_args.out.handle; > > - drmPrimeHandleToFD(device_fd, handle, 0, &dmabuf_fd); > + drmPrimeHandleToFD(fd, handle, 0, &dmabuf_fd); > } > > change_args.handle = handle; > @@ -572,8 +562,6 @@ int amdgpu_plugin_drm_restore_file(int fd, CriuRenderNode *rd) > if (ret) > goto exit; > > - ret = amdgpu_device_deinitialize(h_dev); > - > if (rd->num_of_bos > 0) { > ret = restore_bo_contents_drm(rd->drm_render_minor, rd, fd, dmabufs); > if (ret) > -- > 2.52.0 >