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:
parent
0864b15047
commit
736f3fdadd
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue