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

Ryszard Knop ryszard.knop at intel.com
Wed May 25 14:21:34 UTC 2022


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

The reload test now also performs the same checks.

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..46608aa8 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("Assert that 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_abort_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