* [PATCH 0/2] Modify iterators to prepare for ultrajoiner
@ 2024-09-17 8:23 Ankit Nautiyal
2024-09-17 8:23 ` [PATCH 1/2] drm/i915: Add some essential functionality for joiners Ankit Nautiyal
` (4 more replies)
0 siblings, 5 replies; 11+ messages in thread
From: Ankit Nautiyal @ 2024-09-17 8:23 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: suraj.kandpal, ville.syrjala
Modify the iterators for enabling/disabling during modeset that works for
present and future joiner cases.
This patch series is a spin off from original series for ultrajoiner
basic functionality [1] and discussion on [2].
Few of the preparatory patches are taken here for review and merge before
the other core patches of the series.
[1] https://patchwork.freedesktop.org/patch/613914/
[2] https://patchwork.freedesktop.org/patch/613914/?series=133800&rev=8
Ankit Nautiyal (1):
drm/i915/display: Enhance iterators for modeset en/disable
Stanislav Lisovskiy (1):
drm/i915: Add some essential functionality for joiners
drivers/gpu/drm/i915/display/intel_ddi.c | 13 ++--
drivers/gpu/drm/i915/display/intel_display.c | 82 ++++++++++++++++----
drivers/gpu/drm/i915/display/intel_display.h | 28 +++++++
drivers/gpu/drm/i915/display/intel_dp_mst.c | 14 ++--
drivers/gpu/drm/i915/display/intel_vdsc.c | 4 +-
5 files changed, 111 insertions(+), 30 deletions(-)
--
2.45.2
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH 1/2] drm/i915: Add some essential functionality for joiners 2024-09-17 8:23 [PATCH 0/2] Modify iterators to prepare for ultrajoiner Ankit Nautiyal @ 2024-09-17 8:23 ` Ankit Nautiyal 2024-09-17 12:27 ` Ville Syrjälä 2024-09-17 8:23 ` [PATCH 2/2] drm/i915/display: Enhance iterators for modeset en/disable Ankit Nautiyal ` (3 subsequent siblings) 4 siblings, 1 reply; 11+ messages in thread From: Ankit Nautiyal @ 2024-09-17 8:23 UTC (permalink / raw) To: intel-gfx, intel-xe; +Cc: suraj.kandpal, ville.syrjala From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com> In most of the cases we now try to avoid mentioning things like "bigjoiner" or "ultrajoiner" trying to unify the API and refer mostly to all this functionality as "joiner". In majority cases that should be way to go. However in some cases we still need to distinguish between bigjoiner primaries and secondaries(such as DSC register programming). Create correspondent helper functions and start using them, in order be prepared for adding ultrajoiner functionality. v2: Fixed checkpatch warnings (Ankit) v3: Introduce ultrajoiner helpers in next patch. v4: Streamline the helpers and add few more. (Ville) Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> --- drivers/gpu/drm/i915/display/intel_display.c | 41 ++++++++++++++++++++ drivers/gpu/drm/i915/display/intel_display.h | 2 + drivers/gpu/drm/i915/display/intel_vdsc.c | 4 +- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index d4a371edfcdd..deacdf82e143 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -254,6 +254,47 @@ static enum pipe joiner_primary_pipe(const struct intel_crtc_state *crtc_state) return ffs(crtc_state->joiner_pipes) - 1; } +static bool is_bigjoiner(const struct intel_crtc_state *crtc_state) +{ + return hweight8(crtc_state->joiner_pipes) >= 2; +} + +static u8 bigjoiner_primary_pipes(const struct intel_crtc_state *crtc_state) +{ + if (!is_bigjoiner(crtc_state)) + return 0; + + return crtc_state->joiner_pipes & (0b01010101 << joiner_primary_pipe(crtc_state)); +} + +static unsigned int bigjoiner_secondary_pipes(const struct intel_crtc_state *crtc_state) +{ + if (!is_bigjoiner(crtc_state)) + return 0; + + return crtc_state->joiner_pipes & (0b10101010 << joiner_primary_pipe(crtc_state)); +} + +bool intel_crtc_is_bigjoiner_primary(const struct intel_crtc_state *crtc_state) +{ + struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); + + if (!is_bigjoiner(crtc_state)) + return false; + + return BIT(crtc->pipe) & bigjoiner_primary_pipes(crtc_state); +} + +bool intel_crtc_is_bigjoiner_secondary(const struct intel_crtc_state *crtc_state) +{ + struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); + + if (!is_bigjoiner(crtc_state)) + return false; + + return BIT(crtc->pipe) & bigjoiner_secondary_pipes(crtc_state); +} + u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state) { if (crtc_state->joiner_pipes) diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h index 7ca26e5cb20e..894f58ead279 100644 --- a/drivers/gpu/drm/i915/display/intel_display.h +++ b/drivers/gpu/drm/i915/display/intel_display.h @@ -426,6 +426,8 @@ bool is_trans_port_sync_master(const struct intel_crtc_state *state); u8 intel_crtc_joined_pipe_mask(const struct intel_crtc_state *crtc_state); bool intel_crtc_is_joiner_secondary(const struct intel_crtc_state *crtc_state); bool intel_crtc_is_joiner_primary(const struct intel_crtc_state *crtc_state); +bool intel_crtc_is_bigjoiner_primary(const struct intel_crtc_state *crtc_state); +bool intel_crtc_is_bigjoiner_secondary(const struct intel_crtc_state *crtc_state); u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state); struct intel_crtc *intel_primary_crtc(const struct intel_crtc_state *crtc_state); bool intel_crtc_get_pipe_config(struct intel_crtc_state *crtc_state); diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c b/drivers/gpu/drm/i915/display/intel_vdsc.c index 2e849b015e74..8158e3702ed5 100644 --- a/drivers/gpu/drm/i915/display/intel_vdsc.c +++ b/drivers/gpu/drm/i915/display/intel_vdsc.c @@ -742,7 +742,7 @@ void intel_uncompressed_joiner_enable(const struct intel_crtc_state *crtc_state) u32 dss_ctl1_val = 0; if (crtc_state->joiner_pipes && !crtc_state->dsc.compression_enable) { - if (intel_crtc_is_joiner_secondary(crtc_state)) + if (intel_crtc_is_bigjoiner_secondary(crtc_state)) dss_ctl1_val |= UNCOMPRESSED_JOINER_SECONDARY; else dss_ctl1_val |= UNCOMPRESSED_JOINER_PRIMARY; @@ -771,7 +771,7 @@ void intel_dsc_enable(const struct intel_crtc_state *crtc_state) } if (crtc_state->joiner_pipes) { dss_ctl1_val |= BIG_JOINER_ENABLE; - if (!intel_crtc_is_joiner_secondary(crtc_state)) + if (intel_crtc_is_bigjoiner_primary(crtc_state)) dss_ctl1_val |= PRIMARY_BIG_JOINER_ENABLE; } intel_de_write(dev_priv, dss_ctl1_reg(crtc, crtc_state->cpu_transcoder), dss_ctl1_val); -- 2.45.2 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] drm/i915: Add some essential functionality for joiners 2024-09-17 8:23 ` [PATCH 1/2] drm/i915: Add some essential functionality for joiners Ankit Nautiyal @ 2024-09-17 12:27 ` Ville Syrjälä 0 siblings, 0 replies; 11+ messages in thread From: Ville Syrjälä @ 2024-09-17 12:27 UTC (permalink / raw) To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, suraj.kandpal On Tue, Sep 17, 2024 at 01:53:57PM +0530, Ankit Nautiyal wrote: > From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com> > > In most of the cases we now try to avoid mentioning things like > "bigjoiner" or "ultrajoiner" trying to unify the API and refer > mostly to all this functionality as "joiner". > In majority cases that should be way to go. > However in some cases we still need to distinguish between > bigjoiner primaries and secondaries(such as DSC register programming). > > Create correspondent helper functions and start using them, > in order be prepared for adding ultrajoiner functionality. > > v2: Fixed checkpatch warnings (Ankit) > v3: Introduce ultrajoiner helpers in next patch. > v4: Streamline the helpers and add few more. (Ville) > > Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com> > Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> > --- > drivers/gpu/drm/i915/display/intel_display.c | 41 ++++++++++++++++++++ > drivers/gpu/drm/i915/display/intel_display.h | 2 + > drivers/gpu/drm/i915/display/intel_vdsc.c | 4 +- > 3 files changed, 45 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c > index d4a371edfcdd..deacdf82e143 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -254,6 +254,47 @@ static enum pipe joiner_primary_pipe(const struct intel_crtc_state *crtc_state) > return ffs(crtc_state->joiner_pipes) - 1; > } > > +static bool is_bigjoiner(const struct intel_crtc_state *crtc_state) > +{ > + return hweight8(crtc_state->joiner_pipes) >= 2; > +} > + > +static u8 bigjoiner_primary_pipes(const struct intel_crtc_state *crtc_state) > +{ > + if (!is_bigjoiner(crtc_state)) > + return 0; > + > + return crtc_state->joiner_pipes & (0b01010101 << joiner_primary_pipe(crtc_state)); > +} > + > +static unsigned int bigjoiner_secondary_pipes(const struct intel_crtc_state *crtc_state) > +{ > + if (!is_bigjoiner(crtc_state)) > + return 0; > + > + return crtc_state->joiner_pipes & (0b10101010 << joiner_primary_pipe(crtc_state)); > +} > + > +bool intel_crtc_is_bigjoiner_primary(const struct intel_crtc_state *crtc_state) > +{ > + struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > + > + if (!is_bigjoiner(crtc_state)) > + return false; > + > + return BIT(crtc->pipe) & bigjoiner_primary_pipes(crtc_state); > +} > + > +bool intel_crtc_is_bigjoiner_secondary(const struct intel_crtc_state *crtc_state) > +{ > + struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > + > + if (!is_bigjoiner(crtc_state)) > + return false; > + > + return BIT(crtc->pipe) & bigjoiner_secondary_pipes(crtc_state); > +} We probably want a comment around these somewhere indicating that (despite the name) these apply to both bigjoiner and uncompressed joiner. Unless someone can come up with a better term to use instead of "bigjoiner" in these? I'm drawing a blank myself. Anyways, with some clarification added this is Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state) > { > if (crtc_state->joiner_pipes) > diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h > index 7ca26e5cb20e..894f58ead279 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.h > +++ b/drivers/gpu/drm/i915/display/intel_display.h > @@ -426,6 +426,8 @@ bool is_trans_port_sync_master(const struct intel_crtc_state *state); > u8 intel_crtc_joined_pipe_mask(const struct intel_crtc_state *crtc_state); > bool intel_crtc_is_joiner_secondary(const struct intel_crtc_state *crtc_state); > bool intel_crtc_is_joiner_primary(const struct intel_crtc_state *crtc_state); > +bool intel_crtc_is_bigjoiner_primary(const struct intel_crtc_state *crtc_state); > +bool intel_crtc_is_bigjoiner_secondary(const struct intel_crtc_state *crtc_state); > u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state); > struct intel_crtc *intel_primary_crtc(const struct intel_crtc_state *crtc_state); > bool intel_crtc_get_pipe_config(struct intel_crtc_state *crtc_state); > diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c b/drivers/gpu/drm/i915/display/intel_vdsc.c > index 2e849b015e74..8158e3702ed5 100644 > --- a/drivers/gpu/drm/i915/display/intel_vdsc.c > +++ b/drivers/gpu/drm/i915/display/intel_vdsc.c > @@ -742,7 +742,7 @@ void intel_uncompressed_joiner_enable(const struct intel_crtc_state *crtc_state) > u32 dss_ctl1_val = 0; > > if (crtc_state->joiner_pipes && !crtc_state->dsc.compression_enable) { > - if (intel_crtc_is_joiner_secondary(crtc_state)) > + if (intel_crtc_is_bigjoiner_secondary(crtc_state)) > dss_ctl1_val |= UNCOMPRESSED_JOINER_SECONDARY; > else > dss_ctl1_val |= UNCOMPRESSED_JOINER_PRIMARY; > @@ -771,7 +771,7 @@ void intel_dsc_enable(const struct intel_crtc_state *crtc_state) > } > if (crtc_state->joiner_pipes) { > dss_ctl1_val |= BIG_JOINER_ENABLE; > - if (!intel_crtc_is_joiner_secondary(crtc_state)) > + if (intel_crtc_is_bigjoiner_primary(crtc_state)) > dss_ctl1_val |= PRIMARY_BIG_JOINER_ENABLE; > } > intel_de_write(dev_priv, dss_ctl1_reg(crtc, crtc_state->cpu_transcoder), dss_ctl1_val); > -- > 2.45.2 -- Ville Syrjälä Intel ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/2] drm/i915/display: Enhance iterators for modeset en/disable 2024-09-17 8:23 [PATCH 0/2] Modify iterators to prepare for ultrajoiner Ankit Nautiyal 2024-09-17 8:23 ` [PATCH 1/2] drm/i915: Add some essential functionality for joiners Ankit Nautiyal @ 2024-09-17 8:23 ` Ankit Nautiyal 2024-09-17 13:31 ` Ville Syrjälä 2024-09-17 13:02 ` ✗ Fi.CI.CHECKPATCH: warning for Modify iterators to prepare for ultrajoiner Patchwork ` (2 subsequent siblings) 4 siblings, 1 reply; 11+ messages in thread From: Ankit Nautiyal @ 2024-09-17 8:23 UTC (permalink / raw) To: intel-gfx, intel-xe; +Cc: suraj.kandpal, ville.syrjala Joiners have specific enabling and disabling order dependent on primary and secondary pipes. This becomes more complex with ultrajoiner where we have ultrajoiner primary/secondary pipes in addition to bigjoiner primary/secondary pipes. To unify the approach that works for present and future joiner cases, use primary and secondary pipe masks to iterate over pipes. If joiner is used, derive bigoiner primary and secondary pipe masks and use following sequences: Disabling : disable primary pipes followed by secondary pipes, Enabling: enable secondary pipes followed by primary pipes. This works well with ultrajoiner too, as ultrajoiner has 2 bigjoiner primary/secondary pairs (AC, BD). For non joiner case, enable/disable based on usual pipe order A-D, D-A respectively. Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/display/intel_ddi.c | 13 ++++--- drivers/gpu/drm/i915/display/intel_display.c | 41 +++++++++++++------- drivers/gpu/drm/i915/display/intel_display.h | 26 +++++++++++++ drivers/gpu/drm/i915/display/intel_dp_mst.c | 14 +++---- 4 files changed, 66 insertions(+), 28 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c index b1c294236cc8..60603839f495 100644 --- a/drivers/gpu/drm/i915/display/intel_ddi.c +++ b/drivers/gpu/drm/i915/display/intel_ddi.c @@ -3117,9 +3117,10 @@ static void intel_ddi_post_disable_hdmi_or_sst(struct intel_atomic_state *state, { struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); struct intel_crtc *pipe_crtc; + enum pipe pipes; + int i; - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(old_crtc_state)) { + for_each_pipe_crtc_modeset_disable(dev_priv, pipe_crtc, old_crtc_state, pipes, i) { const struct intel_crtc_state *old_pipe_crtc_state = intel_atomic_get_old_crtc_state(state, pipe_crtc); @@ -3130,8 +3131,7 @@ static void intel_ddi_post_disable_hdmi_or_sst(struct intel_atomic_state *state, intel_ddi_disable_transcoder_func(old_crtc_state); - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(old_crtc_state)) { + for_each_pipe_crtc_modeset_disable(dev_priv, pipe_crtc, old_crtc_state, pipes, i) { const struct intel_crtc_state *old_pipe_crtc_state = intel_atomic_get_old_crtc_state(state, pipe_crtc); @@ -3384,6 +3384,8 @@ static void intel_enable_ddi(struct intel_atomic_state *state, { struct drm_i915_private *i915 = to_i915(encoder->base.dev); struct intel_crtc *pipe_crtc; + enum pipe pipes; + int i; intel_ddi_enable_transcoder_func(encoder, crtc_state); @@ -3394,8 +3396,7 @@ static void intel_enable_ddi(struct intel_atomic_state *state, intel_ddi_wait_for_fec_status(encoder, crtc_state, true); - for_each_intel_crtc_in_pipe_mask_reverse(&i915->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(crtc_state)) { + for_each_pipe_crtc_modeset_enable(i915, pipe_crtc, crtc_state, pipes, i) { const struct intel_crtc_state *pipe_crtc_state = intel_atomic_get_new_crtc_state(state, pipe_crtc); diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index deacdf82e143..179aa7c66081 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -295,6 +295,21 @@ bool intel_crtc_is_bigjoiner_secondary(const struct intel_crtc_state *crtc_state return BIT(crtc->pipe) & bigjoiner_secondary_pipes(crtc_state); } +u8 _modeset_primary_pipes(const struct intel_crtc_state *crtc_state) +{ + struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); + + if (!is_bigjoiner(crtc_state)) + return BIT(crtc->pipe); + + return bigjoiner_primary_pipes(crtc_state); +} + +u8 _modeset_secondary_pipes(const struct intel_crtc_state *crtc_state) +{ + return bigjoiner_secondary_pipes(crtc_state); +} + u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state) { if (crtc_state->joiner_pipes) @@ -1725,18 +1740,17 @@ static void hsw_crtc_enable(struct intel_atomic_state *state, struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); enum transcoder cpu_transcoder = new_crtc_state->cpu_transcoder; struct intel_crtc *pipe_crtc; + enum pipe pipes; + int i; if (drm_WARN_ON(&dev_priv->drm, crtc->active)) return; - - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(new_crtc_state)) + for_each_pipe_crtc_modeset_enable(dev_priv, pipe_crtc, new_crtc_state, pipes, i) intel_dmc_enable_pipe(display, pipe_crtc->pipe); intel_encoders_pre_pll_enable(state, crtc); - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(new_crtc_state)) { + for_each_pipe_crtc_modeset_enable(dev_priv, pipe_crtc, new_crtc_state, pipes, i) { const struct intel_crtc_state *pipe_crtc_state = intel_atomic_get_new_crtc_state(state, pipe_crtc); @@ -1746,8 +1760,7 @@ static void hsw_crtc_enable(struct intel_atomic_state *state, intel_encoders_pre_enable(state, crtc); - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(new_crtc_state)) { + for_each_pipe_crtc_modeset_enable(dev_priv, pipe_crtc, new_crtc_state, pipes, i) { const struct intel_crtc_state *pipe_crtc_state = intel_atomic_get_new_crtc_state(state, pipe_crtc); @@ -1765,8 +1778,7 @@ static void hsw_crtc_enable(struct intel_atomic_state *state, if (!transcoder_is_dsi(cpu_transcoder)) hsw_configure_cpu_transcoder(new_crtc_state); - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(new_crtc_state)) { + for_each_pipe_crtc_modeset_enable(dev_priv, pipe_crtc, new_crtc_state, pipes, i) { const struct intel_crtc_state *pipe_crtc_state = intel_atomic_get_new_crtc_state(state, pipe_crtc); @@ -1801,8 +1813,7 @@ static void hsw_crtc_enable(struct intel_atomic_state *state, intel_encoders_enable(state, crtc); - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(new_crtc_state)) { + for_each_pipe_crtc_modeset_enable(dev_priv, pipe_crtc, new_crtc_state, pipes, i) { const struct intel_crtc_state *pipe_crtc_state = intel_atomic_get_new_crtc_state(state, pipe_crtc); enum pipe hsw_workaround_pipe; @@ -1889,6 +1900,8 @@ static void hsw_crtc_disable(struct intel_atomic_state *state, const struct intel_crtc_state *old_crtc_state = intel_atomic_get_old_crtc_state(state, crtc); struct intel_crtc *pipe_crtc; + enum pipe pipes; + int i; /* * FIXME collapse everything to one hook. @@ -1897,8 +1910,7 @@ static void hsw_crtc_disable(struct intel_atomic_state *state, intel_encoders_disable(state, crtc); intel_encoders_post_disable(state, crtc); - for_each_intel_crtc_in_pipe_mask(&i915->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(old_crtc_state)) { + for_each_pipe_crtc_modeset_disable(i915, pipe_crtc, old_crtc_state, pipes, i) { const struct intel_crtc_state *old_pipe_crtc_state = intel_atomic_get_old_crtc_state(state, pipe_crtc); @@ -1907,8 +1919,7 @@ static void hsw_crtc_disable(struct intel_atomic_state *state, intel_encoders_post_pll_disable(state, crtc); - for_each_intel_crtc_in_pipe_mask(&i915->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(old_crtc_state)) + for_each_pipe_crtc_modeset_disable(i915, pipe_crtc, old_crtc_state, pipes, i) intel_dmc_disable_pipe(display, pipe_crtc->pipe); } diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h index 894f58ead279..eeee03a9796b 100644 --- a/drivers/gpu/drm/i915/display/intel_display.h +++ b/drivers/gpu/drm/i915/display/intel_display.h @@ -402,6 +402,30 @@ enum phy_fia { ((connector) = to_intel_connector((__state)->base.connectors[__i].ptr), \ (new_connector_state) = to_intel_digital_connector_state((__state)->base.connectors[__i].new_state), 1)) +#define for_each_crtc_in_masks(__dev_priv, crtc, first_pipes, second_pipes, pipes, i) \ + for ((i) = 0, (pipes) = ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)); \ + (i) < 8 && ((crtc) = intel_crtc_for_pipe(to_intel_display(&__dev_priv->drm), (i) % I915_MAX_PIPES), 1); \ + (i)++) \ + for_each_if((crtc) && (pipes) & BIT(i)) + +#define for_each_crtc_in_masks_reverse(__dev_priv, crtc, first_pipes, second_pipes, pipes, i) \ + for ((i) = 7, (pipes) = ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)); \ + (i) >= 0 && ((crtc) = intel_crtc_for_pipe(to_intel_display(&__dev_priv->drm), (i) % I915_MAX_PIPES), 1); \ + (i)--) \ + for_each_if((crtc) && (pipes) & BIT(i)) + +#define for_each_pipe_crtc_modeset_disable(__dev_priv, crtc, crtc_state, pipes, i) \ + for_each_crtc_in_masks(__dev_priv, crtc, \ + _modeset_primary_pipes(crtc_state), \ + _modeset_secondary_pipes(crtc_state), \ + pipes, i) + +#define for_each_pipe_crtc_modeset_enable(__dev_priv, crtc, crtc_state, pipes, i) \ + for_each_crtc_in_masks_reverse(__dev_priv, crtc, \ + _modeset_primary_pipes(crtc_state), \ + _modeset_secondary_pipes(crtc_state), \ + pipes, i) + int intel_atomic_check(struct drm_device *dev, struct drm_atomic_state *state); int intel_atomic_add_affected_planes(struct intel_atomic_state *state, struct intel_crtc *crtc); @@ -429,6 +453,8 @@ bool intel_crtc_is_joiner_primary(const struct intel_crtc_state *crtc_state); bool intel_crtc_is_bigjoiner_primary(const struct intel_crtc_state *crtc_state); bool intel_crtc_is_bigjoiner_secondary(const struct intel_crtc_state *crtc_state); u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state); +u8 _modeset_primary_pipes(const struct intel_crtc_state *crtc_state); +u8 _modeset_secondary_pipes(const struct intel_crtc_state *crtc_state); struct intel_crtc *intel_primary_crtc(const struct intel_crtc_state *crtc_state); bool intel_crtc_get_pipe_config(struct intel_crtc_state *crtc_state); bool intel_pipe_config_compare(const struct intel_crtc_state *current_config, diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c index 15541932b809..0be11db7d880 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c @@ -1001,6 +1001,8 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, struct drm_i915_private *dev_priv = to_i915(connector->base.dev); struct intel_crtc *pipe_crtc; bool last_mst_stream; + enum pipe pipes; + int i; intel_dp->active_mst_links--; last_mst_stream = intel_dp->active_mst_links == 0; @@ -1008,8 +1010,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, DISPLAY_VER(dev_priv) >= 12 && last_mst_stream && !intel_dp_mst_is_master_trans(old_crtc_state)); - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(old_crtc_state)) { + for_each_pipe_crtc_modeset_disable(dev_priv, pipe_crtc, old_crtc_state, pipes, i) { const struct intel_crtc_state *old_pipe_crtc_state = intel_atomic_get_old_crtc_state(state, pipe_crtc); @@ -1033,8 +1034,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, intel_ddi_disable_transcoder_func(old_crtc_state); - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(old_crtc_state)) { + for_each_pipe_crtc_modeset_disable(dev_priv, pipe_crtc, old_crtc_state, pipes, i) { const struct intel_crtc_state *old_pipe_crtc_state = intel_atomic_get_old_crtc_state(state, pipe_crtc); @@ -1253,7 +1253,8 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, enum transcoder trans = pipe_config->cpu_transcoder; bool first_mst_stream = intel_dp->active_mst_links == 1; struct intel_crtc *pipe_crtc; - int ret; + enum pipe pipes; + int ret, i; drm_WARN_ON(&dev_priv->drm, pipe_config->has_pch_encoder); @@ -1300,8 +1301,7 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, intel_enable_transcoder(pipe_config); - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(pipe_config)) { + for_each_pipe_crtc_modeset_enable(dev_priv, pipe_crtc, pipe_config, pipes, i) { const struct intel_crtc_state *pipe_crtc_state = intel_atomic_get_new_crtc_state(state, pipe_crtc); -- 2.45.2 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] drm/i915/display: Enhance iterators for modeset en/disable 2024-09-17 8:23 ` [PATCH 2/2] drm/i915/display: Enhance iterators for modeset en/disable Ankit Nautiyal @ 2024-09-17 13:31 ` Ville Syrjälä 2024-09-18 4:58 ` Nautiyal, Ankit K 0 siblings, 1 reply; 11+ messages in thread From: Ville Syrjälä @ 2024-09-17 13:31 UTC (permalink / raw) To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, suraj.kandpal On Tue, Sep 17, 2024 at 01:53:58PM +0530, Ankit Nautiyal wrote: > Joiners have specific enabling and disabling order dependent on primary > and secondary pipes. This becomes more complex with ultrajoiner where we > have ultrajoiner primary/secondary pipes in addition to bigjoiner > primary/secondary pipes. To unify the approach that works for present > and future joiner cases, use primary and secondary pipe masks to > iterate over pipes. > > If joiner is used, derive bigoiner primary and secondary pipe masks > and use following sequences: > Disabling : disable primary pipes followed by secondary pipes, > Enabling: enable secondary pipes followed by primary pipes. > > This works well with ultrajoiner too, as ultrajoiner has 2 bigjoiner > primary/secondary pairs (AC, BD). > > For non joiner case, enable/disable based on usual pipe order A-D, D-A > respectively. > > Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> > Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/display/intel_ddi.c | 13 ++++--- > drivers/gpu/drm/i915/display/intel_display.c | 41 +++++++++++++------- > drivers/gpu/drm/i915/display/intel_display.h | 26 +++++++++++++ > drivers/gpu/drm/i915/display/intel_dp_mst.c | 14 +++---- > 4 files changed, 66 insertions(+), 28 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c > index b1c294236cc8..60603839f495 100644 > --- a/drivers/gpu/drm/i915/display/intel_ddi.c > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c > @@ -3117,9 +3117,10 @@ static void intel_ddi_post_disable_hdmi_or_sst(struct intel_atomic_state *state, > { > struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > struct intel_crtc *pipe_crtc; > + enum pipe pipes; Those should be u32 or something everywhere as they are those double bitmasks of pipes. But actually, I think we can just get rid of this variable entirely. We only use it once within the loop anyway, so could just calculate it on the spot inside the macro with: for_each_if((crtc) && ((first_pipes) << I915_MAX_PIPES | (second_pipes)) & BIT(i)) etc. > + int i; > > - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(old_crtc_state)) { > + for_each_pipe_crtc_modeset_disable(dev_priv, pipe_crtc, old_crtc_state, pipes, i) { > const struct intel_crtc_state *old_pipe_crtc_state = > intel_atomic_get_old_crtc_state(state, pipe_crtc); > > @@ -3130,8 +3131,7 @@ static void intel_ddi_post_disable_hdmi_or_sst(struct intel_atomic_state *state, > > intel_ddi_disable_transcoder_func(old_crtc_state); > > - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(old_crtc_state)) { > + for_each_pipe_crtc_modeset_disable(dev_priv, pipe_crtc, old_crtc_state, pipes, i) { > const struct intel_crtc_state *old_pipe_crtc_state = > intel_atomic_get_old_crtc_state(state, pipe_crtc); > > @@ -3384,6 +3384,8 @@ static void intel_enable_ddi(struct intel_atomic_state *state, > { > struct drm_i915_private *i915 = to_i915(encoder->base.dev); > struct intel_crtc *pipe_crtc; > + enum pipe pipes; > + int i; > > intel_ddi_enable_transcoder_func(encoder, crtc_state); > > @@ -3394,8 +3396,7 @@ static void intel_enable_ddi(struct intel_atomic_state *state, > > intel_ddi_wait_for_fec_status(encoder, crtc_state, true); > > - for_each_intel_crtc_in_pipe_mask_reverse(&i915->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(crtc_state)) { > + for_each_pipe_crtc_modeset_enable(i915, pipe_crtc, crtc_state, pipes, i) { > const struct intel_crtc_state *pipe_crtc_state = > intel_atomic_get_new_crtc_state(state, pipe_crtc); > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c > index deacdf82e143..179aa7c66081 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -295,6 +295,21 @@ bool intel_crtc_is_bigjoiner_secondary(const struct intel_crtc_state *crtc_state > return BIT(crtc->pipe) & bigjoiner_secondary_pipes(crtc_state); > } > > +u8 _modeset_primary_pipes(const struct intel_crtc_state *crtc_state) We probably want to call these "_intel_modeset_..." to keep to a some kind of sensible namespace. > +{ > + struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > + > + if (!is_bigjoiner(crtc_state)) > + return BIT(crtc->pipe); > + > + return bigjoiner_primary_pipes(crtc_state); > +} > + > +u8 _modeset_secondary_pipes(const struct intel_crtc_state *crtc_state) > +{ > + return bigjoiner_secondary_pipes(crtc_state); > +} > + > u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state) > { > if (crtc_state->joiner_pipes) > @@ -1725,18 +1740,17 @@ static void hsw_crtc_enable(struct intel_atomic_state *state, > struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > enum transcoder cpu_transcoder = new_crtc_state->cpu_transcoder; > struct intel_crtc *pipe_crtc; > + enum pipe pipes; > + int i; > > if (drm_WARN_ON(&dev_priv->drm, crtc->active)) > return; > - > - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(new_crtc_state)) > + for_each_pipe_crtc_modeset_enable(dev_priv, pipe_crtc, new_crtc_state, pipes, i) > intel_dmc_enable_pipe(display, pipe_crtc->pipe); > > intel_encoders_pre_pll_enable(state, crtc); > > - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(new_crtc_state)) { > + for_each_pipe_crtc_modeset_enable(dev_priv, pipe_crtc, new_crtc_state, pipes, i) { > const struct intel_crtc_state *pipe_crtc_state = > intel_atomic_get_new_crtc_state(state, pipe_crtc); > > @@ -1746,8 +1760,7 @@ static void hsw_crtc_enable(struct intel_atomic_state *state, > > intel_encoders_pre_enable(state, crtc); > > - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(new_crtc_state)) { > + for_each_pipe_crtc_modeset_enable(dev_priv, pipe_crtc, new_crtc_state, pipes, i) { > const struct intel_crtc_state *pipe_crtc_state = > intel_atomic_get_new_crtc_state(state, pipe_crtc); > > @@ -1765,8 +1778,7 @@ static void hsw_crtc_enable(struct intel_atomic_state *state, > if (!transcoder_is_dsi(cpu_transcoder)) > hsw_configure_cpu_transcoder(new_crtc_state); > > - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(new_crtc_state)) { > + for_each_pipe_crtc_modeset_enable(dev_priv, pipe_crtc, new_crtc_state, pipes, i) { > const struct intel_crtc_state *pipe_crtc_state = > intel_atomic_get_new_crtc_state(state, pipe_crtc); > > @@ -1801,8 +1813,7 @@ static void hsw_crtc_enable(struct intel_atomic_state *state, > > intel_encoders_enable(state, crtc); > > - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(new_crtc_state)) { > + for_each_pipe_crtc_modeset_enable(dev_priv, pipe_crtc, new_crtc_state, pipes, i) { > const struct intel_crtc_state *pipe_crtc_state = > intel_atomic_get_new_crtc_state(state, pipe_crtc); > enum pipe hsw_workaround_pipe; > @@ -1889,6 +1900,8 @@ static void hsw_crtc_disable(struct intel_atomic_state *state, > const struct intel_crtc_state *old_crtc_state = > intel_atomic_get_old_crtc_state(state, crtc); > struct intel_crtc *pipe_crtc; > + enum pipe pipes; > + int i; > > /* > * FIXME collapse everything to one hook. > @@ -1897,8 +1910,7 @@ static void hsw_crtc_disable(struct intel_atomic_state *state, > intel_encoders_disable(state, crtc); > intel_encoders_post_disable(state, crtc); > > - for_each_intel_crtc_in_pipe_mask(&i915->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(old_crtc_state)) { > + for_each_pipe_crtc_modeset_disable(i915, pipe_crtc, old_crtc_state, pipes, i) { > const struct intel_crtc_state *old_pipe_crtc_state = > intel_atomic_get_old_crtc_state(state, pipe_crtc); > > @@ -1907,8 +1919,7 @@ static void hsw_crtc_disable(struct intel_atomic_state *state, > > intel_encoders_post_pll_disable(state, crtc); > > - for_each_intel_crtc_in_pipe_mask(&i915->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(old_crtc_state)) > + for_each_pipe_crtc_modeset_disable(i915, pipe_crtc, old_crtc_state, pipes, i) > intel_dmc_disable_pipe(display, pipe_crtc->pipe); > } > > diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h > index 894f58ead279..eeee03a9796b 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.h > +++ b/drivers/gpu/drm/i915/display/intel_display.h > @@ -402,6 +402,30 @@ enum phy_fia { > ((connector) = to_intel_connector((__state)->base.connectors[__i].ptr), \ > (new_connector_state) = to_intel_digital_connector_state((__state)->base.connectors[__i].new_state), 1)) > > +#define for_each_crtc_in_masks(__dev_priv, crtc, first_pipes, second_pipes, pipes, i) \ Please pass in 'display' instead of 'dev_priv'. And if the callers don't have 'display' already available, you should declare one at the start of each caller. For the encoder hooks it's best to grab it via the encoder (ie. display=to_intel_display(encoder) since the top level atomic state might be NULL on account of intel_sanitize_encoder() being an idiot (someone really needs to introduce a temporary atomic state to fix this footgun...). For .crtc_{enable,disable}() you can grab it via the top level atomic state safely (ie. display=to_intel_display(state)). > + for ((i) = 0, (pipes) = ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)); \ > + (i) < 8 && ((crtc) = intel_crtc_for_pipe(to_intel_display(&__dev_priv->drm), (i) % I915_MAX_PIPES), 1); \ s/8/I915_MAX_PIPES * 2/ > + (i)++) \ > + for_each_if((crtc) && (pipes) & BIT(i)) > + > +#define for_each_crtc_in_masks_reverse(__dev_priv, crtc, first_pipes, second_pipes, pipes, i) \ > + for ((i) = 7, (pipes) = ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)); \ s/7/I915_MAX_PIPES * 2 - 1/ > + (i) >= 0 && ((crtc) = intel_crtc_for_pipe(to_intel_display(&__dev_priv->drm), (i) % I915_MAX_PIPES), 1); \ > + (i)--) \ > + for_each_if((crtc) && (pipes) & BIT(i)) > + > +#define for_each_pipe_crtc_modeset_disable(__dev_priv, crtc, crtc_state, pipes, i) \ > + for_each_crtc_in_masks(__dev_priv, crtc, \ > + _modeset_primary_pipes(crtc_state), \ > + _modeset_secondary_pipes(crtc_state), \ > + pipes, i) > + > +#define for_each_pipe_crtc_modeset_enable(__dev_priv, crtc, crtc_state, pipes, i) \ > + for_each_crtc_in_masks_reverse(__dev_priv, crtc, \ > + _modeset_primary_pipes(crtc_state), \ > + _modeset_secondary_pipes(crtc_state), \ > + pipes, i) > + > int intel_atomic_check(struct drm_device *dev, struct drm_atomic_state *state); > int intel_atomic_add_affected_planes(struct intel_atomic_state *state, > struct intel_crtc *crtc); > @@ -429,6 +453,8 @@ bool intel_crtc_is_joiner_primary(const struct intel_crtc_state *crtc_state); > bool intel_crtc_is_bigjoiner_primary(const struct intel_crtc_state *crtc_state); > bool intel_crtc_is_bigjoiner_secondary(const struct intel_crtc_state *crtc_state); > u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state); > +u8 _modeset_primary_pipes(const struct intel_crtc_state *crtc_state); > +u8 _modeset_secondary_pipes(const struct intel_crtc_state *crtc_state); > struct intel_crtc *intel_primary_crtc(const struct intel_crtc_state *crtc_state); > bool intel_crtc_get_pipe_config(struct intel_crtc_state *crtc_state); > bool intel_pipe_config_compare(const struct intel_crtc_state *current_config, > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c > index 15541932b809..0be11db7d880 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c > @@ -1001,6 +1001,8 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, > struct drm_i915_private *dev_priv = to_i915(connector->base.dev); > struct intel_crtc *pipe_crtc; > bool last_mst_stream; > + enum pipe pipes; > + int i; > > intel_dp->active_mst_links--; > last_mst_stream = intel_dp->active_mst_links == 0; > @@ -1008,8 +1010,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, > DISPLAY_VER(dev_priv) >= 12 && last_mst_stream && > !intel_dp_mst_is_master_trans(old_crtc_state)); > > - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(old_crtc_state)) { > + for_each_pipe_crtc_modeset_disable(dev_priv, pipe_crtc, old_crtc_state, pipes, i) { > const struct intel_crtc_state *old_pipe_crtc_state = > intel_atomic_get_old_crtc_state(state, pipe_crtc); > > @@ -1033,8 +1034,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, > > intel_ddi_disable_transcoder_func(old_crtc_state); > > - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(old_crtc_state)) { > + for_each_pipe_crtc_modeset_disable(dev_priv, pipe_crtc, old_crtc_state, pipes, i) { > const struct intel_crtc_state *old_pipe_crtc_state = > intel_atomic_get_old_crtc_state(state, pipe_crtc); > > @@ -1253,7 +1253,8 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, > enum transcoder trans = pipe_config->cpu_transcoder; > bool first_mst_stream = intel_dp->active_mst_links == 1; > struct intel_crtc *pipe_crtc; > - int ret; > + enum pipe pipes; > + int ret, i; > > drm_WARN_ON(&dev_priv->drm, pipe_config->has_pch_encoder); > > @@ -1300,8 +1301,7 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, > > intel_enable_transcoder(pipe_config); > > - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(pipe_config)) { > + for_each_pipe_crtc_modeset_enable(dev_priv, pipe_crtc, pipe_config, pipes, i) { > const struct intel_crtc_state *pipe_crtc_state = > intel_atomic_get_new_crtc_state(state, pipe_crtc); > > -- > 2.45.2 -- Ville Syrjälä Intel ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] drm/i915/display: Enhance iterators for modeset en/disable 2024-09-17 13:31 ` Ville Syrjälä @ 2024-09-18 4:58 ` Nautiyal, Ankit K 0 siblings, 0 replies; 11+ messages in thread From: Nautiyal, Ankit K @ 2024-09-18 4:58 UTC (permalink / raw) To: Ville Syrjälä; +Cc: intel-gfx, intel-xe, suraj.kandpal On 9/17/2024 7:01 PM, Ville Syrjälä wrote: > On Tue, Sep 17, 2024 at 01:53:58PM +0530, Ankit Nautiyal wrote: >> Joiners have specific enabling and disabling order dependent on primary >> and secondary pipes. This becomes more complex with ultrajoiner where we >> have ultrajoiner primary/secondary pipes in addition to bigjoiner >> primary/secondary pipes. To unify the approach that works for present >> and future joiner cases, use primary and secondary pipe masks to >> iterate over pipes. >> >> If joiner is used, derive bigoiner primary and secondary pipe masks >> and use following sequences: >> Disabling : disable primary pipes followed by secondary pipes, >> Enabling: enable secondary pipes followed by primary pipes. >> >> This works well with ultrajoiner too, as ultrajoiner has 2 bigjoiner >> primary/secondary pairs (AC, BD). >> >> For non joiner case, enable/disable based on usual pipe order A-D, D-A >> respectively. >> >> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> >> Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com> >> --- >> drivers/gpu/drm/i915/display/intel_ddi.c | 13 ++++--- >> drivers/gpu/drm/i915/display/intel_display.c | 41 +++++++++++++------- >> drivers/gpu/drm/i915/display/intel_display.h | 26 +++++++++++++ >> drivers/gpu/drm/i915/display/intel_dp_mst.c | 14 +++---- >> 4 files changed, 66 insertions(+), 28 deletions(-) >> >> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c >> index b1c294236cc8..60603839f495 100644 >> --- a/drivers/gpu/drm/i915/display/intel_ddi.c >> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c >> @@ -3117,9 +3117,10 @@ static void intel_ddi_post_disable_hdmi_or_sst(struct intel_atomic_state *state, >> { >> struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); >> struct intel_crtc *pipe_crtc; >> + enum pipe pipes; > Those should be u32 or something everywhere as they are those > double bitmasks of pipes. Oops, this was unintended. Thanks for catching this. > > But actually, I think we can just get rid of this variable entirely. We > only use it once within the loop anyway, so could just calculate it on > the spot inside the macro with: > for_each_if((crtc) && ((first_pipes) << I915_MAX_PIPES | (second_pipes)) & BIT(i)) > etc. Got it will drop pipes. >> + int i; >> >> - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc, >> - intel_crtc_joined_pipe_mask(old_crtc_state)) { >> + for_each_pipe_crtc_modeset_disable(dev_priv, pipe_crtc, old_crtc_state, pipes, i) { >> const struct intel_crtc_state *old_pipe_crtc_state = >> intel_atomic_get_old_crtc_state(state, pipe_crtc); >> >> @@ -3130,8 +3131,7 @@ static void intel_ddi_post_disable_hdmi_or_sst(struct intel_atomic_state *state, >> >> intel_ddi_disable_transcoder_func(old_crtc_state); >> >> - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc, >> - intel_crtc_joined_pipe_mask(old_crtc_state)) { >> + for_each_pipe_crtc_modeset_disable(dev_priv, pipe_crtc, old_crtc_state, pipes, i) { >> const struct intel_crtc_state *old_pipe_crtc_state = >> intel_atomic_get_old_crtc_state(state, pipe_crtc); >> >> @@ -3384,6 +3384,8 @@ static void intel_enable_ddi(struct intel_atomic_state *state, >> { >> struct drm_i915_private *i915 = to_i915(encoder->base.dev); >> struct intel_crtc *pipe_crtc; >> + enum pipe pipes; >> + int i; >> >> intel_ddi_enable_transcoder_func(encoder, crtc_state); >> >> @@ -3394,8 +3396,7 @@ static void intel_enable_ddi(struct intel_atomic_state *state, >> >> intel_ddi_wait_for_fec_status(encoder, crtc_state, true); >> >> - for_each_intel_crtc_in_pipe_mask_reverse(&i915->drm, pipe_crtc, >> - intel_crtc_joined_pipe_mask(crtc_state)) { >> + for_each_pipe_crtc_modeset_enable(i915, pipe_crtc, crtc_state, pipes, i) { >> const struct intel_crtc_state *pipe_crtc_state = >> intel_atomic_get_new_crtc_state(state, pipe_crtc); >> >> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c >> index deacdf82e143..179aa7c66081 100644 >> --- a/drivers/gpu/drm/i915/display/intel_display.c >> +++ b/drivers/gpu/drm/i915/display/intel_display.c >> @@ -295,6 +295,21 @@ bool intel_crtc_is_bigjoiner_secondary(const struct intel_crtc_state *crtc_state >> return BIT(crtc->pipe) & bigjoiner_secondary_pipes(crtc_state); >> } >> >> +u8 _modeset_primary_pipes(const struct intel_crtc_state *crtc_state) > We probably want to call these "_intel_modeset_..." to keep > to a some kind of sensible namespace. Makes sense, will change this. >> +{ >> + struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); >> + >> + if (!is_bigjoiner(crtc_state)) >> + return BIT(crtc->pipe); >> + >> + return bigjoiner_primary_pipes(crtc_state); >> +} >> + >> +u8 _modeset_secondary_pipes(const struct intel_crtc_state *crtc_state) >> +{ >> + return bigjoiner_secondary_pipes(crtc_state); >> +} >> + >> u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state) >> { >> if (crtc_state->joiner_pipes) >> @@ -1725,18 +1740,17 @@ static void hsw_crtc_enable(struct intel_atomic_state *state, >> struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); >> enum transcoder cpu_transcoder = new_crtc_state->cpu_transcoder; >> struct intel_crtc *pipe_crtc; >> + enum pipe pipes; >> + int i; >> >> if (drm_WARN_ON(&dev_priv->drm, crtc->active)) >> return; >> - >> - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, >> - intel_crtc_joined_pipe_mask(new_crtc_state)) >> + for_each_pipe_crtc_modeset_enable(dev_priv, pipe_crtc, new_crtc_state, pipes, i) >> intel_dmc_enable_pipe(display, pipe_crtc->pipe); >> >> intel_encoders_pre_pll_enable(state, crtc); >> >> - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, >> - intel_crtc_joined_pipe_mask(new_crtc_state)) { >> + for_each_pipe_crtc_modeset_enable(dev_priv, pipe_crtc, new_crtc_state, pipes, i) { >> const struct intel_crtc_state *pipe_crtc_state = >> intel_atomic_get_new_crtc_state(state, pipe_crtc); >> >> @@ -1746,8 +1760,7 @@ static void hsw_crtc_enable(struct intel_atomic_state *state, >> >> intel_encoders_pre_enable(state, crtc); >> >> - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, >> - intel_crtc_joined_pipe_mask(new_crtc_state)) { >> + for_each_pipe_crtc_modeset_enable(dev_priv, pipe_crtc, new_crtc_state, pipes, i) { >> const struct intel_crtc_state *pipe_crtc_state = >> intel_atomic_get_new_crtc_state(state, pipe_crtc); >> >> @@ -1765,8 +1778,7 @@ static void hsw_crtc_enable(struct intel_atomic_state *state, >> if (!transcoder_is_dsi(cpu_transcoder)) >> hsw_configure_cpu_transcoder(new_crtc_state); >> >> - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, >> - intel_crtc_joined_pipe_mask(new_crtc_state)) { >> + for_each_pipe_crtc_modeset_enable(dev_priv, pipe_crtc, new_crtc_state, pipes, i) { >> const struct intel_crtc_state *pipe_crtc_state = >> intel_atomic_get_new_crtc_state(state, pipe_crtc); >> >> @@ -1801,8 +1813,7 @@ static void hsw_crtc_enable(struct intel_atomic_state *state, >> >> intel_encoders_enable(state, crtc); >> >> - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, >> - intel_crtc_joined_pipe_mask(new_crtc_state)) { >> + for_each_pipe_crtc_modeset_enable(dev_priv, pipe_crtc, new_crtc_state, pipes, i) { >> const struct intel_crtc_state *pipe_crtc_state = >> intel_atomic_get_new_crtc_state(state, pipe_crtc); >> enum pipe hsw_workaround_pipe; >> @@ -1889,6 +1900,8 @@ static void hsw_crtc_disable(struct intel_atomic_state *state, >> const struct intel_crtc_state *old_crtc_state = >> intel_atomic_get_old_crtc_state(state, crtc); >> struct intel_crtc *pipe_crtc; >> + enum pipe pipes; >> + int i; >> >> /* >> * FIXME collapse everything to one hook. >> @@ -1897,8 +1910,7 @@ static void hsw_crtc_disable(struct intel_atomic_state *state, >> intel_encoders_disable(state, crtc); >> intel_encoders_post_disable(state, crtc); >> >> - for_each_intel_crtc_in_pipe_mask(&i915->drm, pipe_crtc, >> - intel_crtc_joined_pipe_mask(old_crtc_state)) { >> + for_each_pipe_crtc_modeset_disable(i915, pipe_crtc, old_crtc_state, pipes, i) { >> const struct intel_crtc_state *old_pipe_crtc_state = >> intel_atomic_get_old_crtc_state(state, pipe_crtc); >> >> @@ -1907,8 +1919,7 @@ static void hsw_crtc_disable(struct intel_atomic_state *state, >> >> intel_encoders_post_pll_disable(state, crtc); >> >> - for_each_intel_crtc_in_pipe_mask(&i915->drm, pipe_crtc, >> - intel_crtc_joined_pipe_mask(old_crtc_state)) >> + for_each_pipe_crtc_modeset_disable(i915, pipe_crtc, old_crtc_state, pipes, i) >> intel_dmc_disable_pipe(display, pipe_crtc->pipe); >> } >> >> diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h >> index 894f58ead279..eeee03a9796b 100644 >> --- a/drivers/gpu/drm/i915/display/intel_display.h >> +++ b/drivers/gpu/drm/i915/display/intel_display.h >> @@ -402,6 +402,30 @@ enum phy_fia { >> ((connector) = to_intel_connector((__state)->base.connectors[__i].ptr), \ >> (new_connector_state) = to_intel_digital_connector_state((__state)->base.connectors[__i].new_state), 1)) >> >> +#define for_each_crtc_in_masks(__dev_priv, crtc, first_pipes, second_pipes, pipes, i) \ > Please pass in 'display' instead of 'dev_priv'. > > And if the callers don't have 'display' already available, > you should declare one at the start of each caller. > > For the encoder hooks it's best to grab it via the encoder (ie. > display=to_intel_display(encoder) since the top level atomic state > might be NULL on account of intel_sanitize_encoder() being an > idiot (someone really needs to introduce a temporary atomic state > to fix this footgun...). > > For .crtc_{enable,disable}() you can grab it via the top level > atomic state safely (ie. display=to_intel_display(state)). Noted, will change accordingly. > >> + for ((i) = 0, (pipes) = ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)); \ >> + (i) < 8 && ((crtc) = intel_crtc_for_pipe(to_intel_display(&__dev_priv->drm), (i) % I915_MAX_PIPES), 1); \ > s/8/I915_MAX_PIPES * 2/ Missed to change this. > >> + (i)++) \ >> + for_each_if((crtc) && (pipes) & BIT(i)) >> + >> +#define for_each_crtc_in_masks_reverse(__dev_priv, crtc, first_pipes, second_pipes, pipes, i) \ >> + for ((i) = 7, (pipes) = ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)); \ > s/7/I915_MAX_PIPES * 2 - 1/ This as well. >> + (i) >= 0 && ((crtc) = intel_crtc_for_pipe(to_intel_display(&__dev_priv->drm), (i) % I915_MAX_PIPES), 1); \ >> + (i)--) \ >> + for_each_if((crtc) && (pipes) & BIT(i)) >> + >> +#define for_each_pipe_crtc_modeset_disable(__dev_priv, crtc, crtc_state, pipes, i) \ >> + for_each_crtc_in_masks(__dev_priv, crtc, \ >> + _modeset_primary_pipes(crtc_state), \ >> + _modeset_secondary_pipes(crtc_state), \ >> + pipes, i) >> + >> +#define for_each_pipe_crtc_modeset_enable(__dev_priv, crtc, crtc_state, pipes, i) \ >> + for_each_crtc_in_masks_reverse(__dev_priv, crtc, \ >> + _modeset_primary_pipes(crtc_state), \ >> + _modeset_secondary_pipes(crtc_state), \ >> + pipes, i) Here I had taken liberty to change the suggested macros to always have primary_pipes as first_pipes and secondary_pipes as second_pipes. We always shift second_pipes by num_pipes in both in-order and reverse-order, just in reverse order we start from the last bit. Regards, Ankit >> + >> int intel_atomic_check(struct drm_device *dev, struct drm_atomic_state *state); >> int intel_atomic_add_affected_planes(struct intel_atomic_state *state, >> struct intel_crtc *crtc); >> @@ -429,6 +453,8 @@ bool intel_crtc_is_joiner_primary(const struct intel_crtc_state *crtc_state); >> bool intel_crtc_is_bigjoiner_primary(const struct intel_crtc_state *crtc_state); >> bool intel_crtc_is_bigjoiner_secondary(const struct intel_crtc_state *crtc_state); >> u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state); >> +u8 _modeset_primary_pipes(const struct intel_crtc_state *crtc_state); >> +u8 _modeset_secondary_pipes(const struct intel_crtc_state *crtc_state); >> struct intel_crtc *intel_primary_crtc(const struct intel_crtc_state *crtc_state); >> bool intel_crtc_get_pipe_config(struct intel_crtc_state *crtc_state); >> bool intel_pipe_config_compare(const struct intel_crtc_state *current_config, >> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c >> index 15541932b809..0be11db7d880 100644 >> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c >> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c >> @@ -1001,6 +1001,8 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, >> struct drm_i915_private *dev_priv = to_i915(connector->base.dev); >> struct intel_crtc *pipe_crtc; >> bool last_mst_stream; >> + enum pipe pipes; >> + int i; >> >> intel_dp->active_mst_links--; >> last_mst_stream = intel_dp->active_mst_links == 0; >> @@ -1008,8 +1010,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, >> DISPLAY_VER(dev_priv) >= 12 && last_mst_stream && >> !intel_dp_mst_is_master_trans(old_crtc_state)); >> >> - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc, >> - intel_crtc_joined_pipe_mask(old_crtc_state)) { >> + for_each_pipe_crtc_modeset_disable(dev_priv, pipe_crtc, old_crtc_state, pipes, i) { >> const struct intel_crtc_state *old_pipe_crtc_state = >> intel_atomic_get_old_crtc_state(state, pipe_crtc); >> >> @@ -1033,8 +1034,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, >> >> intel_ddi_disable_transcoder_func(old_crtc_state); >> >> - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc, >> - intel_crtc_joined_pipe_mask(old_crtc_state)) { >> + for_each_pipe_crtc_modeset_disable(dev_priv, pipe_crtc, old_crtc_state, pipes, i) { >> const struct intel_crtc_state *old_pipe_crtc_state = >> intel_atomic_get_old_crtc_state(state, pipe_crtc); >> >> @@ -1253,7 +1253,8 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, >> enum transcoder trans = pipe_config->cpu_transcoder; >> bool first_mst_stream = intel_dp->active_mst_links == 1; >> struct intel_crtc *pipe_crtc; >> - int ret; >> + enum pipe pipes; >> + int ret, i; >> >> drm_WARN_ON(&dev_priv->drm, pipe_config->has_pch_encoder); >> >> @@ -1300,8 +1301,7 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, >> >> intel_enable_transcoder(pipe_config); >> >> - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, >> - intel_crtc_joined_pipe_mask(pipe_config)) { >> + for_each_pipe_crtc_modeset_enable(dev_priv, pipe_crtc, pipe_config, pipes, i) { >> const struct intel_crtc_state *pipe_crtc_state = >> intel_atomic_get_new_crtc_state(state, pipe_crtc); >> >> -- >> 2.45.2 ^ permalink raw reply [flat|nested] 11+ messages in thread
* ✗ Fi.CI.CHECKPATCH: warning for Modify iterators to prepare for ultrajoiner 2024-09-17 8:23 [PATCH 0/2] Modify iterators to prepare for ultrajoiner Ankit Nautiyal 2024-09-17 8:23 ` [PATCH 1/2] drm/i915: Add some essential functionality for joiners Ankit Nautiyal 2024-09-17 8:23 ` [PATCH 2/2] drm/i915/display: Enhance iterators for modeset en/disable Ankit Nautiyal @ 2024-09-17 13:02 ` Patchwork 2024-09-17 13:11 ` ✓ Fi.CI.BAT: success " Patchwork 2024-09-18 7:02 ` ✗ Fi.CI.IGT: failure " Patchwork 4 siblings, 0 replies; 11+ messages in thread From: Patchwork @ 2024-09-17 13:02 UTC (permalink / raw) To: Nautiyal, Ankit K; +Cc: intel-gfx == Series Details == Series: Modify iterators to prepare for ultrajoiner URL : https://patchwork.freedesktop.org/series/138751/ State : warning == Summary == Error: dim checkpatch failed 0725cfc71687 drm/i915: Add some essential functionality for joiners 488bdd3f086f drm/i915/display: Enhance iterators for modeset en/disable -:192: CHECK:MACRO_ARG_PRECEDENCE: Macro argument '__dev_priv' may be better as '(__dev_priv)' to avoid precedence issues #192: FILE: drivers/gpu/drm/i915/display/intel_display.h:395: +#define for_each_crtc_in_masks(__dev_priv, crtc, first_pipes, second_pipes, pipes, i) \ + for ((i) = 0, (pipes) = ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)); \ + (i) < 8 && ((crtc) = intel_crtc_for_pipe(to_intel_display(&__dev_priv->drm), (i) % I915_MAX_PIPES), 1); \ + (i)++) \ + for_each_if((crtc) && (pipes) & BIT(i)) -:192: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'crtc' - possible side-effects? #192: FILE: drivers/gpu/drm/i915/display/intel_display.h:395: +#define for_each_crtc_in_masks(__dev_priv, crtc, first_pipes, second_pipes, pipes, i) \ + for ((i) = 0, (pipes) = ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)); \ + (i) < 8 && ((crtc) = intel_crtc_for_pipe(to_intel_display(&__dev_priv->drm), (i) % I915_MAX_PIPES), 1); \ + (i)++) \ + for_each_if((crtc) && (pipes) & BIT(i)) -:192: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'pipes' - possible side-effects? #192: FILE: drivers/gpu/drm/i915/display/intel_display.h:395: +#define for_each_crtc_in_masks(__dev_priv, crtc, first_pipes, second_pipes, pipes, i) \ + for ((i) = 0, (pipes) = ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)); \ + (i) < 8 && ((crtc) = intel_crtc_for_pipe(to_intel_display(&__dev_priv->drm), (i) % I915_MAX_PIPES), 1); \ + (i)++) \ + for_each_if((crtc) && (pipes) & BIT(i)) -:192: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects? #192: FILE: drivers/gpu/drm/i915/display/intel_display.h:395: +#define for_each_crtc_in_masks(__dev_priv, crtc, first_pipes, second_pipes, pipes, i) \ + for ((i) = 0, (pipes) = ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)); \ + (i) < 8 && ((crtc) = intel_crtc_for_pipe(to_intel_display(&__dev_priv->drm), (i) % I915_MAX_PIPES), 1); \ + (i)++) \ + for_each_if((crtc) && (pipes) & BIT(i)) -:194: WARNING:LONG_LINE: line length of 118 exceeds 100 columns #194: FILE: drivers/gpu/drm/i915/display/intel_display.h:397: + (i) < 8 && ((crtc) = intel_crtc_for_pipe(to_intel_display(&__dev_priv->drm), (i) % I915_MAX_PIPES), 1); \ -:194: ERROR:CODE_INDENT: code indent should use tabs where possible #194: FILE: drivers/gpu/drm/i915/display/intel_display.h:397: + (i) < 8 && ((crtc) = intel_crtc_for_pipe(to_intel_display(&__dev_priv->drm), (i) % I915_MAX_PIPES), 1); \$ -:194: WARNING:LEADING_SPACE: please, no spaces at the start of a line #194: FILE: drivers/gpu/drm/i915/display/intel_display.h:397: + (i) < 8 && ((crtc) = intel_crtc_for_pipe(to_intel_display(&__dev_priv->drm), (i) % I915_MAX_PIPES), 1); \$ -:195: ERROR:CODE_INDENT: code indent should use tabs where possible #195: FILE: drivers/gpu/drm/i915/display/intel_display.h:398: + (i)++) \$ -:195: WARNING:LEADING_SPACE: please, no spaces at the start of a line #195: FILE: drivers/gpu/drm/i915/display/intel_display.h:398: + (i)++) \$ -:196: ERROR:CODE_INDENT: code indent should use tabs where possible #196: FILE: drivers/gpu/drm/i915/display/intel_display.h:399: + for_each_if((crtc) && (pipes) & BIT(i))$ -:196: WARNING:LEADING_SPACE: please, no spaces at the start of a line #196: FILE: drivers/gpu/drm/i915/display/intel_display.h:399: + for_each_if((crtc) && (pipes) & BIT(i))$ -:198: CHECK:MACRO_ARG_PRECEDENCE: Macro argument '__dev_priv' may be better as '(__dev_priv)' to avoid precedence issues #198: FILE: drivers/gpu/drm/i915/display/intel_display.h:401: +#define for_each_crtc_in_masks_reverse(__dev_priv, crtc, first_pipes, second_pipes, pipes, i) \ + for ((i) = 7, (pipes) = ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)); \ + (i) >= 0 && ((crtc) = intel_crtc_for_pipe(to_intel_display(&__dev_priv->drm), (i) % I915_MAX_PIPES), 1); \ + (i)--) \ + for_each_if((crtc) && (pipes) & BIT(i)) -:198: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'crtc' - possible side-effects? #198: FILE: drivers/gpu/drm/i915/display/intel_display.h:401: +#define for_each_crtc_in_masks_reverse(__dev_priv, crtc, first_pipes, second_pipes, pipes, i) \ + for ((i) = 7, (pipes) = ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)); \ + (i) >= 0 && ((crtc) = intel_crtc_for_pipe(to_intel_display(&__dev_priv->drm), (i) % I915_MAX_PIPES), 1); \ + (i)--) \ + for_each_if((crtc) && (pipes) & BIT(i)) -:198: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'pipes' - possible side-effects? #198: FILE: drivers/gpu/drm/i915/display/intel_display.h:401: +#define for_each_crtc_in_masks_reverse(__dev_priv, crtc, first_pipes, second_pipes, pipes, i) \ + for ((i) = 7, (pipes) = ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)); \ + (i) >= 0 && ((crtc) = intel_crtc_for_pipe(to_intel_display(&__dev_priv->drm), (i) % I915_MAX_PIPES), 1); \ + (i)--) \ + for_each_if((crtc) && (pipes) & BIT(i)) -:198: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects? #198: FILE: drivers/gpu/drm/i915/display/intel_display.h:401: +#define for_each_crtc_in_masks_reverse(__dev_priv, crtc, first_pipes, second_pipes, pipes, i) \ + for ((i) = 7, (pipes) = ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)); \ + (i) >= 0 && ((crtc) = intel_crtc_for_pipe(to_intel_display(&__dev_priv->drm), (i) % I915_MAX_PIPES), 1); \ + (i)--) \ + for_each_if((crtc) && (pipes) & BIT(i)) -:200: WARNING:LONG_LINE: line length of 119 exceeds 100 columns #200: FILE: drivers/gpu/drm/i915/display/intel_display.h:403: + (i) >= 0 && ((crtc) = intel_crtc_for_pipe(to_intel_display(&__dev_priv->drm), (i) % I915_MAX_PIPES), 1); \ -:200: ERROR:CODE_INDENT: code indent should use tabs where possible #200: FILE: drivers/gpu/drm/i915/display/intel_display.h:403: + (i) >= 0 && ((crtc) = intel_crtc_for_pipe(to_intel_display(&__dev_priv->drm), (i) % I915_MAX_PIPES), 1); \$ -:200: WARNING:LEADING_SPACE: please, no spaces at the start of a line #200: FILE: drivers/gpu/drm/i915/display/intel_display.h:403: + (i) >= 0 && ((crtc) = intel_crtc_for_pipe(to_intel_display(&__dev_priv->drm), (i) % I915_MAX_PIPES), 1); \$ -:201: ERROR:CODE_INDENT: code indent should use tabs where possible #201: FILE: drivers/gpu/drm/i915/display/intel_display.h:404: + (i)--) \$ -:201: WARNING:LEADING_SPACE: please, no spaces at the start of a line #201: FILE: drivers/gpu/drm/i915/display/intel_display.h:404: + (i)--) \$ -:202: ERROR:CODE_INDENT: code indent should use tabs where possible #202: FILE: drivers/gpu/drm/i915/display/intel_display.h:405: + for_each_if((crtc) && (pipes) & BIT(i))$ -:202: WARNING:LEADING_SPACE: please, no spaces at the start of a line #202: FILE: drivers/gpu/drm/i915/display/intel_display.h:405: + for_each_if((crtc) && (pipes) & BIT(i))$ -:204: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'crtc_state' - possible side-effects? #204: FILE: drivers/gpu/drm/i915/display/intel_display.h:407: +#define for_each_pipe_crtc_modeset_disable(__dev_priv, crtc, crtc_state, pipes, i) \ + for_each_crtc_in_masks(__dev_priv, crtc, \ + _modeset_primary_pipes(crtc_state), \ + _modeset_secondary_pipes(crtc_state), \ + pipes, i) -:210: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'crtc_state' - possible side-effects? #210: FILE: drivers/gpu/drm/i915/display/intel_display.h:413: +#define for_each_pipe_crtc_modeset_enable(__dev_priv, crtc, crtc_state, pipes, i) \ + for_each_crtc_in_masks_reverse(__dev_priv, crtc, \ + _modeset_primary_pipes(crtc_state), \ + _modeset_secondary_pipes(crtc_state), \ + pipes, i) total: 6 errors, 8 warnings, 10 checks, 216 lines checked ^ permalink raw reply [flat|nested] 11+ messages in thread
* ✓ Fi.CI.BAT: success for Modify iterators to prepare for ultrajoiner 2024-09-17 8:23 [PATCH 0/2] Modify iterators to prepare for ultrajoiner Ankit Nautiyal ` (2 preceding siblings ...) 2024-09-17 13:02 ` ✗ Fi.CI.CHECKPATCH: warning for Modify iterators to prepare for ultrajoiner Patchwork @ 2024-09-17 13:11 ` Patchwork 2024-09-18 7:02 ` ✗ Fi.CI.IGT: failure " Patchwork 4 siblings, 0 replies; 11+ messages in thread From: Patchwork @ 2024-09-17 13:11 UTC (permalink / raw) To: Nautiyal, Ankit K; +Cc: intel-gfx [-- Attachment #1: Type: text/plain, Size: 2551 bytes --] == Series Details == Series: Modify iterators to prepare for ultrajoiner URL : https://patchwork.freedesktop.org/series/138751/ State : success == Summary == CI Bug Log - changes from CI_DRM_15429 -> Patchwork_138751v1 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/index.html Participating hosts (40 -> 37) ------------------------------ Missing (3): fi-cfl-8109u fi-snb-2520m fi-kbl-8809g Known issues ------------ Here are the changes found in Patchwork_138751v1 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@i915_selftest@live: - bat-arls-2: [PASS][1] -> [DMESG-WARN][2] ([i915#10341] / [i915#12133]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/bat-arls-2/igt@i915_selftest@live.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/bat-arls-2/igt@i915_selftest@live.html * igt@i915_selftest@live@hangcheck: - bat-arls-2: [PASS][3] -> [DMESG-WARN][4] ([i915#11349]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/bat-arls-2/igt@i915_selftest@live@hangcheck.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/bat-arls-2/igt@i915_selftest@live@hangcheck.html * igt@kms_pipe_crc_basic@nonblocking-crc: - bat-arls-5: [PASS][5] -> [INCOMPLETE][6] ([i915#11320]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/bat-arls-5/igt@kms_pipe_crc_basic@nonblocking-crc.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/bat-arls-5/igt@kms_pipe_crc_basic@nonblocking-crc.html [i915#10341]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10341 [i915#11320]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11320 [i915#11349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11349 [i915#12133]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12133 Build changes ------------- * Linux: CI_DRM_15429 -> Patchwork_138751v1 CI-20190529: 20190529 CI_DRM_15429: 38e1b615fb395b928e514108e908cd6edf3d34c3 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_8022: 2d82f767a959d58c04ff3876d59d67924208d4ef @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git Patchwork_138751v1: 38e1b615fb395b928e514108e908cd6edf3d34c3 @ git://anongit.freedesktop.org/gfx-ci/linux == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/index.html [-- Attachment #2: Type: text/html, Size: 3197 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* ✗ Fi.CI.IGT: failure for Modify iterators to prepare for ultrajoiner 2024-09-17 8:23 [PATCH 0/2] Modify iterators to prepare for ultrajoiner Ankit Nautiyal ` (3 preceding siblings ...) 2024-09-17 13:11 ` ✓ Fi.CI.BAT: success " Patchwork @ 2024-09-18 7:02 ` Patchwork 4 siblings, 0 replies; 11+ messages in thread From: Patchwork @ 2024-09-18 7:02 UTC (permalink / raw) To: Ankit Nautiyal; +Cc: intel-gfx [-- Attachment #1: Type: text/plain, Size: 72614 bytes --] == Series Details == Series: Modify iterators to prepare for ultrajoiner URL : https://patchwork.freedesktop.org/series/138751/ State : failure == Summary == CI Bug Log - changes from CI_DRM_15429_full -> Patchwork_138751v1_full ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with Patchwork_138751v1_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_138751v1_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them to document this new failure mode, which will reduce false positives in CI. Participating hosts (9 -> 9) ------------------------------ No changes in participating hosts Possible new issues ------------------- Here are the unknown changes that may have been introduced in Patchwork_138751v1_full: ### IGT changes ### #### Possible regressions #### * igt@i915_pm_rps@reset: - shard-tglu: [PASS][1] -> [INCOMPLETE][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-tglu-8/igt@i915_pm_rps@reset.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-9/igt@i915_pm_rps@reset.html * igt@kms_color@ctm-signed: - shard-dg2: [PASS][3] -> [ABORT][4] +1 other test abort [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg2-5/igt@kms_color@ctm-signed.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-5/igt@kms_color@ctm-signed.html Known issues ------------ Here are the changes found in Patchwork_138751v1_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@device_reset@unbind-reset-rebind: - shard-dg1: NOTRUN -> [ABORT][5] ([i915#11814] / [i915#11815]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-17/igt@device_reset@unbind-reset-rebind.html * igt@drm_fdinfo@busy-idle@vecs0: - shard-mtlp: NOTRUN -> [SKIP][6] ([i915#8414]) +6 other tests skip [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-7/igt@drm_fdinfo@busy-idle@vecs0.html * igt@drm_fdinfo@most-busy-check-all: - shard-rkl: NOTRUN -> [FAIL][7] ([i915#12179]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@drm_fdinfo@most-busy-check-all.html * igt@drm_fdinfo@most-busy-check-all@rcs0: - shard-rkl: NOTRUN -> [FAIL][8] ([i915#7742]) [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@drm_fdinfo@most-busy-check-all@rcs0.html * igt@drm_fdinfo@most-busy-idle-check-all@vecs1: - shard-dg2: NOTRUN -> [SKIP][9] ([i915#8414]) +7 other tests skip [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@drm_fdinfo@most-busy-idle-check-all@vecs1.html * igt@gem_caching@writes: - shard-mtlp: NOTRUN -> [SKIP][10] ([i915#4873]) [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@gem_caching@writes.html * igt@gem_ccs@block-multicopy-inplace: - shard-rkl: NOTRUN -> [SKIP][11] ([i915#3555] / [i915#9323]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@gem_ccs@block-multicopy-inplace.html * igt@gem_ccs@ctrl-surf-copy-new-ctx: - shard-mtlp: NOTRUN -> [SKIP][12] ([i915#9323]) [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@gem_ccs@ctrl-surf-copy-new-ctx.html - shard-dg1: NOTRUN -> [SKIP][13] ([i915#9323]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@gem_ccs@ctrl-surf-copy-new-ctx.html * igt@gem_ctx_engines@invalid-engines: - shard-rkl: [PASS][14] -> [FAIL][15] ([i915#12027]) [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-rkl-5/igt@gem_ctx_engines@invalid-engines.html [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-1/igt@gem_ctx_engines@invalid-engines.html - shard-tglu: [PASS][16] -> [FAIL][17] ([i915#12027]) [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-tglu-5/igt@gem_ctx_engines@invalid-engines.html [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-9/igt@gem_ctx_engines@invalid-engines.html * igt@gem_ctx_sseu@mmap-args: - shard-dg1: NOTRUN -> [SKIP][18] ([i915#280]) [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@gem_ctx_sseu@mmap-args.html - shard-mtlp: NOTRUN -> [SKIP][19] ([i915#280]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@gem_ctx_sseu@mmap-args.html * igt@gem_exec_fair@basic-none-rrul: - shard-rkl: NOTRUN -> [FAIL][20] ([i915#2842]) +3 other tests fail [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@gem_exec_fair@basic-none-rrul.html * igt@gem_exec_fair@basic-none-solo: - shard-glk: NOTRUN -> [FAIL][21] ([i915#2842]) +1 other test fail [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-glk8/igt@gem_exec_fair@basic-none-solo.html * igt@gem_exec_fair@basic-pace-solo: - shard-dg2: NOTRUN -> [SKIP][22] ([i915#3539]) [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@gem_exec_fair@basic-pace-solo.html * igt@gem_exec_fair@basic-pace@rcs0: - shard-rkl: [PASS][23] -> [FAIL][24] ([i915#2842]) +1 other test fail [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-rkl-6/igt@gem_exec_fair@basic-pace@rcs0.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@gem_exec_fair@basic-pace@rcs0.html * igt@gem_exec_fence@concurrent: - shard-mtlp: NOTRUN -> [SKIP][25] ([i915#4812]) [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-7/igt@gem_exec_fence@concurrent.html * igt@gem_exec_reloc@basic-gtt-cpu-active: - shard-dg2: NOTRUN -> [SKIP][26] ([i915#3281]) +1 other test skip [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@gem_exec_reloc@basic-gtt-cpu-active.html * igt@gem_exec_reloc@basic-gtt-wc-active: - shard-mtlp: NOTRUN -> [SKIP][27] ([i915#3281]) +4 other tests skip [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@gem_exec_reloc@basic-gtt-wc-active.html * igt@gem_exec_reloc@basic-wc-read-active: - shard-dg1: NOTRUN -> [SKIP][28] ([i915#3281]) +3 other tests skip [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@gem_exec_reloc@basic-wc-read-active.html * igt@gem_exec_reloc@basic-write-read-noreloc: - shard-rkl: NOTRUN -> [SKIP][29] ([i915#3281]) +6 other tests skip [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@gem_exec_reloc@basic-write-read-noreloc.html * igt@gem_exec_schedule@semaphore-power: - shard-rkl: NOTRUN -> [SKIP][30] ([i915#7276]) [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@gem_exec_schedule@semaphore-power.html * igt@gem_exec_suspend@basic-s4-devices: - shard-dg2: NOTRUN -> [ABORT][31] ([i915#7975] / [i915#8213]) +1 other test abort [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@gem_exec_suspend@basic-s4-devices.html * igt@gem_lmem_swapping@parallel-multi: - shard-rkl: NOTRUN -> [SKIP][32] ([i915#4613]) +3 other tests skip [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@gem_lmem_swapping@parallel-multi.html * igt@gem_lmem_swapping@verify-random: - shard-tglu: NOTRUN -> [SKIP][33] ([i915#4613]) [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@gem_lmem_swapping@verify-random.html * igt@gem_mmap_gtt@basic-read-write-distinct: - shard-mtlp: NOTRUN -> [SKIP][34] ([i915#4077]) +7 other tests skip [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@gem_mmap_gtt@basic-read-write-distinct.html * igt@gem_mmap_gtt@fault-concurrent-x: - shard-dg2: NOTRUN -> [SKIP][35] ([i915#4077]) +3 other tests skip [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@gem_mmap_gtt@fault-concurrent-x.html * igt@gem_mmap_wc@bad-object: - shard-dg2: NOTRUN -> [SKIP][36] ([i915#4083]) +1 other test skip [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@gem_mmap_wc@bad-object.html * igt@gem_mmap_wc@write-wc-read-gtt: - shard-dg1: NOTRUN -> [SKIP][37] ([i915#4083]) [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@gem_mmap_wc@write-wc-read-gtt.html * igt@gem_partial_pwrite_pread@reads-snoop: - shard-dg1: NOTRUN -> [SKIP][38] ([i915#3282]) [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@gem_partial_pwrite_pread@reads-snoop.html - shard-mtlp: NOTRUN -> [SKIP][39] ([i915#3282]) +1 other test skip [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@gem_partial_pwrite_pread@reads-snoop.html * igt@gem_partial_pwrite_pread@reads-uncached: - shard-dg2: NOTRUN -> [SKIP][40] ([i915#3282]) +1 other test skip [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@gem_partial_pwrite_pread@reads-uncached.html * igt@gem_pwrite@basic-exhaustion: - shard-rkl: NOTRUN -> [SKIP][41] ([i915#3282]) +4 other tests skip [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@gem_pwrite@basic-exhaustion.html * igt@gem_pxp@create-valid-protected-context: - shard-dg2: NOTRUN -> [SKIP][42] ([i915#4270]) [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@gem_pxp@create-valid-protected-context.html * igt@gem_pxp@reject-modify-context-protection-off-1: - shard-tglu: NOTRUN -> [SKIP][43] ([i915#4270]) [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@gem_pxp@reject-modify-context-protection-off-1.html * igt@gem_pxp@reject-modify-context-protection-on: - shard-rkl: NOTRUN -> [SKIP][44] ([i915#4270]) +2 other tests skip [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@gem_pxp@reject-modify-context-protection-on.html * igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs: - shard-mtlp: NOTRUN -> [SKIP][45] ([i915#8428]) [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-7/igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs.html * igt@gem_render_copy@y-tiled-mc-ccs-to-yf-tiled-ccs: - shard-dg2: NOTRUN -> [SKIP][46] ([i915#5190] / [i915#8428]) [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@gem_render_copy@y-tiled-mc-ccs-to-yf-tiled-ccs.html * igt@gem_tiled_partial_pwrite_pread@writes-after-reads: - shard-dg1: NOTRUN -> [SKIP][47] ([i915#4077]) +4 other tests skip [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@gem_tiled_partial_pwrite_pread@writes-after-reads.html * igt@gem_userptr_blits@access-control: - shard-dg2: NOTRUN -> [SKIP][48] ([i915#3297]) [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@gem_userptr_blits@access-control.html * igt@gem_userptr_blits@relocations: - shard-rkl: NOTRUN -> [SKIP][49] ([i915#3281] / [i915#3297]) [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@gem_userptr_blits@relocations.html * igt@gem_userptr_blits@unsync-unmap: - shard-rkl: NOTRUN -> [SKIP][50] ([i915#3297]) +1 other test skip [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@gem_userptr_blits@unsync-unmap.html * igt@gen7_exec_parse@bitmasks: - shard-dg2: NOTRUN -> [SKIP][51] +6 other tests skip [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@gen7_exec_parse@bitmasks.html * igt@gen9_exec_parse@bb-oversize: - shard-mtlp: NOTRUN -> [SKIP][52] ([i915#2856]) [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-7/igt@gen9_exec_parse@bb-oversize.html * igt@gen9_exec_parse@bb-secure: - shard-tglu: NOTRUN -> [SKIP][53] ([i915#2527] / [i915#2856]) +1 other test skip [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@gen9_exec_parse@bb-secure.html * igt@gen9_exec_parse@bb-start-far: - shard-rkl: NOTRUN -> [SKIP][54] ([i915#2527]) +1 other test skip [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@gen9_exec_parse@bb-start-far.html * igt@i915_module_load@reload-with-fault-injection: - shard-snb: [PASS][55] -> [ABORT][56] ([i915#9820]) [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-snb6/igt@i915_module_load@reload-with-fault-injection.html [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-snb7/igt@i915_module_load@reload-with-fault-injection.html - shard-dg2: [PASS][57] -> [ABORT][58] ([i915#9820]) [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg2-6/igt@i915_module_load@reload-with-fault-injection.html [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-2/igt@i915_module_load@reload-with-fault-injection.html * igt@i915_module_load@resize-bar: - shard-dg1: NOTRUN -> [SKIP][59] ([i915#7178]) [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@i915_module_load@resize-bar.html - shard-mtlp: NOTRUN -> [SKIP][60] ([i915#6412]) [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@i915_module_load@resize-bar.html * igt@i915_pm_freq_api@freq-reset-multiple: - shard-rkl: NOTRUN -> [SKIP][61] ([i915#8399]) [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@i915_pm_freq_api@freq-reset-multiple.html * igt@i915_suspend@basic-s3-without-i915: - shard-mtlp: NOTRUN -> [SKIP][62] ([i915#6645]) [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@i915_suspend@basic-s3-without-i915.html * igt@intel_hwmon@hwmon-read: - shard-rkl: NOTRUN -> [SKIP][63] ([i915#7707]) [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@intel_hwmon@hwmon-read.html * igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels: - shard-glk: NOTRUN -> [SKIP][64] ([i915#1769]) [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-glk8/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html * igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-1: - shard-tglu: [PASS][65] -> [FAIL][66] ([i915#11808]) +1 other test fail [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-tglu-8/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-1.html [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-9/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-1.html * igt@kms_big_fb@4-tiled-32bpp-rotate-180: - shard-dg1: NOTRUN -> [SKIP][67] ([i915#4538] / [i915#5286]) +1 other test skip [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@kms_big_fb@4-tiled-32bpp-rotate-180.html * igt@kms_big_fb@4-tiled-addfb: - shard-rkl: NOTRUN -> [SKIP][68] ([i915#5286]) +3 other tests skip [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_big_fb@4-tiled-addfb.html * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0: - shard-tglu: NOTRUN -> [SKIP][69] ([i915#5286]) [69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0.html * igt@kms_big_fb@linear-32bpp-rotate-90: - shard-dg1: NOTRUN -> [SKIP][70] ([i915#3638]) +1 other test skip [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@kms_big_fb@linear-32bpp-rotate-90.html * igt@kms_big_fb@linear-64bpp-rotate-90: - shard-rkl: NOTRUN -> [SKIP][71] ([i915#3638]) +3 other tests skip [71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_big_fb@linear-64bpp-rotate-90.html * igt@kms_big_fb@yf-tiled-64bpp-rotate-180: - shard-dg2: NOTRUN -> [SKIP][72] ([i915#4538] / [i915#5190]) +2 other tests skip [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@kms_big_fb@yf-tiled-64bpp-rotate-180.html * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180: - shard-dg1: NOTRUN -> [SKIP][73] ([i915#4538]) +2 other tests skip [73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-17/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180.html * igt@kms_big_joiner@basic-force-joiner: - shard-dg2: NOTRUN -> [SKIP][74] ([i915#10656]) [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@kms_big_joiner@basic-force-joiner.html * igt@kms_ccs@bad-pixel-format-4-tiled-dg2-rc-ccs: - shard-mtlp: NOTRUN -> [SKIP][75] ([i915#6095]) +19 other tests skip [75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-7/igt@kms_ccs@bad-pixel-format-4-tiled-dg2-rc-ccs.html * igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs@pipe-d-hdmi-a-1: - shard-dg2: NOTRUN -> [SKIP][76] ([i915#10307] / [i915#10434] / [i915#6095]) +4 other tests skip [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-4/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs@pipe-d-hdmi-a-1.html * igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs: - shard-rkl: NOTRUN -> [SKIP][77] ([i915#12042]) [77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs.html * igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs@pipe-d-hdmi-a-1: - shard-dg2: NOTRUN -> [SKIP][78] ([i915#10307] / [i915#6095]) +153 other tests skip [78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-4/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs@pipe-d-hdmi-a-1.html * igt@kms_ccs@crc-primary-rotation-180-yf-tiled-ccs@pipe-d-hdmi-a-3: - shard-dg1: NOTRUN -> [SKIP][79] ([i915#6095]) +53 other tests skip [79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-13/igt@kms_ccs@crc-primary-rotation-180-yf-tiled-ccs@pipe-d-hdmi-a-3.html * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs: - shard-tglu: NOTRUN -> [SKIP][80] ([i915#12042]) [80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs@pipe-a-hdmi-a-2: - shard-rkl: NOTRUN -> [SKIP][81] ([i915#6095]) +44 other tests skip [81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs@pipe-a-hdmi-a-2.html * igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs: - shard-mtlp: NOTRUN -> [SKIP][82] ([i915#12042]) [82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-7/igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs.html * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-1: - shard-tglu: NOTRUN -> [SKIP][83] ([i915#6095]) +14 other tests skip [83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-1.html * igt@kms_cdclk@mode-transition: - shard-dg1: NOTRUN -> [SKIP][84] ([i915#3742]) [84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-17/igt@kms_cdclk@mode-transition.html * igt@kms_cdclk@mode-transition@pipe-a-dp-4: - shard-dg2: NOTRUN -> [SKIP][85] ([i915#11616] / [i915#7213]) +3 other tests skip [85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-11/igt@kms_cdclk@mode-transition@pipe-a-dp-4.html * igt@kms_chamelium_audio@hdmi-audio-edid: - shard-dg1: NOTRUN -> [SKIP][86] ([i915#7828]) +2 other tests skip [86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@kms_chamelium_audio@hdmi-audio-edid.html * igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats: - shard-mtlp: NOTRUN -> [SKIP][87] ([i915#7828]) +3 other tests skip [87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats.html * igt@kms_chamelium_hpd@common-hpd-after-suspend: - shard-tglu: NOTRUN -> [SKIP][88] ([i915#7828]) +1 other test skip [88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@kms_chamelium_hpd@common-hpd-after-suspend.html * igt@kms_chamelium_hpd@dp-hpd-for-each-pipe: - shard-dg2: NOTRUN -> [SKIP][89] ([i915#7828]) +1 other test skip [89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@kms_chamelium_hpd@dp-hpd-for-each-pipe.html * igt@kms_chamelium_hpd@hdmi-hpd-fast: - shard-rkl: NOTRUN -> [SKIP][90] ([i915#7828]) +6 other tests skip [90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_chamelium_hpd@hdmi-hpd-fast.html * igt@kms_content_protection@dp-mst-lic-type-0: - shard-mtlp: NOTRUN -> [SKIP][91] ([i915#3299]) +1 other test skip [91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-7/igt@kms_content_protection@dp-mst-lic-type-0.html * igt@kms_content_protection@dp-mst-type-1: - shard-dg1: NOTRUN -> [SKIP][92] ([i915#3299]) [92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@kms_content_protection@dp-mst-type-1.html * igt@kms_content_protection@mei-interface: - shard-rkl: NOTRUN -> [SKIP][93] ([i915#9424]) [93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_content_protection@mei-interface.html * igt@kms_content_protection@type1: - shard-rkl: NOTRUN -> [SKIP][94] ([i915#7118] / [i915#9424]) [94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_content_protection@type1.html * igt@kms_content_protection@uevent: - shard-tglu: NOTRUN -> [SKIP][95] ([i915#6944] / [i915#7116] / [i915#7118] / [i915#9424]) [95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@kms_content_protection@uevent.html * igt@kms_cursor_crc@cursor-onscreen-512x512: - shard-tglu: NOTRUN -> [SKIP][96] ([i915#11453]) +1 other test skip [96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@kms_cursor_crc@cursor-onscreen-512x512.html * igt@kms_cursor_crc@cursor-random-256x85: - shard-mtlp: NOTRUN -> [SKIP][97] ([i915#8814]) [97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@kms_cursor_crc@cursor-random-256x85.html * igt@kms_cursor_crc@cursor-random-32x10: - shard-dg2: NOTRUN -> [SKIP][98] ([i915#3555]) +2 other tests skip [98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@kms_cursor_crc@cursor-random-32x10.html * igt@kms_cursor_crc@cursor-rapid-movement-max-size: - shard-dg1: NOTRUN -> [SKIP][99] ([i915#3555]) [99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-17/igt@kms_cursor_crc@cursor-rapid-movement-max-size.html * igt@kms_cursor_crc@cursor-sliding-max-size: - shard-rkl: NOTRUN -> [SKIP][100] ([i915#3555]) +1 other test skip [100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_cursor_crc@cursor-sliding-max-size.html * igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy: - shard-rkl: NOTRUN -> [SKIP][101] +22 other tests skip [101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html * igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size: - shard-mtlp: NOTRUN -> [SKIP][102] ([i915#9809]) [102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size.html * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions: - shard-mtlp: NOTRUN -> [SKIP][103] +8 other tests skip [103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-7/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions.html * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions: - shard-mtlp: NOTRUN -> [SKIP][104] ([i915#4213]) [104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-7/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html * igt@kms_cursor_legacy@torture-move: - shard-dg1: [PASS][105] -> [DMESG-WARN][106] ([i915#10166]) +1 other test dmesg-warn [105]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg1-15/igt@kms_cursor_legacy@torture-move.html [106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-13/igt@kms_cursor_legacy@torture-move.html - shard-tglu: [PASS][107] -> [DMESG-WARN][108] ([i915#10166]) [107]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-tglu-3/igt@kms_cursor_legacy@torture-move.html [108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-5/igt@kms_cursor_legacy@torture-move.html * igt@kms_cursor_legacy@torture-move@pipe-a: - shard-tglu: [PASS][109] -> [DMESG-WARN][110] ([i915#10166] / [i915#1982]) [109]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-tglu-3/igt@kms_cursor_legacy@torture-move@pipe-a.html [110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-5/igt@kms_cursor_legacy@torture-move@pipe-a.html * igt@kms_dirtyfb@drrs-dirtyfb-ioctl: - shard-dg1: NOTRUN -> [SKIP][111] ([i915#9723]) [111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html - shard-mtlp: NOTRUN -> [SKIP][112] ([i915#9833]) [112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html * igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-2: - shard-rkl: NOTRUN -> [SKIP][113] ([i915#3804]) [113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-2.html * igt@kms_dsc@dsc-fractional-bpp: - shard-dg2: NOTRUN -> [SKIP][114] ([i915#3840] / [i915#9688]) [114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@kms_dsc@dsc-fractional-bpp.html * igt@kms_dsc@dsc-fractional-bpp-with-bpc: - shard-dg1: NOTRUN -> [SKIP][115] ([i915#3840]) [115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html - shard-mtlp: NOTRUN -> [SKIP][116] ([i915#3840]) [116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html * igt@kms_dsc@dsc-with-formats: - shard-rkl: NOTRUN -> [SKIP][117] ([i915#3555] / [i915#3840]) [117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_dsc@dsc-with-formats.html * igt@kms_fence_pin_leak: - shard-mtlp: NOTRUN -> [SKIP][118] ([i915#4881]) [118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-7/igt@kms_fence_pin_leak.html * igt@kms_flip@2x-flip-vs-dpms: - shard-tglu: NOTRUN -> [SKIP][119] ([i915#3637]) +2 other tests skip [119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@kms_flip@2x-flip-vs-dpms.html * igt@kms_flip@2x-wf_vblank-ts-check-interruptible: - shard-dg1: NOTRUN -> [SKIP][120] ([i915#9934]) [120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@kms_flip@2x-wf_vblank-ts-check-interruptible.html - shard-mtlp: NOTRUN -> [SKIP][121] ([i915#3637]) [121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@kms_flip@2x-wf_vblank-ts-check-interruptible.html * igt@kms_flip@flip-vs-fences-interruptible: - shard-mtlp: NOTRUN -> [SKIP][122] ([i915#8381]) [122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-7/igt@kms_flip@flip-vs-fences-interruptible.html * igt@kms_flip@plain-flip-ts-check: - shard-dg1: [PASS][123] -> [FAIL][124] ([i915#2122]) [123]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg1-13/igt@kms_flip@plain-flip-ts-check.html [124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-15/igt@kms_flip@plain-flip-ts-check.html * igt@kms_flip@plain-flip-ts-check@b-hdmi-a4: - shard-dg1: NOTRUN -> [FAIL][125] ([i915#2122]) +1 other test fail [125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-15/igt@kms_flip@plain-flip-ts-check@b-hdmi-a4.html * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling: - shard-mtlp: NOTRUN -> [SKIP][126] ([i915#2672] / [i915#3555] / [i915#8813]) +2 other tests skip [126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling: - shard-tglu: NOTRUN -> [SKIP][127] ([i915#2672] / [i915#3555]) [127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling.html * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling@pipe-a-valid-mode: - shard-tglu: NOTRUN -> [SKIP][128] ([i915#2587] / [i915#2672]) [128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling@pipe-a-valid-mode.html * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-default-mode: - shard-mtlp: NOTRUN -> [SKIP][129] ([i915#2672]) +2 other tests skip [129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-7/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-default-mode.html * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode: - shard-rkl: NOTRUN -> [SKIP][130] ([i915#2672]) +4 other tests skip [130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode.html * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode: - shard-dg2: NOTRUN -> [SKIP][131] ([i915#2672]) +1 other test skip [131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode.html * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling: - shard-dg1: NOTRUN -> [SKIP][132] ([i915#2672] / [i915#3555]) +1 other test skip [132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling@pipe-a-valid-mode: - shard-dg1: NOTRUN -> [SKIP][133] ([i915#2587] / [i915#2672]) +1 other test skip [133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling@pipe-a-valid-mode.html * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling: - shard-rkl: NOTRUN -> [SKIP][134] ([i915#2672] / [i915#3555]) +4 other tests skip [134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling.html * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling: - shard-dg2: NOTRUN -> [SKIP][135] ([i915#2672] / [i915#3555] / [i915#5190]) +1 other test skip [135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-gtt: - shard-mtlp: NOTRUN -> [SKIP][136] ([i915#8708]) +3 other tests skip [136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-gtt.html * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-cpu: - shard-tglu: NOTRUN -> [SKIP][137] +13 other tests skip [137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-cpu.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-render: - shard-dg2: NOTRUN -> [SKIP][138] ([i915#3458]) +3 other tests skip [138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-render.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-cpu: - shard-dg1: NOTRUN -> [SKIP][139] +10 other tests skip [139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-cpu.html * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-cpu: - shard-mtlp: NOTRUN -> [SKIP][140] ([i915#1825]) +11 other tests skip [140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-cpu.html * igt@kms_frontbuffer_tracking@fbcpsr-farfromfence-mmap-gtt: - shard-dg1: NOTRUN -> [SKIP][141] ([i915#8708]) +4 other tests skip [141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@kms_frontbuffer_tracking@fbcpsr-farfromfence-mmap-gtt.html * igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-gtt: - shard-rkl: NOTRUN -> [SKIP][142] ([i915#3023]) +15 other tests skip [142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-gtt.html * igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt: - shard-dg1: NOTRUN -> [SKIP][143] ([i915#3458]) +2 other tests skip [143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt.html * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-wc: - shard-dg2: NOTRUN -> [SKIP][144] ([i915#8708]) +3 other tests skip [144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@psr-2p-rte: - shard-dg2: NOTRUN -> [SKIP][145] ([i915#5354]) +5 other tests skip [145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@kms_frontbuffer_tracking@psr-2p-rte.html * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt: - shard-rkl: NOTRUN -> [SKIP][146] ([i915#1825]) +26 other tests skip [146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt.html * igt@kms_hdr@invalid-hdr: - shard-dg2: NOTRUN -> [SKIP][147] ([i915#3555] / [i915#8228]) [147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@kms_hdr@invalid-hdr.html * igt@kms_hdr@static-toggle-dpms: - shard-rkl: NOTRUN -> [SKIP][148] ([i915#3555] / [i915#8228]) +2 other tests skip [148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_hdr@static-toggle-dpms.html * igt@kms_hdr@static-toggle-suspend: - shard-dg2: [PASS][149] -> [SKIP][150] ([i915#3555] / [i915#8228]) [149]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg2-11/igt@kms_hdr@static-toggle-suspend.html [150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-6/igt@kms_hdr@static-toggle-suspend.html * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation: - shard-dg1: NOTRUN -> [SKIP][151] ([i915#12247]) +4 other tests skip [151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation.html * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation@pipe-a: - shard-mtlp: NOTRUN -> [SKIP][152] ([i915#12247]) +4 other tests skip [152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation@pipe-a.html * igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-b: - shard-tglu: NOTRUN -> [SKIP][153] ([i915#12247]) +4 other tests skip [153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-b.html * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20: - shard-dg2: NOTRUN -> [SKIP][154] ([i915#12247] / [i915#9423]) [154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20.html * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-a: - shard-dg2: NOTRUN -> [SKIP][155] ([i915#12247]) +3 other tests skip [155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-a.html * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25: - shard-rkl: NOTRUN -> [SKIP][156] ([i915#6953]) [156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25.html * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-a: - shard-rkl: NOTRUN -> [SKIP][157] ([i915#12247]) +1 other test skip [157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-a.html * igt@kms_pm_backlight@fade-with-suspend: - shard-rkl: NOTRUN -> [SKIP][158] ([i915#5354]) [158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_pm_backlight@fade-with-suspend.html * igt@kms_pm_dc@dc3co-vpb-simulation: - shard-rkl: NOTRUN -> [SKIP][159] ([i915#9685]) [159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_pm_dc@dc3co-vpb-simulation.html * igt@kms_pm_dc@dc6-dpms: - shard-tglu: NOTRUN -> [FAIL][160] ([i915#9295]) [160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@kms_pm_dc@dc6-dpms.html * igt@kms_pm_dc@dc9-dpms: - shard-rkl: NOTRUN -> [SKIP][161] ([i915#4281]) [161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_pm_dc@dc9-dpms.html * igt@kms_pm_lpsp@kms-lpsp: - shard-rkl: NOTRUN -> [SKIP][162] ([i915#9340]) [162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_pm_lpsp@kms-lpsp.html * igt@kms_pm_rpm@dpms-non-lpsp: - shard-rkl: [PASS][163] -> [SKIP][164] ([i915#9519]) [163]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-rkl-1/igt@kms_pm_rpm@dpms-non-lpsp.html [164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-4/igt@kms_pm_rpm@dpms-non-lpsp.html * igt@kms_pm_rpm@modeset-lpsp-stress: - shard-dg1: NOTRUN -> [SKIP][165] ([i915#9519]) [165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@kms_pm_rpm@modeset-lpsp-stress.html * igt@kms_psr2_sf@cursor-plane-move-continuous-sf: - shard-rkl: NOTRUN -> [SKIP][166] ([i915#11520]) +1 other test skip [166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_psr2_sf@cursor-plane-move-continuous-sf.html * igt@kms_psr2_sf@fbc-overlay-plane-move-continuous-exceed-sf: - shard-tglu: NOTRUN -> [SKIP][167] ([i915#11520]) +1 other test skip [167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@kms_psr2_sf@fbc-overlay-plane-move-continuous-exceed-sf.html * igt@kms_psr2_sf@fbc-overlay-primary-update-sf-dmg-area: - shard-dg2: NOTRUN -> [SKIP][168] ([i915#11520]) [168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@kms_psr2_sf@fbc-overlay-primary-update-sf-dmg-area.html * igt@kms_psr2_sf@overlay-plane-update-continuous-sf: - shard-dg1: NOTRUN -> [SKIP][169] ([i915#11520]) [169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@kms_psr2_sf@overlay-plane-update-continuous-sf.html * igt@kms_psr2_su@page_flip-p010: - shard-rkl: NOTRUN -> [SKIP][170] ([i915#9683]) +1 other test skip [170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_psr2_su@page_flip-p010.html * igt@kms_psr@fbc-pr-cursor-plane-onoff: - shard-rkl: NOTRUN -> [SKIP][171] ([i915#1072] / [i915#9732]) +14 other tests skip [171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_psr@fbc-pr-cursor-plane-onoff.html * igt@kms_psr@fbc-psr-sprite-blt: - shard-dg2: NOTRUN -> [SKIP][172] ([i915#1072] / [i915#9732]) +4 other tests skip [172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@kms_psr@fbc-psr-sprite-blt.html * igt@kms_psr@fbc-psr2-basic: - shard-dg1: NOTRUN -> [SKIP][173] ([i915#1072] / [i915#9732]) +4 other tests skip [173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@kms_psr@fbc-psr2-basic.html * igt@kms_psr@pr-cursor-blt: - shard-mtlp: NOTRUN -> [SKIP][174] ([i915#9688]) +5 other tests skip [174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@kms_psr@pr-cursor-blt.html * igt@kms_psr@pr-sprite-mmap-cpu: - shard-tglu: NOTRUN -> [SKIP][175] ([i915#9732]) +4 other tests skip [175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@kms_psr@pr-sprite-mmap-cpu.html * igt@kms_psr@psr-sprite-mmap-gtt@edp-1: - shard-mtlp: NOTRUN -> [SKIP][176] ([i915#4077] / [i915#9688]) +1 other test skip [176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@kms_psr@psr-sprite-mmap-gtt@edp-1.html * igt@kms_psr@psr2-cursor-plane-onoff: - shard-glk: NOTRUN -> [SKIP][177] +41 other tests skip [177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-glk8/igt@kms_psr@psr2-cursor-plane-onoff.html * igt@kms_rotation_crc@bad-pixel-format: - shard-mtlp: NOTRUN -> [SKIP][178] ([i915#4235]) [178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@kms_rotation_crc@bad-pixel-format.html * igt@kms_rotation_crc@primary-y-tiled-reflect-x-180: - shard-mtlp: NOTRUN -> [SKIP][179] ([i915#5289]) [179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@kms_rotation_crc@primary-y-tiled-reflect-x-180.html * igt@kms_rotation_crc@primary-y-tiled-reflect-x-270: - shard-dg2: NOTRUN -> [SKIP][180] ([i915#11131] / [i915#5190]) [180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@kms_rotation_crc@primary-y-tiled-reflect-x-270.html * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0: - shard-rkl: NOTRUN -> [SKIP][181] ([i915#5289]) [181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270: - shard-tglu: NOTRUN -> [SKIP][182] ([i915#5289]) [182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html * igt@kms_scaling_modes@scaling-mode-full: - shard-tglu: NOTRUN -> [SKIP][183] ([i915#3555]) +2 other tests skip [183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@kms_scaling_modes@scaling-mode-full.html * igt@kms_vrr@seamless-rr-switch-drrs: - shard-rkl: NOTRUN -> [SKIP][184] ([i915#9906]) [184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_vrr@seamless-rr-switch-drrs.html * igt@kms_writeback@writeback-fb-id: - shard-dg2: NOTRUN -> [SKIP][185] ([i915#2437]) [185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@kms_writeback@writeback-fb-id.html * igt@kms_writeback@writeback-invalid-parameters: - shard-rkl: NOTRUN -> [SKIP][186] ([i915#2437]) [186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@kms_writeback@writeback-invalid-parameters.html * igt@perf_pmu@busy-double-start@vecs1: - shard-dg2: NOTRUN -> [FAIL][187] ([i915#4349]) +4 other tests fail [187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-8/igt@perf_pmu@busy-double-start@vecs1.html * igt@perf_pmu@busy-idle@vcs1: - shard-dg1: [PASS][188] -> [FAIL][189] ([i915#4349]) +1 other test fail [188]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg1-17/igt@perf_pmu@busy-idle@vcs1.html [189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-16/igt@perf_pmu@busy-idle@vcs1.html * igt@perf_pmu@busy-idle@vecs0: - shard-mtlp: [PASS][190] -> [FAIL][191] ([i915#4349]) [190]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-mtlp-7/igt@perf_pmu@busy-idle@vecs0.html [191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@perf_pmu@busy-idle@vecs0.html * igt@perf_pmu@cpu-hotplug: - shard-mtlp: NOTRUN -> [SKIP][192] ([i915#8850]) [192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@perf_pmu@cpu-hotplug.html - shard-dg1: NOTRUN -> [SKIP][193] ([i915#8850]) [193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-14/igt@perf_pmu@cpu-hotplug.html * igt@prime_vgem@fence-read-hang: - shard-rkl: NOTRUN -> [SKIP][194] ([i915#3708]) [194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@prime_vgem@fence-read-hang.html * igt@syncobj_wait@invalid-wait-zero-handles: - shard-rkl: NOTRUN -> [FAIL][195] ([i915#9781]) [195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-5/igt@syncobj_wait@invalid-wait-zero-handles.html #### Possible fixes #### * igt@gem_ctx_persistence@hostile: - shard-tglu: [FAIL][196] ([i915#11980]) -> [PASS][197] [196]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-tglu-9/igt@gem_ctx_persistence@hostile.html [197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@gem_ctx_persistence@hostile.html * igt@gem_exec_endless@dispatch: - shard-dg2: [TIMEOUT][198] ([i915#7016]) -> [PASS][199] [198]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg2-11/igt@gem_exec_endless@dispatch.html [199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-7/igt@gem_exec_endless@dispatch.html * igt@gem_exec_endless@dispatch@bcs0: - shard-dg2: [TIMEOUT][200] ([i915#3778] / [i915#7016]) -> [PASS][201] [200]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg2-11/igt@gem_exec_endless@dispatch@bcs0.html [201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-7/igt@gem_exec_endless@dispatch@bcs0.html * igt@gem_exec_fair@basic-pace-share: - shard-rkl: [FAIL][202] ([i915#2842]) -> [PASS][203] +1 other test pass [202]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-rkl-6/igt@gem_exec_fair@basic-pace-share.html [203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-6/igt@gem_exec_fair@basic-pace-share.html - shard-tglu: [FAIL][204] ([i915#2842]) -> [PASS][205] +3 other tests pass [204]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-tglu-5/igt@gem_exec_fair@basic-pace-share.html [205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-3/igt@gem_exec_fair@basic-pace-share.html * igt@gem_lmem_swapping@smem-oom: - shard-dg1: [DMESG-WARN][206] ([i915#1982] / [i915#5493]) -> [PASS][207] [206]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg1-15/igt@gem_lmem_swapping@smem-oom.html [207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-15/igt@gem_lmem_swapping@smem-oom.html * igt@gem_lmem_swapping@smem-oom@lmem0: - shard-dg1: [DMESG-WARN][208] ([i915#1982] / [i915#4936] / [i915#5493]) -> [PASS][209] [208]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg1-15/igt@gem_lmem_swapping@smem-oom@lmem0.html [209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-15/igt@gem_lmem_swapping@smem-oom@lmem0.html * igt@i915_pm_rc6_residency@rc6-idle@gt0-bcs0: - shard-dg1: [FAIL][210] ([i915#3591]) -> [PASS][211] +2 other tests pass [210]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg1-16/igt@i915_pm_rc6_residency@rc6-idle@gt0-bcs0.html [211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-16/igt@i915_pm_rc6_residency@rc6-idle@gt0-bcs0.html * igt@i915_selftest@live@workarounds: - shard-mtlp: [ABORT][212] ([i915#12061]) -> [PASS][213] +1 other test pass [212]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-mtlp-3/igt@i915_selftest@live@workarounds.html [213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-6/igt@i915_selftest@live@workarounds.html * igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels@pipe-a-edp-1: - shard-mtlp: [FAIL][214] ([i915#11808] / [i915#5956]) -> [PASS][215] +1 other test pass [214]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-mtlp-6/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels@pipe-a-edp-1.html [215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-1/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels@pipe-a-edp-1.html * igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1: - shard-snb: [FAIL][216] ([i915#5956]) -> [PASS][217] +1 other test pass [216]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-snb5/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1.html [217]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-snb2/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1.html - shard-tglu: [FAIL][218] ([i915#11808]) -> [PASS][219] +1 other test pass [218]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-tglu-7/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1.html [219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-5/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1.html * igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-4: - shard-dg1: [FAIL][220] ([i915#5956]) -> [PASS][221] +1 other test pass [220]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg1-15/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-4.html [221]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-15/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-4.html * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions: - shard-glk: [FAIL][222] ([i915#2346]) -> [PASS][223] [222]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-glk6/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html [223]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-glk7/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html * igt@kms_cursor_legacy@torture-bo: - shard-tglu: [DMESG-WARN][224] ([i915#10166] / [i915#1982]) -> [PASS][225] [224]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-tglu-9/igt@kms_cursor_legacy@torture-bo.html [225]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@kms_cursor_legacy@torture-bo.html * igt@kms_cursor_legacy@torture-bo@pipe-a: - shard-tglu: [DMESG-WARN][226] ([i915#10166]) -> [PASS][227] [226]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-tglu-9/igt@kms_cursor_legacy@torture-bo@pipe-a.html [227]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-8/igt@kms_cursor_legacy@torture-bo@pipe-a.html * igt@kms_dither@fb-8bpc-vs-panel-8bpc: - shard-dg2: [SKIP][228] ([i915#3555]) -> [PASS][229] [228]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg2-5/igt@kms_dither@fb-8bpc-vs-panel-8bpc.html [229]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-11/igt@kms_dither@fb-8bpc-vs-panel-8bpc.html * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-blt: - shard-dg2: [FAIL][230] ([i915#6880]) -> [PASS][231] [230]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg2-2/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-blt.html [231]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-11/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-blt.html * igt@kms_pm_rpm@modeset-lpsp: - shard-dg2: [SKIP][232] ([i915#9519]) -> [PASS][233] +2 other tests pass [232]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg2-6/igt@kms_pm_rpm@modeset-lpsp.html [233]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-2/igt@kms_pm_rpm@modeset-lpsp.html * igt@kms_universal_plane@cursor-fb-leak: - shard-dg1: [FAIL][234] ([i915#9196]) -> [PASS][235] +1 other test pass [234]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg1-14/igt@kms_universal_plane@cursor-fb-leak.html [235]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg1-17/igt@kms_universal_plane@cursor-fb-leak.html - shard-dg2: [FAIL][236] ([i915#9196]) -> [PASS][237] [236]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg2-5/igt@kms_universal_plane@cursor-fb-leak.html [237]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-11/igt@kms_universal_plane@cursor-fb-leak.html * igt@perf_pmu@busy-double-start@bcs0: - shard-mtlp: [FAIL][238] ([i915#4349]) -> [PASS][239] [238]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-mtlp-2/igt@perf_pmu@busy-double-start@bcs0.html [239]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-3/igt@perf_pmu@busy-double-start@bcs0.html #### Warnings #### * igt@gem_exec_big@single: - shard-tglu: [ABORT][240] -> [ABORT][241] ([i915#11713]) [240]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-tglu-3/igt@gem_exec_big@single.html [241]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-5/igt@gem_exec_big@single.html * igt@i915_module_load@reload-with-fault-injection: - shard-tglu: [ABORT][242] ([i915#10887] / [i915#9820]) -> [ABORT][243] ([i915#9820]) [242]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-tglu-9/igt@i915_module_load@reload-with-fault-injection.html [243]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-tglu-9/igt@i915_module_load@reload-with-fault-injection.html - shard-mtlp: [ABORT][244] ([i915#10887] / [i915#11231]) -> [ABORT][245] ([i915#10131] / [i915#10887] / [i915#9820]) [244]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-mtlp-6/igt@i915_module_load@reload-with-fault-injection.html [245]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-8/igt@i915_module_load@reload-with-fault-injection.html * igt@kms_big_fb@4-tiled-8bpp-rotate-90: - shard-mtlp: [ABORT][246] ([i915#10354]) -> [SKIP][247] [246]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-mtlp-8/igt@kms_big_fb@4-tiled-8bpp-rotate-90.html [247]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-mtlp-7/igt@kms_big_fb@4-tiled-8bpp-rotate-90.html * igt@kms_cursor_crc@cursor-offscreen-512x170: - shard-dg2: [SKIP][248] ([i915#11453] / [i915#3359]) -> [SKIP][249] ([i915#11453]) [248]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg2-11/igt@kms_cursor_crc@cursor-offscreen-512x170.html [249]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-7/igt@kms_cursor_crc@cursor-offscreen-512x170.html * igt@kms_cursor_crc@cursor-rapid-movement-512x170: - shard-dg2: [SKIP][250] ([i915#11453]) -> [SKIP][251] ([i915#11453] / [i915#3359]) [250]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg2-5/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html [251]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-11/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html * igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary: - shard-dg2: [SKIP][252] ([i915#10433] / [i915#3458]) -> [SKIP][253] ([i915#3458]) [252]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary.html [253]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-2/igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary.html * igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-cpu: - shard-dg2: [SKIP][254] ([i915#3458]) -> [SKIP][255] ([i915#10433] / [i915#3458]) +1 other test skip [254]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg2-1/igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-cpu.html [255]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-cpu.html * igt@kms_multipipe_modeset@basic-max-pipe-crc-check: - shard-rkl: [SKIP][256] ([i915#4816]) -> [SKIP][257] ([i915#4070] / [i915#4816]) [256]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-rkl-3/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html [257]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-rkl-1/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html * igt@kms_psr@fbc-pr-sprite-blt: - shard-dg2: [SKIP][258] ([i915#1072] / [i915#9673] / [i915#9732]) -> [SKIP][259] ([i915#1072] / [i915#9732]) +9 other tests skip [258]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg2-11/igt@kms_psr@fbc-pr-sprite-blt.html [259]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-6/igt@kms_psr@fbc-pr-sprite-blt.html * igt@kms_psr@psr2-primary-mmap-gtt: - shard-dg2: [SKIP][260] ([i915#1072] / [i915#9732]) -> [SKIP][261] ([i915#1072] / [i915#9673] / [i915#9732]) +9 other tests skip [260]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg2-5/igt@kms_psr@psr2-primary-mmap-gtt.html [261]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-11/igt@kms_psr@psr2-primary-mmap-gtt.html * igt@kms_rotation_crc@primary-y-tiled-reflect-x-90: - shard-dg2: [SKIP][262] ([i915#11131] / [i915#5190]) -> [SKIP][263] ([i915#11131] / [i915#4235] / [i915#5190]) [262]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg2-2/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html [263]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-11/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html * igt@kms_tiled_display@basic-test-pattern: - shard-glk: [FAIL][264] ([i915#10959]) -> [SKIP][265] [264]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-glk5/igt@kms_tiled_display@basic-test-pattern.html [265]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-glk8/igt@kms_tiled_display@basic-test-pattern.html * igt@perf@non-zero-reason: - shard-dg2: [FAIL][266] ([i915#7484]) -> [FAIL][267] ([i915#9100]) +1 other test fail [266]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15429/shard-dg2-8/igt@perf@non-zero-reason.html [267]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/shard-dg2-1/igt@perf@non-zero-reason.html [i915#10131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10131 [i915#10166]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10166 [i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307 [i915#10354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10354 [i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433 [i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434 [i915#10656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10656 [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072 [i915#10887]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10887 [i915#10959]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10959 [i915#11131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11131 [i915#11231]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11231 [i915#11453]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11453 [i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520 [i915#11616]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11616 [i915#11713]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11713 [i915#11808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11808 [i915#11814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11814 [i915#11815]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11815 [i915#11980]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11980 [i915#12027]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12027 [i915#12042]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12042 [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061 [i915#12179]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12179 [i915#12247]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12247 [i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769 [i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825 [i915#1982]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1982 [i915#2122]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2122 [i915#2346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2346 [i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437 [i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527 [i915#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587 [i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672 [i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280 [i915#2842]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2842 [i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856 [i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023 [i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281 [i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282 [i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297 [i915#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299 [i915#3359]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3359 [i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458 [i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539 [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555 [i915#3591]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3591 [i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637 [i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638 [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708 [i915#3742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3742 [i915#3778]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3778 [i915#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804 [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840 [i915#4070]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4070 [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077 [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083 [i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213 [i915#4235]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4235 [i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270 [i915#4281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4281 [i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349 [i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538 [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613 [i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812 [i915#4816]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4816 [i915#4873]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4873 [i915#4881]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4881 [i915#4936]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4936 [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190 [i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286 [i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289 [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354 [i915#5493]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5493 [i915#5956]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5956 [i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095 [i915#6412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6412 [i915#6645]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6645 [i915#6880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6880 [i915#6944]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6944 [i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953 [i915#7016]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7016 [i915#7116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7116 [i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118 [i915#7178]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7178 [i915#7213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7213 [i915#7276]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7276 [i915#7484]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7484 [i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707 [i915#7742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7742 [i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828 [i915#7975]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7975 [i915#8213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8213 [i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228 [i915#8381]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8381 [i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399 [i915#8414]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8414 [i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428 [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708 [i915#8813]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8813 [i915#8814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8814 [i915#8850]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8850 [i915#9100]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9100 [i915#9196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9196 [i915#9295]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9295 [i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323 [i915#9340]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9340 [i915#9423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9423 [i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424 [i915#9519]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9519 [i915#9673]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9673 [i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683 [i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685 [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688 [i915#9723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9723 [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732 [i915#9781]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9781 [i915#9809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9809 [i915#9820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9820 [i915#9833]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9833 [i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906 [i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934 Build changes ------------- * Linux: CI_DRM_15429 -> Patchwork_138751v1 CI-20190529: 20190529 CI_DRM_15429: 38e1b615fb395b928e514108e908cd6edf3d34c3 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_8022: 2d82f767a959d58c04ff3876d59d67924208d4ef @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git Patchwork_138751v1: 38e1b615fb395b928e514108e908cd6edf3d34c3 @ git://anongit.freedesktop.org/gfx-ci/linux piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138751v1/index.html [-- Attachment #2: Type: text/html, Size: 89811 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 0/2] Modify iterators to prepare for ultrajoiner @ 2024-09-18 6:30 Ankit Nautiyal 2024-09-18 6:30 ` [PATCH 2/2] drm/i915/display: Enhance iterators for modeset en/disable Ankit Nautiyal 0 siblings, 1 reply; 11+ messages in thread From: Ankit Nautiyal @ 2024-09-18 6:30 UTC (permalink / raw) To: intel-gfx, intel-xe; +Cc: suraj.kandpal, ville.syrjala Modify the iterators for enabling/disabling during modeset that works for present and future joiner cases. This patch series is a spin off from original series for ultrajoiner basic functionality [1] and discussion on [2]. Few of the preparatory patches are taken here for review and merge before the other core patches of the series. [1] https://patchwork.freedesktop.org/patch/613914/ [2] https://patchwork.freedesktop.org/patch/613914/?series=133800&rev=8 Rev2: -Simplified the macros, used struct display and other minor adjustments. Ankit Nautiyal (1): drm/i915/display: Enhance iterators for modeset en/disable Stanislav Lisovskiy (1): drm/i915: Add some essential functionality for joiners drivers/gpu/drm/i915/display/intel_ddi.c | 14 ++-- drivers/gpu/drm/i915/display/intel_display.c | 85 ++++++++++++++++---- drivers/gpu/drm/i915/display/intel_display.h | 28 +++++++ drivers/gpu/drm/i915/display/intel_dp_mst.c | 14 ++-- drivers/gpu/drm/i915/display/intel_vdsc.c | 4 +- 5 files changed, 113 insertions(+), 32 deletions(-) -- 2.45.2 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/2] drm/i915/display: Enhance iterators for modeset en/disable 2024-09-18 6:30 [PATCH 0/2] " Ankit Nautiyal @ 2024-09-18 6:30 ` Ankit Nautiyal 2024-09-18 11:35 ` Ville Syrjälä 0 siblings, 1 reply; 11+ messages in thread From: Ankit Nautiyal @ 2024-09-18 6:30 UTC (permalink / raw) To: intel-gfx, intel-xe; +Cc: suraj.kandpal, ville.syrjala Joiners have specific enabling and disabling order dependent on primary and secondary pipes. This becomes more complex with ultrajoiner where we have ultrajoiner primary/secondary pipes in addition to bigjoiner primary/secondary pipes. To unify the approach that works for present and future joiner cases, use primary and secondary pipe masks to iterate over pipes. If joiner is used, derive bigoiner primary and secondary pipe masks and use following sequences: Disabling : disable primary pipes followed by secondary pipes, Enabling: enable secondary pipes followed by primary pipes. This works well with ultrajoiner too, as ultrajoiner has 2 bigjoiner primary/secondary pairs (AC, BD). For non joiner case, enable/disable based on usual pipe order A-D, D-A respectively. v2: -Simplify the iterator macro. (Ville) -Use struct intel_display. (Ville) -Add prefix _intel to the helper name. (Ville) Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/display/intel_ddi.c | 14 +++---- drivers/gpu/drm/i915/display/intel_display.c | 40 ++++++++++++-------- drivers/gpu/drm/i915/display/intel_display.h | 26 +++++++++++++ drivers/gpu/drm/i915/display/intel_dp_mst.c | 14 +++---- 4 files changed, 64 insertions(+), 30 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c index b1c294236cc8..85e519a21542 100644 --- a/drivers/gpu/drm/i915/display/intel_ddi.c +++ b/drivers/gpu/drm/i915/display/intel_ddi.c @@ -3115,11 +3115,12 @@ static void intel_ddi_post_disable_hdmi_or_sst(struct intel_atomic_state *state, const struct intel_crtc_state *old_crtc_state, const struct drm_connector_state *old_conn_state) { + struct intel_display *display = to_intel_display(encoder); struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); struct intel_crtc *pipe_crtc; + int i; - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(old_crtc_state)) { + for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i) { const struct intel_crtc_state *old_pipe_crtc_state = intel_atomic_get_old_crtc_state(state, pipe_crtc); @@ -3130,8 +3131,7 @@ static void intel_ddi_post_disable_hdmi_or_sst(struct intel_atomic_state *state, intel_ddi_disable_transcoder_func(old_crtc_state); - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(old_crtc_state)) { + for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i) { const struct intel_crtc_state *old_pipe_crtc_state = intel_atomic_get_old_crtc_state(state, pipe_crtc); @@ -3382,8 +3382,9 @@ static void intel_enable_ddi(struct intel_atomic_state *state, const struct intel_crtc_state *crtc_state, const struct drm_connector_state *conn_state) { - struct drm_i915_private *i915 = to_i915(encoder->base.dev); + struct intel_display *display = to_intel_display(encoder); struct intel_crtc *pipe_crtc; + int i; intel_ddi_enable_transcoder_func(encoder, crtc_state); @@ -3394,8 +3395,7 @@ static void intel_enable_ddi(struct intel_atomic_state *state, intel_ddi_wait_for_fec_status(encoder, crtc_state, true); - for_each_intel_crtc_in_pipe_mask_reverse(&i915->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(crtc_state)) { + for_each_pipe_crtc_modeset_enable(display, pipe_crtc, crtc_state, i) { const struct intel_crtc_state *pipe_crtc_state = intel_atomic_get_new_crtc_state(state, pipe_crtc); diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index 83ea188cbe21..7a279f57208f 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -299,6 +299,21 @@ bool intel_crtc_is_bigjoiner_secondary(const struct intel_crtc_state *crtc_state return BIT(crtc->pipe) & bigjoiner_secondary_pipes(crtc_state); } +u8 _intel_modeset_primary_pipes(const struct intel_crtc_state *crtc_state) +{ + struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); + + if (!is_bigjoiner(crtc_state)) + return BIT(crtc->pipe); + + return bigjoiner_primary_pipes(crtc_state); +} + +u8 _intel_modeset_secondary_pipes(const struct intel_crtc_state *crtc_state) +{ + return bigjoiner_secondary_pipes(crtc_state); +} + u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state) { if (crtc_state->joiner_pipes) @@ -1729,18 +1744,16 @@ static void hsw_crtc_enable(struct intel_atomic_state *state, struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); enum transcoder cpu_transcoder = new_crtc_state->cpu_transcoder; struct intel_crtc *pipe_crtc; + int i; if (drm_WARN_ON(&dev_priv->drm, crtc->active)) return; - - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(new_crtc_state)) + for_each_pipe_crtc_modeset_enable(display, pipe_crtc, new_crtc_state, i) intel_dmc_enable_pipe(display, pipe_crtc->pipe); intel_encoders_pre_pll_enable(state, crtc); - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(new_crtc_state)) { + for_each_pipe_crtc_modeset_enable(display, pipe_crtc, new_crtc_state, i) { const struct intel_crtc_state *pipe_crtc_state = intel_atomic_get_new_crtc_state(state, pipe_crtc); @@ -1750,8 +1763,7 @@ static void hsw_crtc_enable(struct intel_atomic_state *state, intel_encoders_pre_enable(state, crtc); - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(new_crtc_state)) { + for_each_pipe_crtc_modeset_enable(display, pipe_crtc, new_crtc_state, i) { const struct intel_crtc_state *pipe_crtc_state = intel_atomic_get_new_crtc_state(state, pipe_crtc); @@ -1769,8 +1781,7 @@ static void hsw_crtc_enable(struct intel_atomic_state *state, if (!transcoder_is_dsi(cpu_transcoder)) hsw_configure_cpu_transcoder(new_crtc_state); - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(new_crtc_state)) { + for_each_pipe_crtc_modeset_enable(display, pipe_crtc, new_crtc_state, i) { const struct intel_crtc_state *pipe_crtc_state = intel_atomic_get_new_crtc_state(state, pipe_crtc); @@ -1805,8 +1816,7 @@ static void hsw_crtc_enable(struct intel_atomic_state *state, intel_encoders_enable(state, crtc); - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(new_crtc_state)) { + for_each_pipe_crtc_modeset_enable(display, pipe_crtc, new_crtc_state, i) { const struct intel_crtc_state *pipe_crtc_state = intel_atomic_get_new_crtc_state(state, pipe_crtc); enum pipe hsw_workaround_pipe; @@ -1889,10 +1899,10 @@ static void hsw_crtc_disable(struct intel_atomic_state *state, struct intel_crtc *crtc) { struct intel_display *display = to_intel_display(state); - struct drm_i915_private *i915 = to_i915(display->drm); const struct intel_crtc_state *old_crtc_state = intel_atomic_get_old_crtc_state(state, crtc); struct intel_crtc *pipe_crtc; + int i; /* * FIXME collapse everything to one hook. @@ -1901,8 +1911,7 @@ static void hsw_crtc_disable(struct intel_atomic_state *state, intel_encoders_disable(state, crtc); intel_encoders_post_disable(state, crtc); - for_each_intel_crtc_in_pipe_mask(&i915->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(old_crtc_state)) { + for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i) { const struct intel_crtc_state *old_pipe_crtc_state = intel_atomic_get_old_crtc_state(state, pipe_crtc); @@ -1911,8 +1920,7 @@ static void hsw_crtc_disable(struct intel_atomic_state *state, intel_encoders_post_pll_disable(state, crtc); - for_each_intel_crtc_in_pipe_mask(&i915->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(old_crtc_state)) + for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i) intel_dmc_disable_pipe(display, pipe_crtc->pipe); } diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h index 27c6a5940991..0b28dbca7828 100644 --- a/drivers/gpu/drm/i915/display/intel_display.h +++ b/drivers/gpu/drm/i915/display/intel_display.h @@ -392,6 +392,30 @@ enum phy_fia { ((connector) = to_intel_connector((__state)->base.connectors[__i].ptr), \ (new_connector_state) = to_intel_digital_connector_state((__state)->base.connectors[__i].new_state), 1)) +#define for_each_crtc_in_masks(display, crtc, first_pipes, second_pipes, i) \ + for ((i) = 0; \ + (i) < (I915_MAX_PIPES * 2) && ((crtc) = intel_crtc_for_pipe(display, (i) % I915_MAX_PIPES), 1); \ + (i)++) \ + for_each_if((crtc) && ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)) & BIT(i)) + +#define for_each_crtc_in_masks_reverse(display, crtc, first_pipes, second_pipes, i) \ + for ((i) = (I915_MAX_PIPES * 2 - 1); \ + (i) >= 0 && ((crtc) = intel_crtc_for_pipe(display, (i) % I915_MAX_PIPES), 1); \ + (i)--) \ + for_each_if((crtc) && ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)) & BIT(i)) + +#define for_each_pipe_crtc_modeset_disable(display, crtc, crtc_state, i) \ + for_each_crtc_in_masks(display, crtc, \ + _intel_modeset_primary_pipes(crtc_state), \ + _intel_modeset_secondary_pipes(crtc_state), \ + i) + +#define for_each_pipe_crtc_modeset_enable(display, crtc, crtc_state, i) \ + for_each_crtc_in_masks_reverse(display, crtc, \ + _intel_modeset_primary_pipes(crtc_state), \ + _intel_modeset_secondary_pipes(crtc_state), \ + i) + int intel_atomic_check(struct drm_device *dev, struct drm_atomic_state *state); int intel_atomic_add_affected_planes(struct intel_atomic_state *state, struct intel_crtc *crtc); @@ -419,6 +443,8 @@ bool intel_crtc_is_joiner_primary(const struct intel_crtc_state *crtc_state); bool intel_crtc_is_bigjoiner_primary(const struct intel_crtc_state *crtc_state); bool intel_crtc_is_bigjoiner_secondary(const struct intel_crtc_state *crtc_state); u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state); +u8 _intel_modeset_primary_pipes(const struct intel_crtc_state *crtc_state); +u8 _intel_modeset_secondary_pipes(const struct intel_crtc_state *crtc_state); struct intel_crtc *intel_primary_crtc(const struct intel_crtc_state *crtc_state); bool intel_crtc_get_pipe_config(struct intel_crtc_state *crtc_state); bool intel_pipe_config_compare(const struct intel_crtc_state *current_config, diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c index 15541932b809..1a16310b4147 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c @@ -985,6 +985,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, const struct intel_crtc_state *old_crtc_state, const struct drm_connector_state *old_conn_state) { + struct intel_display *display = to_intel_display(encoder); struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder); struct intel_digital_port *dig_port = intel_mst->primary; struct intel_dp *intel_dp = &dig_port->dp; @@ -1001,6 +1002,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, struct drm_i915_private *dev_priv = to_i915(connector->base.dev); struct intel_crtc *pipe_crtc; bool last_mst_stream; + int i; intel_dp->active_mst_links--; last_mst_stream = intel_dp->active_mst_links == 0; @@ -1008,8 +1010,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, DISPLAY_VER(dev_priv) >= 12 && last_mst_stream && !intel_dp_mst_is_master_trans(old_crtc_state)); - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(old_crtc_state)) { + for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i) { const struct intel_crtc_state *old_pipe_crtc_state = intel_atomic_get_old_crtc_state(state, pipe_crtc); @@ -1033,8 +1034,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, intel_ddi_disable_transcoder_func(old_crtc_state); - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(old_crtc_state)) { + for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i) { const struct intel_crtc_state *old_pipe_crtc_state = intel_atomic_get_old_crtc_state(state, pipe_crtc); @@ -1243,6 +1243,7 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, const struct intel_crtc_state *pipe_config, const struct drm_connector_state *conn_state) { + struct intel_display *display = to_intel_display(encoder); struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder); struct intel_digital_port *dig_port = intel_mst->primary; struct intel_dp *intel_dp = &dig_port->dp; @@ -1253,7 +1254,7 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, enum transcoder trans = pipe_config->cpu_transcoder; bool first_mst_stream = intel_dp->active_mst_links == 1; struct intel_crtc *pipe_crtc; - int ret; + int ret, i; drm_WARN_ON(&dev_priv->drm, pipe_config->has_pch_encoder); @@ -1300,8 +1301,7 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, intel_enable_transcoder(pipe_config); - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, - intel_crtc_joined_pipe_mask(pipe_config)) { + for_each_pipe_crtc_modeset_enable(display, pipe_crtc, pipe_config, i) { const struct intel_crtc_state *pipe_crtc_state = intel_atomic_get_new_crtc_state(state, pipe_crtc); -- 2.45.2 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] drm/i915/display: Enhance iterators for modeset en/disable 2024-09-18 6:30 ` [PATCH 2/2] drm/i915/display: Enhance iterators for modeset en/disable Ankit Nautiyal @ 2024-09-18 11:35 ` Ville Syrjälä 0 siblings, 0 replies; 11+ messages in thread From: Ville Syrjälä @ 2024-09-18 11:35 UTC (permalink / raw) To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, suraj.kandpal On Wed, Sep 18, 2024 at 12:00:16PM +0530, Ankit Nautiyal wrote: > Joiners have specific enabling and disabling order dependent on primary > and secondary pipes. This becomes more complex with ultrajoiner where we > have ultrajoiner primary/secondary pipes in addition to bigjoiner > primary/secondary pipes. To unify the approach that works for present > and future joiner cases, use primary and secondary pipe masks to > iterate over pipes. > > If joiner is used, derive bigoiner primary and secondary pipe masks > and use following sequences: > Disabling : disable primary pipes followed by secondary pipes, > Enabling: enable secondary pipes followed by primary pipes. > > This works well with ultrajoiner too, as ultrajoiner has 2 bigjoiner > primary/secondary pairs (AC, BD). > > For non joiner case, enable/disable based on usual pipe order A-D, D-A > respectively. > > v2: > -Simplify the iterator macro. (Ville) > -Use struct intel_display. (Ville) > -Add prefix _intel to the helper name. (Ville) > > Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> > Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/display/intel_ddi.c | 14 +++---- > drivers/gpu/drm/i915/display/intel_display.c | 40 ++++++++++++-------- > drivers/gpu/drm/i915/display/intel_display.h | 26 +++++++++++++ > drivers/gpu/drm/i915/display/intel_dp_mst.c | 14 +++---- > 4 files changed, 64 insertions(+), 30 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c > index b1c294236cc8..85e519a21542 100644 > --- a/drivers/gpu/drm/i915/display/intel_ddi.c > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c > @@ -3115,11 +3115,12 @@ static void intel_ddi_post_disable_hdmi_or_sst(struct intel_atomic_state *state, > const struct intel_crtc_state *old_crtc_state, > const struct drm_connector_state *old_conn_state) > { > + struct intel_display *display = to_intel_display(encoder); > struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > struct intel_crtc *pipe_crtc; > + int i; > > - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(old_crtc_state)) { > + for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i) { > const struct intel_crtc_state *old_pipe_crtc_state = > intel_atomic_get_old_crtc_state(state, pipe_crtc); > > @@ -3130,8 +3131,7 @@ static void intel_ddi_post_disable_hdmi_or_sst(struct intel_atomic_state *state, > > intel_ddi_disable_transcoder_func(old_crtc_state); > > - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(old_crtc_state)) { > + for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i) { > const struct intel_crtc_state *old_pipe_crtc_state = > intel_atomic_get_old_crtc_state(state, pipe_crtc); > > @@ -3382,8 +3382,9 @@ static void intel_enable_ddi(struct intel_atomic_state *state, > const struct intel_crtc_state *crtc_state, > const struct drm_connector_state *conn_state) > { > - struct drm_i915_private *i915 = to_i915(encoder->base.dev); > + struct intel_display *display = to_intel_display(encoder); > struct intel_crtc *pipe_crtc; > + int i; > > intel_ddi_enable_transcoder_func(encoder, crtc_state); > > @@ -3394,8 +3395,7 @@ static void intel_enable_ddi(struct intel_atomic_state *state, > > intel_ddi_wait_for_fec_status(encoder, crtc_state, true); > > - for_each_intel_crtc_in_pipe_mask_reverse(&i915->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(crtc_state)) { > + for_each_pipe_crtc_modeset_enable(display, pipe_crtc, crtc_state, i) { > const struct intel_crtc_state *pipe_crtc_state = > intel_atomic_get_new_crtc_state(state, pipe_crtc); > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c > index 83ea188cbe21..7a279f57208f 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -299,6 +299,21 @@ bool intel_crtc_is_bigjoiner_secondary(const struct intel_crtc_state *crtc_state > return BIT(crtc->pipe) & bigjoiner_secondary_pipes(crtc_state); > } > > +u8 _intel_modeset_primary_pipes(const struct intel_crtc_state *crtc_state) > +{ > + struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > + > + if (!is_bigjoiner(crtc_state)) > + return BIT(crtc->pipe); > + > + return bigjoiner_primary_pipes(crtc_state); > +} > + > +u8 _intel_modeset_secondary_pipes(const struct intel_crtc_state *crtc_state) > +{ > + return bigjoiner_secondary_pipes(crtc_state); > +} > + > u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state) > { > if (crtc_state->joiner_pipes) > @@ -1729,18 +1744,16 @@ static void hsw_crtc_enable(struct intel_atomic_state *state, > struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > enum transcoder cpu_transcoder = new_crtc_state->cpu_transcoder; > struct intel_crtc *pipe_crtc; > + int i; > > if (drm_WARN_ON(&dev_priv->drm, crtc->active)) > return; > - > - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(new_crtc_state)) > + for_each_pipe_crtc_modeset_enable(display, pipe_crtc, new_crtc_state, i) > intel_dmc_enable_pipe(display, pipe_crtc->pipe); > > intel_encoders_pre_pll_enable(state, crtc); > > - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(new_crtc_state)) { > + for_each_pipe_crtc_modeset_enable(display, pipe_crtc, new_crtc_state, i) { > const struct intel_crtc_state *pipe_crtc_state = > intel_atomic_get_new_crtc_state(state, pipe_crtc); > > @@ -1750,8 +1763,7 @@ static void hsw_crtc_enable(struct intel_atomic_state *state, > > intel_encoders_pre_enable(state, crtc); > > - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(new_crtc_state)) { > + for_each_pipe_crtc_modeset_enable(display, pipe_crtc, new_crtc_state, i) { > const struct intel_crtc_state *pipe_crtc_state = > intel_atomic_get_new_crtc_state(state, pipe_crtc); > > @@ -1769,8 +1781,7 @@ static void hsw_crtc_enable(struct intel_atomic_state *state, > if (!transcoder_is_dsi(cpu_transcoder)) > hsw_configure_cpu_transcoder(new_crtc_state); > > - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(new_crtc_state)) { > + for_each_pipe_crtc_modeset_enable(display, pipe_crtc, new_crtc_state, i) { > const struct intel_crtc_state *pipe_crtc_state = > intel_atomic_get_new_crtc_state(state, pipe_crtc); > > @@ -1805,8 +1816,7 @@ static void hsw_crtc_enable(struct intel_atomic_state *state, > > intel_encoders_enable(state, crtc); > > - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(new_crtc_state)) { > + for_each_pipe_crtc_modeset_enable(display, pipe_crtc, new_crtc_state, i) { > const struct intel_crtc_state *pipe_crtc_state = > intel_atomic_get_new_crtc_state(state, pipe_crtc); > enum pipe hsw_workaround_pipe; > @@ -1889,10 +1899,10 @@ static void hsw_crtc_disable(struct intel_atomic_state *state, > struct intel_crtc *crtc) > { > struct intel_display *display = to_intel_display(state); > - struct drm_i915_private *i915 = to_i915(display->drm); > const struct intel_crtc_state *old_crtc_state = > intel_atomic_get_old_crtc_state(state, crtc); > struct intel_crtc *pipe_crtc; > + int i; > > /* > * FIXME collapse everything to one hook. > @@ -1901,8 +1911,7 @@ static void hsw_crtc_disable(struct intel_atomic_state *state, > intel_encoders_disable(state, crtc); > intel_encoders_post_disable(state, crtc); > > - for_each_intel_crtc_in_pipe_mask(&i915->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(old_crtc_state)) { > + for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i) { > const struct intel_crtc_state *old_pipe_crtc_state = > intel_atomic_get_old_crtc_state(state, pipe_crtc); > > @@ -1911,8 +1920,7 @@ static void hsw_crtc_disable(struct intel_atomic_state *state, > > intel_encoders_post_pll_disable(state, crtc); > > - for_each_intel_crtc_in_pipe_mask(&i915->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(old_crtc_state)) > + for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i) > intel_dmc_disable_pipe(display, pipe_crtc->pipe); > } > > diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h > index 27c6a5940991..0b28dbca7828 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.h > +++ b/drivers/gpu/drm/i915/display/intel_display.h > @@ -392,6 +392,30 @@ enum phy_fia { > ((connector) = to_intel_connector((__state)->base.connectors[__i].ptr), \ > (new_connector_state) = to_intel_digital_connector_state((__state)->base.connectors[__i].new_state), 1)) > > +#define for_each_crtc_in_masks(display, crtc, first_pipes, second_pipes, i) \ > + for ((i) = 0; \ > + (i) < (I915_MAX_PIPES * 2) && ((crtc) = intel_crtc_for_pipe(display, (i) % I915_MAX_PIPES), 1); \ > + (i)++) \ > + for_each_if((crtc) && ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)) & BIT(i)) > + > +#define for_each_crtc_in_masks_reverse(display, crtc, first_pipes, second_pipes, i) \ > + for ((i) = (I915_MAX_PIPES * 2 - 1); \ > + (i) >= 0 && ((crtc) = intel_crtc_for_pipe(display, (i) % I915_MAX_PIPES), 1); \ > + (i)--) \ > + for_each_if((crtc) && ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)) & BIT(i)) This will now process "second" before "first" which is perphaps a bit confusing. Functionally looks correct though. But I guess one might argue we also walk the bits in the opposite order so eg. "first set bit" comes after "last set bit" as well. Shrug. Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > + > +#define for_each_pipe_crtc_modeset_disable(display, crtc, crtc_state, i) \ > + for_each_crtc_in_masks(display, crtc, \ > + _intel_modeset_primary_pipes(crtc_state), \ > + _intel_modeset_secondary_pipes(crtc_state), \ > + i) > + > +#define for_each_pipe_crtc_modeset_enable(display, crtc, crtc_state, i) \ > + for_each_crtc_in_masks_reverse(display, crtc, \ > + _intel_modeset_primary_pipes(crtc_state), \ > + _intel_modeset_secondary_pipes(crtc_state), \ > + i) > + > int intel_atomic_check(struct drm_device *dev, struct drm_atomic_state *state); > int intel_atomic_add_affected_planes(struct intel_atomic_state *state, > struct intel_crtc *crtc); > @@ -419,6 +443,8 @@ bool intel_crtc_is_joiner_primary(const struct intel_crtc_state *crtc_state); > bool intel_crtc_is_bigjoiner_primary(const struct intel_crtc_state *crtc_state); > bool intel_crtc_is_bigjoiner_secondary(const struct intel_crtc_state *crtc_state); > u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state); > +u8 _intel_modeset_primary_pipes(const struct intel_crtc_state *crtc_state); > +u8 _intel_modeset_secondary_pipes(const struct intel_crtc_state *crtc_state); > struct intel_crtc *intel_primary_crtc(const struct intel_crtc_state *crtc_state); > bool intel_crtc_get_pipe_config(struct intel_crtc_state *crtc_state); > bool intel_pipe_config_compare(const struct intel_crtc_state *current_config, > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c > index 15541932b809..1a16310b4147 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c > @@ -985,6 +985,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, > const struct intel_crtc_state *old_crtc_state, > const struct drm_connector_state *old_conn_state) > { > + struct intel_display *display = to_intel_display(encoder); > struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder); > struct intel_digital_port *dig_port = intel_mst->primary; > struct intel_dp *intel_dp = &dig_port->dp; > @@ -1001,6 +1002,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, > struct drm_i915_private *dev_priv = to_i915(connector->base.dev); > struct intel_crtc *pipe_crtc; > bool last_mst_stream; > + int i; > > intel_dp->active_mst_links--; > last_mst_stream = intel_dp->active_mst_links == 0; > @@ -1008,8 +1010,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, > DISPLAY_VER(dev_priv) >= 12 && last_mst_stream && > !intel_dp_mst_is_master_trans(old_crtc_state)); > > - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(old_crtc_state)) { > + for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i) { > const struct intel_crtc_state *old_pipe_crtc_state = > intel_atomic_get_old_crtc_state(state, pipe_crtc); > > @@ -1033,8 +1034,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, > > intel_ddi_disable_transcoder_func(old_crtc_state); > > - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(old_crtc_state)) { > + for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i) { > const struct intel_crtc_state *old_pipe_crtc_state = > intel_atomic_get_old_crtc_state(state, pipe_crtc); > > @@ -1243,6 +1243,7 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, > const struct intel_crtc_state *pipe_config, > const struct drm_connector_state *conn_state) > { > + struct intel_display *display = to_intel_display(encoder); > struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder); > struct intel_digital_port *dig_port = intel_mst->primary; > struct intel_dp *intel_dp = &dig_port->dp; > @@ -1253,7 +1254,7 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, > enum transcoder trans = pipe_config->cpu_transcoder; > bool first_mst_stream = intel_dp->active_mst_links == 1; > struct intel_crtc *pipe_crtc; > - int ret; > + int ret, i; > > drm_WARN_ON(&dev_priv->drm, pipe_config->has_pch_encoder); > > @@ -1300,8 +1301,7 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, > > intel_enable_transcoder(pipe_config); > > - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc, > - intel_crtc_joined_pipe_mask(pipe_config)) { > + for_each_pipe_crtc_modeset_enable(display, pipe_crtc, pipe_config, i) { > const struct intel_crtc_state *pipe_crtc_state = > intel_atomic_get_new_crtc_state(state, pipe_crtc); > > -- > 2.45.2 -- Ville Syrjälä Intel ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2024-09-18 11:35 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-09-17 8:23 [PATCH 0/2] Modify iterators to prepare for ultrajoiner Ankit Nautiyal 2024-09-17 8:23 ` [PATCH 1/2] drm/i915: Add some essential functionality for joiners Ankit Nautiyal 2024-09-17 12:27 ` Ville Syrjälä 2024-09-17 8:23 ` [PATCH 2/2] drm/i915/display: Enhance iterators for modeset en/disable Ankit Nautiyal 2024-09-17 13:31 ` Ville Syrjälä 2024-09-18 4:58 ` Nautiyal, Ankit K 2024-09-17 13:02 ` ✗ Fi.CI.CHECKPATCH: warning for Modify iterators to prepare for ultrajoiner Patchwork 2024-09-17 13:11 ` ✓ Fi.CI.BAT: success " Patchwork 2024-09-18 7:02 ` ✗ Fi.CI.IGT: failure " Patchwork -- strict thread matches above, loose matches on Subject: below -- 2024-09-18 6:30 [PATCH 0/2] " Ankit Nautiyal 2024-09-18 6:30 ` [PATCH 2/2] drm/i915/display: Enhance iterators for modeset en/disable Ankit Nautiyal 2024-09-18 11:35 ` Ville Syrjälä
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox