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