summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyszard Knop <ryszard.knop@intel.com>2022-05-25 17:27:18 +0200
committerPetri Latvala <petri.latvala@intel.com>2022-06-10 16:33:34 +0300
commit258d69b2380497896eebb3f27e012e89582995ba (patch)
treedc89eab1cf412ae8a1669e2c228a4daf4db7c70b
parent0189ca288f7188e60f5eda356b190040bf8ec704 (diff)
tests/i915_module_load: Add the "load" test
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@intel.com> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
-rw-r--r--tests/i915/i915_module_load.c52
1 files 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 */
}