Re: [Intel-gfx] [PATCH] [I-G-T]Add rc6_residency_counter subtest
On Thu, Jun 05, 2014 at 10:27:42AM +0800, Wendy Wang wrote: Move rc6_residency_check to subtest, add new rc6_residency_counter subtest for pm_rc6_residency IGT case. I don't really understand what you're trying to do here really. Please explain better in the commit message not just what the patch does, but _why_ we need this new subtest. Also the conversion to tests with subtests has a few issues: - Everything outside of subtests that touches hw state must be wrapped in igt_fixture. - You didn't move the test to the multi-test target in Makefile.sources. - It looks like the 2nd subtest depends upon the first, they must be independent. - Your new tests uses igt_assert where it probably should use igt_skip or something similar. Please test that the subtest enumeration works correctly: - With parameter --list all subtest should be enumareated, but nothing else. This _must_ work as non-root on non-intel machines. - Subtests must work individually, you can run them with --run-subtest name Cheers, Daniel Test results run on platforms show as below: On HSW --- [root@x-hswu opt]# ./pm_rc6_residency IGT-Version: 1.6-g35b31df (x86_64) (Linux: 3.15.0-rc3_drm-intel-nightly_0791a3_20140520+ x86_64) Subtest rc6-residency-check: SUCCESS This machine doesn't support rc6pp This machine doesn't support rc6p This machine entry rc6 status. The residency counter : 0.999667 Subtest rc6-residency-counter: SUCCESS On IVB [root@IVB tests]# ./pm_rc6_residency IGT-Version: 1.6-g35b31df (x86_64) (Linux: 3.13.6_20140318+ x86_64) Subtest rc6-residency-check: SUCCESS This machine entry rc6p status. The residency counter : 0.997000 Subtest rc6-residency-counter: SUCCESS On BYT root@x-byt:/opt# ./pm_rc6_residency IGT-Version: 1.6-g0d39021 (x86_64) (Linux: 3.14.0_kcloud_ceabbb_20140521+ x86_64) Subtest rc6-residency-check: SUCCESS This machine doesn't support rc6pp This machine doesn't support rc6p The residency counter : 1.144333 Test assertion failure function rc6_residency_counter, file pm_rc6_residency.c:131: Last errno: 0, Success Failed assertion: counter_result =1 Debug files must be wrong, Subtest rc6-residency-counter: FAIL On BDW --- [root@x-bdw01 opt]# ./pm_rc6_residency IGT-Version: 1.6-g0d39021 (x86_64) (Linux: 3.15.0-rc5_drm-intel-nightly_367653_20140521+ x86_64) Subtest rc6-residency-check: SUCCESS This machine doesn't support rc6pp This machine doesn't support rc6p The residency counter : 0.994333 This machine entry rc6 state. Subtest rc6-residency-counter: SUCCESS Signed-off-by: Liu, Lei A lei.a@intel.com, Wendy Wang wendy.w...@intel.com Signed-off-by: Wendy Wang wendy.w...@intel.com diff --git a/tests/pm_rc6_residency.c b/tests/pm_rc6_residency.c index 197ab00..550e3ad 100644 --- a/tests/pm_rc6_residency.c +++ b/tests/pm_rc6_residency.c @@ -34,9 +34,11 @@ #include drmtest.h +#define NUMBER_OF_RC6_RESIDENCY 3 #define SLEEP_DURATION 3000 // in milliseconds #define RC6_FUDGE 900 // in milliseconds + static unsigned int readit(const char *path) { unsigned int ret; @@ -44,8 +46,10 @@ static unsigned int readit(const char *path) FILE *file; file = fopen(path, r); - igt_assert_f(file, - Couldn't open %s (%d)\n, path, errno); + if (file == NULL) { + fprintf(stderr, Couldn't open %s (%d)\n, path, errno); + abort(); + } scanned = fscanf(file, %u, ret); igt_assert(scanned == 1); @@ -54,62 +58,112 @@ static unsigned int readit(const char *path) return ret; } -igt_simple_main +static void read_rc6_residency( int value[], const char *name_of_rc6_residency[]) { const int device = drm_get_card(); - char *path, *pathp, *pathpp; - int fd, ret; - unsigned int value1, value1p, value1pp, value2, value2p, value2pp; + char *path ; + int ret; FILE *file; - int diff; - - igt_skip_on_simulation(); - - /* Use drm_open_any to verify device existence */ - fd = drm_open_any(); - close(fd); - - ret = asprintf(path, /sys/class/drm/card%d/power/rc6_enable, device); - igt_assert(ret != -1); /* For some reason my ivb isn't idle even after syncing up with the gpu. * Let's add a sleept just to make it happy. */ sleep(5); - file = fopen(path, r); + ret = asprintf(path, /sys/class/drm/card%d/power/rc6_enable, device); + igt_assert(ret != -1); + + file = fopen(path, r);//open igt_require(file); /* claim success if no rc6 enabled. */ if (readit(path) == 0) igt_success(); - ret = asprintf(path, /sys/class/drm/card%d/power/rc6_residency_ms, device); - igt_assert(ret != -1); - ret = asprintf(pathp,
Re: [Intel-gfx] [PATCH] [I-G-T]Add rc6_residency_counter subtest
On Thu, Jun 05, 2014 at 10:27:42AM +0800, Wendy Wang wrote: Move rc6_residency_check to subtest, add new rc6_residency_counter subtest for pm_rc6_residency IGT case. Looks good to me. You have some formatting issues: for loops don't use the right coding style useless comment to fopen bad sign-off in mail added unnecessary whitespace replace assert with open coded abort So I've merged it with all those warts (except I fixed the signed-off-by). Please keep these things in mind next patch, and feel free to submit patches to fix these issues as well. [snip] -- Ben Widawsky, Intel Open Source Technology Center ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] [I-G-T]Add rc6_residency_counter subtest
On Thu, Jun 5, 2014 at 7:19 PM, Ben Widawsky b...@bwidawsk.net wrote: On Thu, Jun 05, 2014 at 10:27:42AM +0800, Wendy Wang wrote: Move rc6_residency_check to subtest, add new rc6_residency_counter subtest for pm_rc6_residency IGT case. Looks good to me. You have some formatting issues: for loops don't use the right coding style useless comment to fopen bad sign-off in mail added unnecessary whitespace replace assert with open coded abort So I've merged it with all those warts (except I fixed the signed-off-by). Please keep these things in mind next patch, and feel free to submit patches to fix these issues as well. I guess you've missed my reply to Wendy's patch. Since you've gone ahead and merged it, can you please address these issues? Thanks, Daniel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH] [I-G-T]Add rc6_residency_counter subtest
Move rc6_residency_check to subtest, add new rc6_residency_counter subtest for pm_rc6_residency IGT case. Test results run on platforms show as below: On HSW --- [root@x-hswu opt]# ./pm_rc6_residency IGT-Version: 1.6-g35b31df (x86_64) (Linux: 3.15.0-rc3_drm-intel-nightly_0791a3_20140520+ x86_64) Subtest rc6-residency-check: SUCCESS This machine doesn't support rc6pp This machine doesn't support rc6p This machine entry rc6 status. The residency counter : 0.999667 Subtest rc6-residency-counter: SUCCESS On IVB [root@IVB tests]# ./pm_rc6_residency IGT-Version: 1.6-g35b31df (x86_64) (Linux: 3.13.6_20140318+ x86_64) Subtest rc6-residency-check: SUCCESS This machine entry rc6p status. The residency counter : 0.997000 Subtest rc6-residency-counter: SUCCESS On BYT root@x-byt:/opt# ./pm_rc6_residency IGT-Version: 1.6-g0d39021 (x86_64) (Linux: 3.14.0_kcloud_ceabbb_20140521+ x86_64) Subtest rc6-residency-check: SUCCESS This machine doesn't support rc6pp This machine doesn't support rc6p The residency counter : 1.144333 Test assertion failure function rc6_residency_counter, file pm_rc6_residency.c:131: Last errno: 0, Success Failed assertion: counter_result =1 Debug files must be wrong, Subtest rc6-residency-counter: FAIL On BDW --- [root@x-bdw01 opt]# ./pm_rc6_residency IGT-Version: 1.6-g0d39021 (x86_64) (Linux: 3.15.0-rc5_drm-intel-nightly_367653_20140521+ x86_64) Subtest rc6-residency-check: SUCCESS This machine doesn't support rc6pp This machine doesn't support rc6p The residency counter : 0.994333 This machine entry rc6 state. Subtest rc6-residency-counter: SUCCESS Signed-off-by: Liu, Lei A lei.a@intel.com, Wendy Wang wendy.w...@intel.com Signed-off-by: Wendy Wang wendy.w...@intel.com diff --git a/tests/pm_rc6_residency.c b/tests/pm_rc6_residency.c index 197ab00..550e3ad 100644 --- a/tests/pm_rc6_residency.c +++ b/tests/pm_rc6_residency.c @@ -34,9 +34,11 @@ #include drmtest.h +#define NUMBER_OF_RC6_RESIDENCY 3 #define SLEEP_DURATION 3000 // in milliseconds #define RC6_FUDGE 900 // in milliseconds + static unsigned int readit(const char *path) { unsigned int ret; @@ -44,8 +46,10 @@ static unsigned int readit(const char *path) FILE *file; file = fopen(path, r); - igt_assert_f(file, -Couldn't open %s (%d)\n, path, errno); + if (file == NULL) { + fprintf(stderr, Couldn't open %s (%d)\n, path, errno); + abort(); + } scanned = fscanf(file, %u, ret); igt_assert(scanned == 1); @@ -54,62 +58,112 @@ static unsigned int readit(const char *path) return ret; } -igt_simple_main +static void read_rc6_residency( int value[], const char *name_of_rc6_residency[]) { const int device = drm_get_card(); - char *path, *pathp, *pathpp; - int fd, ret; - unsigned int value1, value1p, value1pp, value2, value2p, value2pp; + char *path ; + int ret; FILE *file; - int diff; - - igt_skip_on_simulation(); - - /* Use drm_open_any to verify device existence */ - fd = drm_open_any(); - close(fd); - - ret = asprintf(path, /sys/class/drm/card%d/power/rc6_enable, device); - igt_assert(ret != -1); /* For some reason my ivb isn't idle even after syncing up with the gpu. * Let's add a sleept just to make it happy. */ sleep(5); - file = fopen(path, r); + ret = asprintf(path, /sys/class/drm/card%d/power/rc6_enable, device); + igt_assert(ret != -1); + + file = fopen(path, r);//open igt_require(file); /* claim success if no rc6 enabled. */ if (readit(path) == 0) igt_success(); - ret = asprintf(path, /sys/class/drm/card%d/power/rc6_residency_ms, device); - igt_assert(ret != -1); - ret = asprintf(pathp, /sys/class/drm/card%d/power/rc6p_residency_ms, device); - igt_assert(ret != -1); - ret = asprintf(pathpp, /sys/class/drm/card%d/power/rc6pp_residency_ms, device); - igt_assert(ret != -1); + for(unsigned int i = 0; i 6; i++) + { + if(i == 3) + sleep(SLEEP_DURATION / 1000); + ret = asprintf(path, /sys/class/drm/card%d/power/%s_residency_ms,device,name_of_rc6_residency[i % 3] ); + igt_assert(ret != -1); + value[i] = readit(path); + } + free(path); +} - value1 = readit(path); - value1p = readit(pathp); - value1pp = readit(pathpp); - sleep(SLEEP_DURATION / 1000); - value2 = readit(path); - value2p = readit(pathp); - value2pp = readit(pathpp); +static void rc6_residency_counter(int value[],const char * name_of_rc6_residency[]) +{ + unsigned int flag_counter,flag_support; + double