Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [RFC 0/2] drm/i915/display: revamped crtc iterators
@ 2024-09-19 20:14 Jani Nikula
  2024-09-19 20:14 ` [RFC 1/2] drm/i915/display: add improved " Jani Nikula
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Jani Nikula @ 2024-09-19 20:14 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula, Ankit Nautiyal, Ville Syrjälä

I didn't pick the idea, the idea picked me, and I had to do this.

Cc: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>

Jani Nikula (2):
  drm/i915/display: add improved crtc iterators
  drm/i915/display: try out the new crtc iterators

 drivers/gpu/drm/i915/Makefile                 |  1 +
 .../gpu/drm/i915/display/intel_crtc_iter.c    | 94 +++++++++++++++++++
 .../gpu/drm/i915/display/intel_crtc_iter.h    | 87 +++++++++++++++++
 drivers/gpu/drm/i915/display/intel_ddi.c      | 17 +++-
 drivers/gpu/drm/i915/display/intel_display.c  | 16 +++-
 drivers/gpu/drm/xe/Makefile                   |  1 +
 6 files changed, 207 insertions(+), 9 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/display/intel_crtc_iter.c
 create mode 100644 drivers/gpu/drm/i915/display/intel_crtc_iter.h

-- 
2.39.2


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [RFC 1/2] drm/i915/display: add improved crtc iterators
  2024-09-19 20:14 [RFC 0/2] drm/i915/display: revamped crtc iterators Jani Nikula
@ 2024-09-19 20:14 ` Jani Nikula
  2024-09-19 20:19   ` Jani Nikula
  2024-09-19 20:14 ` [RFC 2/2] drm/i915/display: try out the new " Jani Nikula
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 7+ messages in thread
From: Jani Nikula @ 2024-09-19 20:14 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula, Ankit Nautiyal, Ville Syrjälä

The macros for iterating crtcs have become unweildy. Add a more generic
solution.

This is extensible via new initialization functions, more pipe_masks,
and dedicated .get_next() functions.

Cc: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/Makefile                 |  1 +
 .../gpu/drm/i915/display/intel_crtc_iter.c    | 94 +++++++++++++++++++
 .../gpu/drm/i915/display/intel_crtc_iter.h    | 87 +++++++++++++++++
 drivers/gpu/drm/xe/Makefile                   |  1 +
 4 files changed, 183 insertions(+)
 create mode 100644 drivers/gpu/drm/i915/display/intel_crtc_iter.c
 create mode 100644 drivers/gpu/drm/i915/display/intel_crtc_iter.h

diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index bb67bad839ea..7a370cc91dcb 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -232,6 +232,7 @@ i915-y += \
 	display/intel_combo_phy.o \
 	display/intel_connector.o \
 	display/intel_crtc.o \
+	display/intel_crtc_iter.o \
 	display/intel_crtc_state_dump.o \
 	display/intel_cursor.o \
 	display/intel_display.o \
diff --git a/drivers/gpu/drm/i915/display/intel_crtc_iter.c b/drivers/gpu/drm/i915/display/intel_crtc_iter.c
new file mode 100644
index 000000000000..27f16b565a67
--- /dev/null
+++ b/drivers/gpu/drm/i915/display/intel_crtc_iter.c
@@ -0,0 +1,94 @@
+// SPDX-License-Identifier: MIT
+/* Copyright © 2024 Intel Corporation */
+
+#include <linux/list.h>
+#include <linux/kernel.h>
+
+#include "intel_crtc_iter.h"
+#include "intel_display.h"
+#include "intel_display_core.h"
+#include "intel_display_types.h"
+
+static void reset_pos(struct intel_crtc_iter *iter)
+{
+	if (iter->reverse)
+		iter->pos = list_last_entry(iter->crtc_list, typeof(*iter->pos), base.head);
+	else
+		iter->pos = list_first_entry(iter->crtc_list, typeof(*iter->pos), base.head);
+}
+
+static struct intel_crtc *get_next(struct intel_crtc_iter *iter)
+{
+	if (iter->reverse) {
+		list_for_each_entry_from(iter->pos, iter->crtc_list, base.head) {
+			if (iter->pipe_mask[iter->pipe_mask_index] & BIT(iter->pos->pipe))
+				return iter->pos;
+		}
+	} else {
+		list_for_each_entry_from_reverse(iter->pos, iter->crtc_list, base.head) {
+			if (iter->pipe_mask[iter->pipe_mask_index] & BIT(iter->pos->pipe))
+				return iter->pos;
+		}
+	}
+
+	/* List exhausted, start over with the next pipe mask, if any. */
+	iter->pipe_mask_index++;
+	if (iter->pipe_mask_index < ARRAY_SIZE(iter->pipe_mask) &&
+	    iter->pipe_mask[iter->pipe_mask_index]) {
+		reset_pos(iter);
+		return get_next(iter);
+	}
+
+	return NULL;
+}
+
+/*
+ * Iterate all CRTCs in forward or reverse CRTC initialization order, depending
+ * on reverse parameter, first matching pipes in pipe_mask0, then the pipes in
+ * pipe_mask1.
+ */
+void __intel_crtc_iter_begin(struct intel_display *display,
+			     struct intel_crtc_iter *iter,
+			     unsigned long pipe_mask0,
+			     unsigned long pipe_mask1,
+			     bool reverse)
+{
+	iter->crtc_list = &display->drm->mode_config.crtc_list;
+	iter->reverse = reverse;
+	reset_pos(iter);
+	iter->get_next = get_next;
+	iter->pipe_mask_index = 0;
+	iter->pipe_mask[0] = pipe_mask0;
+	iter->pipe_mask[1] = pipe_mask1;
+
+	/* It's an error to match the same pipe twice. */
+	drm_WARN_ON(display->drm, pipe_mask0 & pipe_mask1);
+}
+
+
+void intel_crtc_iter_end(struct intel_crtc_iter *iter)
+{
+	memset(iter, 0, sizeof(*iter));
+}
+
+void intel_crtc_iter_begin_modeset_enable(struct intel_display *display,
+					  struct intel_crtc_iter *iter,
+					  const struct intel_crtc_state *crtc_state)
+{
+	/* Enable secondary pipes first, then the primary pipes. */
+	__intel_crtc_iter_begin(display, iter,
+				_intel_modeset_secondary_pipes(crtc_state),
+				_intel_modeset_primary_pipes(crtc_state),
+				false);
+}
+
+void intel_crtc_iter_begin_modeset_disable(struct intel_display *display,
+					   struct intel_crtc_iter *iter,
+					   const struct intel_crtc_state *crtc_state)
+{
+	/* Disable primary pipes first, then the secondary pipes. */
+	__intel_crtc_iter_begin(display, iter,
+				_intel_modeset_primary_pipes(crtc_state),
+				_intel_modeset_secondary_pipes(crtc_state),
+				true);
+}
diff --git a/drivers/gpu/drm/i915/display/intel_crtc_iter.h b/drivers/gpu/drm/i915/display/intel_crtc_iter.h
new file mode 100644
index 000000000000..ec8d7ea3d595
--- /dev/null
+++ b/drivers/gpu/drm/i915/display/intel_crtc_iter.h
@@ -0,0 +1,87 @@
+/* SPDX-License-Identifier: MIT */
+/* Copyright © 2024 Intel Corporation */
+
+/*
+ * struct intel_crtc iterators for various needs.
+ *
+ * Usage:
+ *
+ *	struct intel_crtc *crtc;
+ *	struct intel_crtc_iter iter;
+ *
+ *	intel_crtc_iter_begin(display, &iter);
+ *	intel_crtc_iter_for_each(crtc, &iter) {
+ *		...
+ *	}
+ *	intel_crtc_iter_end(&iter);
+ *
+ * There are various alternatives to intel_crtc_iter_begin() that change the
+ * iteration behaviour, but the rest remains the same in all cases.
+ */
+
+#ifndef __INTEL_CRTC_ITER_H__
+#define __INTEL_CRTC_ITER_H__
+
+#include <linux/types.h>
+
+struct intel_crtc;
+struct intel_crtc_state;
+struct intel_display;
+struct list_head;
+
+/* This is private. Do not look insde. */
+struct intel_crtc_iter {
+	struct list_head *crtc_list;
+	struct intel_crtc *pos;
+	struct intel_crtc *(*get_next)(struct intel_crtc_iter *iter);
+	int pipe_mask_index;
+	u32 pipe_mask[2];
+	bool reverse;
+};
+
+void __intel_crtc_iter_begin(struct intel_display *display,
+			     struct intel_crtc_iter *iter,
+			     unsigned long pipe_mask0,
+			     unsigned long pipe_mask1,
+			     bool reverse);
+
+static inline void intel_crtc_iter_begin(struct intel_display *display,
+					 struct intel_crtc_iter *iter)
+{
+	__intel_crtc_iter_begin(display, iter, ~0UL, 0, false);
+}
+
+static inline void intel_crtc_iter_begin_reverse(struct intel_display *display,
+						 struct intel_crtc_iter *iter)
+{
+	__intel_crtc_iter_begin(display, iter, ~0UL, 0, true);
+}
+
+static inline void intel_crtc_iter_begin_pipe_mask(struct intel_display *display,
+						   struct intel_crtc_iter *iter,
+						   unsigned long pipe_mask)
+{
+	__intel_crtc_iter_begin(display, iter, pipe_mask, 0, false);
+}
+
+static inline void intel_crtc_iter_begin_pipe_mask_reverse(struct intel_display *display,
+							   struct intel_crtc_iter *iter,
+							   unsigned long pipe_mask)
+{
+	__intel_crtc_iter_begin(display, iter, pipe_mask, 0, true);
+}
+
+void intel_crtc_iter_begin_modeset_enable(struct intel_display *display,
+					  struct intel_crtc_iter *iter,
+					  const struct intel_crtc_state *crtc_state);
+
+void intel_crtc_iter_begin_modeset_disable(struct intel_display *display,
+					   struct intel_crtc_iter *iter,
+					   const struct intel_crtc_state *crtc_state);
+
+#define intel_crtc_iter_for_each(crtc, iter) \
+	while (((crtc) = (iter)->get_next(iter)))
+
+void intel_crtc_iter_end(struct intel_crtc_iter *iter);
+
+#endif /* __INTEL_CRTC_ITER_H__ */
diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index ae245fbd91ee..e1c8111b2528 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -198,6 +198,7 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
 	i915-display/intel_combo_phy.o \
 	i915-display/intel_connector.o \
 	i915-display/intel_crtc.o \
+	i915-display/intel_crtc_iter.o \
 	i915-display/intel_crtc_state_dump.o \
 	i915-display/intel_cursor.o \
 	i915-display/intel_cx0_phy.o \
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [RFC 2/2] drm/i915/display: try out the new crtc iterators
  2024-09-19 20:14 [RFC 0/2] drm/i915/display: revamped crtc iterators Jani Nikula
  2024-09-19 20:14 ` [RFC 1/2] drm/i915/display: add improved " Jani Nikula
@ 2024-09-19 20:14 ` Jani Nikula
  2024-09-20  6:43 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/display: revamped " Patchwork
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Jani Nikula @ 2024-09-19 20:14 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula, Ankit Nautiyal, Ville Syrjälä

Random conversions here and there.

Cc: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_ddi.c     | 17 ++++++++++++-----
 drivers/gpu/drm/i915/display/intel_display.c | 16 ++++++++++++----
 2 files changed, 24 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
index 85e519a21542..b822b28df213 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -41,6 +41,7 @@
 #include "intel_combo_phy_regs.h"
 #include "intel_connector.h"
 #include "intel_crtc.h"
+#include "intel_crtc_iter.h"
 #include "intel_cx0_phy.h"
 #include "intel_cx0_phy_regs.h"
 #include "intel_ddi.h"
@@ -3117,21 +3118,24 @@ static void intel_ddi_post_disable_hdmi_or_sst(struct intel_atomic_state *state,
 {
 	struct intel_display *display = to_intel_display(encoder);
 	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
+	struct intel_crtc_iter iter;
 	struct intel_crtc *pipe_crtc;
-	int i;
 
-	for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i) {
+	intel_crtc_iter_begin_modeset_disable(display, &iter, old_crtc_state);
+	intel_crtc_iter_for_each(pipe_crtc, &iter) {
 		const struct intel_crtc_state *old_pipe_crtc_state =
 			intel_atomic_get_old_crtc_state(state, pipe_crtc);
 
 		intel_crtc_vblank_off(old_pipe_crtc_state);
 	}
+	intel_crtc_iter_end(&iter);
 
 	intel_disable_transcoder(old_crtc_state);
 
 	intel_ddi_disable_transcoder_func(old_crtc_state);
 
-	for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i) {
+	intel_crtc_iter_begin_modeset_disable(display, &iter, old_crtc_state);
+	intel_crtc_iter_for_each(pipe_crtc, &iter) {
 		const struct intel_crtc_state *old_pipe_crtc_state =
 			intel_atomic_get_old_crtc_state(state, pipe_crtc);
 
@@ -3142,6 +3146,7 @@ static void intel_ddi_post_disable_hdmi_or_sst(struct intel_atomic_state *state,
 		else
 			ilk_pfit_disable(old_pipe_crtc_state);
 	}
+	intel_crtc_iter_end(&iter);
 }
 
 static void intel_ddi_post_disable(struct intel_atomic_state *state,
@@ -3383,8 +3388,8 @@ static void intel_enable_ddi(struct intel_atomic_state *state,
 			     const struct drm_connector_state *conn_state)
 {
 	struct intel_display *display = to_intel_display(encoder);
+	struct intel_crtc_iter iter;
 	struct intel_crtc *pipe_crtc;
-	int i;
 
 	intel_ddi_enable_transcoder_func(encoder, crtc_state);
 
@@ -3395,12 +3400,14 @@ static void intel_enable_ddi(struct intel_atomic_state *state,
 
 	intel_ddi_wait_for_fec_status(encoder, crtc_state, true);
 
-	for_each_pipe_crtc_modeset_enable(display, pipe_crtc, crtc_state, i) {
+	intel_crtc_iter_begin_modeset_enable(display, &iter, crtc_state);
+	intel_crtc_iter_for_each(pipe_crtc, &iter) {
 		const struct intel_crtc_state *pipe_crtc_state =
 			intel_atomic_get_new_crtc_state(state, pipe_crtc);
 
 		intel_crtc_vblank_on(pipe_crtc_state);
 	}
+	intel_crtc_iter_end(&iter);
 
 	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI))
 		intel_enable_ddi_hdmi(state, encoder, crtc_state, conn_state);
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 7136c80ac8cc..4aedc7e49fe1 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -65,6 +65,7 @@
 #include "intel_color.h"
 #include "intel_crt.h"
 #include "intel_crtc.h"
+#include "intel_crtc_iter.h"
 #include "intel_crtc_state_dump.h"
 #include "intel_cursor_regs.h"
 #include "intel_cx0_phy.h"
@@ -3583,6 +3584,8 @@ static bool transcoder_ddi_func_is_enabled(struct drm_i915_private *dev_priv,
 static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
 				 u8 *primary_pipes, u8 *secondary_pipes)
 {
+	struct intel_display *display = &dev_priv->display;
+	struct intel_crtc_iter iter;
 	struct intel_crtc *crtc;
 
 	*primary_pipes = 0;
@@ -3591,8 +3594,8 @@ static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
 	if (!HAS_BIGJOINER(dev_priv))
 		return;
 
-	for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, crtc,
-					 joiner_pipes(dev_priv)) {
+	intel_crtc_iter_begin_pipe_mask(display, &iter, joiner_pipes(dev_priv));
+	intel_crtc_iter_for_each(crtc, &iter) {
 		enum intel_display_power_domain power_domain;
 		enum pipe pipe = crtc->pipe;
 		intel_wakeref_t wakeref;
@@ -3623,6 +3626,7 @@ static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
 				*secondary_pipes |= BIT(pipe);
 		}
 	}
+	intel_crtc_iter_end(&iter);
 
 	/* Joiner pipes should always be consecutive primary and secondary */
 	drm_WARN(&dev_priv->drm, *secondary_pipes != *primary_pipes << 1,
@@ -6911,22 +6915,26 @@ static void commit_pipe_post_planes(struct intel_atomic_state *state,
 static void intel_enable_crtc(struct intel_atomic_state *state,
 			      struct intel_crtc *crtc)
 {
+	struct intel_display *display = to_intel_display(state);
 	struct drm_i915_private *dev_priv = to_i915(state->base.dev);
 	const struct intel_crtc_state *new_crtc_state =
 		intel_atomic_get_new_crtc_state(state, crtc);
+	struct intel_crtc_iter iter;
 	struct intel_crtc *pipe_crtc;
 
 	if (!intel_crtc_needs_modeset(new_crtc_state))
 		return;
 
-	for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc,
-						 intel_crtc_joined_pipe_mask(new_crtc_state)) {
+	intel_crtc_iter_begin_pipe_mask_reverse(display, &iter,
+						intel_crtc_joined_pipe_mask(new_crtc_state));
+	intel_crtc_iter_for_each(pipe_crtc, &iter) {
 		const struct intel_crtc_state *pipe_crtc_state =
 			intel_atomic_get_new_crtc_state(state, pipe_crtc);
 
 		/* VRR will be enable later, if required */
 		intel_crtc_update_active_timings(pipe_crtc_state, false);
 	}
+	intel_crtc_iter_end(&iter);
 
 	dev_priv->display.funcs.display->crtc_enable(state, crtc);
 
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [RFC 1/2] drm/i915/display: add improved crtc iterators
  2024-09-19 20:14 ` [RFC 1/2] drm/i915/display: add improved " Jani Nikula
@ 2024-09-19 20:19   ` Jani Nikula
  0 siblings, 0 replies; 7+ messages in thread
From: Jani Nikula @ 2024-09-19 20:19 UTC (permalink / raw)
  To: intel-gfx; +Cc: Ankit Nautiyal, Ville Syrjälä

On Thu, 19 Sep 2024, Jani Nikula <jani.nikula@intel.com> wrote:
> The macros for iterating crtcs have become unweildy. Add a more generic
> solution.
>
> This is extensible via new initialization functions, more pipe_masks,
> and dedicated .get_next() functions.
>
> Cc: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/i915/Makefile                 |  1 +
>  .../gpu/drm/i915/display/intel_crtc_iter.c    | 94 +++++++++++++++++++
>  .../gpu/drm/i915/display/intel_crtc_iter.h    | 87 +++++++++++++++++
>  drivers/gpu/drm/xe/Makefile                   |  1 +
>  4 files changed, 183 insertions(+)
>  create mode 100644 drivers/gpu/drm/i915/display/intel_crtc_iter.c
>  create mode 100644 drivers/gpu/drm/i915/display/intel_crtc_iter.h
>
> diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
> index bb67bad839ea..7a370cc91dcb 100644
> --- a/drivers/gpu/drm/i915/Makefile
> +++ b/drivers/gpu/drm/i915/Makefile
> @@ -232,6 +232,7 @@ i915-y += \
>  	display/intel_combo_phy.o \
>  	display/intel_connector.o \
>  	display/intel_crtc.o \
> +	display/intel_crtc_iter.o \
>  	display/intel_crtc_state_dump.o \
>  	display/intel_cursor.o \
>  	display/intel_display.o \
> diff --git a/drivers/gpu/drm/i915/display/intel_crtc_iter.c b/drivers/gpu/drm/i915/display/intel_crtc_iter.c
> new file mode 100644
> index 000000000000..27f16b565a67
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/display/intel_crtc_iter.c
> @@ -0,0 +1,94 @@
> +// SPDX-License-Identifier: MIT
> +/* Copyright © 2024 Intel Corporation */
> +
> +#include <linux/list.h>
> +#include <linux/kernel.h>
> +
> +#include "intel_crtc_iter.h"
> +#include "intel_display.h"
> +#include "intel_display_core.h"
> +#include "intel_display_types.h"
> +
> +static void reset_pos(struct intel_crtc_iter *iter)
> +{
> +	if (iter->reverse)
> +		iter->pos = list_last_entry(iter->crtc_list, typeof(*iter->pos), base.head);
> +	else
> +		iter->pos = list_first_entry(iter->crtc_list, typeof(*iter->pos), base.head);
> +}
> +
> +static struct intel_crtc *get_next(struct intel_crtc_iter *iter)
> +{
> +	if (iter->reverse) {
> +		list_for_each_entry_from(iter->pos, iter->crtc_list, base.head) {
> +			if (iter->pipe_mask[iter->pipe_mask_index] & BIT(iter->pos->pipe))
> +				return iter->pos;
> +		}
> +	} else {
> +		list_for_each_entry_from_reverse(iter->pos, iter->crtc_list, base.head) {
> +			if (iter->pipe_mask[iter->pipe_mask_index] & BIT(iter->pos->pipe))
> +				return iter->pos;
> +		}
> +	}

It's getting late, the blocks for the above are the wrong way around.

> +
> +	/* List exhausted, start over with the next pipe mask, if any. */
> +	iter->pipe_mask_index++;
> +	if (iter->pipe_mask_index < ARRAY_SIZE(iter->pipe_mask) &&
> +	    iter->pipe_mask[iter->pipe_mask_index]) {
> +		reset_pos(iter);
> +		return get_next(iter);
> +	}
> +
> +	return NULL;
> +}
> +
> +/*
> + * Iterate all CRTCs in forward or reverse CRTC initialization order, depending
> + * on reverse parameter, first matching pipes in pipe_mask0, then the pipes in
> + * pipe_mask1.
> + */
> +void __intel_crtc_iter_begin(struct intel_display *display,
> +			     struct intel_crtc_iter *iter,
> +			     unsigned long pipe_mask0,
> +			     unsigned long pipe_mask1,
> +			     bool reverse)
> +{
> +	iter->crtc_list = &display->drm->mode_config.crtc_list;
> +	iter->reverse = reverse;
> +	reset_pos(iter);
> +	iter->get_next = get_next;
> +	iter->pipe_mask_index = 0;
> +	iter->pipe_mask[0] = pipe_mask0;
> +	iter->pipe_mask[1] = pipe_mask1;
> +
> +	/* It's an error to match the same pipe twice. */
> +	drm_WARN_ON(display->drm, pipe_mask0 & pipe_mask1);
> +}
> +
> +
> +void intel_crtc_iter_end(struct intel_crtc_iter *iter)
> +{
> +	memset(iter, 0, sizeof(*iter));
> +}
> +
> +void intel_crtc_iter_begin_modeset_enable(struct intel_display *display,
> +					  struct intel_crtc_iter *iter,
> +					  const struct intel_crtc_state *crtc_state)
> +{
> +	/* Enable secondary pipes first, then the primary pipes. */
> +	__intel_crtc_iter_begin(display, iter,
> +				_intel_modeset_secondary_pipes(crtc_state),
> +				_intel_modeset_primary_pipes(crtc_state),
> +				false);
> +}
> +
> +void intel_crtc_iter_begin_modeset_disable(struct intel_display *display,
> +					   struct intel_crtc_iter *iter,
> +					   const struct intel_crtc_state *crtc_state)
> +{
> +	/* Disable primary pipes first, then the secondary pipes. */
> +	__intel_crtc_iter_begin(display, iter,
> +				_intel_modeset_primary_pipes(crtc_state),
> +				_intel_modeset_secondary_pipes(crtc_state),
> +				true);
> +}
> diff --git a/drivers/gpu/drm/i915/display/intel_crtc_iter.h b/drivers/gpu/drm/i915/display/intel_crtc_iter.h
> new file mode 100644
> index 000000000000..ec8d7ea3d595
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/display/intel_crtc_iter.h
> @@ -0,0 +1,87 @@
> +/* SPDX-License-Identifier: MIT */
> +/* Copyright © 2024 Intel Corporation */
> +
> +/*
> + * struct intel_crtc iterators for various needs.
> + *
> + * Usage:
> + *
> + *	struct intel_crtc *crtc;
> + *	struct intel_crtc_iter iter;
> + *
> + *	intel_crtc_iter_begin(display, &iter);
> + *	intel_crtc_iter_for_each(crtc, &iter) {
> + *		...
> + *	}
> + *	intel_crtc_iter_end(&iter);
> + *
> + * There are various alternatives to intel_crtc_iter_begin() that change the
> + * iteration behaviour, but the rest remains the same in all cases.
> + */
> +
> +#ifndef __INTEL_CRTC_ITER_H__
> +#define __INTEL_CRTC_ITER_H__
> +
> +#include <linux/types.h>
> +
> +struct intel_crtc;
> +struct intel_crtc_state;
> +struct intel_display;
> +struct list_head;
> +
> +/* This is private. Do not look insde. */
> +struct intel_crtc_iter {
> +	struct list_head *crtc_list;
> +	struct intel_crtc *pos;
> +	struct intel_crtc *(*get_next)(struct intel_crtc_iter *iter);
> +	int pipe_mask_index;
> +	u32 pipe_mask[2];
> +	bool reverse;
> +};
> +
> +void __intel_crtc_iter_begin(struct intel_display *display,
> +			     struct intel_crtc_iter *iter,
> +			     unsigned long pipe_mask0,
> +			     unsigned long pipe_mask1,
> +			     bool reverse);
> +
> +static inline void intel_crtc_iter_begin(struct intel_display *display,
> +					 struct intel_crtc_iter *iter)
> +{
> +	__intel_crtc_iter_begin(display, iter, ~0UL, 0, false);
> +}
> +
> +static inline void intel_crtc_iter_begin_reverse(struct intel_display *display,
> +						 struct intel_crtc_iter *iter)
> +{
> +	__intel_crtc_iter_begin(display, iter, ~0UL, 0, true);
> +}
> +
> +static inline void intel_crtc_iter_begin_pipe_mask(struct intel_display *display,
> +						   struct intel_crtc_iter *iter,
> +						   unsigned long pipe_mask)
> +{
> +	__intel_crtc_iter_begin(display, iter, pipe_mask, 0, false);
> +}
> +
> +static inline void intel_crtc_iter_begin_pipe_mask_reverse(struct intel_display *display,
> +							   struct intel_crtc_iter *iter,
> +							   unsigned long pipe_mask)
> +{
> +	__intel_crtc_iter_begin(display, iter, pipe_mask, 0, true);
> +}
> +
> +void intel_crtc_iter_begin_modeset_enable(struct intel_display *display,
> +					  struct intel_crtc_iter *iter,
> +					  const struct intel_crtc_state *crtc_state);
> +
> +void intel_crtc_iter_begin_modeset_disable(struct intel_display *display,
> +					   struct intel_crtc_iter *iter,
> +					   const struct intel_crtc_state *crtc_state);
> +
> +#define intel_crtc_iter_for_each(crtc, iter) \
> +	while (((crtc) = (iter)->get_next(iter)))
> +
> +void intel_crtc_iter_end(struct intel_crtc_iter *iter);
> +
> +#endif /* __INTEL_CRTC_ITER_H__ */
> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
> index ae245fbd91ee..e1c8111b2528 100644
> --- a/drivers/gpu/drm/xe/Makefile
> +++ b/drivers/gpu/drm/xe/Makefile
> @@ -198,6 +198,7 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
>  	i915-display/intel_combo_phy.o \
>  	i915-display/intel_connector.o \
>  	i915-display/intel_crtc.o \
> +	i915-display/intel_crtc_iter.o \
>  	i915-display/intel_crtc_state_dump.o \
>  	i915-display/intel_cursor.o \
>  	i915-display/intel_cx0_phy.o \

-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* ✗ Fi.CI.CHECKPATCH: warning for drm/i915/display: revamped crtc iterators
  2024-09-19 20:14 [RFC 0/2] drm/i915/display: revamped crtc iterators Jani Nikula
  2024-09-19 20:14 ` [RFC 1/2] drm/i915/display: add improved " Jani Nikula
  2024-09-19 20:14 ` [RFC 2/2] drm/i915/display: try out the new " Jani Nikula
@ 2024-09-20  6:43 ` Patchwork
  2024-09-20  6:44 ` ✗ Fi.CI.SPARSE: " Patchwork
  2024-09-20  6:59 ` ✗ Fi.CI.BAT: failure " Patchwork
  4 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2024-09-20  6:43 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/display: revamped crtc iterators
URL   : https://patchwork.freedesktop.org/series/138886/
State : warning

== Summary ==

Error: dim checkpatch failed
ea15e9062cea drm/i915/display: add improved crtc iterators
-:32: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#32: 
new file mode 100644

-:104: CHECK:LINE_SPACING: Please don't use multiple blank lines
#104: FILE: drivers/gpu/drm/i915/display/intel_crtc_iter.c:68:
+
+

-:218: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#218: FILE: drivers/gpu/drm/i915/display/intel_crtc_iter.h:82:
+#define intel_crtc_iter_for_each(crtc, iter) \
+	while (((crtc) = (iter)->get_next(iter)))

-:218: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'iter' - possible side-effects?
#218: FILE: drivers/gpu/drm/i915/display/intel_crtc_iter.h:82:
+#define intel_crtc_iter_for_each(crtc, iter) \
+	while (((crtc) = (iter)->get_next(iter)))

total: 1 errors, 1 warnings, 2 checks, 195 lines checked
3d6cef176432 drm/i915/display: try out the new crtc iterators



^ permalink raw reply	[flat|nested] 7+ messages in thread

* ✗ Fi.CI.SPARSE: warning for drm/i915/display: revamped crtc iterators
  2024-09-19 20:14 [RFC 0/2] drm/i915/display: revamped crtc iterators Jani Nikula
                   ` (2 preceding siblings ...)
  2024-09-20  6:43 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/display: revamped " Patchwork
@ 2024-09-20  6:44 ` Patchwork
  2024-09-20  6:59 ` ✗ Fi.CI.BAT: failure " Patchwork
  4 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2024-09-20  6:44 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/display: revamped crtc iterators
URL   : https://patchwork.freedesktop.org/series/138886/
State : warning

== Summary ==

Error: dim sparse failed
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings
+./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return'



^ permalink raw reply	[flat|nested] 7+ messages in thread

* ✗ Fi.CI.BAT: failure for drm/i915/display: revamped crtc iterators
  2024-09-19 20:14 [RFC 0/2] drm/i915/display: revamped crtc iterators Jani Nikula
                   ` (3 preceding siblings ...)
  2024-09-20  6:44 ` ✗ Fi.CI.SPARSE: " Patchwork
@ 2024-09-20  6:59 ` Patchwork
  4 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2024-09-20  6:59 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

[-- Attachment #1: Type: text/plain, Size: 11704 bytes --]

== Series Details ==

Series: drm/i915/display: revamped crtc iterators
URL   : https://patchwork.freedesktop.org/series/138886/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_15440 -> Patchwork_138886v1
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with Patchwork_138886v1 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_138886v1, 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/Patchwork_138886v1/index.html

Participating hosts (39 -> 35)
------------------------------

  Additional (1): fi-bsw-n3050 
  Missing    (5): fi-kbl-7567u fi-tgl-1115g4 fi-snb-2520m fi-cfl-8109u bat-jsl-1 

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in Patchwork_138886v1:

### IGT changes ###

#### Possible regressions ####

  * igt@i915_module_load@load:
    - bat-arls-1:         [PASS][1] -> [ABORT][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-arls-1/igt@i915_module_load@load.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-arls-1/igt@i915_module_load@load.html
    - fi-blb-e6850:       [PASS][3] -> [ABORT][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/fi-blb-e6850/igt@i915_module_load@load.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/fi-blb-e6850/igt@i915_module_load@load.html
    - fi-bsw-n3050:       NOTRUN -> [ABORT][5]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/fi-bsw-n3050/igt@i915_module_load@load.html
    - bat-adlp-6:         [PASS][6] -> [ABORT][7]
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-adlp-6/igt@i915_module_load@load.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-adlp-6/igt@i915_module_load@load.html
    - bat-arlh-2:         [PASS][8] -> [ABORT][9]
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-arlh-2/igt@i915_module_load@load.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-arlh-2/igt@i915_module_load@load.html
    - fi-rkl-11600:       [PASS][10] -> [ABORT][11]
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/fi-rkl-11600/igt@i915_module_load@load.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/fi-rkl-11600/igt@i915_module_load@load.html
    - fi-pnv-d510:        [PASS][12] -> [ABORT][13]
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/fi-pnv-d510/igt@i915_module_load@load.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/fi-pnv-d510/igt@i915_module_load@load.html
    - bat-dg1-7:          [PASS][14] -> [ABORT][15]
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-dg1-7/igt@i915_module_load@load.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-dg1-7/igt@i915_module_load@load.html
    - bat-dg2-13:         [PASS][16] -> [ABORT][17]
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-dg2-13/igt@i915_module_load@load.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-dg2-13/igt@i915_module_load@load.html
    - fi-glk-j4005:       [PASS][18] -> [ABORT][19]
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/fi-glk-j4005/igt@i915_module_load@load.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/fi-glk-j4005/igt@i915_module_load@load.html
    - bat-adlp-9:         [PASS][20] -> [ABORT][21]
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-adlp-9/igt@i915_module_load@load.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-adlp-9/igt@i915_module_load@load.html
    - bat-twl-2:          [PASS][22] -> [ABORT][23]
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-twl-2/igt@i915_module_load@load.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-twl-2/igt@i915_module_load@load.html
    - bat-dg2-11:         [PASS][24] -> [ABORT][25]
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-dg2-11/igt@i915_module_load@load.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-dg2-11/igt@i915_module_load@load.html
    - bat-rpls-4:         [PASS][26] -> [ABORT][27]
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-rpls-4/igt@i915_module_load@load.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-rpls-4/igt@i915_module_load@load.html
    - fi-cfl-8700k:       [PASS][28] -> [ABORT][29]
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/fi-cfl-8700k/igt@i915_module_load@load.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/fi-cfl-8700k/igt@i915_module_load@load.html
    - bat-twl-1:          [PASS][30] -> [ABORT][31]
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-twl-1/igt@i915_module_load@load.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-twl-1/igt@i915_module_load@load.html
    - bat-dg2-14:         [PASS][32] -> [ABORT][33]
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-dg2-14/igt@i915_module_load@load.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-dg2-14/igt@i915_module_load@load.html
    - fi-elk-e7500:       [PASS][34] -> [ABORT][35]
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/fi-elk-e7500/igt@i915_module_load@load.html
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/fi-elk-e7500/igt@i915_module_load@load.html
    - bat-adlm-1:         [PASS][36] -> [ABORT][37]
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-adlm-1/igt@i915_module_load@load.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-adlm-1/igt@i915_module_load@load.html
    - bat-rplp-1:         [PASS][38] -> [ABORT][39]
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-rplp-1/igt@i915_module_load@load.html
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-rplp-1/igt@i915_module_load@load.html
    - fi-cfl-guc:         [PASS][40] -> [ABORT][41]
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/fi-cfl-guc/igt@i915_module_load@load.html
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/fi-cfl-guc/igt@i915_module_load@load.html
    - bat-mtlp-6:         [PASS][42] -> [ABORT][43]
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-mtlp-6/igt@i915_module_load@load.html
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-mtlp-6/igt@i915_module_load@load.html
    - bat-dg2-9:          [PASS][44] -> [ABORT][45]
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-dg2-9/igt@i915_module_load@load.html
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-dg2-9/igt@i915_module_load@load.html
    - bat-adlp-11:        [PASS][46] -> [ABORT][47]
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-adlp-11/igt@i915_module_load@load.html
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-adlp-11/igt@i915_module_load@load.html
    - bat-arls-2:         [PASS][48] -> [ABORT][49]
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-arls-2/igt@i915_module_load@load.html
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-arls-2/igt@i915_module_load@load.html
    - fi-ivb-3770:        [PASS][50] -> [ABORT][51]
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/fi-ivb-3770/igt@i915_module_load@load.html
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/fi-ivb-3770/igt@i915_module_load@load.html
    - bat-mtlp-8:         [PASS][52] -> [ABORT][53]
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-mtlp-8/igt@i915_module_load@load.html
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-mtlp-8/igt@i915_module_load@load.html
    - bat-dg2-8:          [PASS][54] -> [ABORT][55]
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-dg2-8/igt@i915_module_load@load.html
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-dg2-8/igt@i915_module_load@load.html

  * igt@kms_force_connector_basic@force-connector-state:
    - bat-kbl-2:          [PASS][56] -> [ABORT][57]
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-kbl-2/igt@kms_force_connector_basic@force-connector-state.html
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-kbl-2/igt@kms_force_connector_basic@force-connector-state.html
    - fi-kbl-x1275:       [PASS][58] -> [ABORT][59]
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/fi-kbl-x1275/igt@kms_force_connector_basic@force-connector-state.html
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/fi-kbl-x1275/igt@kms_force_connector_basic@force-connector-state.html
    - fi-kbl-8809g:       [PASS][60] -> [ABORT][61]
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/fi-kbl-8809g/igt@kms_force_connector_basic@force-connector-state.html
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/fi-kbl-8809g/igt@kms_force_connector_basic@force-connector-state.html
    - fi-kbl-guc:         [PASS][62] -> [ABORT][63]
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/fi-kbl-guc/igt@kms_force_connector_basic@force-connector-state.html
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/fi-kbl-guc/igt@kms_force_connector_basic@force-connector-state.html

  
#### Warnings ####

  * igt@i915_module_load@load:
    - bat-apl-1:          [DMESG-WARN][64] ([i915#180]) -> [ABORT][65]
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-apl-1/igt@i915_module_load@load.html
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-apl-1/igt@i915_module_load@load.html
    - bat-arls-5:         [DMESG-WARN][66] ([i915#11637]) -> [ABORT][67]
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-arls-5/igt@i915_module_load@load.html
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-arls-5/igt@i915_module_load@load.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@i915_module_load@load:
    - {bat-arlh-3}:       [PASS][68] -> [ABORT][69]
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15440/bat-arlh-3/igt@i915_module_load@load.html
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/bat-arlh-3/igt@i915_module_load@load.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [i915#11637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11637
  [i915#180]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/180


Build changes
-------------

  * Linux: CI_DRM_15440 -> Patchwork_138886v1

  CI-20190529: 20190529
  CI_DRM_15440: d4340c1de6d417c7b3edac187c3af011b146701a @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8028: 8028
  Patchwork_138886v1: d4340c1de6d417c7b3edac187c3af011b146701a @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138886v1/index.html

[-- Attachment #2: Type: text/html, Size: 12552 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2024-09-20  6:59 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-19 20:14 [RFC 0/2] drm/i915/display: revamped crtc iterators Jani Nikula
2024-09-19 20:14 ` [RFC 1/2] drm/i915/display: add improved " Jani Nikula
2024-09-19 20:19   ` Jani Nikula
2024-09-19 20:14 ` [RFC 2/2] drm/i915/display: try out the new " Jani Nikula
2024-09-20  6:43 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/display: revamped " Patchwork
2024-09-20  6:44 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-09-20  6:59 ` ✗ Fi.CI.BAT: failure " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox