[igt-dev] [PATCH i-g-t 2/2] tests/kms_chamelium: Don't fail random palnes tests on invalid config

Arkadiusz Hiler arkadiusz.hiler at intel.com
Thu Mar 12 09:51:37 UTC 2020


It is possible to generate a configuration that the driver rejects
because it cannot be handled (e.g. exceeding the number of available
scalers). Until now the test was failing in such cases with:

  igt_kms-CRITICAL: Test assertion failure function igt_display_commit_atomic, file ../lib/igt_kms.c:3490:
  igt_kms-CRITICAL: Failed assertion: ret == 0
  igt_kms-CRITICAL: Last errno: 22, Invalid argument
  igt_kms-CRITICAL: error: -22 != 0

With this change we will just note that the atomic commit is invalid and
pass the test without causing random noise.

Cc: Petri Latvala <petri.latvala at intel.com>
Cc: Martin Peres <martin.peres at intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler at intel.com>
---
 tests/kms_chamelium.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/tests/kms_chamelium.c b/tests/kms_chamelium.c
index 8046ac65..b563cce4 100644
--- a/tests/kms_chamelium.c
+++ b/tests/kms_chamelium.c
@@ -2402,6 +2402,7 @@ static void test_display_planes_random(data_t *data,
 	bool allow_yuv;
 	unsigned int i;
 	unsigned int fb_id;
+	int ret;
 
 	switch (check) {
 	case CHAMELIUM_CHECK_CRC:
@@ -2478,7 +2479,15 @@ static void test_display_planes_random(data_t *data,
 		fb_crc = chamelium_calculate_fb_crc_async_start(data->drm_fd,
 								&result_fb);
 
-	igt_display_commit2(&data->display, COMMIT_ATOMIC);
+	ret = igt_display_try_commit2(&data->display, COMMIT_ATOMIC);
+
+	/* we have invalid configuration, noting we can do */
+	if (ret == -EINVAL) {
+		igt_info("The random plane configuration is invalid, "
+			 "passing the test without testing anything.\n");
+		goto cleanup;
+	}
+
 
 	if (check == CHAMELIUM_CHECK_CRC) {
 		chamelium_capture(data->chamelium, port, 0, 0, 0, 0, 1);
@@ -2505,6 +2514,8 @@ static void test_display_planes_random(data_t *data,
 		chamelium_destroy_frame_dump(dump);
 	}
 
+cleanup:
+
 	for (i = 0; i < overlay_planes_count; i++)
 		igt_remove_fb(data->drm_fd, &overlay_fbs[i]);
 
-- 
2.24.1



More information about the igt-dev mailing list