[igt-dev] [PATCH i-g-t 2/2] lib/igt_aux: fix kselftest module unload
Mauro Carvalho Chehab
mauro.chehab at linux.intel.com
Tue May 24 12:07:17 UTC 2022
From: Mauro Carvalho Chehab <mchehab at kernel.org>
Most of the time, i915 module unload happens inside a subtest.
So, using igt_fork() is OK. However, on i915_selftest, this
is called earlier, at igt_kselftest_begin. This causes an
error on IGT:
forking is only allowed in subtests or igt_simple_main
please refer to lib/igt_core documentation
As igt_fork() can only be used inside subtests. So, use
igt_fork_helper() instead.
Signed-off-by: Mauro Carvalho Chehab <mchehab at kernel.org>
---
lib/igt_aux.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/lib/igt_aux.c b/lib/igt_aux.c
index 751c8a29e514..9431960f2632 100644
--- a/lib/igt_aux.c
+++ b/lib/igt_aux.c
@@ -1465,11 +1465,12 @@ igt_lsof(const char *dpath)
static void pulseaudio_unload_module(proc_t *proc_info)
{
+ struct igt_helper_process pa_proc = {};
char xdg_dir[PATH_MAX];
const char *homedir;
struct passwd *pw;
- igt_fork(child, 1) {
+ igt_fork_helper(&pa_proc) {
pw = getpwuid(proc_info->euid);
homedir = pw->pw_dir;
snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", proc_info->euid);
@@ -1484,11 +1485,12 @@ static void pulseaudio_unload_module(proc_t *proc_info)
system("for i in $(pacmd list-sources|grep module:|cut -d : -f 2); do pactl unload-module $i; done");
}
- igt_waitchildren();
+ igt_wait_helper(&pa_proc);
}
static int pipewire_pulse_pid = 0;
static int pipewire_pw_reserve_pid = 0;
+static struct igt_helper_process pw_reserve_proc = {};
static void pipewire_reserve_wait(void)
{
@@ -1498,7 +1500,7 @@ static void pipewire_reserve_wait(void)
proc_t *proc_info;
PROCTAB *proc;
- igt_fork(child, 1) {
+ igt_fork_helper(&pw_reserve_proc) {
igt_info("Preventing pipewire-pulse to use the audio drivers\n");
proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG);
@@ -1592,7 +1594,7 @@ void pipewire_pulse_stop_reserve(void)
if (!pipewire_pulse_pid)
return;
- igt_kill_children(SIGTERM);
+ igt_stop_helper(&pw_reserve_proc);
}
/**
--
2.36.1
More information about the igt-dev
mailing list