mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-07-18 00:58:31 +00:00
plugins/amdgpu: Use the load_img helper in drm file restore
Use the recently added image load helper in one more function which contains the exactly same flow of open-alloc-read. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com> Reviewed-By: David Francis <David.Francis@amd.com>
This commit is contained in:
parent
cef41e8535
commit
bb9946ab9c
1 changed files with 5 additions and 20 deletions
|
|
@ -1846,7 +1846,6 @@ static int amdgpu_plugin_restore_drm_file(int id, bool *retry_needed)
|
|||
CriuRenderNode *rd;
|
||||
unsigned char *buf;
|
||||
size_t img_size;
|
||||
FILE *img_fp;
|
||||
int fd, ret;
|
||||
|
||||
/* This is restorer plugin for renderD nodes. Criu doesn't guarantee that they will
|
||||
|
|
@ -1855,9 +1854,8 @@ static int amdgpu_plugin_restore_drm_file(int id, bool *retry_needed)
|
|||
* first as we assume restore_maps is already filled. Need to fix this later.
|
||||
*/
|
||||
snprintf(img_path, sizeof(img_path), IMG_DRM_FILE, id);
|
||||
|
||||
img_fp = open_img_file(img_path, false, &img_size, true);
|
||||
if (!img_fp) {
|
||||
ret = load_img(img_path, &buf, &img_size);
|
||||
if (ret < 0) {
|
||||
ret = amdgpu_plugin_dmabuf_restore(id);
|
||||
if (ret == 1) {
|
||||
/* This is a dmabuf fd, but the corresponding buffer object that was
|
||||
|
|
@ -1869,29 +1867,16 @@ static int amdgpu_plugin_restore_drm_file(int id, bool *retry_needed)
|
|||
}
|
||||
return ret;
|
||||
}
|
||||
pr_info("Restoring RenderD %s\n", img_path);
|
||||
pr_debug("RenderD Image file size:%ld\n", img_size);
|
||||
buf = xmalloc(img_size);
|
||||
if (!buf) {
|
||||
pr_perror("Failed to allocate memory");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
ret = read_fp(img_fp, buf, img_size);
|
||||
if (ret) {
|
||||
pr_perror("Unable to read from %s", img_path);
|
||||
xfree(buf);
|
||||
return -1;
|
||||
}
|
||||
pr_info("Restoring RenderD %s image of %lu bytes\n",
|
||||
img_path, img_size);
|
||||
|
||||
rd = criu_render_node__unpack(NULL, img_size, buf);
|
||||
if (rd == NULL) {
|
||||
pr_perror("Unable to parse the RenderD message %d", id);
|
||||
pr_perror("Unable to parse the RenderD image %d", id);
|
||||
xfree(buf);
|
||||
fclose(img_fp);
|
||||
return -1;
|
||||
}
|
||||
fclose(img_fp);
|
||||
|
||||
pr_info("render node gpu_id = 0x%04x\n", rd->gpu_id);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue