radv: improve failure logging for amdgpu on init

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15771>
This commit is contained in:
Mike Blumenkrantz 2022-04-06 10:49:26 -04:00 committed by Marge Bot
parent 0864b15047
commit 736f3fdadd
3 changed files with 25 additions and 19 deletions

View File

@ -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;
}

View File

@ -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,

View File

@ -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;