Verify if a device with a GEM batch job still running on a GPU can be hot-unplugged cleanly and released, then recovered. Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik@xxxxxxxxxxxxxxx> --- tests/core_hotunplug.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index 35a4fb13c..c8d7ec7e1 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -31,6 +31,7 @@ #include "igt.h" #include "igt_device_scan.h" +#include "igt_dummyload.h" #include "igt_kmod.h" #include "igt_sysfs.h" @@ -407,6 +408,32 @@ static void prime_hotunplug_lateclose(void) healthcheck(); } +static void batch_hotunplug_lateclose(void) +{ + struct hotunplug priv; + igt_spin_t *spin; + + prepare_for_rescan(&priv); + + igt_require_gem(priv.fd.drm); + + local_debug("running dummy load"); + spin = __igt_spin_new(priv.fd.drm, .flags = IGT_SPIN_POLL_RUN | + IGT_SPIN_NO_PREEMPTION); + igt_spin_busywait_until_started(spin); + + local_debug("hot unplugging the device"); + device_unplug(priv.fd.sysfs_dev); + + local_debug("late closing the removed device instance"); + close(priv.fd.drm); + + local_debug("recovering the device"); + bus_rescan(priv.fd.sysfs_bus); + + healthcheck(); +} + /* Main */ igt_main @@ -500,4 +527,11 @@ igt_main igt_fixture igt_abort_on_f(failure, "%s\n", failure); + + igt_describe("Check if a device with a still running batch can be cleanly unplugged, then released and recovered"); + igt_subtest("batch-hotunplug-lateclose") + batch_hotunplug_lateclose(); + + igt_fixture + igt_abort_on_f(failure, "%s\n", failure); } -- 2.21.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx