* [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