[igt-dev] [PATCH i-g-t v2 1/2] tests/i915_module_load: Add the "load" test
Petri Latvala
petri.latvala at intel.com
Fri Jun 10 13:31:08 UTC 2022
On Wed, May 25, 2022 at 05:27:18PM +0200, Ryszard Knop wrote:
> 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>
Reviewed-by: Petri Latvala <petri.latvala 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