* [igt-dev] [PATCH i-g-t 0/2] Use new procps library libproc2
@ 2023-05-15 18:46 Kamil Konieczny
2023-05-15 18:46 ` [igt-dev] [PATCH i-g-t 1/2] Use the " Kamil Konieczny
` (8 more replies)
0 siblings, 9 replies; 13+ messages in thread
From: Kamil Konieczny @ 2023-05-15 18:46 UTC (permalink / raw)
To: igt-dev
This is resend of following patch with minor corrections:
https://patchwork.freedesktop.org/series/111015/
Use the new procps library libproc2
I also added second patch with some simplifications suggested
by Mauro in:
https://patchwork.freedesktop.org/series/116896/
Use new library libproc2
v2: corrected 2/2 "lib/igt_aux: unify procps processing"
on old lib path
Cc: Mauro Carvalho Chehab <mauro.chehab@linux.intel.com>
Craig Small (1):
Use the new procps library libproc2
Kamil Konieczny (1):
lib/igt_aux: unify procps processing
lib/igt_aux.c | 276 +++++++++++++++++++++++++++++++-----------------
lib/meson.build | 7 +-
meson.build | 10 +-
3 files changed, 194 insertions(+), 99 deletions(-)
--
2.39.2
^ permalink raw reply [flat|nested] 13+ messages in thread* [igt-dev] [PATCH i-g-t 1/2] Use the new procps library libproc2 2023-05-15 18:46 [igt-dev] [PATCH i-g-t 0/2] Use new procps library libproc2 Kamil Konieczny @ 2023-05-15 18:46 ` Kamil Konieczny 2023-05-16 9:33 ` Mauro Carvalho Chehab 2023-05-15 18:46 ` [igt-dev] [PATCH i-g-t 2/2] lib/igt_aux: unify procps processing Kamil Konieczny ` (7 subsequent siblings) 8 siblings, 1 reply; 13+ messages in thread From: Kamil Konieczny @ 2023-05-15 18:46 UTC (permalink / raw) To: igt-dev; +Cc: Craig Small From: Craig Small <csmall@dropbear.xyz> Added support for new libproc2. [Corrected some errors pointed by checkpatch.pl, add linux includes in #ifdef __linux__ section] v2: changed to igt_fork_helper and added error print [Kamil] v3: removed include <limits.h> pointed by Mauro [Kamil] Signed-off-by: Craig Small <csmall@dropbear.xyz> --- lib/igt_aux.c | 246 +++++++++++++++++++++++++++++++++++++++--------- lib/meson.build | 7 +- meson.build | 10 +- 3 files changed, 219 insertions(+), 44 deletions(-) diff --git a/lib/igt_aux.c b/lib/igt_aux.c index 672d7d4b0..4c24b0928 100644 --- a/lib/igt_aux.c +++ b/lib/igt_aux.c @@ -52,8 +52,16 @@ #include <assert.h> #include <grp.h> -#include <proc/readproc.h> -#include <libudev.h> +#ifdef HAVE_LIBPROCPS +# include <proc/readproc.h> +#else +# include <libproc2/pids.h> +#endif + +#include <dirent.h> +#ifdef __linux__ +# include <libudev.h> +#endif #include "drmtest.h" #include "i915_drm.h" @@ -1217,6 +1225,7 @@ void igt_unlock_mem(void) */ int igt_is_process_running(const char *comm) { +#if HAVE_LIBPROCPS PROCTAB *proc; proc_t *proc_info; bool found = false; @@ -1235,6 +1244,26 @@ int igt_is_process_running(const char *comm) closeproc(proc); return found; +#else + enum pids_item Item[] = { PIDS_CMD }; + struct pids_info *info = NULL; + struct pids_stack *stack; + char *pid_comm; + bool found = false; + + if (procps_pids_new(&info, Item, 1) < 0) + return false; + while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { + pid_comm = PIDS_VAL(0, str, stack, info); + if (!strncasecmp(pid_comm, comm, strlen(pid_comm))) { + found = true; + break; + } + } + + procps_pids_unref(&info); + return found; +#endif } /** @@ -1251,6 +1280,7 @@ int igt_is_process_running(const char *comm) */ int igt_terminate_process(int sig, const char *comm) { +#if HAVE_LIBPROCPS PROCTAB *proc; proc_t *proc_info; int err = 0; @@ -1272,6 +1302,28 @@ int igt_terminate_process(int sig, const char *comm) closeproc(proc); return err; +#else + enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD }; + struct pids_info *info = NULL; + struct pids_stack *stack; + char *pid_comm; + int pid; + int err = 0; + + if (procps_pids_new(&info, Items, 2) < 0) + return -errno; + while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { + pid = PIDS_VAL(0, s_int, stack, info); + pid_comm = PIDS_VAL(1, str, stack, info); + if (!strncasecmp(pid_comm, comm, strlen(pid_comm))) { + if (kill(pid, sig) < 0) + err = -errno; + break; + } + } + procps_pids_unref(&info); + return err; +#endif } struct pinfo { @@ -1341,9 +1393,9 @@ igt_show_stat_header(void) } static void -igt_show_stat(proc_t *info, int *state, const char *fn) +igt_show_stat(const pid_t tid, const char *cmd, int *state, const char *fn) { - struct pinfo p = { .pid = info->tid, .comm = info->cmd, .fn = fn }; + struct pinfo p = { .pid = tid, .comm = cmd, .fn = fn }; if (!*state) igt_show_stat_header(); @@ -1353,7 +1405,7 @@ igt_show_stat(proc_t *info, int *state, const char *fn) } static void -__igt_lsof_fds(proc_t *proc_info, int *state, char *proc_path, const char *dir) +__igt_lsof_fds(const pid_t tid, const char *cmd, int *state, char *proc_path, const char *dir) { struct dirent *d; struct stat st; @@ -1400,7 +1452,7 @@ again: dirn = dirname(copy_fd_lnk); if (!strncmp(dir, dirn, strlen(dir))) - igt_show_stat(proc_info, state, fd_lnk); + igt_show_stat(tid, cmd, state, fd_lnk); free(copy_fd_lnk); free(fd_lnk); @@ -1416,13 +1468,13 @@ again: static void __igt_lsof(const char *dir) { - PROCTAB *proc; - proc_t *proc_info; - char path[30]; char *name_lnk; struct stat st; int state = 0; +#ifdef HAVE_LIBPROCPS + PROCTAB *proc; + proc_t *proc_info; proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG); igt_assert(proc != NULL); @@ -1443,19 +1495,56 @@ __igt_lsof(const char *dir) name_lnk[read] = '\0'; if (!strncmp(dir, name_lnk, strlen(dir))) - igt_show_stat(proc_info, &state, name_lnk); + igt_show_stat(proc_info->tid, proc_info->cmd, &state, name_lnk); /* check also fd, seems that lsof(8) doesn't look here */ memset(path, 0, sizeof(path)); snprintf(path, sizeof(path), "/proc/%d/fd", proc_info->tid); - __igt_lsof_fds(proc_info, &state, path, dir); + __igt_lsof_fds(proc_info->tid, proc_info->cmd, &state, path, dir); free(name_lnk); freeproc(proc_info); } closeproc(proc); +#else + enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD }; + struct pids_info *info = NULL; + struct pids_stack *stack; + + if (procps_pids_new(&info, Items, 2) < 0) + return; + while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { + ssize_t read; + int tid = PIDS_VAL(0, s_int, stack, info); + char *pid_comm = PIDS_VAL(1, str, stack, info); + + /* check current working directory */ + memset(path, 0, sizeof(path)); + snprintf(path, sizeof(path), "/proc/%d/cwd", tid); + + if (stat(path, &st) == -1) + continue; + + name_lnk = malloc(st.st_size + 1); + + igt_assert((read = readlink(path, name_lnk, st.st_size + 1))); + name_lnk[read] = '\0'; + + if (!strncmp(dir, name_lnk, strlen(dir))) + igt_show_stat(tid, pid_comm, &state, name_lnk); + + /* check also fd, seems that lsof(8) doesn't look here */ + memset(path, 0, sizeof(path)); + snprintf(path, sizeof(path), "/proc/%d/fd", tid); + + __igt_lsof_fds(tid, pid_comm, &state, path, dir); + + free(name_lnk); + } + procps_pids_unref(&info); +#endif } /** @@ -1490,7 +1579,7 @@ igt_lsof(const char *dpath) free(sanitized); } -static void pulseaudio_unload_module(proc_t *proc_info) +static void pulseaudio_unload_module(const uid_t euid, const gid_t egid) { struct igt_helper_process pa_proc = {}; char xdg_dir[PATH_MAX]; @@ -1498,14 +1587,14 @@ static void pulseaudio_unload_module(proc_t *proc_info) struct passwd *pw; igt_fork_helper(&pa_proc) { - pw = getpwuid(proc_info->euid); + pw = getpwuid(euid); homedir = pw->pw_dir; - snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", proc_info->euid); + snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", euid); igt_info("Request pulseaudio to stop using audio device\n"); - setgid(proc_info->egid); - setuid(proc_info->euid); + setgid(egid); + setuid(euid); clearenv(); setenv("HOME", homedir, 1); setenv("XDG_RUNTIME_DIR",xdg_dir, 1); @@ -1524,10 +1613,13 @@ static void pipewire_reserve_wait(void) char xdg_dir[PATH_MAX]; const char *homedir; struct passwd *pw; - proc_t *proc_info; - PROCTAB *proc; + int tid = 0, euid, egid; +#ifdef HAVE_LIBPROCPS igt_fork_helper(&pw_reserve_proc) { + proc_t *proc_info; + PROCTAB *proc; + igt_info("Preventing pipewire-pulse to use the audio drivers\n"); proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG); @@ -1540,19 +1632,45 @@ static void pipewire_reserve_wait(void) } closeproc(proc); + tid = proc_info->tid; + euid = proc_info->euid; + egid = proc_info->egid; + freeproc(proc_info); +#else + igt_fork_helper(&pw_reserve_proc) { + enum pids_item Items[] = { PIDS_ID_PID, PIDS_ID_EUID, PIDS_ID_EGID }; + enum rel_items { EU_PID, EU_EUID, EU_EGID }; + struct pids_info *info = NULL; + struct pids_stack *stack; + + igt_info("Preventing pipewire-pulse to use the audio drivers\n"); + + if (procps_pids_new(&info, Items, 3) < 0) { + igt_info("error getting pids: %d\n", errno); + exit(errno); + } + while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { + tid = PIDS_VAL(EU_PID, s_int, stack, info); + if (pipewire_pulse_pid == tid) + break; + } + euid = PIDS_VAL(EU_EUID, s_int, stack, info); + egid = PIDS_VAL(EU_EGID, s_int, stack, info); + procps_pids_unref(&info); +#endif + /* Sanity check: if it can't find the process, it means it has gone */ - if (pipewire_pulse_pid != proc_info->tid) + if (pipewire_pulse_pid != tid) exit(0); - pw = getpwuid(proc_info->euid); + pw = getpwuid(euid); homedir = pw->pw_dir; - snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", proc_info->euid); - setgid(proc_info->egid); - setuid(proc_info->euid); + snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", euid); + setgid(egid); + setuid(euid); clearenv(); setenv("HOME", homedir, 1); setenv("XDG_RUNTIME_DIR",xdg_dir, 1); - freeproc(proc_info); /* * pw-reserve will run in background. It will only exit when @@ -1570,9 +1688,7 @@ static void pipewire_reserve_wait(void) int pipewire_pulse_start_reserve(void) { bool is_pw_reserve_running = false; - proc_t *proc_info; int attempts = 0; - PROCTAB *proc; if (!pipewire_pulse_pid) return 0; @@ -1584,6 +1700,10 @@ int pipewire_pulse_start_reserve(void) * pipewire version 0.3.50 or upper. */ for (attempts = 0; attempts < PIPEWIRE_RESERVE_MAX_TIME; attempts++) { +#ifdef HAVE_LIBPROCPS + PROCTAB *proc; + proc_t *proc_info; + usleep(1000); proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG); igt_assert(proc != NULL); @@ -1598,6 +1718,24 @@ int pipewire_pulse_start_reserve(void) freeproc(proc_info); } closeproc(proc); +#else + enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD }; + struct pids_info *info = NULL; + struct pids_stack *stack; + + usleep(1000); + + if (procps_pids_new(&info, Items, 2) < 0) + return 1; + while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { + if (!strcmp(PIDS_VAL(1, str, stack, info), "pw-reserve")) { + is_pw_reserve_running = true; + pipewire_pw_reserve_pid = PIDS_VAL(0, s_int, stack, info); + break; + } + } + procps_pids_unref(&info); +#endif if (is_pw_reserve_running) break; } @@ -1645,7 +1783,7 @@ void pipewire_pulse_stop_reserve(void) * If the check fails, it means that the process can simply be killed. */ static int -__igt_lsof_audio_and_kill_proc(proc_t *proc_info, char *proc_path) +__igt_lsof_audio_and_kill_proc(const pid_t tid, const char *cmd, const uid_t euid, const gid_t egid, char *proc_path) { const char *audio_dev = "/dev/snd/"; char path[PATH_MAX * 2]; @@ -1670,10 +1808,10 @@ __igt_lsof_audio_and_kill_proc(proc_t *proc_info, char *proc_path) * 2) unload/unbind the the audio driver(s); * 3) stop the pw-reserve thread. */ - if (!strcmp(proc_info->cmd, "pipewire-pulse")) { + if (!strcmp(cmd, "pipewire-pulse")) { igt_info("process %d (%s) is using audio device. Should be requested to stop using them.\n", - proc_info->tid, proc_info->cmd); - pipewire_pulse_pid = proc_info->tid; + tid, cmd); + pipewire_pulse_pid = tid; return 0; } /* @@ -1685,9 +1823,9 @@ __igt_lsof_audio_and_kill_proc(proc_t *proc_info, char *proc_path) * will respawn them. So, just ignore here, they'll honor pw-reserve, * when the time comes. */ - if (!strcmp(proc_info->cmd, "pipewire-media-session")) + if (!strcmp(cmd, "pipewire-media-session")) return 0; - if (!strcmp(proc_info->cmd, "wireplumber")) + if (!strcmp(cmd, "wireplumber")) return 0; dp = opendir(proc_path); @@ -1723,22 +1861,22 @@ __igt_lsof_audio_and_kill_proc(proc_t *proc_info, char *proc_path) * enough to unbind audio modules and won't cause race issues * with systemd trying to reload it. */ - if (!strcmp(proc_info->cmd, "pulseaudio")) { - pulseaudio_unload_module(proc_info); + if (!strcmp(cmd, "pulseaudio")) { + pulseaudio_unload_module(euid, egid); break; } /* For all other processes, just kill them */ igt_info("process %d (%s) is using audio device. Should be terminated.\n", - proc_info->tid, proc_info->cmd); + tid, cmd); - if (kill(proc_info->tid, SIGTERM) < 0) { + if (kill(tid, SIGTERM) < 0) { igt_info("Fail to terminate %s (pid: %d) with SIGTERM\n", - proc_info->cmd, proc_info->tid); - if (kill(proc_info->tid, SIGABRT) < 0) { + cmd, tid); + if (kill(tid, SIGABRT) < 0) { fail++; igt_info("Fail to terminate %s (pid: %d) with SIGABRT\n", - proc_info->cmd, proc_info->tid); + cmd, tid); } } @@ -1760,23 +1898,47 @@ int igt_lsof_kill_audio_processes(void) { char path[PATH_MAX]; + int fail = 0; + +#ifdef HAVE_LIBPROCPS proc_t *proc_info; PROCTAB *proc; - int fail = 0; proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG); igt_assert(proc != NULL); pipewire_pulse_pid = 0; - while ((proc_info = readproc(proc, NULL))) { if (snprintf(path, sizeof(path), "/proc/%d/fd", proc_info->tid) < 1) fail++; else - fail += __igt_lsof_audio_and_kill_proc(proc_info, path); + fail += __igt_lsof_audio_and_kill_proc(proc_info->tid, proc_info->cmd, proc_info->euid, proc_info->egid, path); freeproc(proc_info); } closeproc(proc); +#else + enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD, PIDS_ID_EUID, PIDS_ID_EGID }; + enum rel_items { EU_PID, EU_CMD, EU_EUID, EU_EGID }; + struct pids_info *info = NULL; + struct pids_stack *stack; + pid_t tid; + + if (procps_pids_new(&info, Items, 4) < 0) + return 1; + while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { + tid = PIDS_VAL(EU_PID, s_int, stack, info); + + if (snprintf(path, sizeof(path), "/proc/%d/fd", tid) < 1) + fail++; + else + fail += __igt_lsof_audio_and_kill_proc(tid, + PIDS_VAL(EU_CMD, str, stack, info), + PIDS_VAL(EU_EUID, s_int, stack, info), + PIDS_VAL(EU_EGID, s_int, stack, info), + path); + } + procps_pids_unref(&info); +#endif return fail; } diff --git a/lib/meson.build b/lib/meson.build index 85f100f75..55efdc83b 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -114,7 +114,6 @@ lib_deps = [ libdrm, libdw, libkmod, - libprocps, libudev, math, pciaccess, @@ -178,6 +177,12 @@ if chamelium.found() lib_sources += 'monitor_edids/monitor_edids_helper.c' endif +if libprocps.found() + lib_deps += libprocps +else + lib_deps += libproc2 +endif + if get_option('srcdir') != '' srcdir = join_paths(get_option('srcdir'), 'tests') else diff --git a/meson.build b/meson.build index 1c872cc9c..0487158dc 100644 --- a/meson.build +++ b/meson.build @@ -125,7 +125,15 @@ build_info += 'With libdrm: ' + ','.join(libdrm_info) pciaccess = dependency('pciaccess', version : '>=0.10') libkmod = dependency('libkmod') -libprocps = dependency('libprocps', required : true) +libprocps = dependency('libprocps', required : false) +libproc2 = dependency('libproc2', required : false) +if libprocps.found() + config.set('HAVE_LIBPROCPS', 1) +elif libproc2.found() + config.set('HAVE_LIBPROC2', 1) +else + error('Either libprocps or libproc2 is required') +endif libunwind = dependency('libunwind', required : get_option('libunwind')) build_info += 'With libunwind: @0@'.format(libunwind.found()) -- 2.39.2 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 1/2] Use the new procps library libproc2 2023-05-15 18:46 ` [igt-dev] [PATCH i-g-t 1/2] Use the " Kamil Konieczny @ 2023-05-16 9:33 ` Mauro Carvalho Chehab 0 siblings, 0 replies; 13+ messages in thread From: Mauro Carvalho Chehab @ 2023-05-16 9:33 UTC (permalink / raw) To: igt-dev Patch series LGTM. Acked-by: Mauro Carvalho Chehab <mchehab@kernel.org> On 5/15/23 20:46, Kamil Konieczny wrote: > From: Craig Small <csmall@dropbear.xyz> > > Added support for new libproc2. > > [Corrected some errors pointed by checkpatch.pl, > add linux includes in #ifdef __linux__ section] > v2: changed to igt_fork_helper and added error print [Kamil] > v3: removed include <limits.h> pointed by Mauro [Kamil] > > Signed-off-by: Craig Small <csmall@dropbear.xyz> > --- > lib/igt_aux.c | 246 +++++++++++++++++++++++++++++++++++++++--------- > lib/meson.build | 7 +- > meson.build | 10 +- > 3 files changed, 219 insertions(+), 44 deletions(-) > > diff --git a/lib/igt_aux.c b/lib/igt_aux.c > index 672d7d4b0..4c24b0928 100644 > --- a/lib/igt_aux.c > +++ b/lib/igt_aux.c > @@ -52,8 +52,16 @@ > #include <assert.h> > #include <grp.h> > > -#include <proc/readproc.h> > -#include <libudev.h> > +#ifdef HAVE_LIBPROCPS > +# include <proc/readproc.h> > +#else > +# include <libproc2/pids.h> > +#endif > + > +#include <dirent.h> > +#ifdef __linux__ > +# include <libudev.h> > +#endif > > #include "drmtest.h" > #include "i915_drm.h" > @@ -1217,6 +1225,7 @@ void igt_unlock_mem(void) > */ > int igt_is_process_running(const char *comm) > { > +#if HAVE_LIBPROCPS > PROCTAB *proc; > proc_t *proc_info; > bool found = false; > @@ -1235,6 +1244,26 @@ int igt_is_process_running(const char *comm) > > closeproc(proc); > return found; > +#else > + enum pids_item Item[] = { PIDS_CMD }; > + struct pids_info *info = NULL; > + struct pids_stack *stack; > + char *pid_comm; > + bool found = false; > + > + if (procps_pids_new(&info, Item, 1) < 0) > + return false; > + while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { > + pid_comm = PIDS_VAL(0, str, stack, info); > + if (!strncasecmp(pid_comm, comm, strlen(pid_comm))) { > + found = true; > + break; > + } > + } > + > + procps_pids_unref(&info); > + return found; > +#endif > } > > /** > @@ -1251,6 +1280,7 @@ int igt_is_process_running(const char *comm) > */ > int igt_terminate_process(int sig, const char *comm) > { > +#if HAVE_LIBPROCPS > PROCTAB *proc; > proc_t *proc_info; > int err = 0; > @@ -1272,6 +1302,28 @@ int igt_terminate_process(int sig, const char *comm) > > closeproc(proc); > return err; > +#else > + enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD }; > + struct pids_info *info = NULL; > + struct pids_stack *stack; > + char *pid_comm; > + int pid; > + int err = 0; > + > + if (procps_pids_new(&info, Items, 2) < 0) > + return -errno; > + while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { > + pid = PIDS_VAL(0, s_int, stack, info); > + pid_comm = PIDS_VAL(1, str, stack, info); > + if (!strncasecmp(pid_comm, comm, strlen(pid_comm))) { > + if (kill(pid, sig) < 0) > + err = -errno; > + break; > + } > + } > + procps_pids_unref(&info); > + return err; > +#endif > } > > struct pinfo { > @@ -1341,9 +1393,9 @@ igt_show_stat_header(void) > } > > static void > -igt_show_stat(proc_t *info, int *state, const char *fn) > +igt_show_stat(const pid_t tid, const char *cmd, int *state, const char *fn) > { > - struct pinfo p = { .pid = info->tid, .comm = info->cmd, .fn = fn }; > + struct pinfo p = { .pid = tid, .comm = cmd, .fn = fn }; > > if (!*state) > igt_show_stat_header(); > @@ -1353,7 +1405,7 @@ igt_show_stat(proc_t *info, int *state, const char *fn) > } > > static void > -__igt_lsof_fds(proc_t *proc_info, int *state, char *proc_path, const char *dir) > +__igt_lsof_fds(const pid_t tid, const char *cmd, int *state, char *proc_path, const char *dir) > { > struct dirent *d; > struct stat st; > @@ -1400,7 +1452,7 @@ again: > dirn = dirname(copy_fd_lnk); > > if (!strncmp(dir, dirn, strlen(dir))) > - igt_show_stat(proc_info, state, fd_lnk); > + igt_show_stat(tid, cmd, state, fd_lnk); > > free(copy_fd_lnk); > free(fd_lnk); > @@ -1416,13 +1468,13 @@ again: > static void > __igt_lsof(const char *dir) > { > - PROCTAB *proc; > - proc_t *proc_info; > - > char path[30]; > char *name_lnk; > struct stat st; > int state = 0; > +#ifdef HAVE_LIBPROCPS > + PROCTAB *proc; > + proc_t *proc_info; > > proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG); > igt_assert(proc != NULL); > @@ -1443,19 +1495,56 @@ __igt_lsof(const char *dir) > name_lnk[read] = '\0'; > > if (!strncmp(dir, name_lnk, strlen(dir))) > - igt_show_stat(proc_info, &state, name_lnk); > + igt_show_stat(proc_info->tid, proc_info->cmd, &state, name_lnk); > > /* check also fd, seems that lsof(8) doesn't look here */ > memset(path, 0, sizeof(path)); > snprintf(path, sizeof(path), "/proc/%d/fd", proc_info->tid); > > - __igt_lsof_fds(proc_info, &state, path, dir); > + __igt_lsof_fds(proc_info->tid, proc_info->cmd, &state, path, dir); > > free(name_lnk); > freeproc(proc_info); > } > > closeproc(proc); > +#else > + enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD }; > + struct pids_info *info = NULL; > + struct pids_stack *stack; > + > + if (procps_pids_new(&info, Items, 2) < 0) > + return; > + while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { > + ssize_t read; > + int tid = PIDS_VAL(0, s_int, stack, info); > + char *pid_comm = PIDS_VAL(1, str, stack, info); > + > + /* check current working directory */ > + memset(path, 0, sizeof(path)); > + snprintf(path, sizeof(path), "/proc/%d/cwd", tid); > + > + if (stat(path, &st) == -1) > + continue; > + > + name_lnk = malloc(st.st_size + 1); > + > + igt_assert((read = readlink(path, name_lnk, st.st_size + 1))); > + name_lnk[read] = '\0'; > + > + if (!strncmp(dir, name_lnk, strlen(dir))) > + igt_show_stat(tid, pid_comm, &state, name_lnk); > + > + /* check also fd, seems that lsof(8) doesn't look here */ > + memset(path, 0, sizeof(path)); > + snprintf(path, sizeof(path), "/proc/%d/fd", tid); > + > + __igt_lsof_fds(tid, pid_comm, &state, path, dir); > + > + free(name_lnk); > + } > + procps_pids_unref(&info); > +#endif > } > > /** > @@ -1490,7 +1579,7 @@ igt_lsof(const char *dpath) > free(sanitized); > } > > -static void pulseaudio_unload_module(proc_t *proc_info) > +static void pulseaudio_unload_module(const uid_t euid, const gid_t egid) > { > struct igt_helper_process pa_proc = {}; > char xdg_dir[PATH_MAX]; > @@ -1498,14 +1587,14 @@ static void pulseaudio_unload_module(proc_t *proc_info) > struct passwd *pw; > > igt_fork_helper(&pa_proc) { > - pw = getpwuid(proc_info->euid); > + pw = getpwuid(euid); > homedir = pw->pw_dir; > - snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", proc_info->euid); > + snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", euid); > > igt_info("Request pulseaudio to stop using audio device\n"); > > - setgid(proc_info->egid); > - setuid(proc_info->euid); > + setgid(egid); > + setuid(euid); > clearenv(); > setenv("HOME", homedir, 1); > setenv("XDG_RUNTIME_DIR",xdg_dir, 1); > @@ -1524,10 +1613,13 @@ static void pipewire_reserve_wait(void) > char xdg_dir[PATH_MAX]; > const char *homedir; > struct passwd *pw; > - proc_t *proc_info; > - PROCTAB *proc; > + int tid = 0, euid, egid; > > +#ifdef HAVE_LIBPROCPS > igt_fork_helper(&pw_reserve_proc) { > + proc_t *proc_info; > + PROCTAB *proc; > + > igt_info("Preventing pipewire-pulse to use the audio drivers\n"); > > proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG); > @@ -1540,19 +1632,45 @@ static void pipewire_reserve_wait(void) > } > closeproc(proc); > > + tid = proc_info->tid; > + euid = proc_info->euid; > + egid = proc_info->egid; > + freeproc(proc_info); > +#else > + igt_fork_helper(&pw_reserve_proc) { > + enum pids_item Items[] = { PIDS_ID_PID, PIDS_ID_EUID, PIDS_ID_EGID }; > + enum rel_items { EU_PID, EU_EUID, EU_EGID }; > + struct pids_info *info = NULL; > + struct pids_stack *stack; > + > + igt_info("Preventing pipewire-pulse to use the audio drivers\n"); > + > + if (procps_pids_new(&info, Items, 3) < 0) { > + igt_info("error getting pids: %d\n", errno); > + exit(errno); > + } > + while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { > + tid = PIDS_VAL(EU_PID, s_int, stack, info); > + if (pipewire_pulse_pid == tid) > + break; > + } > + euid = PIDS_VAL(EU_EUID, s_int, stack, info); > + egid = PIDS_VAL(EU_EGID, s_int, stack, info); > + procps_pids_unref(&info); > +#endif > + > /* Sanity check: if it can't find the process, it means it has gone */ > - if (pipewire_pulse_pid != proc_info->tid) > + if (pipewire_pulse_pid != tid) > exit(0); > > - pw = getpwuid(proc_info->euid); > + pw = getpwuid(euid); > homedir = pw->pw_dir; > - snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", proc_info->euid); > - setgid(proc_info->egid); > - setuid(proc_info->euid); > + snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", euid); > + setgid(egid); > + setuid(euid); > clearenv(); > setenv("HOME", homedir, 1); > setenv("XDG_RUNTIME_DIR",xdg_dir, 1); > - freeproc(proc_info); > > /* > * pw-reserve will run in background. It will only exit when > @@ -1570,9 +1688,7 @@ static void pipewire_reserve_wait(void) > int pipewire_pulse_start_reserve(void) > { > bool is_pw_reserve_running = false; > - proc_t *proc_info; > int attempts = 0; > - PROCTAB *proc; > > if (!pipewire_pulse_pid) > return 0; > @@ -1584,6 +1700,10 @@ int pipewire_pulse_start_reserve(void) > * pipewire version 0.3.50 or upper. > */ > for (attempts = 0; attempts < PIPEWIRE_RESERVE_MAX_TIME; attempts++) { > +#ifdef HAVE_LIBPROCPS > + PROCTAB *proc; > + proc_t *proc_info; > + > usleep(1000); > proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG); > igt_assert(proc != NULL); > @@ -1598,6 +1718,24 @@ int pipewire_pulse_start_reserve(void) > freeproc(proc_info); > } > closeproc(proc); > +#else > + enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD }; > + struct pids_info *info = NULL; > + struct pids_stack *stack; > + > + usleep(1000); > + > + if (procps_pids_new(&info, Items, 2) < 0) > + return 1; > + while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { > + if (!strcmp(PIDS_VAL(1, str, stack, info), "pw-reserve")) { > + is_pw_reserve_running = true; > + pipewire_pw_reserve_pid = PIDS_VAL(0, s_int, stack, info); > + break; > + } > + } > + procps_pids_unref(&info); > +#endif > if (is_pw_reserve_running) > break; > } > @@ -1645,7 +1783,7 @@ void pipewire_pulse_stop_reserve(void) > * If the check fails, it means that the process can simply be killed. > */ > static int > -__igt_lsof_audio_and_kill_proc(proc_t *proc_info, char *proc_path) > +__igt_lsof_audio_and_kill_proc(const pid_t tid, const char *cmd, const uid_t euid, const gid_t egid, char *proc_path) > { > const char *audio_dev = "/dev/snd/"; > char path[PATH_MAX * 2]; > @@ -1670,10 +1808,10 @@ __igt_lsof_audio_and_kill_proc(proc_t *proc_info, char *proc_path) > * 2) unload/unbind the the audio driver(s); > * 3) stop the pw-reserve thread. > */ > - if (!strcmp(proc_info->cmd, "pipewire-pulse")) { > + if (!strcmp(cmd, "pipewire-pulse")) { > igt_info("process %d (%s) is using audio device. Should be requested to stop using them.\n", > - proc_info->tid, proc_info->cmd); > - pipewire_pulse_pid = proc_info->tid; > + tid, cmd); > + pipewire_pulse_pid = tid; > return 0; > } > /* > @@ -1685,9 +1823,9 @@ __igt_lsof_audio_and_kill_proc(proc_t *proc_info, char *proc_path) > * will respawn them. So, just ignore here, they'll honor pw-reserve, > * when the time comes. > */ > - if (!strcmp(proc_info->cmd, "pipewire-media-session")) > + if (!strcmp(cmd, "pipewire-media-session")) > return 0; > - if (!strcmp(proc_info->cmd, "wireplumber")) > + if (!strcmp(cmd, "wireplumber")) > return 0; > > dp = opendir(proc_path); > @@ -1723,22 +1861,22 @@ __igt_lsof_audio_and_kill_proc(proc_t *proc_info, char *proc_path) > * enough to unbind audio modules and won't cause race issues > * with systemd trying to reload it. > */ > - if (!strcmp(proc_info->cmd, "pulseaudio")) { > - pulseaudio_unload_module(proc_info); > + if (!strcmp(cmd, "pulseaudio")) { > + pulseaudio_unload_module(euid, egid); > break; > } > > /* For all other processes, just kill them */ > igt_info("process %d (%s) is using audio device. Should be terminated.\n", > - proc_info->tid, proc_info->cmd); > + tid, cmd); > > - if (kill(proc_info->tid, SIGTERM) < 0) { > + if (kill(tid, SIGTERM) < 0) { > igt_info("Fail to terminate %s (pid: %d) with SIGTERM\n", > - proc_info->cmd, proc_info->tid); > - if (kill(proc_info->tid, SIGABRT) < 0) { > + cmd, tid); > + if (kill(tid, SIGABRT) < 0) { > fail++; > igt_info("Fail to terminate %s (pid: %d) with SIGABRT\n", > - proc_info->cmd, proc_info->tid); > + cmd, tid); > } > } > > @@ -1760,23 +1898,47 @@ int > igt_lsof_kill_audio_processes(void) > { > char path[PATH_MAX]; > + int fail = 0; > + > +#ifdef HAVE_LIBPROCPS > proc_t *proc_info; > PROCTAB *proc; > - int fail = 0; > > proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG); > igt_assert(proc != NULL); > pipewire_pulse_pid = 0; > - > while ((proc_info = readproc(proc, NULL))) { > if (snprintf(path, sizeof(path), "/proc/%d/fd", proc_info->tid) < 1) > fail++; > else > - fail += __igt_lsof_audio_and_kill_proc(proc_info, path); > + fail += __igt_lsof_audio_and_kill_proc(proc_info->tid, proc_info->cmd, proc_info->euid, proc_info->egid, path); > > freeproc(proc_info); > } > closeproc(proc); > +#else > + enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD, PIDS_ID_EUID, PIDS_ID_EGID }; > + enum rel_items { EU_PID, EU_CMD, EU_EUID, EU_EGID }; > + struct pids_info *info = NULL; > + struct pids_stack *stack; > + pid_t tid; > + > + if (procps_pids_new(&info, Items, 4) < 0) > + return 1; > + while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { > + tid = PIDS_VAL(EU_PID, s_int, stack, info); > + > + if (snprintf(path, sizeof(path), "/proc/%d/fd", tid) < 1) > + fail++; > + else > + fail += __igt_lsof_audio_and_kill_proc(tid, > + PIDS_VAL(EU_CMD, str, stack, info), > + PIDS_VAL(EU_EUID, s_int, stack, info), > + PIDS_VAL(EU_EGID, s_int, stack, info), > + path); > + } > + procps_pids_unref(&info); > +#endif > > return fail; > } > diff --git a/lib/meson.build b/lib/meson.build > index 85f100f75..55efdc83b 100644 > --- a/lib/meson.build > +++ b/lib/meson.build > @@ -114,7 +114,6 @@ lib_deps = [ > libdrm, > libdw, > libkmod, > - libprocps, > libudev, > math, > pciaccess, > @@ -178,6 +177,12 @@ if chamelium.found() > lib_sources += 'monitor_edids/monitor_edids_helper.c' > endif > > +if libprocps.found() > + lib_deps += libprocps > +else > + lib_deps += libproc2 > +endif > + > if get_option('srcdir') != '' > srcdir = join_paths(get_option('srcdir'), 'tests') > else > diff --git a/meson.build b/meson.build > index 1c872cc9c..0487158dc 100644 > --- a/meson.build > +++ b/meson.build > @@ -125,7 +125,15 @@ build_info += 'With libdrm: ' + ','.join(libdrm_info) > > pciaccess = dependency('pciaccess', version : '>=0.10') > libkmod = dependency('libkmod') > -libprocps = dependency('libprocps', required : true) > +libprocps = dependency('libprocps', required : false) > +libproc2 = dependency('libproc2', required : false) > +if libprocps.found() > + config.set('HAVE_LIBPROCPS', 1) > +elif libproc2.found() > + config.set('HAVE_LIBPROC2', 1) > +else > + error('Either libprocps or libproc2 is required') > +endif > > libunwind = dependency('libunwind', required : get_option('libunwind')) > build_info += 'With libunwind: @0@'.format(libunwind.found()) ^ permalink raw reply [flat|nested] 13+ messages in thread
* [igt-dev] [PATCH i-g-t 2/2] lib/igt_aux: unify procps processing 2023-05-15 18:46 [igt-dev] [PATCH i-g-t 0/2] Use new procps library libproc2 Kamil Konieczny 2023-05-15 18:46 ` [igt-dev] [PATCH i-g-t 1/2] Use the " Kamil Konieczny @ 2023-05-15 18:46 ` Kamil Konieczny 2023-05-15 20:31 ` [igt-dev] ✗ Fi.CI.BAT: failure for Use new procps library libproc2 (rev2) Patchwork ` (6 subsequent siblings) 8 siblings, 0 replies; 13+ messages in thread From: Kamil Konieczny @ 2023-05-15 18:46 UTC (permalink / raw) To: igt-dev Create common interface for processing proc info, thus making its useage more striteforward and located in one place. This should make it easier to read and modify. v2: fixed errors on old libproc code path Suggested-by: Mauro Carvalho Chehab <mauro.chehab@linux.intel.com> Signed-off-by: Kamil Konieczny <kamil.konieczny@linux.intel.com> --- lib/igt_aux.c | 354 +++++++++++++++++++------------------------------- 1 file changed, 137 insertions(+), 217 deletions(-) diff --git a/lib/igt_aux.c b/lib/igt_aux.c index 4c24b0928..f2b9671e3 100644 --- a/lib/igt_aux.c +++ b/lib/igt_aux.c @@ -1214,6 +1214,88 @@ void igt_unlock_mem(void) locked_mem = NULL; } +struct igt_process { +#ifdef HAVE_LIBPROCPS + PROCTAB * proc; + proc_t *proc_info; +#else + struct pids_info *info; + struct pids_stack *stack; +#endif + pid_t tid; + pid_t euid; + pid_t egid; + char *comm; +}; + +static void open_process(struct igt_process *prcs) +{ +#ifdef HAVE_LIBPROCPS + prcs->proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG); + igt_assert_f(prcs->proc != NULL, "procps open failed\n"); + prcs->proc_info = NULL; +#else + enum pids_item Items[] = { PIDS_ID_PID, PIDS_ID_EUID, PIDS_ID_EGID, PIDS_CMD }; + int err; + + prcs->info = NULL; + err = procps_pids_new(&prcs->info, Items, 4); + igt_assert_f(err >= 0, "procps-ng open failed\n"); + prcs->stack = NULL; +#endif + prcs->tid = 0; + prcs->comm = NULL; +} + +static void close_process(struct igt_process *prcs) +{ +#ifdef HAVE_LIBPROCPS + if (prcs->proc_info) + freeproc(prcs->proc_info); + + closeproc(prcs->proc); + prcs->proc_info = NULL; + prcs->proc = NULL; +#else + procps_pids_unref(&prcs->info); + prcs->info = NULL; +#endif + prcs->tid = 0; + prcs->comm = NULL; +} + +static bool get_process_ids(struct igt_process *prcs) +{ +#ifdef HAVE_LIBPROCPS + if (prcs->proc_info) + freeproc(prcs->proc_info); + + prcs->tid = 0; + prcs->comm = NULL; + prcs->proc_info = readproc(prcs->proc, NULL); + + if (prcs->proc_info) { + prcs->tid = prcs->proc_info->tid; + prcs->euid = prcs->proc_info->euid; + prcs->egid = prcs->proc_info->egid; + prcs->comm = prcs->proc_info->cmd; + } +#else + enum rel_items { EU_PID, EU_EUID, EU_EGID, EU_CMD }; // order at open + + prcs->tid = 0; + prcs->comm = NULL; + prcs->stack = procps_pids_get(prcs->info, PIDS_FETCH_TASKS_ONLY); + if (prcs->stack) { + prcs->tid = PIDS_VAL(EU_PID, s_int, prcs->stack, prcs->info); + prcs->euid = PIDS_VAL(EU_EUID, s_int, prcs->stack, prcs->info); + prcs->egid = PIDS_VAL(EU_EGID, s_int, prcs->stack, prcs->info); + prcs->comm = PIDS_VAL(EU_CMD, str, prcs->stack, prcs->info); + } +#endif + return prcs->tid != 0; +} + /** * igt_is_process_running: * @comm: Name of process in the form found in /proc/pid/comm (limited to 15 @@ -1225,45 +1307,28 @@ void igt_unlock_mem(void) */ int igt_is_process_running(const char *comm) { -#if HAVE_LIBPROCPS - PROCTAB *proc; - proc_t *proc_info; + struct igt_process pc; bool found = false; + int len; - proc = openproc(PROC_FILLCOM | PROC_FILLSTAT); - igt_assert(proc != NULL); - - while ((proc_info = readproc(proc, NULL))) { - if (!strncasecmp(proc_info->cmd, comm, sizeof(proc_info->cmd))) { - freeproc(proc_info); - found = true; - break; - } - freeproc(proc_info); - } - - closeproc(proc); - return found; -#else - enum pids_item Item[] = { PIDS_CMD }; - struct pids_info *info = NULL; - struct pids_stack *stack; - char *pid_comm; - bool found = false; - - if (procps_pids_new(&info, Item, 1) < 0) + if (!comm) + return false; + len = strlen(comm); + if (!len) return false; - while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { - pid_comm = PIDS_VAL(0, str, stack, info); - if (!strncasecmp(pid_comm, comm, strlen(pid_comm))) { + + open_process(&pc); + while (get_process_ids(&pc)) { + if (strlen(pc.comm) != len) + continue; + if (!strncasecmp(pc.comm, comm, len)) { found = true; break; } } + close_process(&pc); - procps_pids_unref(&info); return found; -#endif } /** @@ -1280,50 +1345,29 @@ int igt_is_process_running(const char *comm) */ int igt_terminate_process(int sig, const char *comm) { -#if HAVE_LIBPROCPS - PROCTAB *proc; - proc_t *proc_info; + struct igt_process pc; int err = 0; + int len; - proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG); - igt_assert(proc != NULL); - - while ((proc_info = readproc(proc, NULL))) { - if (!strncasecmp(proc_info->cmd, comm, sizeof(proc_info->cmd))) { + if (!comm) + return 0; + len = strlen(comm); + if (!len) + return 0; - if (kill(proc_info->tid, sig) < 0) + open_process(&pc); + while (get_process_ids(&pc)) { + if (strlen(pc.comm) != len) + continue; + if (!strncasecmp(pc.comm, comm, len)) { + if (kill(pc.tid, sig) < 0) err = -errno; - - freeproc(proc_info); break; } - freeproc(proc_info); } + close_process(&pc); - closeproc(proc); - return err; -#else - enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD }; - struct pids_info *info = NULL; - struct pids_stack *stack; - char *pid_comm; - int pid; - int err = 0; - - if (procps_pids_new(&info, Items, 2) < 0) - return -errno; - while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { - pid = PIDS_VAL(0, s_int, stack, info); - pid_comm = PIDS_VAL(1, str, stack, info); - if (!strncasecmp(pid_comm, comm, strlen(pid_comm))) { - if (kill(pid, sig) < 0) - err = -errno; - break; - } - } - procps_pids_unref(&info); return err; -#endif } struct pinfo { @@ -1472,19 +1516,15 @@ __igt_lsof(const char *dir) char *name_lnk; struct stat st; int state = 0; -#ifdef HAVE_LIBPROCPS - PROCTAB *proc; - proc_t *proc_info; - - proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG); - igt_assert(proc != NULL); + struct igt_process pc; - while ((proc_info = readproc(proc, NULL))) { + open_process(&pc); + while (get_process_ids(&pc)) { ssize_t read; /* check current working directory */ memset(path, 0, sizeof(path)); - snprintf(path, sizeof(path), "/proc/%d/cwd", proc_info->tid); + snprintf(path, sizeof(path), "/proc/%d/cwd", pc.tid); if (stat(path, &st) == -1) continue; @@ -1495,56 +1535,17 @@ __igt_lsof(const char *dir) name_lnk[read] = '\0'; if (!strncmp(dir, name_lnk, strlen(dir))) - igt_show_stat(proc_info->tid, proc_info->cmd, &state, name_lnk); + igt_show_stat(pc.tid, pc.comm, &state, name_lnk); /* check also fd, seems that lsof(8) doesn't look here */ memset(path, 0, sizeof(path)); - snprintf(path, sizeof(path), "/proc/%d/fd", proc_info->tid); + snprintf(path, sizeof(path), "/proc/%d/fd", pc.tid); - __igt_lsof_fds(proc_info->tid, proc_info->cmd, &state, path, dir); + __igt_lsof_fds(pc.tid, pc.comm, &state, path, dir); free(name_lnk); - freeproc(proc_info); } - - closeproc(proc); -#else - enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD }; - struct pids_info *info = NULL; - struct pids_stack *stack; - - if (procps_pids_new(&info, Items, 2) < 0) - return; - while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { - ssize_t read; - int tid = PIDS_VAL(0, s_int, stack, info); - char *pid_comm = PIDS_VAL(1, str, stack, info); - - /* check current working directory */ - memset(path, 0, sizeof(path)); - snprintf(path, sizeof(path), "/proc/%d/cwd", tid); - - if (stat(path, &st) == -1) - continue; - - name_lnk = malloc(st.st_size + 1); - - igt_assert((read = readlink(path, name_lnk, st.st_size + 1))); - name_lnk[read] = '\0'; - - if (!strncmp(dir, name_lnk, strlen(dir))) - igt_show_stat(tid, pid_comm, &state, name_lnk); - - /* check also fd, seems that lsof(8) doesn't look here */ - memset(path, 0, sizeof(path)); - snprintf(path, sizeof(path), "/proc/%d/fd", tid); - - __igt_lsof_fds(tid, pid_comm, &state, path, dir); - - free(name_lnk); - } - procps_pids_unref(&info); -#endif + close_process(&pc); } /** @@ -1608,6 +1609,7 @@ 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) { char xdg_dir[PATH_MAX]; @@ -1615,49 +1617,19 @@ static void pipewire_reserve_wait(void) struct passwd *pw; int tid = 0, euid, egid; -#ifdef HAVE_LIBPROCPS igt_fork_helper(&pw_reserve_proc) { - proc_t *proc_info; - PROCTAB *proc; + struct igt_process pc; igt_info("Preventing pipewire-pulse to use the audio drivers\n"); - - proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG); - igt_assert(proc != NULL); - - while ((proc_info = readproc(proc, NULL))) { - if (pipewire_pulse_pid == proc_info->tid) - break; - freeproc(proc_info); - } - closeproc(proc); - - tid = proc_info->tid; - euid = proc_info->euid; - egid = proc_info->egid; - freeproc(proc_info); -#else - igt_fork_helper(&pw_reserve_proc) { - enum pids_item Items[] = { PIDS_ID_PID, PIDS_ID_EUID, PIDS_ID_EGID }; - enum rel_items { EU_PID, EU_EUID, EU_EGID }; - struct pids_info *info = NULL; - struct pids_stack *stack; - - igt_info("Preventing pipewire-pulse to use the audio drivers\n"); - - if (procps_pids_new(&info, Items, 3) < 0) { - igt_info("error getting pids: %d\n", errno); - exit(errno); - } - while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { - tid = PIDS_VAL(EU_PID, s_int, stack, info); + open_process(&pc); + while (get_process_ids(&pc)) { + tid = pc.tid; + euid = pc.euid; + egid = pc.egid; if (pipewire_pulse_pid == tid) break; } - euid = PIDS_VAL(EU_EUID, s_int, stack, info); - egid = PIDS_VAL(EU_EGID, s_int, stack, info); - procps_pids_unref(&info); -#endif + close_process(&pc); /* Sanity check: if it can't find the process, it means it has gone */ if (pipewire_pulse_pid != tid) @@ -1700,42 +1672,19 @@ int pipewire_pulse_start_reserve(void) * pipewire version 0.3.50 or upper. */ for (attempts = 0; attempts < PIPEWIRE_RESERVE_MAX_TIME; attempts++) { -#ifdef HAVE_LIBPROCPS - PROCTAB *proc; - proc_t *proc_info; + struct igt_process pc; usleep(1000); - proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG); - igt_assert(proc != NULL); - - while ((proc_info = readproc(proc, NULL))) { - if (!strcmp(proc_info->cmd, "pw-reserve")) { + open_process(&pc); + while (get_process_ids(&pc)) { + if (!strcmp(pc.comm, "pw-reserve")) { is_pw_reserve_running = true; - pipewire_pw_reserve_pid = proc_info->tid; - freeproc(proc_info); + pipewire_pw_reserve_pid = pc.tid; break; } - freeproc(proc_info); } - closeproc(proc); -#else - enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD }; - struct pids_info *info = NULL; - struct pids_stack *stack; - - usleep(1000); + close_process(&pc); - if (procps_pids_new(&info, Items, 2) < 0) - return 1; - while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { - if (!strcmp(PIDS_VAL(1, str, stack, info), "pw-reserve")) { - is_pw_reserve_running = true; - pipewire_pw_reserve_pid = PIDS_VAL(0, s_int, stack, info); - break; - } - } - procps_pids_unref(&info); -#endif if (is_pw_reserve_running) break; } @@ -1899,46 +1848,17 @@ igt_lsof_kill_audio_processes(void) { char path[PATH_MAX]; int fail = 0; + struct igt_process pc; -#ifdef HAVE_LIBPROCPS - proc_t *proc_info; - PROCTAB *proc; - - proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG); - igt_assert(proc != NULL); + open_process(&pc); pipewire_pulse_pid = 0; - while ((proc_info = readproc(proc, NULL))) { - if (snprintf(path, sizeof(path), "/proc/%d/fd", proc_info->tid) < 1) - fail++; - else - fail += __igt_lsof_audio_and_kill_proc(proc_info->tid, proc_info->cmd, proc_info->euid, proc_info->egid, path); - - freeproc(proc_info); - } - closeproc(proc); -#else - enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD, PIDS_ID_EUID, PIDS_ID_EGID }; - enum rel_items { EU_PID, EU_CMD, EU_EUID, EU_EGID }; - struct pids_info *info = NULL; - struct pids_stack *stack; - pid_t tid; - - if (procps_pids_new(&info, Items, 4) < 0) - return 1; - while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { - tid = PIDS_VAL(EU_PID, s_int, stack, info); - - if (snprintf(path, sizeof(path), "/proc/%d/fd", tid) < 1) + while (get_process_ids(&pc)) { + if (snprintf(path, sizeof(path), "/proc/%d/fd", pc.tid) < 1) fail++; else - fail += __igt_lsof_audio_and_kill_proc(tid, - PIDS_VAL(EU_CMD, str, stack, info), - PIDS_VAL(EU_EUID, s_int, stack, info), - PIDS_VAL(EU_EGID, s_int, stack, info), - path); + fail += __igt_lsof_audio_and_kill_proc(pc.tid, pc.comm, pc.euid, pc.egid, path); } - procps_pids_unref(&info); -#endif + close_process(&pc); return fail; } -- 2.39.2 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [igt-dev] ✗ Fi.CI.BAT: failure for Use new procps library libproc2 (rev2) 2023-05-15 18:46 [igt-dev] [PATCH i-g-t 0/2] Use new procps library libproc2 Kamil Konieczny 2023-05-15 18:46 ` [igt-dev] [PATCH i-g-t 1/2] Use the " Kamil Konieczny 2023-05-15 18:46 ` [igt-dev] [PATCH i-g-t 2/2] lib/igt_aux: unify procps processing Kamil Konieczny @ 2023-05-15 20:31 ` Patchwork 2023-05-16 8:48 ` [igt-dev] [PATCH i-g-t 0/2] Use new procps library libproc2 Tvrtko Ursulin ` (5 subsequent siblings) 8 siblings, 0 replies; 13+ messages in thread From: Patchwork @ 2023-05-15 20:31 UTC (permalink / raw) To: Kamil Konieczny; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 7399 bytes --] == Series Details == Series: Use new procps library libproc2 (rev2) URL : https://patchwork.freedesktop.org/series/117699/ State : failure == Summary == CI Bug Log - changes from IGT_7291 -> IGTPW_8967 ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with IGTPW_8967 absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in IGTPW_8967, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8967/index.html Participating hosts (37 -> 36) ------------------------------ Additional (1): bat-mtlp-8 Missing (2): fi-kbl-soraka fi-snb-2520m Possible new issues ------------------- Here are the unknown changes that may have been introduced in IGTPW_8967: ### IGT changes ### #### Possible regressions #### * igt@gem_exec_gttfill@basic: - bat-atsm-1: [PASS][1] -> [INCOMPLETE][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7291/bat-atsm-1/igt@gem_exec_gttfill@basic.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8967/bat-atsm-1/igt@gem_exec_gttfill@basic.html * igt@i915_module_load@reload: - bat-adls-5: [PASS][3] -> [ABORT][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7291/bat-adls-5/igt@i915_module_load@reload.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8967/bat-adls-5/igt@i915_module_load@reload.html Known issues ------------ Here are the changes found in IGTPW_8967 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@i915_selftest@live@gt_heartbeat: - fi-apl-guc: [PASS][5] -> [DMESG-FAIL][6] ([i915#5334]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7291/fi-apl-guc/igt@i915_selftest@live@gt_heartbeat.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8967/fi-apl-guc/igt@i915_selftest@live@gt_heartbeat.html * igt@i915_selftest@live@migrate: - bat-dg2-11: [PASS][7] -> [DMESG-WARN][8] ([i915#7699] / [i915#7953]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7291/bat-dg2-11/igt@i915_selftest@live@migrate.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8967/bat-dg2-11/igt@i915_selftest@live@migrate.html * igt@i915_selftest@live@reset: - bat-rpls-1: NOTRUN -> [ABORT][9] ([i915#4983] / [i915#7461] / [i915#7953] / [i915#8347] / [i915#8384]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8967/bat-rpls-1/igt@i915_selftest@live@reset.html * igt@i915_selftest@live@slpc: - bat-rpls-2: NOTRUN -> [DMESG-WARN][10] ([i915#6367]) [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8967/bat-rpls-2/igt@i915_selftest@live@slpc.html * igt@kms_pipe_crc_basic@nonblocking-crc@pipe-c-dp-1: - bat-dg2-8: [PASS][11] -> [FAIL][12] ([i915#7932]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7291/bat-dg2-8/igt@kms_pipe_crc_basic@nonblocking-crc@pipe-c-dp-1.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8967/bat-dg2-8/igt@kms_pipe_crc_basic@nonblocking-crc@pipe-c-dp-1.html * igt@kms_pipe_crc_basic@read-crc: - bat-adlp-9: NOTRUN -> [SKIP][13] ([i915#3546]) +1 similar issue [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8967/bat-adlp-9/igt@kms_pipe_crc_basic@read-crc.html * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-d-hdmi-a-3: - bat-dg2-11: [PASS][14] -> [INCOMPLETE][15] ([i915#7908] / [i915#7953]) [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7291/bat-dg2-11/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-d-hdmi-a-3.html [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8967/bat-dg2-11/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-d-hdmi-a-3.html #### Possible fixes #### * igt@i915_selftest@live@mman: - bat-rpls-2: [TIMEOUT][16] ([i915#6794] / [i915#7392]) -> [PASS][17] [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7291/bat-rpls-2/igt@i915_selftest@live@mman.html [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8967/bat-rpls-2/igt@i915_selftest@live@mman.html * igt@i915_selftest@live@requests: - bat-rpls-1: [ABORT][18] ([i915#7911] / [i915#7920] / [i915#7953]) -> [PASS][19] [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7291/bat-rpls-1/igt@i915_selftest@live@requests.html [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8967/bat-rpls-1/igt@i915_selftest@live@requests.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285 [i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546 [i915#3595]: https://gitlab.freedesktop.org/drm/intel/issues/3595 [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708 [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077 [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079 [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083 [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212 [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213 [i915#4579]: https://gitlab.freedesktop.org/drm/intel/issues/4579 [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613 [i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983 [i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190 [i915#5274]: https://gitlab.freedesktop.org/drm/intel/issues/5274 [i915#5334]: https://gitlab.freedesktop.org/drm/intel/issues/5334 [i915#6367]: https://gitlab.freedesktop.org/drm/intel/issues/6367 [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621 [i915#6645]: https://gitlab.freedesktop.org/drm/intel/issues/6645 [i915#6794]: https://gitlab.freedesktop.org/drm/intel/issues/6794 [i915#7392]: https://gitlab.freedesktop.org/drm/intel/issues/7392 [i915#7456]: https://gitlab.freedesktop.org/drm/intel/issues/7456 [i915#7461]: https://gitlab.freedesktop.org/drm/intel/issues/7461 [i915#7699]: https://gitlab.freedesktop.org/drm/intel/issues/7699 [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828 [i915#7908]: https://gitlab.freedesktop.org/drm/intel/issues/7908 [i915#7911]: https://gitlab.freedesktop.org/drm/intel/issues/7911 [i915#7920]: https://gitlab.freedesktop.org/drm/intel/issues/7920 [i915#7932]: https://gitlab.freedesktop.org/drm/intel/issues/7932 [i915#7953]: https://gitlab.freedesktop.org/drm/intel/issues/7953 [i915#8347]: https://gitlab.freedesktop.org/drm/intel/issues/8347 [i915#8384]: https://gitlab.freedesktop.org/drm/intel/issues/8384 Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_7291 -> IGTPW_8967 CI-20190529: 20190529 CI_DRM_13148: 57a535e042517014a85f33be6fa5ed22145c56e9 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_8967: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8967/index.html IGT_7291: a536bd30aaeb1ab02dc4f37d2d723c37be356d8d @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git Testlist changes ---------------- -igt@kms_fb_coherency@memset-crc == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8967/index.html [-- Attachment #2: Type: text/html, Size: 7392 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 0/2] Use new procps library libproc2 2023-05-15 18:46 [igt-dev] [PATCH i-g-t 0/2] Use new procps library libproc2 Kamil Konieczny ` (2 preceding siblings ...) 2023-05-15 20:31 ` [igt-dev] ✗ Fi.CI.BAT: failure for Use new procps library libproc2 (rev2) Patchwork @ 2023-05-16 8:48 ` Tvrtko Ursulin 2023-05-17 14:14 ` Kamil Konieczny 2023-05-16 17:42 ` [igt-dev] ✗ GitLab.Pipeline: warning for Use new procps library libproc2 (rev3) Patchwork ` (4 subsequent siblings) 8 siblings, 1 reply; 13+ messages in thread From: Tvrtko Ursulin @ 2023-05-16 8:48 UTC (permalink / raw) To: Kamil Konieczny, igt-dev Hi, On 15/05/2023 19:46, Kamil Konieczny wrote: > This is resend of following patch with minor corrections: > > https://patchwork.freedesktop.org/series/111015/ > Use the new procps library libproc2 Is this series required to build on latest distros by any chance? Regards, Tvrtko > > I also added second patch with some simplifications suggested > by Mauro in: > > https://patchwork.freedesktop.org/series/116896/ > Use new library libproc2 > > v2: corrected 2/2 "lib/igt_aux: unify procps processing" > on old lib path > > Cc: Mauro Carvalho Chehab <mauro.chehab@linux.intel.com> > > Craig Small (1): > Use the new procps library libproc2 > > Kamil Konieczny (1): > lib/igt_aux: unify procps processing > > lib/igt_aux.c | 276 +++++++++++++++++++++++++++++++----------------- > lib/meson.build | 7 +- > meson.build | 10 +- > 3 files changed, 194 insertions(+), 99 deletions(-) > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 0/2] Use new procps library libproc2 2023-05-16 8:48 ` [igt-dev] [PATCH i-g-t 0/2] Use new procps library libproc2 Tvrtko Ursulin @ 2023-05-17 14:14 ` Kamil Konieczny 0 siblings, 0 replies; 13+ messages in thread From: Kamil Konieczny @ 2023-05-17 14:14 UTC (permalink / raw) To: igt-dev Hi, On 2023-05-16 at 09:48:06 +0100, Tvrtko Ursulin wrote: > > Hi, > > On 15/05/2023 19:46, Kamil Konieczny wrote: > > This is resend of following patch with minor corrections: > > > > https://patchwork.freedesktop.org/series/111015/ > > Use the new procps library libproc2 > > Is this series required to build on latest distros by any chance? > > Regards, > > Tvrtko Yes on latest Ubuntu 23.04 Regards, Kamil > > I also added second patch with some simplifications suggested > > by Mauro in: > > > > https://patchwork.freedesktop.org/series/116896/ > > Use new library libproc2 > > > > v2: corrected 2/2 "lib/igt_aux: unify procps processing" > > on old lib path > > > > Cc: Mauro Carvalho Chehab <mauro.chehab@linux.intel.com> > > > > Craig Small (1): > > Use the new procps library libproc2 > > > > Kamil Konieczny (1): > > lib/igt_aux: unify procps processing > > > > lib/igt_aux.c | 276 +++++++++++++++++++++++++++++++----------------- > > lib/meson.build | 7 +- > > meson.build | 10 +- > > 3 files changed, 194 insertions(+), 99 deletions(-) > > ^ permalink raw reply [flat|nested] 13+ messages in thread
* [igt-dev] ✗ GitLab.Pipeline: warning for Use new procps library libproc2 (rev3) 2023-05-15 18:46 [igt-dev] [PATCH i-g-t 0/2] Use new procps library libproc2 Kamil Konieczny ` (3 preceding siblings ...) 2023-05-16 8:48 ` [igt-dev] [PATCH i-g-t 0/2] Use new procps library libproc2 Tvrtko Ursulin @ 2023-05-16 17:42 ` Patchwork 2023-05-16 18:13 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork ` (3 subsequent siblings) 8 siblings, 0 replies; 13+ messages in thread From: Patchwork @ 2023-05-16 17:42 UTC (permalink / raw) To: Kamil Konieczny; +Cc: igt-dev == Series Details == Series: Use new procps library libproc2 (rev3) URL : https://patchwork.freedesktop.org/series/117699/ State : warning == Summary == Pipeline status: FAILED. see https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/882554 for the overview. build-containers:build-debian-armhf has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/41836827): time="2023-05-16T17:40:59Z" level=fatal msg="Error determining repository tags: Invalid status code returned when fetching tags list 500 (Internal Server Error)" Building! STEP 1: FROM debian:buster Getting image source signatures Copying blob sha256:a94073ab46f8d565f5938cc345d32f7adda10a2585e39555079da9d4ee595974 Copying config sha256:dd20fc9536df9a9498531c65f65a6334b2dd8c199476491a4f2be95c148d9cc1 Writing manifest to image destination Storing signatures STEP 2: RUN apt-get update error running container: error creating container for [/bin/sh -c apt-get update]: time="2023-05-16T17:41:02Z" level=warning msg="signal: killed" time="2023-05-16T17:41:02Z" level=error msg="container_linux.go:346: starting container process caused \"process_linux.go:297: applying cgroup configuration for process caused \\\"mountpoint for cgroup not found\\\"\"\n" container_linux.go:346: starting container process caused "process_linux.go:297: applying cgroup configuration for process caused \"mountpoint for cgroup not found\"" : exit status 1 Error: error building at STEP "RUN apt-get update": error while running runtime: exit status 1 section_end:1684258862:step_script section_start:1684258862:cleanup_file_variables Cleaning up project directory and file based variables section_end:1684258864:cleanup_file_variables ERROR: Job failed: exit code 1 == Logs == For more details see: https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/882554 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for Use new procps library libproc2 (rev3) 2023-05-15 18:46 [igt-dev] [PATCH i-g-t 0/2] Use new procps library libproc2 Kamil Konieczny ` (4 preceding siblings ...) 2023-05-16 17:42 ` [igt-dev] ✗ GitLab.Pipeline: warning for Use new procps library libproc2 (rev3) Patchwork @ 2023-05-16 18:13 ` Patchwork 2023-05-17 3:05 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork ` (2 subsequent siblings) 8 siblings, 0 replies; 13+ messages in thread From: Patchwork @ 2023-05-16 18:13 UTC (permalink / raw) To: Kamil Konieczny; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 6343 bytes --] == Series Details == Series: Use new procps library libproc2 (rev3) URL : https://patchwork.freedesktop.org/series/117699/ State : success == Summary == CI Bug Log - changes from CI_DRM_13153 -> IGTPW_8976 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/index.html Participating hosts (38 -> 36) ------------------------------ Missing (2): bat-dg2-9 fi-snb-2520m Known issues ------------ Here are the changes found in IGTPW_8976 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@i915_pm_backlight@basic-brightness@edp-1: - bat-rplp-1: NOTRUN -> [ABORT][1] ([i915#7077]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/bat-rplp-1/igt@i915_pm_backlight@basic-brightness@edp-1.html * igt@i915_selftest@live@gt_heartbeat: - fi-kbl-soraka: [PASS][2] -> [DMESG-FAIL][3] ([i915#5334] / [i915#7872]) [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/fi-kbl-soraka/igt@i915_selftest@live@gt_heartbeat.html [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/fi-kbl-soraka/igt@i915_selftest@live@gt_heartbeat.html * igt@i915_selftest@live@hangcheck: - bat-adls-5: NOTRUN -> [DMESG-WARN][4] ([i915#5591]) [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/bat-adls-5/igt@i915_selftest@live@hangcheck.html * igt@i915_selftest@live@workarounds: - bat-rpls-2: [PASS][5] -> [INCOMPLETE][6] ([i915#7677] / [i915#7913]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/bat-rpls-2/igt@i915_selftest@live@workarounds.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/bat-rpls-2/igt@i915_selftest@live@workarounds.html * igt@kms_chamelium_hpd@common-hpd-after-suspend: - bat-adls-5: NOTRUN -> [SKIP][7] ([i915#7828]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/bat-adls-5/igt@kms_chamelium_hpd@common-hpd-after-suspend.html * igt@kms_pipe_crc_basic@nonblocking-crc@pipe-c-dp-1: - bat-dg2-8: [PASS][8] -> [FAIL][9] ([i915#7932]) [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/bat-dg2-8/igt@kms_pipe_crc_basic@nonblocking-crc@pipe-c-dp-1.html [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/bat-dg2-8/igt@kms_pipe_crc_basic@nonblocking-crc@pipe-c-dp-1.html * igt@kms_pipe_crc_basic@suspend-read-crc: - bat-adls-5: NOTRUN -> [SKIP][10] ([i915#1845]) [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/bat-adls-5/igt@kms_pipe_crc_basic@suspend-read-crc.html #### Possible fixes #### * igt@i915_pm_rpm@basic-rte: - {bat-mtlp-8}: [DMESG-WARN][11] -> [PASS][12] [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/bat-mtlp-8/igt@i915_pm_rpm@basic-rte.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/bat-mtlp-8/igt@i915_pm_rpm@basic-rte.html * igt@i915_selftest@live@gt_engines: - bat-adls-5: [ABORT][13] ([i915#4391]) -> [PASS][14] [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/bat-adls-5/igt@i915_selftest@live@gt_engines.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/bat-adls-5/igt@i915_selftest@live@gt_engines.html * igt@i915_selftest@live@migrate: - bat-dg2-11: [DMESG-WARN][15] ([i915#7699]) -> [PASS][16] [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/bat-dg2-11/igt@i915_selftest@live@migrate.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/bat-dg2-11/igt@i915_selftest@live@migrate.html * igt@i915_selftest@live@slpc: - bat-rpls-1: [DMESG-WARN][17] ([i915#6367]) -> [PASS][18] [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/bat-rpls-1/igt@i915_selftest@live@slpc.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/bat-rpls-1/igt@i915_selftest@live@slpc.html #### Warnings #### * igt@kms_setmode@basic-clone-single-crtc: - bat-rplp-1: [ABORT][19] ([i915#4579] / [i915#8260]) -> [SKIP][20] ([i915#3555] / [i915#4579]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/bat-rplp-1/igt@kms_setmode@basic-clone-single-crtc.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/bat-rplp-1/igt@kms_setmode@basic-clone-single-crtc.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845 [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555 [i915#4391]: https://gitlab.freedesktop.org/drm/intel/issues/4391 [i915#4579]: https://gitlab.freedesktop.org/drm/intel/issues/4579 [i915#5334]: https://gitlab.freedesktop.org/drm/intel/issues/5334 [i915#5591]: https://gitlab.freedesktop.org/drm/intel/issues/5591 [i915#6367]: https://gitlab.freedesktop.org/drm/intel/issues/6367 [i915#7077]: https://gitlab.freedesktop.org/drm/intel/issues/7077 [i915#7677]: https://gitlab.freedesktop.org/drm/intel/issues/7677 [i915#7699]: https://gitlab.freedesktop.org/drm/intel/issues/7699 [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828 [i915#7872]: https://gitlab.freedesktop.org/drm/intel/issues/7872 [i915#7913]: https://gitlab.freedesktop.org/drm/intel/issues/7913 [i915#7932]: https://gitlab.freedesktop.org/drm/intel/issues/7932 [i915#8260]: https://gitlab.freedesktop.org/drm/intel/issues/8260 Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_7292 -> IGTPW_8976 CI-20190529: 20190529 CI_DRM_13153: 1ceecfa94dd4a059164b23925aecc9db4c4fd3b6 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_8976: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/index.html IGT_7292: 9d9475ffd3b5ae18fd8ec120595385f6c562f249 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git Testlist changes ---------------- -igt@xe_eudebug@basic-client -igt@xe_eudebug@basic-close -igt@xe_eudebug@basic-connect -igt@xe_eudebug@basic-read-event -igt@xe_eudebug@basic-vms -igt@xe_eudebug@discovery-empty -igt@xe_eudebug@discovery-empty-clients -igt@xe_eudebug@discovery-race -igt@xe_eudebug@multiple-sessions == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/index.html [-- Attachment #2: Type: text/html, Size: 7344 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* [igt-dev] ✓ Fi.CI.IGT: success for Use new procps library libproc2 (rev3) 2023-05-15 18:46 [igt-dev] [PATCH i-g-t 0/2] Use new procps library libproc2 Kamil Konieczny ` (5 preceding siblings ...) 2023-05-16 18:13 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork @ 2023-05-17 3:05 ` Patchwork 2023-05-17 12:40 ` [igt-dev] ✓ Fi.CI.BAT: success for Use new procps library libproc2 (rev4) Patchwork 2023-05-17 23:34 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork 8 siblings, 0 replies; 13+ messages in thread From: Patchwork @ 2023-05-17 3:05 UTC (permalink / raw) To: Kamil Konieczny; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 17283 bytes --] == Series Details == Series: Use new procps library libproc2 (rev3) URL : https://patchwork.freedesktop.org/series/117699/ State : success == Summary == CI Bug Log - changes from CI_DRM_13153_full -> IGTPW_8976_full ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/index.html Participating hosts (7 -> 7) ------------------------------ No changes in participating hosts Known issues ------------ Here are the changes found in IGTPW_8976_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@drm_mm@all-tests: - shard-snb: NOTRUN -> [SKIP][1] ([fdo#109271] / [i915#4579]) +3 similar issues [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-snb5/igt@drm_mm@all-tests.html * igt@gem_barrier_race@remote-request@rcs0: - shard-glk: [PASS][2] -> [ABORT][3] ([i915#7461] / [i915#8211]) [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-glk3/igt@gem_barrier_race@remote-request@rcs0.html [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-glk8/igt@gem_barrier_race@remote-request@rcs0.html * igt@gem_exec_fair@basic-none-solo@rcs0: - shard-glk: NOTRUN -> [FAIL][4] ([i915#2842]) [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-glk5/igt@gem_exec_fair@basic-none-solo@rcs0.html * igt@gem_exec_fair@basic-pace-share@rcs0: - shard-apl: [PASS][5] -> [FAIL][6] ([i915#2842]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-apl2/igt@gem_exec_fair@basic-pace-share@rcs0.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-apl3/igt@gem_exec_fair@basic-pace-share@rcs0.html * igt@gem_exec_fair@basic-pace@vcs0: - shard-glk: [PASS][7] -> [FAIL][8] ([i915#2842]) +2 similar issues [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-glk6/igt@gem_exec_fair@basic-pace@vcs0.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-glk7/igt@gem_exec_fair@basic-pace@vcs0.html * igt@gem_huc_copy@huc-copy: - shard-glk: NOTRUN -> [SKIP][9] ([fdo#109271] / [i915#2190]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-glk6/igt@gem_huc_copy@huc-copy.html * igt@i915_selftest@live@gt_heartbeat: - shard-apl: [PASS][10] -> [DMESG-FAIL][11] ([i915#5334]) [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-apl6/igt@i915_selftest@live@gt_heartbeat.html [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-apl2/igt@i915_selftest@live@gt_heartbeat.html * igt@kms_ccs@pipe-a-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs: - shard-glk: NOTRUN -> [SKIP][12] ([fdo#109271] / [i915#3886]) +3 similar issues [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-glk5/igt@kms_ccs@pipe-a-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs.html * igt@kms_ccs@pipe-b-bad-aux-stride-y_tiled_gen12_rc_ccs_cc: - shard-snb: NOTRUN -> [SKIP][13] ([fdo#109271]) +51 similar issues [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-snb2/igt@kms_ccs@pipe-b-bad-aux-stride-y_tiled_gen12_rc_ccs_cc.html * igt@kms_chamelium_color@ctm-blue-to-red: - shard-glk: NOTRUN -> [SKIP][14] ([fdo#109271]) +82 similar issues [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-glk9/igt@kms_chamelium_color@ctm-blue-to-red.html * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions: - shard-glk: NOTRUN -> [FAIL][15] ([i915#2346]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-glk8/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html * igt@kms_flip@plain-flip-ts-check@c-hdmi-a2: - shard-glk: [PASS][16] -> [FAIL][17] ([i915#2122]) [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-glk6/igt@kms_flip@plain-flip-ts-check@c-hdmi-a2.html [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-glk3/igt@kms_flip@plain-flip-ts-check@c-hdmi-a2.html * igt@kms_frontbuffer_tracking@psr-rgb565-draw-render: - shard-apl: NOTRUN -> [SKIP][18] ([fdo#109271]) +2 similar issues [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-apl3/igt@kms_frontbuffer_tracking@psr-rgb565-draw-render.html * igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-hdmi-a-1: - shard-glk: NOTRUN -> [FAIL][19] ([i915#4573]) +1 similar issue [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-glk9/igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-hdmi-a-1.html * igt@kms_psr2_su@frontbuffer-xrgb8888: - shard-glk: NOTRUN -> [SKIP][20] ([fdo#109271] / [i915#658]) [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-glk3/igt@kms_psr2_su@frontbuffer-xrgb8888.html * igt@kms_scaling_modes@scaling-mode-full: - shard-glk: NOTRUN -> [SKIP][21] ([fdo#109271] / [i915#4579]) +9 similar issues [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-glk4/igt@kms_scaling_modes@scaling-mode-full.html * igt@kms_vblank@pipe-c-ts-continuation-idle-hang: - shard-apl: [PASS][22] -> [SKIP][23] ([fdo#109271]) [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-apl7/igt@kms_vblank@pipe-c-ts-continuation-idle-hang.html [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-apl6/igt@kms_vblank@pipe-c-ts-continuation-idle-hang.html - shard-glk: [PASS][24] -> [SKIP][25] ([fdo#109271]) [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-glk6/igt@kms_vblank@pipe-c-ts-continuation-idle-hang.html [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-glk7/igt@kms_vblank@pipe-c-ts-continuation-idle-hang.html #### Possible fixes #### * igt@device_reset@unbind-reset-rebind: - {shard-rkl}: [ABORT][26] ([i915#5507]) -> [PASS][27] [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-rkl-2/igt@device_reset@unbind-reset-rebind.html [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-rkl-7/igt@device_reset@unbind-reset-rebind.html - shard-apl: [ABORT][28] ([i915#5507]) -> [PASS][29] [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-apl1/igt@device_reset@unbind-reset-rebind.html [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-apl2/igt@device_reset@unbind-reset-rebind.html - {shard-tglu}: [ABORT][30] ([i915#5507]) -> [PASS][31] [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-tglu-3/igt@device_reset@unbind-reset-rebind.html [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-tglu-2/igt@device_reset@unbind-reset-rebind.html * igt@drm_fdinfo@most-busy-idle-check-all@rcs0: - {shard-rkl}: [FAIL][32] ([i915#7742]) -> [PASS][33] +1 similar issue [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-rkl-4/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-rkl-6/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html * igt@gem_ctx_freq@sysfs: - {shard-dg1}: [FAIL][34] ([i915#6786]) -> [PASS][35] [34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-dg1-12/igt@gem_ctx_freq@sysfs.html [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-dg1-12/igt@gem_ctx_freq@sysfs.html * igt@gem_exec_fair@basic-none@vcs0: - {shard-rkl}: [FAIL][36] ([i915#2842]) -> [PASS][37] +1 similar issue [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-rkl-1/igt@gem_exec_fair@basic-none@vcs0.html [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-rkl-2/igt@gem_exec_fair@basic-none@vcs0.html * igt@gem_exec_fair@basic-pace-share@rcs0: - shard-glk: [FAIL][38] ([i915#2842]) -> [PASS][39] [38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-glk7/igt@gem_exec_fair@basic-pace-share@rcs0.html [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-glk8/igt@gem_exec_fair@basic-pace-share@rcs0.html * igt@gem_ppgtt@blt-vs-render-ctx0: - shard-snb: [DMESG-FAIL][40] ([i915#8295]) -> [PASS][41] [40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-snb6/igt@gem_ppgtt@blt-vs-render-ctx0.html [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-snb4/igt@gem_ppgtt@blt-vs-render-ctx0.html * igt@gen9_exec_parse@allowed-single: - shard-glk: [ABORT][42] ([i915#5566]) -> [PASS][43] [42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-glk3/igt@gen9_exec_parse@allowed-single.html [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-glk3/igt@gen9_exec_parse@allowed-single.html * igt@i915_pm_dc@dc9-dpms: - shard-apl: [SKIP][44] ([fdo#109271]) -> [PASS][45] [44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-apl1/igt@i915_pm_dc@dc9-dpms.html [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-apl6/igt@i915_pm_dc@dc9-dpms.html * igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-hdmi-a: - {shard-rkl}: [SKIP][46] ([i915#1937] / [i915#4579]) -> [PASS][47] [46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-rkl-6/igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-hdmi-a.html [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-rkl-7/igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-hdmi-a.html * igt@i915_pm_rc6_residency@rc6-idle@vecs0: - {shard-dg1}: [FAIL][48] ([i915#3591]) -> [PASS][49] [48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-dg1-15/igt@i915_pm_rc6_residency@rc6-idle@vecs0.html [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-dg1-13/igt@i915_pm_rc6_residency@rc6-idle@vecs0.html * igt@i915_pm_rps@reset: - shard-snb: [INCOMPLETE][50] ([i915#7790]) -> [PASS][51] [50]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-snb2/igt@i915_pm_rps@reset.html [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-snb6/igt@i915_pm_rps@reset.html * igt@i915_selftest@perf@engine_cs: - shard-snb: [ABORT][52] ([i915#4528] / [i915#4579]) -> [PASS][53] [52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-snb2/igt@i915_selftest@perf@engine_cs.html [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-snb6/igt@i915_selftest@perf@engine_cs.html * {igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-1}: - {shard-tglu}: [FAIL][54] ([i915#8292]) -> [PASS][55] [54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-tglu-3/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-1.html [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/shard-tglu-5/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-1.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274 [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280 [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289 [fdo#109300]: https://bugs.freedesktop.org/show_bug.cgi?id=109300 [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315 [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189 [fdo#110542]: https://bugs.freedesktop.org/show_bug.cgi?id=110542 [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723 [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068 [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615 [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825 [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072 [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397 [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825 [i915#1937]: https://gitlab.freedesktop.org/drm/intel/issues/1937 [i915#2122]: https://gitlab.freedesktop.org/drm/intel/issues/2122 [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190 [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346 [i915#2436]: https://gitlab.freedesktop.org/drm/intel/issues/2436 [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527 [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575 [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672 [i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681 [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842 [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856 [i915#3023]: https://gitlab.freedesktop.org/drm/intel/issues/3023 [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281 [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297 [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359 [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458 [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555 [i915#3591]: https://gitlab.freedesktop.org/drm/intel/issues/3591 [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637 [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689 [i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734 [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840 [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886 [i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955 [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070 [i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078 [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098 [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103 [i915#4349]: https://gitlab.freedesktop.org/drm/intel/issues/4349 [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525 [i915#4528]: https://gitlab.freedesktop.org/drm/intel/issues/4528 [i915#4573]: https://gitlab.freedesktop.org/drm/intel/issues/4573 [i915#4579]: https://gitlab.freedesktop.org/drm/intel/issues/4579 [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613 [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176 [i915#5234]: https://gitlab.freedesktop.org/drm/intel/issues/5234 [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235 [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286 [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289 [i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325 [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533 [i915#5334]: https://gitlab.freedesktop.org/drm/intel/issues/5334 [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354 [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461 [i915#5493]: https://gitlab.freedesktop.org/drm/intel/issues/5493 [i915#5507]: https://gitlab.freedesktop.org/drm/intel/issues/5507 [i915#5566]: https://gitlab.freedesktop.org/drm/intel/issues/5566 [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784 [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095 [i915#6230]: https://gitlab.freedesktop.org/drm/intel/issues/6230 [i915#6335]: https://gitlab.freedesktop.org/drm/intel/issues/6335 [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658 [i915#6768]: https://gitlab.freedesktop.org/drm/intel/issues/6768 [i915#6786]: https://gitlab.freedesktop.org/drm/intel/issues/6786 [i915#7116]: https://gitlab.freedesktop.org/drm/intel/issues/7116 [i915#7461]: https://gitlab.freedesktop.org/drm/intel/issues/7461 [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711 [i915#7742]: https://gitlab.freedesktop.org/drm/intel/issues/7742 [i915#7790]: https://gitlab.freedesktop.org/drm/intel/issues/7790 [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828 [i915#7975]: https://gitlab.freedesktop.org/drm/intel/issues/7975 [i915#8011]: https://gitlab.freedesktop.org/drm/intel/issues/8011 [i915#8211]: https://gitlab.freedesktop.org/drm/intel/issues/8211 [i915#8213]: https://gitlab.freedesktop.org/drm/intel/issues/8213 [i915#8292]: https://gitlab.freedesktop.org/drm/intel/issues/8292 [i915#8295]: https://gitlab.freedesktop.org/drm/intel/issues/8295 [i915#8304]: https://gitlab.freedesktop.org/drm/intel/issues/8304 Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_7292 -> IGTPW_8976 * Piglit: piglit_4509 -> None CI-20190529: 20190529 CI_DRM_13153: 1ceecfa94dd4a059164b23925aecc9db4c4fd3b6 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_8976: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/index.html IGT_7292: 9d9475ffd3b5ae18fd8ec120595385f6c562f249 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8976/index.html [-- Attachment #2: Type: text/html, Size: 15886 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for Use new procps library libproc2 (rev4) 2023-05-15 18:46 [igt-dev] [PATCH i-g-t 0/2] Use new procps library libproc2 Kamil Konieczny ` (6 preceding siblings ...) 2023-05-17 3:05 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork @ 2023-05-17 12:40 ` Patchwork 2023-05-17 23:34 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork 8 siblings, 0 replies; 13+ messages in thread From: Patchwork @ 2023-05-17 12:40 UTC (permalink / raw) To: Kamil Konieczny; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 5278 bytes --] == Series Details == Series: Use new procps library libproc2 (rev4) URL : https://patchwork.freedesktop.org/series/117699/ State : success == Summary == CI Bug Log - changes from CI_DRM_13158 -> IGTPW_8984 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/index.html Participating hosts (36 -> 34) ------------------------------ Additional (1): bat-mtlp-6 Missing (3): fi-kbl-soraka bat-rpls-2 fi-snb-2520m Known issues ------------ Here are the changes found in IGTPW_8984 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@i915_selftest@live@hangcheck: - bat-dg2-11: [PASS][1] -> [ABORT][2] ([i915#7913] / [i915#7979]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13158/bat-dg2-11/igt@i915_selftest@live@hangcheck.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/bat-dg2-11/igt@i915_selftest@live@hangcheck.html * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence: - bat-adlp-9: NOTRUN -> [SKIP][3] ([i915#3546]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/bat-adlp-9/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html - bat-dg2-11: NOTRUN -> [SKIP][4] ([i915#1845] / [i915#5354]) +2 similar issues [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html #### Possible fixes #### * igt@i915_selftest@live@hangcheck: - fi-skl-guc: [DMESG-WARN][5] ([i915#8073]) -> [PASS][6] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13158/fi-skl-guc/igt@i915_selftest@live@hangcheck.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/fi-skl-guc/igt@i915_selftest@live@hangcheck.html * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence@pipe-c-dp-1: - bat-dg2-8: [FAIL][7] ([i915#7932]) -> [PASS][8] [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13158/bat-dg2-8/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence@pipe-c-dp-1.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/bat-dg2-8/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence@pipe-c-dp-1.html #### Warnings #### * igt@kms_psr@sprite_plane_onoff: - bat-adln-1: [ABORT][9] ([i915#8442]) -> [ABORT][10] ([i915#8434] / [i915#8442]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13158/bat-adln-1/igt@kms_psr@sprite_plane_onoff.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/bat-adln-1/igt@kms_psr@sprite_plane_onoff.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285 [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072 [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845 [i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582 [i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546 [i915#3595]: https://gitlab.freedesktop.org/drm/intel/issues/3595 [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637 [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708 [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077 [i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078 [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079 [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083 [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212 [i915#4342]: https://gitlab.freedesktop.org/drm/intel/issues/4342 [i915#4579]: https://gitlab.freedesktop.org/drm/intel/issues/4579 [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613 [i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190 [i915#5274]: https://gitlab.freedesktop.org/drm/intel/issues/5274 [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354 [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621 [i915#6645]: https://gitlab.freedesktop.org/drm/intel/issues/6645 [i915#7456]: https://gitlab.freedesktop.org/drm/intel/issues/7456 [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828 [i915#7913]: https://gitlab.freedesktop.org/drm/intel/issues/7913 [i915#7932]: https://gitlab.freedesktop.org/drm/intel/issues/7932 [i915#7979]: https://gitlab.freedesktop.org/drm/intel/issues/7979 [i915#8073]: https://gitlab.freedesktop.org/drm/intel/issues/8073 [i915#8434]: https://gitlab.freedesktop.org/drm/intel/issues/8434 [i915#8442]: https://gitlab.freedesktop.org/drm/intel/issues/8442 Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_7293 -> IGTPW_8984 CI-20190529: 20190529 CI_DRM_13158: b45eb9c3ab2393968cda9bb8eb12878be3df8ce6 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_8984: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/index.html IGT_7293: a19a081d1b8a8f902d7d8009a6ea6c471d5531ad @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/index.html [-- Attachment #2: Type: text/html, Size: 4723 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* [igt-dev] ✓ Fi.CI.IGT: success for Use new procps library libproc2 (rev4) 2023-05-15 18:46 [igt-dev] [PATCH i-g-t 0/2] Use new procps library libproc2 Kamil Konieczny ` (7 preceding siblings ...) 2023-05-17 12:40 ` [igt-dev] ✓ Fi.CI.BAT: success for Use new procps library libproc2 (rev4) Patchwork @ 2023-05-17 23:34 ` Patchwork 8 siblings, 0 replies; 13+ messages in thread From: Patchwork @ 2023-05-17 23:34 UTC (permalink / raw) To: Kamil Konieczny; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 13209 bytes --] == Series Details == Series: Use new procps library libproc2 (rev4) URL : https://patchwork.freedesktop.org/series/117699/ State : success == Summary == CI Bug Log - changes from CI_DRM_13158_full -> IGTPW_8984_full ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/index.html Participating hosts (7 -> 7) ------------------------------ No changes in participating hosts Known issues ------------ Here are the changes found in IGTPW_8984_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_exec_fair@basic-none-solo@rcs0: - shard-apl: [PASS][1] -> [FAIL][2] ([i915#2842]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13158/shard-apl2/igt@gem_exec_fair@basic-none-solo@rcs0.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/shard-apl3/igt@gem_exec_fair@basic-none-solo@rcs0.html * igt@i915_pm_rps@reset: - shard-snb: [PASS][3] -> [INCOMPLETE][4] ([i915#7790]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13158/shard-snb6/igt@i915_pm_rps@reset.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/shard-snb5/igt@i915_pm_rps@reset.html * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions: - shard-apl: [PASS][5] -> [FAIL][6] ([i915#2346]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13158/shard-apl1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/shard-apl2/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html #### Possible fixes #### * igt@drm_fdinfo@virtual-idle: - {shard-rkl}: [FAIL][7] ([i915#7742]) -> [PASS][8] [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13158/shard-rkl-1/igt@drm_fdinfo@virtual-idle.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/shard-rkl-2/igt@drm_fdinfo@virtual-idle.html * igt@gem_ctx_exec@basic-nohangcheck: - {shard-tglu}: [FAIL][9] ([i915#6268]) -> [PASS][10] [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13158/shard-tglu-5/igt@gem_ctx_exec@basic-nohangcheck.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/shard-tglu-6/igt@gem_ctx_exec@basic-nohangcheck.html * igt@gem_eio@hibernate: - {shard-dg1}: [ABORT][11] ([i915#4391] / [i915#7975] / [i915#8213]) -> [PASS][12] [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13158/shard-dg1-14/igt@gem_eio@hibernate.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/shard-dg1-15/igt@gem_eio@hibernate.html * igt@gem_exec_fair@basic-none@bcs0: - {shard-rkl}: [FAIL][13] ([i915#2842]) -> [PASS][14] [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13158/shard-rkl-6/igt@gem_exec_fair@basic-none@bcs0.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/shard-rkl-3/igt@gem_exec_fair@basic-none@bcs0.html * igt@gem_exec_fair@basic-pace-share@rcs0: - shard-glk: [FAIL][15] ([i915#2842]) -> [PASS][16] +2 similar issues [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13158/shard-glk8/igt@gem_exec_fair@basic-pace-share@rcs0.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/shard-glk6/igt@gem_exec_fair@basic-pace-share@rcs0.html * igt@i915_pm_rpm@modeset-lpsp-stress-no-wait: - {shard-rkl}: [SKIP][17] ([i915#1397]) -> [PASS][18] [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13158/shard-rkl-6/igt@i915_pm_rpm@modeset-lpsp-stress-no-wait.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/shard-rkl-7/igt@i915_pm_rpm@modeset-lpsp-stress-no-wait.html * igt@i915_suspend@basic-s3-without-i915: - {shard-rkl}: [FAIL][19] ([fdo#103375]) -> [PASS][20] [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13158/shard-rkl-6/igt@i915_suspend@basic-s3-without-i915.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/shard-rkl-2/igt@i915_suspend@basic-s3-without-i915.html * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions: - shard-glk: [FAIL][21] ([i915#2346]) -> [PASS][22] [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13158/shard-glk3/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/shard-glk9/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html * igt@kms_flip@flip-vs-expired-vblank@a-hdmi-a1: - shard-glk: [FAIL][23] ([i915#79]) -> [PASS][24] [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13158/shard-glk4/igt@kms_flip@flip-vs-expired-vblank@a-hdmi-a1.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/shard-glk2/igt@kms_flip@flip-vs-expired-vblank@a-hdmi-a1.html * {igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-1}: - {shard-tglu}: [FAIL][25] ([i915#8292]) -> [PASS][26] [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13158/shard-tglu-2/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-1.html [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/shard-tglu-9/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-1.html * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom: - {shard-rkl}: [ABORT][27] ([i915#7461] / [i915#8311]) -> [PASS][28] [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13158/shard-rkl-4/igt@kms_rotation_crc@multiplane-rotation-cropping-bottom.html [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/shard-rkl-6/igt@kms_rotation_crc@multiplane-rotation-cropping-bottom.html * igt@perf_pmu@idle@rcs0: - {shard-rkl}: [FAIL][29] ([i915#4349]) -> [PASS][30] [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13158/shard-rkl-7/igt@perf_pmu@idle@rcs0.html [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/shard-rkl-3/igt@perf_pmu@idle@rcs0.html * igt@prime_vgem@basic-gtt: - {shard-rkl}: [ABORT][31] -> [PASS][32] [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13158/shard-rkl-1/igt@prime_vgem@basic-gtt.html [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/shard-rkl-3/igt@prime_vgem@basic-gtt.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375 [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274 [fdo#109279]: https://bugs.freedesktop.org/show_bug.cgi?id=109279 [fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283 [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289 [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295 [fdo#109303]: https://bugs.freedesktop.org/show_bug.cgi?id=109303 [fdo#109312]: https://bugs.freedesktop.org/show_bug.cgi?id=109312 [fdo#109314]: https://bugs.freedesktop.org/show_bug.cgi?id=109314 [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315 [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723 [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068 [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614 [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825 [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827 [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072 [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397 [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825 [i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839 [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346 [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527 [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575 [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672 [i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681 [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842 [i915#3023]: https://gitlab.freedesktop.org/drm/intel/issues/3023 [i915#3116]: https://gitlab.freedesktop.org/drm/intel/issues/3116 [i915#315]: https://gitlab.freedesktop.org/drm/intel/issues/315 [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281 [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282 [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291 [i915#3323]: https://gitlab.freedesktop.org/drm/intel/issues/3323 [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359 [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458 [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539 [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555 [i915#3591]: https://gitlab.freedesktop.org/drm/intel/issues/3591 [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637 [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638 [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689 [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708 [i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734 [i915#3743]: https://gitlab.freedesktop.org/drm/intel/issues/3743 [i915#3804]: https://gitlab.freedesktop.org/drm/intel/issues/3804 [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840 [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886 [i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955 [i915#3989]: https://gitlab.freedesktop.org/drm/intel/issues/3989 [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070 [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077 [i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078 [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098 [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270 [i915#4349]: https://gitlab.freedesktop.org/drm/intel/issues/4349 [i915#4387]: https://gitlab.freedesktop.org/drm/intel/issues/4387 [i915#4391]: https://gitlab.freedesktop.org/drm/intel/issues/4391 [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538 [i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454 [i915#4579]: https://gitlab.freedesktop.org/drm/intel/issues/4579 [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613 [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176 [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235 [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286 [i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325 [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533 [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354 [i915#5723]: https://gitlab.freedesktop.org/drm/intel/issues/5723 [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095 [i915#6268]: https://gitlab.freedesktop.org/drm/intel/issues/6268 [i915#6433]: https://gitlab.freedesktop.org/drm/intel/issues/6433 [i915#6524]: https://gitlab.freedesktop.org/drm/intel/issues/6524 [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658 [i915#6768]: https://gitlab.freedesktop.org/drm/intel/issues/6768 [i915#7276]: https://gitlab.freedesktop.org/drm/intel/issues/7276 [i915#7456]: https://gitlab.freedesktop.org/drm/intel/issues/7456 [i915#7461]: https://gitlab.freedesktop.org/drm/intel/issues/7461 [i915#7561]: https://gitlab.freedesktop.org/drm/intel/issues/7561 [i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697 [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711 [i915#7742]: https://gitlab.freedesktop.org/drm/intel/issues/7742 [i915#7790]: https://gitlab.freedesktop.org/drm/intel/issues/7790 [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828 [i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79 [i915#7975]: https://gitlab.freedesktop.org/drm/intel/issues/7975 [i915#8011]: https://gitlab.freedesktop.org/drm/intel/issues/8011 [i915#8213]: https://gitlab.freedesktop.org/drm/intel/issues/8213 [i915#8234]: https://gitlab.freedesktop.org/drm/intel/issues/8234 [i915#8247]: https://gitlab.freedesktop.org/drm/intel/issues/8247 [i915#8292]: https://gitlab.freedesktop.org/drm/intel/issues/8292 [i915#8311]: https://gitlab.freedesktop.org/drm/intel/issues/8311 [i915#8381]: https://gitlab.freedesktop.org/drm/intel/issues/8381 Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_7293 -> IGTPW_8984 * Piglit: piglit_4509 -> None CI-20190529: 20190529 CI_DRM_13158: b45eb9c3ab2393968cda9bb8eb12878be3df8ce6 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_8984: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/index.html IGT_7293: a19a081d1b8a8f902d7d8009a6ea6c471d5531ad @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8984/index.html [-- Attachment #2: Type: text/html, Size: 9262 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* [igt-dev] [PATCH i-g-t 0/2] Use new procps library libproc2 @ 2023-05-12 18:35 Kamil Konieczny 2023-05-12 18:35 ` [igt-dev] [PATCH i-g-t 1/2] Use the " Kamil Konieczny 0 siblings, 1 reply; 13+ messages in thread From: Kamil Konieczny @ 2023-05-12 18:35 UTC (permalink / raw) To: igt-dev This is resend of following patch with minor corrections: https://patchwork.freedesktop.org/series/111015/ Use the new procps library libproc2 I also added second patch with some simplifications suggested by Mauro in: https://patchwork.freedesktop.org/series/116896/ Use new library libproc2 Cc: Mauro Carvalho Chehab <mauro.chehab@linux.intel.com> Craig Small (1): Use the new procps library libproc2 Kamil Konieczny (1): lib/igt_aux: unify procps processing lib/igt_aux.c | 277 +++++++++++++++++++++++++++++++----------------- lib/meson.build | 7 +- meson.build | 10 +- 3 files changed, 195 insertions(+), 99 deletions(-) -- 2.39.2 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [igt-dev] [PATCH i-g-t 1/2] Use the new procps library libproc2 2023-05-12 18:35 [igt-dev] [PATCH i-g-t 0/2] Use new procps library libproc2 Kamil Konieczny @ 2023-05-12 18:35 ` Kamil Konieczny 0 siblings, 0 replies; 13+ messages in thread From: Kamil Konieczny @ 2023-05-12 18:35 UTC (permalink / raw) To: igt-dev; +Cc: Craig Small From: Craig Small <csmall@dropbear.xyz> Added support for new libproc2. [Corrected some errors pointed by checkpatch.pl, add linux includes in #ifdef __linux__ section] v2: changed to igt_fork_helper and added error print [Kamil] v3: removed include <limits.h> pointed by Mauro [Kamil] Signed-off-by: Craig Small <csmall@dropbear.xyz> --- lib/igt_aux.c | 246 +++++++++++++++++++++++++++++++++++++++--------- lib/meson.build | 7 +- meson.build | 10 +- 3 files changed, 219 insertions(+), 44 deletions(-) diff --git a/lib/igt_aux.c b/lib/igt_aux.c index 672d7d4b0..4c24b0928 100644 --- a/lib/igt_aux.c +++ b/lib/igt_aux.c @@ -52,8 +52,16 @@ #include <assert.h> #include <grp.h> -#include <proc/readproc.h> -#include <libudev.h> +#ifdef HAVE_LIBPROCPS +# include <proc/readproc.h> +#else +# include <libproc2/pids.h> +#endif + +#include <dirent.h> +#ifdef __linux__ +# include <libudev.h> +#endif #include "drmtest.h" #include "i915_drm.h" @@ -1217,6 +1225,7 @@ void igt_unlock_mem(void) */ int igt_is_process_running(const char *comm) { +#if HAVE_LIBPROCPS PROCTAB *proc; proc_t *proc_info; bool found = false; @@ -1235,6 +1244,26 @@ int igt_is_process_running(const char *comm) closeproc(proc); return found; +#else + enum pids_item Item[] = { PIDS_CMD }; + struct pids_info *info = NULL; + struct pids_stack *stack; + char *pid_comm; + bool found = false; + + if (procps_pids_new(&info, Item, 1) < 0) + return false; + while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { + pid_comm = PIDS_VAL(0, str, stack, info); + if (!strncasecmp(pid_comm, comm, strlen(pid_comm))) { + found = true; + break; + } + } + + procps_pids_unref(&info); + return found; +#endif } /** @@ -1251,6 +1280,7 @@ int igt_is_process_running(const char *comm) */ int igt_terminate_process(int sig, const char *comm) { +#if HAVE_LIBPROCPS PROCTAB *proc; proc_t *proc_info; int err = 0; @@ -1272,6 +1302,28 @@ int igt_terminate_process(int sig, const char *comm) closeproc(proc); return err; +#else + enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD }; + struct pids_info *info = NULL; + struct pids_stack *stack; + char *pid_comm; + int pid; + int err = 0; + + if (procps_pids_new(&info, Items, 2) < 0) + return -errno; + while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { + pid = PIDS_VAL(0, s_int, stack, info); + pid_comm = PIDS_VAL(1, str, stack, info); + if (!strncasecmp(pid_comm, comm, strlen(pid_comm))) { + if (kill(pid, sig) < 0) + err = -errno; + break; + } + } + procps_pids_unref(&info); + return err; +#endif } struct pinfo { @@ -1341,9 +1393,9 @@ igt_show_stat_header(void) } static void -igt_show_stat(proc_t *info, int *state, const char *fn) +igt_show_stat(const pid_t tid, const char *cmd, int *state, const char *fn) { - struct pinfo p = { .pid = info->tid, .comm = info->cmd, .fn = fn }; + struct pinfo p = { .pid = tid, .comm = cmd, .fn = fn }; if (!*state) igt_show_stat_header(); @@ -1353,7 +1405,7 @@ igt_show_stat(proc_t *info, int *state, const char *fn) } static void -__igt_lsof_fds(proc_t *proc_info, int *state, char *proc_path, const char *dir) +__igt_lsof_fds(const pid_t tid, const char *cmd, int *state, char *proc_path, const char *dir) { struct dirent *d; struct stat st; @@ -1400,7 +1452,7 @@ again: dirn = dirname(copy_fd_lnk); if (!strncmp(dir, dirn, strlen(dir))) - igt_show_stat(proc_info, state, fd_lnk); + igt_show_stat(tid, cmd, state, fd_lnk); free(copy_fd_lnk); free(fd_lnk); @@ -1416,13 +1468,13 @@ again: static void __igt_lsof(const char *dir) { - PROCTAB *proc; - proc_t *proc_info; - char path[30]; char *name_lnk; struct stat st; int state = 0; +#ifdef HAVE_LIBPROCPS + PROCTAB *proc; + proc_t *proc_info; proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG); igt_assert(proc != NULL); @@ -1443,19 +1495,56 @@ __igt_lsof(const char *dir) name_lnk[read] = '\0'; if (!strncmp(dir, name_lnk, strlen(dir))) - igt_show_stat(proc_info, &state, name_lnk); + igt_show_stat(proc_info->tid, proc_info->cmd, &state, name_lnk); /* check also fd, seems that lsof(8) doesn't look here */ memset(path, 0, sizeof(path)); snprintf(path, sizeof(path), "/proc/%d/fd", proc_info->tid); - __igt_lsof_fds(proc_info, &state, path, dir); + __igt_lsof_fds(proc_info->tid, proc_info->cmd, &state, path, dir); free(name_lnk); freeproc(proc_info); } closeproc(proc); +#else + enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD }; + struct pids_info *info = NULL; + struct pids_stack *stack; + + if (procps_pids_new(&info, Items, 2) < 0) + return; + while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { + ssize_t read; + int tid = PIDS_VAL(0, s_int, stack, info); + char *pid_comm = PIDS_VAL(1, str, stack, info); + + /* check current working directory */ + memset(path, 0, sizeof(path)); + snprintf(path, sizeof(path), "/proc/%d/cwd", tid); + + if (stat(path, &st) == -1) + continue; + + name_lnk = malloc(st.st_size + 1); + + igt_assert((read = readlink(path, name_lnk, st.st_size + 1))); + name_lnk[read] = '\0'; + + if (!strncmp(dir, name_lnk, strlen(dir))) + igt_show_stat(tid, pid_comm, &state, name_lnk); + + /* check also fd, seems that lsof(8) doesn't look here */ + memset(path, 0, sizeof(path)); + snprintf(path, sizeof(path), "/proc/%d/fd", tid); + + __igt_lsof_fds(tid, pid_comm, &state, path, dir); + + free(name_lnk); + } + procps_pids_unref(&info); +#endif } /** @@ -1490,7 +1579,7 @@ igt_lsof(const char *dpath) free(sanitized); } -static void pulseaudio_unload_module(proc_t *proc_info) +static void pulseaudio_unload_module(const uid_t euid, const gid_t egid) { struct igt_helper_process pa_proc = {}; char xdg_dir[PATH_MAX]; @@ -1498,14 +1587,14 @@ static void pulseaudio_unload_module(proc_t *proc_info) struct passwd *pw; igt_fork_helper(&pa_proc) { - pw = getpwuid(proc_info->euid); + pw = getpwuid(euid); homedir = pw->pw_dir; - snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", proc_info->euid); + snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", euid); igt_info("Request pulseaudio to stop using audio device\n"); - setgid(proc_info->egid); - setuid(proc_info->euid); + setgid(egid); + setuid(euid); clearenv(); setenv("HOME", homedir, 1); setenv("XDG_RUNTIME_DIR",xdg_dir, 1); @@ -1524,10 +1613,13 @@ static void pipewire_reserve_wait(void) char xdg_dir[PATH_MAX]; const char *homedir; struct passwd *pw; - proc_t *proc_info; - PROCTAB *proc; + int tid = 0, euid, egid; +#ifdef HAVE_LIBPROCPS igt_fork_helper(&pw_reserve_proc) { + proc_t *proc_info; + PROCTAB *proc; + igt_info("Preventing pipewire-pulse to use the audio drivers\n"); proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG); @@ -1540,19 +1632,45 @@ static void pipewire_reserve_wait(void) } closeproc(proc); + tid = proc_info->tid; + euid = proc_info->euid; + egid = proc_info->egid; + freeproc(proc_info); +#else + igt_fork_helper(&pw_reserve_proc) { + enum pids_item Items[] = { PIDS_ID_PID, PIDS_ID_EUID, PIDS_ID_EGID }; + enum rel_items { EU_PID, EU_EUID, EU_EGID }; + struct pids_info *info = NULL; + struct pids_stack *stack; + + igt_info("Preventing pipewire-pulse to use the audio drivers\n"); + + if (procps_pids_new(&info, Items, 3) < 0) { + igt_info("error getting pids: %d\n", errno); + exit(errno); + } + while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { + tid = PIDS_VAL(EU_PID, s_int, stack, info); + if (pipewire_pulse_pid == tid) + break; + } + euid = PIDS_VAL(EU_EUID, s_int, stack, info); + egid = PIDS_VAL(EU_EGID, s_int, stack, info); + procps_pids_unref(&info); +#endif + /* Sanity check: if it can't find the process, it means it has gone */ - if (pipewire_pulse_pid != proc_info->tid) + if (pipewire_pulse_pid != tid) exit(0); - pw = getpwuid(proc_info->euid); + pw = getpwuid(euid); homedir = pw->pw_dir; - snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", proc_info->euid); - setgid(proc_info->egid); - setuid(proc_info->euid); + snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", euid); + setgid(egid); + setuid(euid); clearenv(); setenv("HOME", homedir, 1); setenv("XDG_RUNTIME_DIR",xdg_dir, 1); - freeproc(proc_info); /* * pw-reserve will run in background. It will only exit when @@ -1570,9 +1688,7 @@ static void pipewire_reserve_wait(void) int pipewire_pulse_start_reserve(void) { bool is_pw_reserve_running = false; - proc_t *proc_info; int attempts = 0; - PROCTAB *proc; if (!pipewire_pulse_pid) return 0; @@ -1584,6 +1700,10 @@ int pipewire_pulse_start_reserve(void) * pipewire version 0.3.50 or upper. */ for (attempts = 0; attempts < PIPEWIRE_RESERVE_MAX_TIME; attempts++) { +#ifdef HAVE_LIBPROCPS + PROCTAB *proc; + proc_t *proc_info; + usleep(1000); proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG); igt_assert(proc != NULL); @@ -1598,6 +1718,24 @@ int pipewire_pulse_start_reserve(void) freeproc(proc_info); } closeproc(proc); +#else + enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD }; + struct pids_info *info = NULL; + struct pids_stack *stack; + + usleep(1000); + + if (procps_pids_new(&info, Items, 2) < 0) + return 1; + while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { + if (!strcmp(PIDS_VAL(1, str, stack, info), "pw-reserve")) { + is_pw_reserve_running = true; + pipewire_pw_reserve_pid = PIDS_VAL(0, s_int, stack, info); + break; + } + } + procps_pids_unref(&info); +#endif if (is_pw_reserve_running) break; } @@ -1645,7 +1783,7 @@ void pipewire_pulse_stop_reserve(void) * If the check fails, it means that the process can simply be killed. */ static int -__igt_lsof_audio_and_kill_proc(proc_t *proc_info, char *proc_path) +__igt_lsof_audio_and_kill_proc(const pid_t tid, const char *cmd, const uid_t euid, const gid_t egid, char *proc_path) { const char *audio_dev = "/dev/snd/"; char path[PATH_MAX * 2]; @@ -1670,10 +1808,10 @@ __igt_lsof_audio_and_kill_proc(proc_t *proc_info, char *proc_path) * 2) unload/unbind the the audio driver(s); * 3) stop the pw-reserve thread. */ - if (!strcmp(proc_info->cmd, "pipewire-pulse")) { + if (!strcmp(cmd, "pipewire-pulse")) { igt_info("process %d (%s) is using audio device. Should be requested to stop using them.\n", - proc_info->tid, proc_info->cmd); - pipewire_pulse_pid = proc_info->tid; + tid, cmd); + pipewire_pulse_pid = tid; return 0; } /* @@ -1685,9 +1823,9 @@ __igt_lsof_audio_and_kill_proc(proc_t *proc_info, char *proc_path) * will respawn them. So, just ignore here, they'll honor pw-reserve, * when the time comes. */ - if (!strcmp(proc_info->cmd, "pipewire-media-session")) + if (!strcmp(cmd, "pipewire-media-session")) return 0; - if (!strcmp(proc_info->cmd, "wireplumber")) + if (!strcmp(cmd, "wireplumber")) return 0; dp = opendir(proc_path); @@ -1723,22 +1861,22 @@ __igt_lsof_audio_and_kill_proc(proc_t *proc_info, char *proc_path) * enough to unbind audio modules and won't cause race issues * with systemd trying to reload it. */ - if (!strcmp(proc_info->cmd, "pulseaudio")) { - pulseaudio_unload_module(proc_info); + if (!strcmp(cmd, "pulseaudio")) { + pulseaudio_unload_module(euid, egid); break; } /* For all other processes, just kill them */ igt_info("process %d (%s) is using audio device. Should be terminated.\n", - proc_info->tid, proc_info->cmd); + tid, cmd); - if (kill(proc_info->tid, SIGTERM) < 0) { + if (kill(tid, SIGTERM) < 0) { igt_info("Fail to terminate %s (pid: %d) with SIGTERM\n", - proc_info->cmd, proc_info->tid); - if (kill(proc_info->tid, SIGABRT) < 0) { + cmd, tid); + if (kill(tid, SIGABRT) < 0) { fail++; igt_info("Fail to terminate %s (pid: %d) with SIGABRT\n", - proc_info->cmd, proc_info->tid); + cmd, tid); } } @@ -1760,23 +1898,47 @@ int igt_lsof_kill_audio_processes(void) { char path[PATH_MAX]; + int fail = 0; + +#ifdef HAVE_LIBPROCPS proc_t *proc_info; PROCTAB *proc; - int fail = 0; proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG); igt_assert(proc != NULL); pipewire_pulse_pid = 0; - while ((proc_info = readproc(proc, NULL))) { if (snprintf(path, sizeof(path), "/proc/%d/fd", proc_info->tid) < 1) fail++; else - fail += __igt_lsof_audio_and_kill_proc(proc_info, path); + fail += __igt_lsof_audio_and_kill_proc(proc_info->tid, proc_info->cmd, proc_info->euid, proc_info->egid, path); freeproc(proc_info); } closeproc(proc); +#else + enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD, PIDS_ID_EUID, PIDS_ID_EGID }; + enum rel_items { EU_PID, EU_CMD, EU_EUID, EU_EGID }; + struct pids_info *info = NULL; + struct pids_stack *stack; + pid_t tid; + + if (procps_pids_new(&info, Items, 4) < 0) + return 1; + while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) { + tid = PIDS_VAL(EU_PID, s_int, stack, info); + + if (snprintf(path, sizeof(path), "/proc/%d/fd", tid) < 1) + fail++; + else + fail += __igt_lsof_audio_and_kill_proc(tid, + PIDS_VAL(EU_CMD, str, stack, info), + PIDS_VAL(EU_EUID, s_int, stack, info), + PIDS_VAL(EU_EGID, s_int, stack, info), + path); + } + procps_pids_unref(&info); +#endif return fail; } diff --git a/lib/meson.build b/lib/meson.build index b21c252b5..48a27a612 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -113,7 +113,6 @@ lib_deps = [ libdrm, libdw, libkmod, - libprocps, libudev, math, pciaccess, @@ -177,6 +176,12 @@ if chamelium.found() lib_sources += 'monitor_edids/monitor_edids_helper.c' endif +if libprocps.found() + lib_deps += libprocps +else + lib_deps += libproc2 +endif + if get_option('srcdir') != '' srcdir = join_paths(get_option('srcdir'), 'tests') else diff --git a/meson.build b/meson.build index 036217844..98acc8daf 100644 --- a/meson.build +++ b/meson.build @@ -124,7 +124,15 @@ build_info += 'With libdrm: ' + ','.join(libdrm_info) pciaccess = dependency('pciaccess', version : '>=0.10') libkmod = dependency('libkmod') -libprocps = dependency('libprocps', required : true) +libprocps = dependency('libprocps', required : false) +libproc2 = dependency('libproc2', required : false) +if libprocps.found() + config.set('HAVE_LIBPROCPS', 1) +elif libproc2.found() + config.set('HAVE_LIBPROC2', 1) +else + error('Either libprocps or libproc2 is required') +endif libunwind = dependency('libunwind', required : get_option('libunwind')) build_info += 'With libunwind: @0@'.format(libunwind.found()) -- 2.39.2 ^ permalink raw reply related [flat|nested] 13+ messages in thread
end of thread, other threads:[~2023-05-17 23:34 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-05-15 18:46 [igt-dev] [PATCH i-g-t 0/2] Use new procps library libproc2 Kamil Konieczny 2023-05-15 18:46 ` [igt-dev] [PATCH i-g-t 1/2] Use the " Kamil Konieczny 2023-05-16 9:33 ` Mauro Carvalho Chehab 2023-05-15 18:46 ` [igt-dev] [PATCH i-g-t 2/2] lib/igt_aux: unify procps processing Kamil Konieczny 2023-05-15 20:31 ` [igt-dev] ✗ Fi.CI.BAT: failure for Use new procps library libproc2 (rev2) Patchwork 2023-05-16 8:48 ` [igt-dev] [PATCH i-g-t 0/2] Use new procps library libproc2 Tvrtko Ursulin 2023-05-17 14:14 ` Kamil Konieczny 2023-05-16 17:42 ` [igt-dev] ✗ GitLab.Pipeline: warning for Use new procps library libproc2 (rev3) Patchwork 2023-05-16 18:13 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork 2023-05-17 3:05 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork 2023-05-17 12:40 ` [igt-dev] ✓ Fi.CI.BAT: success for Use new procps library libproc2 (rev4) Patchwork 2023-05-17 23:34 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork -- strict thread matches above, loose matches on Subject: below -- 2023-05-12 18:35 [igt-dev] [PATCH i-g-t 0/2] Use new procps library libproc2 Kamil Konieczny 2023-05-12 18:35 ` [igt-dev] [PATCH i-g-t 1/2] Use the " Kamil Konieczny
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox