Mesa (main): radv: improve failure logging for amdgpu on init

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Apr 7 14:05:58 UTC 2022


Module: Mesa
Branch: main
Commit: 736f3fdadd9fed7c861561880918f81aed8abee0
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=736f3fdadd9fed7c861561880918f81aed8abee0

Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date:   Wed Apr  6 10:49:26 2022 -0400

radv: improve failure logging for amdgpu on init

Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15771>

---

 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 9d39b18e74d..d8b1e2e12cb 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 65b96fca809..0d3a09d4401 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 847a5091b42..e47a2d79f37 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;
 



More information about the mesa-commit mailing list