public inbox for igt-dev@lists.freedesktop.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t] amdgpu/amd_abm: Fix getting and setting abm level property
@ 2019-04-16 17:45 Nicholas Kazlauskas
  2019-04-16 18:34 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Nicholas Kazlauskas @ 2019-04-16 17:45 UTC (permalink / raw)
  To: igt-dev

This patch addresses a few problems:

1. Inner loop that iterates over the properties uses the same iterator
as the outer loop over connectors. If the eDP panel isn't on the first
output, then it won't be checked and the tests will skip.

2. We can get null pointer deferences if any of the DRM calls return
NULL.

3. The proplist isn't freed after being acquired.

These can be fixed by using the kmstest_get_property helper to
get the prop_id. The prop_id and KMS connector ID are then stored
for use later in the test when we need to set the ABM level.

All the necessary cached state has been placed into a data structure and
many callsites have been updated to make use of this.

Cc: David Francis <david.francis@amd.com>
Cc: Leo Li <sunpeng.li@amd.com>
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
---
 tests/amdgpu/amd_abm.c | 147 ++++++++++++++++++-----------------------
 1 file changed, 63 insertions(+), 84 deletions(-)

diff --git a/tests/amdgpu/amd_abm.c b/tests/amdgpu/amd_abm.c
index 363b1e90..74156462 100644
--- a/tests/amdgpu/amd_abm.c
+++ b/tests/amdgpu/amd_abm.c
@@ -34,6 +34,14 @@
 
 #define BACKLIGHT_PATH "/sys/class/backlight/amdgpu_bl0"
 
+typedef struct data {
+	igt_display_t display;
+	int drm_fd;
+	int debugfs;
+	uint32_t output_id;
+	uint32_t abm_prop_id;
+} data_t;
+
 static int read_current_backlight_pwm(int debugfs_dir)
 {
 	char buf[20];
@@ -76,35 +84,14 @@ static int backlight_write_brightness(int value)
 	return 0;
 }
 
-static void set_abm_level(igt_display_t *display, int level)
+static void set_abm_level(data_t *data, int level)
 {
-	int i, ret;
-	int output_id;
-	drmModeObjectPropertiesPtr props;
-	uint32_t prop_id;
-	drmModePropertyPtr prop;
 	uint32_t type = DRM_MODE_OBJECT_CONNECTOR;
+	int ret;
 
-	for (i = 0; i < display->n_outputs; i++) {
-		output_id = display->outputs[i].id;
-		props = drmModeObjectGetProperties(display->drm_fd, output_id, type);
-
-		for (i = 0; i < props->count_props; i++) {
-			prop_id = props->props[i];
-			prop = drmModeGetProperty(display->drm_fd, prop_id);
-
-			igt_assert(prop);
-
-			if (strcmp(prop->name, "abm level") == 0) {
-				ret = drmModeObjectSetProperty(display->drm_fd, output_id, type, prop_id, level);
-
-				igt_assert_eq(ret, 0);
-			}
-
-			drmModeFreeProperty(prop);
-		}
-	}
-
+	ret = drmModeObjectSetProperty(data->drm_fd, data->output_id, type,
+				       data->abm_prop_id, level);
+	igt_assert_eq(ret, 0);
 }
 
 static int backlight_read_max_brightness(int *result)
@@ -132,24 +119,21 @@ static int backlight_read_max_brightness(int *result)
 	return errno;
 }
 
-static void skip_if_incompatible(igt_display_t *display, int debugfs_dir)
+static void test_init(data_t *data)
 {
+	igt_display_t *display = &data->display;
 	int ret, i;
 	char buf[20];
 	bool abm_prop_exists;
-	int output_id;
-	drmModeObjectPropertiesPtr props;
 	uint32_t type = DRM_MODE_OBJECT_CONNECTOR;
-	uint32_t prop_id;
-	drmModePropertyPtr prop;
 
-	ret = igt_debugfs_simple_read(debugfs_dir, "amdgpu_current_backlight_pwm",
+	ret = igt_debugfs_simple_read(data->debugfs, "amdgpu_current_backlight_pwm",
 			 buf, sizeof(buf));
 
 	if (ret < 0)
 		igt_skip("No current backlight debugfs entry.\n");
 
-	ret = igt_debugfs_simple_read(debugfs_dir, "amdgpu_target_backlight_pwm",
+	ret = igt_debugfs_simple_read(data->debugfs, "amdgpu_target_backlight_pwm",
 			 buf, sizeof(buf));
 
 	if (ret < 0)
@@ -158,18 +142,14 @@ static void skip_if_incompatible(igt_display_t *display, int debugfs_dir)
 	abm_prop_exists = false;
 
 	for (i = 0; i < display->n_outputs; i++) {
-		output_id = display->outputs[i].id;
-		props = drmModeObjectGetProperties(display->drm_fd, output_id, type);
+		data->output_id = display->outputs[i].id;
 
-		for (i = 0; i < props->count_props; i++) {
-			prop_id = props->props[i];
-			prop = drmModeGetProperty(display->drm_fd, prop_id);
+		abm_prop_exists = kmstest_get_property(
+			data->drm_fd, data->output_id, type, "abm level",
+			&data->abm_prop_id, NULL, NULL);
 
-			if (strcmp(prop->name, "abm level") == 0)
-				abm_prop_exists = true;
-
-			drmModeFreeProperty(prop);
-		}
+		if (abm_prop_exists)
+			break;
 	}
 
 	if (!abm_prop_exists)
@@ -177,7 +157,7 @@ static void skip_if_incompatible(igt_display_t *display, int debugfs_dir)
 }
 
 
-static void backlight_dpms_cycle(igt_display_t *display, int debugfs, igt_output_t *output)
+static void backlight_dpms_cycle(data_t *data, igt_output_t *output)
 {
 	int ret;
 	int max_brightness;
@@ -186,19 +166,19 @@ static void backlight_dpms_cycle(igt_display_t *display, int debugfs, igt_output
 	ret = backlight_read_max_brightness(&max_brightness);
 	igt_assert_eq(ret, 0);
 
-	set_abm_level(display, 0);
+	set_abm_level(data, 0);
 	backlight_write_brightness(max_brightness / 2);
 	usleep(100000);
-	pwm_1 = read_target_backlight_pwm(debugfs);
+	pwm_1 = read_target_backlight_pwm(data->debugfs);
 
-	kmstest_set_connector_dpms(display->drm_fd, output->config.connector, DRM_MODE_DPMS_OFF);
-	kmstest_set_connector_dpms(display->drm_fd, output->config.connector, DRM_MODE_DPMS_ON);
+	kmstest_set_connector_dpms(data->drm_fd, output->config.connector, DRM_MODE_DPMS_OFF);
+	kmstest_set_connector_dpms(data->drm_fd, output->config.connector, DRM_MODE_DPMS_ON);
 	usleep(100000);
-	pwm_2 = read_target_backlight_pwm(debugfs);
+	pwm_2 = read_target_backlight_pwm(data->debugfs);
 	igt_assert_eq(pwm_1, pwm_2);
 }
 
-static void backlight_monotonic_basic(igt_display_t *display, int debugfs)
+static void backlight_monotonic_basic(data_t *data)
 {
 	int ret;
 	int max_brightness;
@@ -211,23 +191,23 @@ static void backlight_monotonic_basic(igt_display_t *display, int debugfs)
 
 	brightness_step = max_brightness / 10;
 
-	set_abm_level(display, 0);
+	set_abm_level(data, 0);
 	backlight_write_brightness(max_brightness);
 	usleep(100000);
-	prev_pwm = read_target_backlight_pwm(debugfs);
+	prev_pwm = read_target_backlight_pwm(data->debugfs);
 	for (brightness = max_brightness - brightness_step;
 	     brightness > 0;
 	     brightness -= brightness_step) {
 		backlight_write_brightness(brightness);
 		usleep(100000);
-		pwm = read_target_backlight_pwm(debugfs);
+		pwm = read_target_backlight_pwm(data->debugfs);
 		igt_assert(pwm < prev_pwm);
 		prev_pwm = pwm;
 	}
 
 }
 
-static void backlight_monotonic_abm(igt_display_t *display, int debugfs)
+static void backlight_monotonic_abm(data_t *data)
 {
 	int ret, i;
 	int max_brightness;
@@ -240,23 +220,23 @@ static void backlight_monotonic_abm(igt_display_t *display, int debugfs)
 
 	brightness_step = max_brightness / 10;
 	for (i = 1; i < 5; i++) {
-		set_abm_level(display, i);
+		set_abm_level(data, i);
 		backlight_write_brightness(max_brightness);
 		usleep(100000);
-		prev_pwm = read_target_backlight_pwm(debugfs);
+		prev_pwm = read_target_backlight_pwm(data->debugfs);
 		for (brightness = max_brightness - brightness_step;
 		     brightness > 0;
 		     brightness -= brightness_step) {
 			backlight_write_brightness(brightness);
 			usleep(100000);
-			pwm = read_target_backlight_pwm(debugfs);
+			pwm = read_target_backlight_pwm(data->debugfs);
 			igt_assert(pwm < prev_pwm);
 			prev_pwm = pwm;
 		}
 	}
 }
 
-static void abm_enabled(igt_display_t *display, int debugfs)
+static void abm_enabled(data_t *data)
 {
 	int ret, i;
 	int max_brightness;
@@ -265,16 +245,16 @@ static void abm_enabled(igt_display_t *display, int debugfs)
 	ret = backlight_read_max_brightness(&max_brightness);
 	igt_assert_eq(ret, 0);
 
-	set_abm_level(display, 0);
+	set_abm_level(data, 0);
 	backlight_write_brightness(max_brightness);
 	usleep(100000);
-	prev_pwm = read_target_backlight_pwm(debugfs);
+	prev_pwm = read_target_backlight_pwm(data->debugfs);
 	pwm_without_abm = prev_pwm;
 
 	for (i = 1; i < 5; i++) {
-		set_abm_level(display, i);
+		set_abm_level(data, i);
 		usleep(100000);
-		pwm = read_target_backlight_pwm(debugfs);
+		pwm = read_target_backlight_pwm(data->debugfs);
 		igt_assert(pwm <= prev_pwm);
 		igt_assert(pwm < pwm_without_abm);
 		prev_pwm = pwm;
@@ -282,7 +262,7 @@ static void abm_enabled(igt_display_t *display, int debugfs)
 
 }
 
-static void abm_gradual(igt_display_t *display, int debugfs)
+static void abm_gradual(data_t *data)
 {
 	int ret, i;
 	int convergence_delay = 15;
@@ -293,71 +273,70 @@ static void abm_gradual(igt_display_t *display, int debugfs)
 
 	igt_assert_eq(ret, 0);
 
-	set_abm_level(display, 0);
+	set_abm_level(data, 0);
 	backlight_write_brightness(max_brightness);
 
 	sleep(convergence_delay);
-	prev_pwm = read_target_backlight_pwm(debugfs);
-	curr = read_current_backlight_pwm(debugfs);
+	prev_pwm = read_target_backlight_pwm(data->debugfs);
+	curr = read_current_backlight_pwm(data->debugfs);
 
 	igt_assert_eq(prev_pwm, curr);
-	set_abm_level(display, 4);
+	set_abm_level(data, 4);
 	for (i = 0; i < 10; i++) {
 		usleep(100000);
-		pwm = read_current_backlight_pwm(debugfs);
+		pwm = read_current_backlight_pwm(data->debugfs);
 		igt_assert(pwm < prev_pwm);
 		prev_pwm = pwm;
 	}
 
 	sleep(convergence_delay - 1);
 
-	prev_pwm = read_target_backlight_pwm(debugfs);
-	curr = read_current_backlight_pwm(debugfs);
+	prev_pwm = read_target_backlight_pwm(data->debugfs);
+	curr = read_current_backlight_pwm(data->debugfs);
 
 	igt_assert_eq(prev_pwm, curr);
 }
 
 igt_main
 {
-	igt_display_t display;
-	int debugfs;
+	data_t data = { 0 };
 	enum pipe pipe;
 	igt_output_t *output;
 
 	igt_skip_on_simulation();
 
 	igt_fixture {
-		display.drm_fd = drm_open_driver_master(DRIVER_AMDGPU);
+		data.drm_fd = drm_open_driver_master(DRIVER_AMDGPU);
 
-		if (display.drm_fd == -1)
+		if (data.drm_fd == -1)
 			igt_skip("Not an amdgpu driver.\n");
 
-		debugfs = igt_debugfs_dir(display.drm_fd);
+		data.debugfs = igt_debugfs_dir(data.drm_fd);
 
 		kmstest_set_vt_graphics_mode();
 
-		igt_display_require(&display, display.drm_fd);
+		igt_display_require(&data.display, data.drm_fd);
 
-		skip_if_incompatible(&display, debugfs);
+		test_init(&data);
 
-		for_each_pipe_with_valid_output(&display, pipe, output) {
+		for_each_pipe_with_valid_output(&data.display, pipe, output) {
 			if (output->config.connector->connector_type == DRM_MODE_CONNECTOR_eDP)
 				break;
 		}
 	}
 
 	igt_subtest("dpms_cycle")
-		backlight_dpms_cycle(&display, debugfs, output);
+		backlight_dpms_cycle(&data, output);
 	igt_subtest("backlight_monotonic_basic")
-		backlight_monotonic_basic(&display, debugfs);
+		backlight_monotonic_basic(&data);
 	igt_subtest("backlight_monotonic_abm")
-		backlight_monotonic_abm(&display, debugfs);
+		backlight_monotonic_abm(&data);
 	igt_subtest("abm_enabled")
-		abm_enabled(&display, debugfs);
+		abm_enabled(&data);
 	igt_subtest("abm_gradual")
-		abm_gradual(&display, debugfs);
+		abm_gradual(&data);
 
 	igt_fixture {
-		igt_display_fini(&display);
+		igt_display_fini(&data.display);
 	}
 }
-- 
2.17.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* [igt-dev] ✓ Fi.CI.BAT: success for amdgpu/amd_abm: Fix getting and setting abm level property
  2019-04-16 17:45 [igt-dev] [PATCH i-g-t] amdgpu/amd_abm: Fix getting and setting abm level property Nicholas Kazlauskas
@ 2019-04-16 18:34 ` Patchwork
  2019-04-17  3:44 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2019-04-16 18:34 UTC (permalink / raw)
  To: Nicholas Kazlauskas; +Cc: igt-dev

== Series Details ==

Series: amdgpu/amd_abm: Fix getting and setting abm level property
URL   : https://patchwork.freedesktop.org/series/59602/
State : success

== Summary ==

CI Bug Log - changes from IGT_4953 -> IGTPW_2874
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/59602/revisions/1/mbox/

Known issues
------------

  Here are the changes found in IGTPW_2874 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@amdgpu/amd_basic@cs-compute:
    - fi-kbl-8809g:       NOTRUN -> FAIL [fdo#108094]

  * igt@amdgpu/amd_basic@query-info:
    - fi-bsw-kefka:       NOTRUN -> SKIP [fdo#109271] +50

  * igt@gem_exec_basic@basic-bsd2:
    - fi-kbl-7500u:       NOTRUN -> SKIP [fdo#109271] +9

  * igt@gem_exec_basic@gtt-bsd2:
    - fi-byt-clapper:     NOTRUN -> SKIP [fdo#109271] +52

  * igt@gem_exec_basic@readonly-bsd2:
    - fi-pnv-d510:        NOTRUN -> SKIP [fdo#109271] +71

  * igt@kms_busy@basic-flip-c:
    - fi-byt-clapper:     NOTRUN -> SKIP [fdo#109271] / [fdo#109278]
    - fi-bsw-kefka:       NOTRUN -> SKIP [fdo#109271] / [fdo#109278]
    - fi-pnv-d510:        NOTRUN -> SKIP [fdo#109271] / [fdo#109278]

  * igt@kms_chamelium@dp-crc-fast:
    - fi-kbl-7500u:       NOTRUN -> DMESG-WARN [fdo#103841]

  * igt@kms_chamelium@hdmi-edid-read:
    - fi-hsw-peppy:       NOTRUN -> SKIP [fdo#109271] +46
    - fi-kbl-8809g:       NOTRUN -> SKIP [fdo#109271] +54

  * igt@kms_frontbuffer_tracking@basic:
    - fi-hsw-peppy:       NOTRUN -> DMESG-FAIL [fdo#102614] / [fdo#107814]

  * igt@kms_pipe_crc_basic@read-crc-pipe-a:
    - fi-byt-clapper:     NOTRUN -> FAIL [fdo#103191]

  * igt@runner@aborted:
    - fi-kbl-7500u:       NOTRUN -> FAIL [fdo#103841]

  
#### Possible fixes ####

  * igt@i915_selftest@live_contexts:
    - fi-bdw-gvtdvm:      DMESG-FAIL -> PASS

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
    - fi-glk-dsi:         FAIL [fdo#103191] -> PASS

  
  [fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614
  [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
  [fdo#103841]: https://bugs.freedesktop.org/show_bug.cgi?id=103841
  [fdo#107814]: https://bugs.freedesktop.org/show_bug.cgi?id=107814
  [fdo#108094]: https://bugs.freedesktop.org/show_bug.cgi?id=108094
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278


Participating hosts (42 -> 39)
------------------------------

  Additional (6): fi-hsw-peppy fi-kbl-7500u fi-pnv-d510 fi-kbl-8809g fi-bsw-kefka fi-byt-clapper 
  Missing    (9): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-bsw-cyan fi-ctg-p8600 fi-icl-u3 fi-blb-e6850 fi-bdw-samus fi-snb-2600 


Build changes
-------------

    * IGT: IGT_4953 -> IGTPW_2874

  CI_DRM_5939: 757f5370dc4baed0475b6e28efd67ecc267e8745 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_2874: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2874/
  IGT_4953: e03d0030391689cfd0fbca293d44d83dd7d9e356 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2874/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* [igt-dev] ✓ Fi.CI.IGT: success for amdgpu/amd_abm: Fix getting and setting abm level property
  2019-04-16 17:45 [igt-dev] [PATCH i-g-t] amdgpu/amd_abm: Fix getting and setting abm level property Nicholas Kazlauskas
  2019-04-16 18:34 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
@ 2019-04-17  3:44 ` Patchwork
  2019-04-17 14:08 ` [igt-dev] [PATCH i-g-t] " Francis, David
  2019-04-17 14:17 ` [igt-dev] ✗ Fi.CI.BAT: failure for amdgpu/amd_abm: Fix getting and setting abm level property (rev2) Patchwork
  3 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2019-04-17  3:44 UTC (permalink / raw)
  To: Nicholas Kazlauskas; +Cc: igt-dev

== Series Details ==

Series: amdgpu/amd_abm: Fix getting and setting abm level property
URL   : https://patchwork.freedesktop.org/series/59602/
State : success

== Summary ==

CI Bug Log - changes from IGT_4953_full -> IGTPW_2874_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/59602/revisions/1/mbox/

Known issues
------------

  Here are the changes found in IGTPW_2874_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_schedule@preemptive-hang-bsd2:
    - shard-hsw:          NOTRUN -> SKIP [fdo#109271] +25

  * igt@gem_pread@stolen-uncached:
    - shard-kbl:          NOTRUN -> SKIP [fdo#109271] +20

  * igt@kms_atomic_transition@5x-modeset-transitions-fencing:
    - shard-hsw:          NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +2
    - shard-glk:          NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +1

  * igt@kms_busy@extended-modeset-hang-oldfb-render-e:
    - shard-snb:          NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +6

  * igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-d:
    - shard-kbl:          NOTRUN -> SKIP [fdo#109271] / [fdo#109278]

  * igt@kms_content_protection@atomic-dpms:
    - shard-kbl:          NOTRUN -> FAIL [fdo#110321] / [fdo#110336]

  * igt@kms_cursor_crc@cursor-256x256-suspend:
    - shard-glk:          NOTRUN -> FAIL [fdo#103232]

  * igt@kms_flip@2x-flip-vs-modeset-interruptible:
    - shard-hsw:          PASS -> DMESG-WARN [fdo#102614]

  * igt@kms_flip@flip-vs-expired-vblank:
    - shard-glk:          NOTRUN -> FAIL [fdo#105363]

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc:
    - shard-hsw:          PASS -> SKIP [fdo#109271]

  * igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite:
    - shard-iclb:         PASS -> FAIL [fdo#103167] +1

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-gtt:
    - shard-iclb:         PASS -> FAIL [fdo#109247] +10

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-pgflip-blt:
    - shard-glk:          NOTRUN -> SKIP [fdo#109271] +20

  * igt@kms_lease@page_flip_implicit_plane:
    - shard-apl:          NOTRUN -> FAIL [fdo#110281]

  * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes:
    - shard-apl:          PASS -> DMESG-WARN [fdo#108566] +4

  * igt@kms_plane_alpha_blend@pipe-a-alpha-opaque-fb:
    - shard-kbl:          NOTRUN -> FAIL [fdo#108145]

  * igt@kms_plane_alpha_blend@pipe-c-constant-alpha-max:
    - shard-glk:          NOTRUN -> FAIL [fdo#108145]

  * igt@kms_psr2_su@page_flip:
    - shard-iclb:         PASS -> SKIP [fdo#109642]

  * igt@kms_psr@psr2_no_drrs:
    - shard-iclb:         PASS -> SKIP [fdo#109441] +1

  * igt@kms_psr@suspend:
    - shard-iclb:         PASS -> FAIL [fdo#107383] / [fdo#110215]

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top:
    - shard-kbl:          PASS -> FAIL [fdo#109016]

  * igt@kms_setmode@basic:
    - shard-hsw:          PASS -> FAIL [fdo#99912]

  * igt@kms_universal_plane@universal-plane-gen9-features-pipe-f:
    - shard-apl:          NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +1

  * igt@perf_pmu@busy-accuracy-2-rcs0:
    - shard-snb:          NOTRUN -> SKIP [fdo#109271] +40

  * igt@perf_pmu@rc6-runtime-pm:
    - shard-iclb:         PASS -> FAIL [fdo#105010]

  * igt@prime_nv_pcopy@test3_5:
    - shard-apl:          NOTRUN -> SKIP [fdo#109271] +25

  
#### Possible fixes ####

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt:
    - shard-iclb:         FAIL [fdo#103167] -> PASS +5

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-cpu:
    - shard-glk:          FAIL [fdo#103167] -> PASS

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-wc:
    - shard-iclb:         FAIL [fdo#109247] -> PASS +11

  * igt@kms_plane@pixel-format-pipe-a-planes:
    - shard-glk:          SKIP [fdo#109271] -> PASS

  * igt@kms_plane_scaling@pipe-a-scaler-with-pixel-format:
    - shard-glk:          SKIP [fdo#109271] / [fdo#109278] -> PASS

  * igt@kms_psr@cursor_mmap_gtt:
    - shard-iclb:         FAIL [fdo#107383] / [fdo#110215] -> PASS +2

  * igt@kms_psr@psr2_cursor_render:
    - shard-iclb:         SKIP [fdo#109441] -> PASS +1

  * igt@kms_setmode@basic:
    - shard-apl:          FAIL [fdo#99912] -> PASS

  * igt@kms_vblank@pipe-c-ts-continuation-suspend:
    - shard-apl:          DMESG-WARN [fdo#108566] -> PASS +3

  
  [fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614
  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232
  [fdo#105010]: https://bugs.freedesktop.org/show_bug.cgi?id=105010
  [fdo#105363]: https://bugs.freedesktop.org/show_bug.cgi?id=105363
  [fdo#107383]: https://bugs.freedesktop.org/show_bug.cgi?id=107383
  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566
  [fdo#109016]: https://bugs.freedesktop.org/show_bug.cgi?id=109016
  [fdo#109247]: https://bugs.freedesktop.org/show_bug.cgi?id=109247
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
  [fdo#110215]: https://bugs.freedesktop.org/show_bug.cgi?id=110215
  [fdo#110281]: https://bugs.freedesktop.org/show_bug.cgi?id=110281
  [fdo#110321]: https://bugs.freedesktop.org/show_bug.cgi?id=110321
  [fdo#110336]: https://bugs.freedesktop.org/show_bug.cgi?id=110336
  [fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912


Participating hosts (7 -> 6)
------------------------------

  Missing    (1): shard-skl 


Build changes
-------------

    * IGT: IGT_4953 -> IGTPW_2874

  CI_DRM_5939: 757f5370dc4baed0475b6e28efd67ecc267e8745 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_2874: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2874/
  IGT_4953: e03d0030391689cfd0fbca293d44d83dd7d9e356 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2874/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* Re: [igt-dev] [PATCH i-g-t] amdgpu/amd_abm: Fix getting and setting abm level property
  2019-04-16 17:45 [igt-dev] [PATCH i-g-t] amdgpu/amd_abm: Fix getting and setting abm level property Nicholas Kazlauskas
  2019-04-16 18:34 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
  2019-04-17  3:44 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
@ 2019-04-17 14:08 ` Francis, David
  2019-04-17 14:17 ` [igt-dev] ✗ Fi.CI.BAT: failure for amdgpu/amd_abm: Fix getting and setting abm level property (rev2) Patchwork
  3 siblings, 0 replies; 5+ messages in thread
From: Francis, David @ 2019-04-17 14:08 UTC (permalink / raw)
  To: Kazlauskas, Nicholas, igt-dev@lists.freedesktop.org


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

Patch is Reviewed-by: David Francis <david.francis@amd.com>

________________________________
From: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Sent: April 16, 2019 1:45:12 PM
To: igt-dev@lists.freedesktop.org
Cc: Kazlauskas, Nicholas; Francis, David; Li, Sun peng (Leo)
Subject: [PATCH i-g-t] amdgpu/amd_abm: Fix getting and setting abm level property

This patch addresses a few problems:

1. Inner loop that iterates over the properties uses the same iterator
as the outer loop over connectors. If the eDP panel isn't on the first
output, then it won't be checked and the tests will skip.

2. We can get null pointer deferences if any of the DRM calls return
NULL.

3. The proplist isn't freed after being acquired.

These can be fixed by using the kmstest_get_property helper to
get the prop_id. The prop_id and KMS connector ID are then stored
for use later in the test when we need to set the ABM level.

All the necessary cached state has been placed into a data structure and
many callsites have been updated to make use of this.

Cc: David Francis <david.francis@amd.com>
Cc: Leo Li <sunpeng.li@amd.com>
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
---
 tests/amdgpu/amd_abm.c | 147 ++++++++++++++++++-----------------------
 1 file changed, 63 insertions(+), 84 deletions(-)

diff --git a/tests/amdgpu/amd_abm.c b/tests/amdgpu/amd_abm.c
index 363b1e90..74156462 100644
--- a/tests/amdgpu/amd_abm.c
+++ b/tests/amdgpu/amd_abm.c
@@ -34,6 +34,14 @@

 #define BACKLIGHT_PATH "/sys/class/backlight/amdgpu_bl0"

+typedef struct data {
+       igt_display_t display;
+       int drm_fd;
+       int debugfs;
+       uint32_t output_id;
+       uint32_t abm_prop_id;
+} data_t;
+
 static int read_current_backlight_pwm(int debugfs_dir)
 {
         char buf[20];
@@ -76,35 +84,14 @@ static int backlight_write_brightness(int value)
         return 0;
 }

-static void set_abm_level(igt_display_t *display, int level)
+static void set_abm_level(data_t *data, int level)
 {
-       int i, ret;
-       int output_id;
-       drmModeObjectPropertiesPtr props;
-       uint32_t prop_id;
-       drmModePropertyPtr prop;
         uint32_t type = DRM_MODE_OBJECT_CONNECTOR;
+       int ret;

-       for (i = 0; i < display->n_outputs; i++) {
-               output_id = display->outputs[i].id;
-               props = drmModeObjectGetProperties(display->drm_fd, output_id, type);
-
-               for (i = 0; i < props->count_props; i++) {
-                       prop_id = props->props[i];
-                       prop = drmModeGetProperty(display->drm_fd, prop_id);
-
-                       igt_assert(prop);
-
-                       if (strcmp(prop->name, "abm level") == 0) {
-                               ret = drmModeObjectSetProperty(display->drm_fd, output_id, type, prop_id, level);
-
-                               igt_assert_eq(ret, 0);
-                       }
-
-                       drmModeFreeProperty(prop);
-               }
-       }
-
+       ret = drmModeObjectSetProperty(data->drm_fd, data->output_id, type,
+                                      data->abm_prop_id, level);
+       igt_assert_eq(ret, 0);
 }

 static int backlight_read_max_brightness(int *result)
@@ -132,24 +119,21 @@ static int backlight_read_max_brightness(int *result)
         return errno;
 }

-static void skip_if_incompatible(igt_display_t *display, int debugfs_dir)
+static void test_init(data_t *data)
 {
+       igt_display_t *display = &data->display;
         int ret, i;
         char buf[20];
         bool abm_prop_exists;
-       int output_id;
-       drmModeObjectPropertiesPtr props;
         uint32_t type = DRM_MODE_OBJECT_CONNECTOR;
-       uint32_t prop_id;
-       drmModePropertyPtr prop;

-       ret = igt_debugfs_simple_read(debugfs_dir, "amdgpu_current_backlight_pwm",
+       ret = igt_debugfs_simple_read(data->debugfs, "amdgpu_current_backlight_pwm",
                          buf, sizeof(buf));

         if (ret < 0)
                 igt_skip("No current backlight debugfs entry.\n");

-       ret = igt_debugfs_simple_read(debugfs_dir, "amdgpu_target_backlight_pwm",
+       ret = igt_debugfs_simple_read(data->debugfs, "amdgpu_target_backlight_pwm",
                          buf, sizeof(buf));

         if (ret < 0)
@@ -158,18 +142,14 @@ static void skip_if_incompatible(igt_display_t *display, int debugfs_dir)
         abm_prop_exists = false;

         for (i = 0; i < display->n_outputs; i++) {
-               output_id = display->outputs[i].id;
-               props = drmModeObjectGetProperties(display->drm_fd, output_id, type);
+               data->output_id = display->outputs[i].id;

-               for (i = 0; i < props->count_props; i++) {
-                       prop_id = props->props[i];
-                       prop = drmModeGetProperty(display->drm_fd, prop_id);
+               abm_prop_exists = kmstest_get_property(
+                       data->drm_fd, data->output_id, type, "abm level",
+                       &data->abm_prop_id, NULL, NULL);

-                       if (strcmp(prop->name, "abm level") == 0)
-                               abm_prop_exists = true;
-
-                       drmModeFreeProperty(prop);
-               }
+               if (abm_prop_exists)
+                       break;
         }

         if (!abm_prop_exists)
@@ -177,7 +157,7 @@ static void skip_if_incompatible(igt_display_t *display, int debugfs_dir)
 }


-static void backlight_dpms_cycle(igt_display_t *display, int debugfs, igt_output_t *output)
+static void backlight_dpms_cycle(data_t *data, igt_output_t *output)
 {
         int ret;
         int max_brightness;
@@ -186,19 +166,19 @@ static void backlight_dpms_cycle(igt_display_t *display, int debugfs, igt_output
         ret = backlight_read_max_brightness(&max_brightness);
         igt_assert_eq(ret, 0);

-       set_abm_level(display, 0);
+       set_abm_level(data, 0);
         backlight_write_brightness(max_brightness / 2);
         usleep(100000);
-       pwm_1 = read_target_backlight_pwm(debugfs);
+       pwm_1 = read_target_backlight_pwm(data->debugfs);

-       kmstest_set_connector_dpms(display->drm_fd, output->config.connector, DRM_MODE_DPMS_OFF);
-       kmstest_set_connector_dpms(display->drm_fd, output->config.connector, DRM_MODE_DPMS_ON);
+       kmstest_set_connector_dpms(data->drm_fd, output->config.connector, DRM_MODE_DPMS_OFF);
+       kmstest_set_connector_dpms(data->drm_fd, output->config.connector, DRM_MODE_DPMS_ON);
         usleep(100000);
-       pwm_2 = read_target_backlight_pwm(debugfs);
+       pwm_2 = read_target_backlight_pwm(data->debugfs);
         igt_assert_eq(pwm_1, pwm_2);
 }

-static void backlight_monotonic_basic(igt_display_t *display, int debugfs)
+static void backlight_monotonic_basic(data_t *data)
 {
         int ret;
         int max_brightness;
@@ -211,23 +191,23 @@ static void backlight_monotonic_basic(igt_display_t *display, int debugfs)

         brightness_step = max_brightness / 10;

-       set_abm_level(display, 0);
+       set_abm_level(data, 0);
         backlight_write_brightness(max_brightness);
         usleep(100000);
-       prev_pwm = read_target_backlight_pwm(debugfs);
+       prev_pwm = read_target_backlight_pwm(data->debugfs);
         for (brightness = max_brightness - brightness_step;
              brightness > 0;
              brightness -= brightness_step) {
                 backlight_write_brightness(brightness);
                 usleep(100000);
-               pwm = read_target_backlight_pwm(debugfs);
+               pwm = read_target_backlight_pwm(data->debugfs);
                 igt_assert(pwm < prev_pwm);
                 prev_pwm = pwm;
         }

 }

-static void backlight_monotonic_abm(igt_display_t *display, int debugfs)
+static void backlight_monotonic_abm(data_t *data)
 {
         int ret, i;
         int max_brightness;
@@ -240,23 +220,23 @@ static void backlight_monotonic_abm(igt_display_t *display, int debugfs)

         brightness_step = max_brightness / 10;
         for (i = 1; i < 5; i++) {
-               set_abm_level(display, i);
+               set_abm_level(data, i);
                 backlight_write_brightness(max_brightness);
                 usleep(100000);
-               prev_pwm = read_target_backlight_pwm(debugfs);
+               prev_pwm = read_target_backlight_pwm(data->debugfs);
                 for (brightness = max_brightness - brightness_step;
                      brightness > 0;
                      brightness -= brightness_step) {
                         backlight_write_brightness(brightness);
                         usleep(100000);
-                       pwm = read_target_backlight_pwm(debugfs);
+                       pwm = read_target_backlight_pwm(data->debugfs);
                         igt_assert(pwm < prev_pwm);
                         prev_pwm = pwm;
                 }
         }
 }

-static void abm_enabled(igt_display_t *display, int debugfs)
+static void abm_enabled(data_t *data)
 {
         int ret, i;
         int max_brightness;
@@ -265,16 +245,16 @@ static void abm_enabled(igt_display_t *display, int debugfs)
         ret = backlight_read_max_brightness(&max_brightness);
         igt_assert_eq(ret, 0);

-       set_abm_level(display, 0);
+       set_abm_level(data, 0);
         backlight_write_brightness(max_brightness);
         usleep(100000);
-       prev_pwm = read_target_backlight_pwm(debugfs);
+       prev_pwm = read_target_backlight_pwm(data->debugfs);
         pwm_without_abm = prev_pwm;

         for (i = 1; i < 5; i++) {
-               set_abm_level(display, i);
+               set_abm_level(data, i);
                 usleep(100000);
-               pwm = read_target_backlight_pwm(debugfs);
+               pwm = read_target_backlight_pwm(data->debugfs);
                 igt_assert(pwm <= prev_pwm);
                 igt_assert(pwm < pwm_without_abm);
                 prev_pwm = pwm;
@@ -282,7 +262,7 @@ static void abm_enabled(igt_display_t *display, int debugfs)

 }

-static void abm_gradual(igt_display_t *display, int debugfs)
+static void abm_gradual(data_t *data)
 {
         int ret, i;
         int convergence_delay = 15;
@@ -293,71 +273,70 @@ static void abm_gradual(igt_display_t *display, int debugfs)

         igt_assert_eq(ret, 0);

-       set_abm_level(display, 0);
+       set_abm_level(data, 0);
         backlight_write_brightness(max_brightness);

         sleep(convergence_delay);
-       prev_pwm = read_target_backlight_pwm(debugfs);
-       curr = read_current_backlight_pwm(debugfs);
+       prev_pwm = read_target_backlight_pwm(data->debugfs);
+       curr = read_current_backlight_pwm(data->debugfs);

         igt_assert_eq(prev_pwm, curr);
-       set_abm_level(display, 4);
+       set_abm_level(data, 4);
         for (i = 0; i < 10; i++) {
                 usleep(100000);
-               pwm = read_current_backlight_pwm(debugfs);
+               pwm = read_current_backlight_pwm(data->debugfs);
                 igt_assert(pwm < prev_pwm);
                 prev_pwm = pwm;
         }

         sleep(convergence_delay - 1);

-       prev_pwm = read_target_backlight_pwm(debugfs);
-       curr = read_current_backlight_pwm(debugfs);
+       prev_pwm = read_target_backlight_pwm(data->debugfs);
+       curr = read_current_backlight_pwm(data->debugfs);

         igt_assert_eq(prev_pwm, curr);
 }

 igt_main
 {
-       igt_display_t display;
-       int debugfs;
+       data_t data = { 0 };
         enum pipe pipe;
         igt_output_t *output;

         igt_skip_on_simulation();

         igt_fixture {
-               display.drm_fd = drm_open_driver_master(DRIVER_AMDGPU);
+               data.drm_fd = drm_open_driver_master(DRIVER_AMDGPU);

-               if (display.drm_fd == -1)
+               if (data.drm_fd == -1)
                         igt_skip("Not an amdgpu driver.\n");

-               debugfs = igt_debugfs_dir(display.drm_fd);
+               data.debugfs = igt_debugfs_dir(data.drm_fd);

                 kmstest_set_vt_graphics_mode();

-               igt_display_require(&display, display.drm_fd);
+               igt_display_require(&data.display, data.drm_fd);

-               skip_if_incompatible(&display, debugfs);
+               test_init(&data);

-               for_each_pipe_with_valid_output(&display, pipe, output) {
+               for_each_pipe_with_valid_output(&data.display, pipe, output) {
                         if (output->config.connector->connector_type == DRM_MODE_CONNECTOR_eDP)
                                 break;
                 }
         }

         igt_subtest("dpms_cycle")
-               backlight_dpms_cycle(&display, debugfs, output);
+               backlight_dpms_cycle(&data, output);
         igt_subtest("backlight_monotonic_basic")
-               backlight_monotonic_basic(&display, debugfs);
+               backlight_monotonic_basic(&data);
         igt_subtest("backlight_monotonic_abm")
-               backlight_monotonic_abm(&display, debugfs);
+               backlight_monotonic_abm(&data);
         igt_subtest("abm_enabled")
-               abm_enabled(&display, debugfs);
+               abm_enabled(&data);
         igt_subtest("abm_gradual")
-               abm_gradual(&display, debugfs);
+               abm_gradual(&data);

         igt_fixture {
-               igt_display_fini(&display);
+               igt_display_fini(&data.display);
         }
 }
--
2.17.1


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

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

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* [igt-dev] ✗ Fi.CI.BAT: failure for amdgpu/amd_abm: Fix getting and setting abm level property (rev2)
  2019-04-16 17:45 [igt-dev] [PATCH i-g-t] amdgpu/amd_abm: Fix getting and setting abm level property Nicholas Kazlauskas
                   ` (2 preceding siblings ...)
  2019-04-17 14:08 ` [igt-dev] [PATCH i-g-t] " Francis, David
@ 2019-04-17 14:17 ` Patchwork
  3 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2019-04-17 14:17 UTC (permalink / raw)
  To: Francis, David; +Cc: igt-dev

== Series Details ==

Series: amdgpu/amd_abm: Fix getting and setting abm level property (rev2)
URL   : https://patchwork.freedesktop.org/series/59602/
State : failure

== Summary ==

Applying: amdgpu/amd_abm: Fix getting and setting abm level property
Using index info to reconstruct a base tree...
Patch failed at 0001 amdgpu/amd_abm: Fix getting and setting abm level property
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

end of thread, other threads:[~2019-04-17 14:17 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-04-16 17:45 [igt-dev] [PATCH i-g-t] amdgpu/amd_abm: Fix getting and setting abm level property Nicholas Kazlauskas
2019-04-16 18:34 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2019-04-17  3:44 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2019-04-17 14:08 ` [igt-dev] [PATCH i-g-t] " Francis, David
2019-04-17 14:17 ` [igt-dev] ✗ Fi.CI.BAT: failure for amdgpu/amd_abm: Fix getting and setting abm level property (rev2) Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox