[igt-dev] [PATCH i-g-t v2 1/2] tests/i915_module_load: Add the "load" test

Ryszard Knop ryszard.knop at intel.com
Wed May 25 15:27:18 UTC 2022


Add a test that:
- Checks if i915 and associated drivers are not yet loaded;
- Loads the i915 driver;
- Performs a small set of sanity tests to make sure the GPU is there.

The test is skipped if the driver is already loaded. The reload test now
also performs the same checks. This should be the first test executed in
CI test lists.

Signed-off-by: Ryszard Knop <ryszard.knop at intel.com>
---
 tests/i915/i915_module_load.c | 52 +++++++++++++++++++++++++++++------
 1 file changed, 43 insertions(+), 9 deletions(-)

diff --git a/tests/i915/i915_module_load.c b/tests/i915/i915_module_load.c
index f5f98acc..4705f3d6 100644
--- a/tests/i915/i915_module_load.c
+++ b/tests/i915/i915_module_load.c
@@ -30,6 +30,7 @@
 #include <sys/ioctl.h>
 #include <fcntl.h>
 
+#include "i915/gem.h"
 #include "i915/gem_create.h"
 #include "igt_debugfs.h"
 #include "igt_aux.h"
@@ -236,21 +237,54 @@ hda_dynamic_debug(bool enable)
 	fclose(fp);
 }
 
+static void load_and_check_i915(void)
+{
+	int error;
+	int drm_fd;
+
+	hda_dynamic_debug(true);
+	error = igt_i915_driver_load(NULL);
+	hda_dynamic_debug(false);
+
+	igt_assert_eq(error, 0);
+
+	/* driver is ready, check if it's bound */
+	drm_fd = __drm_open_driver(DRIVER_INTEL);
+	igt_fail_on_f(drm_fd < 0, "Cannot open the i915 DRM driver after modprobing i915.\n");
+
+	/* make sure the GPU is idle */
+	gem_quiescent_gpu(drm_fd);
+	close(drm_fd);
+
+	/* make sure we can do basic memory ops */
+	gem_sanitycheck();
+}
+
 igt_main
 {
+	igt_describe("Check if i915 and friends are not yet loaded, then load them.");
+	igt_subtest("load") {
+		const char * unwanted_drivers[] = {
+			"i915",
+			"intel-gtt",
+			"snd_hda_intel",
+			"snd_hdmi_lpe_audio",
+			NULL
+		};
+
+		for (int i = 0; unwanted_drivers[i] != NULL; i++) {
+			igt_skip_on_f(igt_kmod_is_loaded(unwanted_drivers[i]),
+			              "%s is already loaded\n", unwanted_drivers[i]);
+		}
+
+		load_and_check_i915();
+	}
+
 	igt_describe("Verify the basic functionality of i915 driver after it's reloaded.");
 	igt_subtest("reload") {
-		int load_error;
-
 		igt_i915_driver_unload();
 
-		hda_dynamic_debug(true);
-		load_error = igt_i915_driver_load(NULL);
-		hda_dynamic_debug(false);
-
-		igt_assert_eq(load_error, 0);
-
-		gem_sanitycheck();
+		load_and_check_i915();
 
 		/* only default modparams, can leave module loaded */
 	}
-- 
2.36.1



More information about the igt-dev mailing list