diff options
author | Marius Vlad <marius.c.vlad@intel.com> | 2016-12-01 21:45:47 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2016-12-01 21:45:47 +0000 |
commit | 0268d73b0b267c6f5acdd4bf40ae917b3afff96c (patch) | |
tree | cc5f3c23378db20553bb2087cf5c7f0b1fe1cd49 /lib/igt_gvt.c | |
parent | 4d8f3b2c8034f1bdf64d65d484e5d5cd18410fb7 (diff) |
lib/igt_kmod: New library to support driver loading/unloading and additional helpers.
lib/igt_aux: Added igt_pkill and igt_lsof helper.
lib/igt_kmod: Added load/unload kmod helpers.
v7:
- document the case where leaving stray fd from drm_open_driver()
might fail reloading the driver.
- list also current opened files from /dev/dri in case we could not
unload the driver.
- convert igt_info to igt_warn (Chris Wilson)
- added KMOD_|PROCPS CFLAGS (Chris Wilson)
v6:
- include latest modifications from tests/drv_module_reload:
display all loaded modules and list information about opened
files by processes (Petri Latvala)
v5:
- added igt_i915_driver_{load/unload}.
- added kick_snd_hda_intel() to match current
tests/drv_module_reload_basic and integrated into
igt_i915_driver_load/unload.
- added gtk-doc section for lib/igt_kmod
v4:
- decided to split libkmod helpers into their own file as there's
another user lib/igt_gvt or tests/gvt_basic.
- fixed some gtk-doc documentation.
v3:
- return -errno (igt_pkill()) in case of failure (Cris Wilson)
- return bool for igt_kmod_is_loaded(), replaced strncasecmp with strncmp
(Chris Wilson)
v2:
- Renamed libkmod helpers (Chris Wilson)
- Removed SIGTERM/SIGKILL case where we repeatedly tried to terminate the
process: just call kill(2) once (Chris Wilson)
- Removed redundant check in igt_kmod_unload(), igt_module_in_use() (Chris
Wilson)
- Pass flags to igt_kmod_unload() from the caller (Chris Wilson)
- Removed useless function igt_kill() which acts just as kill(2) (Chris
Wilson)
Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
Diffstat (limited to 'lib/igt_gvt.c')
-rw-r--r-- | lib/igt_gvt.c | 43 |
1 files changed, 2 insertions, 41 deletions
diff --git a/lib/igt_gvt.c b/lib/igt_gvt.c index 0f332d1c..8bbf9bd9 100644 --- a/lib/igt_gvt.c +++ b/lib/igt_gvt.c @@ -23,6 +23,7 @@ #include "igt.h" #include "igt_gvt.h" +#include "igt_sysfs.h" #include <dirent.h> #include <unistd.h> @@ -46,49 +47,9 @@ static bool is_gvt_enabled(void) return enabled; } -static void unbind_fbcon(void) -{ - char buf[128]; - const char *path = "/sys/class/vtconsole"; - DIR *dir; - struct dirent *vtcon; - - dir = opendir(path); - if (!dir) - return; - - while ((vtcon = readdir(dir))) { - int fd, len; - - if (strncmp(vtcon->d_name, "vtcon", 5)) - continue; - - sprintf(buf, "%s/%s/name", path, vtcon->d_name); - fd = open(buf, O_RDONLY); - if (fd < 0) - continue; - - len = read(fd, buf, sizeof(buf) - 1); - close(fd); - if (len >= 0) - buf[len] = '\0'; - - if (strstr(buf, "frame buffer device")) { - sprintf(buf, "%s/%s/bind", path, vtcon->d_name); - fd = open(buf, O_WRONLY); - if (fd != -1) { - igt_ignore_warn(write(fd, "1\n", 2)); - close(fd); - } - break; - } - } - closedir(dir); -} - static void unload_i915(void) { - unbind_fbcon(); + kick_fbcon(false); /* pkill alsact */ igt_ignore_warn(system("/sbin/modprobe -s -r i915")); |