From 736f3fdadd9fed7c861561880918f81aed8abee0 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 6 Apr 2022 10:49:26 -0400 Subject: [PATCH] radv: improve failure logging for amdgpu on init Reviewed-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c | 14 +++++++------- src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c | 12 ++++++------ src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c | 18 ++++++++++++------ 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c index 9d39b18..d8b1e2e 100644 --- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c +++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c @@ -132,7 +132,7 @@ radv_amdgpu_winsys_bo_virtual_bind(struct radeon_winsys *_ws, struct radeon_wins } if (r) { - fprintf(stderr, "amdgpu: Failed to replace a PRT VA region (%d).\n", r); + fprintf(stderr, "radv/amdgpu: Failed to replace a PRT VA region (%d).\n", r); return VK_ERROR_OUT_OF_DEVICE_MEMORY; } @@ -321,7 +321,7 @@ radv_amdgpu_winsys_bo_destroy(struct radeon_winsys *_ws, struct radeon_winsys_bo /* Clear mappings of this PRT VA region. */ r = radv_amdgpu_bo_va_op(ws, bo->bo, 0, bo->size, bo->base.va, 0, 0, AMDGPU_VA_OP_CLEAR); if (r) { - fprintf(stderr, "amdgpu: Failed to clear a PRT VA region (%d).\n", r); + fprintf(stderr, "radv/amdgpu: Failed to clear a PRT VA region (%d).\n", r); } free(bo->bos); @@ -415,7 +415,7 @@ radv_amdgpu_winsys_bo_create(struct radeon_winsys *_ws, uint64_t size, unsigned r = radv_amdgpu_bo_va_op(ws, NULL, 0, size, bo->base.va, 0, AMDGPU_VM_PAGE_PRT, AMDGPU_VA_OP_MAP); if (r) { - fprintf(stderr, "amdgpu: Failed to reserve a PRT VA region (%d).\n", r); + fprintf(stderr, "radv/amdgpu: Failed to reserve a PRT VA region (%d).\n", r); result = VK_ERROR_OUT_OF_DEVICE_MEMORY; goto error_ranges_alloc; } @@ -480,10 +480,10 @@ radv_amdgpu_winsys_bo_create(struct radeon_winsys *_ws, uint64_t size, unsigned r = amdgpu_bo_alloc(ws->dev, &request, &buf_handle); if (r) { - fprintf(stderr, "amdgpu: Failed to allocate a buffer:\n"); - fprintf(stderr, "amdgpu: size : %" PRIu64 " bytes\n", size); - fprintf(stderr, "amdgpu: alignment : %u bytes\n", alignment); - fprintf(stderr, "amdgpu: domains : %u\n", initial_domain); + fprintf(stderr, "radv/amdgpu: Failed to allocate a buffer:\n"); + fprintf(stderr, "radv/amdgpu: size : %" PRIu64 " bytes\n", size); + fprintf(stderr, "radv/amdgpu: alignment : %u bytes\n", alignment); + fprintf(stderr, "radv/amdgpu: domains : %u\n", initial_domain); result = VK_ERROR_OUT_OF_DEVICE_MEMORY; goto error_bo_alloc; } diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c index 65b96fc..0d3a09d 100644 --- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c +++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c @@ -386,7 +386,7 @@ radv_amdgpu_cs_grow(struct radeon_cmdbuf *_cs, size_t min_size) /* Re-compute the number of dwords to allocate. */ ib_dws = MAX2(cs->base.cdw + min_size, MIN2(cs->base.max_dw * 2, limit_dws)); if (ib_dws > limit_dws) { - fprintf(stderr, "amdgpu: Too high number of " + fprintf(stderr, "radv/amdgpu: Too high number of " "dwords to allocate\n"); cs->status = VK_ERROR_OUT_OF_HOST_MEMORY; return; @@ -1552,7 +1552,7 @@ radv_amdgpu_ctx_create(struct radeon_winsys *_ws, enum radeon_ctx_priority prior result = VK_ERROR_NOT_PERMITTED_EXT; goto fail_create; } else if (r) { - fprintf(stderr, "amdgpu: radv_amdgpu_cs_ctx_create2 failed. (%i)\n", r); + fprintf(stderr, "radv/amdgpu: radv_amdgpu_cs_ctx_create2 failed. (%i)\n", r); result = VK_ERROR_OUT_OF_HOST_MEMORY; goto fail_create; } @@ -1832,10 +1832,10 @@ radv_amdgpu_cs_submit(struct radv_amdgpu_ctx *ctx, struct radv_amdgpu_cs_request request->handles, &bo_list); if (r) { if (r == -ENOMEM) { - fprintf(stderr, "amdgpu: Not enough memory for buffer list creation.\n"); + fprintf(stderr, "radv/amdgpu: Not enough memory for buffer list creation.\n"); result = VK_ERROR_OUT_OF_HOST_MEMORY; } else { - fprintf(stderr, "amdgpu: buffer list creation failed (%d).\n", r); + fprintf(stderr, "radv/amdgpu: buffer list creation failed (%d).\n", r); result = VK_ERROR_UNKNOWN; } goto error_out; @@ -1858,10 +1858,10 @@ radv_amdgpu_cs_submit(struct radv_amdgpu_ctx *ctx, struct radv_amdgpu_cs_request if (r) { if (r == -ENOMEM) { - fprintf(stderr, "amdgpu: Not enough memory for command submission.\n"); + fprintf(stderr, "radv/amdgpu: Not enough memory for command submission.\n"); result = VK_ERROR_OUT_OF_HOST_MEMORY; } else if (r == -ECANCELED) { - fprintf(stderr, "amdgpu: The CS has been cancelled because the context is lost.\n"); + fprintf(stderr, "radv/amdgpu: The CS has been cancelled because the context is lost.\n"); result = VK_ERROR_DEVICE_LOST; } else { fprintf(stderr, diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c index 847a509..e47a2d7 100644 --- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c +++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c @@ -46,13 +46,13 @@ do_winsys_init(struct radv_amdgpu_winsys *ws, int fd) return false; if (ws->info.drm_minor < 23) { - fprintf(stderr, "radv: DRM 3.23+ is required (Linux kernel 4.15+)\n"); + fprintf(stderr, "radv/amdgpu: DRM 3.23+ is required (Linux kernel 4.15+)\n"); return false; } ws->addrlib = ac_addrlib_create(&ws->info, &ws->info.max_alignment); if (!ws->addrlib) { - fprintf(stderr, "amdgpu: Cannot create addrlib.\n"); + fprintf(stderr, "radv/amdgpu: Cannot create addrlib.\n"); return false; } @@ -198,15 +198,19 @@ radv_amdgpu_winsys_create(int fd, uint64_t debug_flags, uint64_t perftest_flags, struct radv_amdgpu_winsys *ws = NULL; r = amdgpu_device_initialize(fd, &drm_major, &drm_minor, &dev); - if (r) + if (r) { + fprintf(stderr, "radv/amdgpu: failed to initialize device.\n"); return NULL; + } /* We have to keep this lock till insertion. */ simple_mtx_lock(&winsys_creation_mutex); if (!winsyses) winsyses = _mesa_pointer_hash_table_create(NULL); - if (!winsyses) + if (!winsyses) { + fprintf(stderr, "radv/amdgpu: failed to alloc winsys hash table.\n"); goto fail; + } struct hash_entry *entry = _mesa_hash_table_search(winsyses, dev); if (entry) { @@ -223,7 +227,7 @@ radv_amdgpu_winsys_create(int fd, uint64_t debug_flags, uint64_t perftest_flags, ((debug_flags & RADV_DEBUG_HANG) && !ws->debug_log_bos) || ((debug_flags & RADV_DEBUG_NO_IBS) && ws->use_ib_bos) || (perftest_flags != ws->perftest)) { - fprintf(stderr, "amdgpu: Found options that differ from the existing winsys.\n"); + fprintf(stderr, "radv/amdgpu: Found options that differ from the existing winsys.\n"); return NULL; } @@ -253,8 +257,10 @@ radv_amdgpu_winsys_create(int fd, uint64_t debug_flags, uint64_t perftest_flags, ws->reserve_vmid = reserve_vmid; if (ws->reserve_vmid) { r = amdgpu_vm_reserve_vmid(dev, 0); - if (r) + if (r) { + fprintf(stderr, "radv/amdgpu: failed to reserve vmid.\n"); goto vmid_fail; + } } int num_sync_types = 0; -- 2.7.4