Skip to contentSkip to conversation

tests/kms_chamelium: add test descriptions

PATCH In review Simon Ser 3 participants 7 messages Sep 5, 2019 – Sep 11, 2019

lore
Share & tools
lore

Simon Ser

author
#0 lore raw

PATCH 1/1 tests/kms_chamelium: add test descriptions

Add test descriptions to all subtest groups and subtests.

Each connector type has its own group, with a different set of subtests. To avoid duplication, descriptions are defined at the test function level.

---
 tests/kms_chamelium.c | 121 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 121 insertions(+)
tests/kms_chamelium.c +121 -0
index 6b6292497cd7..fe3cbe57daf3 100644
@@ -242,6 +242,9 @@ reset_state(data_t *data, struct chamelium_port *port)
 	}
 }
 
+static const char test_basic_hotplug_desc[] =
+	"Check that we get uevents and updated connector status on "
+	"hotplug and unplug";
 static void
 test_basic_hotplug(data_t *data, struct chamelium_port *port, int toggle_count)
 {
@@ -290,6 +293,8 @@ static void set_edid(data_t *data, struct chamelium_port *port,
 	chamelium_port_set_edid(data->chamelium, port, data->edids[edid]);
 }
 
+static const char test_edid_read_desc[] = "Make sure reading a simple EDID "
+					  "gives the correct blob";
 static void
 test_edid_read(data_t *data, struct chamelium_port *port, enum test_edid edid)
 {
@@ -400,6 +405,9 @@ try_suspend_resume_hpd(data_t *data, struct chamelium_port *port,
 	}
 }
 
+static const char test_suspend_resume_hpd_desc[] =
+	"Toggle HPD during suspend, check that uevents are sent and connector "
+	"status is updated";
 static void
 test_suspend_resume_hpd(data_t *data, struct chamelium_port *port,
 			enum igt_suspend_state state,
@@ -418,6 +426,9 @@ test_suspend_resume_hpd(data_t *data, struct chamelium_port *port,
 	igt_cleanup_hotplug(mon);
 }
 
+static const char test_suspend_resume_hpd_common_desc[] =
+	"Toggle HPD during suspend on all connectors, check that uevents are "
+	"sent and connector status is updated";
 static void
 test_suspend_resume_hpd_common(data_t *data, enum igt_suspend_state state,
 			       enum igt_suspend_test test)
@@ -442,6 +453,10 @@ test_suspend_resume_hpd_common(data_t *data, enum igt_suspend_state state,
 	igt_cleanup_hotplug(mon);
 }
 
+static const char test_suspend_resume_edid_change_desc[] =
+	"Simulate a screen being unplugged and another screen being plugged "
+	"during suspend, check that a uevent is sent and connector status is "
+	"updated";
 static void
 test_suspend_resume_edid_change(data_t *data, struct chamelium_port *port,
 				enum igt_suspend_state state,
@@ -600,6 +615,10 @@ static bool are_fallback_modes(const drmModeModeInfo *modes, size_t modes_len)
 	return modes[0].hdisplay <= 1024 && modes[0].vdisplay <= 768;
 }
 
+static const char test_link_status_desc[] =
+	"Simulate a series of link failures, check we get a uevent each time "
+	"with the link-status property set to BAD and the list of modes "
+	"shrinks (or stays the same), until we reach fallback modes";
 static void
 test_link_status(data_t *data, struct chamelium_port *port)
 {
@@ -812,6 +831,9 @@ static void do_test_display(data_t *data, struct chamelium_port *port,
 	igt_remove_fb(data->drm_fd, &fb);
 }
 
+static const char test_display_one_mode_desc[] =
+	"Pick the first mode of the IGT base EDID, display and capture a few "
+	"frames, then check captured frames are correct";
 static void test_display_one_mode(data_t *data, struct chamelium_port *port,
 				  uint32_t fourcc, enum chamelium_check check,
 				  int count)
@@ -842,6 +864,9 @@ static void test_display_one_mode(data_t *data, struct chamelium_port *port,
 	drmModeFreeConnector(connector);
 }
 
+static const char test_display_all_modes_desc[] =
+	"For each mode of the IGT base EDID, display and capture a few "
+	"frames, then check captured frames are correct";
 static void test_display_all_modes(data_t *data, struct chamelium_port *port,
 				   uint32_t fourcc, enum chamelium_check check,
 				   int count)
@@ -876,6 +901,10 @@ static void test_display_all_modes(data_t *data, struct chamelium_port *port,
 	drmModeFreeConnector(connector);
 }
 
+static const char test_display_frame_dump_desc[] =
+	"For each mode of the IGT base EDID, display and capture a few "
+	"frames, then check captured frames are pixel-by-pixel equal to "
+	"sent frames";
 static void
 test_display_frame_dump(data_t *data, struct chamelium_port *port)
 {
@@ -983,6 +1012,9 @@ static void check_mode(struct chamelium *chamelium, struct chamelium_port *port,
 	igt_assert(video_params.vsync_polarity == mode_vsync_polarity);
 }
 
+static const char test_mode_timings_desc[] =
+	"For each mode of the IGT base EDID, perform a modeset and check the "
+	"mode detected by the Chamelium receiver matches the mode we set";
 static void test_mode_timings(data_t *data, struct chamelium_port *port)
 {
 	igt_output_t *output;
@@ -1113,6 +1145,10 @@ static const struct edid *get_aspect_ratio_edid(void)
 	return edid;
 }
 
+static const char test_display_aspect_ratio_desc[] =
+	"Pick a mode with a picture aspect-ratio, capture AVI InfoFrames and "
+	"check the InfoFrame correctly includes the aspect-ratio and VIC we "
+	"requested";
 static void test_display_aspect_ratio(data_t *data, struct chamelium_port *port)
 {
 	igt_output_t *output;
@@ -1825,6 +1861,9 @@ static bool check_audio_configuration(struct alsa *alsa, snd_pcm_format_t format
 	return true;
 }
 
+static const char test_display_audio_desc[] =
+	"Playback various audio signals with various audio formats/rates, "
+	"capture them and check they are correct";
 static void
 test_display_audio(data_t *data, struct chamelium_port *port,
 		   const char *audio_device, enum test_edid edid)
@@ -1914,6 +1953,9 @@ test_display_audio(data_t *data, struct chamelium_port *port,
 	free(alsa);
 }
 
+static const char test_display_audio_edid_desc[] =
+	"Plug a connector with an EDID suitable for audio, check ALSA's "
+	"EDID-Like Data reports the correct audio parameters";
 static void
 test_display_audio_edid(data_t *data, struct chamelium_port *port,
 			enum test_edid edid)
@@ -2327,6 +2369,9 @@ static void prepare_randomized_plane(data_t *data,
 	igt_remove_fb(data->drm_fd, &pattern_fb);
 }
 
+static const char test_display_planes_random_desc[] =
+	"Setup a few overlay planes with random parameters, capture the frame "
+	"and check it's correct";
 static void test_display_planes_random(data_t *data,
 				       struct chamelium_port *port,
 				       enum chamelium_check check)
@@ -2460,6 +2505,8 @@ static void test_display_planes_random(data_t *data,
 	igt_remove_fb(data->drm_fd, &result_fb);
 }
 
+static const char test_hpd_without_ddc_desc[] =
+	"Disable DDC on a VGA connector, check we still get a uevent on hotplug";
 static void
 test_hpd_without_ddc(data_t *data, struct chamelium_port *port)
 {
@@ -2480,6 +2527,9 @@ test_hpd_without_ddc(data_t *data, struct chamelium_port *port)
 	igt_cleanup_hotplug(mon);
 }
 
+static const char test_hpd_storm_detect_desc[] =
+	"Trigger a series of hotplugs in a very small timeframe to simulate a"
+	"bad cable, check the kernel falls back to polling";
 static void
 test_hpd_storm_detect(data_t *data, struct chamelium_port *port, int width)
 {
@@ -2508,6 +2558,9 @@ test_hpd_storm_detect(data_t *data, struct chamelium_port *port, int width)
 	igt_hpd_storm_reset(data->drm_fd);
 }
 
+static const char test_hpd_storm_disable_desc[] =
+	"Disable HPD storm detection, trigger a storm and check the kernel "
+	"doesn't detect one";
 static void
 test_hpd_storm_disable(data_t *data, struct chamelium_port *port, int width)
 {
@@ -2552,6 +2605,7 @@ static const struct edid *get_edid(enum test_edid edid)
 
 static data_t data;
 
+IGT_TEST_DESCRIPTION("Tests requiring a Chamelium board");
 igt_main
 {
 	struct chamelium_port *port;
@@ -2580,46 +2634,56 @@ igt_main
 		igt_require(data.display.is_atomic);
 	}
 
+	igt_describe("DisplayPort tests");
 	igt_subtest_group {
 		igt_fixture {
 			require_connector_present(
 			    &data, DRM_MODE_CONNECTOR_DisplayPort);
 		}
 
+		igt_describe(test_basic_hotplug_desc);
 		connector_subtest("dp-hpd", DisplayPort)
 			test_basic_hotplug(&data, port,
 					   HPD_TOGGLE_COUNT_DP_HDMI);
 
+		igt_describe(test_basic_hotplug_desc);
 		connector_subtest("dp-hpd-fast", DisplayPort)
 			test_basic_hotplug(&data, port,
 					   HPD_TOGGLE_COUNT_FAST);
 
+		igt_describe(test_edid_read_desc);
 		connector_subtest("dp-edid-read", DisplayPort) {
 			test_edid_read(&data, port, TEST_EDID_BASE);
 			test_edid_read(&data, port, TEST_EDID_ALT);
 		}
 
+		igt_describe(test_suspend_resume_hpd_desc);
 		connector_subtest("dp-hpd-after-suspend", DisplayPort)
 			test_suspend_resume_hpd(&data, port,
 						SUSPEND_STATE_MEM,
 						SUSPEND_TEST_NONE);
 
+		igt_describe(test_suspend_resume_hpd_desc);
 		connector_subtest("dp-hpd-after-hibernate", DisplayPort)
 			test_suspend_resume_hpd(&data, port,
 						SUSPEND_STATE_DISK,
 						SUSPEND_TEST_DEVICES);
 
+		igt_describe(test_hpd_storm_detect_desc);
 		connector_subtest("dp-hpd-storm", DisplayPort)
 			test_hpd_storm_detect(&data, port,
 					      HPD_STORM_PULSE_INTERVAL_DP);
 
+		igt_describe(test_hpd_storm_disable_desc);
 		connector_subtest("dp-hpd-storm-disable", DisplayPort)
 			test_hpd_storm_disable(&data, port,
 					       HPD_STORM_PULSE_INTERVAL_DP);
 
+		igt_describe(test_link_status_desc);
 		connector_subtest("dp-link-status", DisplayPort)
 			test_link_status(&data, port);
 
+		igt_describe(test_suspend_resume_edid_change_desc);
 		connector_subtest("dp-edid-change-during-suspend", DisplayPort)
 			test_suspend_resume_edid_change(&data, port,
 							SUSPEND_STATE_MEM,
@@ -2627,6 +2691,7 @@ igt_main
 							TEST_EDID_BASE,
 							TEST_EDID_ALT);
 
+		igt_describe(test_suspend_resume_edid_change_desc);
 		connector_subtest("dp-edid-change-during-hibernate", DisplayPort)
 			test_suspend_resume_edid_change(&data, port,
 							SUSPEND_STATE_DISK,
@@ -2634,70 +2699,86 @@ igt_main
 							TEST_EDID_BASE,
 							TEST_EDID_ALT);
 
+		igt_describe(test_display_all_modes_desc);
 		connector_subtest("dp-crc-single", DisplayPort)
 			test_display_all_modes(&data, port, DRM_FORMAT_XRGB8888,
 					       CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("dp-crc-fast", DisplayPort)
 			test_display_one_mode(&data, port, DRM_FORMAT_XRGB8888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_all_modes_desc);
 		connector_subtest("dp-crc-multiple", DisplayPort)
 			test_display_all_modes(&data, port, DRM_FORMAT_XRGB8888,
 					       CHAMELIUM_CHECK_CRC, 3);
 
+		igt_describe(test_display_frame_dump_desc);
 		connector_subtest("dp-frame-dump", DisplayPort)
 			test_display_frame_dump(&data, port);
 
+		igt_describe(test_mode_timings_desc);
 		connector_subtest("dp-mode-timings", DisplayPort)
 			test_mode_timings(&data, port);
 
+		igt_describe(test_display_audio_desc);
 		connector_subtest("dp-audio", DisplayPort)
 			test_display_audio(&data, port, "HDMI",
 					   TEST_EDID_DP_AUDIO);
 
+		igt_describe(test_display_audio_edid_desc);
 		connector_subtest("dp-audio-edid", DisplayPort)
 			test_display_audio_edid(&data, port,
 						TEST_EDID_DP_AUDIO);
 	}
 
+	igt_describe("HDMI tests");
 	igt_subtest_group {
 		igt_fixture {
 			require_connector_present(
 			    &data, DRM_MODE_CONNECTOR_HDMIA);
 		}
 
+		igt_describe(test_basic_hotplug_desc);
 		connector_subtest("hdmi-hpd", HDMIA)
 			test_basic_hotplug(&data, port,
 					   HPD_TOGGLE_COUNT_DP_HDMI);
 
+		igt_describe(test_basic_hotplug_desc);
 		connector_subtest("hdmi-hpd-fast", HDMIA)
 			test_basic_hotplug(&data, port,
 					   HPD_TOGGLE_COUNT_FAST);
 
+		igt_describe(test_edid_read_desc);
 		connector_subtest("hdmi-edid-read", HDMIA) {
 			test_edid_read(&data, port, TEST_EDID_BASE);
 			test_edid_read(&data, port, TEST_EDID_ALT);
 		}
 
+		igt_describe(test_suspend_resume_hpd_desc);
 		connector_subtest("hdmi-hpd-after-suspend", HDMIA)
 			test_suspend_resume_hpd(&data, port,
 						SUSPEND_STATE_MEM,
 						SUSPEND_TEST_NONE);
 
+		igt_describe(test_suspend_resume_hpd_desc);
 		connector_subtest("hdmi-hpd-after-hibernate", HDMIA)
 			test_suspend_resume_hpd(&data, port,
 						SUSPEND_STATE_DISK,
 						SUSPEND_TEST_DEVICES);
 
+		igt_describe(test_hpd_storm_detect_desc);
 		connector_subtest("hdmi-hpd-storm", HDMIA)
 			test_hpd_storm_detect(&data, port,
 					      HPD_STORM_PULSE_INTERVAL_HDMI);
 
+		igt_describe(test_hpd_storm_disable_desc);
 		connector_subtest("hdmi-hpd-storm-disable", HDMIA)
 			test_hpd_storm_disable(&data, port,
 					       HPD_STORM_PULSE_INTERVAL_HDMI);
 
+		igt_describe(test_suspend_resume_edid_change_desc);
 		connector_subtest("hdmi-edid-change-during-suspend", HDMIA)
 			test_suspend_resume_edid_change(&data, port,
 							SUSPEND_STATE_MEM,
@@ -2705,6 +2786,7 @@ igt_main
 							TEST_EDID_BASE,
 							TEST_EDID_ALT);
 
+		igt_describe(test_suspend_resume_edid_change_desc);
 		connector_subtest("hdmi-edid-change-during-hibernate", HDMIA)
 			test_suspend_resume_edid_change(&data, port,
 							SUSPEND_STATE_DISK,
@@ -2712,157 +2794,196 @@ igt_main
 							TEST_EDID_BASE,
 							TEST_EDID_ALT);
 
+		igt_describe(test_display_all_modes_desc);
 		connector_subtest("hdmi-crc-single", HDMIA)
 			test_display_all_modes(&data, port, DRM_FORMAT_XRGB8888,
 					       CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-fast", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_XRGB8888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_all_modes_desc);
 		connector_subtest("hdmi-crc-multiple", HDMIA)
 			test_display_all_modes(&data, port, DRM_FORMAT_XRGB8888,
 					       CHAMELIUM_CHECK_CRC, 3);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-argb8888", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_ARGB8888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-abgr8888", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_ABGR8888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-xrgb8888", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_XRGB8888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-xbgr8888", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_XBGR8888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-rgb888", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_RGB888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-bgr888", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_BGR888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-rgb565", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_RGB565,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-bgr565", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_BGR565,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-argb1555", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_ARGB1555,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-xrgb1555", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_XRGB1555,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_planes_random_desc);
 		connector_subtest("hdmi-crc-planes-random", HDMIA)
 			test_display_planes_random(&data, port,
 						   CHAMELIUM_CHECK_CRC);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-nv12", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_NV12,
 					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-nv16", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_NV16,
 					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-nv21", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_NV21,
 					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-nv61", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_NV61,
 					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-yu12", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_YUV420,
 					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-yu16", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_YUV422,
 					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-yv12", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_YVU420,
 					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-yv16", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_YVU422,
 					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
 
+		igt_describe(test_display_planes_random_desc);
 		connector_subtest("hdmi-cmp-planes-random", HDMIA)
 			test_display_planes_random(&data, port,
 						   CHAMELIUM_CHECK_CHECKERBOARD);
 
+		igt_describe(test_display_frame_dump_desc);
 		connector_subtest("hdmi-frame-dump", HDMIA)
 			test_display_frame_dump(&data, port);
 
+		igt_describe(test_mode_timings_desc);
 		connector_subtest("hdmi-mode-timings", HDMIA)
 			test_mode_timings(&data, port);
 
+		igt_describe(test_display_audio_desc);
 		connector_subtest("hdmi-audio", HDMIA)
 			test_display_audio(&data, port, "HDMI",
 					   TEST_EDID_HDMI_AUDIO);
 
+		igt_describe(test_display_audio_edid_desc);
 		connector_subtest("hdmi-audio-edid", HDMIA)
 			test_display_audio_edid(&data, port,
 						TEST_EDID_HDMI_AUDIO);
 
+		igt_describe(test_display_aspect_ratio_desc);
 		connector_subtest("hdmi-aspect-ratio", HDMIA)
 			test_display_aspect_ratio(&data, port);
 	}
 
+	igt_describe("VGA tests");
 	igt_subtest_group {
 		igt_fixture {
 			require_connector_present(
 			    &data, DRM_MODE_CONNECTOR_VGA);
 		}
 
+		igt_describe(test_basic_hotplug_desc);
 		connector_subtest("vga-hpd", VGA)
 			test_basic_hotplug(&data, port, HPD_TOGGLE_COUNT_VGA);
 
+		igt_describe(test_basic_hotplug_desc);
 		connector_subtest("vga-hpd-fast", VGA)
 			test_basic_hotplug(&data, port, HPD_TOGGLE_COUNT_FAST);
 
+		igt_describe(test_edid_read_desc);
 		connector_subtest("vga-edid-read", VGA) {
 			test_edid_read(&data, port, TEST_EDID_BASE);
 			test_edid_read(&data, port, TEST_EDID_ALT);
 		}
 
+		igt_describe(test_suspend_resume_hpd_desc);
 		connector_subtest("vga-hpd-after-suspend", VGA)
 			test_suspend_resume_hpd(&data, port,
 						SUSPEND_STATE_MEM,
 						SUSPEND_TEST_NONE);
 
+		igt_describe(test_suspend_resume_hpd_desc);
 		connector_subtest("vga-hpd-after-hibernate", VGA)
 			test_suspend_resume_hpd(&data, port,
 						SUSPEND_STATE_DISK,
 						SUSPEND_TEST_DEVICES);
 
+		igt_describe(test_hpd_without_ddc_desc);
 		connector_subtest("vga-hpd-without-ddc", VGA)
 			test_hpd_without_ddc(&data, port);
 
+		igt_describe(test_display_all_modes_desc);
 		connector_subtest("vga-frame-dump", VGA)
 			test_display_all_modes(&data, port, DRM_FORMAT_XRGB8888,
 					       CHAMELIUM_CHECK_ANALOG, 1);
 	}
 
+	igt_describe("Tests that operate on all connectors");
 	igt_subtest_group {
+		igt_describe(test_suspend_resume_hpd_common_desc);
 		igt_subtest("common-hpd-after-suspend")
 			test_suspend_resume_hpd_common(&data,
 						       SUSPEND_STATE_MEM,
 						       SUSPEND_TEST_NONE);
 
+		igt_describe(test_suspend_resume_hpd_common_desc);
 		igt_subtest("common-hpd-after-hibernate")
 			test_suspend_resume_hpd_common(&data,
 						       SUSPEND_STATE_DISK,

--
2.23.0

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

#1 lore raw

[igt-dev] ✓ Fi.CI.BAT: success for tests/kms_chamelium: add test descriptions

== Series Details ==

== Series Details ==

Series: tests/kms_chamelium: add test descriptions
URL : https://patchwork.freedesktop.org/series/66284/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_6838 -> IGTPW_3421
====================================================

Summary
-------

**SUCCESS**

No regressions found.

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

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

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

### IGT changes ###

#### Issues hit ####

* igt@kms_chamelium@hdmi-hpd-fast:
- fi-kbl-7500u: [PASS][1] -> [FAIL][2] ([fdo#111407])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-kbl-7500u/igt@[email protected]
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/fi-kbl-7500u/igt@[email protected]

#### Possible fixes ####

* igt@gem_mmap_gtt@basic:
- fi-glk-dsi: [INCOMPLETE][3] ([fdo#103359] / [k.org#198133]) -> [PASS][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-glk-dsi/igt@[email protected]
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/fi-glk-dsi/igt@[email protected]

* igt@kms_busy@basic-flip-c:
- fi-skl-6770hq: [SKIP][5] ([fdo#109271] / [fdo#109278]) -> [PASS][6] +2 similar issues
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-skl-6770hq/igt@[email protected]
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/fi-skl-6770hq/igt@[email protected]

* igt@kms_chamelium@dp-edid-read:
- fi-kbl-7500u: [WARN][7] ([fdo#109483]) -> [PASS][8]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-kbl-7500u/igt@[email protected]
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/fi-kbl-7500u/igt@[email protected]

* igt@kms_flip@basic-flip-vs-dpms:
- fi-skl-6770hq: [SKIP][9] ([fdo#109271]) -> [PASS][10] +23 similar issues
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-skl-6770hq/igt@[email protected]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/fi-skl-6770hq/igt@[email protected]

* igt@kms_frontbuffer_tracking@basic:
- fi-hsw-peppy: [DMESG-WARN][11] ([fdo#102614]) -> [PASS][12]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-hsw-peppy/igt@[email protected]
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/fi-hsw-peppy/igt@[email protected]
- fi-icl-u2: [FAIL][13] ([fdo#103167]) -> [PASS][14]
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-icl-u2/igt@[email protected]
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/fi-icl-u2/igt@[email protected]

* igt@vgem_basic@debugfs:
- fi-icl-u3: [DMESG-WARN][15] ([fdo#107724]) -> [PASS][16]
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-icl-u3/igt@[email protected]
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/fi-icl-u3/igt@[email protected]

[fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103359]: https://bugs.freedesktop.org/show_bug.cgi?id=103359
[fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
[fdo#109483]: https://bugs.freedesktop.org/show_bug.cgi?id=109483
[fdo#111407]: https://bugs.freedesktop.org/show_bug.cgi?id=111407
[k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133

Participating hosts (53 -> 47)
------------------------------

Additional (1): fi-pnv-d510
Missing (7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-icl-y fi-byt-clapper fi-bdw-samus

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

* CI: CI-20190529 -> None
* IGT: IGT_5171 -> IGTPW_3421

CI-20190529: 20190529
CI_DRM_6838: 8e907b7591b620dba402c7ada493a31ca0320c99 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_3421: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/
IGT_5171: 1911564805fe454919e8a5846534a0c1ef376a33 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

#2 lore raw

[igt-dev] ✓ Fi.CI.IGT: success for tests/kms_chamelium: add test descriptions

In reply to Simon Ser
== Series Details ==

== Series Details ==

Series: tests/kms_chamelium: add test descriptions
URL : https://patchwork.freedesktop.org/series/66284/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_6838_full -> IGTPW_3421_full
====================================================

Summary
-------

**SUCCESS**

No regressions found.

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

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

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

### IGT changes ###

#### Issues hit ####

* igt@gem_ctx_shared@q-in-order-bsd2:
- shard-iclb: [PASS][1] -> [SKIP][2] ([fdo#109276]) +14 similar issues
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb1/igt@[email protected]
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-iclb6/igt@[email protected]

* igt@gem_exec_schedule@independent-bsd:
- shard-iclb: [PASS][3] -> [SKIP][4] ([fdo#111325]) +1 similar issue
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb6/igt@[email protected]
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-iclb2/igt@[email protected]

* igt@gem_workarounds@suspend-resume:
- shard-apl: [PASS][5] -> [DMESG-WARN][6] ([fdo#108566]) +10 similar issues
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-apl8/igt@[email protected]
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-apl7/igt@[email protected]

* igt@i915_pm_backlight@fade_with_suspend:
- shard-iclb: [PASS][7] -> [FAIL][8] ([fdo#103375])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb8/igt@i915_pm_backlight@fade_with_suspend.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-iclb4/igt@i915_pm_backlight@fade_with_suspend.html

* igt@i915_pm_rpm@system-suspend-execbuf:
- shard-hsw: [PASS][9] -> [FAIL][10] ([fdo#111548])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw6/igt@[email protected]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-hsw7/igt@[email protected]

* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-blt:
- shard-iclb: [PASS][11] -> [FAIL][12] ([fdo#103167]) +4 similar issues
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb2/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-blt.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-iclb4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-blt.html

* igt@kms_psr@psr2_primary_mmap_cpu:
- shard-iclb: [PASS][13] -> [SKIP][14] ([fdo#109441]) +1 similar issue
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb2/igt@kms_psr@psr2_primary_mmap_cpu.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-iclb4/igt@kms_psr@psr2_primary_mmap_cpu.html

* igt@kms_setmode@basic:
- shard-hsw: [PASS][15] -> [FAIL][16] ([fdo#99912])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw7/igt@[email protected]
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-hsw4/igt@[email protected]

#### Possible fixes ####

* igt@gem_exec_schedule@deep-bsd:
- shard-iclb: [SKIP][17] ([fdo#111325]) -> [PASS][18] +3 similar issues
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb2/igt@[email protected]
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-iclb3/igt@[email protected]

* igt@gem_exec_schedule@independent-bsd1:
- shard-iclb: [SKIP][19] ([fdo#109276]) -> [PASS][20] +12 similar issues
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb8/igt@[email protected]
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-iclb4/igt@[email protected]

* igt@i915_pm_rc6_residency@rc6-accuracy:
- shard-snb: [SKIP][21] ([fdo#109271]) -> [PASS][22]
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-snb4/igt@[email protected]
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-snb6/igt@[email protected]

* igt@i915_pm_rpm@modeset-stress-extra-wait:
- shard-hsw: [FAIL][23] ([fdo#111548]) -> [PASS][24] +3 similar issues
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw2/igt@[email protected]
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-hsw4/igt@[email protected]

* igt@kms_big_fb@x-tiled-16bpp-rotate-180:
- shard-apl: [INCOMPLETE][25] ([fdo#103927]) -> [PASS][26] +3 similar issues
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-apl7/igt@[email protected]
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-apl6/igt@[email protected]

* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move:
- shard-iclb: [FAIL][27] ([fdo#103167]) -> [PASS][28] +5 similar issues
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb7/igt@[email protected]
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-iclb6/igt@[email protected]

* igt@kms_frontbuffer_tracking@fbc-suspend:
- shard-apl: [DMESG-WARN][29] ([fdo#108566]) -> [PASS][30] +2 similar issues
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-apl5/igt@[email protected]
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-apl1/igt@[email protected]

* igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
- shard-snb: [FAIL][31] ([fdo#103375]) -> [PASS][32] +2 similar issues
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-snb7/igt@[email protected]
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-snb4/igt@[email protected]

* igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c:
- shard-hsw: [FAIL][33] ([fdo#103375]) -> [PASS][34] +5 similar issues
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw2/igt@[email protected]
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-hsw4/igt@[email protected]

* igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes:
- shard-kbl: [INCOMPLETE][35] ([fdo#103665]) -> [PASS][36]
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-kbl3/igt@[email protected]
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-kbl3/igt@[email protected]

* igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
- shard-iclb: [INCOMPLETE][37] ([fdo#107713]) -> [PASS][38] +1 similar issue
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb7/igt@[email protected]
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-iclb6/igt@[email protected]

* igt@kms_psr2_su@page_flip:
- shard-iclb: [SKIP][39] ([fdo#109642] / [fdo#111068]) -> [PASS][40]
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb3/igt@kms_psr2_su@page_flip.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-iclb2/igt@kms_psr2_su@page_flip.html

* igt@kms_psr@psr2_sprite_mmap_gtt:
- shard-iclb: [SKIP][41] ([fdo#109441]) -> [PASS][42] +1 similar issue
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb7/igt@kms_psr@psr2_sprite_mmap_gtt.html
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-iclb2/igt@kms_psr@psr2_sprite_mmap_gtt.html

* igt@kms_setmode@basic:
- shard-apl: [FAIL][43] ([fdo#99912]) -> [PASS][44]
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-apl8/igt@[email protected]
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-apl7/igt@[email protected]

* igt@perf_pmu@busy-idle-vcs0:
- shard-apl: [FAIL][45] ([fdo#111545]) -> [PASS][46] +1 similar issue
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-apl3/igt@[email protected]
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-apl8/igt@[email protected]

#### Warnings ####

* igt@gem_ctx_isolation@vcs1-nonpriv:
- shard-iclb: [FAIL][47] ([fdo#111329]) -> [SKIP][48] ([fdo#109276])
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb2/igt@[email protected]
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-iclb3/igt@[email protected]

* igt@gem_mocs_settings@mocs-settings-bsd2:
- shard-iclb: [SKIP][49] ([fdo#109276]) -> [FAIL][50] ([fdo#111330]) +2 similar issues
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb6/igt@[email protected]
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-iclb4/igt@[email protected]

* igt@i915_pm_rpm@modeset-lpsp:
- shard-hsw: [FAIL][51] ([fdo#111548]) -> [SKIP][52] ([fdo#109271])
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw2/igt@[email protected]
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/shard-hsw7/igt@[email protected]

[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
[fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
[fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
[fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
[fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
[fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
[fdo#111325]: https://bugs.freedesktop.org/show_bug.cgi?id=111325
[fdo#111329]: https://bugs.freedesktop.org/show_bug.cgi?id=111329
[fdo#111330]: https://bugs.freedesktop.org/show_bug.cgi?id=111330
[fdo#111545]: https://bugs.freedesktop.org/show_bug.cgi?id=111545
[fdo#111548]: https://bugs.freedesktop.org/show_bug.cgi?id=111548
[fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912

Participating hosts (10 -> 6)
------------------------------

Missing (4): pig-skl-6260u shard-skl pig-hsw-4770r pig-glk-j5005

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

* CI: CI-20190529 -> None
* IGT: IGT_5171 -> IGTPW_3421
* Piglit: piglit_4509 -> None

CI-20190529: 20190529
CI_DRM_6838: 8e907b7591b620dba402c7ada493a31ca0320c99 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_3421: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/
IGT_5171: 1911564805fe454919e8a5846534a0c1ef376a33 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3421/
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

#3 lore raw
In reply to Simon Ser
Quoted 25 lines · Simon Ser

Add test descriptions to all subtest groups and subtests.

Each connector type has its own group, with a different set of subtests. To avoid duplication, descriptions are defined at the test function level.

---
 tests/kms_chamelium.c | 121 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 121 insertions(+)
tests/kms_chamelium.c +3 -0
index 6b6292497cd7..fe3cbe57daf3 100644
@@ -242,6 +242,9 @@ reset_state(data_t *data, struct chamelium_port *port)
 	}
 }
 
+static const char test_basic_hotplug_desc[] =
+	"Check that we get uevents and updated connector status on "
+	"hotplug and unplug";
 static void
 test_basic_hotplug(data_t *data, struct chamelium_port *port, int toggle_count)
 {

tests/kms_chamelium.c static void set_edid(data_t *data, struct chamelium_port *port, · line 297

Quoted 5 lines
tests/kms_chamelium.c +2 -0
@@ -290,6 +293,8 @@ static void set_edid(data_t *data, struct chamelium_port *port,
 	chamelium_port_set_edid(data->chamelium, port, data->edids[edid]);
 }
 
+static const char test_edid_read_desc[] = "Make sure reading a simple EDID "
+					  "gives the correct blob";

Whitespace problem?

Not sure if the description is clear-enough. How about "Make sure the reported EDID is the same as the screen's".

Quoted 46 lines
tests/kms_chamelium.c +14 -0
 static void
 test_edid_read(data_t *data, struct chamelium_port *port, enum test_edid edid)
 {
@@ -400,6 +405,9 @@ try_suspend_resume_hpd(data_t *data, struct chamelium_port *port,
 	}
 }
 
+static const char test_suspend_resume_hpd_desc[] =
+	"Toggle HPD during suspend, check that uevents are sent and connector "
+	"status is updated";
 static void
 test_suspend_resume_hpd(data_t *data, struct chamelium_port *port,
 			enum igt_suspend_state state,
@@ -418,6 +426,9 @@ test_suspend_resume_hpd(data_t *data, struct chamelium_port *port,
 	igt_cleanup_hotplug(mon);
 }
 
+static const char test_suspend_resume_hpd_common_desc[] =
+	"Toggle HPD during suspend on all connectors, check that uevents are "
+	"sent and connector status is updated";
 static void
 test_suspend_resume_hpd_common(data_t *data, enum igt_suspend_state state,
 			       enum igt_suspend_test test)
@@ -442,6 +453,10 @@ test_suspend_resume_hpd_common(data_t *data, enum igt_suspend_state state,
 	igt_cleanup_hotplug(mon);
 }
 
+static const char test_suspend_resume_edid_change_desc[] =
+	"Simulate a screen being unplugged and another screen being plugged "
+	"during suspend, check that a uevent is sent and connector status is "
+	"updated";
 static void
 test_suspend_resume_edid_change(data_t *data, struct chamelium_port *port,
 				enum igt_suspend_state state,
@@ -600,6 +615,10 @@ static bool are_fallback_modes(const drmModeModeInfo *modes, size_t modes_len)
 	return modes[0].hdisplay <= 1024 && modes[0].vdisplay <= 768;
 }
 
+static const char test_link_status_desc[] =
+	"Simulate a series of link failures, check we get a uevent each time "
+	"with the link-status property set to BAD and the list of modes "
+	"shrinks (or stays the same), until we reach fallback modes";
 static void
 test_link_status(data_t *data, struct chamelium_port *port)
 {

tests/kms_chamelium.c static void do_test_display(data_t *data, struct chamelium_port *port, · line 836

Quoted 6 lines
tests/kms_chamelium.c +3 -0
@@ -812,6 +831,9 @@ static void do_test_display(data_t *data, struct chamelium_port *port,
 	igt_remove_fb(data->drm_fd, &fb);
 }
 
+static const char test_display_one_mode_desc[] =
+	"Pick the first mode of the IGT base EDID, display and capture a few "
+	"frames, then check captured frames are correct";

s/correct/have the expected CRC/.

tests/kms_chamelium.c static void test_display_one_mode(data_t *data, struct chamelium_port *port, · line 869

Quoted 10 lines
tests/kms_chamelium.c +3 -0
 static void test_display_one_mode(data_t *data, struct chamelium_port *port,
 				  uint32_t fourcc, enum chamelium_check check,
 				  int count)
@@ -842,6 +864,9 @@ static void test_display_one_mode(data_t *data, struct chamelium_port *port,
 	drmModeFreeConnector(connector);
 }
 
+static const char test_display_all_modes_desc[] =
+	"For each mode of the IGT base EDID, display and capture a few "
+	"frames, then check captured frames are correct";

Ditto.

tests/kms_chamelium.c static void test_display_all_modes(data_t *data, struct chamelium_port *port, · line 907

Quoted 11 lines
tests/kms_chamelium.c +4 -0
 static void test_display_all_modes(data_t *data, struct chamelium_port *port,
 				   uint32_t fourcc, enum chamelium_check check,
 				   int count)
@@ -876,6 +901,10 @@ static void test_display_all_modes(data_t *data, struct chamelium_port *port,
 	drmModeFreeConnector(connector);
 }
 
+static const char test_display_frame_dump_desc[] =
+	"For each mode of the IGT base EDID, display and capture a few "
+	"frames, then check captured frames are pixel-by-pixel equal to "
+	"sent frames";

"then download the frame and compare them bit-by-bit to the sent frames."

Quoted 14 lines
tests/kms_chamelium.c +3 -0
 static void
 test_display_frame_dump(data_t *data, struct chamelium_port *port)
 {
@@ -983,6 +1012,9 @@ static void check_mode(struct chamelium *chamelium, struct chamelium_port *port,
 	igt_assert(video_params.vsync_polarity == mode_vsync_polarity);
 }
 
+static const char test_mode_timings_desc[] =
+	"For each mode of the IGT base EDID, perform a modeset and check the "
+	"mode detected by the Chamelium receiver matches the mode we set";
 static void test_mode_timings(data_t *data, struct chamelium_port *port)
 {
 	igt_output_t *output;

tests/kms_chamelium.c static const struct edid *get_aspect_ratio_edid(void) · line 1151

Quoted 7 lines
tests/kms_chamelium.c +4 -0
@@ -1113,6 +1145,10 @@ static const struct edid *get_aspect_ratio_edid(void)
 	return edid;
 }
 
+static const char test_display_aspect_ratio_desc[] =
+	"Pick a mode with a picture aspect-ratio, capture AVI InfoFrames and "
+	"check the InfoFrame correctly includes the aspect-ratio and VIC we "
+	"requested";

That might be a bit too much of details. How about "includes the relevant fields"?

Quoted 24 lines
tests/kms_chamelium.c +6 -0
 static void test_display_aspect_ratio(data_t *data, struct chamelium_port *port)
 {
 	igt_output_t *output;
@@ -1825,6 +1861,9 @@ static bool check_audio_configuration(struct alsa *alsa, snd_pcm_format_t format
 	return true;
 }
 
+static const char test_display_audio_desc[] =
+	"Playback various audio signals with various audio formats/rates, "
+	"capture them and check they are correct";
 static void
 test_display_audio(data_t *data, struct chamelium_port *port,
 		   const char *audio_device, enum test_edid edid)
@@ -1914,6 +1953,9 @@ test_display_audio(data_t *data, struct chamelium_port *port,
 	free(alsa);
 }
 
+static const char test_display_audio_edid_desc[] =
+	"Plug a connector with an EDID suitable for audio, check ALSA's "
+	"EDID-Like Data reports the correct audio parameters";
 static void
 test_display_audio_edid(data_t *data, struct chamelium_port *port,
 			enum test_edid edid)

tests/kms_chamelium.c static void prepare_randomized_plane(data_t *data, · line 2374

Quoted 6 lines
tests/kms_chamelium.c +3 -0
@@ -2327,6 +2369,9 @@ static void prepare_randomized_plane(data_t *data,
 	igt_remove_fb(data->drm_fd, &pattern_fb);
 }
 
+static const char test_display_planes_random_desc[] =
+	"Setup a few overlay planes with random parameters, capture the frame "
+	"and check it's correct";

"and check it matches the expected output."?

Quoted 13 lines
tests/kms_chamelium.c +2 -0
 static void test_display_planes_random(data_t *data,
 				       struct chamelium_port *port,
 				       enum chamelium_check check)
@@ -2460,6 +2505,8 @@ static void test_display_planes_random(data_t *data,
 	igt_remove_fb(data->drm_fd, &result_fb);
 }
 
+static const char test_hpd_without_ddc_desc[] =
+	"Disable DDC on a VGA connector, check we still get a uevent on hotplug";
 static void
 test_hpd_without_ddc(data_t *data, struct chamelium_port *port)
 {

tests/kms_chamelium.c test_hpd_without_ddc(data_t *data, struct chamelium_port *port) · line 2532

Quoted 6 lines
tests/kms_chamelium.c +3 -0
@@ -2480,6 +2527,9 @@ test_hpd_without_ddc(data_t *data, struct chamelium_port *port)
 	igt_cleanup_hotplug(mon);
 }
 
+static const char test_hpd_storm_detect_desc[] =
+	"Trigger a series of hotplugs in a very small timeframe to simulate a"
+	"bad cable, check the kernel falls back to polling";

"falls back to polling to avoid an irq storm"

Thanks a lot for doing this! My comments are merely proposals for improvements, so feel free to land put my R-b even without changing anything.

Martin

Quoted 379 lines
tests/kms_chamelium.c +71 -1
 static void
 test_hpd_storm_detect(data_t *data, struct chamelium_port *port, int width)
 {
@@ -2508,6 +2558,9 @@ test_hpd_storm_detect(data_t *data, struct chamelium_port *port, int width)
 	igt_hpd_storm_reset(data->drm_fd);
 }
 
+static const char test_hpd_storm_disable_desc[] =
+	"Disable HPD storm detection, trigger a storm and check the kernel "
+	"doesn't detect one";
 static void
 test_hpd_storm_disable(data_t *data, struct chamelium_port *port, int width)
 {
@@ -2552,6 +2605,7 @@ static const struct edid *get_edid(enum test_edid edid)
 
 static data_t data;
 
+IGT_TEST_DESCRIPTION("Tests requiring a Chamelium board");
 igt_main
 {
 	struct chamelium_port *port;
@@ -2580,46 +2634,56 @@ igt_main
 		igt_require(data.display.is_atomic);
 	}
 
+	igt_describe("DisplayPort tests");
 	igt_subtest_group {
 		igt_fixture {
 			require_connector_present(
 			    &data, DRM_MODE_CONNECTOR_DisplayPort);
 		}
 
+		igt_describe(test_basic_hotplug_desc);
 		connector_subtest("dp-hpd", DisplayPort)
 			test_basic_hotplug(&data, port,
 					   HPD_TOGGLE_COUNT_DP_HDMI);
 
+		igt_describe(test_basic_hotplug_desc);
 		connector_subtest("dp-hpd-fast", DisplayPort)
 			test_basic_hotplug(&data, port,
 					   HPD_TOGGLE_COUNT_FAST);
 
+		igt_describe(test_edid_read_desc);
 		connector_subtest("dp-edid-read", DisplayPort) {
 			test_edid_read(&data, port, TEST_EDID_BASE);
 			test_edid_read(&data, port, TEST_EDID_ALT);
 		}
 
+		igt_describe(test_suspend_resume_hpd_desc);
 		connector_subtest("dp-hpd-after-suspend", DisplayPort)
 			test_suspend_resume_hpd(&data, port,
 						SUSPEND_STATE_MEM,
 						SUSPEND_TEST_NONE);
 
+		igt_describe(test_suspend_resume_hpd_desc);
 		connector_subtest("dp-hpd-after-hibernate", DisplayPort)
 			test_suspend_resume_hpd(&data, port,
 						SUSPEND_STATE_DISK,
 						SUSPEND_TEST_DEVICES);
 
+		igt_describe(test_hpd_storm_detect_desc);
 		connector_subtest("dp-hpd-storm", DisplayPort)
 			test_hpd_storm_detect(&data, port,
 					      HPD_STORM_PULSE_INTERVAL_DP);
 
+		igt_describe(test_hpd_storm_disable_desc);
 		connector_subtest("dp-hpd-storm-disable", DisplayPort)
 			test_hpd_storm_disable(&data, port,
 					       HPD_STORM_PULSE_INTERVAL_DP);
 
+		igt_describe(test_link_status_desc);
 		connector_subtest("dp-link-status", DisplayPort)
 			test_link_status(&data, port);
 
+		igt_describe(test_suspend_resume_edid_change_desc);
 		connector_subtest("dp-edid-change-during-suspend", DisplayPort)
 			test_suspend_resume_edid_change(&data, port,
 							SUSPEND_STATE_MEM,
@@ -2627,6 +2691,7 @@ igt_main
 							TEST_EDID_BASE,
 							TEST_EDID_ALT);
 
+		igt_describe(test_suspend_resume_edid_change_desc);
 		connector_subtest("dp-edid-change-during-hibernate", DisplayPort)
 			test_suspend_resume_edid_change(&data, port,
 							SUSPEND_STATE_DISK,
@@ -2634,70 +2699,86 @@ igt_main
 							TEST_EDID_BASE,
 							TEST_EDID_ALT);
 
+		igt_describe(test_display_all_modes_desc);
 		connector_subtest("dp-crc-single", DisplayPort)
 			test_display_all_modes(&data, port, DRM_FORMAT_XRGB8888,
 					       CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("dp-crc-fast", DisplayPort)
 			test_display_one_mode(&data, port, DRM_FORMAT_XRGB8888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_all_modes_desc);
 		connector_subtest("dp-crc-multiple", DisplayPort)
 			test_display_all_modes(&data, port, DRM_FORMAT_XRGB8888,
 					       CHAMELIUM_CHECK_CRC, 3);
 
+		igt_describe(test_display_frame_dump_desc);
 		connector_subtest("dp-frame-dump", DisplayPort)
 			test_display_frame_dump(&data, port);
 
+		igt_describe(test_mode_timings_desc);
 		connector_subtest("dp-mode-timings", DisplayPort)
 			test_mode_timings(&data, port);
 
+		igt_describe(test_display_audio_desc);
 		connector_subtest("dp-audio", DisplayPort)
 			test_display_audio(&data, port, "HDMI",
 					   TEST_EDID_DP_AUDIO);
 
+		igt_describe(test_display_audio_edid_desc);
 		connector_subtest("dp-audio-edid", DisplayPort)
 			test_display_audio_edid(&data, port,
 						TEST_EDID_DP_AUDIO);
 	}
 
+	igt_describe("HDMI tests");
 	igt_subtest_group {
 		igt_fixture {
 			require_connector_present(
 			    &data, DRM_MODE_CONNECTOR_HDMIA);
 		}
 
+		igt_describe(test_basic_hotplug_desc);
 		connector_subtest("hdmi-hpd", HDMIA)
 			test_basic_hotplug(&data, port,
 					   HPD_TOGGLE_COUNT_DP_HDMI);
 
+		igt_describe(test_basic_hotplug_desc);
 		connector_subtest("hdmi-hpd-fast", HDMIA)
 			test_basic_hotplug(&data, port,
 					   HPD_TOGGLE_COUNT_FAST);
 
+		igt_describe(test_edid_read_desc);
 		connector_subtest("hdmi-edid-read", HDMIA) {
 			test_edid_read(&data, port, TEST_EDID_BASE);
 			test_edid_read(&data, port, TEST_EDID_ALT);
 		}
 
+		igt_describe(test_suspend_resume_hpd_desc);
 		connector_subtest("hdmi-hpd-after-suspend", HDMIA)
 			test_suspend_resume_hpd(&data, port,
 						SUSPEND_STATE_MEM,
 						SUSPEND_TEST_NONE);
 
+		igt_describe(test_suspend_resume_hpd_desc);
 		connector_subtest("hdmi-hpd-after-hibernate", HDMIA)
 			test_suspend_resume_hpd(&data, port,
 						SUSPEND_STATE_DISK,
 						SUSPEND_TEST_DEVICES);
 
+		igt_describe(test_hpd_storm_detect_desc);
 		connector_subtest("hdmi-hpd-storm", HDMIA)
 			test_hpd_storm_detect(&data, port,
 					      HPD_STORM_PULSE_INTERVAL_HDMI);
 
+		igt_describe(test_hpd_storm_disable_desc);
 		connector_subtest("hdmi-hpd-storm-disable", HDMIA)
 			test_hpd_storm_disable(&data, port,
 					       HPD_STORM_PULSE_INTERVAL_HDMI);
 
+		igt_describe(test_suspend_resume_edid_change_desc);
 		connector_subtest("hdmi-edid-change-during-suspend", HDMIA)
 			test_suspend_resume_edid_change(&data, port,
 							SUSPEND_STATE_MEM,
@@ -2705,6 +2786,7 @@ igt_main
 							TEST_EDID_BASE,
 							TEST_EDID_ALT);
 
+		igt_describe(test_suspend_resume_edid_change_desc);
 		connector_subtest("hdmi-edid-change-during-hibernate", HDMIA)
 			test_suspend_resume_edid_change(&data, port,
 							SUSPEND_STATE_DISK,
@@ -2712,157 +2794,196 @@ igt_main
 							TEST_EDID_BASE,
 							TEST_EDID_ALT);
 
+		igt_describe(test_display_all_modes_desc);
 		connector_subtest("hdmi-crc-single", HDMIA)
 			test_display_all_modes(&data, port, DRM_FORMAT_XRGB8888,
 					       CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-fast", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_XRGB8888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_all_modes_desc);
 		connector_subtest("hdmi-crc-multiple", HDMIA)
 			test_display_all_modes(&data, port, DRM_FORMAT_XRGB8888,
 					       CHAMELIUM_CHECK_CRC, 3);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-argb8888", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_ARGB8888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-abgr8888", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_ABGR8888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-xrgb8888", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_XRGB8888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-xbgr8888", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_XBGR8888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-rgb888", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_RGB888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-bgr888", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_BGR888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-rgb565", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_RGB565,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-bgr565", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_BGR565,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-argb1555", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_ARGB1555,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-xrgb1555", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_XRGB1555,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_planes_random_desc);
 		connector_subtest("hdmi-crc-planes-random", HDMIA)
 			test_display_planes_random(&data, port,
 						   CHAMELIUM_CHECK_CRC);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-nv12", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_NV12,
 					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-nv16", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_NV16,
 					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-nv21", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_NV21,
 					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-nv61", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_NV61,
 					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-yu12", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_YUV420,
 					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-yu16", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_YUV422,
 					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-yv12", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_YVU420,
 					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-yv16", HDMIA)
 			test_display_one_mode(&data, port, DRM_FORMAT_YVU422,
 					      CHAMELIUM_CHECK_CHECKERBOARD, 1);
 
+		igt_describe(test_display_planes_random_desc);
 		connector_subtest("hdmi-cmp-planes-random", HDMIA)
 			test_display_planes_random(&data, port,
 						   CHAMELIUM_CHECK_CHECKERBOARD);
 
+		igt_describe(test_display_frame_dump_desc);
 		connector_subtest("hdmi-frame-dump", HDMIA)
 			test_display_frame_dump(&data, port);
 
+		igt_describe(test_mode_timings_desc);
 		connector_subtest("hdmi-mode-timings", HDMIA)
 			test_mode_timings(&data, port);
 
+		igt_describe(test_display_audio_desc);
 		connector_subtest("hdmi-audio", HDMIA)
 			test_display_audio(&data, port, "HDMI",
 					   TEST_EDID_HDMI_AUDIO);
 
+		igt_describe(test_display_audio_edid_desc);
 		connector_subtest("hdmi-audio-edid", HDMIA)
 			test_display_audio_edid(&data, port,
 						TEST_EDID_HDMI_AUDIO);
 
+		igt_describe(test_display_aspect_ratio_desc);
 		connector_subtest("hdmi-aspect-ratio", HDMIA)
 			test_display_aspect_ratio(&data, port);
 	}
 
+	igt_describe("VGA tests");
 	igt_subtest_group {
 		igt_fixture {
 			require_connector_present(
 			    &data, DRM_MODE_CONNECTOR_VGA);
 		}
 
+		igt_describe(test_basic_hotplug_desc);
 		connector_subtest("vga-hpd", VGA)
 			test_basic_hotplug(&data, port, HPD_TOGGLE_COUNT_VGA);
 
+		igt_describe(test_basic_hotplug_desc);
 		connector_subtest("vga-hpd-fast", VGA)
 			test_basic_hotplug(&data, port, HPD_TOGGLE_COUNT_FAST);
 
+		igt_describe(test_edid_read_desc);
 		connector_subtest("vga-edid-read", VGA) {
 			test_edid_read(&data, port, TEST_EDID_BASE);
 			test_edid_read(&data, port, TEST_EDID_ALT);
 		}
 
+		igt_describe(test_suspend_resume_hpd_desc);
 		connector_subtest("vga-hpd-after-suspend", VGA)
 			test_suspend_resume_hpd(&data, port,
 						SUSPEND_STATE_MEM,
 						SUSPEND_TEST_NONE);
 
+		igt_describe(test_suspend_resume_hpd_desc);
 		connector_subtest("vga-hpd-after-hibernate", VGA)
 			test_suspend_resume_hpd(&data, port,
 						SUSPEND_STATE_DISK,
 						SUSPEND_TEST_DEVICES);
 
+		igt_describe(test_hpd_without_ddc_desc);
 		connector_subtest("vga-hpd-without-ddc", VGA)
 			test_hpd_without_ddc(&data, port);
 
+		igt_describe(test_display_all_modes_desc);
 		connector_subtest("vga-frame-dump", VGA)
 			test_display_all_modes(&data, port, DRM_FORMAT_XRGB8888,
 					       CHAMELIUM_CHECK_ANALOG, 1);
 	}
 
+	igt_describe("Tests that operate on all connectors");
 	igt_subtest_group {
+		igt_describe(test_suspend_resume_hpd_common_desc);
 		igt_subtest("common-hpd-after-suspend")
 			test_suspend_resume_hpd_common(&data,
 						       SUSPEND_STATE_MEM,
 						       SUSPEND_TEST_NONE);
 
+		igt_describe(test_suspend_resume_hpd_common_desc);
 		igt_subtest("common-hpd-after-hibernate")
 			test_suspend_resume_hpd_common(&data,
 						       SUSPEND_STATE_DISK,
--
Quoted 2 lines

2.23.0

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

author
#4 lore raw
Quoted 34 lines · Martin Peres
Quoted 32 lines · Simon Ser

Add test descriptions to all subtest groups and subtests.

Each connector type has its own group, with a different set of subtests.
To avoid duplication, descriptions are defined at the test function level.

---
 tests/kms_chamelium.c | 121
++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 121 insertions(+)
tests/kms_chamelium.c +3 -0
index 6b6292497cd7..fe3cbe57daf3 100644
@@ -242,6 +242,9 @@ reset_state(data_t *data, struct chamelium_port
 *port)
 	}
 }
 
+static const char test_basic_hotplug_desc[] =
+	"Check that we get uevents and updated connector status on "
+	"hotplug and unplug";
 static void
 test_basic_hotplug(data_t *data, struct chamelium_port *port, int

toggle_count)
{

tests/kms_chamelium.c +0 -0
@@ -290,6 +293,8 @@ static void set_edid(data_t *data, struct
 chamelium_port *port,
 	chamelium_port_set_edid(data->chamelium, port, data-
Quoted 8 lines

tests/kms_chamelium.c static void set_edid(data_t *data, struct chamelium_port *port, · line 297

Quoted 6 lines
tests/kms_chamelium.c +1 -0
 >edids[edid]);
 }
 
+static const char test_edid_read_desc[] = "Make sure reading a

simple EDID "

tests/kms_chamelium.c +1 -0
+					  "gives the correct blob";

Whitespace problem?

https://sr.ht/kd7t.png

I never understood why. My guess is that the "+" added by git-format- patch and the "> " added when replying break the tabbed alignment.

Anyway, I find aligning things very annoying so this is a good excuse to just format it like other descriptions with a single tab.

Quoted 2 lines

Not sure if the description is clear-enough. How about "Make sure the reported EDID is the same as the screen's".

Good point. Changed to:

"Make sure the EDID exposed by KMS is the same as the screen's"

Quoted 63 lines
Quoted 63 lines

static void
test_edid_read(data_t *data, struct chamelium_port *port, enum
test_edid edid)
{

tests/kms_chamelium.c +2 -0
@@ -400,6 +405,9 @@ try_suspend_resume_hpd(data_t *data, struct
 chamelium_port *port,
 	}
 }
 
+static const char test_suspend_resume_hpd_desc[] =
+	"Toggle HPD during suspend, check that uevents are sent and

connector "

tests/kms_chamelium.c +3 -0
+	"status is updated";
 static void
 test_suspend_resume_hpd(data_t *data, struct chamelium_port *port,
 			enum igt_suspend_state state,
@@ -418,6 +426,9 @@ test_suspend_resume_hpd(data_t *data, struct
 chamelium_port *port,
 	igt_cleanup_hotplug(mon);
 }
 
+static const char test_suspend_resume_hpd_common_desc[] =
+	"Toggle HPD during suspend on all connectors, check that

uevents are "

tests/kms_chamelium.c +1 -0
+	"sent and connector status is updated";
 static void
 test_suspend_resume_hpd_common(data_t *data, enum

igt_suspend_state state,

tests/kms_chamelium.c +2 -0
 			       enum igt_suspend_test test)
@@ -442,6 +453,10 @@ test_suspend_resume_hpd_common(data_t *data,
 enum igt_suspend_state state,
 	igt_cleanup_hotplug(mon);
 }
 
+static const char test_suspend_resume_edid_change_desc[] =
+	"Simulate a screen being unplugged and another screen being

plugged "

tests/kms_chamelium.c +1 -0
+	"during suspend, check that a uevent is sent and connector

status is "

tests/kms_chamelium.c +1 -0
+	"updated";
 static void
 test_suspend_resume_edid_change(data_t *data, struct

chamelium_port *port,

tests/kms_chamelium.c +2 -0
 				enum igt_suspend_state state,
@@ -600,6 +615,10 @@ static bool are_fallback_modes(const
 drmModeModeInfo *modes, size_t modes_len)
 	return modes[0].hdisplay <= 1024 && modes[0].vdisplay <= 768;
 }
 
+static const char test_link_status_desc[] =
+	"Simulate a series of link failures, check we get a uevent each

time "

tests/kms_chamelium.c +1 -0
+	"with the link-status property set to BAD and the list of modes

"

tests/kms_chamelium.c +1 -0
+	"shrinks (or stays the same), until we reach fallback modes";
 static void
 test_link_status(data_t *data, struct chamelium_port *port)
 {
@@ -812,6 +831,9 @@ static void do_test_display(data_t *data,
 struct chamelium_port *port,
 	igt_remove_fb(data->drm_fd, &fb);
 }
 
Quoted 6 lines

tests/kms_chamelium.c

Quoted 4 lines
tests/kms_chamelium.c +2 -0
+static const char test_display_one_mode_desc[] =
+	"Pick the first mode of the IGT base EDID, display and capture

a few "

tests/kms_chamelium.c +1 -0
+	"frames, then check captured frames are correct";

s/correct/have the expected CRC/.

Well, that's not quite right. Some tests check the CRC, some tests download the frame to check it via CHAMELIUM_CHECK_CHECKERBOARD (e.g. hdmi-cmp-nv12).

I didn't want to do more fine-grained descriptions, so I just went with something vague enough.

Quoted 27 lines
Quoted 13 lines

static void test_display_one_mode(data_t *data, struct
chamelium_port *port,
uint32_t fourcc, enum chamelium_check
check,

tests/kms_chamelium.c +2 -0
 				  int count)
@@ -842,6 +864,9 @@ static void test_display_one_mode(data_t *data,
 struct chamelium_port *port,
 	drmModeFreeConnector(connector);
 }
 
+static const char test_display_all_modes_desc[] =
+	"For each mode of the IGT base EDID, display and capture a few

"

tests/kms_chamelium.c

Quoted 1 line
tests/kms_chamelium.c +1 -0
+	"frames, then check captured frames are correct";

Ditto.

Quoted 10 lines

static void test_display_all_modes(data_t *data, struct
chamelium_port *port,
uint32_t fourcc, enum
chamelium_check check,

tests/kms_chamelium.c +0 -0
 				   int count)
@@ -876,6 +901,10 @@ static void test_display_all_modes(data_t
 *data, struct chamelium_port *port,
 	drmModeFreeConnector(connector);
 }
 
Quoted 9 lines

tests/kms_chamelium.c static void test_display_all_modes(data_t *data, struct chamelium_port *port, · line 907

Quoted 6 lines
tests/kms_chamelium.c +2 -0
+static const char test_display_frame_dump_desc[] =
+	"For each mode of the IGT base EDID, display and capture a few

"

tests/kms_chamelium.c +1 -0
+	"frames, then check captured frames are pixel-by-pixel equal to

"

tests/kms_chamelium.c +1 -0
+	"sent frames";

"then download the frame and compare them bit-by-bit to the sent frames."

Ack

Quoted 22 lines
Quoted 22 lines

static void
test_display_frame_dump(data_t *data, struct chamelium_port *port) {

tests/kms_chamelium.c +2 -0
@@ -983,6 +1012,9 @@ static void check_mode(struct chamelium
 *chamelium, struct chamelium_port *port,
 	igt_assert(video_params.vsync_polarity == mode_vsync_polarity);
 }
 
+static const char test_mode_timings_desc[] =
+	"For each mode of the IGT base EDID, perform a modeset and

check the "

tests/kms_chamelium.c +1 -0
+	"mode detected by the Chamelium receiver matches the mode we

set";
static void test_mode_timings(data_t *data, struct chamelium_port
*port)
{

tests/kms_chamelium.c +0 -0
 	igt_output_t *output;
@@ -1113,6 +1145,10 @@ static const struct edid
 *get_aspect_ratio_edid(void)
 	return edid;
 }
 
Quoted 9 lines

tests/kms_chamelium.c static const struct edid *get_aspect_ratio_edid(void) · line 1151

Quoted 6 lines
tests/kms_chamelium.c +2 -0
+static const char test_display_aspect_ratio_desc[] =
+	"Pick a mode with a picture aspect-ratio, capture AVI

InfoFrames and "

tests/kms_chamelium.c +1 -0
+	"check the InfoFrame correctly includes the aspect-ratio and

VIC we "

tests/kms_chamelium.c +1 -0
+	"requested";

That might be a bit too much of details. How about "includes the relevant fields"?

Good point

Quoted 33 lines
Quoted 33 lines

static void test_display_aspect_ratio(data_t *data, struct
chamelium_port *port)
{

tests/kms_chamelium.c +0 -0
 	igt_output_t *output;
@@ -1825,6 +1861,9 @@ static bool check_audio_configuration(struct

alsa *alsa, snd_pcm_format_t format

tests/kms_chamelium.c +2 -0
 	return true;
 }
 
+static const char test_display_audio_desc[] =
+	"Playback various audio signals with various audio

formats/rates, "

tests/kms_chamelium.c +3 -0
+	"capture them and check they are correct";
 static void
 test_display_audio(data_t *data, struct chamelium_port *port,
 		   const char *audio_device, enum test_edid edid)
@@ -1914,6 +1953,9 @@ test_display_audio(data_t *data, struct
 chamelium_port *port,
 	free(alsa);
 }
 
+static const char test_display_audio_edid_desc[] =
+	"Plug a connector with an EDID suitable for audio, check ALSA's

"

tests/kms_chamelium.c +1 -0
+	"EDID-Like Data reports the correct audio parameters";
 static void
 test_display_audio_edid(data_t *data, struct chamelium_port *port,
 			enum test_edid edid)
@@ -2327,6 +2369,9 @@ static void prepare_randomized_plane(data_t
 *data,
 	igt_remove_fb(data->drm_fd, &pattern_fb);
 }
 
Quoted 6 lines

tests/kms_chamelium.c static void prepare_randomized_plane(data_t *data, · line 2374

Quoted 4 lines
tests/kms_chamelium.c +2 -0
+static const char test_display_planes_random_desc[] =
+	"Setup a few overlay planes with random parameters, capture the

frame "

tests/kms_chamelium.c +1 -0
+	"and check it's correct";

"and check it matches the expected output."?

Ack

Quoted 19 lines
Quoted 19 lines

static void test_display_planes_random(data_t *data,

tests/kms_chamelium.c +2 -0
 				       struct chamelium_port *port,
 				       enum chamelium_check check)
@@ -2460,6 +2505,8 @@ static void test_display_planes_random(data_t
 *data,
 	igt_remove_fb(data->drm_fd, &result_fb);
 }
 
+static const char test_hpd_without_ddc_desc[] =
+	"Disable DDC on a VGA connector, check we still get a uevent on
 hotplug";
 static void

test_hpd_without_ddc(data_t *data, struct chamelium_port *port) {

tests/kms_chamelium.c +0 -0
@@ -2480,6 +2527,9 @@ test_hpd_without_ddc(data_t *data, struct
 chamelium_port *port)
 	igt_cleanup_hotplug(mon);
 }
 
Quoted 6 lines

tests/kms_chamelium.c test_hpd_without_ddc(data_t *data, struct chamelium_port *port) · line 2532

Quoted 4 lines
tests/kms_chamelium.c +2 -0
+static const char test_hpd_storm_detect_desc[] =
+	"Trigger a series of hotplugs in a very small timeframe to

simulate a"

tests/kms_chamelium.c +1 -0
+	"bad cable, check the kernel falls back to polling";

"falls back to polling to avoid an irq storm"

irq → hotplug

But yes, ack :)

Quoted 3 lines

Thanks a lot for doing this! My comments are merely proposals for improvements, so feel free to land put my R-b even without changing anything.

Thanks for the suggestions!

Quoted 434 lines

Martin

Quoted 432 lines

static void
test_hpd_storm_detect(data_t *data, struct chamelium_port *port,
int width)
{

tests/kms_chamelium.c +2 -0
@@ -2508,6 +2558,9 @@ test_hpd_storm_detect(data_t *data, struct
 chamelium_port *port, int width)
 	igt_hpd_storm_reset(data->drm_fd);
 }
 
+static const char test_hpd_storm_disable_desc[] =
+	"Disable HPD storm detection, trigger a storm and check the

kernel "

tests/kms_chamelium.c +1 -0
+	"doesn't detect one";
 static void
 test_hpd_storm_disable(data_t *data, struct chamelium_port *port,

int width)
{

tests/kms_chamelium.c +1 -0
@@ -2552,6 +2605,7 @@ static const struct edid *get_edid(enum
 test_edid edid)
 
 static data_t data;
 
+IGT_TEST_DESCRIPTION("Tests requiring a Chamelium board");
 igt_main
 {
tests/kms_chamelium.c +10 -0
 	struct chamelium_port *port;
@@ -2580,46 +2634,56 @@ igt_main
 		igt_require(data.display.is_atomic);
 	}
 
+	igt_describe("DisplayPort tests");
 	igt_subtest_group {
 		igt_fixture {
 			require_connector_present(
 			    &data, DRM_MODE_CONNECTOR_DisplayPort);
 		}
 
+		igt_describe(test_basic_hotplug_desc);
 		connector_subtest("dp-hpd", DisplayPort)
 			test_basic_hotplug(&data, port,
 					   HPD_TOGGLE_COUNT_DP_HDMI);
 
+		igt_describe(test_basic_hotplug_desc);
 		connector_subtest("dp-hpd-fast", DisplayPort)
 			test_basic_hotplug(&data, port,
 					   HPD_TOGGLE_COUNT_FAST);
 
+		igt_describe(test_edid_read_desc);
 		connector_subtest("dp-edid-read", DisplayPort) {
 			test_edid_read(&data, port, TEST_EDID_BASE);
 			test_edid_read(&data, port, TEST_EDID_ALT);
 		}
 
+		igt_describe(test_suspend_resume_hpd_desc);
 		connector_subtest("dp-hpd-after-suspend", DisplayPort)
 			test_suspend_resume_hpd(&data, port,
 						SUSPEND_STATE_MEM,
 						SUSPEND_TEST_NONE);
 
+		igt_describe(test_suspend_resume_hpd_desc);
 		connector_subtest("dp-hpd-after-hibernate",
 DisplayPort)
 			test_suspend_resume_hpd(&data, port,
 						SUSPEND_STATE_DISK,
 						SUSPEND_TEST_DEVICES);
 
+		igt_describe(test_hpd_storm_detect_desc);
 		connector_subtest("dp-hpd-storm", DisplayPort)
 			test_hpd_storm_detect(&data, port,
 					      HPD_STORM_PULSE_INTERVAL_
 DP);
 
+		igt_describe(test_hpd_storm_disable_desc);
 		connector_subtest("dp-hpd-storm-disable", DisplayPort)
 			test_hpd_storm_disable(&data, port,
 					       HPD_STORM_PULSE_INTERVAL
 _DP);
 
+		igt_describe(test_link_status_desc);
 		connector_subtest("dp-link-status", DisplayPort)
 			test_link_status(&data, port);
 
+		igt_describe(test_suspend_resume_edid_change_desc);

connector_subtest("dp-edid-change-during-suspend",
DisplayPort)

tests/kms_chamelium.c +0 -0
 			test_suspend_resume_edid_change(&data, port,
 							SUSPEND_STATE_M

EM,

tests/kms_chamelium.c +1 -0
@@ -2627,6 +2691,7 @@ igt_main
 							TEST_EDID_BASE,
 							TEST_EDID_ALT);
 
+		igt_describe(test_suspend_resume_edid_change_desc);
 		connector_subtest("dp-edid-change-during-hibernate",
 DisplayPort)
 			test_suspend_resume_edid_change(&data, port,

SUSPEND_STATE_D
ISK,

tests/kms_chamelium.c +15 -0
@@ -2634,70 +2699,86 @@ igt_main
 							TEST_EDID_BASE,
 							TEST_EDID_ALT);
 
+		igt_describe(test_display_all_modes_desc);
 		connector_subtest("dp-crc-single", DisplayPort)
 			test_display_all_modes(&data, port,
 DRM_FORMAT_XRGB8888,
 					       CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("dp-crc-fast", DisplayPort)
 			test_display_one_mode(&data, port,
 DRM_FORMAT_XRGB8888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_all_modes_desc);
 		connector_subtest("dp-crc-multiple", DisplayPort)
 			test_display_all_modes(&data, port,
 DRM_FORMAT_XRGB8888,
 					       CHAMELIUM_CHECK_CRC, 3);
 
+		igt_describe(test_display_frame_dump_desc);
 		connector_subtest("dp-frame-dump", DisplayPort)
 			test_display_frame_dump(&data, port);
 
+		igt_describe(test_mode_timings_desc);
 		connector_subtest("dp-mode-timings", DisplayPort)
 			test_mode_timings(&data, port);
 
+		igt_describe(test_display_audio_desc);
 		connector_subtest("dp-audio", DisplayPort)
 			test_display_audio(&data, port, "HDMI",
 					   TEST_EDID_DP_AUDIO);
 
+		igt_describe(test_display_audio_edid_desc);
 		connector_subtest("dp-audio-edid", DisplayPort)
 			test_display_audio_edid(&data, port,
 						TEST_EDID_DP_AUDIO);
 	}
 
+	igt_describe("HDMI tests");
 	igt_subtest_group {
 		igt_fixture {
 			require_connector_present(
 			    &data, DRM_MODE_CONNECTOR_HDMIA);
 		}
 
+		igt_describe(test_basic_hotplug_desc);
 		connector_subtest("hdmi-hpd", HDMIA)
 			test_basic_hotplug(&data, port,
 					   HPD_TOGGLE_COUNT_DP_HDMI);
 
+		igt_describe(test_basic_hotplug_desc);
 		connector_subtest("hdmi-hpd-fast", HDMIA)
 			test_basic_hotplug(&data, port,
 					   HPD_TOGGLE_COUNT_FAST);
 
+		igt_describe(test_edid_read_desc);
 		connector_subtest("hdmi-edid-read", HDMIA) {
 			test_edid_read(&data, port, TEST_EDID_BASE);
 			test_edid_read(&data, port, TEST_EDID_ALT);
 		}
 
+		igt_describe(test_suspend_resume_hpd_desc);
 		connector_subtest("hdmi-hpd-after-suspend", HDMIA)
 			test_suspend_resume_hpd(&data, port,
 						SUSPEND_STATE_MEM,
 						SUSPEND_TEST_NONE);
 
+		igt_describe(test_suspend_resume_hpd_desc);
 		connector_subtest("hdmi-hpd-after-hibernate", HDMIA)
 			test_suspend_resume_hpd(&data, port,
 						SUSPEND_STATE_DISK,
 						SUSPEND_TEST_DEVICES);
 
+		igt_describe(test_hpd_storm_detect_desc);
 		connector_subtest("hdmi-hpd-storm", HDMIA)
 			test_hpd_storm_detect(&data, port,
 					      HPD_STORM_PULSE_INTERVAL_
 HDMI);
 
+		igt_describe(test_hpd_storm_disable_desc);
 		connector_subtest("hdmi-hpd-storm-disable", HDMIA)
 			test_hpd_storm_disable(&data, port,
 					       HPD_STORM_PULSE_INTERVAL

_HDMI);

tests/kms_chamelium.c +1 -0
+		igt_describe(test_suspend_resume_edid_change_desc);
 		connector_subtest("hdmi-edid-change-during-suspend",

HDMIA)

tests/kms_chamelium.c +0 -0
 			test_suspend_resume_edid_change(&data, port,
 							SUSPEND_STATE_M

EM,

tests/kms_chamelium.c +1 -0
@@ -2705,6 +2786,7 @@ igt_main
 							TEST_EDID_BASE,
 							TEST_EDID_ALT);
 
+		igt_describe(test_suspend_resume_edid_change_desc);
 		connector_subtest("hdmi-edid-change-during-hibernate",
 HDMIA)
 			test_suspend_resume_edid_change(&data, port,

SUSPEND_STATE_D
ISK,

tests/kms_chamelium.c +36 -0
@@ -2712,157 +2794,196 @@ igt_main
 							TEST_EDID_BASE,
 							TEST_EDID_ALT);
 
+		igt_describe(test_display_all_modes_desc);
 		connector_subtest("hdmi-crc-single", HDMIA)
 			test_display_all_modes(&data, port,
 DRM_FORMAT_XRGB8888,
 					       CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-fast", HDMIA)
 			test_display_one_mode(&data, port,
 DRM_FORMAT_XRGB8888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_all_modes_desc);
 		connector_subtest("hdmi-crc-multiple", HDMIA)
 			test_display_all_modes(&data, port,
 DRM_FORMAT_XRGB8888,
 					       CHAMELIUM_CHECK_CRC, 3);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-argb8888", HDMIA)
 			test_display_one_mode(&data, port,
 DRM_FORMAT_ARGB8888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-abgr8888", HDMIA)
 			test_display_one_mode(&data, port,
 DRM_FORMAT_ABGR8888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-xrgb8888", HDMIA)
 			test_display_one_mode(&data, port,
 DRM_FORMAT_XRGB8888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-xbgr8888", HDMIA)
 			test_display_one_mode(&data, port,
 DRM_FORMAT_XBGR8888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-rgb888", HDMIA)
 			test_display_one_mode(&data, port,
 DRM_FORMAT_RGB888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-bgr888", HDMIA)
 			test_display_one_mode(&data, port,
 DRM_FORMAT_BGR888,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-rgb565", HDMIA)
 			test_display_one_mode(&data, port,
 DRM_FORMAT_RGB565,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-bgr565", HDMIA)
 			test_display_one_mode(&data, port,
 DRM_FORMAT_BGR565,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-argb1555", HDMIA)
 			test_display_one_mode(&data, port,
 DRM_FORMAT_ARGB1555,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-crc-xrgb1555", HDMIA)
 			test_display_one_mode(&data, port,
 DRM_FORMAT_XRGB1555,
 					      CHAMELIUM_CHECK_CRC, 1);
 
+		igt_describe(test_display_planes_random_desc);
 		connector_subtest("hdmi-crc-planes-random", HDMIA)
 			test_display_planes_random(&data, port,
 						   CHAMELIUM_CHECK_CRC)
 ;
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-nv12", HDMIA)
 			test_display_one_mode(&data, port,
 DRM_FORMAT_NV12,
 					      CHAMELIUM_CHECK_CHECKERBO
 ARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-nv16", HDMIA)
 			test_display_one_mode(&data, port,
 DRM_FORMAT_NV16,
 					      CHAMELIUM_CHECK_CHECKERBO
 ARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-nv21", HDMIA)
 			test_display_one_mode(&data, port,
 DRM_FORMAT_NV21,
 					      CHAMELIUM_CHECK_CHECKERBO
 ARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-nv61", HDMIA)
 			test_display_one_mode(&data, port,
 DRM_FORMAT_NV61,
 					      CHAMELIUM_CHECK_CHECKERBO
 ARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-yu12", HDMIA)
 			test_display_one_mode(&data, port,
 DRM_FORMAT_YUV420,
 					      CHAMELIUM_CHECK_CHECKERBO
 ARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-yu16", HDMIA)
 			test_display_one_mode(&data, port,
 DRM_FORMAT_YUV422,
 					      CHAMELIUM_CHECK_CHECKERBO
 ARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-yv12", HDMIA)
 			test_display_one_mode(&data, port,
 DRM_FORMAT_YVU420,
 					      CHAMELIUM_CHECK_CHECKERBO
 ARD, 1);
 
+		igt_describe(test_display_one_mode_desc);
 		connector_subtest("hdmi-cmp-yv16", HDMIA)
 			test_display_one_mode(&data, port,
 DRM_FORMAT_YVU422,
 					      CHAMELIUM_CHECK_CHECKERBO
 ARD, 1);
 
+		igt_describe(test_display_planes_random_desc);
 		connector_subtest("hdmi-cmp-planes-random", HDMIA)
 			test_display_planes_random(&data, port,
 						   CHAMELIUM_CHECK_CHEC
 KERBOARD);
 
+		igt_describe(test_display_frame_dump_desc);
 		connector_subtest("hdmi-frame-dump", HDMIA)
 			test_display_frame_dump(&data, port);
 
+		igt_describe(test_mode_timings_desc);
 		connector_subtest("hdmi-mode-timings", HDMIA)
 			test_mode_timings(&data, port);
 
+		igt_describe(test_display_audio_desc);
 		connector_subtest("hdmi-audio", HDMIA)
 			test_display_audio(&data, port, "HDMI",
 					   TEST_EDID_HDMI_AUDIO);
 
+		igt_describe(test_display_audio_edid_desc);
 		connector_subtest("hdmi-audio-edid", HDMIA)
 			test_display_audio_edid(&data, port,
 						TEST_EDID_HDMI_AUDIO);
 
+		igt_describe(test_display_aspect_ratio_desc);
 		connector_subtest("hdmi-aspect-ratio", HDMIA)
 			test_display_aspect_ratio(&data, port);
 	}
 
+	igt_describe("VGA tests");
 	igt_subtest_group {
 		igt_fixture {
 			require_connector_present(
 			    &data, DRM_MODE_CONNECTOR_VGA);
 		}
 
+		igt_describe(test_basic_hotplug_desc);
 		connector_subtest("vga-hpd", VGA)
 			test_basic_hotplug(&data, port,
 HPD_TOGGLE_COUNT_VGA);
 
+		igt_describe(test_basic_hotplug_desc);
 		connector_subtest("vga-hpd-fast", VGA)
 			test_basic_hotplug(&data, port,
 HPD_TOGGLE_COUNT_FAST);
 
+		igt_describe(test_edid_read_desc);
 		connector_subtest("vga-edid-read", VGA) {
 			test_edid_read(&data, port, TEST_EDID_BASE);
 			test_edid_read(&data, port, TEST_EDID_ALT);
 		}
 
+		igt_describe(test_suspend_resume_hpd_desc);
 		connector_subtest("vga-hpd-after-suspend", VGA)
 			test_suspend_resume_hpd(&data, port,
 						SUSPEND_STATE_MEM,
 						SUSPEND_TEST_NONE);
 
+		igt_describe(test_suspend_resume_hpd_desc);
 		connector_subtest("vga-hpd-after-hibernate", VGA)
 			test_suspend_resume_hpd(&data, port,
 						SUSPEND_STATE_DISK,
 						SUSPEND_TEST_DEVICES);
 
+		igt_describe(test_hpd_without_ddc_desc);
 		connector_subtest("vga-hpd-without-ddc", VGA)
 			test_hpd_without_ddc(&data, port);
 
+		igt_describe(test_display_all_modes_desc);
 		connector_subtest("vga-frame-dump", VGA)
 			test_display_all_modes(&data, port,

DRM_FORMAT_XRGB8888,
CHAMELIUM_CHECK_ANALOG,
1);

tests/kms_chamelium.c +2 -0
 	}
 
+	igt_describe("Tests that operate on all connectors");
 	igt_subtest_group {
+		igt_describe(test_suspend_resume_hpd_common_desc);
 		igt_subtest("common-hpd-after-suspend")
 			test_suspend_resume_hpd_common(&data,
 						       SUSPEND_STATE_ME

M,
SUSPEND_TEST_NON
E);

Quoted 8 lines
Quoted 8 lines
tests/kms_chamelium.c +1 -0
+		igt_describe(test_suspend_resume_hpd_common_desc);
 		igt_subtest("common-hpd-after-hibernate")
 			test_suspend_resume_hpd_common(&data,
 						       SUSPEND_STATE_DI

SK,
--
2.23.0

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

#5 lore raw
Quoted 4 lines · Simon
Quoted 3 lines · Martin Peres
Quoted 1 line · Simon Ser
Quoted 8 lines
Quoted 6 lines

tests/kms_chamelium.c test_hpd_without_ddc(data_t *data, struct chamelium_port *port) · line 2532

Quoted 4 lines
(quoted diff) +2 -0
+static const char test_hpd_storm_detect_desc[] =
+	"Trigger a series of hotplugs in a very small timeframe to

simulate a"

tests/kms_chamelium.c +1 -0
+	"bad cable, check the kernel falls back to polling";

"falls back to polling to avoid an irq storm"

irq → hotplug

I really meant IRQ storm. That was the bug we got (a machine was slow as heck because the connector was lose and the HW was sending thousands of hotplug IRQs per second).

If you want to say hotplug IRQ storm, that can work too :)

Martin
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

author
#6 lore raw
Quoted 10 lines · Martin Peres
Quoted 9 lines · Simon
Quoted 7 lines · Martin Peres

tests/kms_chamelium.c test_hpd_without_ddc(data_t *data, struct chamelium_port *port) · line 2532

Quoted 4 lines · Simon Ser
(quoted diff) +2 -0
+static const char test_hpd_storm_detect_desc[] =
+	"Trigger a series of hotplugs in a very small timeframe to

simulate a"

tests/kms_chamelium.c +1 -0
+	"bad cable, check the kernel falls back to polling";

"falls back to polling to avoid an irq storm"

Quoted 7 lines
Quoted 1 line

irq → hotplug

I really meant IRQ storm. That was the bug we got (a machine was slow as heck because the connector was lose and the HW was sending thousands of hotplug IRQs per second).

If you want to say hotplug IRQ storm, that can work too :)

Userspace doesn't see IRQs. The IRQ storm won't be avoided, it will really happen. What we want to avoid though is a storm of hotplug uevents. Hence I still think "to avoid a hotplug uevent storm" is a better wording :)

Quoted 1 line

Martin

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev