* [PATCH i-g-t 0/4] revamp big joiner test
@ 2024-02-29 18:10 Kunal Joshi
2024-02-29 18:10 ` [PATCH i-g-t 1/4] lib/igt_kms: move bigjoiner_mode_found to lib Kunal Joshi
` (5 more replies)
0 siblings, 6 replies; 13+ messages in thread
From: Kunal Joshi @ 2024-02-29 18:10 UTC (permalink / raw)
To: igt-dev; +Cc: Kunal Joshi
big joiner outputs are statically assigned to pipe,
assign dynamically also add support for forcing
joiner, support for forcing joiner was introduced with
below kmd patch
drm/i915: Add bigjoiner force enable option to debugfs
Kunal Joshi (4):
lib/igt_kms: move bigjoiner_mode_found to lib
lib/igt_kms: add helpers to enable/disable force joiner
tests/intel/kms_big_joiner: revamp kms_big_joiner
tests/intel-ci/fast-feedback: HAX PATCH DO NOT MERGE
lib/igt_kms.c | 73 ++++
lib/igt_kms.h | 4 +
tests/intel-ci/fast-feedback.testlist | 5 +
tests/intel/kms_big_joiner.c | 503 ++++++++++++++------------
4 files changed, 351 insertions(+), 234 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH i-g-t 1/4] lib/igt_kms: move bigjoiner_mode_found to lib
2024-02-29 18:10 [PATCH i-g-t 0/4] revamp big joiner test Kunal Joshi
@ 2024-02-29 18:10 ` Kunal Joshi
2024-02-29 18:10 ` [PATCH i-g-t 2/4] lib/igt_kms: add helpers to enable/disable force joiner Kunal Joshi
` (4 subsequent siblings)
5 siblings, 0 replies; 13+ messages in thread
From: Kunal Joshi @ 2024-02-29 18:10 UTC (permalink / raw)
To: igt-dev; +Cc: Kunal Joshi, Karthik B S, Bhanuprakash Modem
move bigjoiner_mode_found to lib
Cc: Karthik B S <karthik.b.s@intel.com>
Cc: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
lib/igt_kms.c | 25 +++++++++++++++++++++++++
lib/igt_kms.h | 2 ++
tests/intel/kms_big_joiner.c | 14 +-------------
3 files changed, 28 insertions(+), 13 deletions(-)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 1b4d0d761..89956b9d5 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -6142,6 +6142,31 @@ bool igt_bigjoiner_possible(drmModeModeInfo *mode, int max_dotclock)
mode->clock > max_dotclock);
}
+/**
+ * bigjoiner_mode_found:
+ * @connector: libdrm connector
+ * @sort_method: comparator method
+ * @mode: libdrm mode
+ *
+ * Bigjoiner will come in to the picture when the
+ * resolution > 5K or clock > max-dot-clock.
+ *
+ * Returns: True if big joiner found in connector modes
+ */
+bool bigjoiner_mode_found(int drm_fd, drmModeConnector *connector,
+ int max_dotclock)
+{
+ bool found = false;
+
+ igt_sort_connector_modes(connector, sort_drm_modes_by_res_dsc);
+ found = igt_bigjoiner_possible(&connector->modes[0], max_dotclock);
+ if (!found) {
+ igt_sort_connector_modes(connector, sort_drm_modes_by_clk_dsc);
+ found = igt_bigjoiner_possible(&connector->modes[0], max_dotclock);
+ }
+ return found;
+}
+
/**
* igt_check_bigjoiner_support:
* @display: a pointer to an #igt_display_t structure
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index b3882808b..bab8487d3 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -1212,6 +1212,8 @@ bool igt_max_bpc_constraint(igt_display_t *display, enum pipe pipe,
igt_output_t *output, int bpc);
int igt_get_max_dotclock(int fd);
bool igt_bigjoiner_possible(drmModeModeInfo *mode, int max_dotclock);
+bool bigjoiner_mode_found(int drm_fd, drmModeConnector *connector,
+ int max_dotclock);
bool igt_check_bigjoiner_support(igt_display_t *display);
bool igt_parse_mode_string(const char *mode_string, drmModeModeInfo *mode);
bool intel_pipe_output_combo_valid(igt_display_t *display);
diff --git a/tests/intel/kms_big_joiner.c b/tests/intel/kms_big_joiner.c
index aba2adfbe..28678b958 100644
--- a/tests/intel/kms_big_joiner.c
+++ b/tests/intel/kms_big_joiner.c
@@ -199,16 +199,6 @@ static void test_dual_display(data_t *data)
igt_display_commit2(display, COMMIT_ATOMIC);
}
-static bool bigjoiner_mode_found(drmModeConnector *connector,
- int (*sort_method)(const void *, const void*),
- drmModeModeInfo *mode)
-{
- igt_sort_connector_modes(connector, sort_method);
- *mode = connector->modes[0];
-
- return igt_bigjoiner_possible(mode, max_dotclock);
-}
-
igt_main
{
data_t data;
@@ -235,9 +225,7 @@ igt_main
* Bigjoiner will come in to the picture when the
* resolution > 5K or clock > max-dot-clock.
*/
- found = (bigjoiner_mode_found(connector, sort_drm_modes_by_res_dsc, &mode) ||
- bigjoiner_mode_found(connector, sort_drm_modes_by_clk_dsc, &mode)) ?
- true : false;
+ found = bigjoiner_mode_found(data.drm_fd, connector, max_dotclock);
if (found) {
data.output[count].output_id = output->id;
--
2.25.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH i-g-t 2/4] lib/igt_kms: add helpers to enable/disable force joiner
2024-02-29 18:10 [PATCH i-g-t 0/4] revamp big joiner test Kunal Joshi
2024-02-29 18:10 ` [PATCH i-g-t 1/4] lib/igt_kms: move bigjoiner_mode_found to lib Kunal Joshi
@ 2024-02-29 18:10 ` Kunal Joshi
2024-02-29 18:10 ` [PATCH i-g-t 3/4] tests/intel/kms_big_joiner: revamp kms_big_joiner Kunal Joshi
` (3 subsequent siblings)
5 siblings, 0 replies; 13+ messages in thread
From: Kunal Joshi @ 2024-02-29 18:10 UTC (permalink / raw)
To: igt-dev; +Cc: Kunal Joshi, Karthik B S, Bhanuprakash Modem
add helped to enable/disable force joiner and for
checking current state enabled/disabled
Cc: Karthik B S <karthik.b.s@intel.com>
Cc: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
lib/igt_kms.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
lib/igt_kms.h | 2 ++
2 files changed, 50 insertions(+)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 89956b9d5..e6952f56a 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -6242,6 +6242,54 @@ bool igt_check_bigjoiner_support(igt_display_t *display)
return true;
}
+/**
+ * Checks if the force big joiner is enabled for a specific connector.
+ *
+ * @param drmfd The file descriptor of the DRM device.
+ * @param connector_name The name of the connector.
+ * Returns:
+ * 1 if the force big joiner is enabled, 0 if disabled, and -1 on error.
+ */
+int igt_check_force_bigjoiner_status(int drmfd, char *connector_name)
+{
+ char buf[512];
+ int debugfs_fd, ret;
+
+ debugfs_fd = igt_debugfs_connector_dir(drmfd, connector_name, O_RDONLY);
+ ret = igt_debugfs_simple_read(debugfs_fd, "i915_bigjoiner_force_enable",
+ buf, sizeof(buf));
+ if (ret < 0) {
+ igt_info("Could not read debugfs %s\n",
+ strerror(-ret));
+ return -1;
+ }
+ if (strstr(buf, "Bigjoiner enable: 1"))
+ return 1;
+ else if (strstr(buf, "Bigjoiner enable: 0"))
+ return 0;
+ else
+ return -1;
+}
+
+/**
+ * Forces the enable/disable state of big joiner for a specific connector.
+ *
+ * @param drmfd The file descriptor of the DRM device.
+ * @param connector_name The name of the connector.
+ * @param enable The desired state of big joiner (true for enable, false for disable).
+ * Returns:
+ * >=0 on success, otherwise an error code.
+ */
+int igt_force_bigjoiner_enable(int drmfd, char *connector_name, bool enable)
+{
+ int debugfs_fd, ret;
+
+ debugfs_fd = igt_debugfs_connector_dir(drmfd, connector_name, O_DIRECTORY);
+ ret = igt_sysfs_write(debugfs_fd, "i915_bigjoiner_force_enable", enable ? "1" : "0", 1);
+ close(debugfs_fd);
+ return ret;
+}
+
/**
* igt_parse_mode_string:
* @mode_string: modeline string
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index bab8487d3..b28022db4 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -1215,6 +1215,8 @@ bool igt_bigjoiner_possible(drmModeModeInfo *mode, int max_dotclock);
bool bigjoiner_mode_found(int drm_fd, drmModeConnector *connector,
int max_dotclock);
bool igt_check_bigjoiner_support(igt_display_t *display);
+int igt_check_force_bigjoiner_status(int drmfd, char *connector_name);
+int igt_force_bigjoiner_enable(int drmfd, char *connector_name, bool enable);
bool igt_parse_mode_string(const char *mode_string, drmModeModeInfo *mode);
bool intel_pipe_output_combo_valid(igt_display_t *display);
bool igt_check_output_is_dp_mst(igt_output_t *output);
--
2.25.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH i-g-t 3/4] tests/intel/kms_big_joiner: revamp kms_big_joiner
2024-02-29 18:10 [PATCH i-g-t 0/4] revamp big joiner test Kunal Joshi
2024-02-29 18:10 ` [PATCH i-g-t 1/4] lib/igt_kms: move bigjoiner_mode_found to lib Kunal Joshi
2024-02-29 18:10 ` [PATCH i-g-t 2/4] lib/igt_kms: add helpers to enable/disable force joiner Kunal Joshi
@ 2024-02-29 18:10 ` Kunal Joshi
2024-02-29 18:10 ` [PATCH i-g-t 4/4] tests/intel-ci/fast-feedback: HAX PATCH DO NOT MERGE Kunal Joshi
` (2 subsequent siblings)
5 siblings, 0 replies; 13+ messages in thread
From: Kunal Joshi @ 2024-02-29 18:10 UTC (permalink / raw)
To: igt-dev; +Cc: Kunal Joshi, Karthik B S, Bhanuprakash Modem
big joiner outputs are statically assigned to pipe,
assign dynamically also add support for forcing
joiner, support for forcing joiner was introduced with
below kmd patch
drm/i915: Add bigjoiner force enable option to debugfs
Cc: Karthik B S <karthik.b.s@intel.com>
Cc: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
tests/intel/kms_big_joiner.c | 493 +++++++++++++++++++----------------
1 file changed, 270 insertions(+), 223 deletions(-)
diff --git a/tests/intel/kms_big_joiner.c b/tests/intel/kms_big_joiner.c
index 28678b958..5f5f6f6b4 100644
--- a/tests/intel/kms_big_joiner.c
+++ b/tests/intel/kms_big_joiner.c
@@ -1,27 +1,6 @@
+/* SPDX-License-Identifier: MIT */
/*
- * Copyright © 2020 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Author:
- * Karthik B S <karthik.b.s@intel.com>
+ * Copyright © 2024 Intel Corporation
*/
/**
@@ -37,22 +16,36 @@
#include "igt.h"
/**
- * SUBTEST: invalid-modeset
- * Description: Verify if the modeset on the adjoining pipe is rejected when
- * the pipe is active with a big joiner modeset
- *
* SUBTEST: basic
* Description: Verify the basic modeset on big joiner mode on all pipes
*
- * SUBTEST: 2x-modeset
- * Description: Verify simultaneous modeset on 2 big joiner outputs
+ * SUBTEST: force-joiner-basic
+ * Description: Verify the basic modeset on force joiner mode on all pipes
+ *
+ * SUBTEST: invalid-modeset
+ * Description: Verify the invalid modeset on big joiner mode on all pipes
+ *
+ * SUBTEST: force-joiner-invalid-modeset
+ * Description: Verify the invalid modeset on force joiner mode on all pipes
*/
+IGT_TEST_DESCRIPTION("Test big joiner / force joiner");
-IGT_TEST_DESCRIPTION("Test big joiner");
+#define MAX_OUTPUTS 256
+#define MAX_COMBINATIONS 1000
+#define INVALID_TEST_OUTPUT 2
+typedef struct {
+ int combination[MAX_OUTPUTS];
+} Combination;
-struct bigjoiner_output {
- uint32_t output_id;
- drmModeModeInfo mode;
+enum tests {
+ BASIC,
+ INVALID_MODESET,
+ INVALID,
+};
+
+enum joiner_type {
+ BIG_JOINER = 1 << 1,
+ INVALID_JOINER = -1,
};
typedef struct {
@@ -60,273 +53,327 @@ typedef struct {
igt_display_t display;
struct igt_fb fb;
int n_pipes;
- enum pipe pipe1;
- enum pipe pipe2;
- struct bigjoiner_output output[2];
+ uint64_t big_joiner_outputs[IGT_MAX_PIPES];
+ uint64_t non_big_joiner_outputs[IGT_MAX_PIPES];
+ uint64_t combined_outputs[IGT_MAX_PIPES];
+ int big_joiner_output_count;
+ int non_big_joiner_output_count;
+ int combined_output_count;
+ int output_count;
+ enum pipe pipe_seq[IGT_MAX_PIPES];
} data_t;
static int max_dotclock;
-static void test_invalid_modeset(data_t *data)
+static bool output_supports_force_joiner(igt_output_t *output)
{
- igt_output_t *output;
- igt_display_t *display = &data->display;
- int ret;
+ return output->config.connector->connector_type ==
+ DRM_MODE_CONNECTOR_DisplayPort ||
+ output->config.connector->connector_type ==
+ DRM_MODE_CONNECTOR_eDP;
+}
- igt_info("Bigjoiner test on ");
- for_each_connected_output(display, output){
- enum pipe p = output->pending_pipe;
- drmModeModeInfo *mode;
- igt_pipe_t *pipe;
- igt_plane_t *plane;
+static void generate_combinations(int output_count, int pipe_count,
+ int pipes_per_output,
+ Combination combinations[MAX_COMBINATIONS],
+ uint64_t *num_combinations)
+{
+ int i, index;
+ int current_combination[MAX_OUTPUTS];
- if (p == PIPE_NONE)
- continue;
+ for (i = 0; i < output_count; ++i)
+ current_combination[i] = i * pipes_per_output;
- mode = igt_output_get_mode(output);
- igt_info("pipe:%s, output:%s, mode:", kmstest_pipe_name(p), igt_output_name(output));
- kmstest_dump_mode(mode);
+ while (current_combination[0] <= pipe_count - output_count * pipes_per_output) {
+ for (i = 0; i < output_count; ++i)
+ combinations[*num_combinations].combination[i] = current_combination[i];
- pipe = &display->pipes[p];
- plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
+ (*num_combinations)++;
- igt_plane_set_fb(plane, &data->fb);
- igt_fb_set_size(&data->fb, plane, mode->hdisplay, mode->vdisplay);
- igt_plane_set_size(plane, mode->hdisplay, mode->vdisplay);
- }
+ index = output_count - 1;
+ while (index >= 0 && current_combination[index] == pipe_count - (output_count - index) * pipes_per_output)
+ index--;
- igt_assert(!igt_check_bigjoiner_support(display));
+ if (index < 0)
+ break;
- /* This commit is expectd to fail as this pipe is being used for big joiner */
- ret = igt_display_try_commit_atomic(display, DRM_MODE_ATOMIC_TEST_ONLY |
- DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
+ current_combination[index]++;
+ for (i = index + 1; i < output_count; ++i)
+ current_combination[i] = current_combination[i - 1] + pipes_per_output;
+ }
+}
- igt_display_reset(&data->display);
- igt_display_commit2(display, COMMIT_ATOMIC);
+static igt_output_t *get_output_by_id(data_t *data, uint64_t output_id)
+{
+ igt_output_t *output;
- igt_assert_lt(ret, 0);
+ for_each_connected_output(&data->display, output) {
+ if (output->id == output_id)
+ return output;
+ }
+ igt_assert("Output not found\n");
+ return NULL;
}
-static void test_basic_modeset(data_t *data)
+static void test_invalid_modeset_two_joiner(data_t *data, bool force_joiner,
+ bool combined)
{
+ int i, j, ret;
+ igt_output_t *output;
+ uint64_t *outputs;
+ igt_plane_t *primary[INVALID_TEST_OUTPUT];
+ igt_fb_t fb[INVALID_TEST_OUTPUT];
drmModeModeInfo *mode;
- igt_output_t *output, *bigjoiner_output = NULL;
- igt_display_t *display = &data->display;
- igt_pipe_t *pipe;
- igt_plane_t *plane;
- igt_display_reset(display);
+ outputs = force_joiner ? data->non_big_joiner_outputs :
+ combined ? data->combined_outputs : data->big_joiner_outputs;
- for_each_connected_output(display, output) {
- if (data->output[0].output_id == output->id) {
- bigjoiner_output = output;
- break;
+ igt_display_reset(&data->display);
+ for (i = 0; i < data->n_pipes-1; i++) {
+ for (j = 0; j < INVALID_TEST_OUTPUT; j++) {
+ output = get_output_by_id(data, outputs[j]);
+ igt_assert(output);
+ if (force_joiner) {
+ igt_force_bigjoiner_enable(data->drm_fd, output->name, true);
+ igt_assert(igt_check_force_bigjoiner_status(data->drm_fd, output->name) == 1);
+ }
+ igt_output_set_pipe(output, data->pipe_seq[i + j]);
+ mode = igt_output_get_mode(output);
+ igt_info(" Assigning pipe %s to %s with mode %dx%d@%d%s",
+ kmstest_pipe_name(data->pipe_seq[i + j]),
+ igt_output_name(output), mode->hdisplay,
+ mode->vdisplay, mode->vrefresh,
+ j == INVALID_TEST_OUTPUT - 1 ? "\n" : ", ");
+ primary[j] = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+ igt_create_pattern_fb(data->drm_fd, mode->hdisplay, mode->vdisplay, DRM_FORMAT_XRGB8888,
+ DRM_FORMAT_MOD_LINEAR, &fb[j]);
+ igt_plane_set_fb(primary[j], &fb[j]);
+ }
+ ret = igt_display_try_commit2(&data->display, COMMIT_ATOMIC);
+ igt_assert_f(ret != 0, "Commit shouldn't have passed\n");
+ if (force_joiner) {
+ igt_display_reset(&data->display);
+ for (j = 0; j < INVALID_TEST_OUTPUT; j++) {
+ output = get_output_by_id(data, outputs[j]);
+ igt_assert(output);
+ igt_force_bigjoiner_enable(data->drm_fd, output->name, false);
+ igt_assert(igt_check_force_bigjoiner_status(data->drm_fd, output->name) == 0);
+ }
+ igt_display_commit2(&data->display, COMMIT_ATOMIC);
}
}
-
- igt_output_set_pipe(bigjoiner_output, data->pipe1);
-
- mode = &data->output[0].mode;
- igt_output_override_mode(bigjoiner_output, mode);
-
- pipe = &display->pipes[data->pipe1];
- plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
-
- igt_plane_set_fb(plane, &data->fb);
- igt_fb_set_size(&data->fb, plane, mode->hdisplay, mode->vdisplay);
- igt_plane_set_size(plane, mode->hdisplay, mode->vdisplay);
-
- igt_display_commit2(display, COMMIT_ATOMIC);
-
- igt_output_set_pipe(bigjoiner_output, PIPE_NONE);
- igt_plane_set_fb(plane, NULL);
- igt_display_commit2(display, COMMIT_ATOMIC);
}
-static void test_dual_display(data_t *data)
+static void tets_big_joiner_on_last_pipe(data_t *data, bool force_joiner)
{
+ int i, len, ret;
+ uint64_t *outputs;
+ igt_output_t *output;
+ igt_plane_t *primary;
+ igt_fb_t fb;
drmModeModeInfo *mode;
- igt_output_t *output, *bigjoiner_output[2];
- igt_display_t *display = &data->display;
- igt_pipe_t *pipe;
- igt_plane_t *plane1, *plane2;
- int count = 0;
- igt_display_reset(display);
+ len = force_joiner ? data->non_big_joiner_output_count : data->big_joiner_output_count;
+ outputs = force_joiner ? data->non_big_joiner_outputs : data->big_joiner_outputs;
- for_each_connected_output(display, output) {
- if (data->output[count].output_id == output->id) {
- bigjoiner_output[count] = output;
- count++;
+ for (i = 0; i < len; i++) {
+ igt_display_reset(&data->display);
+ output = get_output_by_id(data, outputs[i]);
+ if (force_joiner) {
+ igt_force_bigjoiner_enable(data->drm_fd, output->name, true);
+ igt_assert(igt_check_force_bigjoiner_status(data->drm_fd, output->name) == 1);
}
-
- if (count > 1)
- break;
+ igt_output_set_pipe(output, data->pipe_seq[data->n_pipes - 1]);
+ mode = igt_output_get_mode(output);
+ igt_info(" Assigning pipe %s to %s with mode %dx%d@%d\n",
+ kmstest_pipe_name(data->pipe_seq[data->n_pipes - 1]),
+ igt_output_name(output), mode->hdisplay,
+ mode->vdisplay, mode->vrefresh);
+ primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+ igt_create_pattern_fb(data->drm_fd, mode->hdisplay, mode->vdisplay, DRM_FORMAT_XRGB8888,
+ DRM_FORMAT_MOD_LINEAR, &fb);
+ igt_plane_set_fb(primary, &fb);
+ ret = igt_display_try_commit2(&data->display, COMMIT_ATOMIC);
+ igt_assert_f(ret != 0, "Commit shouldn't have passed\n");
}
+ if (force_joiner) {
+ for (i = 0; i < len; i++) {
+ output = get_output_by_id(data, outputs[i]);
+ igt_force_bigjoiner_enable(data->drm_fd, output->name, false);
+ }
+ igt_display_commit2(&data->display, COMMIT_ATOMIC);
+ }
+}
- igt_output_set_pipe(bigjoiner_output[0], data->pipe1);
- igt_output_set_pipe(bigjoiner_output[1], data->pipe2);
-
- /* Set up first big joiner output on Pipe A*/
- mode = &data->output[0].mode;
- igt_output_override_mode(bigjoiner_output[0], mode);
-
- pipe = &display->pipes[data->pipe1];
- plane1 = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
-
- igt_plane_set_fb(plane1, &data->fb);
- igt_fb_set_size(&data->fb, plane1, mode->hdisplay, mode->vdisplay);
- igt_plane_set_size(plane1, mode->hdisplay, mode->vdisplay);
-
- /* Set up second big joiner output on Pipe C*/
- mode = &data->output[1].mode;
- igt_output_override_mode(bigjoiner_output[1], mode);
-
- pipe = &display->pipes[data->pipe2];
- plane2 = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
-
- igt_plane_set_fb(plane2, &data->fb);
- igt_fb_set_size(&data->fb, plane2, mode->hdisplay, mode->vdisplay);
- igt_plane_set_size(plane2, mode->hdisplay, mode->vdisplay);
-
- igt_display_commit2(display, COMMIT_ATOMIC);
+static void test_basic_modeset(data_t *data, int num_outputs,
+ Combination combinations[MAX_COMBINATIONS],
+ uint64_t num_combinations, bool force_joiner)
+{
+ int i, j, ret;
+ igt_display_t *display = &data->display;
+ igt_output_t *output[num_outputs];
+ igt_plane_t *primary[num_outputs];
+ igt_fb_t fb[num_outputs];
+ drmModeModeInfo *mode;
- /* Clean up */
- igt_output_set_pipe(bigjoiner_output[0], PIPE_NONE);
- igt_output_set_pipe(bigjoiner_output[1], PIPE_NONE);
- igt_plane_set_fb(plane1, NULL);
- igt_plane_set_fb(plane2, NULL);
- igt_display_commit2(display, COMMIT_ATOMIC);
+ for (i = 0; i < num_combinations; i++) {
+ igt_display_reset(display);
+ for (j = 0; j < num_outputs; j++) {
+ output[j] = get_output_by_id(data,
+ force_joiner ?
+ data->non_big_joiner_outputs[j] :
+ data->big_joiner_outputs[j]);
+ if (force_joiner) {
+ igt_force_bigjoiner_enable(data->drm_fd,
+ output[j]->name, true);
+ igt_assert(igt_check_force_bigjoiner_status(data->drm_fd,
+ output[j]->name) == 1);
+ }
+ igt_info("Assigning pipe %d to %s%s",
+ data->pipe_seq[combinations[i].combination[j]],
+ output[j]->name, j == num_outputs - 1 ? "\n" : ", ");
+ igt_output_set_pipe(output[j], data->pipe_seq[combinations[i].combination[j]]);
+ primary[j] = igt_output_get_plane_type(output[j], DRM_PLANE_TYPE_PRIMARY);
+ mode = igt_output_get_mode(output[j]);
+ igt_create_pattern_fb(data->drm_fd, mode->hdisplay, mode->vdisplay, DRM_FORMAT_XRGB8888,
+ DRM_FORMAT_MOD_LINEAR, &fb[j]);
+ igt_plane_set_fb(primary[j], &fb[j]);
+ }
+ ret = igt_display_try_commit2(display, COMMIT_ATOMIC);
+ if (ret == 0)
+ igt_display_commit2(display, COMMIT_ATOMIC);
+ else
+ igt_assert_f(ret == 0, "Commit failed\n");
+
+ if (force_joiner) {
+ for (j = 0; j < num_outputs; j++) {
+ igt_display_reset(display);
+ igt_force_bigjoiner_enable(data->drm_fd, output[j]->name, false);
+ igt_assert(igt_check_force_bigjoiner_status(data->drm_fd, output[j]->name) == 0);
+ igt_display_commit2(&data->display, COMMIT_ATOMIC);
+ }
+ }
+ }
}
igt_main
{
+ int i, j;
data_t data;
igt_output_t *output;
- drmModeModeInfo mode;
- int valid_output = 0, i, count = 0, j = 0;
- uint16_t width = 0, height = 0;
- enum pipe pipe_seq[IGT_MAX_PIPES];
+ i = j = 0;
igt_fixture {
data.drm_fd = drm_open_driver_master(DRIVER_INTEL | DRIVER_XE);
kmstest_set_vt_graphics_mode();
-
igt_display_require(&data.display, data.drm_fd);
igt_require(data.display.is_atomic);
-
max_dotclock = igt_get_max_dotclock(data.drm_fd);
+ data.big_joiner_output_count = 0;
+ data.non_big_joiner_output_count = 0;
+ data.combined_output_count = 0;
+ data.output_count = 0;
for_each_connected_output(&data.display, output) {
bool found = false;
drmModeConnector *connector = output->config.connector;
-
- /*
- * Bigjoiner will come in to the picture when the
- * resolution > 5K or clock > max-dot-clock.
- */
found = bigjoiner_mode_found(data.drm_fd, connector, max_dotclock);
-
if (found) {
- data.output[count].output_id = output->id;
- memcpy(&data.output[count].mode, &mode, sizeof(drmModeModeInfo));
- count++;
-
- width = max(width, mode.hdisplay);
- height = max(height, mode.vdisplay);
+ data.big_joiner_outputs[data.big_joiner_output_count++] = output->id;
+ igt_output_override_mode(output, &connector->modes[0]);
+ } else {
+ if (output_supports_force_joiner(output)) {
+ data.non_big_joiner_outputs[data.non_big_joiner_output_count++] = output->id;
+ igt_sort_connector_modes(connector, sort_drm_modes_by_res_dsc);
+ igt_output_override_mode(output, &connector->modes[0]);
+ }
}
- valid_output++;
+ data.output_count++;
}
data.n_pipes = 0;
for_each_pipe(&data.display, i) {
data.n_pipes++;
- pipe_seq[j] = i;
+ data.pipe_seq[j] = i;
j++;
}
-
- igt_require_f(count > 0, "No output with 5k+ mode (or) clock > max-dot-clock found\n");
-
- igt_create_pattern_fb(data.drm_fd, width, height, DRM_FORMAT_XRGB8888,
- DRM_FORMAT_MOD_LINEAR, &data.fb);
}
igt_describe("Verify the basic modeset on big joiner mode on all pipes");
igt_subtest_with_dynamic("basic") {
- for (i = 0; i < data.n_pipes - 1; i++) {
- data.pipe1 = pipe_seq[i];
- igt_dynamic_f("pipe-%s", kmstest_pipe_name(pipe_seq[i]))
- test_basic_modeset(&data);
+ igt_require_f(data.big_joiner_output_count > 0, "Big joiner output not found\n");
+ igt_require_f(data.n_pipes > 1, "Minimum of 2 pipes are required\n");
+
+ for (i = 0; i < data.big_joiner_output_count; i++) {
+ uint64_t num_combinations = 0;
+ Combination combinations[MAX_COMBINATIONS];
+
+ generate_combinations(i+1, data.n_pipes, BIG_JOINER, combinations, &num_combinations);
+ igt_info("Number of combinations for %d outputs and %d pipes are %ld\n",
+ i+1, data.n_pipes, num_combinations);
+
+ if (num_combinations > 0)
+ igt_dynamic_f("%dx-big-joiner", i+1)
+ test_basic_modeset(&data, i+1, combinations, num_combinations, false);
+ else
+ break;
}
}
- igt_describe("Verify if the modeset on the adjoining pipe is rejected "
- "when the pipe is active with a big joiner modeset");
- igt_subtest_with_dynamic("invalid-modeset") {
- data.pipe1 = pipe_seq[j - 1];
-
- igt_display_reset(&data.display);
- for_each_connected_output(&data.display, output) {
- if (data.output[0].output_id != output->id)
- continue;
-
- mode = data.output[0].mode;
- igt_output_set_pipe(output, data.pipe1);
- igt_output_override_mode(output, &mode);
-
- igt_dynamic_f("pipe-%s-%s",
- kmstest_pipe_name(data.pipe1),
- igt_output_name(output))
- test_invalid_modeset(&data);
+ igt_describe("Verify the basic modeset on big joiner mode on all pipes");
+ igt_subtest_with_dynamic("force-joiner-basic") {
+ igt_require_f(data.non_big_joiner_output_count > 0, "Big joiner output not found\n");
+ igt_require_f(data.n_pipes > 1, "Minimum of 2 pipes are required\n");
+
+ for (i = 0; i < data.non_big_joiner_output_count; i++) {
+ uint64_t num_combinations = 0;
+ Combination combinations[MAX_COMBINATIONS];
+
+ generate_combinations(i+1, data.n_pipes, BIG_JOINER, combinations, &num_combinations);
+ igt_info("Number of combinations for %d outputs and %d pipes are %ld\n",
+ i+1, data.n_pipes, num_combinations);
+
+ if (num_combinations > 0)
+ igt_dynamic_f("%dx-joiner", i+1)
+ test_basic_modeset(&data, i+1, combinations, num_combinations, true);
+ else
+ break;
}
+ }
- if(valid_output > 1) {
- for (i = 0; i < data.n_pipes - 1; i++) {
- igt_output_t *first_output = NULL, *second_output = NULL;
-
- data.pipe1 = pipe_seq[i];
- data.pipe2 = pipe_seq[i + 1];
-
- igt_display_reset(&data.display);
- for_each_connected_output(&data.display, output) {
- if (data.output[0].output_id == output->id) {
- first_output = output;
- mode = data.output[0].mode;
+ igt_subtest_with_dynamic("invalid-modeset") {
+ igt_require_f(data.big_joiner_output_count > 0, "Big joiner output not found\n");
+ igt_require_f(data.n_pipes > 1, "Minimum of 2 pipes are required\n");
- igt_output_set_pipe(output, data.pipe1);
- igt_output_override_mode(output, &mode);
- } else if (second_output == NULL) {
- second_output = output;
- igt_output_set_pipe(output, data.pipe2);
+ if (data.big_joiner_output_count >= 1)
+ igt_dynamic_f("big_joiner_on_last_pipe")
+ tets_big_joiner_on_last_pipe(&data, false);
- break;
- }
- }
+ if (data.big_joiner_output_count > 1)
+ igt_dynamic_f("invalid_combinations")
+ test_invalid_modeset_two_joiner(&data, false, false);
- igt_dynamic_f("pipe-%s-%s-pipe-%s-%s",
- kmstest_pipe_name(data.pipe1),
- igt_output_name(first_output),
- kmstest_pipe_name(data.pipe2),
- igt_output_name(second_output))
- test_invalid_modeset(&data);
- }
+ if (data.big_joiner_output_count == 1 && data.non_big_joiner_output_count > 0) {
+ data.combined_outputs[data.combined_output_count++] = data.big_joiner_outputs[0];
+ data.combined_outputs[data.combined_output_count++] = data.non_big_joiner_outputs[0];
+ test_invalid_modeset_two_joiner(&data, false, true);
}
}
- igt_describe("Verify simultaneous modeset on 2 big joiner outputs");
- igt_subtest_with_dynamic("2x-modeset") {
- igt_require_f(count > 1, "2 outputs with big joiner modes are required\n");
- igt_require_f(data.n_pipes > 3, "Minumum of 4 pipes are required\n");
- for (i = 0; (i + 2) < data.n_pipes - 1; i++) {
- data.pipe1 = pipe_seq[i];
- data.pipe2 = pipe_seq[i + 2];
- igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe_seq[i]), kmstest_pipe_name(pipe_seq[i + 2]))
- test_dual_display(&data);
- }
+ igt_subtest_with_dynamic("force-joiner-invalid-modeset") {
+ igt_require_f(data.non_big_joiner_output_count > 0, "Non big joiner output not found\n");
+ igt_require_f(data.n_pipes > 1, "Minimum of 2 pipes are required\n");
+
+ if (data.non_big_joiner_output_count >= 1)
+ igt_dynamic_f("big_joiner_on_last_pipe")
+ tets_big_joiner_on_last_pipe(&data, true);
+
+ if (data.non_big_joiner_output_count > 1)
+ igt_dynamic_f("invalid_combinations")
+ test_invalid_modeset_two_joiner(&data, true, false);
}
igt_fixture {
- igt_remove_fb(data.drm_fd, &data.fb);
igt_display_fini(&data.display);
drm_close_driver(data.drm_fd);
}
--
2.25.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH i-g-t 4/4] tests/intel-ci/fast-feedback: HAX PATCH DO NOT MERGE
2024-02-29 18:10 [PATCH i-g-t 0/4] revamp big joiner test Kunal Joshi
` (2 preceding siblings ...)
2024-02-29 18:10 ` [PATCH i-g-t 3/4] tests/intel/kms_big_joiner: revamp kms_big_joiner Kunal Joshi
@ 2024-02-29 18:10 ` Kunal Joshi
2024-02-29 18:26 ` ✓ CI.xeBAT: success for revamp big joiner test Patchwork
2024-02-29 18:40 ` ✗ Fi.CI.BAT: failure " Patchwork
5 siblings, 0 replies; 13+ messages in thread
From: Kunal Joshi @ 2024-02-29 18:10 UTC (permalink / raw)
To: igt-dev; +Cc: Kunal Joshi
Just for testing
Do not merge
Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
tests/intel-ci/fast-feedback.testlist | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/tests/intel-ci/fast-feedback.testlist b/tests/intel-ci/fast-feedback.testlist
index be0965110..06863f1a2 100644
--- a/tests/intel-ci/fast-feedback.testlist
+++ b/tests/intel-ci/fast-feedback.testlist
@@ -1,6 +1,11 @@
# Try to load the driver if it's not available yet.
igt@i915_module_load@load
+#HAX PATCH DO NOT MERGE
+igt@kms_big_joiner@basic
+igt@kms_big_joiner@force-joiner-basic
+igt@kms_big_joiner@invalid-modeset
+igt@kms_big_joiner@force-joiner-invalid-modeset
# Keep alphabetically sorted by default
igt@core_auth@basic-auth
igt@debugfs_test@read_all_entries
--
2.25.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* ✓ CI.xeBAT: success for revamp big joiner test
2024-02-29 18:10 [PATCH i-g-t 0/4] revamp big joiner test Kunal Joshi
` (3 preceding siblings ...)
2024-02-29 18:10 ` [PATCH i-g-t 4/4] tests/intel-ci/fast-feedback: HAX PATCH DO NOT MERGE Kunal Joshi
@ 2024-02-29 18:26 ` Patchwork
2024-02-29 18:40 ` ✗ Fi.CI.BAT: failure " Patchwork
5 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2024-02-29 18:26 UTC (permalink / raw)
To: Kunal Joshi; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 951 bytes --]
== Series Details ==
Series: revamp big joiner test
URL : https://patchwork.freedesktop.org/series/130572/
State : success
== Summary ==
CI Bug Log - changes from XEIGT_7738_BAT -> XEIGTPW_10758_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (4 -> 4)
------------------------------
No changes in participating hosts
Changes
-------
No changes found
Build changes
-------------
* IGT: IGT_7738 -> IGTPW_10758
* Linux: xe-876-12db124b8cef9c32b7bc69a5abbaff016965cf99 -> xe-878-68e66ae04f6f2718699716285e8ddb09a469af35
IGTPW_10758: 10758
IGT_7738: 7738
xe-876-12db124b8cef9c32b7bc69a5abbaff016965cf99: 12db124b8cef9c32b7bc69a5abbaff016965cf99
xe-878-68e66ae04f6f2718699716285e8ddb09a469af35: 68e66ae04f6f2718699716285e8ddb09a469af35
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10758/index.html
[-- Attachment #2: Type: text/html, Size: 1510 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* ✗ Fi.CI.BAT: failure for revamp big joiner test
2024-02-29 18:10 [PATCH i-g-t 0/4] revamp big joiner test Kunal Joshi
` (4 preceding siblings ...)
2024-02-29 18:26 ` ✓ CI.xeBAT: success for revamp big joiner test Patchwork
@ 2024-02-29 18:40 ` Patchwork
5 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2024-02-29 18:40 UTC (permalink / raw)
To: Kunal Joshi; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 17843 bytes --]
== Series Details ==
Series: revamp big joiner test
URL : https://patchwork.freedesktop.org/series/130572/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_14368 -> IGTPW_10758
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with IGTPW_10758 absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_10758, 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_10758/index.html
Participating hosts (43 -> 41)
------------------------------
Missing (2): bat-arls-2 fi-snb-2520m
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in IGTPW_10758:
### IGT changes ###
#### Possible regressions ####
* igt@kms_big_joiner@basic:
- bat-dg1-7: NOTRUN -> [SKIP][1] +3 other tests skip
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-dg1-7/igt@kms_big_joiner@basic.html
- bat-adlp-9: NOTRUN -> [SKIP][2] +1 other test skip
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-adlp-9/igt@kms_big_joiner@basic.html
- bat-rplp-1: NOTRUN -> [SKIP][3] +1 other test skip
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-rplp-1/igt@kms_big_joiner@basic.html
- bat-dg2-9: NOTRUN -> [SKIP][4] +1 other test skip
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-dg2-9/igt@kms_big_joiner@basic.html
- bat-adln-1: NOTRUN -> [SKIP][5] +1 other test skip
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-adln-1/igt@kms_big_joiner@basic.html
- bat-adlp-6: NOTRUN -> [SKIP][6] +1 other test skip
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-adlp-6/igt@kms_big_joiner@basic.html
- bat-dg2-11: NOTRUN -> [SKIP][7] +3 other tests skip
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-dg2-11/igt@kms_big_joiner@basic.html
- bat-dg2-14: NOTRUN -> [SKIP][8] +3 other tests skip
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-dg2-14/igt@kms_big_joiner@basic.html
* {igt@kms_big_joiner@force-joiner-basic@1x-joiner} (NEW):
- bat-dg2-9: NOTRUN -> [FAIL][9]
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-dg2-9/igt@kms_big_joiner@force-joiner-basic@1x-joiner.html
- {bat-arls-4}: NOTRUN -> [FAIL][10]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-arls-4/igt@kms_big_joiner@force-joiner-basic@1x-joiner.html
- bat-adlp-6: NOTRUN -> [FAIL][11]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-adlp-6/igt@kms_big_joiner@force-joiner-basic@1x-joiner.html
- fi-skl-6600u: NOTRUN -> [FAIL][12] +1 other test fail
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-skl-6600u/igt@kms_big_joiner@force-joiner-basic@1x-joiner.html
- {bat-rpls-3}: NOTRUN -> [FAIL][13]
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-rpls-3/igt@kms_big_joiner@force-joiner-basic@1x-joiner.html
- fi-apl-guc: NOTRUN -> [FAIL][14] +1 other test fail
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-apl-guc/igt@kms_big_joiner@force-joiner-basic@1x-joiner.html
- bat-dg2-8: NOTRUN -> [FAIL][15]
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-dg2-8/igt@kms_big_joiner@force-joiner-basic@1x-joiner.html
- bat-arls-3: NOTRUN -> [FAIL][16]
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-arls-3/igt@kms_big_joiner@force-joiner-basic@1x-joiner.html
- bat-mtlp-8: NOTRUN -> [FAIL][17]
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-mtlp-8/igt@kms_big_joiner@force-joiner-basic@1x-joiner.html
- {bat-adls-6}: NOTRUN -> [FAIL][18]
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-adls-6/igt@kms_big_joiner@force-joiner-basic@1x-joiner.html
- bat-adlp-9: NOTRUN -> [FAIL][19]
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-adlp-9/igt@kms_big_joiner@force-joiner-basic@1x-joiner.html
- bat-adln-1: NOTRUN -> [DMESG-FAIL][20]
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-adln-1/igt@kms_big_joiner@force-joiner-basic@1x-joiner.html
- bat-rplp-1: NOTRUN -> [FAIL][21]
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-rplp-1/igt@kms_big_joiner@force-joiner-basic@1x-joiner.html
* {igt@kms_big_joiner@force-joiner-invalid-modeset} (NEW):
- fi-rkl-11600: NOTRUN -> [SKIP][22] +3 other tests skip
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-rkl-11600/igt@kms_big_joiner@force-joiner-invalid-modeset.html
- fi-tgl-1115g4: NOTRUN -> [SKIP][23] +3 other tests skip
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-tgl-1115g4/igt@kms_big_joiner@force-joiner-invalid-modeset.html
- bat-mtlp-6: NOTRUN -> [SKIP][24] +1 other test skip
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-mtlp-6/igt@kms_big_joiner@force-joiner-invalid-modeset.html
- {bat-rpls-3}: NOTRUN -> [SKIP][25]
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-rpls-3/igt@kms_big_joiner@force-joiner-invalid-modeset.html
- {bat-adls-6}: NOTRUN -> [SKIP][26]
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-adls-6/igt@kms_big_joiner@force-joiner-invalid-modeset.html
* {igt@kms_big_joiner@force-joiner-invalid-modeset@big_joiner_on_last_pipe} (NEW):
- fi-skl-guc: NOTRUN -> [FAIL][27] +1 other test fail
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-skl-guc/igt@kms_big_joiner@force-joiner-invalid-modeset@big_joiner_on_last_pipe.html
- bat-jsl-3: NOTRUN -> [FAIL][28] +1 other test fail
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-jsl-3/igt@kms_big_joiner@force-joiner-invalid-modeset@big_joiner_on_last_pipe.html
- bat-jsl-1: NOTRUN -> [FAIL][29] +1 other test fail
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-jsl-1/igt@kms_big_joiner@force-joiner-invalid-modeset@big_joiner_on_last_pipe.html
- fi-kbl-7567u: NOTRUN -> [FAIL][30] +1 other test fail
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-kbl-7567u/igt@kms_big_joiner@force-joiner-invalid-modeset@big_joiner_on_last_pipe.html
* {igt@kms_big_joiner@force-joiner-invalid-modeset@invalid_combinations} (NEW):
- fi-cfl-8109u: NOTRUN -> [FAIL][31] +2 other tests fail
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-cfl-8109u/igt@kms_big_joiner@force-joiner-invalid-modeset@invalid_combinations.html
* igt@kms_big_joiner@invalid-modeset:
- bat-jsl-3: NOTRUN -> [SKIP][32] +1 other test skip
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-jsl-3/igt@kms_big_joiner@invalid-modeset.html
- bat-mtlp-8: NOTRUN -> [SKIP][33] +1 other test skip
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-mtlp-8/igt@kms_big_joiner@invalid-modeset.html
- bat-dg2-8: NOTRUN -> [SKIP][34] +1 other test skip
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-dg2-8/igt@kms_big_joiner@invalid-modeset.html
- bat-adlm-1: NOTRUN -> [SKIP][35] +3 other tests skip
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-adlm-1/igt@kms_big_joiner@invalid-modeset.html
- bat-jsl-1: NOTRUN -> [SKIP][36] +1 other test skip
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-jsl-1/igt@kms_big_joiner@invalid-modeset.html
- bat-arls-1: NOTRUN -> [SKIP][37] +3 other tests skip
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-arls-1/igt@kms_big_joiner@invalid-modeset.html
- bat-arls-3: NOTRUN -> [SKIP][38] +1 other test skip
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-arls-3/igt@kms_big_joiner@invalid-modeset.html
#### Suppressed ####
The following results come from untrusted machines, tests, or statuses.
They do not affect the overall result.
* igt@kms_big_joiner@basic:
- {bat-arls-4}: NOTRUN -> [SKIP][39] +1 other test skip
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-arls-4/igt@kms_big_joiner@basic.html
* igt@kms_big_joiner@invalid-modeset:
- {bat-adls-6}: NOTRUN -> [SKIP][40] +1 other test skip
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-adls-6/igt@kms_big_joiner@invalid-modeset.html
* igt@kms_busy@basic:
- {bat-rpls-3}: NOTRUN -> [SKIP][41] +2 other tests skip
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-rpls-3/igt@kms_busy@basic.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
- {bat-rpls-3}: [SKIP][42] ([i915#4103]) -> [SKIP][43] +1 other test skip
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14368/bat-rpls-3/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-rpls-3/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
* igt@kms_cursor_legacy@basic-flip-after-cursor-legacy:
- {bat-rpls-3}: [PASS][44] -> [SKIP][45] +5 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14368/bat-rpls-3/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-rpls-3/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html
* igt@kms_dsc@dsc-basic:
- {bat-rpls-3}: [SKIP][46] ([i915#3555] / [i915#3840] / [i915#9886]) -> [SKIP][47]
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14368/bat-rpls-3/igt@kms_dsc@dsc-basic.html
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-rpls-3/igt@kms_dsc@dsc-basic.html
New tests
---------
New tests have been introduced between CI_DRM_14368 and IGTPW_10758:
### New IGT tests (5) ###
* igt@kms_big_joiner@force-joiner-basic:
- Statuses : 22 skip(s)
- Exec time: [0.0] s
* igt@kms_big_joiner@force-joiner-basic@1x-joiner:
- Statuses : 1 dmesg-fail(s) 17 fail(s)
- Exec time: [0.01, 2.81] s
* igt@kms_big_joiner@force-joiner-invalid-modeset:
- Statuses : 24 skip(s)
- Exec time: [0.0] s
* igt@kms_big_joiner@force-joiner-invalid-modeset@big_joiner_on_last_pipe:
- Statuses : 7 fail(s) 9 pass(s)
- Exec time: [0.01, 1.33] s
* igt@kms_big_joiner@force-joiner-invalid-modeset@invalid_combinations:
- Statuses : 1 fail(s)
- Exec time: [0.01] s
Known issues
------------
Here are the changes found in IGTPW_10758 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_lmem_swapping@basic:
- fi-apl-guc: NOTRUN -> [SKIP][48] ([fdo#109271] / [i915#4613]) +3 other tests skip
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-apl-guc/igt@gem_lmem_swapping@basic.html
* igt@kms_big_joiner@basic:
- fi-pnv-d510: NOTRUN -> [SKIP][49] ([fdo#109271]) +3 other tests skip
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-pnv-d510/igt@kms_big_joiner@basic.html
- fi-glk-j4005: NOTRUN -> [SKIP][50] ([fdo#109271]) +3 other tests skip
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-glk-j4005/igt@kms_big_joiner@basic.html
- fi-kbl-7567u: NOTRUN -> [SKIP][51] ([fdo#109271]) +1 other test skip
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-kbl-7567u/igt@kms_big_joiner@basic.html
- fi-cfl-guc: NOTRUN -> [SKIP][52] ([fdo#109271]) +3 other tests skip
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-cfl-guc/igt@kms_big_joiner@basic.html
- fi-kbl-x1275: NOTRUN -> [SKIP][53] ([fdo#109271]) +3 other tests skip
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-kbl-x1275/igt@kms_big_joiner@basic.html
- fi-cfl-8109u: NOTRUN -> [SKIP][54] ([fdo#109271]) +1 other test skip
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-cfl-8109u/igt@kms_big_joiner@basic.html
- fi-ilk-650: NOTRUN -> [SKIP][55] ([fdo#109271]) +3 other tests skip
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-ilk-650/igt@kms_big_joiner@basic.html
- fi-blb-e6850: NOTRUN -> [SKIP][56] ([fdo#109271]) +3 other tests skip
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-blb-e6850/igt@kms_big_joiner@basic.html
- bat-mtlp-6: NOTRUN -> [SKIP][57] ([i915#9792]) +1 other test skip
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-mtlp-6/igt@kms_big_joiner@basic.html
- fi-skl-6600u: NOTRUN -> [SKIP][58] ([fdo#109271]) +1 other test skip
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-skl-6600u/igt@kms_big_joiner@basic.html
- fi-skl-guc: NOTRUN -> [SKIP][59] ([fdo#109271]) +1 other test skip
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-skl-guc/igt@kms_big_joiner@basic.html
- fi-cfl-8700k: NOTRUN -> [SKIP][60] ([fdo#109271]) +3 other tests skip
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-cfl-8700k/igt@kms_big_joiner@basic.html
- fi-bsw-nick: NOTRUN -> [SKIP][61] ([fdo#109271]) +3 other tests skip
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-bsw-nick/igt@kms_big_joiner@basic.html
- bat-kbl-2: NOTRUN -> [SKIP][62] ([fdo#109271]) +3 other tests skip
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-kbl-2/igt@kms_big_joiner@basic.html
* igt@kms_big_joiner@invalid-modeset:
- bat-atsm-1: NOTRUN -> [SKIP][63] ([i915#6078]) +3 other tests skip
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-atsm-1/igt@kms_big_joiner@invalid-modeset.html
- fi-ivb-3770: NOTRUN -> [SKIP][64] ([fdo#109271]) +3 other tests skip
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-ivb-3770/igt@kms_big_joiner@invalid-modeset.html
- fi-elk-e7500: NOTRUN -> [SKIP][65] ([fdo#109271]) +3 other tests skip
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-elk-e7500/igt@kms_big_joiner@invalid-modeset.html
- fi-kbl-guc: NOTRUN -> [SKIP][66] ([fdo#109271]) +3 other tests skip
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-kbl-guc/igt@kms_big_joiner@invalid-modeset.html
- fi-bsw-n3050: NOTRUN -> [SKIP][67] ([fdo#109271]) +3 other tests skip
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-bsw-n3050/igt@kms_big_joiner@invalid-modeset.html
* igt@kms_hdmi_inject@inject-audio:
- fi-apl-guc: NOTRUN -> [SKIP][68] ([fdo#109271]) +19 other tests skip
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/fi-apl-guc/igt@kms_hdmi_inject@inject-audio.html
* igt@kms_pipe_crc_basic@nonblocking-crc:
- bat-dg2-11: NOTRUN -> [SKIP][69] ([i915#9197])
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc.html
#### Possible fixes ####
* igt@i915_selftest@live@hangcheck:
- {bat-rpls-3}: [DMESG-WARN][70] ([i915#5591]) -> [PASS][71]
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14368/bat-rpls-3/igt@i915_selftest@live@hangcheck.html
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-rpls-3/igt@i915_selftest@live@hangcheck.html
- bat-dg2-14: [INCOMPLETE][72] ([i915#10137]) -> [PASS][73]
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14368/bat-dg2-14/igt@i915_selftest@live@hangcheck.html
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/bat-dg2-14/igt@i915_selftest@live@hangcheck.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
[i915#10137]: https://gitlab.freedesktop.org/drm/intel/issues/10137
[i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
[i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
[i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
[i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
[i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840
[i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
[i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
[i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
[i915#5591]: https://gitlab.freedesktop.org/drm/intel/issues/5591
[i915#6078]: https://gitlab.freedesktop.org/drm/intel/issues/6078
[i915#9197]: https://gitlab.freedesktop.org/drm/intel/issues/9197
[i915#9792]: https://gitlab.freedesktop.org/drm/intel/issues/9792
[i915#9886]: https://gitlab.freedesktop.org/drm/intel/issues/9886
[i915#9920]: https://gitlab.freedesktop.org/drm/intel/issues/9920
Build changes
-------------
* CI: CI-20190529 -> None
* IGT: IGT_7738 -> IGTPW_10758
CI-20190529: 20190529
CI_DRM_14368: 68e66ae04f6f2718699716285e8ddb09a469af35 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_10758: 10758
IGT_7738: 7738
Testlist changes
----------------
+igt@kms_big_joiner@force-joiner-basic
+igt@kms_big_joiner@force-joiner-invalid-modeset
-igt@kms_big_joiner@2x-modeset
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10758/index.html
[-- Attachment #2: Type: text/html, Size: 20112 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH i-g-t 0/4] revamp big joiner test
@ 2024-03-01 8:25 Kunal Joshi
0 siblings, 0 replies; 13+ messages in thread
From: Kunal Joshi @ 2024-03-01 8:25 UTC (permalink / raw)
To: igt-dev; +Cc: Kunal Joshi
big joiner outputs are statically assigned to pipe,
assign dynamically also add support for forcing
joiner, support for forcing joiner was introduced with
below kmd patch
drm/i915: Add bigjoiner force enable option to debugfs
Kunal Joshi (3):
lib/igt_kms: move bigjoiner_mode_found to lib
lib/igt_kms: add helpers to enable/disable force joiner
tests/intel/kms_big_joiner: revamp kms_big_joiner
tests/intel-ci/fast-feedback: HAX PATCH DO NOT MERGE
lib/igt_kms.c | 73 ++++
lib/igt_kms.h | 4 +
tests/intel-ci/fast-feedback.testlist | 5 +
tests/intel/kms_big_joiner.c | 507 ++++++++++++++------------
4 files changed, 355 insertions(+), 234 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH i-g-t 0/4] revamp big joiner test
@ 2024-03-03 17:22 Kunal Joshi
0 siblings, 0 replies; 13+ messages in thread
From: Kunal Joshi @ 2024-03-03 17:22 UTC (permalink / raw)
To: igt-dev; +Cc: Kunal Joshi
big joiner outputs are statically assigned to pipe,
assign dynamically also add support for forcing
joiner, support for forcing joiner was introduced with
below kmd patch
drm/i915: Add bigjoiner force enable option to debugfs
Kunal Joshi (4):
lib/igt_kms: move bigjoiner_mode_found to lib
lib/igt_kms: add helpers to enable/disable force joiner
tests/intel/kms_big_joiner: revamp kms_big_joiner
tests/intel-ci/fast-feedback: HAX PATCH DO NOT MERGE
lib/igt_kms.c | 73 ++++
lib/igt_kms.h | 4 +
tests/intel-ci/fast-feedback.testlist | 5 +
tests/intel/kms_big_joiner.c | 504 ++++++++++++++------------
4 files changed, 351 insertions(+), 235 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH i-g-t 0/4] revamp big joiner test
@ 2024-03-10 14:27 Kunal Joshi
0 siblings, 0 replies; 13+ messages in thread
From: Kunal Joshi @ 2024-03-10 14:27 UTC (permalink / raw)
To: igt-dev; +Cc: Kunal Joshi
modify test to support multiple big joiner outputs
simultaneously, support for ignoring fused pipes and
addition of subtests for testing force joiner support for
which is added by below in kmd.
drm/i915: Add bigjoiner force enable option to debugfs
Kunal Joshi (4):
lib/igt_kms: move bigjoiner_mode_found to lib
tests/intel/kms_big_joiner: revamp bigjoiner
lib/igt_kms: add helper to enable/disable force joiner
tests/intel/kms_big_joiner: add tests for force joiner
lib/igt_kms.c | 84 +++++++
lib/igt_kms.h | 4 +
tests/intel/kms_big_joiner.c | 467 +++++++++++++++++++----------------
3 files changed, 346 insertions(+), 209 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH i-g-t 0/4] revamp big joiner test
@ 2024-03-21 18:28 Kunal Joshi
0 siblings, 0 replies; 13+ messages in thread
From: Kunal Joshi @ 2024-03-21 18:28 UTC (permalink / raw)
To: igt-dev; +Cc: Kunal Joshi
modify test to support multiple big joiner outputs
simultaneously, support for ignoring fused pipes and
addition of subtests for testing force joiner support for
which is added by below in kmd.
drm/i915: Add bigjoiner force enable option to debugfs
Kunal Joshi (4):
lib/igt_kms: move bigjoiner_mode_found to lib
tests/intel/kms_big_joiner: revamp bigjoiner
lib/igt_kms: add helper to enable/disable force joiner
tests/intel/kms_big_joiner: add tests for force joiner
lib/igt_kms.c | 79 ++++++
lib/igt_kms.h | 4 +
tests/intel/kms_big_joiner.c | 486 ++++++++++++++++++++---------------
3 files changed, 366 insertions(+), 203 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH i-g-t 0/4] revamp big joiner test
@ 2024-03-25 16:51 Kunal Joshi
0 siblings, 0 replies; 13+ messages in thread
From: Kunal Joshi @ 2024-03-25 16:51 UTC (permalink / raw)
To: igt-dev; +Cc: Pranay Samala
From: Pranay Samala <pranay.samala@intel.com>
modify test to support multiple big joiner outputs
simultaneously, support for ignoring fused pipes and
addition of subtests for testing force joiner support for
which is added by below in kmd.
drm/i915: Add bigjoiner force enable option to debugfs
Kunal Joshi (4):
lib/igt_kms: move bigjoiner_mode_found to lib
tests/intel/kms_big_joiner: revamp bigjoiner
lib/igt_kms: add helper to enable/disable force joiner
tests/intel/kms_big_joiner: add tests for force joiner
lib/igt_kms.c | 79 ++++++
lib/igt_kms.h | 4 +
tests/intel/kms_big_joiner.c | 469 ++++++++++++++++++++---------------
3 files changed, 350 insertions(+), 202 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH i-g-t 0/4] revamp big joiner test
@ 2024-03-28 8:39 Kunal Joshi
0 siblings, 0 replies; 13+ messages in thread
From: Kunal Joshi @ 2024-03-28 8:39 UTC (permalink / raw)
To: igt-dev; +Cc: Kunal Joshi
modify test to support multiple big joiner outputs
simultaneously, support for ignoring fused pipes and
addition of subtests for testing force joiner support for
which is added by below in kmd.
drm/i915: Add bigjoiner force enable option to debugfs
Kunal Joshi (4):
lib/igt_kms: move bigjoiner_mode_found to lib
tests/intel/kms_big_joiner: revamp bigjoiner
lib/igt_kms: add helper to enable/disable force joiner
tests/intel/kms_big_joiner: add tests for force joiner
lib/igt_kms.c | 79 ++++++
lib/igt_kms.h | 4 +
tests/intel/kms_big_joiner.c | 477 ++++++++++++++++++++---------------
3 files changed, 359 insertions(+), 201 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2024-03-28 8:28 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-29 18:10 [PATCH i-g-t 0/4] revamp big joiner test Kunal Joshi
2024-02-29 18:10 ` [PATCH i-g-t 1/4] lib/igt_kms: move bigjoiner_mode_found to lib Kunal Joshi
2024-02-29 18:10 ` [PATCH i-g-t 2/4] lib/igt_kms: add helpers to enable/disable force joiner Kunal Joshi
2024-02-29 18:10 ` [PATCH i-g-t 3/4] tests/intel/kms_big_joiner: revamp kms_big_joiner Kunal Joshi
2024-02-29 18:10 ` [PATCH i-g-t 4/4] tests/intel-ci/fast-feedback: HAX PATCH DO NOT MERGE Kunal Joshi
2024-02-29 18:26 ` ✓ CI.xeBAT: success for revamp big joiner test Patchwork
2024-02-29 18:40 ` ✗ Fi.CI.BAT: failure " Patchwork
-- strict thread matches above, loose matches on Subject: below --
2024-03-01 8:25 [PATCH i-g-t 0/4] " Kunal Joshi
2024-03-03 17:22 Kunal Joshi
2024-03-10 14:27 Kunal Joshi
2024-03-21 18:28 Kunal Joshi
2024-03-25 16:51 Kunal Joshi
2024-03-28 8:39 Kunal Joshi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox