* [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
[parent not found: <1484866391-17175-1-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>]
* [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
[parent not found: <1484866391-17175-2-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>]
* 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
[parent not found: <CACvgo52ia8zBmvFm9P_zSv0fFntO1od71OawQ9e4GD64yj3DQw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* 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
[parent not found: <CY4PR12MB1640A585145DD409BEB07511F2710-rpdhrqHFk06q//3LJcutlgdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>]
* 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
* [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
[parent not found: <1484866391-17175-3-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>]
* 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
[parent not found: <CACvgo50NfvLd08LAf3xs6AzCBD3ir7PgFMaxRwiwRezB02iy2w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* 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
[parent not found: <CY4PR12MB164084A3028286BAA685F682F2750-rpdhrqHFk06q//3LJcutlgdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>]
* 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] ` <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
[parent not found: <588187BC.9070806-5C7GfCeVMHo@public.gmane.org>]
* 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
[parent not found: <CACvgo50HCafUSw7zDjkS+_1xs67=QgHcOWcO1DDqzBL4RcRBJA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* 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
[parent not found: <CY4PR12MB1640D78EBE9F998A00F5323FF2710-rpdhrqHFk06q//3LJcutlgdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>]
* 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
* [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
[parent not found: <1485296992-2719-1-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>]
* [PATCH libdrm 3/3] amdgpu: A new option to run tests on render node [not found] ` <1485296992-2719-1-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org> @ 2017-01-24 22:29 ` Alex Xie [not found] ` <1485296992-2719-3-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 Tested: 1. As root, tests passed on primary. 2. As root, tests passed on render node. BO export/import test was skipped 3. As non-privileged user, tests failed on primary as expected. 4. As non-privileged user, tests passed on render node. BO export/import test was skipped Signed-off-by: Alex Xie <AlexBin.Xie@amd.com> --- tests/amdgpu/amdgpu_test.c | 13 ++++++++++--- tests/amdgpu/amdgpu_test.h | 3 +++ tests/amdgpu/bo_tests.c | 5 +++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/tests/amdgpu/amdgpu_test.c b/tests/amdgpu/amdgpu_test.c index c01ee54..3fd6820 100644 --- a/tests/amdgpu/amdgpu_test.c +++ b/tests/amdgpu/amdgpu_test.c @@ -56,6 +56,9 @@ */ int drm_amdgpu[MAX_CARDS_SUPPORTED]; +/** Open render node to test */ +int open_render_node = 0; /* By default run most tests on primary node */ + /** The table of all known test suites to run */ static CU_SuiteInfo suites[] = { { @@ -109,16 +112,17 @@ static void display_test_suites(void) /** Help string for command line parameters */ static const char usage[] = - "Usage: %s [-hlp] [<-s <suite id>> [-t <test id>]] " + "Usage: %s [-hlpr] [<-s <suite id>> [-t <test id>]] " "[-b <pci_bus_id> [-d <pci_device_id>]]\n" "where:\n" " l - Display all suites and their tests\n" + " r - Run the tests on render node\n" " b - Specify device's PCI bus id to run tests\n" " d - Specify device's PCI device id to run tests (optional)\n" " p - Display information of AMDGPU devices in system\n" " h - Display this help\n"; /** Specified options strings for getopt */ -static const char options[] = "hlps:t:b:d:"; +static const char options[] = "hlrps:t:b:d:"; /* Open AMD devices. * Return the number of AMD device openned. @@ -326,6 +330,9 @@ int main(int argc, char **argv) case 'p': display_devices = 1; break; + case 'r': + open_render_node = 1; + break; case '?': case 'h': fprintf(stderr, usage, argv[0]); @@ -336,7 +343,7 @@ int main(int argc, char **argv) } } - if (amdgpu_open_devices(0) <= 0) { + if (amdgpu_open_devices(open_render_node) <= 0) { perror("Cannot open AMDGPU device"); exit(EXIT_FAILURE); } diff --git a/tests/amdgpu/amdgpu_test.h b/tests/amdgpu/amdgpu_test.h index fca92ad..e30e231 100644 --- a/tests/amdgpu/amdgpu_test.h +++ b/tests/amdgpu/amdgpu_test.h @@ -35,6 +35,9 @@ /* Forward reference for array to keep "drm" handles */ extern int drm_amdgpu[MAX_CARDS_SUPPORTED]; +/* Global variables */ +extern int open_render_node; + /************************* Basic test suite ********************************/ /* diff --git a/tests/amdgpu/bo_tests.c b/tests/amdgpu/bo_tests.c index 25df767..74b5e77 100644 --- a/tests/amdgpu/bo_tests.c +++ b/tests/amdgpu/bo_tests.c @@ -152,6 +152,11 @@ static void amdgpu_bo_export_import_do_type(enum amdgpu_bo_handle_type type) static void amdgpu_bo_export_import(void) { + if (open_render_node) { + printf("(DRM render node is used. Skip export/Import test) "); + return; + } + amdgpu_bo_export_import_do_type(amdgpu_bo_handle_type_gem_flink_name); amdgpu_bo_export_import_do_type(amdgpu_bo_handle_type_dma_buf_fd); } -- 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
[parent not found: <1485296992-2719-3-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org>]
* Re: [PATCH libdrm 3/3] amdgpu: A new option to run tests on render node [not found] ` <1485296992-2719-3-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org> @ 2017-01-27 0:11 ` Emil Velikov 0 siblings, 0 replies; 16+ messages in thread From: Emil Velikov @ 2017-01-27 0:11 UTC (permalink / raw) To: Alex Xie; +Cc: amd-gfx mailing list On 24 January 2017 at 22:29, Alex Xie <AlexBin.Xie@amd.com> wrote: > Tested: > 1. As root, tests passed on primary. > 2. As root, tests passed on render node. > BO export/import test was skipped > 3. As non-privileged user, tests failed on primary as expected. > 4. As non-privileged user, tests passed on render node. > BO export/import test was skipped > > Signed-off-by: Alex Xie <AlexBin.Xie@amd.com> I haven't done too in-depth review by the series looks a lot better. Thanks again for addressing my suggestions ! Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> -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
end of thread, other threads:[~2017-01-27 0:11 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-24 22:29 ` [PATCH libdrm 3/3] amdgpu: A new option to run tests on render node Alex Xie [not found] ` <1485296992-2719-3-git-send-email-AlexBin.Xie-5C7GfCeVMHo@public.gmane.org> 2017-01-27 0:11 ` 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.