* [PATCH i-g-t v3 0/6] Add support for hook script
@ 2024-07-25 14:19 Gustavo Sousa
2024-07-25 14:19 ` [PATCH i-g-t v3 1/6] igt_hook: Add feature Gustavo Sousa
` (9 more replies)
0 siblings, 10 replies; 17+ messages in thread
From: Gustavo Sousa @ 2024-07-25 14:19 UTC (permalink / raw)
To: igt-dev; +Cc: Lucas De Marchi
For development purposes, sometimes it is useful to have a way of
running custom scripts at certain points of test executions. A
real-world example I bumped into recently is to collect information from
sysfs before and after running each entry of a testlist.
While it is possible for the user to handcraft a script that calls each
test with the correct actions before and after execution, we can provide
a better experience by adding built-in support for running hooks during
test execution.
This series adds support for running a hook script during test
execution. The feature is exposed to users via option --hook, which is
made available for regular test binaries as well as for igt_runner.
v2:
- Updated first patch to address review comments.
- Added support for multiple instances of --hook options with 4 extra
patches appended to the series. I thought about squashing them to
the original patches, but I preferred to keep them separated, since
supporting multiple --hook options can be seen as an extension and
should make the series easier to follow.
v3:
- Updated patches to address review comments. See the changelog in each patch
for details.
Gustavo Sousa (6):
igt_hook: Add feature
runner: Make it easier to extend argv
runner: Add option --hook
igt_hook: Implement and use set_fake_argv() in test
igt_hook: Allow multiple hook descriptors
runner: Allow multiple --hook options
.../igt-gpu-tools/igt-gpu-tools-docs.xml | 1 +
lib/igt_core.c | 83 ++-
lib/igt_hook.c | 511 ++++++++++++++++++
lib/igt_hook.h | 70 +++
lib/meson.build | 1 +
lib/tests/igt_hook.c | 166 ++++++
lib/tests/igt_hook_integration.c | 374 +++++++++++++
lib/tests/meson.build | 2 +
runner/executor.c | 61 ++-
runner/runner_tests.c | 18 +
runner/settings.c | 168 +++++-
runner/settings.h | 2 +
12 files changed, 1429 insertions(+), 28 deletions(-)
create mode 100644 lib/igt_hook.c
create mode 100644 lib/igt_hook.h
create mode 100644 lib/tests/igt_hook.c
create mode 100644 lib/tests/igt_hook_integration.c
--
2.45.2
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH i-g-t v3 1/6] igt_hook: Add feature
2024-07-25 14:19 [PATCH i-g-t v3 0/6] Add support for hook script Gustavo Sousa
@ 2024-07-25 14:19 ` Gustavo Sousa
2024-08-12 13:52 ` Lucas De Marchi
2024-07-25 14:19 ` [PATCH i-g-t v3 2/6] runner: Make it easier to extend argv Gustavo Sousa
` (8 subsequent siblings)
9 siblings, 1 reply; 17+ messages in thread
From: Gustavo Sousa @ 2024-07-25 14:19 UTC (permalink / raw)
To: igt-dev; +Cc: Lucas De Marchi
For development purposes, sometimes it is useful to have a way of
running custom scripts at certain points of test executions. A
real-world example I bumped into recently is to collect information from
sysfs before and after running each entry of a testlist.
While it is possible for the user to handcraft a script that calls each
test with the correct actions before and after execution, we can provide
a better experience by adding built-in support for running hooks during
test execution.
That would be even better when adding the same kind of support for
igt_runner (which is done in an upcoming change), since the user can
also nicely resume with igt_resume with the hook already setup in case a
crash happens during execution of the test list.
As such provide implement support for hooks, integrate it into
igt_core and expose the functionality via --hook CLI option on test
executables.
v2:
- s/igt_hook_init/igt_hook_create/ (Lucas)
- Use SPDX License Identifier instead of license text. (Lucas)
- Do not rely on hard-coded length 3 when generating full test name.
(Lucas)
- Do not pollute current environment variables when running hooks.
(Lucas)
- Change hook string in run_tests_and_match_env() to use "printf"
instead of "echo" to be compatible with CI environment.
v3:
- igt_hook_create() only errors out for invalid input.
- Use igt_hook_free() instead of simply free() in the error path for
common_init().
- Go back to the simpler logic for calling hooks instead of using
fork: setenv() calls followed by system().
- Change igt_hook_create() to return error number and receive
reference to destination pointer instead of the opposite. (Lucas)
- Remove checks for non-existing negative return of igt_hook_create().
(Lucas)
- s/igt_hook_push_evt/igt_hook_event_notify/. (Lucas)
- Simplify call sites for igt_hook_event_notify() by allowing argument
to igt_hook to be NULL and using compount literals for the event
struct. (Lucas)
- Fix style for igt_hook_calc_test_fullname_size(). (Lucas)
Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
.../igt-gpu-tools/igt-gpu-tools-docs.xml | 1 +
lib/igt_core.c | 78 ++-
lib/igt_hook.c | 470 ++++++++++++++++++
lib/igt_hook.h | 69 +++
lib/meson.build | 1 +
lib/tests/igt_hook.c | 157 ++++++
lib/tests/igt_hook_integration.c | 281 +++++++++++
lib/tests/meson.build | 2 +
8 files changed, 1052 insertions(+), 7 deletions(-)
create mode 100644 lib/igt_hook.c
create mode 100644 lib/igt_hook.h
create mode 100644 lib/tests/igt_hook.c
create mode 100644 lib/tests/igt_hook_integration.c
diff --git a/docs/reference/igt-gpu-tools/igt-gpu-tools-docs.xml b/docs/reference/igt-gpu-tools/igt-gpu-tools-docs.xml
index 9085eb924e85..11458c68124b 100644
--- a/docs/reference/igt-gpu-tools/igt-gpu-tools-docs.xml
+++ b/docs/reference/igt-gpu-tools/igt-gpu-tools-docs.xml
@@ -32,6 +32,7 @@
<xi:include href="xml/igt_fb.xml"/>
<xi:include href="xml/igt_frame.xml"/>
<xi:include href="xml/igt_gt.xml"/>
+ <xi:include href="xml/igt_hook.xml"/>
<xi:include href="xml/igt_io.xml"/>
<xi:include href="xml/igt_kmod.xml"/>
<xi:include href="xml/igt_kms.xml"/>
diff --git a/lib/igt_core.c b/lib/igt_core.c
index 3ff3e0392316..51141722c89b 100644
--- a/lib/igt_core.c
+++ b/lib/igt_core.c
@@ -70,6 +70,7 @@
#include "igt_core.h"
#include "igt_aux.h"
+#include "igt_hook.h"
#include "igt_sysfs.h"
#include "igt_sysrq.h"
#include "igt_rc.h"
@@ -241,6 +242,9 @@
* - '*,!basic*' match any subtest not starting basic
* - 'basic*,!basic-render*' match any subtest starting basic but not starting basic-render
*
+ * It is possible to run a shell script at certain points of test execution with
+ * "--hook". See the usage description with "--help-hook" for details.
+ *
* # Configuration
*
* Some of IGT's behavior can be configured through a configuration file.
@@ -273,6 +277,8 @@ static unsigned int exit_handler_count;
const char *igt_interactive_debug;
bool igt_skip_crc_compare;
+static struct igt_hook *igt_hook = NULL;
+
/* subtests helpers */
static bool show_testlist = false;
static bool list_subtests = false;
@@ -338,6 +344,8 @@ enum {
OPT_INTERACTIVE_DEBUG,
OPT_SKIP_CRC,
OPT_TRACE_OOPS,
+ OPT_HOOK,
+ OPT_HELP_HOOK,
OPT_DEVICE,
OPT_VERSION,
OPT_HELP = 'h'
@@ -810,6 +818,8 @@ static void common_exit_handler(int sig)
bind_fbcon(true);
}
+ igt_hook_free(igt_hook);
+
/* When not killed by a signal check that igt_exit() has been properly
* called. */
assert(sig != 0 || igt_exit_called || igt_is_aborting);
@@ -907,6 +917,8 @@ static void print_usage(const char *help_str, bool output_on_stderr)
" --interactive-debug[=domain]\n"
" --skip-crc-compare\n"
" --trace-on-oops\n"
+ " --hook [<events>:]<cmd>\n"
+ " --help-hook\n"
" --help-description\n"
" --describe\n"
" --device filters\n"
@@ -1090,6 +1102,8 @@ static int common_init(int *argc, char **argv,
{"interactive-debug", optional_argument, NULL, OPT_INTERACTIVE_DEBUG},
{"skip-crc-compare", no_argument, NULL, OPT_SKIP_CRC},
{"trace-on-oops", no_argument, NULL, OPT_TRACE_OOPS},
+ {"hook", required_argument, NULL, OPT_HOOK},
+ {"help-hook", no_argument, NULL, OPT_HELP_HOOK},
{"device", required_argument, NULL, OPT_DEVICE},
{"version", no_argument, NULL, OPT_VERSION},
{"help", no_argument, NULL, OPT_HELP},
@@ -1225,6 +1239,24 @@ static int common_init(int *argc, char **argv,
case OPT_TRACE_OOPS:
show_ftrace = true;
break;
+ case OPT_HOOK:
+ assert(optarg);
+ if (igt_hook) {
+ igt_warn("Overriding previous hook descriptor\n");
+ igt_hook_free(igt_hook);
+ }
+ ret = igt_hook_create(optarg, &igt_hook);
+ if (ret) {
+ igt_critical("Failed to initialize hook data: %s\n",
+ igt_hook_error_str(ret));
+ ret = -2;
+ goto out;
+ }
+ break;
+ case OPT_HELP_HOOK:
+ igt_hook_print_help(stdout, "--hook");
+ ret = -1;
+ goto out;
case OPT_DEVICE:
assert(optarg);
/* if set by env IGT_DEVICE we need to free it */
@@ -1274,9 +1306,15 @@ out:
exit(IGT_EXIT_INVALID);
}
- if (ret < 0)
+ if (ret < 0) {
+ if (igt_hook) {
+ igt_hook_free(igt_hook);
+ igt_hook = NULL;
+ }
+
/* exit with no error for -h/--help */
exit(ret == -1 ? 0 : IGT_EXIT_INVALID);
+ }
if (!igt_only_list_subtests()) {
bind_fbcon(false);
@@ -1284,6 +1322,10 @@ out:
print_version();
igt_srandom();
+ igt_hook_event_notify(igt_hook, &(struct igt_hook_evt){
+ .evt_type = IGT_HOOK_PRE_TEST,
+ .target_name = command_str });
+
sync();
oom_adjust_for_doom();
ftrace_dump_on_oops(show_ftrace);
@@ -1487,6 +1529,11 @@ bool __igt_run_subtest(const char *subtest_name, const char *file, const int lin
igt_thread_clear_fail_state();
igt_gettime(&subtest_time);
+
+ igt_hook_event_notify(igt_hook, &(struct igt_hook_evt){
+ .evt_type = IGT_HOOK_PRE_SUBTEST,
+ .target_name = subtest_name });
+
return (in_subtest = subtest_name);
}
@@ -1517,6 +1564,11 @@ bool __igt_run_dynamic_subtest(const char *dynamic_subtest_name)
_igt_dynamic_tests_executed++;
igt_gettime(&dynamic_subtest_time);
+
+ igt_hook_event_notify(igt_hook, &(struct igt_hook_evt){
+ .evt_type = IGT_HOOK_PRE_DYN_SUBTEST,
+ .target_name = dynamic_subtest_name });
+
return (in_dynamic_subtest = dynamic_subtest_name);
}
@@ -1602,6 +1654,12 @@ __noreturn static void exit_subtest(const char *result)
struct timespec *thentime = in_dynamic_subtest ? &dynamic_subtest_time : &subtest_time;
jmp_buf *jmptarget = in_dynamic_subtest ? &igt_dynamic_jmpbuf : &igt_subtest_jmpbuf;
+ igt_hook_event_notify(igt_hook, &(struct igt_hook_evt){
+ .evt_type = (in_dynamic_subtest
+ ? IGT_HOOK_POST_DYN_SUBTEST
+ : IGT_HOOK_POST_SUBTEST),
+ .result = result });
+
if (!igt_thread_is_main()) {
igt_thread_fail();
pthread_exit(NULL);
@@ -2274,6 +2332,7 @@ void __igt_abort(const char *domain, const char *file, const int line,
void igt_exit(void)
{
int tmp;
+ const char *result;
if (!test_with_subtests)
igt_thread_assert_no_failures();
@@ -2318,12 +2377,7 @@ void igt_exit(void)
assert(waitpid(-1, &tmp, WNOHANG) == -1 && errno == ECHILD);
- if (!test_with_subtests) {
- struct timespec now;
- const char *result;
-
- igt_gettime(&now);
-
+ if (!test_with_subtests || igt_hook) {
switch (igt_exitcode) {
case IGT_EXIT_SUCCESS:
result = "SUCCESS";
@@ -2334,6 +2388,12 @@ void igt_exit(void)
default:
result = "FAIL";
}
+ }
+
+ if (!test_with_subtests) {
+ struct timespec now;
+
+ igt_gettime(&now);
if (test_multi_fork_child) /* parent will do the yelling */
_log_line_fprintf(stdout, "dyn_child pid:%d (%.3fs) ends with err=%d\n",
@@ -2344,6 +2404,10 @@ void igt_exit(void)
result, igt_time_elapsed(&subtest_time, &now));
}
+ igt_hook_event_notify(igt_hook, &(struct igt_hook_evt){
+ .evt_type = IGT_HOOK_POST_TEST,
+ .result = result });
+
exit(igt_exitcode);
}
diff --git a/lib/igt_hook.c b/lib/igt_hook.c
new file mode 100644
index 000000000000..b9350fdd78b1
--- /dev/null
+++ b/lib/igt_hook.c
@@ -0,0 +1,470 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright(c) 2024 Intel Corporation. All rights reserved.
+ */
+
+#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "igt_hook.h"
+
+/**
+ * SECTION:igt_hook
+ * @short_description: Support for running a hook script on test execution
+ * @title: Hook support
+ *
+ * IGT provides support for running a hook script when executing tests. This
+ * support is provided to users via CLI option `--hook` available in test
+ * binaries. Users should use `--help-hook` for detailed usaged description of
+ * the feature.
+ *
+ * The sole user of the exposed API is `igt_core`, which calls @igt_hook_create()
+ * when initializing a test case, then calls @igt_hook_event_notify() for each
+ * event that occurs during that test's execution and finally calls
+ * @igt_hook_free() to clean up at the end.
+ */
+
+#define TEST_NAME_INITIAL_SIZE 16
+
+typedef uint16_t evt_mask_t;
+
+struct igt_hook {
+ evt_mask_t evt_mask;
+ char *cmd;
+ char *test_name;
+ size_t test_name_size;
+ char *subtest_name;
+ size_t subtest_name_size;
+ char *dyn_subtest_name;
+ size_t dyn_subtest_name_size;
+ char *test_fullname;
+};
+
+enum igt_hook_error {
+ IGT_HOOK_EVT_EMPTY_NAME = 1,
+ IGT_HOOK_EVT_NO_MATCH,
+};
+
+static_assert(IGT_HOOK_NUM_EVENTS <= sizeof(evt_mask_t) * CHAR_BIT,
+ "Number of event types does not fit event type mask");
+
+static const char *igt_hook_evt_type_to_name(enum igt_hook_evt_type evt_type)
+{
+ switch (evt_type) {
+ case IGT_HOOK_PRE_TEST:
+ return "pre-test";
+ case IGT_HOOK_PRE_SUBTEST:
+ return "pre-subtest";
+ case IGT_HOOK_PRE_DYN_SUBTEST:
+ return "pre-dyn-subtest";
+ case IGT_HOOK_POST_DYN_SUBTEST:
+ return "post-dyn-subtest";
+ case IGT_HOOK_POST_SUBTEST:
+ return "post-subtest";
+ case IGT_HOOK_POST_TEST:
+ return "post-test";
+ case IGT_HOOK_NUM_EVENTS:
+ break;
+ /* No "default:" case, to force a warning from -Wswitch in case we miss
+ * any new event type. */
+ }
+ return "?";
+}
+
+static int igt_hook_parse_hook_str(const char *hook_str, evt_mask_t *evt_mask, const char **cmd)
+{
+ const char *s;
+
+ if (!strchr(hook_str, ':')) {
+ *evt_mask = ~0;
+ *cmd = hook_str;
+ return 0;
+ }
+
+ s = hook_str;
+ *evt_mask = 0;
+
+ while (1) {
+ const char *evt_name;
+ bool has_match;
+ bool is_star;
+ enum igt_hook_evt_type evt_type;
+
+ evt_name = s;
+
+ while (*s != ':' && *s != ',')
+ s++;
+
+ if (evt_name == s)
+ return IGT_HOOK_EVT_EMPTY_NAME;
+
+ has_match = false;
+ is_star = *evt_name == '*' && evt_name + 1 == s;
+
+ for (evt_type = IGT_HOOK_PRE_TEST; evt_type < IGT_HOOK_NUM_EVENTS; evt_type++) {
+ if (!is_star) {
+ const char *this_event_name = igt_hook_evt_type_to_name(evt_type);
+ size_t len = s - evt_name;
+
+ if (len != strlen(this_event_name))
+ continue;
+
+ if (strncmp(evt_name, this_event_name, len))
+ continue;
+ }
+
+ *evt_mask |= 1 << evt_type;
+ has_match = true;
+
+ if (!is_star)
+ break;
+ }
+
+ if (!has_match)
+ return IGT_HOOK_EVT_NO_MATCH;
+
+ if (*s++ == ':')
+ break;
+ }
+
+ *cmd = s;
+
+ return 0;
+}
+
+static size_t igt_hook_calc_test_fullname_size(struct igt_hook *igt_hook)
+{
+ /* The maximum size of test_fullname will be the maximum length of
+ * "igt@<test_name>@<subtest_name>@<dyn_subtest_name>" plus 1 for the
+ * null byte. */
+ return igt_hook->test_name_size + igt_hook->subtest_name_size + igt_hook->dyn_subtest_name_size + 4;
+}
+
+static void igt_hook_update_test_fullname(struct igt_hook *igt_hook)
+{
+ int i;
+ char *s;
+ const char *values[] = {
+ igt_hook->test_name,
+ igt_hook->subtest_name,
+ igt_hook->dyn_subtest_name,
+ NULL,
+ };
+
+ if (igt_hook->test_name[0] == '\0') {
+ igt_hook->test_fullname[0] = '\0';
+ return;
+ }
+
+ s = stpcpy(igt_hook->test_fullname, "igt");
+ for (i = 0; values[i] && values[i][0] != '\0'; i++) {
+ *s++ = '@';
+ s = stpcpy(s, values[i]);
+ }
+}
+
+/**
+ * igt_hook_create:
+ * @hook_str: Hook descriptor string.
+ * @igt_hook_ptr: Destination of the struct igt_hook pointer.
+ *
+ * Allocate and initialize an #igt_hook structure.
+ *
+ * This function parses the hook descriptor in @hook_str and initializes the
+ * struct. The pointer to the allocated structure is stored in @igt_hook_ptr.
+ *
+ * The hook descriptor comes from the argument to `--hook` of the test
+ * executable being run.
+ *
+ * If an error happens, the returned error number can be passed to
+ * @igt_hook_error_str() to get a human-readable error message.
+ *
+ * Returns: Zero on success and a non-zero value on error.
+ */
+int igt_hook_create(const char *hook_str, struct igt_hook **igt_hook_ptr)
+{
+ int ret;
+ evt_mask_t evt_mask;
+ const char *cmd;
+ struct igt_hook *igt_hook = NULL;
+
+ ret = igt_hook_parse_hook_str(hook_str, &evt_mask, &cmd);
+ if (ret)
+ goto out;
+
+ igt_hook = calloc(1, sizeof(*igt_hook));
+ igt_hook->evt_mask = evt_mask;
+ igt_hook->cmd = strdup(cmd);
+ igt_hook->test_name = malloc(TEST_NAME_INITIAL_SIZE);
+ igt_hook->test_name_size = TEST_NAME_INITIAL_SIZE;
+ igt_hook->subtest_name = malloc(TEST_NAME_INITIAL_SIZE);
+ igt_hook->subtest_name_size = TEST_NAME_INITIAL_SIZE;
+ igt_hook->dyn_subtest_name = malloc(TEST_NAME_INITIAL_SIZE);
+ igt_hook->dyn_subtest_name_size = TEST_NAME_INITIAL_SIZE;
+ igt_hook->test_fullname = malloc(igt_hook_calc_test_fullname_size(igt_hook));
+
+ igt_hook->test_name[0] = '\0';
+ igt_hook->subtest_name[0] = '\0';
+ igt_hook->dyn_subtest_name[0] = '\0';
+ igt_hook->test_fullname[0] = '\0';
+
+out:
+ if (ret)
+ igt_hook_free(igt_hook);
+ else
+ *igt_hook_ptr = igt_hook;
+
+ return ret;
+}
+
+/**
+ * igt_hook_free:
+ * @igt_hook: The igt_hook struct.
+ *
+ * De-initialize an igt_hook struct returned by @igt_hook_create().
+ *
+ * This is a no-op if @igt_hook is #NULL.
+ */
+void igt_hook_free(struct igt_hook *igt_hook)
+{
+ if (!igt_hook)
+ return;
+
+ free(igt_hook->cmd);
+ free(igt_hook->test_name);
+ free(igt_hook->subtest_name);
+ free(igt_hook->dyn_subtest_name);
+ free(igt_hook);
+}
+
+static void igt_hook_update_test_name_pre_call(struct igt_hook *igt_hook, struct igt_hook_evt *evt)
+{
+ char **name_ptr;
+ size_t *size_ptr;
+ size_t len;
+
+ switch (evt->evt_type) {
+ case IGT_HOOK_PRE_TEST:
+ name_ptr = &igt_hook->test_name;
+ size_ptr = &igt_hook->test_name_size;
+ break;
+ case IGT_HOOK_PRE_SUBTEST:
+ name_ptr = &igt_hook->subtest_name;
+ size_ptr = &igt_hook->subtest_name_size;
+ break;
+ case IGT_HOOK_PRE_DYN_SUBTEST:
+ name_ptr = &igt_hook->dyn_subtest_name;
+ size_ptr = &igt_hook->dyn_subtest_name_size;
+ break;
+ default:
+ return;
+ }
+
+ len = strlen(evt->target_name);
+ if (len + 1 > *size_ptr) {
+ size_t fullname_size;
+
+ *size_ptr *= 2;
+ *name_ptr = realloc(*name_ptr, *size_ptr);
+
+ fullname_size = igt_hook_calc_test_fullname_size(igt_hook);
+ igt_hook->test_fullname = realloc(igt_hook->test_fullname, fullname_size);
+ }
+
+ strcpy(*name_ptr, evt->target_name);
+ igt_hook_update_test_fullname(igt_hook);
+}
+
+static void igt_hook_update_test_name_post_call(struct igt_hook *igt_hook, struct igt_hook_evt *evt)
+{
+ switch (evt->evt_type) {
+ case IGT_HOOK_POST_TEST:
+ igt_hook->test_name[0] = '\0';
+ break;
+ case IGT_HOOK_POST_SUBTEST:
+ igt_hook->subtest_name[0] = '\0';
+ break;
+ case IGT_HOOK_POST_DYN_SUBTEST:
+ igt_hook->dyn_subtest_name[0] = '\0';
+ break;
+ default:
+ return;
+ }
+
+ igt_hook_update_test_fullname(igt_hook);
+}
+
+static void igt_hook_update_env_vars(struct igt_hook *igt_hook, struct igt_hook_evt *evt)
+{
+ setenv("IGT_HOOK_EVENT", igt_hook_evt_type_to_name(evt->evt_type), 1);
+ setenv("IGT_HOOK_TEST_FULLNAME", igt_hook->test_fullname, 1);
+ setenv("IGT_HOOK_TEST", igt_hook->test_name, 1);
+ setenv("IGT_HOOK_SUBTEST", igt_hook->subtest_name, 1);
+ setenv("IGT_HOOK_DYN_SUBTEST", igt_hook->dyn_subtest_name, 1);
+ setenv("IGT_HOOK_RESULT", evt->result ?: "", 1);
+}
+
+/**
+ * igt_hook_event_notify:
+ * @igt_hook: The igt_hook structure.
+ * @evt: The event to be pushed.
+ *
+ * Push a new igt_hook event.
+ *
+ * The argument to @igt_hook can be #NULL, which is equivalent to a no-op.
+ *
+ * This function must be used to notify on a new igt_hook event. Calling it will
+ * cause execution of the hook script if the event type matches the filters
+ * provided during initialization of @igt_hook.
+ */
+void igt_hook_event_notify(struct igt_hook *igt_hook, struct igt_hook_evt *evt)
+{
+ evt_mask_t evt_bit;
+
+ if (!igt_hook)
+ return;
+
+ evt_bit = (1 << evt->evt_type);
+ igt_hook_update_test_name_pre_call(igt_hook, evt);
+
+ if ((evt_bit & igt_hook->evt_mask)) {
+ igt_hook_update_env_vars(igt_hook, evt);
+ system(igt_hook->cmd);
+ }
+
+ igt_hook_update_test_name_post_call(igt_hook, evt);
+}
+
+/**
+ * igt_hook_error_str:
+ * @error: Non-zero error number.
+ *
+ * Return a human-readable string containing a description of an error number
+ * generated by one of the `igt_hook_*` functions.
+ *
+ * The string will be the result of strerror() for errors from the C standard
+ * library or a custom description specific to igt_hook.
+ */
+const char *igt_hook_error_str(int error)
+{
+ if (!error)
+ return "No error";
+
+ switch (error) {
+ case IGT_HOOK_EVT_EMPTY_NAME:
+ return "Empty name in event descriptor";
+ case IGT_HOOK_EVT_NO_MATCH:
+ return "Event name in event descriptor does not match any event type";
+ default:
+ return "Unknown error";
+ }
+}
+
+/**
+ * igt_hook_print_help:
+ * @f: File pointer where to write the output.
+ * @option_name: Name of the CLI option that accepts the hook descriptor.
+ *
+ * Print a detailed user help text on hook usage.
+ */
+void igt_hook_print_help(FILE *f, const char *option_name)
+{
+ fprintf(f, "\
+The option %1$s receives as argument a \"hook descriptor\" and allows the\n\
+execution of a shell command at different points during execution of tests. Each\n\
+such a point is called a \"hook event\".\n\
+\n\
+Examples:\n\
+\n\
+ # Prints hook-specic env vars for every event.\n\
+ %1$s 'printenv | grep ^IGT_HOOK_'\n\
+\n\
+ # Equivalent to the above. Useful if command contains ':'.\n\
+ %1$s '*:printenv | grep ^IGT_HOOK_'\n\
+\n\
+ # Adds a line to out.txt containing the result of each test case.\n\
+ %1$s 'post-test:echo $IGT_HOOK_TEST_FULLNAME $IGT_HOOK_RESULT >> out.txt'\n\
+\n\
+The accepted format for a hook descriptor is `[<events>:]<cmd>`, where:\n\
+\n\
+ - <events> is a comma-separated list of event descriptors, which defines the\n\
+ set of events be tracked. If omitted, all events are tracked.\n\
+\n\
+ - <cmd> is a shell command to be executed on the occurrence each tracked\n\
+ event. If the command contains ':', then passing <events> is required,\n\
+ otherwise part of the command would be treated as an event descriptor.\n\
+\n\
+", option_name);
+
+ fprintf(f, "\
+An \"event descriptor\" is either the name of an event or the string '*'. The\n\
+latter matches all event names. The list of possible event names is provided\n\
+below:\n\
+\n\
+");
+
+ for (enum igt_hook_evt_type et = 0; et < IGT_HOOK_NUM_EVENTS; et++) {
+ const char *desc;
+
+ switch (et) {
+ case IGT_HOOK_PRE_TEST:
+ desc = "Occurs before a test case starts.";
+ break;
+ case IGT_HOOK_PRE_SUBTEST:
+ desc = "Occurs before the execution of a subtest.";
+ break;
+ case IGT_HOOK_PRE_DYN_SUBTEST:
+ desc = "Occurs before the execution of a dynamic subtest.";
+ break;
+ case IGT_HOOK_POST_DYN_SUBTEST:
+ desc = "Occurs after the execution of a dynamic subtest.";
+ break;
+ case IGT_HOOK_POST_SUBTEST:
+ desc = "Occurs after the execution of a subtest.";
+ break;
+ case IGT_HOOK_POST_TEST:
+ desc = "Occurs after a test case has finished.";
+ break;
+ default:
+ desc = "MISSING DESCRIPTION";
+ }
+
+ fprintf(f, " %s\n %s\n\n", igt_hook_evt_type_to_name(et), desc);
+ }
+
+ fprintf(f, "\
+For each event matched by <events>, <cmd> is executed as a shell command. The\n\
+exit status of the command is ignored. The following environment variables are\n\
+available to the command:\n\
+\n\
+ IGT_HOOK_EVENT\n\
+ Name of the current event.\n\
+\n\
+ IGT_HOOK_TEST_FULLNAME\n\
+ Full name of the test in the format `igt@<test>[@<subtest>[@<dyn_subtest>]]`.\n\
+\n\
+ IGT_HOOK_TEST\n\
+ Name of the current test.\n\
+\n\
+ IGT_HOOK_SUBTEST\n\
+ Name of the current subtest. Will be the empty string if not running a\n\
+ subtest.\n\
+\n\
+ IGT_HOOK_DYN_SUBTEST\n\
+ Name of the current dynamic subtest. Will be the empty string if not running a\n\
+ dynamic subtest.\n\
+\n\
+ IGT_HOOK_RESULT\n\
+ String representing the result of the test/subtest/dynamic subtest. Possible\n\
+ values are: SUCCESS, SKIP or FAIL. This is only applicable on \"post-*\"\n\
+ events and will be the empty string for other types of events.\n\
+\n\
+");
+}
diff --git a/lib/igt_hook.h b/lib/igt_hook.h
new file mode 100644
index 000000000000..83722cbb2f2b
--- /dev/null
+++ b/lib/igt_hook.h
@@ -0,0 +1,69 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright(c) 2024 Intel Corporation. All rights reserved.
+ */
+
+#ifndef IGT_HOOK_H
+#define IGT_HOOK_H
+
+#include <stdio.h>
+
+/**
+ * igt_hook:
+ *
+ * Opaque struct to hold data related to hook support.
+ */
+struct igt_hook;
+
+/**
+ * igt_hook_evt_type:
+ * @IGT_HOOK_PRE_TEST: Occurs before a test case (executable) starts the
+ * test code.
+ * @IGT_HOOK_PRE_SUBTEST: Occurs before the execution of a subtest.
+ * @IGT_HOOK_PRE_DYN_SUBTEST: Occurs before the execution of a dynamic subtest.
+ * @IGT_HOOK_POST_DYN_SUBTEST: Occurs after the execution of a dynamic subtest.
+ * @IGT_HOOK_POST_SUBTEST: Occurs after the execution of a subtest..
+ * @IGT_HOOK_POST_TEST: Occurs after a test case (executable) is finished with
+ * the test code.
+ * @IGT_HOOK_NUM_EVENTS: This is not really an event and represents the number
+ * of possible events tracked by igt_hook.
+ *
+ * Events tracked by igt_hook. Those events occur at specific points during the
+ * execution of a test.
+ */
+enum igt_hook_evt_type {
+ IGT_HOOK_PRE_TEST,
+ IGT_HOOK_PRE_SUBTEST,
+ IGT_HOOK_PRE_DYN_SUBTEST,
+ IGT_HOOK_POST_DYN_SUBTEST,
+ IGT_HOOK_POST_SUBTEST,
+ IGT_HOOK_POST_TEST,
+ IGT_HOOK_NUM_EVENTS /* This must always be the last one. */
+};
+
+/**
+ * igt_hook_evt:
+ * @evt_type: Type of event.
+ * @target_name: A string pointing to the name of the test, subtest or dynamic
+ * subtest, depending on @evt_type.
+ * @result: A string containing the result of the test, subtest or dynamic
+ * subtest. This is only applicable for the `IGT_HOOK_POST_\*' event types;
+ * other types must initialize this to #NULL.
+ *
+ * An event tracked by igt_hook, which is done with @@igt_hook_event_notify().
+ * This must be zero initialized and fields relevant to the event type must be
+ * set before passing its reference to @igt_hook_event_notify().
+ */
+struct igt_hook_evt {
+ enum igt_hook_evt_type evt_type;
+ const char *target_name;
+ const char *result;
+};
+
+int igt_hook_create(const char *hook_str, struct igt_hook **igt_hook_ptr);
+void igt_hook_free(struct igt_hook *igt_hook);
+void igt_hook_event_notify(struct igt_hook *igt_hook, struct igt_hook_evt *evt);
+const char *igt_hook_error_str(int error);
+void igt_hook_print_help(FILE *f, const char *option_name);
+
+#endif /* IGT_HOOK_H */
diff --git a/lib/meson.build b/lib/meson.build
index f711e60a736a..ab4cf9c7a2ba 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -110,6 +110,7 @@ lib_sources = [
'veboxcopy_gen12.c',
'igt_msm.c',
'igt_dsc.c',
+ 'igt_hook.c',
'xe/xe_gt.c',
'xe/xe_ioctl.c',
'xe/xe_mmio.c',
diff --git a/lib/tests/igt_hook.c b/lib/tests/igt_hook.c
new file mode 100644
index 000000000000..0d71909e676a
--- /dev/null
+++ b/lib/tests/igt_hook.c
@@ -0,0 +1,157 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright(c) 2024 Intel Corporation. All rights reserved.
+ */
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include "igt_core.h"
+#include "igt_hook.h"
+
+static const char *env_var_names[] = {
+ "IGT_HOOK_EVENT",
+ "IGT_HOOK_TEST_FULLNAME",
+ "IGT_HOOK_TEST",
+ "IGT_HOOK_SUBTEST",
+ "IGT_HOOK_DYN_SUBTEST",
+ "IGT_HOOK_RESULT",
+};
+
+#define num_env_vars (sizeof(env_var_names) / sizeof(env_var_names[0]))
+
+static int env_var_name_lookup(char *line)
+{
+ int i;
+ char *c;
+
+ c = strchr(line, '=');
+ if (c)
+ *c = '\0';
+
+ for (i = 0; i < num_env_vars; i++)
+ if (!strcmp(line, env_var_names[i]))
+ goto out;
+
+ i = -1;
+out:
+ if (c)
+ *c = '=';
+
+ return i;
+}
+
+static void test_invalid_hook_descriptors(void)
+{
+ struct {
+ const char *name;
+ const char *hook_desc;
+ } invalid_cases[] = {
+ {"invalid-event-name", "invalid-event:echo hello"},
+ {"invalid-empty-event-name", ":echo hello"},
+ {"invalid-colon-in-cmd", "echo hello:world"},
+ {},
+ };
+
+ for (int i = 0; invalid_cases[i].name; i++) {
+ igt_subtest(invalid_cases[i].name) {
+ int err;
+ struct igt_hook *igt_hook;
+
+ err = igt_hook_create(invalid_cases[i].hook_desc, &igt_hook);
+ igt_assert(err != 0);
+ }
+ }
+}
+
+static void test_print_help(void)
+{
+ char *buf;
+ size_t len;
+ FILE *f;
+ const char expected_initial_text[] = "The option --hook receives as argument a \"hook descriptor\"";
+
+ f = open_memstream(&buf, &len);
+ igt_assert(f);
+
+ igt_hook_print_help(f, "--hook");
+ fclose(f);
+
+ igt_assert(!strncmp(buf, expected_initial_text, sizeof(expected_initial_text) - 1));
+
+ /* This is an extra check to catch a case where an event type is added
+ * without a proper description. */
+ igt_assert(!strstr(buf, "MISSING DESCRIPTION"));
+
+ free(buf);
+}
+
+static void test_all_env_vars(void)
+{
+ struct igt_hook_evt evt = {
+ .evt_type = IGT_HOOK_PRE_SUBTEST,
+ .target_name = "foo",
+ };
+ bool env_vars_checklist[num_env_vars] = {};
+ struct igt_hook *igt_hook;
+ char *hook_str;
+ FILE *f;
+ int pipefd[2];
+ int ret;
+ int i;
+ char *line;
+ size_t line_size;
+
+ ret = pipe(pipefd);
+ igt_assert(ret == 0);
+
+ /* Use grep to filter only env var set by us. This should ensure that
+ * writing to the pipe will not block due to capacity, since we only
+ * read from the pipe after the shell command is done. */
+ ret = asprintf(&hook_str, "printenv -0 | grep -z ^IGT_HOOK >&%d", pipefd[1]);
+ igt_assert(ret > 0);
+
+ ret = igt_hook_create(hook_str, &igt_hook);
+ igt_assert(ret == 0);
+
+ igt_hook_event_notify(igt_hook, &evt);
+
+ close(pipefd[1]);
+ f = fdopen(pipefd[0], "r");
+ igt_assert(f);
+
+ line = NULL;
+ line_size = 0;
+
+ while (getdelim(&line, &line_size, '\0', f) != -1) {
+ ret = env_var_name_lookup(line);
+ igt_assert_f(ret >= 0, "Unexpected env var %s\n", line);
+ env_vars_checklist[ret] = true;
+ }
+
+ for (i = 0; i < num_env_vars; i++)
+ igt_assert_f(env_vars_checklist[i], "Missing env var %s\n", env_var_names[i]);
+
+ fclose(f);
+ igt_hook_free(igt_hook);
+ free(hook_str);
+ free(line);
+}
+
+igt_main
+{
+ test_invalid_hook_descriptors();
+
+ igt_subtest("help-description")
+ test_print_help();
+
+ igt_subtest_group {
+ igt_fixture {
+ igt_require_f(system(NULL), "Shell seems not to be available\n");
+ }
+
+ igt_subtest("all-env-vars")
+ test_all_env_vars();
+ }
+}
diff --git a/lib/tests/igt_hook_integration.c b/lib/tests/igt_hook_integration.c
new file mode 100644
index 000000000000..f5ba25e92897
--- /dev/null
+++ b/lib/tests/igt_hook_integration.c
@@ -0,0 +1,281 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright(c) 2024 Intel Corporation. All rights reserved.
+ */
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "igt_core.h"
+
+#include "igt_tests_common.h"
+
+char prog[] = "igt_hook_integration";
+char hook_opt[] = "--hook";
+char hook_str[128];
+char *fake_argv[] = {prog, hook_opt, hook_str};
+int fake_argc = sizeof(fake_argv) / sizeof(fake_argv[0]);
+
+#define ENV_ARRAY(evt_name, fullname_suffix, subtest, dyn_subtest, result) \
+{ \
+ "IGT_HOOK_EVENT=" evt_name, \
+ "IGT_HOOK_TEST_FULLNAME=igt@igt_hook_integration" fullname_suffix, \
+ "IGT_HOOK_TEST=igt_hook_integration", \
+ "IGT_HOOK_SUBTEST=" subtest, \
+ "IGT_HOOK_DYN_SUBTEST=" dyn_subtest, \
+ "IGT_HOOK_RESULT=" result, \
+}
+
+#define TEST_ENV(evt_name, result) \
+ ENV_ARRAY(evt_name, "", "", "", result)
+
+#define SUBTEST_ENV(evt_name, subtest, result) \
+ ENV_ARRAY(evt_name, "@" subtest, subtest, "", result)
+
+#define DYN_SUBTEST_ENV(evt_name, subtest, dyn_subtest, result) \
+ ENV_ARRAY(evt_name, "@" subtest "@" dyn_subtest, subtest, dyn_subtest, result)
+
+const char *pre_test_env[] = TEST_ENV("pre-test", "");
+const char *pre_subtest_a_env[] = SUBTEST_ENV("pre-subtest", "a", "");
+const char *pre_dyn_subtest_a_success_env[] = DYN_SUBTEST_ENV("pre-dyn-subtest", "a", "success", "");
+const char *post_dyn_subtest_a_success_env[] = DYN_SUBTEST_ENV("post-dyn-subtest", "a", "success", "SUCCESS");
+const char *pre_dyn_subtest_a_failed_env[] = DYN_SUBTEST_ENV("pre-dyn-subtest", "a", "failed", "");
+const char *post_dyn_subtest_a_failed_env[] = DYN_SUBTEST_ENV("post-dyn-subtest", "a", "failed", "FAIL");
+const char *pre_dyn_subtest_a_skipped_env[] = DYN_SUBTEST_ENV("pre-dyn-subtest", "a", "skipped", "");
+const char *post_dyn_subtest_a_skipped_env[] = DYN_SUBTEST_ENV("post-dyn-subtest", "a", "skipped", "SKIP");
+const char *post_subtest_a_env[] = SUBTEST_ENV("post-subtest", "a", "FAIL");
+const char *pre_subtest_b_env[] = SUBTEST_ENV("pre-subtest", "b", "");
+const char *post_subtest_b_env[] = SUBTEST_ENV("post-subtest", "b", "SUCCESS");
+const char *post_test_env[] = TEST_ENV("post-test", "FAIL");
+
+#define num_env_vars (sizeof(pre_test_env) / sizeof(pre_test_env[0]))
+
+__noreturn static void fake_main(void)
+{
+ igt_subtest_init(fake_argc, fake_argv);
+
+ igt_subtest_with_dynamic("a") {
+ igt_dynamic("success") {
+ igt_info("...@a@success\n");
+ }
+
+ igt_dynamic("failed") {
+ igt_assert_f(false, "Fail on purpose\n");
+ igt_info("...@a@failed\n");
+ }
+
+ igt_dynamic("skipped") {
+ igt_require_f(false, "Skip on purpose\n");
+ igt_info("...@a@skipped\n");
+ }
+ }
+
+ igt_subtest("b") {
+ igt_info("...@b\n");
+ }
+
+ igt_exit();
+}
+
+static void test_invalid_hook_str(void)
+{
+ int status;
+ pid_t pid;
+ static char err[4096];
+ int errfd;
+
+ sprintf(hook_str, "invalid-event:echo hello");
+
+ pid = do_fork_bg_with_pipes(fake_main, NULL, &errfd);
+
+ read_whole_pipe(errfd, err, sizeof(err));
+
+ internal_assert(safe_wait(pid, &status) != -1);
+ internal_assert_wexited(status, IGT_EXIT_INVALID);
+
+ internal_assert(strstr(err, "Failed to initialize hook data:"));
+
+ close(errfd);
+}
+
+static bool match_env(FILE *hook_out_stream, const char **expected_env)
+{
+ int i;
+ char hook_env_buf[4096];
+ size_t buf_len = 0;
+ char *line = NULL;
+ size_t line_size;
+ bool env_checklist[num_env_vars] = {};
+ bool has_unexpected = false;
+ bool has_missing = false;
+
+ /* Store env from hook so we can show it in case of errors */
+ while (getdelim(&line, &line_size, '\0', hook_out_stream) != -1) {
+ internal_assert(buf_len + strlen(line) + 1 <= sizeof(hook_env_buf));
+ strcpy(hook_env_buf + buf_len, line);
+ buf_len += strlen(line) + 1;
+
+ if (!strcmp(line, "---"))
+ break;
+ }
+
+ if (!expected_env && !buf_len) {
+ /* We have consumed everything and we are done now. */
+ return false;
+ }
+
+
+ if (!expected_env) {
+ printf("Detected unexpected hook execution\n");
+ has_unexpected = true;
+ goto out;
+ }
+
+ if (!buf_len) {
+ printf("Expected more hook execution, but none found\n");
+ has_missing = true;
+ goto out;
+ }
+
+
+ line = hook_env_buf;
+ while (strcmp(line, "---")) {
+ for (i = 0; i < num_env_vars; i++) {
+ if (!strcmp(line, expected_env[i])) {
+ env_checklist[i] = true;
+ break;
+ }
+ }
+
+ if (i == num_env_vars) {
+ printf("Unexpected envline from hook: %s\n", line);
+ has_unexpected = true;
+ }
+
+ line += strlen(line) + 1;
+ }
+
+ for (i = 0; i < num_env_vars; i++) {
+ if (!env_checklist[i]) {
+ has_missing = true;
+ printf("Missing expected envline: %s\n", expected_env[i]);
+ }
+ }
+
+out:
+ if (has_unexpected || has_missing) {
+ if (expected_env) {
+ printf("Expected environment:\n");
+ for (i = 0; i < num_env_vars; i++)
+ printf(" %s\n", expected_env[i]);
+ }
+
+ if (buf_len) {
+ printf("Environment from hook:\n");
+ line = hook_env_buf;
+ while (strcmp(line, "---")) {
+ printf(" %s\n", line);
+ line += strlen(line) + 1;
+ }
+ } else {
+ printf("No hook execution found\n");
+ }
+ }
+
+ internal_assert(!has_unexpected);
+ internal_assert(!has_missing);
+
+ /* Ready to consume next hook output. */
+ return true;
+}
+
+static void run_tests_and_match_env(const char *evt_descriptors, const char **expected_envs[])
+{
+ int i;
+ int ret;
+ int pipefd[2];
+ pid_t pid;
+ FILE *f;
+
+ ret = pipe(pipefd);
+ internal_assert(ret == 0);
+
+ /* Use grep to filter only env var set by us. This should ensure that
+ * writing to the pipe will not block due to capacity, since we only
+ * read from the pipe after the shell command is done. */
+ sprintf(hook_str,
+ "%1$s:printenv -0 | grep -z ^IGT_HOOK >&%2$d; printf -- ---\\\\00 >&%2$d",
+ evt_descriptors,
+ pipefd[1]);
+
+ pid = do_fork_bg_with_pipes(fake_main, NULL, NULL);
+ internal_assert(safe_wait(pid, &ret) != -1);
+ internal_assert_wexited(ret, IGT_EXIT_FAILURE);
+
+ close(pipefd[1]);
+ f = fdopen(pipefd[0], "r");
+ internal_assert(f);
+
+ i = 0;
+ while (match_env(f, expected_envs[i]))
+ i++;
+
+ fclose(f);
+
+}
+
+int main(int argc, char **argv)
+{
+ {
+ printf("Check invalid hook string\n");
+ test_invalid_hook_str();
+ }
+
+ {
+ const char **expected_envs[] = {
+ pre_test_env,
+ pre_subtest_a_env,
+ pre_dyn_subtest_a_success_env,
+ post_dyn_subtest_a_success_env,
+ pre_dyn_subtest_a_failed_env,
+ post_dyn_subtest_a_failed_env,
+ pre_dyn_subtest_a_skipped_env,
+ post_dyn_subtest_a_skipped_env,
+ post_subtest_a_env,
+ pre_subtest_b_env,
+ post_subtest_b_env,
+ post_test_env,
+ NULL,
+ };
+
+ printf("Check full event tracking\n");
+ run_tests_and_match_env("*", expected_envs);
+ }
+
+ {
+ const char **expected_envs[] = {
+ pre_dyn_subtest_a_success_env,
+ pre_dyn_subtest_a_failed_env,
+ pre_dyn_subtest_a_skipped_env,
+ NULL,
+ };
+
+ printf("Check single event type tracking\n");
+ run_tests_and_match_env("pre-dyn-subtest", expected_envs);
+ }
+
+ {
+ const char **expected_envs[] = {
+ pre_subtest_a_env,
+ post_dyn_subtest_a_success_env,
+ post_dyn_subtest_a_failed_env,
+ post_dyn_subtest_a_skipped_env,
+ pre_subtest_b_env,
+ NULL,
+ };
+
+ printf("Check multiple event types tracking\n");
+ run_tests_and_match_env("post-dyn-subtest,pre-subtest", expected_envs);
+ }
+}
diff --git a/lib/tests/meson.build b/lib/tests/meson.build
index fa3d81de6cef..df8092638eca 100644
--- a/lib/tests/meson.build
+++ b/lib/tests/meson.build
@@ -10,6 +10,8 @@ lib_tests = [
'igt_exit_handler',
'igt_fork',
'igt_fork_helper',
+ 'igt_hook',
+ 'igt_hook_integration',
'igt_ktap_parser',
'igt_list_only',
'igt_invalid_subtest_name',
--
2.45.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH i-g-t v3 2/6] runner: Make it easier to extend argv
2024-07-25 14:19 [PATCH i-g-t v3 0/6] Add support for hook script Gustavo Sousa
2024-07-25 14:19 ` [PATCH i-g-t v3 1/6] igt_hook: Add feature Gustavo Sousa
@ 2024-07-25 14:19 ` Gustavo Sousa
2024-08-12 13:54 ` Lucas De Marchi
2024-07-25 14:19 ` [PATCH i-g-t v3 3/6] runner: Add option --hook Gustavo Sousa
` (7 subsequent siblings)
9 siblings, 1 reply; 17+ messages in thread
From: Gustavo Sousa @ 2024-07-25 14:19 UTC (permalink / raw)
To: igt-dev; +Cc: Lucas De Marchi
In an upcoming change, we will be adding the option to forward the
--hook option to the test cases, which will require updating
execute_test_process() to add the option when asked by the user.
The current implementation makes that task not quite straightforward:
filling of argv is already dependent on stuff like entry->subtest_count
and dynbegin; if we want to keep on using constant indices, we would
need several conditional branches for adding arguments for --hook.
Let us change the current implementation to use a dynamic vector, to
make it easier to extend argv with more stuff as needed.
v2:
- Squash the logic from patch "runner: Use dynamic vector for test
argv" directly instead of using the original logic, which used a
statically sized array. (Lucas)
Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
runner/executor.c | 54 +++++++++++++++++++++++++++++------------------
1 file changed, 34 insertions(+), 20 deletions(-)
diff --git a/runner/executor.c b/runner/executor.c
index 4b374d2235b2..a135cd46b849 100644
--- a/runner/executor.c
+++ b/runner/executor.c
@@ -31,6 +31,7 @@
#include "igt_aux.h"
#include "igt_core.h"
#include "igt_taints.h"
+#include "igt_vec.h"
#include "executor.h"
#include "output_strings.h"
#include "runnercomms.h"
@@ -1506,7 +1507,8 @@ execute_test_process(int outfd, int errfd, int socketfd,
struct settings *settings,
struct job_list_entry *entry)
{
- char *argv[6] = {};
+ struct igt_vec arg_vec;
+ char *arg;
size_t rootlen;
dup2(outfd, STDOUT_FILENO);
@@ -1514,32 +1516,31 @@ execute_test_process(int outfd, int errfd, int socketfd,
setpgid(0, 0);
+ igt_vec_init(&arg_vec, sizeof(char *));
+
rootlen = strlen(settings->test_root);
- argv[0] = malloc(rootlen + strlen(entry->binary) + 2);
- strcpy(argv[0], settings->test_root);
- argv[0][rootlen] = '/';
- strcpy(argv[0] + rootlen + 1, entry->binary);
+ arg = malloc(rootlen + strlen(entry->binary) + 2);
+ strcpy(arg, settings->test_root);
+ arg[rootlen] = '/';
+ strcpy(arg + rootlen + 1, entry->binary);
+ igt_vec_push(&arg_vec, &arg);
if (entry->subtest_count) {
size_t argsize;
const char *dynbegin;
size_t i;
- argv[1] = strdup("--run-subtest");
+ arg = strdup("--run-subtest");
+ igt_vec_push(&arg_vec, &arg);
if ((dynbegin = strchr(entry->subtests[0], '@')) != NULL)
argsize = dynbegin - entry->subtests[0];
else
argsize = strlen(entry->subtests[0]);
- argv[2] = malloc(argsize + 1);
- memcpy(argv[2], entry->subtests[0], argsize);
- argv[2][argsize] = '\0';
-
- if (dynbegin) {
- argv[3] = strdup("--dynamic-subtest");
- argv[4] = strdup(dynbegin + 1);
- }
+ arg = malloc(argsize + 1);
+ memcpy(arg, entry->subtests[0], argsize);
+ arg[argsize] = '\0';
for (i = 1; i < entry->subtest_count; i++) {
char *sub = entry->subtests[i];
@@ -1547,22 +1548,35 @@ execute_test_process(int outfd, int errfd, int socketfd,
assert(dynbegin == NULL);
- argv[2] = realloc(argv[2], argsize + sublen + 2);
- argv[2][argsize] = ',';
- strcpy(argv[2] + argsize + 1, sub);
+ arg = realloc(arg, argsize + sublen + 2);
+ arg[argsize] = ',';
+ strcpy(arg + argsize + 1, sub);
argsize += sublen + 1;
}
+
+ igt_vec_push(&arg_vec, &arg);
+
+ if (dynbegin) {
+ arg = strdup("--dynamic-subtest");
+ igt_vec_push(&arg_vec, &arg);
+ arg = strdup(dynbegin + 1);
+ igt_vec_push(&arg_vec, &arg);
+ }
}
+ arg = NULL;
+ igt_vec_push(&arg_vec, &arg);
+
if (socketfd >= 0) {
struct runnerpacket *packet;
- packet = runnerpacket_exec(argv);
+ packet = runnerpacket_exec(arg_vec.elems);
write(socketfd, packet, packet->size);
}
- execv(argv[0], argv);
- fprintf(stderr, "Cannot execute %s\n", argv[0]);
+ arg = *((char **)igt_vec_elem(&arg_vec, 0));
+ execv(arg, arg_vec.elems);
+ fprintf(stderr, "Cannot execute %s\n", arg);
exit(IGT_EXIT_INVALID);
}
--
2.45.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH i-g-t v3 3/6] runner: Add option --hook
2024-07-25 14:19 [PATCH i-g-t v3 0/6] Add support for hook script Gustavo Sousa
2024-07-25 14:19 ` [PATCH i-g-t v3 1/6] igt_hook: Add feature Gustavo Sousa
2024-07-25 14:19 ` [PATCH i-g-t v3 2/6] runner: Make it easier to extend argv Gustavo Sousa
@ 2024-07-25 14:19 ` Gustavo Sousa
2024-08-12 13:55 ` Lucas De Marchi
2024-07-25 14:19 ` [PATCH i-g-t v3 4/6] igt_hook: Implement and use set_fake_argv() in test Gustavo Sousa
` (6 subsequent siblings)
9 siblings, 1 reply; 17+ messages in thread
From: Gustavo Sousa @ 2024-07-25 14:19 UTC (permalink / raw)
To: igt-dev; +Cc: Lucas De Marchi
Now that we have support for setting a hook script for test cases, let's
also add the option --hook to igt_runner, which forwards it to test
executables.
Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
runner/executor.c | 7 +++++++
runner/runner_tests.c | 5 +++++
runner/settings.c | 25 ++++++++++++++++++++++++-
runner/settings.h | 1 +
4 files changed, 37 insertions(+), 1 deletion(-)
diff --git a/runner/executor.c b/runner/executor.c
index a135cd46b849..a23cd58c0781 100644
--- a/runner/executor.c
+++ b/runner/executor.c
@@ -1564,6 +1564,13 @@ execute_test_process(int outfd, int errfd, int socketfd,
}
}
+ if (settings->hook_str) {
+ arg = strdup("--hook");
+ igt_vec_push(&arg_vec, &arg);
+ arg = strdup(settings->hook_str);
+ igt_vec_push(&arg_vec, &arg);
+ }
+
arg = NULL;
igt_vec_push(&arg_vec, &arg);
diff --git a/runner/runner_tests.c b/runner/runner_tests.c
index 0aa7dd6626b7..7470cc24052f 100644
--- a/runner/runner_tests.c
+++ b/runner/runner_tests.c
@@ -202,6 +202,7 @@ static void assert_settings_equal(struct settings *one, struct settings *two)
igt_assert_eq(one->piglit_style_dmesg, two->piglit_style_dmesg);
igt_assert_eq(one->dmesg_warn_level, two->dmesg_warn_level);
igt_assert_eq(one->prune_mode, two->prune_mode);
+ igt_assert_eqstr(one->hook_str, two->hook_str);
}
static void assert_job_list_equal(struct job_list *one, struct job_list *two)
@@ -302,6 +303,7 @@ igt_main
igt_assert_eq(settings->overall_timeout, 0);
igt_assert(!settings->use_watchdog);
igt_assert_eq(settings->prune_mode, 0);
+ igt_assert(!settings->hook_str);
igt_assert(strstr(settings->test_root, "test-root-dir") != NULL);
igt_assert(strstr(settings->results_path, "path-to-results") != NULL);
@@ -464,6 +466,7 @@ igt_main
"--collect-code-cov",
"--coverage-per-test",
"--collect-script", "/usr/bin/true",
+ "--hook", "echo hello",
"--prune-mode=keep-subtests",
"test-root-dir",
"path-to-results",
@@ -511,6 +514,7 @@ igt_main
igt_assert_eq(settings->per_test_timeout, 72);
igt_assert_eq(settings->overall_timeout, 360);
igt_assert(settings->use_watchdog);
+ igt_assert_eqstr(settings->hook_str, "echo hello");
igt_assert_eq(settings->prune_mode, PRUNE_KEEP_SUBTESTS);
igt_assert(strstr(settings->test_root, "test-root-dir") != NULL);
igt_assert(strstr(settings->results_path, "path-to-results") != NULL);
@@ -961,6 +965,7 @@ igt_main
"--use-watchdog",
"--piglit-style-dmesg",
"--prune-mode=keep-all",
+ "--hook", "echo hello",
testdatadir,
dirname,
};
diff --git a/runner/settings.c b/runner/settings.c
index 42d8137f18e9..e554a5c70776 100644
--- a/runner/settings.c
+++ b/runner/settings.c
@@ -1,3 +1,4 @@
+#include "igt_hook.h"
#include "settings.h"
#include "version.h"
@@ -28,6 +29,8 @@ enum {
OPT_CODE_COV_SCRIPT,
OPT_ENABLE_CODE_COVERAGE,
OPT_COV_RESULTS_PER_TEST,
+ OPT_HOOK,
+ OPT_HELP_HOOK,
OPT_VERSION,
OPT_PRUNE_MODE,
OPT_HELP = 'h',
@@ -297,6 +300,10 @@ static const char *usage_str =
" Requires --collect-script FILENAME\n"
" --collect-script FILENAME\n"
" Use FILENAME as script to collect code coverage data.\n"
+ " --hook HOOK_STR\n"
+ " Forward HOOK_STR to the --hook option of each test.\n"
+ " --help-hook\n"
+ " Show detailed usage information for --hook.\n"
"\n"
" [test_root] Directory that contains the IGT tests. The environment\n"
" variable IGT_TEST_ROOT will be used if set, overriding\n"
@@ -654,6 +661,8 @@ bool parse_options(int argc, char **argv,
{"collect-code-cov", no_argument, NULL, OPT_ENABLE_CODE_COVERAGE},
{"coverage-per-test", no_argument, NULL, OPT_COV_RESULTS_PER_TEST},
{"collect-script", required_argument, NULL, OPT_CODE_COV_SCRIPT},
+ {"hook", required_argument, NULL, OPT_HOOK},
+ {"help-hook", no_argument, NULL, OPT_HELP_HOOK},
{"multiple-mode", no_argument, NULL, OPT_MULTIPLE},
{"inactivity-timeout", required_argument, NULL, OPT_TIMEOUT},
{"per-test-timeout", required_argument, NULL, OPT_PER_TEST_TIMEOUT},
@@ -741,7 +750,19 @@ bool parse_options(int argc, char **argv,
case OPT_CODE_COV_SCRIPT:
settings->code_coverage_script = bin_path(optarg);
break;
-
+ case OPT_HOOK:
+ /* FIXME: In order to allow line breaks, we should
+ * change the format of settings serialization. Maybe
+ * use JSON instead of our own format? */
+ if (strchr(optarg, '\n')) {
+ fprintf(stderr, "Newlines in --hook are currently unsupported.\n");
+ goto error;
+ }
+ settings->hook_str = optarg;
+ break;
+ case OPT_HELP_HOOK:
+ igt_hook_print_help(stdout, "--hook");
+ goto error;
case OPT_MULTIPLE:
settings->multiple_mode = true;
break;
@@ -1040,6 +1061,7 @@ bool serialize_settings(struct settings *settings)
SERIALIZE_LINE(f, settings, enable_code_coverage, "%d");
SERIALIZE_LINE(f, settings, cov_results_per_test, "%d");
SERIALIZE_LINE(f, settings, code_coverage_script, "%s");
+ SERIALIZE_LINE(f, settings, hook_str, "%s");
if (settings->sync) {
fflush(f);
@@ -1103,6 +1125,7 @@ bool read_settings_from_file(struct settings *settings, FILE *f)
PARSE_LINE(settings, name, val, enable_code_coverage, numval);
PARSE_LINE(settings, name, val, cov_results_per_test, numval);
PARSE_LINE(settings, name, val, code_coverage_script, val ? strdup(val) : NULL);
+ PARSE_LINE(settings, name, val, hook_str, val ? strdup(val) : NULL);
printf("Warning: Unknown field in settings file: %s = %s\n",
name, val);
diff --git a/runner/settings.h b/runner/settings.h
index 819c346027ed..d3afb56de039 100644
--- a/runner/settings.h
+++ b/runner/settings.h
@@ -72,6 +72,7 @@ struct settings {
char *code_coverage_script;
bool enable_code_coverage;
bool cov_results_per_test;
+ char *hook_str;
};
/**
--
2.45.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH i-g-t v3 4/6] igt_hook: Implement and use set_fake_argv() in test
2024-07-25 14:19 [PATCH i-g-t v3 0/6] Add support for hook script Gustavo Sousa
` (2 preceding siblings ...)
2024-07-25 14:19 ` [PATCH i-g-t v3 3/6] runner: Add option --hook Gustavo Sousa
@ 2024-07-25 14:19 ` Gustavo Sousa
2024-08-12 13:58 ` Lucas De Marchi
2024-07-25 14:19 ` [PATCH i-g-t v3 5/6] igt_hook: Allow multiple hook descriptors Gustavo Sousa
` (5 subsequent siblings)
9 siblings, 1 reply; 17+ messages in thread
From: Gustavo Sousa @ 2024-07-25 14:19 UTC (permalink / raw)
To: igt-dev; +Cc: Lucas De Marchi
In upcoming changes, fake_argv will need to allow a variable number of
elements. As such, implement the variadic function set_fake_argv() to
allow that.
Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
lib/tests/igt_hook_integration.c | 49 +++++++++++++++++++++++++-------
1 file changed, 39 insertions(+), 10 deletions(-)
diff --git a/lib/tests/igt_hook_integration.c b/lib/tests/igt_hook_integration.c
index f5ba25e92897..c552d5a4e796 100644
--- a/lib/tests/igt_hook_integration.c
+++ b/lib/tests/igt_hook_integration.c
@@ -3,6 +3,7 @@
* Copyright(c) 2024 Intel Corporation. All rights reserved.
*/
+#include <stdarg.h>
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
@@ -11,11 +12,9 @@
#include "igt_tests_common.h"
-char prog[] = "igt_hook_integration";
-char hook_opt[] = "--hook";
-char hook_str[128];
-char *fake_argv[] = {prog, hook_opt, hook_str};
-int fake_argc = sizeof(fake_argv) / sizeof(fake_argv[0]);
+char fake_argv_buffer[1024];
+char *fake_argv[64];
+int fake_argc;
#define ENV_ARRAY(evt_name, fullname_suffix, subtest, dyn_subtest, result) \
{ \
@@ -51,6 +50,32 @@ const char *post_test_env[] = TEST_ENV("post-test", "FAIL");
#define num_env_vars (sizeof(pre_test_env) / sizeof(pre_test_env[0]))
+static void set_fake_argv(const char *arg0, ...)
+{
+ va_list ap;
+ const char *arg;
+ size_t buf_size;
+
+ fake_argc = 0;
+ buf_size = 0;
+
+ va_start(ap, arg0);
+
+ arg = arg0;
+ while (arg != NULL) {
+ internal_assert(buf_size + strlen(arg) < sizeof(fake_argv_buffer));
+ internal_assert((size_t)fake_argc < sizeof(fake_argv) / sizeof(fake_argv[0]));
+
+ strcpy(fake_argv_buffer + buf_size, arg);
+ fake_argv[fake_argc++] = fake_argv_buffer + buf_size;
+ buf_size += strlen(arg) + 1;
+
+ arg = va_arg(ap, typeof(arg));
+ }
+
+ va_end(ap);
+}
+
__noreturn static void fake_main(void)
{
igt_subtest_init(fake_argc, fake_argv);
@@ -85,7 +110,7 @@ static void test_invalid_hook_str(void)
static char err[4096];
int errfd;
- sprintf(hook_str, "invalid-event:echo hello");
+ set_fake_argv("igt_hook_integration", "--hook", "invalid-event:echo hello", NULL);
pid = do_fork_bg_with_pipes(fake_main, NULL, &errfd);
@@ -196,6 +221,7 @@ static void run_tests_and_match_env(const char *evt_descriptors, const char **ex
int ret;
int pipefd[2];
pid_t pid;
+ char hook_str[128];
FILE *f;
ret = pipe(pipefd);
@@ -204,10 +230,13 @@ static void run_tests_and_match_env(const char *evt_descriptors, const char **ex
/* Use grep to filter only env var set by us. This should ensure that
* writing to the pipe will not block due to capacity, since we only
* read from the pipe after the shell command is done. */
- sprintf(hook_str,
- "%1$s:printenv -0 | grep -z ^IGT_HOOK >&%2$d; printf -- ---\\\\00 >&%2$d",
- evt_descriptors,
- pipefd[1]);
+ ret = snprintf(hook_str, sizeof(hook_str),
+ "%1$s:printenv -0 | grep -z ^IGT_HOOK >&%2$d; printf -- ---\\\\00 >&%2$d",
+ evt_descriptors,
+ pipefd[1]);
+ internal_assert(0 < ret && ret < sizeof(hook_str));
+
+ set_fake_argv("igt_hook_integration", "--hook", hook_str, NULL);
pid = do_fork_bg_with_pipes(fake_main, NULL, NULL);
internal_assert(safe_wait(pid, &ret) != -1);
--
2.45.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH i-g-t v3 5/6] igt_hook: Allow multiple hook descriptors
2024-07-25 14:19 [PATCH i-g-t v3 0/6] Add support for hook script Gustavo Sousa
` (3 preceding siblings ...)
2024-07-25 14:19 ` [PATCH i-g-t v3 4/6] igt_hook: Implement and use set_fake_argv() in test Gustavo Sousa
@ 2024-07-25 14:19 ` Gustavo Sousa
2024-08-12 14:01 ` Lucas De Marchi
2024-07-25 14:19 ` [PATCH i-g-t v3 6/6] runner: Allow multiple --hook options Gustavo Sousa
` (4 subsequent siblings)
9 siblings, 1 reply; 17+ messages in thread
From: Gustavo Sousa @ 2024-07-25 14:19 UTC (permalink / raw)
To: igt-dev; +Cc: Lucas De Marchi
Extend the current hook functionality to allow using multiple hook
descriptors. That allows running a test binary like the following:
my-test --hook pre-subtest:do-something \
--hook post-subtest:do-somthing-else
Which is more convenient to the user than having to implement a script
that checks the value of IGT_HOOK_EVENT environment variable.
Note that we still need to add the same support for igt_runner, which is
left for a followup change.
Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
lib/igt_core.c | 27 +++++++-----
lib/igt_hook.c | 75 ++++++++++++++++++++++++--------
lib/igt_hook.h | 3 +-
lib/tests/igt_hook.c | 13 +++++-
lib/tests/igt_hook_integration.c | 74 ++++++++++++++++++++++++++++---
runner/settings.c | 1 +
6 files changed, 157 insertions(+), 36 deletions(-)
diff --git a/lib/igt_core.c b/lib/igt_core.c
index 51141722c89b..e0edfe18f50e 100644
--- a/lib/igt_core.c
+++ b/lib/igt_core.c
@@ -78,6 +78,7 @@
#include "igt_map.h"
#include "igt_device_scan.h"
#include "igt_thread.h"
+#include "igt_vec.h"
#include "runnercomms.h"
#define UNW_LOCAL_ONLY
@@ -1115,10 +1116,12 @@ static int common_init(int *argc, char **argv,
struct option *combined_opts;
int extra_opt_count;
int all_opt_count;
+ struct igt_vec hook_strs;
int ret = 0;
common_init_env();
IGT_INIT_LIST_HEAD(&subgroup_descriptions);
+ igt_vec_init(&hook_strs, sizeof(char *));
command_str = argv[0];
if (strrchr(command_str, '/'))
@@ -1241,17 +1244,7 @@ static int common_init(int *argc, char **argv,
break;
case OPT_HOOK:
assert(optarg);
- if (igt_hook) {
- igt_warn("Overriding previous hook descriptor\n");
- igt_hook_free(igt_hook);
- }
- ret = igt_hook_create(optarg, &igt_hook);
- if (ret) {
- igt_critical("Failed to initialize hook data: %s\n",
- igt_hook_error_str(ret));
- ret = -2;
- goto out;
- }
+ igt_vec_push(&hook_strs, &optarg);
break;
case OPT_HELP_HOOK:
igt_hook_print_help(stdout, "--hook");
@@ -1285,11 +1278,23 @@ static int common_init(int *argc, char **argv,
}
}
+ if (igt_vec_length(&hook_strs)) {
+ ret = igt_hook_create(hook_strs.elems, igt_vec_length(&hook_strs), &igt_hook);
+
+ if (ret) {
+ igt_critical("Failed to initialize hook data: %s\n",
+ igt_hook_error_str(ret));
+ ret = -2;
+ goto out;
+ }
+ }
+
common_init_config();
out:
free(short_opts);
free(combined_opts);
+ igt_vec_fini(&hook_strs);
/* exit immediately if this test has no subtests and a subtest or the
* list of subtests has been requested */
diff --git a/lib/igt_hook.c b/lib/igt_hook.c
index b9350fdd78b1..ae32668b15f0 100644
--- a/lib/igt_hook.c
+++ b/lib/igt_hook.c
@@ -35,9 +35,13 @@
typedef uint16_t evt_mask_t;
-struct igt_hook {
+struct igt_hook_descriptor {
evt_mask_t evt_mask;
char *cmd;
+};
+
+struct igt_hook {
+ struct igt_hook_descriptor *descriptors;
char *test_name;
size_t test_name_size;
char *subtest_name;
@@ -172,15 +176,16 @@ static void igt_hook_update_test_fullname(struct igt_hook *igt_hook)
/**
* igt_hook_create:
- * @hook_str: Hook descriptor string.
+ * @hook_str: Array of hook strings.
+ * @n: Number of element in @hook_strs.
* @igt_hook_ptr: Destination of the struct igt_hook pointer.
*
* Allocate and initialize an #igt_hook structure.
*
- * This function parses the hook descriptor in @hook_str and initializes the
+ * This function parses the hook descriptors in @hook_strs and initializes the
* struct. The pointer to the allocated structure is stored in @igt_hook_ptr.
*
- * The hook descriptor comes from the argument to `--hook` of the test
+ * Each hook descriptor comes from the argument to `--hook` of the test
* executable being run.
*
* If an error happens, the returned error number can be passed to
@@ -188,20 +193,43 @@ static void igt_hook_update_test_fullname(struct igt_hook *igt_hook)
*
* Returns: Zero on success and a non-zero value on error.
*/
-int igt_hook_create(const char *hook_str, struct igt_hook **igt_hook_ptr)
+int igt_hook_create(const char **hook_strs, size_t n, struct igt_hook **igt_hook_ptr)
{
int ret;
- evt_mask_t evt_mask;
- const char *cmd;
+ size_t cmd_buffer_size;
+ char *cmd_buffer;
struct igt_hook *igt_hook = NULL;
- ret = igt_hook_parse_hook_str(hook_str, &evt_mask, &cmd);
- if (ret)
- goto out;
+ /* Parse hook descriptors the first time to learn the needed size. */
+ cmd_buffer_size = 0;
+ for (size_t i = 0; i < n; i++) {
+ evt_mask_t evt_mask;
+ const char *cmd;
+
+ ret = igt_hook_parse_hook_str(hook_strs[i], &evt_mask, &cmd);
+ if (ret)
+ goto out;
+
+ cmd_buffer_size += strlen(cmd) + 1;
+ }
+
+ igt_hook = calloc(1, (sizeof(*igt_hook) + (n + 1) * sizeof(*igt_hook->descriptors) +
+ cmd_buffer_size));
+
+ /* Now parse hook descriptors a second time and store the result. */
+ igt_hook->descriptors = (void *)igt_hook + sizeof(*igt_hook);
+ cmd_buffer = (void *)igt_hook->descriptors + (n + 1) * sizeof(*igt_hook->descriptors);
+ for (size_t i = 0; i < n; i++) {
+ evt_mask_t evt_mask;
+ const char *cmd;
+
+ igt_hook_parse_hook_str(hook_strs[i], &evt_mask, &cmd);
+ strcpy(cmd_buffer, cmd);
+ igt_hook->descriptors[i].evt_mask = evt_mask;
+ igt_hook->descriptors[i].cmd = cmd_buffer;
+ cmd_buffer += strlen(cmd) + 1;
+ }
- igt_hook = calloc(1, sizeof(*igt_hook));
- igt_hook->evt_mask = evt_mask;
- igt_hook->cmd = strdup(cmd);
igt_hook->test_name = malloc(TEST_NAME_INITIAL_SIZE);
igt_hook->test_name_size = TEST_NAME_INITIAL_SIZE;
igt_hook->subtest_name = malloc(TEST_NAME_INITIAL_SIZE);
@@ -237,7 +265,6 @@ void igt_hook_free(struct igt_hook *igt_hook)
if (!igt_hook)
return;
- free(igt_hook->cmd);
free(igt_hook->test_name);
free(igt_hook->subtest_name);
free(igt_hook->dyn_subtest_name);
@@ -327,6 +354,7 @@ static void igt_hook_update_env_vars(struct igt_hook *igt_hook, struct igt_hook_
void igt_hook_event_notify(struct igt_hook *igt_hook, struct igt_hook_evt *evt)
{
evt_mask_t evt_bit;
+ bool has_match = false;
if (!igt_hook)
return;
@@ -334,9 +362,19 @@ void igt_hook_event_notify(struct igt_hook *igt_hook, struct igt_hook_evt *evt)
evt_bit = (1 << evt->evt_type);
igt_hook_update_test_name_pre_call(igt_hook, evt);
- if ((evt_bit & igt_hook->evt_mask)) {
+ for (size_t i = 0; igt_hook->descriptors[i].cmd; i++) {
+ if (evt_bit & igt_hook->descriptors[i].evt_mask) {
+ has_match = true;
+ break;
+ }
+ }
+
+ if (has_match) {
igt_hook_update_env_vars(igt_hook, evt);
- system(igt_hook->cmd);
+
+ for (size_t i = 0; igt_hook->descriptors[i].cmd; i++)
+ if (evt_bit & igt_hook->descriptors[i].evt_mask)
+ system(igt_hook->descriptors[i].cmd);
}
igt_hook_update_test_name_post_call(igt_hook, evt);
@@ -466,5 +504,8 @@ available to the command:\n\
values are: SUCCESS, SKIP or FAIL. This is only applicable on \"post-*\"\n\
events and will be the empty string for other types of events.\n\
\n\
-");
+\n\
+Note that %s can be passed multiple times. Each descriptor is evaluated in turn\n\
+when matching events and running hook commands.\n\
+", option_name);
}
diff --git a/lib/igt_hook.h b/lib/igt_hook.h
index 83722cbb2f2b..e9f97b79b943 100644
--- a/lib/igt_hook.h
+++ b/lib/igt_hook.h
@@ -6,6 +6,7 @@
#ifndef IGT_HOOK_H
#define IGT_HOOK_H
+#include <stddef.h>
#include <stdio.h>
/**
@@ -60,7 +61,7 @@ struct igt_hook_evt {
const char *result;
};
-int igt_hook_create(const char *hook_str, struct igt_hook **igt_hook_ptr);
+int igt_hook_create(const char **hook_strs, size_t n, struct igt_hook **igt_hook_ptr);
void igt_hook_free(struct igt_hook *igt_hook);
void igt_hook_event_notify(struct igt_hook *igt_hook, struct igt_hook_evt *evt);
const char *igt_hook_error_str(int error);
diff --git a/lib/tests/igt_hook.c b/lib/tests/igt_hook.c
index 0d71909e676a..676c6eb7a818 100644
--- a/lib/tests/igt_hook.c
+++ b/lib/tests/igt_hook.c
@@ -42,6 +42,15 @@ out:
return i;
}
+static int igt_single_hook(const char *hook_str, struct igt_hook **igt_hook_ptr)
+{
+ const char *hook_strs[] = {
+ hook_str,
+ };
+
+ return igt_hook_create(hook_strs, 1, igt_hook_ptr);
+}
+
static void test_invalid_hook_descriptors(void)
{
struct {
@@ -59,7 +68,7 @@ static void test_invalid_hook_descriptors(void)
int err;
struct igt_hook *igt_hook;
- err = igt_hook_create(invalid_cases[i].hook_desc, &igt_hook);
+ err = igt_single_hook(invalid_cases[i].hook_desc, &igt_hook);
igt_assert(err != 0);
}
}
@@ -112,7 +121,7 @@ static void test_all_env_vars(void)
ret = asprintf(&hook_str, "printenv -0 | grep -z ^IGT_HOOK >&%d", pipefd[1]);
igt_assert(ret > 0);
- ret = igt_hook_create(hook_str, &igt_hook);
+ ret = igt_single_hook(hook_str, &igt_hook);
igt_assert(ret == 0);
igt_hook_event_notify(igt_hook, &evt);
diff --git a/lib/tests/igt_hook_integration.c b/lib/tests/igt_hook_integration.c
index c552d5a4e796..8dffa0819f9b 100644
--- a/lib/tests/igt_hook_integration.c
+++ b/lib/tests/igt_hook_integration.c
@@ -215,6 +215,14 @@ out:
return true;
}
+
+#define checked_snprintf(char_array, format...) \
+ ({\
+ int ret__ = snprintf(char_array, sizeof(char_array), format); \
+ internal_assert(0 < ret__ && ret__ < sizeof(char_array)); \
+ ret__; \
+ })
+
static void run_tests_and_match_env(const char *evt_descriptors, const char **expected_envs[])
{
int i;
@@ -230,11 +238,9 @@ static void run_tests_and_match_env(const char *evt_descriptors, const char **ex
/* Use grep to filter only env var set by us. This should ensure that
* writing to the pipe will not block due to capacity, since we only
* read from the pipe after the shell command is done. */
- ret = snprintf(hook_str, sizeof(hook_str),
- "%1$s:printenv -0 | grep -z ^IGT_HOOK >&%2$d; printf -- ---\\\\00 >&%2$d",
- evt_descriptors,
- pipefd[1]);
- internal_assert(0 < ret && ret < sizeof(hook_str));
+ checked_snprintf(hook_str,
+ "%1$s:printenv -0 | grep -z ^IGT_HOOK >&%2$d; printf -- ---\\\\00 >&%2$d",
+ evt_descriptors, pipefd[1]);
set_fake_argv("igt_hook_integration", "--hook", hook_str, NULL);
@@ -254,6 +260,59 @@ static void run_tests_and_match_env(const char *evt_descriptors, const char **ex
}
+static void test_multiple_hook_options(void)
+{
+ int ret;
+ int pipefd[2];
+ pid_t pid;
+ char hook_strs[3][128];
+ char hook_out[4096] = {};
+ char expected_output[] = (
+ " hook-2 pre-subtest igt@igt_hook_integration@a\n"
+ " hook-0 post-subtest igt@igt_hook_integration@a\n"
+ " hook-1 post-subtest igt@igt_hook_integration@a\n"
+ " hook-2 pre-subtest igt@igt_hook_integration@b\n"
+ " hook-0 post-subtest igt@igt_hook_integration@b\n"
+ " hook-1 post-subtest igt@igt_hook_integration@b\n"
+ " hook-0 post-test igt@igt_hook_integration\n"
+ );
+
+ ret = pipe(pipefd);
+ internal_assert(ret == 0);
+
+ checked_snprintf(hook_strs[0],
+ "post-test,post-subtest:echo ' hook-0' $IGT_HOOK_EVENT $IGT_HOOK_TEST_FULLNAME >&%d",
+ pipefd[1]);
+
+ checked_snprintf(hook_strs[1],
+ "post-subtest:echo ' hook-1' $IGT_HOOK_EVENT $IGT_HOOK_TEST_FULLNAME >&%d",
+ pipefd[1]);
+
+ checked_snprintf(hook_strs[2],
+ "pre-subtest:echo ' hook-2' $IGT_HOOK_EVENT $IGT_HOOK_TEST_FULLNAME >&%d",
+ pipefd[1]);
+
+ set_fake_argv("igt_hook_integration",
+ "--hook", hook_strs[0],
+ "--hook", hook_strs[1],
+ "--hook", hook_strs[2],
+ NULL);
+
+ pid = do_fork_bg_with_pipes(fake_main, NULL, NULL);
+ internal_assert(safe_wait(pid, &ret) != -1);
+ internal_assert_wexited(ret, IGT_EXIT_FAILURE);
+
+ close(pipefd[1]);
+ read_whole_pipe(pipefd[0], hook_out, sizeof(hook_out));
+ close(pipefd[0]);
+
+ if (strcmp(hook_out, expected_output)) {
+ printf("Expected output:\n%s\n\n", expected_output);
+ printf("Output from hook:\n%s\n", hook_out);
+ }
+ internal_assert(strcmp(hook_out, expected_output) == 0);
+}
+
int main(int argc, char **argv)
{
{
@@ -307,4 +366,9 @@ int main(int argc, char **argv)
printf("Check multiple event types tracking\n");
run_tests_and_match_env("post-dyn-subtest,pre-subtest", expected_envs);
}
+
+ {
+ printf("Check multiple hook options\n");
+ test_multiple_hook_options();
+ }
}
diff --git a/runner/settings.c b/runner/settings.c
index e554a5c70776..6fd742cc826d 100644
--- a/runner/settings.c
+++ b/runner/settings.c
@@ -758,6 +758,7 @@ bool parse_options(int argc, char **argv,
fprintf(stderr, "Newlines in --hook are currently unsupported.\n");
goto error;
}
+ /* FIXME: Allow as many options as allowed by test binaries. */
settings->hook_str = optarg;
break;
case OPT_HELP_HOOK:
--
2.45.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH i-g-t v3 6/6] runner: Allow multiple --hook options
2024-07-25 14:19 [PATCH i-g-t v3 0/6] Add support for hook script Gustavo Sousa
` (4 preceding siblings ...)
2024-07-25 14:19 ` [PATCH i-g-t v3 5/6] igt_hook: Allow multiple hook descriptors Gustavo Sousa
@ 2024-07-25 14:19 ` Gustavo Sousa
2024-08-12 14:06 ` Lucas De Marchi
2024-07-25 18:05 ` ✓ CI.xeBAT: success for Add support for hook script (rev3) Patchwork
` (3 subsequent siblings)
9 siblings, 1 reply; 17+ messages in thread
From: Gustavo Sousa @ 2024-07-25 14:19 UTC (permalink / raw)
To: igt-dev; +Cc: Lucas De Marchi
Test binaries now allow passing multiple --hook options, it just makes
sense that igt_runner follows suit, so let's do it.
Note that this requires having another file in the results directory for
storing the hook strings, as metadata.txt does not support multivalued
items.
Since we are using a different file to store hook strings, take this
opportunity to also allow multiline hook strings (which was not possible
with metadata.txt).
Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
runner/executor.c | 4 +-
runner/runner_tests.c | 19 ++++-
runner/settings.c | 164 +++++++++++++++++++++++++++++++++++++++---
runner/settings.h | 3 +-
4 files changed, 173 insertions(+), 17 deletions(-)
diff --git a/runner/executor.c b/runner/executor.c
index a23cd58c0781..ac73e1ddec07 100644
--- a/runner/executor.c
+++ b/runner/executor.c
@@ -1564,10 +1564,10 @@ execute_test_process(int outfd, int errfd, int socketfd,
}
}
- if (settings->hook_str) {
+ for (size_t i = 0; i < igt_vec_length(&settings->hook_strs); i++) {
arg = strdup("--hook");
igt_vec_push(&arg_vec, &arg);
- arg = strdup(settings->hook_str);
+ arg = strdup(*((char **)igt_vec_elem(&settings->hook_strs, i)));
igt_vec_push(&arg_vec, &arg);
}
diff --git a/runner/runner_tests.c b/runner/runner_tests.c
index 7470cc24052f..b806d45adbd6 100644
--- a/runner/runner_tests.c
+++ b/runner/runner_tests.c
@@ -202,7 +202,14 @@ static void assert_settings_equal(struct settings *one, struct settings *two)
igt_assert_eq(one->piglit_style_dmesg, two->piglit_style_dmesg);
igt_assert_eq(one->dmesg_warn_level, two->dmesg_warn_level);
igt_assert_eq(one->prune_mode, two->prune_mode);
- igt_assert_eqstr(one->hook_str, two->hook_str);
+
+ igt_assert_eq(igt_vec_length(&one->hook_strs), igt_vec_length(&two->hook_strs));
+ for (size_t i = 0; i < igt_vec_length(&one->hook_strs); i++) {
+ char **hook_str_one = igt_vec_elem(&one->hook_strs, i);
+ char **hook_str_two = igt_vec_elem(&two->hook_strs, i);
+
+ igt_assert_eqstr(*hook_str_one, *hook_str_two);
+ }
}
static void assert_job_list_equal(struct job_list *one, struct job_list *two)
@@ -294,6 +301,7 @@ igt_main
igt_assert_eq(settings->include_regexes.size, 0);
igt_assert_eq(settings->exclude_regexes.size, 0);
igt_assert(igt_list_empty(&settings->env_vars));
+ igt_assert(!igt_vec_length(&settings->hook_strs));
igt_assert(!settings->sync);
igt_assert_eq(settings->log_level, LOG_LEVEL_NORMAL);
igt_assert(!settings->overwrite);
@@ -303,7 +311,6 @@ igt_main
igt_assert_eq(settings->overall_timeout, 0);
igt_assert(!settings->use_watchdog);
igt_assert_eq(settings->prune_mode, 0);
- igt_assert(!settings->hook_str);
igt_assert(strstr(settings->test_root, "test-root-dir") != NULL);
igt_assert(strstr(settings->results_path, "path-to-results") != NULL);
@@ -467,6 +474,7 @@ igt_main
"--coverage-per-test",
"--collect-script", "/usr/bin/true",
"--hook", "echo hello",
+ "--hook", "echo world",
"--prune-mode=keep-subtests",
"test-root-dir",
"path-to-results",
@@ -506,6 +514,10 @@ igt_main
igt_assert_eqstr(env_var->key, "ENVS_WITH_JUST_KEYS");
igt_assert_eqstr(env_var->value, "SHOULD_WORK");
+ igt_assert_eq(igt_vec_length(&settings->hook_strs), 2);
+ igt_assert_eqstr(*((char **)igt_vec_elem(&settings->hook_strs, 0)), "echo hello");
+ igt_assert_eqstr(*((char **)igt_vec_elem(&settings->hook_strs, 1)), "echo world");
+
igt_assert(settings->sync);
igt_assert_eq(settings->log_level, LOG_LEVEL_VERBOSE);
igt_assert(settings->overwrite);
@@ -514,7 +526,6 @@ igt_main
igt_assert_eq(settings->per_test_timeout, 72);
igt_assert_eq(settings->overall_timeout, 360);
igt_assert(settings->use_watchdog);
- igt_assert_eqstr(settings->hook_str, "echo hello");
igt_assert_eq(settings->prune_mode, PRUNE_KEEP_SUBTESTS);
igt_assert(strstr(settings->test_root, "test-root-dir") != NULL);
igt_assert(strstr(settings->results_path, "path-to-results") != NULL);
@@ -966,6 +977,8 @@ igt_main
"--piglit-style-dmesg",
"--prune-mode=keep-all",
"--hook", "echo hello",
+ "--hook", "echo hello\necho newline",
+ "--hook", "echo hello\necho newline\\still the second line",
testdatadir,
dirname,
};
diff --git a/runner/settings.c b/runner/settings.c
index 6fd742cc826d..94b3b9fe641f 100644
--- a/runner/settings.c
+++ b/runner/settings.c
@@ -1,4 +1,5 @@
#include "igt_hook.h"
+#include "igt_vec.h"
#include "settings.h"
#include "version.h"
@@ -84,6 +85,7 @@ static struct {
static const char settings_filename[] = "metadata.txt";
static const char env_filename[] = "environment.txt";
+static const char hooks_filename[] = "hooks.txt";
static bool set_log_level(struct settings* settings, const char *level)
{
@@ -518,6 +520,13 @@ static void free_env_vars(struct igt_list_head *env_vars) {
}
}
+static void free_hook_strs(struct igt_vec *hook_strs)
+{
+ for (size_t i = 0; i < igt_vec_length(hook_strs); i++)
+ free(*((char **)igt_vec_elem(hook_strs, i)));
+ igt_vec_fini(hook_strs);
+}
+
static bool file_exists_at(int dirfd, const char *filename)
{
return faccessat(dirfd, filename, F_OK, 0) == 0;
@@ -620,6 +629,7 @@ void init_settings(struct settings *settings)
{
memset(settings, 0, sizeof(*settings));
IGT_INIT_LIST_HEAD(&settings->env_vars);
+ igt_vec_init(&settings->hook_strs, sizeof(char *));
}
void clear_settings(struct settings *settings)
@@ -632,6 +642,7 @@ void clear_settings(struct settings *settings)
free_regexes(&settings->include_regexes);
free_regexes(&settings->exclude_regexes);
free_env_vars(&settings->env_vars);
+ free_hook_strs(&settings->hook_strs);
init_settings(settings);
}
@@ -641,6 +652,7 @@ bool parse_options(int argc, char **argv,
{
int c;
char *env_test_root;
+ char *hook_str;
static struct option long_options[] = {
{"version", no_argument, NULL, OPT_VERSION},
@@ -751,15 +763,8 @@ bool parse_options(int argc, char **argv,
settings->code_coverage_script = bin_path(optarg);
break;
case OPT_HOOK:
- /* FIXME: In order to allow line breaks, we should
- * change the format of settings serialization. Maybe
- * use JSON instead of our own format? */
- if (strchr(optarg, '\n')) {
- fprintf(stderr, "Newlines in --hook are currently unsupported.\n");
- goto error;
- }
- /* FIXME: Allow as many options as allowed by test binaries. */
- settings->hook_str = optarg;
+ hook_str = strdup(optarg);
+ igt_vec_push(&settings->hook_strs, &hook_str);
break;
case OPT_HELP_HOOK:
igt_hook_print_help(stdout, "--hook");
@@ -993,6 +998,49 @@ static bool serialize_environment(struct settings *settings, int dirfd)
return true;
}
+static bool serialize_hook_strs(struct settings *settings, int dirfd)
+{
+ FILE *f;
+
+ if (file_exists_at(dirfd, hooks_filename) && !settings->overwrite) {
+ usage(stderr, "%s already exists, not overwriting", hooks_filename);
+ return false;
+ }
+
+ if ((f = fopenat_create(dirfd, hooks_filename, settings->overwrite)) == NULL)
+ return false;
+
+ for (size_t i = 0; i < igt_vec_length(&settings->hook_strs); i++) {
+ const char *s = *((char **)igt_vec_elem(&settings->hook_strs, i));
+ size_t len;
+
+ while (*s) {
+ len = strcspn(s, "\\\n");
+
+ if (len > 0)
+ fwrite(s, len, 1, f);
+
+ s += len;
+ if (!*s)
+ break;
+
+ fputc('\\', f);
+ fputc(*s, f);
+ s++;
+ }
+ fputc('\n', f);
+ fputc('\n', f);
+ }
+
+ if (settings->sync) {
+ fflush(f);
+ fsync(fileno(f));
+ }
+
+ fclose(f);
+ return true;
+}
+
bool serialize_settings(struct settings *settings)
{
#define SERIALIZE_LINE(f, s, name, format) fprintf(f, "%s : " format "\n", #name, s->name)
@@ -1062,7 +1110,6 @@ bool serialize_settings(struct settings *settings)
SERIALIZE_LINE(f, settings, enable_code_coverage, "%d");
SERIALIZE_LINE(f, settings, cov_results_per_test, "%d");
SERIALIZE_LINE(f, settings, code_coverage_script, "%s");
- SERIALIZE_LINE(f, settings, hook_str, "%s");
if (settings->sync) {
fflush(f);
@@ -1078,6 +1125,13 @@ bool serialize_settings(struct settings *settings)
}
}
+ if (igt_vec_length(&settings->hook_strs)) {
+ if (!serialize_hook_strs(settings, dirfd)) {
+ close(dirfd);
+ return false;
+ }
+ }
+
if (settings->sync)
fsync(dirfd);
@@ -1126,7 +1180,6 @@ bool read_settings_from_file(struct settings *settings, FILE *f)
PARSE_LINE(settings, name, val, enable_code_coverage, numval);
PARSE_LINE(settings, name, val, cov_results_per_test, numval);
PARSE_LINE(settings, name, val, code_coverage_script, val ? strdup(val) : NULL);
- PARSE_LINE(settings, name, val, hook_str, val ? strdup(val) : NULL);
printf("Warning: Unknown field in settings file: %s = %s\n",
name, val);
@@ -1196,6 +1249,82 @@ static bool read_env_vars_from_file(struct igt_list_head *env_vars, FILE *f)
return true;
}
+static bool read_hook_strs_from_file(struct igt_vec *hook_strs, FILE *f)
+{
+ char *line = NULL;
+ ssize_t line_length;
+ size_t line_size = 0;
+ char *buf;
+ size_t buf_len = 0;
+ size_t buf_capacity = 128;
+
+ buf = malloc(buf_capacity);
+
+ while ((line_length = getline(&line, &line_size, f) != -1)) {
+ char *s = line;
+
+ if (buf_len == 0) {
+ while (isspace(*s)) {
+ line_length--;
+ s++;
+ }
+
+ if (*s == '\0' || *s == '#')
+ continue;
+ }
+
+ if (line_length + 1 > buf_capacity - buf_len) {
+ while (line_length + 1 > buf_capacity - buf_len)
+ buf_capacity *= 2;
+
+ buf = realloc(buf, buf_capacity);
+ }
+
+ while (true) {
+ if (*s == '\0' || *s == '\n') {
+ char *buf_copy;
+
+ if (!buf_len)
+ break;
+
+ /* Reached the end of a hook string. */
+ buf[buf_len] = '\0';
+ buf_copy = strdup(buf);
+ igt_vec_push(hook_strs, &buf_copy);
+ buf_len = 0;
+ break;
+ }
+
+ if (*s == '\\') {
+ s++;
+
+ if (*s == '\0')
+ /* Weird case of backslash being the
+ * last character of the file. */
+ s--;
+ }
+
+ buf[buf_len++] = *s++;
+
+ if (*s == '\0' || *s == '\n')
+ break;
+ }
+ }
+
+ if (buf_len) {
+ char *buf_copy;
+
+ buf[buf_len] = '\0';
+ buf_copy = strdup(buf);
+ igt_vec_push(hook_strs, &buf_copy);
+ }
+
+ free(buf);
+ free(line);
+
+ return true;
+}
+
bool read_settings_from_dir(struct settings *settings, int dirfd)
{
FILE *f;
@@ -1226,5 +1355,18 @@ bool read_settings_from_dir(struct settings *settings, int dirfd)
fclose(f);
}
+ /* hooks file may not exist if no --hook was passed */
+ if (file_exists_at(dirfd, hooks_filename)) {
+ if ((f = fopenat_read(dirfd, hooks_filename)) == NULL)
+ return false;
+
+ if (!read_hook_strs_from_file(&settings->hook_strs, f)) {
+ fclose(f);
+ return false;
+ }
+
+ fclose(f);
+ }
+
return true;
}
diff --git a/runner/settings.h b/runner/settings.h
index d3afb56de039..8335f0b8c813 100644
--- a/runner/settings.h
+++ b/runner/settings.h
@@ -8,6 +8,7 @@
#include <glib.h>
#include "igt_list.h"
+#include "igt_vec.h"
enum {
LOG_LEVEL_NORMAL = 0,
@@ -55,6 +56,7 @@ struct settings {
struct regex_list include_regexes;
struct regex_list exclude_regexes;
struct igt_list_head env_vars;
+ struct igt_vec hook_strs;
bool sync;
int log_level;
bool overwrite;
@@ -72,7 +74,6 @@ struct settings {
char *code_coverage_script;
bool enable_code_coverage;
bool cov_results_per_test;
- char *hook_str;
};
/**
--
2.45.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* ✓ CI.xeBAT: success for Add support for hook script (rev3)
2024-07-25 14:19 [PATCH i-g-t v3 0/6] Add support for hook script Gustavo Sousa
` (5 preceding siblings ...)
2024-07-25 14:19 ` [PATCH i-g-t v3 6/6] runner: Allow multiple --hook options Gustavo Sousa
@ 2024-07-25 18:05 ` Patchwork
2024-07-25 18:11 ` ✓ Fi.CI.BAT: " Patchwork
` (2 subsequent siblings)
9 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2024-07-25 18:05 UTC (permalink / raw)
To: Gustavo Sousa; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 1058 bytes --]
== Series Details ==
Series: Add support for hook script (rev3)
URL : https://patchwork.freedesktop.org/series/133391/
State : success
== Summary ==
CI Bug Log - changes from XEIGT_7937_BAT -> XEIGTPW_11461_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (7 -> 7)
------------------------------
No changes in participating hosts
Changes
-------
No changes found
Build changes
-------------
* IGT: IGT_7937 -> IGTPW_11461
* Linux: xe-1664-724a2a53988a57709d7f9dcd5c58dd5737d45cb2 -> xe-1667-9f8e597a1c39d7e316f9479e6f627c15dbc58e1d
IGTPW_11461: 11461
IGT_7937: eba69333dfe8c295d053997367e395d7bde2b4b4 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-1664-724a2a53988a57709d7f9dcd5c58dd5737d45cb2: 724a2a53988a57709d7f9dcd5c58dd5737d45cb2
xe-1667-9f8e597a1c39d7e316f9479e6f627c15dbc58e1d: 9f8e597a1c39d7e316f9479e6f627c15dbc58e1d
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/index.html
[-- Attachment #2: Type: text/html, Size: 1617 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* ✓ Fi.CI.BAT: success for Add support for hook script (rev3)
2024-07-25 14:19 [PATCH i-g-t v3 0/6] Add support for hook script Gustavo Sousa
` (6 preceding siblings ...)
2024-07-25 18:05 ` ✓ CI.xeBAT: success for Add support for hook script (rev3) Patchwork
@ 2024-07-25 18:11 ` Patchwork
2024-07-25 22:49 ` ✗ CI.xeFULL: failure " Patchwork
2024-07-26 11:36 ` ✗ Fi.CI.IGT: " Patchwork
9 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2024-07-25 18:11 UTC (permalink / raw)
To: Gustavo Sousa; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 8292 bytes --]
== Series Details ==
Series: Add support for hook script (rev3)
URL : https://patchwork.freedesktop.org/series/133391/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_15132 -> IGTPW_11461
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/index.html
Participating hosts (41 -> 41)
------------------------------
Additional (2): fi-cfl-8109u bat-mtlp-6
Missing (2): fi-snb-2520m fi-elk-e7500
Known issues
------------
Here are the changes found in IGTPW_11461 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@debugfs_test@basic-hwmon:
- bat-mtlp-6: NOTRUN -> [SKIP][1] ([i915#9318])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@debugfs_test@basic-hwmon.html
* igt@fbdev@info:
- bat-mtlp-6: NOTRUN -> [SKIP][2] ([i915#1849] / [i915#2582])
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@fbdev@info.html
* igt@fbdev@write:
- bat-mtlp-6: NOTRUN -> [SKIP][3] ([i915#2582]) +3 other tests skip
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@fbdev@write.html
* igt@gem_huc_copy@huc-copy:
- fi-cfl-8109u: NOTRUN -> [SKIP][4] ([i915#2190])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/fi-cfl-8109u/igt@gem_huc_copy@huc-copy.html
* igt@gem_lmem_swapping@verify-random:
- bat-mtlp-6: NOTRUN -> [SKIP][5] ([i915#4613]) +3 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@gem_lmem_swapping@verify-random.html
- fi-cfl-8109u: NOTRUN -> [SKIP][6] ([i915#4613]) +3 other tests skip
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/fi-cfl-8109u/igt@gem_lmem_swapping@verify-random.html
* igt@gem_mmap@basic:
- bat-mtlp-6: NOTRUN -> [SKIP][7] ([i915#4083])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@gem_mmap@basic.html
* igt@gem_tiled_blits@basic:
- bat-mtlp-6: NOTRUN -> [SKIP][8] ([i915#4077]) +2 other tests skip
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@gem_tiled_blits@basic.html
* igt@gem_tiled_pread_basic:
- bat-mtlp-6: NOTRUN -> [SKIP][9] ([i915#4079]) +1 other test skip
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@gem_tiled_pread_basic.html
* igt@i915_pm_rps@basic-api:
- bat-mtlp-6: NOTRUN -> [SKIP][10] ([i915#6621])
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@i915_pm_rps@basic-api.html
* igt@kms_addfb_basic@addfb25-x-tiled-legacy:
- bat-mtlp-6: NOTRUN -> [SKIP][11] ([i915#4212] / [i915#9792]) +8 other tests skip
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@kms_addfb_basic@addfb25-x-tiled-legacy.html
* igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- bat-mtlp-6: NOTRUN -> [SKIP][12] ([i915#5190] / [i915#9792])
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
* igt@kms_cursor_legacy@basic-flip-after-cursor-legacy:
- bat-mtlp-6: NOTRUN -> [SKIP][13] ([i915#9792]) +17 other tests skip
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html
* igt@kms_flip@basic-flip-vs-dpms:
- bat-mtlp-6: NOTRUN -> [SKIP][14] ([i915#3637] / [i915#9792]) +3 other tests skip
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@kms_flip@basic-flip-vs-dpms.html
* igt@kms_force_connector_basic@prune-stale-modes:
- bat-mtlp-6: NOTRUN -> [SKIP][15] ([i915#5274] / [i915#9792])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@kms_force_connector_basic@prune-stale-modes.html
* igt@kms_frontbuffer_tracking@basic:
- bat-mtlp-6: NOTRUN -> [SKIP][16] ([i915#4342] / [i915#5354] / [i915#9792])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@kms_frontbuffer_tracking@basic.html
* igt@kms_pm_backlight@basic-brightness:
- fi-cfl-8109u: NOTRUN -> [SKIP][17] +11 other tests skip
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/fi-cfl-8109u/igt@kms_pm_backlight@basic-brightness.html
- bat-mtlp-6: NOTRUN -> [SKIP][18] ([i915#5354] / [i915#9792])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@kms_pm_backlight@basic-brightness.html
* igt@kms_psr@psr-cursor-plane-move:
- bat-mtlp-6: NOTRUN -> [SKIP][19] ([i915#1072] / [i915#9673] / [i915#9732] / [i915#9792]) +3 other tests skip
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@kms_psr@psr-cursor-plane-move.html
* igt@kms_setmode@basic-clone-single-crtc:
- bat-mtlp-6: NOTRUN -> [SKIP][20] ([i915#3555] / [i915#8809] / [i915#9792])
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@kms_setmode@basic-clone-single-crtc.html
* igt@prime_vgem@basic-fence-flip:
- bat-mtlp-6: NOTRUN -> [SKIP][21] ([i915#3708] / [i915#9792])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@prime_vgem@basic-fence-flip.html
* igt@prime_vgem@basic-fence-mmap:
- bat-mtlp-6: NOTRUN -> [SKIP][22] ([i915#3708] / [i915#4077]) +1 other test skip
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@prime_vgem@basic-fence-mmap.html
* igt@prime_vgem@basic-read:
- bat-mtlp-6: NOTRUN -> [SKIP][23] ([i915#3708]) +1 other test skip
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@prime_vgem@basic-read.html
* igt@prime_vgem@basic-write:
- bat-mtlp-6: NOTRUN -> [SKIP][24] ([i915#10216] / [i915#3708])
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/bat-mtlp-6/igt@prime_vgem@basic-write.html
[i915#10216]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10216
[i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
[i915#1849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1849
[i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
[i915#2582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2582
[i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
[i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
[i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
[i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
[i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
[i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
[i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
[i915#4342]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4342
[i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
[i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
[i915#5274]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5274
[i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
[i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
[i915#8809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8809
[i915#9318]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9318
[i915#9673]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9673
[i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
[i915#9792]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9792
Build changes
-------------
* CI: CI-20190529 -> None
* IGT: IGT_7937 -> IGTPW_11461
CI-20190529: 20190529
CI_DRM_15132: 9f8e597a1c39d7e316f9479e6f627c15dbc58e1d @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_11461: 11461
IGT_7937: eba69333dfe8c295d053997367e395d7bde2b4b4 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/index.html
[-- Attachment #2: Type: text/html, Size: 10629 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* ✗ CI.xeFULL: failure for Add support for hook script (rev3)
2024-07-25 14:19 [PATCH i-g-t v3 0/6] Add support for hook script Gustavo Sousa
` (7 preceding siblings ...)
2024-07-25 18:11 ` ✓ Fi.CI.BAT: " Patchwork
@ 2024-07-25 22:49 ` Patchwork
2024-07-26 11:36 ` ✗ Fi.CI.IGT: " Patchwork
9 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2024-07-25 22:49 UTC (permalink / raw)
To: Gustavo Sousa; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 54379 bytes --]
== Series Details ==
Series: Add support for hook script (rev3)
URL : https://patchwork.freedesktop.org/series/133391/
State : failure
== Summary ==
CI Bug Log - changes from XEIGT_7937_full -> XEIGTPW_11461_full
====================================================
Summary
-------
**WARNING**
Minor unknown changes coming with XEIGTPW_11461_full need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in XEIGTPW_11461_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (3 -> 3)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in XEIGTPW_11461_full:
### IGT changes ###
#### Warnings ####
* igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-a-hdmi-a-6:
- shard-dg2-set2: [SKIP][1] ([Intel XE#1201]) -> [SKIP][2] +2 other tests skip
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-434/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-a-hdmi-a-6.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-a-hdmi-a-6.html
#### Suppressed ####
The following results come from untrusted machines, tests, or statuses.
They do not affect the overall result.
* {igt@kms_plane@plane-position-hole-dpms@pipe-b-plane-1}:
- shard-lnl: [PASS][3] -> [DMESG-WARN][4]
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-lnl-1/igt@kms_plane@plane-position-hole-dpms@pipe-b-plane-1.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-3/igt@kms_plane@plane-position-hole-dpms@pipe-b-plane-1.html
* {igt@xe_pm@d3cold-mocs}:
- shard-dg2-set2: [SKIP][5] ([Intel XE#1201]) -> [SKIP][6]
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-434/igt@xe_pm@d3cold-mocs.html
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@xe_pm@d3cold-mocs.html
Known issues
------------
Here are the changes found in XEIGTPW_11461_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip:
- shard-lnl: [PASS][7] -> [FAIL][8] ([Intel XE#1659])
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-lnl-1/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-8/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
* igt@kms_big_fb@x-tiled-16bpp-rotate-270:
- shard-dg2-set2: NOTRUN -> [SKIP][9] ([Intel XE#1201] / [Intel XE#316])
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-466/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html
- shard-lnl: NOTRUN -> [SKIP][10] ([Intel XE#1407])
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-8/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-64bpp-rotate-180:
- shard-dg2-set2: NOTRUN -> [SKIP][11] ([Intel XE#1124])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_big_fb@y-tiled-64bpp-rotate-180.html
* igt@kms_big_fb@y-tiled-addfb-size-offset-overflow:
- shard-lnl: NOTRUN -> [SKIP][12] ([Intel XE#1477])
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-4/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html
* igt@kms_big_fb@yf-tiled-16bpp-rotate-180:
- shard-lnl: NOTRUN -> [SKIP][13] ([Intel XE#1124]) +3 other tests skip
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-6/igt@kms_big_fb@yf-tiled-16bpp-rotate-180.html
* igt@kms_big_fb@yf-tiled-8bpp-rotate-270:
- shard-dg2-set2: NOTRUN -> [SKIP][14] ([Intel XE#1124] / [Intel XE#1201])
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-463/igt@kms_big_fb@yf-tiled-8bpp-rotate-270.html
* igt@kms_ccs@bad-pixel-format-4-tiled-dg2-rc-ccs-cc:
- shard-lnl: NOTRUN -> [SKIP][15] ([Intel XE#1399]) +3 other tests skip
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-1/igt@kms_ccs@bad-pixel-format-4-tiled-dg2-rc-ccs-cc.html
* igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs:
- shard-dg2-set2: NOTRUN -> [SKIP][16] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) +1 other test skip
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-466/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-6:
- shard-dg2-set2: NOTRUN -> [SKIP][17] ([Intel XE#1201] / [Intel XE#787]) +6 other tests skip
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-466/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-6.html
* igt@kms_chamelium_color@ctm-blue-to-red:
- shard-lnl: NOTRUN -> [SKIP][18] ([Intel XE#306])
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-6/igt@kms_chamelium_color@ctm-blue-to-red.html
* igt@kms_chamelium_frames@hdmi-frame-dump:
- shard-dg2-set2: NOTRUN -> [SKIP][19] ([Intel XE#373])
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_chamelium_frames@hdmi-frame-dump.html
- shard-lnl: NOTRUN -> [SKIP][20] ([Intel XE#373]) +1 other test skip
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-1/igt@kms_chamelium_frames@hdmi-frame-dump.html
* igt@kms_cursor_crc@cursor-offscreen-512x170:
- shard-lnl: NOTRUN -> [SKIP][21] ([Intel XE#1413])
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-1/igt@kms_cursor_crc@cursor-offscreen-512x170.html
* igt@kms_cursor_crc@cursor-rapid-movement-max-size:
- shard-lnl: NOTRUN -> [SKIP][22] ([Intel XE#1424])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-4/igt@kms_cursor_crc@cursor-rapid-movement-max-size.html
* igt@kms_cursor_legacy@cursora-vs-flipb-legacy:
- shard-lnl: NOTRUN -> [SKIP][23] ([Intel XE#309])
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-8/igt@kms_cursor_legacy@cursora-vs-flipb-legacy.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
- shard-lnl: NOTRUN -> [SKIP][24] ([Intel XE#323])
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-3/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling:
- shard-lnl: NOTRUN -> [SKIP][25] ([Intel XE#1401] / [Intel XE#1745])
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-5/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][26] ([Intel XE#1401])
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-5/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling:
- shard-lnl: NOTRUN -> [SKIP][27] ([Intel XE#1397] / [Intel XE#1745])
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-2/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][28] ([Intel XE#1397])
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-2/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling@pipe-a-default-mode.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][29] ([Intel XE#656]) +8 other tests skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-1/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@drrs-rgb565-draw-blt:
- shard-dg2-set2: NOTRUN -> [SKIP][30] ([Intel XE#1201] / [Intel XE#651]) +2 other tests skip
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-433/igt@kms_frontbuffer_tracking@drrs-rgb565-draw-blt.html
* igt@kms_frontbuffer_tracking@fbc-suspend:
- shard-lnl: NOTRUN -> [INCOMPLETE][31] ([Intel XE#2050])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-2/igt@kms_frontbuffer_tracking@fbc-suspend.html
* igt@kms_frontbuffer_tracking@fbcdrrs-slowdraw:
- shard-lnl: NOTRUN -> [SKIP][32] ([Intel XE#651]) +3 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-8/igt@kms_frontbuffer_tracking@fbcdrrs-slowdraw.html
* igt@kms_frontbuffer_tracking@fbcpsr-modesetfrombusy:
- shard-dg2-set2: NOTRUN -> [SKIP][33] ([Intel XE#653]) +1 other test skip
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcpsr-modesetfrombusy.html
* igt@kms_frontbuffer_tracking@psr-rgb565-draw-render:
- shard-dg2-set2: NOTRUN -> [SKIP][34] ([Intel XE#1201] / [Intel XE#653]) +2 other tests skip
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-433/igt@kms_frontbuffer_tracking@psr-rgb565-draw-render.html
* igt@kms_plane@plane-position-hole-dpms:
- shard-lnl: [PASS][35] -> [DMESG-WARN][36] ([Intel XE#324])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-lnl-1/igt@kms_plane@plane-position-hole-dpms.html
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-3/igt@kms_plane@plane-position-hole-dpms.html
* igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6:
- shard-dg2-set2: [PASS][37] -> [FAIL][38] ([Intel XE#361])
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-433/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6.html
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-466/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6.html
* igt@kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format@pipe-a-edp-1:
- shard-lnl: NOTRUN -> [SKIP][39] ([Intel XE#498]) +3 other tests skip
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-2/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format@pipe-a-edp-1.html
* igt@kms_pm_backlight@basic-brightness:
- shard-lnl: [PASS][40] -> [SKIP][41] ([Intel XE#870]) +1 other test skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-lnl-6/igt@kms_pm_backlight@basic-brightness.html
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-7/igt@kms_pm_backlight@basic-brightness.html
* igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-fully-sf:
- shard-dg2-set2: NOTRUN -> [SKIP][42] ([Intel XE#1201] / [Intel XE#1489]) +1 other test skip
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-435/igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_su@page_flip-nv12:
- shard-lnl: NOTRUN -> [SKIP][43] ([Intel XE#1128])
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-4/igt@kms_psr2_su@page_flip-nv12.html
* igt@kms_psr@pr-sprite-blt:
- shard-lnl: NOTRUN -> [SKIP][44] ([Intel XE#1406])
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-5/igt@kms_psr@pr-sprite-blt.html
* igt@kms_psr@psr-sprite-plane-onoff:
- shard-dg2-set2: NOTRUN -> [SKIP][45] ([Intel XE#1201] / [Intel XE#929]) +1 other test skip
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-464/igt@kms_psr@psr-sprite-plane-onoff.html
* igt@kms_psr@psr2-primary-page-flip:
- shard-lnl: [PASS][46] -> [FAIL][47] ([Intel XE#1649]) +1 other test fail
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-lnl-4/igt@kms_psr@psr2-primary-page-flip.html
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-6/igt@kms_psr@psr2-primary-page-flip.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-b-dp-4:
- shard-dg2-set2: [PASS][48] -> [FAIL][49] ([Intel XE#899])
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-464/igt@kms_universal_plane@cursor-fb-leak@pipe-b-dp-4.html
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-463/igt@kms_universal_plane@cursor-fb-leak@pipe-b-dp-4.html
* igt@xe_compute@ccs-mode-compute-kernel:
- shard-dg2-set2: NOTRUN -> [FAIL][50] ([Intel XE#1050])
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-436/igt@xe_compute@ccs-mode-compute-kernel.html
- shard-lnl: NOTRUN -> [SKIP][51] ([Intel XE#1447])
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-5/igt@xe_compute@ccs-mode-compute-kernel.html
* igt@xe_evict@evict-beng-cm-threads-small-multi-vm:
- shard-lnl: NOTRUN -> [SKIP][52] ([Intel XE#688]) +3 other tests skip
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-2/igt@xe_evict@evict-beng-cm-threads-small-multi-vm.html
* igt@xe_evict@evict-beng-mixed-many-threads-small:
- shard-dg2-set2: [PASS][53] -> [TIMEOUT][54] ([Intel XE#1473] / [Intel XE#402])
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-435/igt@xe_evict@evict-beng-mixed-many-threads-small.html
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-466/igt@xe_evict@evict-beng-mixed-many-threads-small.html
* igt@xe_evict@evict-threads-large:
- shard-dg2-set2: [PASS][55] -> [INCOMPLETE][56] ([Intel XE#1473] / [Intel XE#392])
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-435/igt@xe_evict@evict-threads-large.html
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@xe_evict@evict-threads-large.html
* igt@xe_exec_basic@multigpu-no-exec-userptr:
- shard-lnl: NOTRUN -> [SKIP][57] ([Intel XE#1392]) +2 other tests skip
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-6/igt@xe_exec_basic@multigpu-no-exec-userptr.html
* igt@xe_exec_fault_mode@many-execqueues-userptr-rebind-imm:
- shard-dg2-set2: NOTRUN -> [SKIP][58] ([Intel XE#1201] / [Intel XE#288])
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-433/igt@xe_exec_fault_mode@many-execqueues-userptr-rebind-imm.html
* igt@xe_gt_freq@freq_fixed_exec:
- shard-dg2-set2: [PASS][59] -> [FAIL][60] ([Intel XE#2262])
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-434/igt@xe_gt_freq@freq_fixed_exec.html
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-436/igt@xe_gt_freq@freq_fixed_exec.html
* igt@xe_live_ktest@xe_migrate:
- shard-dg2-set2: [PASS][61] -> [SKIP][62] ([Intel XE#1192] / [Intel XE#1201])
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-435/igt@xe_live_ktest@xe_migrate.html
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-433/igt@xe_live_ktest@xe_migrate.html
- shard-lnl: [PASS][63] -> [SKIP][64] ([Intel XE#1192])
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-lnl-6/igt@xe_live_ktest@xe_migrate.html
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-5/igt@xe_live_ktest@xe_migrate.html
* igt@xe_module_load@many-reload:
- shard-dg2-set2: [PASS][65] -> [FAIL][66] ([Intel XE#2136])
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-433/igt@xe_module_load@many-reload.html
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-436/igt@xe_module_load@many-reload.html
* igt@xe_pm@s3-vm-bind-userptr:
- shard-dg2-set2: [PASS][67] -> [DMESG-WARN][68] ([Intel XE#1551] / [Intel XE#569])
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-433/igt@xe_pm@s3-vm-bind-userptr.html
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-433/igt@xe_pm@s3-vm-bind-userptr.html
* igt@xe_pm@s4-basic-exec:
- shard-dg2-set2: [PASS][69] -> [DMESG-WARN][70] ([Intel XE#2019]) +1 other test dmesg-warn
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-435/igt@xe_pm@s4-basic-exec.html
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-463/igt@xe_pm@s4-basic-exec.html
#### Possible fixes ####
* igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels@pipe-a-edp-1:
- shard-lnl: [FAIL][71] ([Intel XE#1426]) -> [PASS][72] +3 other tests pass
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-lnl-5/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels@pipe-a-edp-1.html
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-7/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels@pipe-a-edp-1.html
* igt@kms_big_fb@4-tiled-64bpp-rotate-0:
- shard-dg2-set2: [DMESG-WARN][73] -> [PASS][74]
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-434/igt@kms_big_fb@4-tiled-64bpp-rotate-0.html
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-463/igt@kms_big_fb@4-tiled-64bpp-rotate-0.html
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
- shard-lnl: [FAIL][75] ([Intel XE#1659]) -> [PASS][76]
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-lnl-7/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-3/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
* igt@kms_plane@plane-position-covered:
- shard-lnl: [DMESG-WARN][77] ([Intel XE#324]) -> [PASS][78] +2 other tests pass
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-lnl-5/igt@kms_plane@plane-position-covered.html
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-1/igt@kms_plane@plane-position-covered.html
* igt@kms_pm_backlight@bad-brightness:
- shard-lnl: [SKIP][79] ([Intel XE#870]) -> [PASS][80] +1 other test pass
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-lnl-5/igt@kms_pm_backlight@bad-brightness.html
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-7/igt@kms_pm_backlight@bad-brightness.html
* igt@xe_evict@evict-beng-mixed-threads-large:
- shard-dg2-set2: [INCOMPLETE][81] ([Intel XE#1473] / [Intel XE#392]) -> [PASS][82]
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@xe_evict@evict-beng-mixed-threads-large.html
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-434/igt@xe_evict@evict-beng-mixed-threads-large.html
* igt@xe_evict@evict-large-multi-vm-cm:
- shard-dg2-set2: [FAIL][83] ([Intel XE#1600]) -> [PASS][84]
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-466/igt@xe_evict@evict-large-multi-vm-cm.html
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-464/igt@xe_evict@evict-large-multi-vm-cm.html
* igt@xe_exec_reset@parallel-gt-reset:
- shard-dg2-set2: [TIMEOUT][85] ([Intel XE#2105]) -> [PASS][86]
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@xe_exec_reset@parallel-gt-reset.html
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@xe_exec_reset@parallel-gt-reset.html
* igt@xe_pm@s2idle-d3hot-basic-exec:
- shard-dg2-set2: [INCOMPLETE][87] ([Intel XE#1195] / [Intel XE#1358]) -> [PASS][88]
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-436/igt@xe_pm@s2idle-d3hot-basic-exec.html
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-435/igt@xe_pm@s2idle-d3hot-basic-exec.html
* igt@xe_pm@s4-mocs:
- shard-dg2-set2: [DMESG-WARN][89] ([Intel XE#2280]) -> [PASS][90]
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-466/igt@xe_pm@s4-mocs.html
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-435/igt@xe_pm@s4-mocs.html
* igt@xe_pm@s4-multiple-execs:
- shard-lnl: [ABORT][91] ([Intel XE#1358] / [Intel XE#1794]) -> [PASS][92]
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-lnl-2/igt@xe_pm@s4-multiple-execs.html
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-4/igt@xe_pm@s4-multiple-execs.html
* igt@xe_pm@s4-vm-bind-unbind-all:
- shard-lnl: [ABORT][93] ([Intel XE#1794]) -> [PASS][94]
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-lnl-2/igt@xe_pm@s4-vm-bind-unbind-all.html
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-8/igt@xe_pm@s4-vm-bind-unbind-all.html
* igt@xe_pm_residency@toggle-gt-c6:
- shard-lnl: [FAIL][95] ([Intel XE#958]) -> [PASS][96]
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-lnl-4/igt@xe_pm_residency@toggle-gt-c6.html
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-1/igt@xe_pm_residency@toggle-gt-c6.html
#### Warnings ####
* igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- shard-dg2-set2: [SKIP][97] ([Intel XE#1201] / [Intel XE#623]) -> [SKIP][98] ([Intel XE#623])
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-433/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
* igt@kms_big_fb@4-tiled-8bpp-rotate-270:
- shard-dg2-set2: [SKIP][99] ([Intel XE#316]) -> [SKIP][100] ([Intel XE#1201] / [Intel XE#316]) +2 other tests skip
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_big_fb@4-tiled-8bpp-rotate-270.html
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-433/igt@kms_big_fb@4-tiled-8bpp-rotate-270.html
* igt@kms_big_fb@linear-8bpp-rotate-270:
- shard-dg2-set2: [SKIP][101] ([Intel XE#1201] / [Intel XE#316]) -> [SKIP][102] ([Intel XE#316]) +3 other tests skip
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-466/igt@kms_big_fb@linear-8bpp-rotate-270.html
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_big_fb@linear-8bpp-rotate-270.html
* igt@kms_big_fb@yf-tiled-32bpp-rotate-180:
- shard-dg2-set2: [SKIP][103] ([Intel XE#1124]) -> [SKIP][104] ([Intel XE#1124] / [Intel XE#1201]) +6 other tests skip
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_big_fb@yf-tiled-32bpp-rotate-180.html
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-436/igt@kms_big_fb@yf-tiled-32bpp-rotate-180.html
* igt@kms_big_fb@yf-tiled-64bpp-rotate-90:
- shard-dg2-set2: [SKIP][105] ([Intel XE#1124] / [Intel XE#1201]) -> [SKIP][106] ([Intel XE#1124]) +7 other tests skip
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-433/igt@kms_big_fb@yf-tiled-64bpp-rotate-90.html
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_big_fb@yf-tiled-64bpp-rotate-90.html
* igt@kms_bw@linear-tiling-1-displays-1920x1080p:
- shard-dg2-set2: [SKIP][107] ([Intel XE#1201] / [Intel XE#367]) -> [SKIP][108] ([Intel XE#367]) +2 other tests skip
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-435/igt@kms_bw@linear-tiling-1-displays-1920x1080p.html
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_bw@linear-tiling-1-displays-1920x1080p.html
* igt@kms_bw@linear-tiling-2-displays-1920x1080p:
- shard-dg2-set2: [SKIP][109] ([Intel XE#367]) -> [SKIP][110] ([Intel XE#1201] / [Intel XE#367]) +1 other test skip
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_bw@linear-tiling-2-displays-1920x1080p.html
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-466/igt@kms_bw@linear-tiling-2-displays-1920x1080p.html
* igt@kms_ccs@bad-pixel-format-yf-tiled-ccs:
- shard-dg2-set2: [SKIP][111] ([Intel XE#455] / [Intel XE#787]) -> [SKIP][112] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) +11 other tests skip
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_ccs@bad-pixel-format-yf-tiled-ccs.html
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-435/igt@kms_ccs@bad-pixel-format-yf-tiled-ccs.html
* igt@kms_ccs@crc-primary-basic-4-tiled-xe2-ccs:
- shard-dg2-set2: [SKIP][113] ([Intel XE#1201] / [Intel XE#1252]) -> [SKIP][114] ([Intel XE#1252])
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-435/igt@kms_ccs@crc-primary-basic-4-tiled-xe2-ccs.html
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_ccs@crc-primary-basic-4-tiled-xe2-ccs.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc@pipe-d-dp-4:
- shard-dg2-set2: [SKIP][115] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) -> [SKIP][116] ([Intel XE#455] / [Intel XE#787]) +17 other tests skip
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-434/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc@pipe-d-dp-4.html
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc@pipe-d-dp-4.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-xe2-ccs:
- shard-dg2-set2: [SKIP][117] ([Intel XE#1252]) -> [SKIP][118] ([Intel XE#1201] / [Intel XE#1252]) +2 other tests skip
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_ccs@crc-primary-rotation-180-4-tiled-xe2-ccs.html
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-464/igt@kms_ccs@crc-primary-rotation-180-4-tiled-xe2-ccs.html
* igt@kms_ccs@crc-primary-rotation-180-yf-tiled-ccs@pipe-b-hdmi-a-6:
- shard-dg2-set2: [SKIP][119] ([Intel XE#1201] / [Intel XE#787]) -> [SKIP][120] ([Intel XE#787]) +62 other tests skip
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-434/igt@kms_ccs@crc-primary-rotation-180-yf-tiled-ccs@pipe-b-hdmi-a-6.html
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_ccs@crc-primary-rotation-180-yf-tiled-ccs@pipe-b-hdmi-a-6.html
* igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs@pipe-b-dp-4:
- shard-dg2-set2: [SKIP][121] ([Intel XE#787]) -> [SKIP][122] ([Intel XE#1201] / [Intel XE#787]) +41 other tests skip
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs@pipe-b-dp-4.html
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-435/igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs@pipe-b-dp-4.html
* igt@kms_chamelium_color@ctm-red-to-blue:
- shard-dg2-set2: [SKIP][123] ([Intel XE#1201] / [Intel XE#306]) -> [SKIP][124] ([Intel XE#306]) +1 other test skip
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-435/igt@kms_chamelium_color@ctm-red-to-blue.html
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_chamelium_color@ctm-red-to-blue.html
* igt@kms_chamelium_hpd@vga-hpd:
- shard-dg2-set2: [SKIP][125] ([Intel XE#1201] / [Intel XE#373]) -> [SKIP][126] ([Intel XE#373]) +5 other tests skip
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-436/igt@kms_chamelium_hpd@vga-hpd.html
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_chamelium_hpd@vga-hpd.html
* igt@kms_chamelium_hpd@vga-hpd-for-each-pipe:
- shard-dg2-set2: [SKIP][127] ([Intel XE#373]) -> [SKIP][128] ([Intel XE#1201] / [Intel XE#373]) +11 other tests skip
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_chamelium_hpd@vga-hpd-for-each-pipe.html
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-464/igt@kms_chamelium_hpd@vga-hpd-for-each-pipe.html
* igt@kms_content_protection@dp-mst-type-0:
- shard-dg2-set2: [SKIP][129] ([Intel XE#307]) -> [SKIP][130] ([Intel XE#1201] / [Intel XE#307]) +2 other tests skip
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_content_protection@dp-mst-type-0.html
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-434/igt@kms_content_protection@dp-mst-type-0.html
* igt@kms_cursor_crc@cursor-offscreen-512x170:
- shard-dg2-set2: [SKIP][131] ([Intel XE#1201] / [Intel XE#308]) -> [SKIP][132] ([Intel XE#308]) +1 other test skip
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-466/igt@kms_cursor_crc@cursor-offscreen-512x170.html
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_cursor_crc@cursor-offscreen-512x170.html
* igt@kms_cursor_crc@cursor-sliding-512x512:
- shard-dg2-set2: [SKIP][133] ([Intel XE#308]) -> [SKIP][134] ([Intel XE#1201] / [Intel XE#308])
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_cursor_crc@cursor-sliding-512x512.html
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-435/igt@kms_cursor_crc@cursor-sliding-512x512.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
- shard-dg2-set2: [SKIP][135] ([Intel XE#323]) -> [SKIP][136] ([Intel XE#1201] / [Intel XE#323])
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-464/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
* igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-6:
- shard-dg2-set2: [SKIP][137] ([Intel XE#1201] / [i915#3804]) -> [SKIP][138] ([i915#3804])
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-434/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-6.html
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-6.html
* igt@kms_dsc@dsc-with-bpc-formats:
- shard-dg2-set2: [SKIP][139] ([Intel XE#455]) -> [SKIP][140] ([Intel XE#1201] / [Intel XE#455]) +6 other tests skip
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_dsc@dsc-with-bpc-formats.html
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-436/igt@kms_dsc@dsc-with-bpc-formats.html
* igt@kms_feature_discovery@chamelium:
- shard-dg2-set2: [SKIP][141] ([Intel XE#1201] / [Intel XE#701]) -> [SKIP][142] ([Intel XE#701])
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-435/igt@kms_feature_discovery@chamelium.html
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_feature_discovery@chamelium.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling:
- shard-dg2-set2: [SKIP][143] ([Intel XE#1201] / [Intel XE#455]) -> [SKIP][144] ([Intel XE#455]) +12 other tests skip
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-436/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-msflip-blt:
- shard-dg2-set2: [SKIP][145] ([Intel XE#1201] / [Intel XE#651]) -> [SKIP][146] ([Intel XE#651]) +24 other tests skip
[145]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-435/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-msflip-blt.html
[146]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-msflip-blt.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render:
- shard-dg2-set2: [SKIP][147] ([Intel XE#651]) -> [SKIP][148] ([Intel XE#1201] / [Intel XE#651]) +25 other tests skip
[147]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render.html
[148]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-463/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-msflip-blt:
- shard-dg2-set2: [SKIP][149] ([Intel XE#653]) -> [SKIP][150] ([Intel XE#1201] / [Intel XE#653]) +25 other tests skip
[149]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-msflip-blt.html
[150]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-464/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-msflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-tiling-y:
- shard-dg2-set2: [SKIP][151] ([Intel XE#658]) -> [SKIP][152] ([Intel XE#1201] / [Intel XE#658])
[151]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html
[152]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-464/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-wc:
- shard-dg2-set2: [SKIP][153] ([Intel XE#1201] / [Intel XE#653]) -> [SKIP][154] ([Intel XE#653]) +23 other tests skip
[153]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-463/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-wc.html
[154]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_getfb@getfb-reject-ccs:
- shard-dg2-set2: [SKIP][155] ([Intel XE#605]) -> [SKIP][156] ([Intel XE#1201] / [Intel XE#605])
[155]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_getfb@getfb-reject-ccs.html
[156]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-436/igt@kms_getfb@getfb-reject-ccs.html
* igt@kms_plane@plane-position-hole:
- shard-lnl: [DMESG-WARN][157] ([Intel XE#324]) -> [DMESG-FAIL][158] ([Intel XE#324])
[157]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-lnl-3/igt@kms_plane@plane-position-hole.html
[158]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-lnl-6/igt@kms_plane@plane-position-hole.html
* igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers:
- shard-dg2-set2: [SKIP][159] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#498]) -> [SKIP][160] ([Intel XE#455] / [Intel XE#498]) +1 other test skip
[159]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-464/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers.html
[160]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers.html
* igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-a-hdmi-a-6:
- shard-dg2-set2: [SKIP][161] ([Intel XE#1201] / [Intel XE#498]) -> [SKIP][162] ([Intel XE#498]) +2 other tests skip
[161]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-464/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-a-hdmi-a-6.html
[162]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-a-hdmi-a-6.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20:
- shard-dg2-set2: [SKIP][163] ([Intel XE#1201] / [Intel XE#2318] / [Intel XE#455]) -> [SKIP][164] ([Intel XE#2318] / [Intel XE#455])
[163]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-434/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20.html
[164]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20.html
* igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25:
- shard-dg2-set2: [SKIP][165] ([Intel XE#2318] / [Intel XE#455]) -> [SKIP][166] ([Intel XE#1201] / [Intel XE#2318] / [Intel XE#455])
[165]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25.html
[166]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-436/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25.html
* igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-a-hdmi-a-6:
- shard-dg2-set2: [SKIP][167] ([Intel XE#2318]) -> [SKIP][168] ([Intel XE#1201] / [Intel XE#2318]) +2 other tests skip
[167]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-a-hdmi-a-6.html
[168]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-436/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-a-hdmi-a-6.html
* igt@kms_pm_backlight@fade-with-dpms:
- shard-dg2-set2: [SKIP][169] ([Intel XE#1201] / [Intel XE#870]) -> [SKIP][170] ([Intel XE#870])
[169]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-436/igt@kms_pm_backlight@fade-with-dpms.html
[170]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_pm_backlight@fade-with-dpms.html
* igt@kms_pm_dc@dc3co-vpb-simulation:
- shard-dg2-set2: [SKIP][171] ([Intel XE#1122]) -> [SKIP][172] ([Intel XE#1122] / [Intel XE#1201]) +1 other test skip
[171]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_pm_dc@dc3co-vpb-simulation.html
[172]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-433/igt@kms_pm_dc@dc3co-vpb-simulation.html
* igt@kms_pm_dc@dc6-dpms:
- shard-dg2-set2: [SKIP][173] ([Intel XE#908]) -> [SKIP][174] ([Intel XE#1201] / [Intel XE#908])
[173]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_pm_dc@dc6-dpms.html
[174]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-435/igt@kms_pm_dc@dc6-dpms.html
* igt@kms_pm_dc@dc6-psr:
- shard-dg2-set2: [SKIP][175] ([Intel XE#1129]) -> [SKIP][176] ([Intel XE#1129] / [Intel XE#1201])
[175]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_pm_dc@dc6-psr.html
[176]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-464/igt@kms_pm_dc@dc6-psr.html
* igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-exceed-fully-sf:
- shard-dg2-set2: [SKIP][177] ([Intel XE#1489]) -> [SKIP][178] ([Intel XE#1201] / [Intel XE#1489]) +2 other tests skip
[177]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-exceed-fully-sf.html
[178]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-434/igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@fbc-plane-move-sf-dmg-area:
- shard-dg2-set2: [SKIP][179] ([Intel XE#1201] / [Intel XE#1489]) -> [SKIP][180] ([Intel XE#1489]) +2 other tests skip
[179]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-466/igt@kms_psr2_sf@fbc-plane-move-sf-dmg-area.html
[180]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_psr2_sf@fbc-plane-move-sf-dmg-area.html
* igt@kms_psr2_su@page_flip-xrgb8888:
- shard-dg2-set2: [SKIP][181] ([Intel XE#1122] / [Intel XE#1201]) -> [SKIP][182] ([Intel XE#1122])
[181]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-466/igt@kms_psr2_su@page_flip-xrgb8888.html
[182]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_psr2_su@page_flip-xrgb8888.html
* igt@kms_psr@fbc-pr-no-drrs:
- shard-dg2-set2: [SKIP][183] ([Intel XE#1201] / [Intel XE#929]) -> [SKIP][184] ([Intel XE#929]) +12 other tests skip
[183]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-463/igt@kms_psr@fbc-pr-no-drrs.html
[184]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_psr@fbc-pr-no-drrs.html
* igt@kms_psr@fbc-psr2-primary-render:
- shard-dg2-set2: [SKIP][185] ([Intel XE#929]) -> [SKIP][186] ([Intel XE#1201] / [Intel XE#929]) +11 other tests skip
[185]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_psr@fbc-psr2-primary-render.html
[186]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-433/igt@kms_psr@fbc-psr2-primary-render.html
* igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
- shard-dg2-set2: [SKIP][187] ([Intel XE#1201] / [Intel XE#327]) -> [SKIP][188] ([Intel XE#327]) +1 other test skip
[187]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-434/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
[188]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
- shard-dg2-set2: [SKIP][189] ([Intel XE#327]) -> [SKIP][190] ([Intel XE#1201] / [Intel XE#327])
[189]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html
[190]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-435/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-dg2-set2: [FAIL][191] ([Intel XE#1729]) -> [SKIP][192] ([Intel XE#1201] / [Intel XE#362])
[191]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-436/igt@kms_tiled_display@basic-test-pattern.html
[192]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-463/igt@kms_tiled_display@basic-test-pattern.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-dg2-set2: [SKIP][193] ([Intel XE#1500]) -> [SKIP][194] ([Intel XE#1201] / [Intel XE#1500])
[193]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[194]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-435/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@kms_writeback@writeback-check-output:
- shard-dg2-set2: [SKIP][195] ([Intel XE#756]) -> [SKIP][196] ([Intel XE#1201] / [Intel XE#756])
[195]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@kms_writeback@writeback-check-output.html
[196]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-435/igt@kms_writeback@writeback-check-output.html
* igt@xe_compute_preempt@compute-preempt-many:
- shard-dg2-set2: [SKIP][197] ([Intel XE#1201] / [Intel XE#1280] / [Intel XE#455]) -> [SKIP][198] ([Intel XE#1280] / [Intel XE#455]) +1 other test skip
[197]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-466/igt@xe_compute_preempt@compute-preempt-many.html
[198]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@xe_compute_preempt@compute-preempt-many.html
* igt@xe_copy_basic@mem-set-linear-0x3fff:
- shard-dg2-set2: [SKIP][199] ([Intel XE#1126]) -> [SKIP][200] ([Intel XE#1126] / [Intel XE#1201]) +1 other test skip
[199]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@xe_copy_basic@mem-set-linear-0x3fff.html
[200]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-434/igt@xe_copy_basic@mem-set-linear-0x3fff.html
* igt@xe_create@multigpu-create-massive-size:
- shard-dg2-set2: [SKIP][201] ([Intel XE#1201] / [Intel XE#944]) -> [SKIP][202] ([Intel XE#944]) +1 other test skip
[201]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-434/igt@xe_create@multigpu-create-massive-size.html
[202]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@xe_create@multigpu-create-massive-size.html
* igt@xe_exec_fault_mode@once-basic:
- shard-dg2-set2: [SKIP][203] ([Intel XE#1201] / [Intel XE#288]) -> [SKIP][204] ([Intel XE#288]) +19 other tests skip
[203]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-434/igt@xe_exec_fault_mode@once-basic.html
[204]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@xe_exec_fault_mode@once-basic.html
* igt@xe_exec_fault_mode@twice-userptr-prefetch:
- shard-dg2-set2: [SKIP][205] ([Intel XE#288]) -> [SKIP][206] ([Intel XE#1201] / [Intel XE#288]) +19 other tests skip
[205]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@xe_exec_fault_mode@twice-userptr-prefetch.html
[206]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-464/igt@xe_exec_fault_mode@twice-userptr-prefetch.html
* igt@xe_media_fill@media-fill:
- shard-dg2-set2: [SKIP][207] ([Intel XE#1201] / [Intel XE#560]) -> [SKIP][208] ([Intel XE#560])
[207]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-433/igt@xe_media_fill@media-fill.html
[208]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@xe_media_fill@media-fill.html
* igt@xe_pat@pat-index-xelpg:
- shard-dg2-set2: [SKIP][209] ([Intel XE#979]) -> [SKIP][210] ([Intel XE#1201] / [Intel XE#979])
[209]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@xe_pat@pat-index-xelpg.html
[210]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-466/igt@xe_pat@pat-index-xelpg.html
* igt@xe_pm@d3cold-mmap-vram:
- shard-dg2-set2: [SKIP][211] ([Intel XE#366]) -> [SKIP][212] ([Intel XE#1201] / [Intel XE#366])
[211]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@xe_pm@d3cold-mmap-vram.html
[212]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-436/igt@xe_pm@d3cold-mmap-vram.html
* igt@xe_pm@s4-d3cold-basic-exec:
- shard-dg2-set2: [SKIP][213] ([Intel XE#1201] / [Intel XE#366]) -> [SKIP][214] ([Intel XE#366])
[213]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-464/igt@xe_pm@s4-d3cold-basic-exec.html
[214]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-432/igt@xe_pm@s4-d3cold-basic-exec.html
* igt@xe_query@multigpu-query-config:
- shard-dg2-set2: [SKIP][215] ([Intel XE#944]) -> [SKIP][216] ([Intel XE#1201] / [Intel XE#944])
[215]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7937/shard-dg2-432/igt@xe_query@multigpu-query-config.html
[216]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/shard-dg2-463/igt@xe_query@multigpu-query-config.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[Intel XE#1050]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1050
[Intel XE#1122]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1122
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1126
[Intel XE#1128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1128
[Intel XE#1129]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1129
[Intel XE#1192]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1192
[Intel XE#1195]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1195
[Intel XE#1201]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1201
[Intel XE#1252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1252
[Intel XE#1280]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1280
[Intel XE#1358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1358
[Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
[Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
[Intel XE#1399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1399
[Intel XE#1401]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1401
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
[Intel XE#1413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1413
[Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
[Intel XE#1426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1426
[Intel XE#1447]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1447
[Intel XE#1473]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1473
[Intel XE#1477]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1477
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1500]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1500
[Intel XE#1551]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1551
[Intel XE#1600]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1600
[Intel XE#1649]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1649
[Intel XE#1659]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1659
[Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
[Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
[Intel XE#1794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1794
[Intel XE#2019]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2019
[Intel XE#2050]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2050
[Intel XE#2105]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2105
[Intel XE#2136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2136
[Intel XE#2168]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2168
[Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191
[Intel XE#2207]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2207
[Intel XE#2262]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2262
[Intel XE#2280]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2280
[Intel XE#2318]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2318
[Intel XE#2360]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2360
[Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
[Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
[Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
[Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
[Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
[Intel XE#324]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/324
[Intel XE#327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/327
[Intel XE#361]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/361
[Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
[Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
[Intel XE#392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/392
[Intel XE#402]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/402
[Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
[Intel XE#498]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/498
[Intel XE#560]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/560
[Intel XE#569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/569
[Intel XE#605]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/605
[Intel XE#623]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/623
[Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
[Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/658
[Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
[Intel XE#701]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/701
[Intel XE#756]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/756
[Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
[Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
[Intel XE#899]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/899
[Intel XE#908]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/908
[Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
[Intel XE#958]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/958
[Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979
[i915#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804
Build changes
-------------
* IGT: IGT_7937 -> IGTPW_11461
* Linux: xe-1664-724a2a53988a57709d7f9dcd5c58dd5737d45cb2 -> xe-1667-9f8e597a1c39d7e316f9479e6f627c15dbc58e1d
IGTPW_11461: 11461
IGT_7937: eba69333dfe8c295d053997367e395d7bde2b4b4 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-1664-724a2a53988a57709d7f9dcd5c58dd5737d45cb2: 724a2a53988a57709d7f9dcd5c58dd5737d45cb2
xe-1667-9f8e597a1c39d7e316f9479e6f627c15dbc58e1d: 9f8e597a1c39d7e316f9479e6f627c15dbc58e1d
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11461/index.html
[-- Attachment #2: Type: text/html, Size: 70866 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* ✗ Fi.CI.IGT: failure for Add support for hook script (rev3)
2024-07-25 14:19 [PATCH i-g-t v3 0/6] Add support for hook script Gustavo Sousa
` (8 preceding siblings ...)
2024-07-25 22:49 ` ✗ CI.xeFULL: failure " Patchwork
@ 2024-07-26 11:36 ` Patchwork
9 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2024-07-26 11:36 UTC (permalink / raw)
To: Gustavo Sousa; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 82508 bytes --]
== Series Details ==
Series: Add support for hook script (rev3)
URL : https://patchwork.freedesktop.org/series/133391/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_15132_full -> IGTPW_11461_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with IGTPW_11461_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_11461_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) 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_11461/index.html
Participating hosts (9 -> 9)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in IGTPW_11461_full:
### IGT changes ###
#### Possible regressions ####
* igt@i915_selftest@live@hangcheck:
- shard-dg2: [PASS][1] -> [INCOMPLETE][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-dg2-2/igt@i915_selftest@live@hangcheck.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-11/igt@i915_selftest@live@hangcheck.html
- shard-dg1: [PASS][3] -> [INCOMPLETE][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-dg1-16/igt@i915_selftest@live@hangcheck.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-17/igt@i915_selftest@live@hangcheck.html
* igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-1:
- shard-tglu: [PASS][5] -> [FAIL][6]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-tglu-5/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-1.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-10/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-1.html
Known issues
------------
Here are the changes found in IGTPW_11461_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@api_intel_bb@object-reloc-keep-cache:
- shard-dg1: NOTRUN -> [SKIP][7] ([i915#8411])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-18/igt@api_intel_bb@object-reloc-keep-cache.html
* igt@api_intel_bb@object-reloc-purge-cache:
- shard-dg2: NOTRUN -> [SKIP][8] ([i915#8411])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-8/igt@api_intel_bb@object-reloc-purge-cache.html
- shard-rkl: NOTRUN -> [SKIP][9] ([i915#8411])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-5/igt@api_intel_bb@object-reloc-purge-cache.html
* igt@device_reset@unbind-cold-reset-rebind:
- shard-rkl: NOTRUN -> [SKIP][10] ([i915#11078])
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-5/igt@device_reset@unbind-cold-reset-rebind.html
- shard-dg2: NOTRUN -> [SKIP][11] ([i915#11078])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-5/igt@device_reset@unbind-cold-reset-rebind.html
* igt@drm_fdinfo@busy@vcs1:
- shard-dg1: NOTRUN -> [SKIP][12] ([i915#8414]) +6 other tests skip
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-18/igt@drm_fdinfo@busy@vcs1.html
* igt@drm_fdinfo@most-busy-idle-check-all@rcs0:
- shard-rkl: [PASS][13] -> [FAIL][14] ([i915#7742]) +1 other test fail
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-rkl-3/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-5/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html
* igt@drm_fdinfo@virtual-busy-all:
- shard-mtlp: NOTRUN -> [SKIP][15] ([i915#8414])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-6/igt@drm_fdinfo@virtual-busy-all.html
* igt@drm_fdinfo@virtual-idle:
- shard-rkl: NOTRUN -> [FAIL][16] ([i915#7742])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-3/igt@drm_fdinfo@virtual-idle.html
* igt@gem_basic@multigpu-create-close:
- shard-dg1: NOTRUN -> [SKIP][17] ([i915#7697])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-16/igt@gem_basic@multigpu-create-close.html
* igt@gem_busy@semaphore:
- shard-mtlp: NOTRUN -> [SKIP][18] ([i915#3936])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-2/igt@gem_busy@semaphore.html
* igt@gem_caching@writes:
- shard-mtlp: NOTRUN -> [SKIP][19] ([i915#4873])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-1/igt@gem_caching@writes.html
* igt@gem_ccs@ctrl-surf-copy-new-ctx:
- shard-rkl: NOTRUN -> [SKIP][20] ([i915#9323])
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-2/igt@gem_ccs@ctrl-surf-copy-new-ctx.html
* igt@gem_close_race@multigpu-basic-process:
- shard-rkl: NOTRUN -> [SKIP][21] ([i915#7697])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-5/igt@gem_close_race@multigpu-basic-process.html
* igt@gem_create@create-ext-set-pat:
- shard-tglu: NOTRUN -> [SKIP][22] ([i915#8562])
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-6/igt@gem_create@create-ext-set-pat.html
* igt@gem_ctx_persistence@hang:
- shard-dg2: NOTRUN -> [SKIP][23] ([i915#8555])
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-5/igt@gem_ctx_persistence@hang.html
* igt@gem_ctx_sseu@engines:
- shard-mtlp: NOTRUN -> [SKIP][24] ([i915#280])
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-6/igt@gem_ctx_sseu@engines.html
* igt@gem_ctx_sseu@invalid-args:
- shard-tglu: NOTRUN -> [SKIP][25] ([i915#280])
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-5/igt@gem_ctx_sseu@invalid-args.html
* igt@gem_exec_balancer@bonded-semaphore:
- shard-dg2: NOTRUN -> [SKIP][26] ([i915#4812])
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-3/igt@gem_exec_balancer@bonded-semaphore.html
* igt@gem_exec_balancer@bonded-sync:
- shard-dg2: NOTRUN -> [SKIP][27] ([i915#4771]) +1 other test skip
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-2/igt@gem_exec_balancer@bonded-sync.html
* igt@gem_exec_capture@capture-invisible@lmem0:
- shard-dg1: NOTRUN -> [SKIP][28] ([i915#6334]) +1 other test skip
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-15/igt@gem_exec_capture@capture-invisible@lmem0.html
* igt@gem_exec_fair@basic-none-rrul@rcs0:
- shard-glk: NOTRUN -> [FAIL][29] ([i915#2842]) +4 other tests fail
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-glk7/igt@gem_exec_fair@basic-none-rrul@rcs0.html
* igt@gem_exec_fair@basic-none-share:
- shard-dg2: NOTRUN -> [SKIP][30] ([i915#3539] / [i915#4852]) +2 other tests skip
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-2/igt@gem_exec_fair@basic-none-share.html
* igt@gem_exec_fair@basic-none-vip:
- shard-mtlp: NOTRUN -> [SKIP][31] ([i915#4473] / [i915#4771])
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-4/igt@gem_exec_fair@basic-none-vip.html
* igt@gem_exec_fair@basic-pace-solo@rcs0:
- shard-rkl: NOTRUN -> [FAIL][32] ([i915#2842])
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-4/igt@gem_exec_fair@basic-pace-solo@rcs0.html
- shard-tglu: NOTRUN -> [FAIL][33] ([i915#2842])
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-9/igt@gem_exec_fair@basic-pace-solo@rcs0.html
* igt@gem_exec_flush@basic-batch-kernel-default-wb:
- shard-dg1: NOTRUN -> [SKIP][34] ([i915#3539] / [i915#4852]) +3 other tests skip
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-13/igt@gem_exec_flush@basic-batch-kernel-default-wb.html
* igt@gem_exec_flush@basic-uc-set-default:
- shard-dg2: NOTRUN -> [SKIP][35] ([i915#3539])
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-8/igt@gem_exec_flush@basic-uc-set-default.html
* igt@gem_exec_reloc@basic-active:
- shard-dg2: NOTRUN -> [SKIP][36] ([i915#3281]) +5 other tests skip
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-10/igt@gem_exec_reloc@basic-active.html
* igt@gem_exec_reloc@basic-gtt:
- shard-rkl: NOTRUN -> [SKIP][37] ([i915#3281]) +7 other tests skip
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-3/igt@gem_exec_reloc@basic-gtt.html
* igt@gem_exec_reloc@basic-wc-read:
- shard-dg1: NOTRUN -> [SKIP][38] ([i915#3281]) +4 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-16/igt@gem_exec_reloc@basic-wc-read.html
* igt@gem_exec_reloc@basic-write-wc-noreloc:
- shard-mtlp: NOTRUN -> [SKIP][39] ([i915#3281]) +6 other tests skip
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-1/igt@gem_exec_reloc@basic-write-wc-noreloc.html
* igt@gem_exec_schedule@preempt-queue-contexts:
- shard-dg1: NOTRUN -> [SKIP][40] ([i915#4812]) +2 other tests skip
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-17/igt@gem_exec_schedule@preempt-queue-contexts.html
* igt@gem_exec_schedule@semaphore-power:
- shard-dg2: NOTRUN -> [SKIP][41] ([i915#4537] / [i915#4812])
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-3/igt@gem_exec_schedule@semaphore-power.html
* igt@gem_exec_suspend@basic-s0@lmem0:
- shard-dg2: NOTRUN -> [INCOMPLETE][42] ([i915#11441])
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-10/igt@gem_exec_suspend@basic-s0@lmem0.html
* igt@gem_fenced_exec_thrash@2-spare-fences:
- shard-dg2: NOTRUN -> [SKIP][43] ([i915#4860]) +1 other test skip
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-6/igt@gem_fenced_exec_thrash@2-spare-fences.html
* igt@gem_fenced_exec_thrash@no-spare-fences-interruptible:
- shard-mtlp: NOTRUN -> [SKIP][44] ([i915#4860]) +2 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-8/igt@gem_fenced_exec_thrash@no-spare-fences-interruptible.html
* igt@gem_lmem_swapping@heavy-verify-multi-ccs:
- shard-tglu: NOTRUN -> [SKIP][45] ([i915#4613]) +2 other tests skip
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-6/igt@gem_lmem_swapping@heavy-verify-multi-ccs.html
* igt@gem_lmem_swapping@heavy-verify-random-ccs@lmem0:
- shard-dg1: NOTRUN -> [SKIP][46] ([i915#4565])
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-17/igt@gem_lmem_swapping@heavy-verify-random-ccs@lmem0.html
- shard-dg2: [PASS][47] -> [FAIL][48] ([i915#10446])
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-dg2-10/igt@gem_lmem_swapping@heavy-verify-random-ccs@lmem0.html
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-11/igt@gem_lmem_swapping@heavy-verify-random-ccs@lmem0.html
* igt@gem_lmem_swapping@verify-ccs:
- shard-glk: NOTRUN -> [SKIP][49] ([i915#4613]) +4 other tests skip
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-glk3/igt@gem_lmem_swapping@verify-ccs.html
* igt@gem_lmem_swapping@verify-random:
- shard-rkl: NOTRUN -> [SKIP][50] ([i915#4613]) +3 other tests skip
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-3/igt@gem_lmem_swapping@verify-random.html
* igt@gem_media_vme:
- shard-rkl: NOTRUN -> [SKIP][51] ([i915#284])
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-1/igt@gem_media_vme.html
- shard-tglu: NOTRUN -> [SKIP][52] ([i915#284])
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-10/igt@gem_media_vme.html
* igt@gem_mmap@basic:
- shard-mtlp: NOTRUN -> [SKIP][53] ([i915#4083]) +1 other test skip
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-3/igt@gem_mmap@basic.html
* igt@gem_mmap_gtt@basic-small-copy-xy:
- shard-dg1: NOTRUN -> [SKIP][54] ([i915#4077]) +7 other tests skip
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-17/igt@gem_mmap_gtt@basic-small-copy-xy.html
* igt@gem_mmap_gtt@cpuset-big-copy:
- shard-mtlp: NOTRUN -> [SKIP][55] ([i915#4077])
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-3/igt@gem_mmap_gtt@cpuset-big-copy.html
* igt@gem_mmap_gtt@fault-concurrent-x:
- shard-dg2: NOTRUN -> [SKIP][56] ([i915#4077]) +7 other tests skip
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-3/igt@gem_mmap_gtt@fault-concurrent-x.html
* igt@gem_mmap_wc@fault-concurrent:
- shard-dg2: NOTRUN -> [SKIP][57] ([i915#4083]) +5 other tests skip
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-5/igt@gem_mmap_wc@fault-concurrent.html
- shard-dg1: NOTRUN -> [SKIP][58] ([i915#4083]) +3 other tests skip
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-18/igt@gem_mmap_wc@fault-concurrent.html
* igt@gem_partial_pwrite_pread@reads-snoop:
- shard-dg1: NOTRUN -> [SKIP][59] ([i915#3282]) +7 other tests skip
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-18/igt@gem_partial_pwrite_pread@reads-snoop.html
* igt@gem_pread@snoop:
- shard-dg2: NOTRUN -> [SKIP][60] ([i915#3282]) +4 other tests skip
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-3/igt@gem_pread@snoop.html
* igt@gem_pwrite@basic-exhaustion:
- shard-glk: NOTRUN -> [WARN][61] ([i915#2658])
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-glk2/igt@gem_pwrite@basic-exhaustion.html
* igt@gem_pwrite@basic-self:
- shard-rkl: NOTRUN -> [SKIP][62] ([i915#3282]) +2 other tests skip
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-5/igt@gem_pwrite@basic-self.html
* igt@gem_pxp@create-regular-context-2:
- shard-tglu: NOTRUN -> [SKIP][63] ([i915#4270]) +1 other test skip
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-7/igt@gem_pxp@create-regular-context-2.html
* igt@gem_pxp@dmabuf-shared-protected-dst-is-context-refcounted:
- shard-dg2: NOTRUN -> [SKIP][64] ([i915#4270])
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-2/igt@gem_pxp@dmabuf-shared-protected-dst-is-context-refcounted.html
* igt@gem_pxp@fail-invalid-protected-context:
- shard-mtlp: NOTRUN -> [SKIP][65] ([i915#4270]) +1 other test skip
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-3/igt@gem_pxp@fail-invalid-protected-context.html
* igt@gem_pxp@regular-baseline-src-copy-readible:
- shard-rkl: NOTRUN -> [SKIP][66] ([i915#4270]) +2 other tests skip
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-3/igt@gem_pxp@regular-baseline-src-copy-readible.html
* igt@gem_pxp@verify-pxp-execution-after-suspend-resume:
- shard-dg1: NOTRUN -> [SKIP][67] ([i915#4270]) +1 other test skip
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-14/igt@gem_pxp@verify-pxp-execution-after-suspend-resume.html
* igt@gem_render_copy@yf-tiled-mc-ccs-to-vebox-yf-tiled:
- shard-dg2: NOTRUN -> [SKIP][68] ([i915#5190] / [i915#8428]) +6 other tests skip
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-8/igt@gem_render_copy@yf-tiled-mc-ccs-to-vebox-yf-tiled.html
* igt@gem_render_tiled_blits@basic:
- shard-mtlp: NOTRUN -> [SKIP][69] ([i915#4079])
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-1/igt@gem_render_tiled_blits@basic.html
* igt@gem_set_tiling_vs_blt@tiled-to-tiled:
- shard-dg1: NOTRUN -> [SKIP][70] ([i915#4079])
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-15/igt@gem_set_tiling_vs_blt@tiled-to-tiled.html
* igt@gem_tiled_pread_pwrite:
- shard-dg2: NOTRUN -> [SKIP][71] ([i915#4079])
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-5/igt@gem_tiled_pread_pwrite.html
* igt@gem_unfence_active_buffers:
- shard-dg1: NOTRUN -> [SKIP][72] ([i915#4879])
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-17/igt@gem_unfence_active_buffers.html
* igt@gem_userptr_blits@create-destroy-unsync:
- shard-dg1: NOTRUN -> [SKIP][73] ([i915#3297]) +2 other tests skip
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-15/igt@gem_userptr_blits@create-destroy-unsync.html
* igt@gem_userptr_blits@dmabuf-unsync:
- shard-dg2: NOTRUN -> [SKIP][74] ([i915#3297])
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-11/igt@gem_userptr_blits@dmabuf-unsync.html
* igt@gem_userptr_blits@forbidden-operations:
- shard-dg1: NOTRUN -> [SKIP][75] ([i915#3282] / [i915#3297])
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-13/igt@gem_userptr_blits@forbidden-operations.html
* igt@gem_userptr_blits@readonly-pwrite-unsync:
- shard-rkl: NOTRUN -> [SKIP][76] ([i915#3297])
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-1/igt@gem_userptr_blits@readonly-pwrite-unsync.html
* igt@gem_userptr_blits@relocations:
- shard-dg1: NOTRUN -> [SKIP][77] ([i915#3281] / [i915#3297])
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-18/igt@gem_userptr_blits@relocations.html
* igt@gen9_exec_parse@allowed-single:
- shard-mtlp: NOTRUN -> [SKIP][78] ([i915#2856])
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-8/igt@gen9_exec_parse@allowed-single.html
* igt@gen9_exec_parse@bb-large:
- shard-tglu: NOTRUN -> [SKIP][79] ([i915#2527] / [i915#2856]) +1 other test skip
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-10/igt@gen9_exec_parse@bb-large.html
* igt@gen9_exec_parse@bb-secure:
- shard-dg1: NOTRUN -> [SKIP][80] ([i915#2527]) +3 other tests skip
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-14/igt@gen9_exec_parse@bb-secure.html
- shard-dg2: NOTRUN -> [SKIP][81] ([i915#2856]) +2 other tests skip
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-5/igt@gen9_exec_parse@bb-secure.html
* igt@gen9_exec_parse@cmd-crossing-page:
- shard-rkl: NOTRUN -> [SKIP][82] ([i915#2527]) +1 other test skip
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-1/igt@gen9_exec_parse@cmd-crossing-page.html
* igt@i915_module_load@reload-with-fault-injection:
- shard-snb: [PASS][83] -> [ABORT][84] ([i915#9820])
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-snb2/igt@i915_module_load@reload-with-fault-injection.html
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-snb6/igt@i915_module_load@reload-with-fault-injection.html
- shard-glk: NOTRUN -> [ABORT][85] ([i915#9820])
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-glk2/igt@i915_module_load@reload-with-fault-injection.html
* igt@i915_module_load@resize-bar:
- shard-rkl: NOTRUN -> [SKIP][86] ([i915#6412])
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-3/igt@i915_module_load@resize-bar.html
- shard-dg1: NOTRUN -> [SKIP][87] ([i915#7178])
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-16/igt@i915_module_load@resize-bar.html
- shard-tglu: NOTRUN -> [SKIP][88] ([i915#6412])
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-8/igt@i915_module_load@resize-bar.html
* igt@i915_pm_rps@min-max-config-loaded:
- shard-mtlp: NOTRUN -> [SKIP][89] ([i915#6621])
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-8/igt@i915_pm_rps@min-max-config-loaded.html
* igt@i915_query@query-topology-coherent-slice-mask:
- shard-dg2: NOTRUN -> [SKIP][90] ([i915#6188])
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-3/igt@i915_query@query-topology-coherent-slice-mask.html
* igt@i915_selftest@mock@memory_region:
- shard-rkl: NOTRUN -> [DMESG-WARN][91] ([i915#9311])
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-3/igt@i915_selftest@mock@memory_region.html
- shard-dg1: NOTRUN -> [DMESG-WARN][92] ([i915#9311])
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-14/igt@i915_selftest@mock@memory_region.html
- shard-tglu: NOTRUN -> [DMESG-WARN][93] ([i915#9311])
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-8/igt@i915_selftest@mock@memory_region.html
- shard-glk: NOTRUN -> [DMESG-WARN][94] ([i915#9311])
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-glk3/igt@i915_selftest@mock@memory_region.html
- shard-mtlp: NOTRUN -> [DMESG-WARN][95] ([i915#9311])
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-7/igt@i915_selftest@mock@memory_region.html
* igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy:
- shard-dg1: NOTRUN -> [SKIP][96] ([i915#4212])
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-18/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html
* igt@kms_addfb_basic@framebuffer-vs-set-tiling:
- shard-dg2: NOTRUN -> [SKIP][97] ([i915#4212]) +1 other test skip
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-8/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html
* igt@kms_addfb_basic@tile-pitch-mismatch:
- shard-mtlp: NOTRUN -> [SKIP][98] ([i915#4212])
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-5/igt@kms_addfb_basic@tile-pitch-mismatch.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-hdmi-a-3-y-rc-ccs:
- shard-dg1: NOTRUN -> [SKIP][99] ([i915#8709]) +7 other tests skip
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-13/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-hdmi-a-3-y-rc-ccs.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-2-y-rc-ccs-cc:
- shard-rkl: NOTRUN -> [SKIP][100] ([i915#8709]) +3 other tests skip
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-3/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-2-y-rc-ccs-cc.html
* igt@kms_async_flips@test-cursor:
- shard-mtlp: NOTRUN -> [SKIP][101] ([i915#10333])
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-2/igt@kms_async_flips@test-cursor.html
* igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
- shard-dg1: NOTRUN -> [SKIP][102] ([i915#1769] / [i915#3555])
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-16/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
* igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-1:
- shard-dg2: NOTRUN -> [FAIL][103] ([i915#5956])
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-2/igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-1.html
* igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-4:
- shard-dg1: [PASS][104] -> [FAIL][105] ([i915#5956])
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-dg1-16/igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-4.html
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-17/igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-4.html
* igt@kms_big_fb@4-tiled-16bpp-rotate-0:
- shard-rkl: NOTRUN -> [SKIP][106] ([i915#5286]) +6 other tests skip
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-3/igt@kms_big_fb@4-tiled-16bpp-rotate-0.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-dg1: NOTRUN -> [SKIP][107] ([i915#4538] / [i915#5286]) +2 other tests skip
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-17/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
- shard-tglu: NOTRUN -> [SKIP][108] ([i915#5286]) +4 other tests skip
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-8/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html
* igt@kms_big_fb@linear-64bpp-rotate-90:
- shard-dg1: NOTRUN -> [SKIP][109] ([i915#3638]) +3 other tests skip
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-13/igt@kms_big_fb@linear-64bpp-rotate-90.html
* igt@kms_big_fb@y-tiled-32bpp-rotate-180:
- shard-mtlp: NOTRUN -> [SKIP][110] +6 other tests skip
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-3/igt@kms_big_fb@y-tiled-32bpp-rotate-180.html
* igt@kms_big_fb@y-tiled-64bpp-rotate-270:
- shard-rkl: NOTRUN -> [SKIP][111] ([i915#3638]) +2 other tests skip
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-4/igt@kms_big_fb@y-tiled-64bpp-rotate-270.html
* igt@kms_big_fb@yf-tiled-16bpp-rotate-180:
- shard-dg1: NOTRUN -> [SKIP][112] ([i915#4538]) +4 other tests skip
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-13/igt@kms_big_fb@yf-tiled-16bpp-rotate-180.html
* igt@kms_big_fb@yf-tiled-32bpp-rotate-270:
- shard-dg2: NOTRUN -> [SKIP][113] ([i915#4538] / [i915#5190]) +8 other tests skip
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-8/igt@kms_big_fb@yf-tiled-32bpp-rotate-270.html
* igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow:
- shard-dg2: NOTRUN -> [SKIP][114] ([i915#5190])
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-5/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html
* igt@kms_big_joiner@basic:
- shard-dg2: NOTRUN -> [SKIP][115] ([i915#10656]) +1 other test skip
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-11/igt@kms_big_joiner@basic.html
- shard-dg1: NOTRUN -> [SKIP][116] ([i915#10656]) +1 other test skip
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-13/igt@kms_big_joiner@basic.html
- shard-mtlp: NOTRUN -> [SKIP][117] ([i915#10656])
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-6/igt@kms_big_joiner@basic.html
* igt@kms_big_joiner@invalid-modeset:
- shard-tglu: NOTRUN -> [SKIP][118] ([i915#10656]) +1 other test skip
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-10/igt@kms_big_joiner@invalid-modeset.html
- shard-rkl: NOTRUN -> [SKIP][119] ([i915#10656])
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-2/igt@kms_big_joiner@invalid-modeset.html
* igt@kms_ccs@bad-pixel-format-y-tiled-ccs@pipe-b-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][120] ([i915#6095]) +7 other tests skip
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-1/igt@kms_ccs@bad-pixel-format-y-tiled-ccs@pipe-b-edp-1.html
* igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs@pipe-d-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][121] ([i915#10307] / [i915#10434] / [i915#6095]) +3 other tests skip
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-2/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs@pipe-d-hdmi-a-1.html
* igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-mc-ccs@pipe-d-hdmi-a-1:
- shard-tglu: NOTRUN -> [SKIP][122] ([i915#6095]) +23 other tests skip
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-6/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-mc-ccs@pipe-d-hdmi-a-1.html
* igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs-cc@pipe-d-dp-4:
- shard-dg2: NOTRUN -> [SKIP][123] ([i915#10307] / [i915#6095]) +143 other tests skip
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-11/igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs-cc@pipe-d-dp-4.html
* igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs@pipe-a-hdmi-a-3:
- shard-dg1: NOTRUN -> [SKIP][124] ([i915#6095]) +83 other tests skip
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-13/igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs@pipe-a-hdmi-a-3.html
* igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][125] ([i915#6095]) +53 other tests skip
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-6/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2.html
* igt@kms_cdclk@mode-transition-all-outputs:
- shard-dg1: NOTRUN -> [SKIP][126] ([i915#3742])
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-14/igt@kms_cdclk@mode-transition-all-outputs.html
* igt@kms_cdclk@plane-scaling@pipe-d-hdmi-a-2:
- shard-dg2: NOTRUN -> [SKIP][127] ([i915#4087]) +3 other tests skip
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-3/igt@kms_cdclk@plane-scaling@pipe-d-hdmi-a-2.html
* igt@kms_chamelium_audio@dp-audio-edid:
- shard-dg2: NOTRUN -> [SKIP][128] ([i915#7828]) +6 other tests skip
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-6/igt@kms_chamelium_audio@dp-audio-edid.html
* igt@kms_chamelium_color@degamma:
- shard-dg2: NOTRUN -> [SKIP][129] +9 other tests skip
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-8/igt@kms_chamelium_color@degamma.html
* igt@kms_chamelium_edid@vga-edid-read:
- shard-tglu: NOTRUN -> [SKIP][130] ([i915#7828]) +4 other tests skip
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-10/igt@kms_chamelium_edid@vga-edid-read.html
* igt@kms_chamelium_hpd@dp-hpd:
- shard-rkl: NOTRUN -> [SKIP][131] ([i915#7828]) +8 other tests skip
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-4/igt@kms_chamelium_hpd@dp-hpd.html
* igt@kms_chamelium_hpd@dp-hpd-storm-disable:
- shard-dg1: NOTRUN -> [SKIP][132] ([i915#7828]) +4 other tests skip
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-15/igt@kms_chamelium_hpd@dp-hpd-storm-disable.html
* igt@kms_chamelium_hpd@hdmi-hpd-storm:
- shard-mtlp: NOTRUN -> [SKIP][133] ([i915#7828]) +1 other test skip
[133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-8/igt@kms_chamelium_hpd@hdmi-hpd-storm.html
* igt@kms_content_protection@atomic:
- shard-tglu: NOTRUN -> [SKIP][134] ([i915#6944] / [i915#7116] / [i915#7118] / [i915#9424])
[134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-8/igt@kms_content_protection@atomic.html
- shard-rkl: NOTRUN -> [SKIP][135] ([i915#7118] / [i915#9424])
[135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-3/igt@kms_content_protection@atomic.html
* igt@kms_content_protection@atomic-dpms:
- shard-dg1: NOTRUN -> [SKIP][136] ([i915#7116] / [i915#9424])
[136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-17/igt@kms_content_protection@atomic-dpms.html
* igt@kms_content_protection@atomic-dpms@pipe-a-dp-4:
- shard-dg2: NOTRUN -> [TIMEOUT][137] ([i915#7173])
[137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-11/igt@kms_content_protection@atomic-dpms@pipe-a-dp-4.html
* igt@kms_content_protection@dp-mst-type-0:
- shard-mtlp: NOTRUN -> [SKIP][138] ([i915#3299])
[138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-4/igt@kms_content_protection@dp-mst-type-0.html
* igt@kms_content_protection@lic-type-0:
- shard-dg1: NOTRUN -> [SKIP][139] ([i915#9424])
[139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-17/igt@kms_content_protection@lic-type-0.html
* igt@kms_content_protection@lic-type-1:
- shard-tglu: NOTRUN -> [SKIP][140] ([i915#6944] / [i915#9424])
[140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-5/igt@kms_content_protection@lic-type-1.html
* igt@kms_cursor_crc@cursor-onscreen-32x10:
- shard-dg1: NOTRUN -> [SKIP][141] ([i915#3555]) +1 other test skip
[141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-17/igt@kms_cursor_crc@cursor-onscreen-32x10.html
* igt@kms_cursor_crc@cursor-random-128x42:
- shard-mtlp: NOTRUN -> [SKIP][142] ([i915#8814]) +1 other test skip
[142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-6/igt@kms_cursor_crc@cursor-random-128x42.html
* igt@kms_cursor_crc@cursor-random-512x512:
- shard-dg2: NOTRUN -> [SKIP][143] ([i915#11453]) +1 other test skip
[143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-10/igt@kms_cursor_crc@cursor-random-512x512.html
- shard-dg1: NOTRUN -> [SKIP][144] ([i915#11453]) +1 other test skip
[144]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-16/igt@kms_cursor_crc@cursor-random-512x512.html
* igt@kms_cursor_crc@cursor-rapid-movement-max-size:
- shard-tglu: NOTRUN -> [SKIP][145] ([i915#3555]) +3 other tests skip
[145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-8/igt@kms_cursor_crc@cursor-rapid-movement-max-size.html
* igt@kms_cursor_crc@cursor-sliding-512x512:
- shard-rkl: NOTRUN -> [SKIP][146] ([i915#11453]) +3 other tests skip
[146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-5/igt@kms_cursor_crc@cursor-sliding-512x512.html
- shard-dg2: NOTRUN -> [SKIP][147] ([i915#11453] / [i915#3359])
[147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-11/igt@kms_cursor_crc@cursor-sliding-512x512.html
* igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy:
- shard-snb: [PASS][148] -> [SKIP][149] +4 other tests skip
[148]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-snb7/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html
[149]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-snb4/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html
* igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic:
- shard-mtlp: NOTRUN -> [SKIP][150] ([i915#9809]) +3 other tests skip
[150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-7/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
- shard-rkl: NOTRUN -> [SKIP][151] ([i915#4103])
[151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-3/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
- shard-glk: NOTRUN -> [FAIL][152] ([i915#2346])
[152]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-glk7/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
* igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot:
- shard-rkl: NOTRUN -> [SKIP][153] ([i915#9067])
[153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-4/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html
- shard-tglu: NOTRUN -> [SKIP][154] ([i915#9067])
[154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-6/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
- shard-tglu: NOTRUN -> [SKIP][155] ([i915#4103]) +2 other tests skip
[155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-9/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
- shard-dg2: NOTRUN -> [SKIP][156] ([i915#4103] / [i915#4213])
[156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-8/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
* igt@kms_cursor_legacy@torture-move@pipe-a:
- shard-tglu: [PASS][157] -> [DMESG-WARN][158] ([i915#10166] / [i915#1982])
[157]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-tglu-10/igt@kms_cursor_legacy@torture-move@pipe-a.html
[158]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-6/igt@kms_cursor_legacy@torture-move@pipe-a.html
* igt@kms_dirtyfb@drrs-dirtyfb-ioctl:
- shard-mtlp: NOTRUN -> [SKIP][159] ([i915#9833])
[159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-5/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html
* igt@kms_display_modes@extended-mode-basic:
- shard-dg2: NOTRUN -> [SKIP][160] ([i915#3555]) +2 other tests skip
[160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-8/igt@kms_display_modes@extended-mode-basic.html
* igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1:
- shard-rkl: NOTRUN -> [SKIP][161] ([i915#3804])
[161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-4/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1.html
* igt@kms_dsc@dsc-basic:
- shard-dg1: NOTRUN -> [SKIP][162] ([i915#3555] / [i915#3840]) +1 other test skip
[162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-16/igt@kms_dsc@dsc-basic.html
* igt@kms_dsc@dsc-with-output-formats-with-bpc:
- shard-dg1: NOTRUN -> [SKIP][163] ([i915#3840] / [i915#9053])
[163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-17/igt@kms_dsc@dsc-with-output-formats-with-bpc.html
* igt@kms_feature_discovery@chamelium:
- shard-dg2: NOTRUN -> [SKIP][164] ([i915#4854])
[164]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-5/igt@kms_feature_discovery@chamelium.html
* igt@kms_feature_discovery@display-2x:
- shard-dg2: NOTRUN -> [SKIP][165] ([i915#1839])
[165]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-10/igt@kms_feature_discovery@display-2x.html
- shard-rkl: NOTRUN -> [SKIP][166] ([i915#1839])
[166]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-3/igt@kms_feature_discovery@display-2x.html
- shard-tglu: NOTRUN -> [SKIP][167] ([i915#1839])
[167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-7/igt@kms_feature_discovery@display-2x.html
* igt@kms_fence_pin_leak:
- shard-dg1: NOTRUN -> [SKIP][168] ([i915#4881])
[168]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-13/igt@kms_fence_pin_leak.html
* igt@kms_flip@2x-blocking-absolute-wf_vblank:
- shard-tglu: NOTRUN -> [SKIP][169] ([i915#3637]) +6 other tests skip
[169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-5/igt@kms_flip@2x-blocking-absolute-wf_vblank.html
- shard-mtlp: NOTRUN -> [SKIP][170] ([i915#3637]) +1 other test skip
[170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-5/igt@kms_flip@2x-blocking-absolute-wf_vblank.html
- shard-dg1: NOTRUN -> [SKIP][171] ([i915#9934]) +1 other test skip
[171]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-16/igt@kms_flip@2x-blocking-absolute-wf_vblank.html
* igt@kms_flip@2x-flip-vs-dpms:
- shard-rkl: NOTRUN -> [SKIP][172] +18 other tests skip
[172]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-4/igt@kms_flip@2x-flip-vs-dpms.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling@pipe-a-valid-mode:
- shard-rkl: NOTRUN -> [SKIP][173] ([i915#2672]) +4 other tests skip
[173]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-4/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling@pipe-a-valid-mode:
- shard-dg1: NOTRUN -> [SKIP][174] ([i915#2587] / [i915#2672]) +2 other tests skip
[174]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-17/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-default-mode:
- shard-mtlp: NOTRUN -> [SKIP][175] ([i915#2672]) +1 other test skip
[175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-2/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-valid-mode:
- shard-dg2: NOTRUN -> [SKIP][176] ([i915#2672]) +2 other tests skip
[176]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-2/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling@pipe-a-valid-mode:
- shard-tglu: NOTRUN -> [SKIP][177] ([i915#2587] / [i915#2672]) +2 other tests skip
[177]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-5/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-default-mode:
- shard-mtlp: NOTRUN -> [SKIP][178] ([i915#2672] / [i915#3555]) +1 other test skip
[178]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-2/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode:
- shard-dg2: NOTRUN -> [SKIP][179] ([i915#2672] / [i915#3555])
[179]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-2/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode.html
* igt@kms_frontbuffer_tracking@fbc-rgb565-draw-blt:
- shard-dg2: [PASS][180] -> [FAIL][181] ([i915#6880])
[180]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-dg2-8/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-blt.html
[181]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-pwrite:
- shard-dg2: NOTRUN -> [SKIP][182] ([i915#3458]) +11 other tests skip
[182]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-10/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-pwrite:
- shard-dg1: NOTRUN -> [SKIP][183] ([i915#3458]) +16 other tests skip
[183]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-13/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-wc:
- shard-dg1: NOTRUN -> [SKIP][184] ([i915#8708]) +13 other tests skip
[184]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-15/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render:
- shard-dg2: NOTRUN -> [SKIP][185] ([i915#5354]) +22 other tests skip
[185]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-plflip-blt:
- shard-rkl: NOTRUN -> [SKIP][186] ([i915#1825]) +40 other tests skip
[186]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-shrfb-fliptrack-mmap-gtt:
- shard-dg2: NOTRUN -> [SKIP][187] ([i915#8708]) +14 other tests skip
[187]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-8/igt@kms_frontbuffer_tracking@fbcpsr-2p-shrfb-fliptrack-mmap-gtt.html
* igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-gtt:
- shard-mtlp: NOTRUN -> [SKIP][188] ([i915#8708])
[188]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-5/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-blt:
- shard-rkl: NOTRUN -> [SKIP][189] ([i915#3023]) +23 other tests skip
[189]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-4/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-blt.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-cpu:
- shard-mtlp: NOTRUN -> [SKIP][190] ([i915#1825]) +9 other tests skip
[190]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-4/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@psr-shrfb-scaledprimary:
- shard-tglu: NOTRUN -> [SKIP][191] +53 other tests skip
[191]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-7/igt@kms_frontbuffer_tracking@psr-shrfb-scaledprimary.html
* igt@kms_hdr@bpc-switch-dpms:
- shard-dg1: NOTRUN -> [SKIP][192] ([i915#3555] / [i915#8228]) +2 other tests skip
[192]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-15/igt@kms_hdr@bpc-switch-dpms.html
* igt@kms_hdr@bpc-switch-suspend:
- shard-tglu: NOTRUN -> [SKIP][193] ([i915#3555] / [i915#8228]) +1 other test skip
[193]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-9/igt@kms_hdr@bpc-switch-suspend.html
* igt@kms_hdr@static-toggle-suspend:
- shard-rkl: NOTRUN -> [SKIP][194] ([i915#3555] / [i915#8228])
[194]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-5/igt@kms_hdr@static-toggle-suspend.html
* igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
- shard-dg2: NOTRUN -> [SKIP][195] ([i915#4816])
[195]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-5/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
- shard-dg1: NOTRUN -> [SKIP][196] ([i915#1839]) +1 other test skip
[196]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-14/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
* igt@kms_panel_fitting@atomic-fastset:
- shard-tglu: NOTRUN -> [SKIP][197] ([i915#6301])
[197]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-8/igt@kms_panel_fitting@atomic-fastset.html
- shard-rkl: NOTRUN -> [SKIP][198] ([i915#6301]) +1 other test skip
[198]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-4/igt@kms_panel_fitting@atomic-fastset.html
* igt@kms_pipe_b_c_ivb@enable-pipe-c-while-b-has-3-lanes:
- shard-dg1: NOTRUN -> [SKIP][199] +47 other tests skip
[199]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-13/igt@kms_pipe_b_c_ivb@enable-pipe-c-while-b-has-3-lanes.html
* igt@kms_plane_lowres@tiling-4@pipe-b-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][200] ([i915#11614] / [i915#3582]) +3 other tests skip
[200]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-8/igt@kms_plane_lowres@tiling-4@pipe-b-edp-1.html
* igt@kms_plane_multiple@tiling-yf:
- shard-rkl: NOTRUN -> [SKIP][201] ([i915#3555]) +2 other tests skip
[201]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-5/igt@kms_plane_multiple@tiling-yf.html
* igt@kms_plane_scaling@intel-max-src-size:
- shard-dg2: NOTRUN -> [SKIP][202] ([i915#6953] / [i915#9423])
[202]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-8/igt@kms_plane_scaling@intel-max-src-size.html
* igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-1:
- shard-rkl: NOTRUN -> [FAIL][203] ([i915#8292])
[203]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-5/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-1.html
* igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-4:
- shard-dg1: [PASS][204] -> [FAIL][205] ([i915#8292])
[204]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-dg1-18/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-4.html
[205]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-18/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-4.html
* igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-b-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][206] ([i915#9423]) +24 other tests skip
[206]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-5/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-b-hdmi-a-3.html
* igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-b-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][207] ([i915#9423]) +3 other tests skip
[207]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-14/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-b-hdmi-a-4.html
* igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][208] ([i915#9423]) +5 other tests skip
[208]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-3/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a-hdmi-a-2.html
* igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-c-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][209] ([i915#5176] / [i915#9423]) +3 other tests skip
[209]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-15/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-c-hdmi-a-4.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-c-hdmi-a-3:
- shard-dg1: NOTRUN -> [SKIP][210] ([i915#9728]) +7 other tests skip
[210]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-13/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-c-hdmi-a-3.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-d-hdmi-a-1:
- shard-tglu: NOTRUN -> [SKIP][211] ([i915#9728]) +3 other tests skip
[211]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-5/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-d-hdmi-a-1.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-a-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][212] ([i915#5235] / [i915#9423]) +2 other tests skip
[212]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-6/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-a-hdmi-a-3.html
* igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-b-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][213] ([i915#5235]) +2 other tests skip
[213]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-8/igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-b-edp-1.html
* igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-d-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][214] ([i915#3555] / [i915#5235])
[214]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-8/igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-d-edp-1.html
* igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-a-hdmi-a-1:
- shard-rkl: NOTRUN -> [SKIP][215] ([i915#9728]) +3 other tests skip
[215]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-5/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-a-hdmi-a-1.html
* igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-a-hdmi-a-1:
- shard-glk: NOTRUN -> [SKIP][216] +369 other tests skip
[216]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-glk3/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-a-hdmi-a-1.html
* igt@kms_pm_dc@dc3co-vpb-simulation:
- shard-dg2: NOTRUN -> [SKIP][217] ([i915#9685])
[217]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-3/igt@kms_pm_dc@dc3co-vpb-simulation.html
* igt@kms_pm_dc@dc5-psr:
- shard-dg1: NOTRUN -> [SKIP][218] ([i915#9685]) +1 other test skip
[218]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-17/igt@kms_pm_dc@dc5-psr.html
* igt@kms_pm_dc@dc6-dpms:
- shard-tglu: [PASS][219] -> [FAIL][220] ([i915#9295])
[219]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-tglu-3/igt@kms_pm_dc@dc6-dpms.html
[220]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-9/igt@kms_pm_dc@dc6-dpms.html
* igt@kms_pm_lpsp@screens-disabled:
- shard-mtlp: NOTRUN -> [SKIP][221] ([i915#8430])
[221]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-1/igt@kms_pm_lpsp@screens-disabled.html
* igt@kms_pm_rpm@dpms-lpsp:
- shard-dg1: NOTRUN -> [SKIP][222] ([i915#9519])
[222]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-13/igt@kms_pm_rpm@dpms-lpsp.html
* igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
- shard-rkl: [PASS][223] -> [SKIP][224] ([i915#9519])
[223]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-rkl-6/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
[224]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-2/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
* igt@kms_pm_rpm@modeset-non-lpsp:
- shard-tglu: NOTRUN -> [SKIP][225] ([i915#9519])
[225]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-9/igt@kms_pm_rpm@modeset-non-lpsp.html
- shard-rkl: NOTRUN -> [SKIP][226] ([i915#9519]) +2 other tests skip
[226]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-5/igt@kms_pm_rpm@modeset-non-lpsp.html
* igt@kms_pm_rpm@modeset-non-lpsp-stress:
- shard-dg2: [PASS][227] -> [SKIP][228] ([i915#9519]) +1 other test skip
[227]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-dg2-11/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
[228]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-2/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
* igt@kms_prime@basic-crc-hybrid:
- shard-mtlp: NOTRUN -> [SKIP][229] ([i915#6524])
[229]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-5/igt@kms_prime@basic-crc-hybrid.html
* igt@kms_prime@d3hot:
- shard-dg1: NOTRUN -> [SKIP][230] ([i915#6524])
[230]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-14/igt@kms_prime@d3hot.html
* igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-sf:
- shard-tglu: NOTRUN -> [SKIP][231] ([i915#11520]) +2 other tests skip
[231]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-10/igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-sf:
- shard-dg2: NOTRUN -> [SKIP][232] ([i915#11520]) +4 other tests skip
[232]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-5/igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-sf.html
- shard-rkl: NOTRUN -> [SKIP][233] ([i915#11520]) +2 other tests skip
[233]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-5/igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-sf.html
* igt@kms_psr2_sf@fbc-overlay-plane-move-continuous-exceed-sf@psr2-pipe-b-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][234] ([i915#9808]) +1 other test skip
[234]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-3/igt@kms_psr2_sf@fbc-overlay-plane-move-continuous-exceed-sf@psr2-pipe-b-edp-1.html
* igt@kms_psr2_sf@fbc-primary-plane-update-sf-dmg-area:
- shard-dg1: NOTRUN -> [SKIP][235] ([i915#11520]) +6 other tests skip
[235]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-13/igt@kms_psr2_sf@fbc-primary-plane-update-sf-dmg-area.html
* igt@kms_psr@fbc-pr-no-drrs:
- shard-rkl: NOTRUN -> [SKIP][236] ([i915#1072] / [i915#9732]) +21 other tests skip
[236]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-5/igt@kms_psr@fbc-pr-no-drrs.html
* igt@kms_psr@fbc-pr-primary-page-flip:
- shard-dg2: NOTRUN -> [SKIP][237] ([i915#1072] / [i915#9673] / [i915#9732])
[237]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-11/igt@kms_psr@fbc-pr-primary-page-flip.html
* igt@kms_psr@fbc-pr-primary-render:
- shard-dg2: NOTRUN -> [SKIP][238] ([i915#1072] / [i915#9732]) +16 other tests skip
[238]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-5/igt@kms_psr@fbc-pr-primary-render.html
* igt@kms_psr@fbc-psr-cursor-blt@edp-1:
- shard-mtlp: NOTRUN -> [SKIP][239] ([i915#9688]) +4 other tests skip
[239]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-1/igt@kms_psr@fbc-psr-cursor-blt@edp-1.html
* igt@kms_psr@fbc-psr2-cursor-blt:
- shard-dg1: NOTRUN -> [SKIP][240] ([i915#1072] / [i915#9732]) +16 other tests skip
[240]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-18/igt@kms_psr@fbc-psr2-cursor-blt.html
* igt@kms_psr@psr2-cursor-plane-onoff:
- shard-tglu: NOTRUN -> [SKIP][241] ([i915#9732]) +16 other tests skip
[241]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-10/igt@kms_psr@psr2-cursor-plane-onoff.html
* igt@kms_rotation_crc@bad-tiling:
- shard-mtlp: NOTRUN -> [SKIP][242] ([i915#4235])
[242]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-1/igt@kms_rotation_crc@bad-tiling.html
- shard-dg2: NOTRUN -> [SKIP][243] ([i915#11131])
[243]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-6/igt@kms_rotation_crc@bad-tiling.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
- shard-tglu: NOTRUN -> [SKIP][244] ([i915#5289])
[244]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-5/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html
* igt@kms_sysfs_edid_timing:
- shard-dg2: NOTRUN -> [FAIL][245] ([IGT#2])
[245]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-6/igt@kms_sysfs_edid_timing.html
- shard-dg1: NOTRUN -> [FAIL][246] ([IGT#2] / [i915#6493])
[246]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-18/igt@kms_sysfs_edid_timing.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-dg1: NOTRUN -> [SKIP][247] ([i915#8623])
[247]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-18/igt@kms_tiled_display@basic-test-pattern.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-dg2: NOTRUN -> [SKIP][248] ([i915#8623])
[248]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-11/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-1:
- shard-tglu: NOTRUN -> [FAIL][249] ([i915#9196]) +1 other test fail
[249]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-5/igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-1.html
* igt@kms_vrr@max-min:
- shard-rkl: NOTRUN -> [SKIP][250] ([i915#9906])
[250]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-2/igt@kms_vrr@max-min.html
* igt@kms_vrr@seamless-rr-switch-vrr:
- shard-dg2: NOTRUN -> [SKIP][251] ([i915#9906]) +1 other test skip
[251]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-8/igt@kms_vrr@seamless-rr-switch-vrr.html
* igt@kms_writeback@writeback-check-output:
- shard-tglu: NOTRUN -> [SKIP][252] ([i915#2437])
[252]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-7/igt@kms_writeback@writeback-check-output.html
* igt@kms_writeback@writeback-fb-id:
- shard-glk: NOTRUN -> [SKIP][253] ([i915#2437])
[253]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-glk2/igt@kms_writeback@writeback-fb-id.html
* igt@kms_writeback@writeback-fb-id-xrgb2101010:
- shard-rkl: NOTRUN -> [SKIP][254] ([i915#2437] / [i915#9412])
[254]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-5/igt@kms_writeback@writeback-fb-id-xrgb2101010.html
* igt@perf@mi-rpc:
- shard-dg2: NOTRUN -> [SKIP][255] ([i915#2434])
[255]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-10/igt@perf@mi-rpc.html
- shard-rkl: NOTRUN -> [SKIP][256] ([i915#2434])
[256]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-3/igt@perf@mi-rpc.html
* igt@perf_pmu@busy-double-start@rcs0:
- shard-mtlp: NOTRUN -> [FAIL][257] ([i915#4349]) +1 other test fail
[257]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-6/igt@perf_pmu@busy-double-start@rcs0.html
* igt@perf_pmu@rc6-all-gts:
- shard-tglu: NOTRUN -> [SKIP][258] ([i915#8516])
[258]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-tglu-7/igt@perf_pmu@rc6-all-gts.html
- shard-dg2: NOTRUN -> [SKIP][259] ([i915#8516])
[259]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-10/igt@perf_pmu@rc6-all-gts.html
- shard-rkl: NOTRUN -> [SKIP][260] ([i915#8516])
[260]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-3/igt@perf_pmu@rc6-all-gts.html
* igt@prime_vgem@basic-read:
- shard-dg2: NOTRUN -> [SKIP][261] ([i915#3291] / [i915#3708])
[261]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-3/igt@prime_vgem@basic-read.html
- shard-rkl: NOTRUN -> [SKIP][262] ([i915#3291] / [i915#3708])
[262]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-5/igt@prime_vgem@basic-read.html
* igt@prime_vgem@coherency-gtt:
- shard-dg2: NOTRUN -> [SKIP][263] ([i915#3708] / [i915#4077])
[263]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-11/igt@prime_vgem@coherency-gtt.html
* igt@prime_vgem@fence-flip-hang:
- shard-rkl: NOTRUN -> [SKIP][264] ([i915#3708])
[264]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-6/igt@prime_vgem@fence-flip-hang.html
* igt@sriov_basic@bind-unbind-vf:
- shard-dg1: NOTRUN -> [SKIP][265] ([i915#9917])
[265]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-14/igt@sriov_basic@bind-unbind-vf.html
* igt@sriov_basic@enable-vfs-autoprobe-off:
- shard-rkl: NOTRUN -> [SKIP][266] ([i915#9917])
[266]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-1/igt@sriov_basic@enable-vfs-autoprobe-off.html
* igt@syncobj_timeline@invalid-wait-zero-handles:
- shard-glk: NOTRUN -> [FAIL][267] ([i915#9781])
[267]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-glk7/igt@syncobj_timeline@invalid-wait-zero-handles.html
* igt@tools_test@sysfs_l3_parity:
- shard-dg2: NOTRUN -> [SKIP][268] ([i915#4818])
[268]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-6/igt@tools_test@sysfs_l3_parity.html
#### Possible fixes ####
* igt@gem_eio@unwedge-stress:
- shard-dg1: [FAIL][269] ([i915#5784]) -> [PASS][270] +1 other test pass
[269]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-dg1-17/igt@gem_eio@unwedge-stress.html
[270]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-14/igt@gem_eio@unwedge-stress.html
* igt@i915_pm_rc6_residency@rc6-idle@gt0-bcs0:
- shard-dg1: [FAIL][271] ([i915#3591]) -> [PASS][272] +1 other test pass
[271]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-dg1-17/igt@i915_pm_rc6_residency@rc6-idle@gt0-bcs0.html
[272]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-13/igt@i915_pm_rc6_residency@rc6-idle@gt0-bcs0.html
* igt@kms_cursor_legacy@cursor-vs-flip-varying-size:
- shard-dg1: [INCOMPLETE][273] -> [PASS][274]
[273]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-dg1-13/igt@kms_cursor_legacy@cursor-vs-flip-varying-size.html
[274]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-13/igt@kms_cursor_legacy@cursor-vs-flip-varying-size.html
* igt@kms_cursor_legacy@torture-move@pipe-a:
- shard-dg1: [DMESG-WARN][275] ([i915#10166]) -> [PASS][276]
[275]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-dg1-18/igt@kms_cursor_legacy@torture-move@pipe-a.html
[276]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-17/igt@kms_cursor_legacy@torture-move@pipe-a.html
* igt@kms_flip@2x-blocking-wf_vblank@ab-vga1-hdmi-a1:
- shard-snb: [FAIL][277] ([i915#2122]) -> [PASS][278]
[277]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-snb7/igt@kms_flip@2x-blocking-wf_vblank@ab-vga1-hdmi-a1.html
[278]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-snb6/igt@kms_flip@2x-blocking-wf_vblank@ab-vga1-hdmi-a1.html
* igt@kms_flip@plain-flip-fb-recreate@a-hdmi-a1:
- shard-rkl: [FAIL][279] ([i915#2122]) -> [PASS][280]
[279]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-rkl-5/igt@kms_flip@plain-flip-fb-recreate@a-hdmi-a1.html
[280]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-5/igt@kms_flip@plain-flip-fb-recreate@a-hdmi-a1.html
* igt@kms_pm_rpm@modeset-lpsp:
- shard-dg2: [SKIP][281] ([i915#9519]) -> [PASS][282] +1 other test pass
[281]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-dg2-1/igt@kms_pm_rpm@modeset-lpsp.html
[282]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-2/igt@kms_pm_rpm@modeset-lpsp.html
* igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
- shard-rkl: [SKIP][283] ([i915#9519]) -> [PASS][284] +2 other tests pass
[283]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-rkl-2/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
[284]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-rkl-3/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
* igt@kms_setmode@basic@pipe-a-hdmi-a-1:
- shard-snb: [FAIL][285] ([i915#5465]) -> [PASS][286] +1 other test pass
[285]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-snb5/igt@kms_setmode@basic@pipe-a-hdmi-a-1.html
[286]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-snb6/igt@kms_setmode@basic@pipe-a-hdmi-a-1.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-4:
- shard-dg1: [FAIL][287] ([i915#9196]) -> [PASS][288]
[287]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-dg1-18/igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-4.html
[288]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg1-16/igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-4.html
#### Warnings ####
* igt@i915_module_load@reload-with-fault-injection:
- shard-mtlp: [ABORT][289] ([i915#10131] / [i915#10887] / [i915#9820]) -> [ABORT][290] ([i915#10131] / [i915#9820])
[289]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-mtlp-3/igt@i915_module_load@reload-with-fault-injection.html
[290]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-mtlp-2/igt@i915_module_load@reload-with-fault-injection.html
* igt@kms_content_protection@content-type-change:
- shard-snb: [INCOMPLETE][291] ([i915#8816]) -> [SKIP][292]
[291]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-snb7/igt@kms_content_protection@content-type-change.html
[292]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-snb7/igt@kms_content_protection@content-type-change.html
* igt@kms_cursor_crc@cursor-random-512x170:
- shard-dg2: [SKIP][293] ([i915#11453]) -> [SKIP][294] ([i915#11453] / [i915#3359])
[293]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-dg2-7/igt@kms_cursor_crc@cursor-random-512x170.html
[294]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-11/igt@kms_cursor_crc@cursor-random-512x170.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-cpu:
- shard-dg2: [SKIP][295] ([i915#10433] / [i915#3458]) -> [SKIP][296] ([i915#3458]) +3 other tests skip
[295]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-cpu.html
[296]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-5/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-cpu.html
* igt@kms_psr@psr-suspend:
- shard-dg2: [SKIP][297] ([i915#1072] / [i915#9673] / [i915#9732]) -> [SKIP][298] ([i915#1072] / [i915#9732]) +6 other tests skip
[297]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-dg2-11/igt@kms_psr@psr-suspend.html
[298]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-3/igt@kms_psr@psr-suspend.html
* igt@kms_psr@psr2-primary-blt:
- shard-dg2: [SKIP][299] ([i915#1072] / [i915#9732]) -> [SKIP][300] ([i915#1072] / [i915#9673] / [i915#9732]) +12 other tests skip
[299]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-dg2-2/igt@kms_psr@psr2-primary-blt.html
[300]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-11/igt@kms_psr@psr2-primary-blt.html
* igt@kms_rotation_crc@bad-pixel-format:
- shard-dg2: [SKIP][301] ([i915#11131] / [i915#4235]) -> [SKIP][302] ([i915#11131])
[301]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15132/shard-dg2-11/igt@kms_rotation_crc@bad-pixel-format.html
[302]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/shard-dg2-8/igt@kms_rotation_crc@bad-pixel-format.html
[IGT#2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/2
[i915#10131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10131
[i915#10166]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10166
[i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
[i915#10333]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10333
[i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
[i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
[i915#10446]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10446
[i915#10656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10656
[i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
[i915#10887]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10887
[i915#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078
[i915#11131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11131
[i915#11441]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11441
[i915#11453]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11453
[i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
[i915#11614]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11614
[i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
[i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
[i915#1839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1839
[i915#1982]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1982
[i915#2122]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2122
[i915#2346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2346
[i915#2434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2434
[i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437
[i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
[i915#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587
[i915#2658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2658
[i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
[i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
[i915#284]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/284
[i915#2842]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2842
[i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
[i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023
[i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
[i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
[i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
[i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
[i915#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299
[i915#3359]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3359
[i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
[i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539
[i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
[i915#3582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3582
[i915#3591]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3591
[i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
[i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
[i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
[i915#3742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3742
[i915#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804
[i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
[i915#3936]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3936
[i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
[i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
[i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
[i915#4087]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4087
[i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
[i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
[i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
[i915#4235]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4235
[i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
[i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349
[i915#4473]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4473
[i915#4537]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4537
[i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
[i915#4565]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4565
[i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
[i915#4771]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4771
[i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812
[i915#4816]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4816
[i915#4818]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4818
[i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852
[i915#4854]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4854
[i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860
[i915#4873]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4873
[i915#4879]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4879
[i915#4881]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4881
[i915#5176]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5176
[i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
[i915#5235]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5235
[i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
[i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289
[i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
[i915#5465]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5465
[i915#5784]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5784
[i915#5956]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5956
[i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
[i915#6188]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6188
[i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301
[i915#6334]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6334
[i915#6412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6412
[i915#6493]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6493
[i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
[i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
[i915#6880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6880
[i915#6944]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6944
[i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953
[i915#7116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7116
[i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118
[i915#7173]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7173
[i915#7178]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7178
[i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
[i915#7742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7742
[i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
[i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
[i915#8292]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8292
[i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
[i915#8414]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8414
[i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428
[i915#8430]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8430
[i915#8516]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8516
[i915#8555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8555
[i915#8562]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8562
[i915#8623]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8623
[i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
[i915#8709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8709
[i915#8814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8814
[i915#8816]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8816
[i915#9053]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9053
[i915#9067]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9067
[i915#9196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9196
[i915#9295]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9295
[i915#9311]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9311
[i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
[i915#9412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9412
[i915#9423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9423
[i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424
[i915#9519]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9519
[i915#9673]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9673
[i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685
[i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
[i915#9728]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9728
[i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
[i915#9781]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9781
[i915#9808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9808
[i915#9809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9809
[i915#9820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9820
[i915#9833]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9833
[i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906
[i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917
[i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934
Build changes
-------------
* CI: CI-20190529 -> None
* IGT: IGT_7937 -> IGTPW_11461
CI-20190529: 20190529
CI_DRM_15132: 9f8e597a1c39d7e316f9479e6f627c15dbc58e1d @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_11461: 11461
IGT_7937: eba69333dfe8c295d053997367e395d7bde2b4b4 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11461/index.html
[-- Attachment #2: Type: text/html, Size: 102694 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH i-g-t v3 1/6] igt_hook: Add feature
2024-07-25 14:19 ` [PATCH i-g-t v3 1/6] igt_hook: Add feature Gustavo Sousa
@ 2024-08-12 13:52 ` Lucas De Marchi
0 siblings, 0 replies; 17+ messages in thread
From: Lucas De Marchi @ 2024-08-12 13:52 UTC (permalink / raw)
To: Gustavo Sousa; +Cc: igt-dev
On Thu, Jul 25, 2024 at 11:19:34AM GMT, Gustavo Sousa wrote:
>For development purposes, sometimes it is useful to have a way of
>running custom scripts at certain points of test executions. A
>real-world example I bumped into recently is to collect information from
>sysfs before and after running each entry of a testlist.
>
>While it is possible for the user to handcraft a script that calls each
>test with the correct actions before and after execution, we can provide
>a better experience by adding built-in support for running hooks during
>test execution.
>
>That would be even better when adding the same kind of support for
>igt_runner (which is done in an upcoming change), since the user can
>also nicely resume with igt_resume with the hook already setup in case a
>crash happens during execution of the test list.
>
>As such provide implement support for hooks, integrate it into
>igt_core and expose the functionality via --hook CLI option on test
>executables.
>
>v2:
> - s/igt_hook_init/igt_hook_create/ (Lucas)
> - Use SPDX License Identifier instead of license text. (Lucas)
> - Do not rely on hard-coded length 3 when generating full test name.
> (Lucas)
> - Do not pollute current environment variables when running hooks.
> (Lucas)
> - Change hook string in run_tests_and_match_env() to use "printf"
> instead of "echo" to be compatible with CI environment.
>
>v3:
> - igt_hook_create() only errors out for invalid input.
> - Use igt_hook_free() instead of simply free() in the error path for
> common_init().
> - Go back to the simpler logic for calling hooks instead of using
> fork: setenv() calls followed by system().
> - Change igt_hook_create() to return error number and receive
> reference to destination pointer instead of the opposite. (Lucas)
> - Remove checks for non-existing negative return of igt_hook_create().
> (Lucas)
> - s/igt_hook_push_evt/igt_hook_event_notify/. (Lucas)
> - Simplify call sites for igt_hook_event_notify() by allowing argument
> to igt_hook to be NULL and using compount literals for the event
> struct. (Lucas)
> - Fix style for igt_hook_calc_test_fullname_size(). (Lucas)
>
>Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
just 2 nits below
>+void igt_hook_event_notify(struct igt_hook *igt_hook, struct igt_hook_evt *evt)
>+{
>+ evt_mask_t evt_bit;
>+
>+ if (!igt_hook)
>+ return;
>+
>+ evt_bit = (1 << evt->evt_type);
no need for parenthesis
>+ igt_hook_update_test_name_pre_call(igt_hook, evt);
>+
>+ if ((evt_bit & igt_hook->evt_mask)) {
same here
Lucas De Marchi
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH i-g-t v3 2/6] runner: Make it easier to extend argv
2024-07-25 14:19 ` [PATCH i-g-t v3 2/6] runner: Make it easier to extend argv Gustavo Sousa
@ 2024-08-12 13:54 ` Lucas De Marchi
0 siblings, 0 replies; 17+ messages in thread
From: Lucas De Marchi @ 2024-08-12 13:54 UTC (permalink / raw)
To: Gustavo Sousa; +Cc: igt-dev
On Thu, Jul 25, 2024 at 11:19:35AM GMT, Gustavo Sousa wrote:
>In an upcoming change, we will be adding the option to forward the
>--hook option to the test cases, which will require updating
>execute_test_process() to add the option when asked by the user.
>
>The current implementation makes that task not quite straightforward:
>filling of argv is already dependent on stuff like entry->subtest_count
>and dynbegin; if we want to keep on using constant indices, we would
>need several conditional branches for adding arguments for --hook.
>
>Let us change the current implementation to use a dynamic vector, to
>make it easier to extend argv with more stuff as needed.
>
>v2:
> - Squash the logic from patch "runner: Use dynamic vector for test
> argv" directly instead of using the original logic, which used a
> statically sized array. (Lucas)
>
>Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Lucas De Marchi
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH i-g-t v3 3/6] runner: Add option --hook
2024-07-25 14:19 ` [PATCH i-g-t v3 3/6] runner: Add option --hook Gustavo Sousa
@ 2024-08-12 13:55 ` Lucas De Marchi
0 siblings, 0 replies; 17+ messages in thread
From: Lucas De Marchi @ 2024-08-12 13:55 UTC (permalink / raw)
To: Gustavo Sousa; +Cc: igt-dev
On Thu, Jul 25, 2024 at 11:19:36AM GMT, Gustavo Sousa wrote:
>Now that we have support for setting a hook script for test cases, let's
>also add the option --hook to igt_runner, which forwards it to test
>executables.
>
>Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Lucas De Marchi
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH i-g-t v3 4/6] igt_hook: Implement and use set_fake_argv() in test
2024-07-25 14:19 ` [PATCH i-g-t v3 4/6] igt_hook: Implement and use set_fake_argv() in test Gustavo Sousa
@ 2024-08-12 13:58 ` Lucas De Marchi
0 siblings, 0 replies; 17+ messages in thread
From: Lucas De Marchi @ 2024-08-12 13:58 UTC (permalink / raw)
To: Gustavo Sousa; +Cc: igt-dev
On Thu, Jul 25, 2024 at 11:19:37AM GMT, Gustavo Sousa wrote:
>In upcoming changes, fake_argv will need to allow a variable number of
>elements. As such, implement the variadic function set_fake_argv() to
>allow that.
>
>Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>---
> lib/tests/igt_hook_integration.c | 49 +++++++++++++++++++++++++-------
> 1 file changed, 39 insertions(+), 10 deletions(-)
>
>diff --git a/lib/tests/igt_hook_integration.c b/lib/tests/igt_hook_integration.c
>index f5ba25e92897..c552d5a4e796 100644
>--- a/lib/tests/igt_hook_integration.c
>+++ b/lib/tests/igt_hook_integration.c
>@@ -3,6 +3,7 @@
> * Copyright(c) 2024 Intel Corporation. All rights reserved.
> */
>
>+#include <stdarg.h>
> #include <stdbool.h>
> #include <stdio.h>
> #include <string.h>
>@@ -11,11 +12,9 @@
>
> #include "igt_tests_common.h"
>
>-char prog[] = "igt_hook_integration";
>-char hook_opt[] = "--hook";
>-char hook_str[128];
>-char *fake_argv[] = {prog, hook_opt, hook_str};
>-int fake_argc = sizeof(fake_argv) / sizeof(fake_argv[0]);
>+char fake_argv_buffer[1024];
>+char *fake_argv[64];
>+int fake_argc;
>
> #define ENV_ARRAY(evt_name, fullname_suffix, subtest, dyn_subtest, result) \
> { \
>@@ -51,6 +50,32 @@ const char *post_test_env[] = TEST_ENV("post-test", "FAIL");
>
> #define num_env_vars (sizeof(pre_test_env) / sizeof(pre_test_env[0]))
>
>+static void set_fake_argv(const char *arg0, ...)
>+{
>+ va_list ap;
>+ const char *arg;
>+ size_t buf_size;
>+
>+ fake_argc = 0;
>+ buf_size = 0;
>+
>+ va_start(ap, arg0);
>+
>+ arg = arg0;
>+ while (arg != NULL) {
nit: you could use a `for`:
for (arg = arg0; arg != NULL; arg = va_arg(ap, typeof(arg)))
anyway,
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Lucas De Marchi
>+ internal_assert(buf_size + strlen(arg) < sizeof(fake_argv_buffer));
>+ internal_assert((size_t)fake_argc < sizeof(fake_argv) / sizeof(fake_argv[0]));
>+
>+ strcpy(fake_argv_buffer + buf_size, arg);
>+ fake_argv[fake_argc++] = fake_argv_buffer + buf_size;
>+ buf_size += strlen(arg) + 1;
>+
>+ arg = va_arg(ap, typeof(arg));
>+ }
>+
>+ va_end(ap);
>+}
>+
> __noreturn static void fake_main(void)
> {
> igt_subtest_init(fake_argc, fake_argv);
>@@ -85,7 +110,7 @@ static void test_invalid_hook_str(void)
> static char err[4096];
> int errfd;
>
>- sprintf(hook_str, "invalid-event:echo hello");
>+ set_fake_argv("igt_hook_integration", "--hook", "invalid-event:echo hello", NULL);
>
> pid = do_fork_bg_with_pipes(fake_main, NULL, &errfd);
>
>@@ -196,6 +221,7 @@ static void run_tests_and_match_env(const char *evt_descriptors, const char **ex
> int ret;
> int pipefd[2];
> pid_t pid;
>+ char hook_str[128];
> FILE *f;
>
> ret = pipe(pipefd);
>@@ -204,10 +230,13 @@ static void run_tests_and_match_env(const char *evt_descriptors, const char **ex
> /* Use grep to filter only env var set by us. This should ensure that
> * writing to the pipe will not block due to capacity, since we only
> * read from the pipe after the shell command is done. */
>- sprintf(hook_str,
>- "%1$s:printenv -0 | grep -z ^IGT_HOOK >&%2$d; printf -- ---\\\\00 >&%2$d",
>- evt_descriptors,
>- pipefd[1]);
>+ ret = snprintf(hook_str, sizeof(hook_str),
>+ "%1$s:printenv -0 | grep -z ^IGT_HOOK >&%2$d; printf -- ---\\\\00 >&%2$d",
>+ evt_descriptors,
>+ pipefd[1]);
>+ internal_assert(0 < ret && ret < sizeof(hook_str));
>+
>+ set_fake_argv("igt_hook_integration", "--hook", hook_str, NULL);
>
> pid = do_fork_bg_with_pipes(fake_main, NULL, NULL);
> internal_assert(safe_wait(pid, &ret) != -1);
>--
>2.45.2
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH i-g-t v3 5/6] igt_hook: Allow multiple hook descriptors
2024-07-25 14:19 ` [PATCH i-g-t v3 5/6] igt_hook: Allow multiple hook descriptors Gustavo Sousa
@ 2024-08-12 14:01 ` Lucas De Marchi
0 siblings, 0 replies; 17+ messages in thread
From: Lucas De Marchi @ 2024-08-12 14:01 UTC (permalink / raw)
To: Gustavo Sousa; +Cc: igt-dev
On Thu, Jul 25, 2024 at 11:19:38AM GMT, Gustavo Sousa wrote:
>Extend the current hook functionality to allow using multiple hook
>descriptors. That allows running a test binary like the following:
>
> my-test --hook pre-subtest:do-something \
> --hook post-subtest:do-somthing-else
>
>Which is more convenient to the user than having to implement a script
>that checks the value of IGT_HOOK_EVENT environment variable.
>
>Note that we still need to add the same support for igt_runner, which is
>left for a followup change.
>
>Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Lucas De Marchi
>---
> lib/igt_core.c | 27 +++++++-----
> lib/igt_hook.c | 75 ++++++++++++++++++++++++--------
> lib/igt_hook.h | 3 +-
> lib/tests/igt_hook.c | 13 +++++-
> lib/tests/igt_hook_integration.c | 74 ++++++++++++++++++++++++++++---
> runner/settings.c | 1 +
> 6 files changed, 157 insertions(+), 36 deletions(-)
>
>diff --git a/lib/igt_core.c b/lib/igt_core.c
>index 51141722c89b..e0edfe18f50e 100644
>--- a/lib/igt_core.c
>+++ b/lib/igt_core.c
>@@ -78,6 +78,7 @@
> #include "igt_map.h"
> #include "igt_device_scan.h"
> #include "igt_thread.h"
>+#include "igt_vec.h"
> #include "runnercomms.h"
>
> #define UNW_LOCAL_ONLY
>@@ -1115,10 +1116,12 @@ static int common_init(int *argc, char **argv,
> struct option *combined_opts;
> int extra_opt_count;
> int all_opt_count;
>+ struct igt_vec hook_strs;
> int ret = 0;
>
> common_init_env();
> IGT_INIT_LIST_HEAD(&subgroup_descriptions);
>+ igt_vec_init(&hook_strs, sizeof(char *));
>
> command_str = argv[0];
> if (strrchr(command_str, '/'))
>@@ -1241,17 +1244,7 @@ static int common_init(int *argc, char **argv,
> break;
> case OPT_HOOK:
> assert(optarg);
>- if (igt_hook) {
>- igt_warn("Overriding previous hook descriptor\n");
>- igt_hook_free(igt_hook);
>- }
>- ret = igt_hook_create(optarg, &igt_hook);
>- if (ret) {
>- igt_critical("Failed to initialize hook data: %s\n",
>- igt_hook_error_str(ret));
>- ret = -2;
>- goto out;
>- }
>+ igt_vec_push(&hook_strs, &optarg);
> break;
> case OPT_HELP_HOOK:
> igt_hook_print_help(stdout, "--hook");
>@@ -1285,11 +1278,23 @@ static int common_init(int *argc, char **argv,
> }
> }
>
>+ if (igt_vec_length(&hook_strs)) {
>+ ret = igt_hook_create(hook_strs.elems, igt_vec_length(&hook_strs), &igt_hook);
>+
>+ if (ret) {
>+ igt_critical("Failed to initialize hook data: %s\n",
>+ igt_hook_error_str(ret));
>+ ret = -2;
>+ goto out;
>+ }
>+ }
>+
> common_init_config();
>
> out:
> free(short_opts);
> free(combined_opts);
>+ igt_vec_fini(&hook_strs);
>
> /* exit immediately if this test has no subtests and a subtest or the
> * list of subtests has been requested */
>diff --git a/lib/igt_hook.c b/lib/igt_hook.c
>index b9350fdd78b1..ae32668b15f0 100644
>--- a/lib/igt_hook.c
>+++ b/lib/igt_hook.c
>@@ -35,9 +35,13 @@
>
> typedef uint16_t evt_mask_t;
>
>-struct igt_hook {
>+struct igt_hook_descriptor {
> evt_mask_t evt_mask;
> char *cmd;
>+};
>+
>+struct igt_hook {
>+ struct igt_hook_descriptor *descriptors;
> char *test_name;
> size_t test_name_size;
> char *subtest_name;
>@@ -172,15 +176,16 @@ static void igt_hook_update_test_fullname(struct igt_hook *igt_hook)
>
> /**
> * igt_hook_create:
>- * @hook_str: Hook descriptor string.
>+ * @hook_str: Array of hook strings.
>+ * @n: Number of element in @hook_strs.
> * @igt_hook_ptr: Destination of the struct igt_hook pointer.
> *
> * Allocate and initialize an #igt_hook structure.
> *
>- * This function parses the hook descriptor in @hook_str and initializes the
>+ * This function parses the hook descriptors in @hook_strs and initializes the
> * struct. The pointer to the allocated structure is stored in @igt_hook_ptr.
> *
>- * The hook descriptor comes from the argument to `--hook` of the test
>+ * Each hook descriptor comes from the argument to `--hook` of the test
> * executable being run.
> *
> * If an error happens, the returned error number can be passed to
>@@ -188,20 +193,43 @@ static void igt_hook_update_test_fullname(struct igt_hook *igt_hook)
> *
> * Returns: Zero on success and a non-zero value on error.
> */
>-int igt_hook_create(const char *hook_str, struct igt_hook **igt_hook_ptr)
>+int igt_hook_create(const char **hook_strs, size_t n, struct igt_hook **igt_hook_ptr)
> {
> int ret;
>- evt_mask_t evt_mask;
>- const char *cmd;
>+ size_t cmd_buffer_size;
>+ char *cmd_buffer;
> struct igt_hook *igt_hook = NULL;
>
>- ret = igt_hook_parse_hook_str(hook_str, &evt_mask, &cmd);
>- if (ret)
>- goto out;
>+ /* Parse hook descriptors the first time to learn the needed size. */
>+ cmd_buffer_size = 0;
>+ for (size_t i = 0; i < n; i++) {
>+ evt_mask_t evt_mask;
>+ const char *cmd;
>+
>+ ret = igt_hook_parse_hook_str(hook_strs[i], &evt_mask, &cmd);
>+ if (ret)
>+ goto out;
>+
>+ cmd_buffer_size += strlen(cmd) + 1;
>+ }
>+
>+ igt_hook = calloc(1, (sizeof(*igt_hook) + (n + 1) * sizeof(*igt_hook->descriptors) +
>+ cmd_buffer_size));
>+
>+ /* Now parse hook descriptors a second time and store the result. */
>+ igt_hook->descriptors = (void *)igt_hook + sizeof(*igt_hook);
>+ cmd_buffer = (void *)igt_hook->descriptors + (n + 1) * sizeof(*igt_hook->descriptors);
>+ for (size_t i = 0; i < n; i++) {
>+ evt_mask_t evt_mask;
>+ const char *cmd;
>+
>+ igt_hook_parse_hook_str(hook_strs[i], &evt_mask, &cmd);
>+ strcpy(cmd_buffer, cmd);
>+ igt_hook->descriptors[i].evt_mask = evt_mask;
>+ igt_hook->descriptors[i].cmd = cmd_buffer;
>+ cmd_buffer += strlen(cmd) + 1;
>+ }
>
>- igt_hook = calloc(1, sizeof(*igt_hook));
>- igt_hook->evt_mask = evt_mask;
>- igt_hook->cmd = strdup(cmd);
> igt_hook->test_name = malloc(TEST_NAME_INITIAL_SIZE);
> igt_hook->test_name_size = TEST_NAME_INITIAL_SIZE;
> igt_hook->subtest_name = malloc(TEST_NAME_INITIAL_SIZE);
>@@ -237,7 +265,6 @@ void igt_hook_free(struct igt_hook *igt_hook)
> if (!igt_hook)
> return;
>
>- free(igt_hook->cmd);
> free(igt_hook->test_name);
> free(igt_hook->subtest_name);
> free(igt_hook->dyn_subtest_name);
>@@ -327,6 +354,7 @@ static void igt_hook_update_env_vars(struct igt_hook *igt_hook, struct igt_hook_
> void igt_hook_event_notify(struct igt_hook *igt_hook, struct igt_hook_evt *evt)
> {
> evt_mask_t evt_bit;
>+ bool has_match = false;
>
> if (!igt_hook)
> return;
>@@ -334,9 +362,19 @@ void igt_hook_event_notify(struct igt_hook *igt_hook, struct igt_hook_evt *evt)
> evt_bit = (1 << evt->evt_type);
> igt_hook_update_test_name_pre_call(igt_hook, evt);
>
>- if ((evt_bit & igt_hook->evt_mask)) {
>+ for (size_t i = 0; igt_hook->descriptors[i].cmd; i++) {
>+ if (evt_bit & igt_hook->descriptors[i].evt_mask) {
>+ has_match = true;
>+ break;
>+ }
>+ }
>+
>+ if (has_match) {
> igt_hook_update_env_vars(igt_hook, evt);
>- system(igt_hook->cmd);
>+
>+ for (size_t i = 0; igt_hook->descriptors[i].cmd; i++)
>+ if (evt_bit & igt_hook->descriptors[i].evt_mask)
>+ system(igt_hook->descriptors[i].cmd);
> }
>
> igt_hook_update_test_name_post_call(igt_hook, evt);
>@@ -466,5 +504,8 @@ available to the command:\n\
> values are: SUCCESS, SKIP or FAIL. This is only applicable on \"post-*\"\n\
> events and will be the empty string for other types of events.\n\
> \n\
>-");
>+\n\
>+Note that %s can be passed multiple times. Each descriptor is evaluated in turn\n\
>+when matching events and running hook commands.\n\
>+", option_name);
> }
>diff --git a/lib/igt_hook.h b/lib/igt_hook.h
>index 83722cbb2f2b..e9f97b79b943 100644
>--- a/lib/igt_hook.h
>+++ b/lib/igt_hook.h
>@@ -6,6 +6,7 @@
> #ifndef IGT_HOOK_H
> #define IGT_HOOK_H
>
>+#include <stddef.h>
> #include <stdio.h>
>
> /**
>@@ -60,7 +61,7 @@ struct igt_hook_evt {
> const char *result;
> };
>
>-int igt_hook_create(const char *hook_str, struct igt_hook **igt_hook_ptr);
>+int igt_hook_create(const char **hook_strs, size_t n, struct igt_hook **igt_hook_ptr);
> void igt_hook_free(struct igt_hook *igt_hook);
> void igt_hook_event_notify(struct igt_hook *igt_hook, struct igt_hook_evt *evt);
> const char *igt_hook_error_str(int error);
>diff --git a/lib/tests/igt_hook.c b/lib/tests/igt_hook.c
>index 0d71909e676a..676c6eb7a818 100644
>--- a/lib/tests/igt_hook.c
>+++ b/lib/tests/igt_hook.c
>@@ -42,6 +42,15 @@ out:
> return i;
> }
>
>+static int igt_single_hook(const char *hook_str, struct igt_hook **igt_hook_ptr)
>+{
>+ const char *hook_strs[] = {
>+ hook_str,
>+ };
>+
>+ return igt_hook_create(hook_strs, 1, igt_hook_ptr);
>+}
>+
> static void test_invalid_hook_descriptors(void)
> {
> struct {
>@@ -59,7 +68,7 @@ static void test_invalid_hook_descriptors(void)
> int err;
> struct igt_hook *igt_hook;
>
>- err = igt_hook_create(invalid_cases[i].hook_desc, &igt_hook);
>+ err = igt_single_hook(invalid_cases[i].hook_desc, &igt_hook);
> igt_assert(err != 0);
> }
> }
>@@ -112,7 +121,7 @@ static void test_all_env_vars(void)
> ret = asprintf(&hook_str, "printenv -0 | grep -z ^IGT_HOOK >&%d", pipefd[1]);
> igt_assert(ret > 0);
>
>- ret = igt_hook_create(hook_str, &igt_hook);
>+ ret = igt_single_hook(hook_str, &igt_hook);
> igt_assert(ret == 0);
>
> igt_hook_event_notify(igt_hook, &evt);
>diff --git a/lib/tests/igt_hook_integration.c b/lib/tests/igt_hook_integration.c
>index c552d5a4e796..8dffa0819f9b 100644
>--- a/lib/tests/igt_hook_integration.c
>+++ b/lib/tests/igt_hook_integration.c
>@@ -215,6 +215,14 @@ out:
> return true;
> }
>
>+
>+#define checked_snprintf(char_array, format...) \
>+ ({\
>+ int ret__ = snprintf(char_array, sizeof(char_array), format); \
>+ internal_assert(0 < ret__ && ret__ < sizeof(char_array)); \
>+ ret__; \
>+ })
>+
> static void run_tests_and_match_env(const char *evt_descriptors, const char **expected_envs[])
> {
> int i;
>@@ -230,11 +238,9 @@ static void run_tests_and_match_env(const char *evt_descriptors, const char **ex
> /* Use grep to filter only env var set by us. This should ensure that
> * writing to the pipe will not block due to capacity, since we only
> * read from the pipe after the shell command is done. */
>- ret = snprintf(hook_str, sizeof(hook_str),
>- "%1$s:printenv -0 | grep -z ^IGT_HOOK >&%2$d; printf -- ---\\\\00 >&%2$d",
>- evt_descriptors,
>- pipefd[1]);
>- internal_assert(0 < ret && ret < sizeof(hook_str));
>+ checked_snprintf(hook_str,
>+ "%1$s:printenv -0 | grep -z ^IGT_HOOK >&%2$d; printf -- ---\\\\00 >&%2$d",
>+ evt_descriptors, pipefd[1]);
>
> set_fake_argv("igt_hook_integration", "--hook", hook_str, NULL);
>
>@@ -254,6 +260,59 @@ static void run_tests_and_match_env(const char *evt_descriptors, const char **ex
>
> }
>
>+static void test_multiple_hook_options(void)
>+{
>+ int ret;
>+ int pipefd[2];
>+ pid_t pid;
>+ char hook_strs[3][128];
>+ char hook_out[4096] = {};
>+ char expected_output[] = (
>+ " hook-2 pre-subtest igt@igt_hook_integration@a\n"
>+ " hook-0 post-subtest igt@igt_hook_integration@a\n"
>+ " hook-1 post-subtest igt@igt_hook_integration@a\n"
>+ " hook-2 pre-subtest igt@igt_hook_integration@b\n"
>+ " hook-0 post-subtest igt@igt_hook_integration@b\n"
>+ " hook-1 post-subtest igt@igt_hook_integration@b\n"
>+ " hook-0 post-test igt@igt_hook_integration\n"
>+ );
>+
>+ ret = pipe(pipefd);
>+ internal_assert(ret == 0);
>+
>+ checked_snprintf(hook_strs[0],
>+ "post-test,post-subtest:echo ' hook-0' $IGT_HOOK_EVENT $IGT_HOOK_TEST_FULLNAME >&%d",
>+ pipefd[1]);
>+
>+ checked_snprintf(hook_strs[1],
>+ "post-subtest:echo ' hook-1' $IGT_HOOK_EVENT $IGT_HOOK_TEST_FULLNAME >&%d",
>+ pipefd[1]);
>+
>+ checked_snprintf(hook_strs[2],
>+ "pre-subtest:echo ' hook-2' $IGT_HOOK_EVENT $IGT_HOOK_TEST_FULLNAME >&%d",
>+ pipefd[1]);
>+
>+ set_fake_argv("igt_hook_integration",
>+ "--hook", hook_strs[0],
>+ "--hook", hook_strs[1],
>+ "--hook", hook_strs[2],
>+ NULL);
>+
>+ pid = do_fork_bg_with_pipes(fake_main, NULL, NULL);
>+ internal_assert(safe_wait(pid, &ret) != -1);
>+ internal_assert_wexited(ret, IGT_EXIT_FAILURE);
>+
>+ close(pipefd[1]);
>+ read_whole_pipe(pipefd[0], hook_out, sizeof(hook_out));
>+ close(pipefd[0]);
>+
>+ if (strcmp(hook_out, expected_output)) {
>+ printf("Expected output:\n%s\n\n", expected_output);
>+ printf("Output from hook:\n%s\n", hook_out);
>+ }
>+ internal_assert(strcmp(hook_out, expected_output) == 0);
>+}
>+
> int main(int argc, char **argv)
> {
> {
>@@ -307,4 +366,9 @@ int main(int argc, char **argv)
> printf("Check multiple event types tracking\n");
> run_tests_and_match_env("post-dyn-subtest,pre-subtest", expected_envs);
> }
>+
>+ {
>+ printf("Check multiple hook options\n");
>+ test_multiple_hook_options();
>+ }
> }
>diff --git a/runner/settings.c b/runner/settings.c
>index e554a5c70776..6fd742cc826d 100644
>--- a/runner/settings.c
>+++ b/runner/settings.c
>@@ -758,6 +758,7 @@ bool parse_options(int argc, char **argv,
> fprintf(stderr, "Newlines in --hook are currently unsupported.\n");
> goto error;
> }
>+ /* FIXME: Allow as many options as allowed by test binaries. */
> settings->hook_str = optarg;
> break;
> case OPT_HELP_HOOK:
>--
>2.45.2
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH i-g-t v3 6/6] runner: Allow multiple --hook options
2024-07-25 14:19 ` [PATCH i-g-t v3 6/6] runner: Allow multiple --hook options Gustavo Sousa
@ 2024-08-12 14:06 ` Lucas De Marchi
0 siblings, 0 replies; 17+ messages in thread
From: Lucas De Marchi @ 2024-08-12 14:06 UTC (permalink / raw)
To: Gustavo Sousa; +Cc: igt-dev
On Thu, Jul 25, 2024 at 11:19:39AM GMT, Gustavo Sousa wrote:
>Test binaries now allow passing multiple --hook options, it just makes
>sense that igt_runner follows suit, so let's do it.
>
>Note that this requires having another file in the results directory for
>storing the hook strings, as metadata.txt does not support multivalued
>items.
>
>Since we are using a different file to store hook strings, take this
>opportunity to also allow multiline hook strings (which was not possible
>with metadata.txt).
>
>Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Lucas De Marchi
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2024-08-12 14:06 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-25 14:19 [PATCH i-g-t v3 0/6] Add support for hook script Gustavo Sousa
2024-07-25 14:19 ` [PATCH i-g-t v3 1/6] igt_hook: Add feature Gustavo Sousa
2024-08-12 13:52 ` Lucas De Marchi
2024-07-25 14:19 ` [PATCH i-g-t v3 2/6] runner: Make it easier to extend argv Gustavo Sousa
2024-08-12 13:54 ` Lucas De Marchi
2024-07-25 14:19 ` [PATCH i-g-t v3 3/6] runner: Add option --hook Gustavo Sousa
2024-08-12 13:55 ` Lucas De Marchi
2024-07-25 14:19 ` [PATCH i-g-t v3 4/6] igt_hook: Implement and use set_fake_argv() in test Gustavo Sousa
2024-08-12 13:58 ` Lucas De Marchi
2024-07-25 14:19 ` [PATCH i-g-t v3 5/6] igt_hook: Allow multiple hook descriptors Gustavo Sousa
2024-08-12 14:01 ` Lucas De Marchi
2024-07-25 14:19 ` [PATCH i-g-t v3 6/6] runner: Allow multiple --hook options Gustavo Sousa
2024-08-12 14:06 ` Lucas De Marchi
2024-07-25 18:05 ` ✓ CI.xeBAT: success for Add support for hook script (rev3) Patchwork
2024-07-25 18:11 ` ✓ Fi.CI.BAT: " Patchwork
2024-07-25 22:49 ` ✗ CI.xeFULL: failure " Patchwork
2024-07-26 11:36 ` ✗ Fi.CI.IGT: " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox