[libdrm] amdgpu: print error messages when amdgpu_device_initialize is failing

Submitted by Marek Olšák on Sept. 12, 2017, 5:39 p.m.

Details

Message ID 1505237954-842-1-git-send-email-maraeo@gmail.com
State New
Headers show
Series "amdgpu: print error messages when amdgpu_device_initialize is failing" ( rev: 1 ) in AMD X.Org drivers

Not browsing as part of any series.

Commit Message

Marek Olšák Sept. 12, 2017, 5:39 p.m.
From: Marek Olšák <marek.olsak@amd.com>

---
 amdgpu/amdgpu_device.c | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

Patch hide | download patch | download mbox

diff --git a/amdgpu/amdgpu_device.c b/amdgpu/amdgpu_device.c
index 9a238d9..2b31c45 100644
--- a/amdgpu/amdgpu_device.c
+++ b/amdgpu/amdgpu_device.c
@@ -184,42 +184,47 @@  int amdgpu_device_initialize(int fd,
 	uint32_t accel_working = 0;
 	uint64_t start, max;
 
 	*device_handle = NULL;
 
 	pthread_mutex_lock(&fd_mutex);
 	if (!fd_tab)
 		fd_tab = util_hash_table_create(fd_hash, fd_compare);
 	r = amdgpu_get_auth(fd, &flag_auth);
 	if (r) {
+		fprintf(stderr, "%s: amdgpu_get_auth (1) failed (%i)\n",
+			__func__, r);
 		pthread_mutex_unlock(&fd_mutex);
 		return r;
 	}
 	dev = util_hash_table_get(fd_tab, UINT_TO_PTR(fd));
 	if (dev) {
 		r = amdgpu_get_auth(dev->fd, &flag_authexist);
 		if (r) {
+			fprintf(stderr, "%s: amdgpu_get_auth (2) failed (%i)\n",
+				__func__, r);
 			pthread_mutex_unlock(&fd_mutex);
 			return r;
 		}
 		if ((flag_auth) && (!flag_authexist)) {
 			dev->flink_fd = dup(fd);
 		}
 		*major_version = dev->major_version;
 		*minor_version = dev->minor_version;
 		amdgpu_device_reference(device_handle, dev);
 		pthread_mutex_unlock(&fd_mutex);
 		return 0;
 	}
 
 	dev = calloc(1, sizeof(struct amdgpu_device));
 	if (!dev) {
+		fprintf(stderr, "%s: calloc failed\n", __func__);
 		pthread_mutex_unlock(&fd_mutex);
 		return -ENOMEM;
 	}
 
 	dev->fd = -1;
 	dev->flink_fd = -1;
 
 	atomic_set(&dev->refcount, 1);
 
 	version = drmGetVersion(fd);
@@ -241,41 +246,49 @@  int amdgpu_device_initialize(int fd,
 	dev->minor_version = version->version_minor;
 	drmFreeVersion(version);
 
 	dev->bo_flink_names = util_hash_table_create(handle_hash,
 						     handle_compare);
 	dev->bo_handles = util_hash_table_create(handle_hash, handle_compare);
 	pthread_mutex_init(&dev->bo_table_mutex, NULL);
 
 	/* Check if acceleration is working. */
 	r = amdgpu_query_info(dev, AMDGPU_INFO_ACCEL_WORKING, 4, &accel_working);
-	if (r)
+	if (r) {
+		fprintf(stderr, "%s: amdgpu_query_info(ACCEL_WORKING) failed (%i)\n",
+			__func__, r);
 		goto cleanup;
+	}
 	if (!accel_working) {
+		fprintf(stderr, "%s: AMDGPU_INFO_ACCEL_WORKING = 0\n", __func__);
 		r = -EBADF;
 		goto cleanup;
 	}
 
 	r = amdgpu_query_gpu_info_init(dev);
-	if (r)
+	if (r) {
+		fprintf(stderr, "%s: amdgpu_query_gpu_info_init failed\n", __func__);
 		goto cleanup;
+	}
 
 	amdgpu_vamgr_init(&dev->vamgr, dev->dev_info.virtual_address_offset,
 			  dev->dev_info.virtual_address_max,
 			  dev->dev_info.virtual_address_alignment);
 
 	max = MIN2(dev->dev_info.virtual_address_max, 0xffffffff);
 	start = amdgpu_vamgr_find_va(&dev->vamgr,
 				     max - dev->dev_info.virtual_address_offset,
 				     dev->dev_info.virtual_address_alignment, 0);
-	if (start > 0xffffffff)
+	if (start > 0xffffffff) {
+		fprintf(stderr, "%s: amdgpu_vamgr_find_va failed\n", __func__);
 		goto free_va; /* shouldn't get here */
+	}
 
 	amdgpu_vamgr_init(&dev->vamgr_32, start, max,
 			  dev->dev_info.virtual_address_alignment);
 
 	r = amdgpu_parse_asic_ids(&dev->asic_ids);
 	if (r) {
 		fprintf(stderr, "%s: Cannot parse ASIC IDs, 0x%x.",
 			__func__, r);
 	}
 

Comments

On Tue, Sep 12, 2017 at 1:39 PM, Marek Olšák <maraeo@gmail.com> wrote:
> From: Marek Olšák <marek.olsak@amd.com>
>

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

> ---
>  amdgpu/amdgpu_device.c | 19 ++++++++++++++++---
>  1 file changed, 16 insertions(+), 3 deletions(-)
>
> diff --git a/amdgpu/amdgpu_device.c b/amdgpu/amdgpu_device.c
> index 9a238d9..2b31c45 100644
> --- a/amdgpu/amdgpu_device.c
> +++ b/amdgpu/amdgpu_device.c
> @@ -184,42 +184,47 @@ int amdgpu_device_initialize(int fd,
>         uint32_t accel_working = 0;
>         uint64_t start, max;
>
>         *device_handle = NULL;
>
>         pthread_mutex_lock(&fd_mutex);
>         if (!fd_tab)
>                 fd_tab = util_hash_table_create(fd_hash, fd_compare);
>         r = amdgpu_get_auth(fd, &flag_auth);
>         if (r) {
> +               fprintf(stderr, "%s: amdgpu_get_auth (1) failed (%i)\n",
> +                       __func__, r);
>                 pthread_mutex_unlock(&fd_mutex);
>                 return r;
>         }
>         dev = util_hash_table_get(fd_tab, UINT_TO_PTR(fd));
>         if (dev) {
>                 r = amdgpu_get_auth(dev->fd, &flag_authexist);
>                 if (r) {
> +                       fprintf(stderr, "%s: amdgpu_get_auth (2) failed (%i)\n",
> +                               __func__, r);
>                         pthread_mutex_unlock(&fd_mutex);
>                         return r;
>                 }
>                 if ((flag_auth) && (!flag_authexist)) {
>                         dev->flink_fd = dup(fd);
>                 }
>                 *major_version = dev->major_version;
>                 *minor_version = dev->minor_version;
>                 amdgpu_device_reference(device_handle, dev);
>                 pthread_mutex_unlock(&fd_mutex);
>                 return 0;
>         }
>
>         dev = calloc(1, sizeof(struct amdgpu_device));
>         if (!dev) {
> +               fprintf(stderr, "%s: calloc failed\n", __func__);
>                 pthread_mutex_unlock(&fd_mutex);
>                 return -ENOMEM;
>         }
>
>         dev->fd = -1;
>         dev->flink_fd = -1;
>
>         atomic_set(&dev->refcount, 1);
>
>         version = drmGetVersion(fd);
> @@ -241,41 +246,49 @@ int amdgpu_device_initialize(int fd,
>         dev->minor_version = version->version_minor;
>         drmFreeVersion(version);
>
>         dev->bo_flink_names = util_hash_table_create(handle_hash,
>                                                      handle_compare);
>         dev->bo_handles = util_hash_table_create(handle_hash, handle_compare);
>         pthread_mutex_init(&dev->bo_table_mutex, NULL);
>
>         /* Check if acceleration is working. */
>         r = amdgpu_query_info(dev, AMDGPU_INFO_ACCEL_WORKING, 4, &accel_working);
> -       if (r)
> +       if (r) {
> +               fprintf(stderr, "%s: amdgpu_query_info(ACCEL_WORKING) failed (%i)\n",
> +                       __func__, r);
>                 goto cleanup;
> +       }
>         if (!accel_working) {
> +               fprintf(stderr, "%s: AMDGPU_INFO_ACCEL_WORKING = 0\n", __func__);
>                 r = -EBADF;
>                 goto cleanup;
>         }
>
>         r = amdgpu_query_gpu_info_init(dev);
> -       if (r)
> +       if (r) {
> +               fprintf(stderr, "%s: amdgpu_query_gpu_info_init failed\n", __func__);
>                 goto cleanup;
> +       }
>
>         amdgpu_vamgr_init(&dev->vamgr, dev->dev_info.virtual_address_offset,
>                           dev->dev_info.virtual_address_max,
>                           dev->dev_info.virtual_address_alignment);
>
>         max = MIN2(dev->dev_info.virtual_address_max, 0xffffffff);
>         start = amdgpu_vamgr_find_va(&dev->vamgr,
>                                      max - dev->dev_info.virtual_address_offset,
>                                      dev->dev_info.virtual_address_alignment, 0);
> -       if (start > 0xffffffff)
> +       if (start > 0xffffffff) {
> +               fprintf(stderr, "%s: amdgpu_vamgr_find_va failed\n", __func__);
>                 goto free_va; /* shouldn't get here */
> +       }
>
>         amdgpu_vamgr_init(&dev->vamgr_32, start, max,
>                           dev->dev_info.virtual_address_alignment);
>
>         r = amdgpu_parse_asic_ids(&dev->asic_ids);
>         if (r) {
>                 fprintf(stderr, "%s: Cannot parse ASIC IDs, 0x%x.",
>                         __func__, r);
>         }
>
> --
> 2.7.4
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx