All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH libdrm 1/3] amdgpu: verify the tested device
@ 2017-01-19 22:53 Alex Xie
       [not found] ` <1484866391-17175-1-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 16+ messages in thread
From: Alex Xie @ 2017-01-19 22:53 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Alex Xie

Verify the vender ID and driver name.
Open all AMDGPU devices.
Provide an option to open render node.

Tested as root: PASS
Tested as non-privileged user:
All tests failed as expected

Signed-off-by: Alex Xie <AlexBin.Xie@amd.com>
---
 tests/amdgpu/amdgpu_test.c | 144 +++++++++++++++++++++++++++++++++++++--------
 1 file changed, 121 insertions(+), 23 deletions(-)

diff --git a/tests/amdgpu/amdgpu_test.c b/tests/amdgpu/amdgpu_test.c
index 71f357c..e42ef9d 100644
--- a/tests/amdgpu/amdgpu_test.c
+++ b/tests/amdgpu/amdgpu_test.c
@@ -115,6 +115,119 @@ static const char usage[] = "Usage: %s [-hl] [<-s <suite id>> [-t <test id>]]\n"
 /** Specified options strings for getopt */
 static const char options[]   = "hls:t:";
 
+/* Open AMD devices.
+ * Return the number of AMD device openned.
+ */
+static int amdgpu_open_devices(int open_render_node)
+{
+	drmDevicePtr devices[MAX_CARDS_SUPPORTED];
+	int ret;
+	int i;
+	int j;
+	int amd_index = 0;
+	int drm_count;
+	int fd;
+	char *device_name;
+	drmVersionPtr version;
+
+	drm_count = drmGetDevices2(0, devices, MAX_CARDS_SUPPORTED);
+
+	if (drm_count < 0) {
+		fprintf(stderr,
+			"drmGetDevices2() returned an error %d\n",
+			drm_count);
+		return 0;
+	}
+
+	for (i = 0; i < drm_count; i++) {
+		/* If this is not AMD GPU vender ID, skip*/
+		if (devices[i]->bustype == DRM_BUS_PCI)
+			if (devices[i]->deviceinfo.pci->vendor_id != 0x1002)
+				continue;
+
+		for (j = 0; j < DRM_NODE_MAX; j++) {
+			if (devices[i]->available_nodes & 1 << j) {
+				fd = open(
+					devices[i]->nodes[j],
+					O_RDONLY | O_CLOEXEC,
+					0);
+				if (fd < 0) continue;
+			}
+
+			version = drmGetVersion(fd);
+			if (!version) {
+				fprintf(stderr,
+					"Warning: Cannot get version for %s."
+					"Error is %s\n",
+					devices[i]->nodes[j],
+					strerror(errno));
+				close(fd);
+				break;
+			}
+
+			if (strcmp(version->name, "amdgpu")) {
+				/* This is not AMDGPU driver, skip.*/
+				drmFreeVersion(version);
+				close(fd);
+				break;
+			}
+
+			drmFreeVersion(version);
+
+			if (open_render_node)
+				device_name = drmGetRenderDeviceNameFromFd(fd);
+			else
+				device_name = drmGetPrimaryDeviceNameFromFd(fd);
+
+			close(fd);
+
+			drm_amdgpu[amd_index] = open(device_name,
+							O_RDWR | O_CLOEXEC);
+
+			if (drm_amdgpu[amd_index] >= 0)
+				amd_index++;
+
+			free(device_name);
+
+			/* We have open this device. Go to next device.*/
+			break;
+		}
+	}
+
+	drmFreeDevices(devices, drm_count);
+}
+
+/* Close AMD devices.
+ */
+static void amdgpu_close_devices()
+{
+	int i;
+	for (i = 0; i < MAX_CARDS_SUPPORTED; i++)
+		if (drm_amdgpu[i] >=0)
+			close(drm_amdgpu[i]);
+}
+
+/* Print AMD devices information */
+static void amdgpu_print_devices()
+{
+	int i;
+	for (i = 0; i < MAX_CARDS_SUPPORTED; i++)
+		if (drm_amdgpu[i] >=0) {
+			/** Display version of DRM driver */
+			drmVersionPtr retval = drmGetVersion(drm_amdgpu[0]);
+
+			if (retval == NULL) {
+				perror("Cannot get version for AMDGPU device");
+				exit(EXIT_FAILURE);
+			}
+
+			printf("AMDGPU device #%d: "
+				"Name: [%s] : Date [%s] : Description [%s]\n",
+				i, retval->name, retval->date, retval->desc);
+			drmFreeVersion(retval);
+		}
+}
+
 /* The main() function for setting up and running the tests.
  * Returns a CUE_SUCCESS on successful running, another
  * CUnit error code on failure.
@@ -163,35 +276,20 @@ int main(int argc, char **argv)
 		}
 	}
 
-	/* Try to open all possible radeon connections
-	 * Right now: Open only the 0.
-	 */
-	printf("Try to open the card 0..\n");
-	drm_amdgpu[0] = open("/dev/dri/card0", O_RDWR | O_CLOEXEC);
+	amdgpu_open_devices(0);
 
 	if (drm_amdgpu[0] < 0) {
-		perror("Cannot open /dev/dri/card0\n");
-		exit(EXIT_FAILURE);
-	}
-
-	/** Display version of DRM driver */
-	drmVersionPtr retval = drmGetVersion(drm_amdgpu[0]);
-
-	if (retval == NULL) {
-		perror("Could not get information about DRM driver");
+		perror("Cannot open AMDGPU device.\n");
 		exit(EXIT_FAILURE);
 	}
 
-	printf("DRM Driver: Name: [%s] : Date [%s] : Description [%s]\n",
-	       retval->name, retval->date, retval->desc);
-
-	drmFreeVersion(retval);
+	amdgpu_print_devices();
 
 	/* Initialize test suites to run */
 
 	/* initialize the CUnit test registry */
 	if (CUE_SUCCESS != CU_initialize_registry()) {
-		close(drm_amdgpu[0]);
+		amdgpu_close_devices();
 		return CU_get_error();
 	}
 
@@ -200,7 +298,7 @@ int main(int argc, char **argv)
 		fprintf(stderr, "suite registration failed - %s\n",
 				CU_get_error_msg());
 		CU_cleanup_registry();
-		close(drm_amdgpu[0]);
+		amdgpu_close_devices();
 		exit(EXIT_FAILURE);
 	}
 
@@ -222,7 +320,7 @@ int main(int argc, char **argv)
 					fprintf(stderr, "Invalid test id: %d\n",
 								test_id);
 					CU_cleanup_registry();
-					close(drm_amdgpu[0]);
+					amdgpu_close_devices();
 					exit(EXIT_FAILURE);
 				}
 			} else
@@ -231,13 +329,13 @@ int main(int argc, char **argv)
 			fprintf(stderr, "Invalid suite id : %d\n",
 					suite_id);
 			CU_cleanup_registry();
-			close(drm_amdgpu[0]);
+			amdgpu_close_devices();
 			exit(EXIT_FAILURE);
 		}
 	} else
 		CU_basic_run_tests();
 
 	CU_cleanup_registry();
-	close(drm_amdgpu[0]);
+	amdgpu_close_devices();
 	return CU_get_error();
 }
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH libdrm 2/3] amdgpu: A new option to choose which device to run most tests
       [not found] ` <1484866391-17175-1-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>
@ 2017-01-19 22:53   ` Alex Xie
       [not found]     ` <1484866391-17175-2-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>
  2017-01-19 22:53   ` [PATCH libdrm 3/3] amdgpu: A new option to run tests on render node Alex Xie
                     ` (2 subsequent siblings)
  3 siblings, 1 reply; 16+ messages in thread
From: Alex Xie @ 2017-01-19 22:53 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Alex Xie

This can be used to test multiple GPUs

Signed-off-by: Alex Xie <AlexBin.Xie@amd.com>
---
 tests/amdgpu/amdgpu_test.c | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/tests/amdgpu/amdgpu_test.c b/tests/amdgpu/amdgpu_test.c
index e42ef9d..2437db4 100644
--- a/tests/amdgpu/amdgpu_test.c
+++ b/tests/amdgpu/amdgpu_test.c
@@ -108,12 +108,14 @@ static void display_test_suites(void)
 
 
 /** Help string for command line parameters */
-static const char usage[] = "Usage: %s [-hl] [<-s <suite id>> [-t <test id>]]\n"
-				"where:\n"
-				"       l - Display all suites and their tests\n"
-				"       h - Display this help\n";
+static const char usage[] =
+	"Usage: %s [-hl] [<-s <suite id>> [-t <test id>]] [-d <device_id>]\n"
+	"where:\n"
+	"       l - Display all suites and their tests\n"
+	"       d - Choose which device to run tests\n"
+	"       h - Display this help\n";
 /** Specified options strings for getopt */
-static const char options[]   = "hls:t:";
+static const char options[]   = "hls:t:d:";
 
 /* Open AMD devices.
  * Return the number of AMD device openned.
@@ -238,6 +240,7 @@ int main(int argc, char **argv)
 	int i = 0;
 	int suite_id = -1;	/* By default run everything */
 	int test_id  = -1;	/* By default run all tests in the suite */
+	int device_id = 0;	/* By default run most tests on device 0 */
 	CU_pSuite pSuite = NULL;
 	CU_pTest  pTest  = NULL;
 
@@ -266,6 +269,9 @@ int main(int argc, char **argv)
 		case 't':
 			test_id = atoi(optarg);
 			break;
+		case 'd':
+			device_id = atoi(optarg);
+			break;
 		case '?':
 		case 'h':
 			fprintf(stderr, usage, argv[0]);
@@ -283,6 +289,15 @@ int main(int argc, char **argv)
 		exit(EXIT_FAILURE);
 	}
 
+	if (device_id) {
+		/* Most tests run on device 0.
+		 * Swap the chosen device to device 0.
+		 */
+		i = drm_amdgpu[0];
+		drm_amdgpu[0] = drm_amdgpu[device_id];
+		drm_amdgpu[device_id] = i;
+	}
+
 	amdgpu_print_devices();
 
 	/* Initialize test suites to run */
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH libdrm 3/3] amdgpu: A new option to run tests on render node
       [not found] ` <1484866391-17175-1-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>
  2017-01-19 22:53   ` [PATCH libdrm 2/3] amdgpu: A new option to choose which device to run most tests Alex Xie
@ 2017-01-19 22:53   ` Alex Xie
       [not found]     ` <1484866391-17175-3-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>
  2017-01-20  3:45   ` [PATCH libdrm 1/3] amdgpu: verify the tested device zhoucm1
  2017-01-20 13:18   ` Emil Velikov
  3 siblings, 1 reply; 16+ messages in thread
From: Alex Xie @ 2017-01-19 22:53 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Alex Xie

Tested:
1. As root, tests passed on primary.
2. As root, BO export/import failed on render node as expected.
3. As non-privileged user, tests failed on primary as expected.
4. As non-privileged user, only BO export/import
   failed on render node as expected.

Signed-off-by: Alex Xie <AlexBin.Xie@amd.com>
---
 tests/amdgpu/amdgpu_test.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/tests/amdgpu/amdgpu_test.c b/tests/amdgpu/amdgpu_test.c
index 2437db4..a6f1dd1 100644
--- a/tests/amdgpu/amdgpu_test.c
+++ b/tests/amdgpu/amdgpu_test.c
@@ -109,13 +109,14 @@ static void display_test_suites(void)
 
 /** Help string for command line parameters */
 static const char usage[] =
-	"Usage: %s [-hl] [<-s <suite id>> [-t <test id>]] [-d <device_id>]\n"
+	"Usage: %s [-hlr] [<-s <suite id>> [-t <test id>]] [-d <device_id>]\n"
 	"where:\n"
 	"       l - Display all suites and their tests\n"
+	"       r - Run the tests on render node\n"
 	"       d - Choose which device to run tests\n"
 	"       h - Display this help\n";
 /** Specified options strings for getopt */
-static const char options[]   = "hls:t:d:";
+static const char options[]   = "hlrs:t:d:";
 
 /* Open AMD devices.
  * Return the number of AMD device openned.
@@ -241,6 +242,7 @@ int main(int argc, char **argv)
 	int suite_id = -1;	/* By default run everything */
 	int test_id  = -1;	/* By default run all tests in the suite */
 	int device_id = 0;	/* By default run most tests on device 0 */
+	int render_node = 0;	/* By default run most tests on primary node */
 	CU_pSuite pSuite = NULL;
 	CU_pTest  pTest  = NULL;
 
@@ -272,6 +274,9 @@ int main(int argc, char **argv)
 		case 'd':
 			device_id = atoi(optarg);
 			break;
+		case 'r':
+			render_node = 1;
+			break;
 		case '?':
 		case 'h':
 			fprintf(stderr, usage, argv[0]);
@@ -282,7 +287,7 @@ int main(int argc, char **argv)
 		}
 	}
 
-	amdgpu_open_devices(0);
+	amdgpu_open_devices(render_node);
 
 	if (drm_amdgpu[0] < 0) {
 		perror("Cannot open AMDGPU device.\n");
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH libdrm 1/3] amdgpu: verify the tested device
       [not found] ` <1484866391-17175-1-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>
  2017-01-19 22:53   ` [PATCH libdrm 2/3] amdgpu: A new option to choose which device to run most tests Alex Xie
  2017-01-19 22:53   ` [PATCH libdrm 3/3] amdgpu: A new option to run tests on render node Alex Xie
@ 2017-01-20  3:45   ` zhoucm1
       [not found]     ` <588187BC.9070806-5C7GfCeVMHo@public.gmane.org>
  2017-01-20 13:18   ` Emil Velikov
  3 siblings, 1 reply; 16+ messages in thread
From: zhoucm1 @ 2017-01-20  3:45 UTC (permalink / raw)
  To: Alex Xie, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

some small nitpick...

On 2017年01月20日 06:53, Alex Xie wrote:
> Verify the vender ID and driver name.
> Open all AMDGPU devices.
> Provide an option to open render node.
>
> Tested as root: PASS
> Tested as non-privileged user:
> All tests failed as expected
>
> Signed-off-by: Alex Xie <AlexBin.Xie@amd.com>
> ---
>   tests/amdgpu/amdgpu_test.c | 144 +++++++++++++++++++++++++++++++++++++--------
>   1 file changed, 121 insertions(+), 23 deletions(-)
>
> diff --git a/tests/amdgpu/amdgpu_test.c b/tests/amdgpu/amdgpu_test.c
> index 71f357c..e42ef9d 100644
> --- a/tests/amdgpu/amdgpu_test.c
> +++ b/tests/amdgpu/amdgpu_test.c
> @@ -115,6 +115,119 @@ static const char usage[] = "Usage: %s [-hl] [<-s <suite id>> [-t <test id>]]\n"
>   /** Specified options strings for getopt */
>   static const char options[]   = "hls:t:";
>   
> +/* Open AMD devices.
> + * Return the number of AMD device openned.
> + */
> +static int amdgpu_open_devices(int open_render_node)
> +{
> +	drmDevicePtr devices[MAX_CARDS_SUPPORTED];
> +	int ret;
> +	int i;
> +	int j;
> +	int amd_index = 0;
> +	int drm_count;
> +	int fd;
> +	char *device_name;
> +	drmVersionPtr version;
> +
> +	drm_count = drmGetDevices2(0, devices, MAX_CARDS_SUPPORTED);
> +
> +	if (drm_count < 0) {
> +		fprintf(stderr,
> +			"drmGetDevices2() returned an error %d\n",
> +			drm_count);
> +		return 0;
> +	}
> +
> +	for (i = 0; i < drm_count; i++) {
> +		/* If this is not AMD GPU vender ID, skip*/
> +		if (devices[i]->bustype == DRM_BUS_PCI)
> +			if (devices[i]->deviceinfo.pci->vendor_id != 0x1002)
> +				continue;
> +
> +		for (j = 0; j < DRM_NODE_MAX; j++) {
> +			if (devices[i]->available_nodes & 1 << j) {
> +				fd = open(
> +					devices[i]->nodes[j],
> +					O_RDONLY | O_CLOEXEC,
> +					0);
> +				if (fd < 0) continue;
> +			}
> +
> +			version = drmGetVersion(fd);
> +			if (!version) {
> +				fprintf(stderr,
> +					"Warning: Cannot get version for %s."
> +					"Error is %s\n",
> +					devices[i]->nodes[j],
> +					strerror(errno));
> +				close(fd);
> +				break;
> +			}
> +
> +			if (strcmp(version->name, "amdgpu")) {
> +				/* This is not AMDGPU driver, skip.*/
> +				drmFreeVersion(version);
> +				close(fd);
> +				break;
> +			}
> +
> +			drmFreeVersion(version);
> +
> +			if (open_render_node)
> +				device_name = drmGetRenderDeviceNameFromFd(fd);
> +			else
> +				device_name = drmGetPrimaryDeviceNameFromFd(fd);
> +
> +			close(fd);
> +
> +			drm_amdgpu[amd_index] = open(device_name,
> +							O_RDWR | O_CLOEXEC);
> +
> +			if (drm_amdgpu[amd_index] >= 0)
> +				amd_index++;
> +
> +			free(device_name);
> +
> +			/* We have open this device. Go to next device.*/
> +			break;
> +		}
> +	}
> +
> +	drmFreeDevices(devices, drm_count);
here needs return value;
> +}
> +
> +/* Close AMD devices.
> + */
> +static void amdgpu_close_devices()
> +{
> +	int i;
> +	for (i = 0; i < MAX_CARDS_SUPPORTED; i++)
> +		if (drm_amdgpu[i] >=0)
> +			close(drm_amdgpu[i]);
> +}
> +
> +/* Print AMD devices information */
> +static void amdgpu_print_devices()
> +{
> +	int i;
> +	for (i = 0; i < MAX_CARDS_SUPPORTED; i++)
> +		if (drm_amdgpu[i] >=0) {
> +			/** Display version of DRM driver */
> +			drmVersionPtr retval = drmGetVersion(drm_amdgpu[0]);
> +
> +			if (retval == NULL) {
> +				perror("Cannot get version for AMDGPU device");
> +				exit(EXIT_FAILURE);
> +			}
> +
> +			printf("AMDGPU device #%d: "
> +				"Name: [%s] : Date [%s] : Description [%s]\n",
> +				i, retval->name, retval->date, retval->desc);
> +			drmFreeVersion(retval);
> +		}
> +}
> +
>   /* The main() function for setting up and running the tests.
>    * Returns a CUE_SUCCESS on successful running, another
>    * CUnit error code on failure.
> @@ -163,35 +276,20 @@ int main(int argc, char **argv)
>   		}
>   	}
>   
> -	/* Try to open all possible radeon connections
> -	 * Right now: Open only the 0.
> -	 */
> -	printf("Try to open the card 0..\n");
> -	drm_amdgpu[0] = open("/dev/dri/card0", O_RDWR | O_CLOEXEC);
> +	amdgpu_open_devices(0);
we'd better to check this function return value.

Regards,
David Zhou
>   
>   	if (drm_amdgpu[0] < 0) {
> -		perror("Cannot open /dev/dri/card0\n");
> -		exit(EXIT_FAILURE);
> -	}
> -
> -	/** Display version of DRM driver */
> -	drmVersionPtr retval = drmGetVersion(drm_amdgpu[0]);
> -
> -	if (retval == NULL) {
> -		perror("Could not get information about DRM driver");
> +		perror("Cannot open AMDGPU device.\n");
>   		exit(EXIT_FAILURE);
>   	}
>   
> -	printf("DRM Driver: Name: [%s] : Date [%s] : Description [%s]\n",
> -	       retval->name, retval->date, retval->desc);
> -
> -	drmFreeVersion(retval);
> +	amdgpu_print_devices();
>   
>   	/* Initialize test suites to run */
>   
>   	/* initialize the CUnit test registry */
>   	if (CUE_SUCCESS != CU_initialize_registry()) {
> -		close(drm_amdgpu[0]);
> +		amdgpu_close_devices();
>   		return CU_get_error();
>   	}
>   
> @@ -200,7 +298,7 @@ int main(int argc, char **argv)
>   		fprintf(stderr, "suite registration failed - %s\n",
>   				CU_get_error_msg());
>   		CU_cleanup_registry();
> -		close(drm_amdgpu[0]);
> +		amdgpu_close_devices();
>   		exit(EXIT_FAILURE);
>   	}
>   
> @@ -222,7 +320,7 @@ int main(int argc, char **argv)
>   					fprintf(stderr, "Invalid test id: %d\n",
>   								test_id);
>   					CU_cleanup_registry();
> -					close(drm_amdgpu[0]);
> +					amdgpu_close_devices();
>   					exit(EXIT_FAILURE);
>   				}
>   			} else
> @@ -231,13 +329,13 @@ int main(int argc, char **argv)
>   			fprintf(stderr, "Invalid suite id : %d\n",
>   					suite_id);
>   			CU_cleanup_registry();
> -			close(drm_amdgpu[0]);
> +			amdgpu_close_devices();
>   			exit(EXIT_FAILURE);
>   		}
>   	} else
>   		CU_basic_run_tests();
>   
>   	CU_cleanup_registry();
> -	close(drm_amdgpu[0]);
> +	amdgpu_close_devices();
>   	return CU_get_error();
>   }

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH libdrm 1/3] amdgpu: verify the tested device
       [not found]     ` <588187BC.9070806-5C7GfCeVMHo@public.gmane.org>
@ 2017-01-20  8:40       ` Christian König
  0 siblings, 0 replies; 16+ messages in thread
From: Christian König @ 2017-01-20  8:40 UTC (permalink / raw)
  To: zhoucm1, Alex Xie, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

Am 20.01.2017 um 04:45 schrieb zhoucm1:
> some small nitpick...
>
> On 2017年01月20日 06:53, Alex Xie wrote:
>> Verify the vender ID and driver name.
>> Open all AMDGPU devices.
>> Provide an option to open render node.
>>
>> Tested as root: PASS
>> Tested as non-privileged user:
>> All tests failed as expected
>>
>> Signed-off-by: Alex Xie <AlexBin.Xie@amd.com>
>> ---
>>   tests/amdgpu/amdgpu_test.c | 144 
>> +++++++++++++++++++++++++++++++++++++--------
>>   1 file changed, 121 insertions(+), 23 deletions(-)
>>
>> diff --git a/tests/amdgpu/amdgpu_test.c b/tests/amdgpu/amdgpu_test.c
>> index 71f357c..e42ef9d 100644
>> --- a/tests/amdgpu/amdgpu_test.c
>> +++ b/tests/amdgpu/amdgpu_test.c
>> @@ -115,6 +115,119 @@ static const char usage[] = "Usage: %s [-hl] 
>> [<-s <suite id>> [-t <test id>]]\n"
>>   /** Specified options strings for getopt */
>>   static const char options[]   = "hls:t:";
>>   +/* Open AMD devices.
>> + * Return the number of AMD device openned.
>> + */
>> +static int amdgpu_open_devices(int open_render_node)
>> +{
>> +    drmDevicePtr devices[MAX_CARDS_SUPPORTED];
>> +    int ret;
>> +    int i;
>> +    int j;
>> +    int amd_index = 0;
>> +    int drm_count;
>> +    int fd;
>> +    char *device_name;
>> +    drmVersionPtr version;
>> +
>> +    drm_count = drmGetDevices2(0, devices, MAX_CARDS_SUPPORTED);
>> +
>> +    if (drm_count < 0) {
>> +        fprintf(stderr,
>> +            "drmGetDevices2() returned an error %d\n",
>> +            drm_count);
>> +        return 0;
>> +    }
>> +
>> +    for (i = 0; i < drm_count; i++) {
>> +        /* If this is not AMD GPU vender ID, skip*/
>> +        if (devices[i]->bustype == DRM_BUS_PCI)
>> +            if (devices[i]->deviceinfo.pci->vendor_id != 0x1002)
>> +                continue;

Additional to what David noted that check probably needs to be:

if (devices[i]->bustype != DRM_BUS_PCI ||
     devices[i]->deviceinfo.pci->vendor_id != 0x1002)
         continue;

Or do we sell GPUs connected to USB as well?

Apart from that looks good to me and it is really good that somebody 
finally looks into this cause trouble with that on my A+A laptop.

Regards,
Christian.

>> +
>> +        for (j = 0; j < DRM_NODE_MAX; j++) {
>> +            if (devices[i]->available_nodes & 1 << j) {
>> +                fd = open(
>> +                    devices[i]->nodes[j],
>> +                    O_RDONLY | O_CLOEXEC,
>> +                    0);
>> +                if (fd < 0) continue;
>> +            }
>> +
>> +            version = drmGetVersion(fd);
>> +            if (!version) {
>> +                fprintf(stderr,
>> +                    "Warning: Cannot get version for %s."
>> +                    "Error is %s\n",
>> +                    devices[i]->nodes[j],
>> +                    strerror(errno));
>> +                close(fd);
>> +                break;
>> +            }
>> +
>> +            if (strcmp(version->name, "amdgpu")) {
>> +                /* This is not AMDGPU driver, skip.*/
>> +                drmFreeVersion(version);
>> +                close(fd);
>> +                break;
>> +            }
>> +
>> +            drmFreeVersion(version);
>> +
>> +            if (open_render_node)
>> +                device_name = drmGetRenderDeviceNameFromFd(fd);
>> +            else
>> +                device_name = drmGetPrimaryDeviceNameFromFd(fd);
>> +
>> +            close(fd);
>> +
>> +            drm_amdgpu[amd_index] = open(device_name,
>> +                            O_RDWR | O_CLOEXEC);
>> +
>> +            if (drm_amdgpu[amd_index] >= 0)
>> +                amd_index++;
>> +
>> +            free(device_name);
>> +
>> +            /* We have open this device. Go to next device.*/
>> +            break;
>> +        }
>> +    }
>> +
>> +    drmFreeDevices(devices, drm_count);
> here needs return value;
>> +}
>> +
>> +/* Close AMD devices.
>> + */
>> +static void amdgpu_close_devices()
>> +{
>> +    int i;
>> +    for (i = 0; i < MAX_CARDS_SUPPORTED; i++)
>> +        if (drm_amdgpu[i] >=0)
>> +            close(drm_amdgpu[i]);
>> +}
>> +
>> +/* Print AMD devices information */
>> +static void amdgpu_print_devices()
>> +{
>> +    int i;
>> +    for (i = 0; i < MAX_CARDS_SUPPORTED; i++)
>> +        if (drm_amdgpu[i] >=0) {
>> +            /** Display version of DRM driver */
>> +            drmVersionPtr retval = drmGetVersion(drm_amdgpu[0]);
>> +
>> +            if (retval == NULL) {
>> +                perror("Cannot get version for AMDGPU device");
>> +                exit(EXIT_FAILURE);
>> +            }
>> +
>> +            printf("AMDGPU device #%d: "
>> +                "Name: [%s] : Date [%s] : Description [%s]\n",
>> +                i, retval->name, retval->date, retval->desc);
>> +            drmFreeVersion(retval);
>> +        }
>> +}
>> +
>>   /* The main() function for setting up and running the tests.
>>    * Returns a CUE_SUCCESS on successful running, another
>>    * CUnit error code on failure.
>> @@ -163,35 +276,20 @@ int main(int argc, char **argv)
>>           }
>>       }
>>   -    /* Try to open all possible radeon connections
>> -     * Right now: Open only the 0.
>> -     */
>> -    printf("Try to open the card 0..\n");
>> -    drm_amdgpu[0] = open("/dev/dri/card0", O_RDWR | O_CLOEXEC);
>> +    amdgpu_open_devices(0);
> we'd better to check this function return value.
>
> Regards,
> David Zhou
>>         if (drm_amdgpu[0] < 0) {
>> -        perror("Cannot open /dev/dri/card0\n");
>> -        exit(EXIT_FAILURE);
>> -    }
>> -
>> -    /** Display version of DRM driver */
>> -    drmVersionPtr retval = drmGetVersion(drm_amdgpu[0]);
>> -
>> -    if (retval == NULL) {
>> -        perror("Could not get information about DRM driver");
>> +        perror("Cannot open AMDGPU device.\n");
>>           exit(EXIT_FAILURE);
>>       }
>>   -    printf("DRM Driver: Name: [%s] : Date [%s] : Description [%s]\n",
>> -           retval->name, retval->date, retval->desc);
>> -
>> -    drmFreeVersion(retval);
>> +    amdgpu_print_devices();
>>         /* Initialize test suites to run */
>>         /* initialize the CUnit test registry */
>>       if (CUE_SUCCESS != CU_initialize_registry()) {
>> -        close(drm_amdgpu[0]);
>> +        amdgpu_close_devices();
>>           return CU_get_error();
>>       }
>>   @@ -200,7 +298,7 @@ int main(int argc, char **argv)
>>           fprintf(stderr, "suite registration failed - %s\n",
>>                   CU_get_error_msg());
>>           CU_cleanup_registry();
>> -        close(drm_amdgpu[0]);
>> +        amdgpu_close_devices();
>>           exit(EXIT_FAILURE);
>>       }
>>   @@ -222,7 +320,7 @@ int main(int argc, char **argv)
>>                       fprintf(stderr, "Invalid test id: %d\n",
>>                                   test_id);
>>                       CU_cleanup_registry();
>> -                    close(drm_amdgpu[0]);
>> +                    amdgpu_close_devices();
>>                       exit(EXIT_FAILURE);
>>                   }
>>               } else
>> @@ -231,13 +329,13 @@ int main(int argc, char **argv)
>>               fprintf(stderr, "Invalid suite id : %d\n",
>>                       suite_id);
>>               CU_cleanup_registry();
>> -            close(drm_amdgpu[0]);
>> +            amdgpu_close_devices();
>>               exit(EXIT_FAILURE);
>>           }
>>       } else
>>           CU_basic_run_tests();
>>         CU_cleanup_registry();
>> -    close(drm_amdgpu[0]);
>> +    amdgpu_close_devices();
>>       return CU_get_error();
>>   }
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH libdrm 1/3] amdgpu: verify the tested device
       [not found] ` <1484866391-17175-1-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>
                     ` (2 preceding siblings ...)
  2017-01-20  3:45   ` [PATCH libdrm 1/3] amdgpu: verify the tested device zhoucm1
@ 2017-01-20 13:18   ` Emil Velikov
       [not found]     ` <CACvgo50HCafUSw7zDjkS+_1xs67=QgHcOWcO1DDqzBL4RcRBJA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  3 siblings, 1 reply; 16+ messages in thread
From: Emil Velikov @ 2017-01-20 13:18 UTC (permalink / raw)
  To: Alex Xie; +Cc: amd-gfx mailing list

Hi Alex,

Thanks for doing this. There's a few nitpicks on top of what David and
Christian has spotted.

On 19 January 2017 at 22:53, Alex Xie <AlexBin.Xie@amd.com> wrote:
> Verify the vender ID and driver name.
> Open all AMDGPU devices.
> Provide an option to open render node.
>
> Tested as root: PASS
> Tested as non-privileged user:
> All tests failed as expected
>
> Signed-off-by: Alex Xie <AlexBin.Xie@amd.com>
> ---
>  tests/amdgpu/amdgpu_test.c | 144 +++++++++++++++++++++++++++++++++++++--------
>  1 file changed, 121 insertions(+), 23 deletions(-)
>
> diff --git a/tests/amdgpu/amdgpu_test.c b/tests/amdgpu/amdgpu_test.c
> index 71f357c..e42ef9d 100644
> --- a/tests/amdgpu/amdgpu_test.c
> +++ b/tests/amdgpu/amdgpu_test.c
> @@ -115,6 +115,119 @@ static const char usage[] = "Usage: %s [-hl] [<-s <suite id>> [-t <test id>]]\n"
>  /** Specified options strings for getopt */
>  static const char options[]   = "hls:t:";
>
> +/* Open AMD devices.
> + * Return the number of AMD device openned.
> + */
> +static int amdgpu_open_devices(int open_render_node)
> +{
> +       drmDevicePtr devices[MAX_CARDS_SUPPORTED];
> +       int ret;
> +       int i;
> +       int j;
> +       int amd_index = 0;
> +       int drm_count;
> +       int fd;
> +       char *device_name;
> +       drmVersionPtr version;
> +
> +       drm_count = drmGetDevices2(0, devices, MAX_CARDS_SUPPORTED);
> +
> +       if (drm_count < 0) {
> +               fprintf(stderr,
> +                       "drmGetDevices2() returned an error %d\n",
> +                       drm_count);
> +               return 0;
> +       }
> +
> +       for (i = 0; i < drm_count; i++) {
> +               /* If this is not AMD GPU vender ID, skip*/
> +               if (devices[i]->bustype == DRM_BUS_PCI)
> +                       if (devices[i]->deviceinfo.pci->vendor_id != 0x1002)
> +                               continue;
> +
> +               for (j = 0; j < DRM_NODE_MAX; j++) {
> +                       if (devices[i]->available_nodes & 1 << j) {
> +                               fd = open(
> +                                       devices[i]->nodes[j],
> +                                       O_RDONLY | O_CLOEXEC,
> +                                       0);
> +                               if (fd < 0) continue;
> +                       }
You don't need to iterate over all the available nodes. Just fetch the
PRIMARY or RENDER based on open_render_node.
Note that a device can be missing some node types (say RENDER) so make
sure the available_nodes bitmask is set.


> +                       if (open_render_node)
> +                               device_name = drmGetRenderDeviceNameFromFd(fd);
> +                       else
> +                               device_name = drmGetPrimaryDeviceNameFromFd(fd);
> +
> +                       close(fd);
> +
> +                       drm_amdgpu[amd_index] = open(device_name,
> +                                                       O_RDWR | O_CLOEXEC);
> +
> +                       if (drm_amdgpu[amd_index] >= 0)
> +                               amd_index++;
> +
> +                       free(device_name);
> +
With the above comment this becomes redundant.

> +                       /* We have open this device. Go to next device.*/
> +                       break;
> +               }
> +       }
> +
Here you want to initialise the remainder of drm_amdgpu[] (since
drm_count can be less than MAX_CARDS_SUPPORTED) with -1.
Otherwise you'll have fun experiences during close/print (below).

-Emil
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH libdrm 2/3] amdgpu: A new option to choose which device to run most tests
       [not found]     ` <1484866391-17175-2-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>
@ 2017-01-20 13:24       ` Emil Velikov
       [not found]         ` <CACvgo52ia8zBmvFm9P_zSv0fFntO1od71OawQ9e4GD64yj3DQw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 16+ messages in thread
From: Emil Velikov @ 2017-01-20 13:24 UTC (permalink / raw)
  To: Alex Xie; +Cc: amd-gfx mailing list

On 19 January 2017 at 22:53, Alex Xie <AlexBin.Xie@amd.com> wrote:
> This can be used to test multiple GPUs
>
> Signed-off-by: Alex Xie <AlexBin.Xie@amd.com>
> ---
>  tests/amdgpu/amdgpu_test.c | 25 ++++++++++++++++++++-----
>  1 file changed, 20 insertions(+), 5 deletions(-)
>
> diff --git a/tests/amdgpu/amdgpu_test.c b/tests/amdgpu/amdgpu_test.c
> index e42ef9d..2437db4 100644
> --- a/tests/amdgpu/amdgpu_test.c
> +++ b/tests/amdgpu/amdgpu_test.c
> @@ -108,12 +108,14 @@ static void display_test_suites(void)
>
>
>  /** Help string for command line parameters */
> -static const char usage[] = "Usage: %s [-hl] [<-s <suite id>> [-t <test id>]]\n"
> -                               "where:\n"
> -                               "       l - Display all suites and their tests\n"
> -                               "       h - Display this help\n";
> +static const char usage[] =
> +       "Usage: %s [-hl] [<-s <suite id>> [-t <test id>]] [-d <device_id>]\n"
> +       "where:\n"
> +       "       l - Display all suites and their tests\n"
> +       "       d - Choose which device to run tests\n"
You want to elaborate on what you mean with "device" here.
Even if currently "card0 is my Kabini, card1 Hawaii, card2 other" that
may change upon reboot.
So although very nice to say "0,1, 2..." things are non-deterministic.

-Emil
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH libdrm 3/3] amdgpu: A new option to run tests on render node
       [not found]     ` <1484866391-17175-3-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>
@ 2017-01-20 13:31       ` Emil Velikov
       [not found]         ` <CACvgo50NfvLd08LAf3xs6AzCBD3ir7PgFMaxRwiwRezB02iy2w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 16+ messages in thread
From: Emil Velikov @ 2017-01-20 13:31 UTC (permalink / raw)
  To: Alex Xie; +Cc: amd-gfx mailing list

HI Alex,

A couple of small idea(s) for future work (?).

On 19 January 2017 at 22:53, Alex Xie <AlexBin.Xie@amd.com> wrote:
> Tested:
> 1. As root, tests passed on primary.
Add auth mechanism and request run outside of X environment (switching
to TTY should work).
Then adjust the suggestion s/run as root/run in TTY/ ?

> 2. As root, BO export/import failed on render node as expected.
Afaict those can never succeed, so might as well change the test to
expect failure [when using the render node], or at least print a
message "the following failure is expected" ?

Thanks the series !
Emil
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH libdrm 1/3] amdgpu: verify the tested device
       [not found]     ` <CACvgo50HCafUSw7zDjkS+_1xs67=QgHcOWcO1DDqzBL4RcRBJA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2017-01-20 19:14       ` Xie, AlexBin
       [not found]         ` <CY4PR12MB1640D78EBE9F998A00F5323FF2710-rpdhrqHFk06q//3LJcutlgdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
  0 siblings, 1 reply; 16+ messages in thread
From: Xie, AlexBin @ 2017-01-20 19:14 UTC (permalink / raw)
  To: Emil Velikov; +Cc: amd-gfx mailing list


[-- Attachment #1.1: Type: text/plain, Size: 4514 bytes --]

Hi Emil,


Thanks for the comments.


Please see below.


Regards,

Alex Bin Xie


________________________________
From: Emil Velikov <emil.l.velikov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Sent: Friday, January 20, 2017 8:18 AM
To: Xie, AlexBin
Cc: amd-gfx mailing list
Subject: Re: [PATCH libdrm 1/3] amdgpu: verify the tested device

Hi Alex,

Thanks for doing this. There's a few nitpicks on top of what David and
Christian has spotted.

On 19 January 2017 at 22:53, Alex Xie <AlexBin.Xie-5C7GfCeVMHo@public.gmane.org> wrote:
> Verify the vender ID and driver name.
> Open all AMDGPU devices.
> Provide an option to open render node.
>
> Tested as root: PASS
> Tested as non-privileged user:
> All tests failed as expected
>
> Signed-off-by: Alex Xie <AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>
> ---
>  tests/amdgpu/amdgpu_test.c | 144 +++++++++++++++++++++++++++++++++++++--------
>  1 file changed, 121 insertions(+), 23 deletions(-)
>
> diff --git a/tests/amdgpu/amdgpu_test.c b/tests/amdgpu/amdgpu_test.c
> index 71f357c..e42ef9d 100644
> --- a/tests/amdgpu/amdgpu_test.c
> +++ b/tests/amdgpu/amdgpu_test.c
> @@ -115,6 +115,119 @@ static const char usage[] = "Usage: %s [-hl] [<-s <suite id>> [-t <test id>]]\n"
>  /** Specified options strings for getopt */
>  static const char options[]   = "hls:t:";
>
> +/* Open AMD devices.
> + * Return the number of AMD device openned.
> + */
> +static int amdgpu_open_devices(int open_render_node)
> +{
> +       drmDevicePtr devices[MAX_CARDS_SUPPORTED];
> +       int ret;
> +       int i;
> +       int j;
> +       int amd_index = 0;
> +       int drm_count;
> +       int fd;
> +       char *device_name;
> +       drmVersionPtr version;
> +
> +       drm_count = drmGetDevices2(0, devices, MAX_CARDS_SUPPORTED);
> +
> +       if (drm_count < 0) {
> +               fprintf(stderr,
> +                       "drmGetDevices2() returned an error %d\n",
> +                       drm_count);
> +               return 0;
> +       }
> +
> +       for (i = 0; i < drm_count; i++) {
> +               /* If this is not AMD GPU vender ID, skip*/
> +               if (devices[i]->bustype == DRM_BUS_PCI)
> +                       if (devices[i]->deviceinfo.pci->vendor_id != 0x1002)
> +                               continue;
> +
> +               for (j = 0; j < DRM_NODE_MAX; j++) {
> +                       if (devices[i]->available_nodes & 1 << j) {
> +                               fd = open(
> +                                       devices[i]->nodes[j],
> +                                       O_RDONLY | O_CLOEXEC,
> +                                       0);
> +                               if (fd < 0) continue;
> +                       }
You don't need to iterate over all the available nodes. Just fetch the
PRIMARY or RENDER based on open_render_node.
Note that a device can be missing some node types (say RENDER) so make
sure the available_nodes bitmask is set.

[Alex Bin Xie]:
That was my original design, but later I changed.
I knew this work for the current xf86drm.c. But is the nodes[0]  always primary?
I was afraid that this may be changed in future. I searched all drm tests. I did not see an example.

So amdgpu_test will be the first to access nodes like: open(devices[i]->nodes[DRM_NODE_PRIMARY]), for example.

> +                       if (open_render_node)
> +                               device_name = drmGetRenderDeviceNameFromFd(fd);
> +                       else
> +                               device_name = drmGetPrimaryDeviceNameFromFd(fd);
> +
> +                       close(fd);
> +
> +                       drm_amdgpu[amd_index] = open(device_name,
> +                                                       O_RDWR | O_CLOEXEC);
> +
> +                       if (drm_amdgpu[amd_index] >= 0)
> +                               amd_index++;
> +
> +                       free(device_name);
> +
With the above comment this becomes redundant.

> +                       /* We have open this device. Go to next device.*/
> +                       break;
> +               }
> +       }
> +
Here you want to initialise the remainder of drm_amdgpu[] (since
drm_count can be less than MAX_CARDS_SUPPORTED) with -1.
Otherwise you'll have fun experiences during close/print (below).

[Alex Bin Xie]: This initialization is done in existing main() function (not introduced this patch).

-Emil

[-- Attachment #1.2: Type: text/html, Size: 10811 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH libdrm 1/3] amdgpu: verify the tested device
       [not found]         ` <CY4PR12MB1640D78EBE9F998A00F5323FF2710-rpdhrqHFk06q//3LJcutlgdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
@ 2017-01-20 19:45           ` Emil Velikov
  0 siblings, 0 replies; 16+ messages in thread
From: Emil Velikov @ 2017-01-20 19:45 UTC (permalink / raw)
  To: Xie, AlexBin; +Cc: amd-gfx mailing list

On 20 January 2017 at 19:14, Xie, AlexBin <AlexBin.Xie@amd.com> wrote:
> Hi Emil,
>
>
> Thanks for the comments.
>
>
> Please see below.
>
>
> Regards,
>
> Alex Bin Xie
>
>
>
> ________________________________
> From: Emil Velikov <emil.l.velikov@gmail.com>
> Sent: Friday, January 20, 2017 8:18 AM
> To: Xie, AlexBin
> Cc: amd-gfx mailing list
> Subject: Re: [PATCH libdrm 1/3] amdgpu: verify the tested device
>
> Hi Alex,
>
> Thanks for doing this. There's a few nitpicks on top of what David and
> Christian has spotted.
>
> On 19 January 2017 at 22:53, Alex Xie <AlexBin.Xie@amd.com> wrote:
>> Verify the vender ID and driver name.
>> Open all AMDGPU devices.
>> Provide an option to open render node.
>>
>> Tested as root: PASS
>> Tested as non-privileged user:
>> All tests failed as expected
>>
>> Signed-off-by: Alex Xie <AlexBin.Xie@amd.com>
>> ---
>>  tests/amdgpu/amdgpu_test.c | 144
>> +++++++++++++++++++++++++++++++++++++--------
>>  1 file changed, 121 insertions(+), 23 deletions(-)
>>
>> diff --git a/tests/amdgpu/amdgpu_test.c b/tests/amdgpu/amdgpu_test.c
>> index 71f357c..e42ef9d 100644
>> --- a/tests/amdgpu/amdgpu_test.c
>> +++ b/tests/amdgpu/amdgpu_test.c
>> @@ -115,6 +115,119 @@ static const char usage[] = "Usage: %s [-hl] [<-s
>> <suite id>> [-t <test id>]]\n"
>>  /** Specified options strings for getopt */
>>  static const char options[]   = "hls:t:";
>>
>> +/* Open AMD devices.
>> + * Return the number of AMD device openned.
>> + */
>> +static int amdgpu_open_devices(int open_render_node)
>> +{
>> +       drmDevicePtr devices[MAX_CARDS_SUPPORTED];
>> +       int ret;
>> +       int i;
>> +       int j;
>> +       int amd_index = 0;
>> +       int drm_count;
>> +       int fd;
>> +       char *device_name;
>> +       drmVersionPtr version;
>> +
>> +       drm_count = drmGetDevices2(0, devices, MAX_CARDS_SUPPORTED);
>> +
>> +       if (drm_count < 0) {
>> +               fprintf(stderr,
>> +                       "drmGetDevices2() returned an error %d\n",
>> +                       drm_count);
>> +               return 0;
>> +       }
>> +
>> +       for (i = 0; i < drm_count; i++) {
>> +               /* If this is not AMD GPU vender ID, skip*/
>> +               if (devices[i]->bustype == DRM_BUS_PCI)
>> +                       if (devices[i]->deviceinfo.pci->vendor_id !=
>> 0x1002)
>> +                               continue;
>> +
>> +               for (j = 0; j < DRM_NODE_MAX; j++) {
>> +                       if (devices[i]->available_nodes & 1 << j) {
>> +                               fd = open(
>> +                                       devices[i]->nodes[j],
>> +                                       O_RDONLY | O_CLOEXEC,
>> +                                       0);
>> +                               if (fd < 0) continue;
>> +                       }
> You don't need to iterate over all the available nodes. Just fetch the
> PRIMARY or RENDER based on open_render_node.
> Note that a device can be missing some node types (say RENDER) so make
> sure the available_nodes bitmask is set.
>
> [Alex Bin Xie]:
> That was my original design, but later I changed.
> I knew this work for the current xf86drm.c. But is the nodes[0]  always
> primary?
> I was afraid that this may be changed in future. I searched all drm tests. I
> did not see an example.
>
> So amdgpu_test will be the first to access nodes like:
> open(devices[i]->nodes[DRM_NODE_PRIMARY]), for example.
>
Please avoid nodes[0] and use the symbolic name - nodes[DRM_NODE_PRIMARY].
Comment applies for any DRM_NODE_*.

>> +                       if (open_render_node)
>> +                               device_name =
>> drmGetRenderDeviceNameFromFd(fd);
>> +                       else
>> +                               device_name =
>> drmGetPrimaryDeviceNameFromFd(fd);
>> +
>> +                       close(fd);
>> +
>> +                       drm_amdgpu[amd_index] = open(device_name,
>> +                                                       O_RDWR |
>> O_CLOEXEC);
>> +
>> +                       if (drm_amdgpu[amd_index] >= 0)
>> +                               amd_index++;
>> +
>> +                       free(device_name);
>> +
> With the above comment this becomes redundant.
>
>> +                       /* We have open this device. Go to next device.*/
>> +                       break;
>> +               }
>> +       }
>> +
> Here you want to initialise the remainder of drm_amdgpu[] (since
> drm_count can be less than MAX_CARDS_SUPPORTED) with -1.
> Otherwise you'll have fun experiences during close/print (below).
>
> [Alex Bin Xie]: This initialization is done in existing main() function (not
> introduced this patch).
>
Indeed that's correct. It looks a bit strange to have it separate, but
not my call.

Unrelated:
Fwiw please can drop the legacy drmAvailable() from the test, if you
have a minute.

Thanks !
Emil
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH libdrm 2/3] amdgpu: A new option to choose which device to run most tests
       [not found]         ` <CACvgo52ia8zBmvFm9P_zSv0fFntO1od71OawQ9e4GD64yj3DQw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2017-01-20 22:08           ` Xie, AlexBin
       [not found]             ` <CY4PR12MB1640A585145DD409BEB07511F2710-rpdhrqHFk06q//3LJcutlgdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
  0 siblings, 1 reply; 16+ messages in thread
From: Xie, AlexBin @ 2017-01-20 22:08 UTC (permalink / raw)
  To: Emil Velikov; +Cc: amd-gfx mailing list


[-- Attachment #1.1: Type: text/plain, Size: 2454 bytes --]

HI Emil,


See below.


Thanks,

Alex


________________________________
From: Emil Velikov <emil.l.velikov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Sent: Friday, January 20, 2017 8:24 AM
To: Xie, AlexBin
Cc: amd-gfx mailing list
Subject: Re: [PATCH libdrm 2/3] amdgpu: A new option to choose which device to run most tests

On 19 January 2017 at 22:53, Alex Xie <AlexBin.Xie-5C7GfCeVMHo@public.gmane.org> wrote:
> This can be used to test multiple GPUs
>
> Signed-off-by: Alex Xie <AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>
> ---
>  tests/amdgpu/amdgpu_test.c | 25 ++++++++++++++++++++-----
>  1 file changed, 20 insertions(+), 5 deletions(-)
>
> diff --git a/tests/amdgpu/amdgpu_test.c b/tests/amdgpu/amdgpu_test.c
> index e42ef9d..2437db4 100644
> --- a/tests/amdgpu/amdgpu_test.c
> +++ b/tests/amdgpu/amdgpu_test.c
> @@ -108,12 +108,14 @@ static void display_test_suites(void)
>
>
>  /** Help string for command line parameters */
> -static const char usage[] = "Usage: %s [-hl] [<-s <suite id>> [-t <test id>]]\n"
> -                               "where:\n"
> -                               "       l - Display all suites and their tests\n"
> -                               "       h - Display this help\n";
> +static const char usage[] =
> +       "Usage: %s [-hl] [<-s <suite id>> [-t <test id>]] [-d <device_id>]\n"
> +       "where:\n"
> +       "       l - Display all suites and their tests\n"
> +       "       d - Choose which device to run tests\n"
You want to elaborate on what you mean with "device" here.
Even if currently "card0 is my Kabini, card1 Hawaii, card2 other" that
may change upon reboot.
So although very nice to say "0,1, 2..." things are non-deterministic.

[Alex Bin Xie] Originally I just want to give a simple solution for people to swap to test another GPU device.
Every time amdgpu_test runs, it lists the device id and its information. I was thinking to improve this but such as adding an option to list the devices. So that the 0, 1 ,2 does not change if computer is not reboot. If 0, 1, 2 is not deterministic, I have to give up this human friendly interface...

How about choose the test device by bus ID?  I will add an option to list the devices with BUS ID (if people run drmdevice program, they know the information too). Then people can choose  device on which BUS ID to run the test. I will provide a new patch if there is no object to this.


-Emil

[-- Attachment #1.2: Type: text/html, Size: 4481 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH libdrm 2/3] amdgpu: A new option to choose which device to run most tests
       [not found]             ` <CY4PR12MB1640A585145DD409BEB07511F2710-rpdhrqHFk06q//3LJcutlgdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
@ 2017-01-22 18:52               ` Emil Velikov
  0 siblings, 0 replies; 16+ messages in thread
From: Emil Velikov @ 2017-01-22 18:52 UTC (permalink / raw)
  To: Xie, AlexBin; +Cc: amd-gfx mailing list

On 20 January 2017 at 22:08, Xie, AlexBin <AlexBin.Xie@amd.com> wrote:
> HI Emil,
>
>
> See below.
>
>
> Thanks,
>
> Alex
>
>
>
> ________________________________
> From: Emil Velikov <emil.l.velikov@gmail.com>
> Sent: Friday, January 20, 2017 8:24 AM
> To: Xie, AlexBin
> Cc: amd-gfx mailing list
> Subject: Re: [PATCH libdrm 2/3] amdgpu: A new option to choose which device
> to run most tests
>
> On 19 January 2017 at 22:53, Alex Xie <AlexBin.Xie@amd.com> wrote:
>> This can be used to test multiple GPUs
>>
>> Signed-off-by: Alex Xie <AlexBin.Xie@amd.com>
>> ---
>>  tests/amdgpu/amdgpu_test.c | 25 ++++++++++++++++++++-----
>>  1 file changed, 20 insertions(+), 5 deletions(-)
>>
>> diff --git a/tests/amdgpu/amdgpu_test.c b/tests/amdgpu/amdgpu_test.c
>> index e42ef9d..2437db4 100644
>> --- a/tests/amdgpu/amdgpu_test.c
>> +++ b/tests/amdgpu/amdgpu_test.c
>> @@ -108,12 +108,14 @@ static void display_test_suites(void)
>>
>>
>>  /** Help string for command line parameters */
>> -static const char usage[] = "Usage: %s [-hl] [<-s <suite id>> [-t <test
>> id>]]\n"
>> -                               "where:\n"
>> -                               "       l - Display all suites and their
>> tests\n"
>> -                               "       h - Display this help\n";
>> +static const char usage[] =
>> +       "Usage: %s [-hl] [<-s <suite id>> [-t <test id>]] [-d
>> <device_id>]\n"
>> +       "where:\n"
>> +       "       l - Display all suites and their tests\n"
>> +       "       d - Choose which device to run tests\n"
> You want to elaborate on what you mean with "device" here.
> Even if currently "card0 is my Kabini, card1 Hawaii, card2 other" that
> may change upon reboot.
> So although very nice to say "0,1, 2..." things are non-deterministic.
>
> [Alex Bin Xie] Originally I just want to give a simple solution for people
> to swap to test another GPU device.
> Every time amdgpu_test runs, it lists the device id and its information. I
> was thinking to improve this but such as adding an option to list the
> devices. So that the 0, 1 ,2 does not change if computer is not reboot. If
> 0, 1, 2 is not deterministic, I have to give up this human friendly
> interface...
>
> How about choose the test device by bus ID?  I will add an option to list
> the devices with BUS ID (if people run drmdevice program, they know the
> information too). Then people can choose  device on which BUS ID to run the
> test. I will provide a new patch if there is no object to this.
>
Using BUS ID will a lot better and more robust.

Thanks again for sorting these out !
Emil
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 16+ messages in thread

* RE: [PATCH libdrm 3/3] amdgpu: A new option to run tests on render node
       [not found]         ` <CACvgo50NfvLd08LAf3xs6AzCBD3ir7PgFMaxRwiwRezB02iy2w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2017-01-24 22:39           ` Xie, AlexBin
       [not found]             ` <CY4PR12MB164084A3028286BAA685F682F2750-rpdhrqHFk06q//3LJcutlgdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
  0 siblings, 1 reply; 16+ messages in thread
From: Xie, AlexBin @ 2017-01-24 22:39 UTC (permalink / raw)
  To: Emil Velikov; +Cc: amd-gfx mailing list

Hi Emil,

Point 1 will be left for future patch.

Current error message is following.
Error: Permission denied. Hint:Try to run this test program as root.

I am thinking change it. Error message will be:
Error: Permission denied. Hint:Try to run this test program as root or in TTY.

Thanks,
Alex Bin Xie

-----Original Message-----
From: Emil Velikov [mailto:emil.l.velikov@gmail.com] 
Sent: Friday, January 20, 2017 8:31 AM
To: Xie, AlexBin <AlexBin.Xie@amd.com>
Cc: amd-gfx mailing list <amd-gfx@lists.freedesktop.org>
Subject: Re: [PATCH libdrm 3/3] amdgpu: A new option to run tests on render node

HI Alex,

A couple of small idea(s) for future work (?).

On 19 January 2017 at 22:53, Alex Xie <AlexBin.Xie@amd.com> wrote:
> Tested:
> 1. As root, tests passed on primary.
Add auth mechanism and request run outside of X environment (switching
to TTY should work).
Then adjust the suggestion s/run as root/run in TTY/ ?

> 2. As root, BO export/import failed on render node as expected.
Afaict those can never succeed, so might as well change the test to
expect failure [when using the render node], or at least print a
message "the following failure is expected" ?

Thanks the series !
Emil
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH libdrm 3/3] amdgpu: A new option to run tests on render node
       [not found]             ` <CY4PR12MB164084A3028286BAA685F682F2750-rpdhrqHFk06q//3LJcutlgdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
@ 2017-01-26 23:59               ` Emil Velikov
  0 siblings, 0 replies; 16+ messages in thread
From: Emil Velikov @ 2017-01-26 23:59 UTC (permalink / raw)
  To: Xie, AlexBin; +Cc: amd-gfx mailing list

On 24 January 2017 at 22:39, Xie, AlexBin <AlexBin.Xie@amd.com> wrote:
> Hi Emil,
>
> Point 1 will be left for future patch.
>
Definitely. I did not mean to ask/push you to address that here.

> Current error message is following.
> Error: Permission denied. Hint:Try to run this test program as root.
>
> I am thinking change it. Error message will be:
> Error: Permission denied. Hint:Try to run this test program as root or in TTY.
>
I'm still leaning that in 2017 asking people to run anything as root
is bad idea. Anyway it's just be being pedantic.

-Emil
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH libdrm 1/3] amdgpu: verify the tested device
       [not found] ` <1485296992-2719-1-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>
@ 2017-01-27  0:08   ` Emil Velikov
  0 siblings, 0 replies; 16+ messages in thread
From: Emil Velikov @ 2017-01-27  0:08 UTC (permalink / raw)
  To: Alex Xie; +Cc: amd-gfx mailing list

Hi Alex,

Things look a lot better imho. There's some ideas below, for the
future if you/others see value in them. Please do not worry about
those now.

On 24 January 2017 at 22:29, Alex Xie <AlexBin.Xie@amd.com> wrote:
> Verify the vender ID and driver name.
> Open all AMDGPU devices.
> Provide an option to open render node.
>
> Tested as root: PASS
> Tested as non-privileged user:
> All tests failed as expected
>
> v2: Return value in the ene of function amdgpu_open_devices.
>     Check the return value of amdgpu_open_devices.
>     amdgpu_test is not for USB device for the time being.
>     Get the name of node from function drmGetDevices2.
>     Drop the legacy drmAvailable() from the test.
>
> Signed-off-by: Alex Xie <AlexBin.Xie@amd.com>
> ---
>  tests/amdgpu/amdgpu_test.c | 145 +++++++++++++++++++++++++++++++++++----------
>  1 file changed, 115 insertions(+), 30 deletions(-)
>
> diff --git a/tests/amdgpu/amdgpu_test.c b/tests/amdgpu/amdgpu_test.c
> index 71f357c..d2b00d4 100644
> --- a/tests/amdgpu/amdgpu_test.c
> +++ b/tests/amdgpu/amdgpu_test.c
> @@ -115,6 +115,111 @@ static const char usage[] = "Usage: %s [-hl] [<-s <suite id>> [-t <test id>]]\n"
>  /** Specified options strings for getopt */
>  static const char options[]   = "hls:t:";
>
> +/* Open AMD devices.
> + * Return the number of AMD device openned.
> + */
> +static int amdgpu_open_devices(int open_render_node)
> +{
> +       drmDevicePtr devices[MAX_CARDS_SUPPORTED];
> +       int ret;
> +       int i;
> +       int drm_node;
> +       int amd_index = 0;
> +       int drm_count;
> +       int fd;
> +       drmVersionPtr version;
> +
> +       drm_count = drmGetDevices2(0, devices, MAX_CARDS_SUPPORTED);
> +

> +       for (i = 0; i < drm_count; i++) {
> +               /* If this is not PCI device, skip*/
> +               if (devices[i]->bustype != DRM_BUS_PCI)
> +                       continue;
> +
> +               /* If this is not AMD GPU vender ID, skip*/
> +               if (devices[i]->deviceinfo.pci->vendor_id != 0x1002)
> +                       continue;
> +
Once the filtering is done, it may be that only 2 of the
MAX_CARDS_SUPPORTED acquired fit the criteria.
One could fetch arbitrary large (all?) devices and then cap if/as needed.


> +
> +               /* This node is not available. */
> +               if (fd < 0) continue;
Normally continue should be on the next line.


> +/* Print AMD devices information */
> +static void amdgpu_print_devices()
> +{
> +       int i;
> +       for (i = 0; i < MAX_CARDS_SUPPORTED; i++)
> +               if (drm_amdgpu[i] >=0) {
> +                       /** Display version of DRM driver */
> +                       drmVersionPtr retval = drmGetVersion(drm_amdgpu[0]);
Since we've done this above one might as well store it and cleanups at
amdgpu_close_devices() time.
It comes more applicable as you use drmGetDevice2 to get the device
info with later patch(es). Might as well store all the info that we
fetch during amdgpu_open_devices() ?

Thanks
Emil
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH libdrm 1/3] amdgpu: verify the tested device
@ 2017-01-24 22:29 Alex Xie
       [not found] ` <1485296992-2719-1-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 16+ messages in thread
From: Alex Xie @ 2017-01-24 22:29 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Alex Xie

Verify the vender ID and driver name.
Open all AMDGPU devices.
Provide an option to open render node.

Tested as root: PASS
Tested as non-privileged user:
All tests failed as expected

v2: Return value in the ene of function amdgpu_open_devices.
    Check the return value of amdgpu_open_devices.
    amdgpu_test is not for USB device for the time being.
    Get the name of node from function drmGetDevices2.
    Drop the legacy drmAvailable() from the test.

Signed-off-by: Alex Xie <AlexBin.Xie@amd.com>
---
 tests/amdgpu/amdgpu_test.c | 145 +++++++++++++++++++++++++++++++++++----------
 1 file changed, 115 insertions(+), 30 deletions(-)

diff --git a/tests/amdgpu/amdgpu_test.c b/tests/amdgpu/amdgpu_test.c
index 71f357c..d2b00d4 100644
--- a/tests/amdgpu/amdgpu_test.c
+++ b/tests/amdgpu/amdgpu_test.c
@@ -115,6 +115,111 @@ static const char usage[] = "Usage: %s [-hl] [<-s <suite id>> [-t <test id>]]\n"
 /** Specified options strings for getopt */
 static const char options[]   = "hls:t:";
 
+/* Open AMD devices.
+ * Return the number of AMD device openned.
+ */
+static int amdgpu_open_devices(int open_render_node)
+{
+	drmDevicePtr devices[MAX_CARDS_SUPPORTED];
+	int ret;
+	int i;
+	int drm_node;
+	int amd_index = 0;
+	int drm_count;
+	int fd;
+	drmVersionPtr version;
+
+	drm_count = drmGetDevices2(0, devices, MAX_CARDS_SUPPORTED);
+
+	if (drm_count < 0) {
+		fprintf(stderr,
+			"drmGetDevices2() returned an error %d\n",
+			drm_count);
+		return 0;
+	}
+
+	for (i = 0; i < drm_count; i++) {
+		/* If this is not PCI device, skip*/
+		if (devices[i]->bustype != DRM_BUS_PCI)
+			continue;
+
+		/* If this is not AMD GPU vender ID, skip*/
+		if (devices[i]->deviceinfo.pci->vendor_id != 0x1002)
+			continue;
+
+		if (open_render_node)
+			drm_node = DRM_NODE_RENDER;
+		else
+			drm_node = DRM_NODE_PRIMARY;
+
+		fd = -1;
+		if (devices[i]->available_nodes & 1 << drm_node)
+			fd = open(
+				devices[i]->nodes[drm_node],
+				O_RDWR | O_CLOEXEC);
+
+		/* This node is not available. */
+		if (fd < 0) continue;
+
+		version = drmGetVersion(fd);
+		if (!version) {
+			fprintf(stderr,
+				"Warning: Cannot get version for %s."
+				"Error is %s\n",
+				devices[i]->nodes[drm_node],
+				strerror(errno));
+			close(fd);
+			continue;
+		}
+
+		if (strcmp(version->name, "amdgpu")) {
+			/* This is not AMDGPU driver, skip.*/
+			drmFreeVersion(version);
+			close(fd);
+			continue;
+		}
+
+		drmFreeVersion(version);
+
+		drm_amdgpu[amd_index] = fd;
+		amd_index++;
+	}
+
+	drmFreeDevices(devices, drm_count);
+	return amd_index;
+}
+
+/* Close AMD devices.
+ */
+static void amdgpu_close_devices()
+{
+	int i;
+	for (i = 0; i < MAX_CARDS_SUPPORTED; i++)
+		if (drm_amdgpu[i] >=0)
+			close(drm_amdgpu[i]);
+}
+
+/* Print AMD devices information */
+static void amdgpu_print_devices()
+{
+	int i;
+	for (i = 0; i < MAX_CARDS_SUPPORTED; i++)
+		if (drm_amdgpu[i] >=0) {
+			/** Display version of DRM driver */
+			drmVersionPtr retval = drmGetVersion(drm_amdgpu[0]);
+
+			if (retval == NULL) {
+				perror("Cannot get version for AMDGPU device");
+				exit(EXIT_FAILURE);
+			}
+
+			printf("AMDGPU device #%d: "
+				"Name: [%s] : Date [%s] : Description [%s]\n",
+				i, retval->name, retval->date, retval->desc);
+			drmFreeVersion(retval);
+		}
+}
+
 /* The main() function for setting up and running the tests.
  * Returns a CUE_SUCCESS on successful running, another
  * CUnit error code on failure.
@@ -128,14 +233,6 @@ int main(int argc, char **argv)
 	CU_pSuite pSuite = NULL;
 	CU_pTest  pTest  = NULL;
 
-	int aval = drmAvailable();
-
-	if (aval == 0) {
-		fprintf(stderr, "DRM driver is not available\n");
-		exit(EXIT_FAILURE);
-	}
-
-
 	for (i = 0; i < MAX_CARDS_SUPPORTED; i++)
 		drm_amdgpu[i] = -1;
 
@@ -163,35 +260,23 @@ int main(int argc, char **argv)
 		}
 	}
 
-	/* Try to open all possible radeon connections
-	 * Right now: Open only the 0.
-	 */
-	printf("Try to open the card 0..\n");
-	drm_amdgpu[0] = open("/dev/dri/card0", O_RDWR | O_CLOEXEC);
-
-	if (drm_amdgpu[0] < 0) {
-		perror("Cannot open /dev/dri/card0\n");
+	if (amdgpu_open_devices(0) <= 0) {
+		perror("Cannot open AMDGPU device");
 		exit(EXIT_FAILURE);
 	}
 
-	/** Display version of DRM driver */
-	drmVersionPtr retval = drmGetVersion(drm_amdgpu[0]);
-
-	if (retval == NULL) {
-		perror("Could not get information about DRM driver");
+	if (drm_amdgpu[0] < 0) {
+		perror("Cannot open AMDGPU device");
 		exit(EXIT_FAILURE);
 	}
 
-	printf("DRM Driver: Name: [%s] : Date [%s] : Description [%s]\n",
-	       retval->name, retval->date, retval->desc);
-
-	drmFreeVersion(retval);
+	amdgpu_print_devices();
 
 	/* Initialize test suites to run */
 
 	/* initialize the CUnit test registry */
 	if (CUE_SUCCESS != CU_initialize_registry()) {
-		close(drm_amdgpu[0]);
+		amdgpu_close_devices();
 		return CU_get_error();
 	}
 
@@ -200,7 +285,7 @@ int main(int argc, char **argv)
 		fprintf(stderr, "suite registration failed - %s\n",
 				CU_get_error_msg());
 		CU_cleanup_registry();
-		close(drm_amdgpu[0]);
+		amdgpu_close_devices();
 		exit(EXIT_FAILURE);
 	}
 
@@ -222,7 +307,7 @@ int main(int argc, char **argv)
 					fprintf(stderr, "Invalid test id: %d\n",
 								test_id);
 					CU_cleanup_registry();
-					close(drm_amdgpu[0]);
+					amdgpu_close_devices();
 					exit(EXIT_FAILURE);
 				}
 			} else
@@ -231,13 +316,13 @@ int main(int argc, char **argv)
 			fprintf(stderr, "Invalid suite id : %d\n",
 					suite_id);
 			CU_cleanup_registry();
-			close(drm_amdgpu[0]);
+			amdgpu_close_devices();
 			exit(EXIT_FAILURE);
 		}
 	} else
 		CU_basic_run_tests();
 
 	CU_cleanup_registry();
-	close(drm_amdgpu[0]);
+	amdgpu_close_devices();
 	return CU_get_error();
 }
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2017-01-27  0:08 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-19 22:53 [PATCH libdrm 1/3] amdgpu: verify the tested device Alex Xie
     [not found] ` <1484866391-17175-1-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>
2017-01-19 22:53   ` [PATCH libdrm 2/3] amdgpu: A new option to choose which device to run most tests Alex Xie
     [not found]     ` <1484866391-17175-2-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>
2017-01-20 13:24       ` Emil Velikov
     [not found]         ` <CACvgo52ia8zBmvFm9P_zSv0fFntO1od71OawQ9e4GD64yj3DQw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-01-20 22:08           ` Xie, AlexBin
     [not found]             ` <CY4PR12MB1640A585145DD409BEB07511F2710-rpdhrqHFk06q//3LJcutlgdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-01-22 18:52               ` Emil Velikov
2017-01-19 22:53   ` [PATCH libdrm 3/3] amdgpu: A new option to run tests on render node Alex Xie
     [not found]     ` <1484866391-17175-3-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>
2017-01-20 13:31       ` Emil Velikov
     [not found]         ` <CACvgo50NfvLd08LAf3xs6AzCBD3ir7PgFMaxRwiwRezB02iy2w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-01-24 22:39           ` Xie, AlexBin
     [not found]             ` <CY4PR12MB164084A3028286BAA685F682F2750-rpdhrqHFk06q//3LJcutlgdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-01-26 23:59               ` Emil Velikov
2017-01-20  3:45   ` [PATCH libdrm 1/3] amdgpu: verify the tested device zhoucm1
     [not found]     ` <588187BC.9070806-5C7GfCeVMHo@public.gmane.org>
2017-01-20  8:40       ` Christian König
2017-01-20 13:18   ` Emil Velikov
     [not found]     ` <CACvgo50HCafUSw7zDjkS+_1xs67=QgHcOWcO1DDqzBL4RcRBJA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-01-20 19:14       ` Xie, AlexBin
     [not found]         ` <CY4PR12MB1640D78EBE9F998A00F5323FF2710-rpdhrqHFk06q//3LJcutlgdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-01-20 19:45           ` Emil Velikov
2017-01-24 22:29 Alex Xie
     [not found] ` <1485296992-2719-1-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>
2017-01-27  0:08   ` Emil Velikov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.