* [PATCH 0/5] Ultrajoiner basic functionality series
@ 2024-05-20 7:38 Stanislav Lisovskiy
2024-05-20 7:38 ` [PATCH 1/5] drm/i915: Rename all bigjoiner to joiner Stanislav Lisovskiy
` (7 more replies)
0 siblings, 8 replies; 17+ messages in thread
From: Stanislav Lisovskiy @ 2024-05-20 7:38 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.saarinen, ville.syrjala
This patch series attempts to implement basic support
for Ultrajoiner functionality.
Stanislav Lisovskiy (5):
drm/i915: Rename all bigjoiner to joiner
drm/i915: Implement basic functions for ultrajoiner support
drm/i915: Implement hw state readout for ultrajoiner
drm/i915: Compute config and mode valid changes for ultrajoiner
drm/i915: Add new abstraction layer to handle pipe order for different
joiners
.../gpu/drm/i915/display/intel_atomic_plane.c | 4 +-
drivers/gpu/drm/i915/display/intel_cdclk.c | 8 +-
.../drm/i915/display/intel_crtc_state_dump.c | 8 +-
drivers/gpu/drm/i915/display/intel_cursor.c | 4 +-
drivers/gpu/drm/i915/display/intel_ddi.c | 23 +-
drivers/gpu/drm/i915/display/intel_display.c | 360 ++++++++++++------
drivers/gpu/drm/i915/display/intel_display.h | 16 +-
.../drm/i915/display/intel_display_debugfs.c | 10 +-
.../drm/i915/display/intel_display_types.h | 4 +-
drivers/gpu/drm/i915/display/intel_dp.c | 117 ++++--
drivers/gpu/drm/i915/display/intel_dp.h | 14 +-
drivers/gpu/drm/i915/display/intel_dp_mst.c | 48 ++-
drivers/gpu/drm/i915/display/intel_drrs.c | 6 +-
drivers/gpu/drm/i915/display/intel_dsi.c | 2 +-
drivers/gpu/drm/i915/display/intel_hdmi.c | 14 +-
.../drm/i915/display/intel_modeset_setup.c | 38 +-
drivers/gpu/drm/i915/display/intel_psr.c | 6 +-
drivers/gpu/drm/i915/display/intel_vdsc.c | 35 +-
drivers/gpu/drm/i915/display/intel_vdsc.h | 2 +-
.../gpu/drm/i915/display/intel_vdsc_regs.h | 2 +
drivers/gpu/drm/i915/display/intel_vrr.c | 2 +-
.../drm/i915/display/skl_universal_plane.c | 4 +-
22 files changed, 485 insertions(+), 242 deletions(-)
--
2.37.3
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/5] drm/i915: Rename all bigjoiner to joiner
2024-05-20 7:38 [PATCH 0/5] Ultrajoiner basic functionality series Stanislav Lisovskiy
@ 2024-05-20 7:38 ` Stanislav Lisovskiy
2024-05-20 10:20 ` Jani Nikula
2024-05-20 7:38 ` [PATCH 2/5] drm/i915: Implement basic functions for ultrajoiner support Stanislav Lisovskiy
` (6 subsequent siblings)
7 siblings, 1 reply; 17+ messages in thread
From: Stanislav Lisovskiy @ 2024-05-20 7:38 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.saarinen, ville.syrjala
Lets unify both bigjoiner and ultrajoiner under simple "joiner" name,
because in future we might have multiple configurations, involving
multiple bigjoiners, ultrajoiner, however it is possible to use
same api for handling both.
Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
---
.../gpu/drm/i915/display/intel_atomic_plane.c | 4 +-
drivers/gpu/drm/i915/display/intel_cdclk.c | 8 +-
.../drm/i915/display/intel_crtc_state_dump.c | 8 +-
drivers/gpu/drm/i915/display/intel_cursor.c | 4 +-
drivers/gpu/drm/i915/display/intel_ddi.c | 4 +-
drivers/gpu/drm/i915/display/intel_display.c | 204 +++++++++---------
drivers/gpu/drm/i915/display/intel_display.h | 8 +-
.../drm/i915/display/intel_display_debugfs.c | 10 +-
.../drm/i915/display/intel_display_types.h | 4 +-
drivers/gpu/drm/i915/display/intel_dp.c | 60 +++---
drivers/gpu/drm/i915/display/intel_dp.h | 8 +-
drivers/gpu/drm/i915/display/intel_dp_mst.c | 22 +-
drivers/gpu/drm/i915/display/intel_drrs.c | 6 +-
.../drm/i915/display/intel_modeset_setup.c | 38 ++--
drivers/gpu/drm/i915/display/intel_psr.c | 6 +-
drivers/gpu/drm/i915/display/intel_vdsc.c | 12 +-
drivers/gpu/drm/i915/display/intel_vdsc.h | 2 +-
drivers/gpu/drm/i915/display/intel_vrr.c | 2 +-
.../drm/i915/display/skl_universal_plane.c | 4 +-
19 files changed, 207 insertions(+), 207 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
index 27224ecdc94c..7a0b2f3a672e 100644
--- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
@@ -335,7 +335,7 @@ void intel_plane_copy_uapi_to_hw_state(struct intel_plane_state *plane_state,
intel_plane_clear_hw_state(plane_state);
/*
- * For the bigjoiner slave uapi.crtc will point at
+ * For the joiner slave uapi.crtc will point at
* the master crtc. So we explicitly assign the right
* slave crtc to hw.crtc. uapi.crtc!=NULL simply indicates
* the plane is logically enabled on the uapi level.
@@ -720,7 +720,7 @@ int intel_plane_atomic_check(struct intel_atomic_state *state,
struct intel_crtc_state *new_crtc_state =
intel_atomic_get_new_crtc_state(state, crtc);
- if (new_crtc_state && intel_crtc_is_bigjoiner_slave(new_crtc_state)) {
+ if (new_crtc_state && intel_crtc_is_joiner_slave(new_crtc_state)) {
struct intel_crtc *master_crtc =
intel_master_crtc(new_crtc_state);
struct intel_plane *master_plane =
diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
index b78154c82a71..36fb7ad1d871 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
@@ -2731,7 +2731,7 @@ static int intel_vdsc_min_cdclk(const struct intel_crtc_state *crtc_state)
min_cdclk = max_t(int, min_cdclk,
DIV_ROUND_UP(crtc_state->pixel_rate, num_vdsc_instances));
- if (crtc_state->bigjoiner_pipes) {
+ if (crtc_state->joiner_pipes) {
int pixel_clock = intel_dp_mode_to_fec_clock(crtc_state->hw.adjusted_mode.clock);
/*
@@ -2743,13 +2743,13 @@ static int intel_vdsc_min_cdclk(const struct intel_crtc_state *crtc_state)
*
* => CDCLK >= compressed_bpp * Pixel clock / (PPC * Bigjoiner Interface bits)
*
- * Since PPC = 2 with bigjoiner
+ * Since PPC = 2 with joiner
* => CDCLK >= compressed_bpp * Pixel clock / 2 * Bigjoiner Interface bits
*/
- int bigjoiner_interface_bits = DISPLAY_VER(i915) >= 14 ? 36 : 24;
+ int joiner_interface_bits = DISPLAY_VER(i915) >= 14 ? 36 : 24;
int min_cdclk_bj =
(to_bpp_int_roundup(crtc_state->dsc.compressed_bpp_x16) *
- pixel_clock) / (2 * bigjoiner_interface_bits);
+ pixel_clock) / (2 * joiner_interface_bits);
min_cdclk = max(min_cdclk, min_cdclk_bj);
}
diff --git a/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c b/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
index ccaa4cb2809b..a999c37293bd 100644
--- a/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
+++ b/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
@@ -222,10 +222,10 @@ void intel_crtc_state_dump(const struct intel_crtc_state *pipe_config,
transcoder_name(pipe_config->master_transcoder),
pipe_config->sync_mode_slaves_mask);
- drm_printf(&p, "bigjoiner: %s, pipes: 0x%x\n",
- intel_crtc_is_bigjoiner_slave(pipe_config) ? "slave" :
- intel_crtc_is_bigjoiner_master(pipe_config) ? "master" : "no",
- pipe_config->bigjoiner_pipes);
+ drm_printf(&p, "joiner: %s, pipes: 0x%x\n",
+ intel_crtc_is_joiner_slave(pipe_config) ? "slave" :
+ intel_crtc_is_joiner_master(pipe_config) ? "master" : "no",
+ pipe_config->joiner_pipes);
drm_printf(&p, "splitter: %s, link count %d, overlap %d\n",
str_enabled_disabled(pipe_config->splitter.enable),
diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
index 2118b87ccb10..218ad2dfc242 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -703,12 +703,12 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
* PSR2 plane and transcoder registers can only be updated during
* vblank.
*
- * FIXME bigjoiner fastpath would be good
+ * FIXME joiner fastpath would be good
*/
if (!crtc_state->hw.active ||
intel_crtc_needs_modeset(crtc_state) ||
intel_crtc_needs_fastset(crtc_state) ||
- crtc_state->bigjoiner_pipes)
+ crtc_state->joiner_pipes)
goto slow;
/*
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
index 3c3fc53376ce..81f644533504 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -4264,10 +4264,10 @@ static bool crtcs_port_sync_compatible(const struct intel_crtc_state *crtc_state
{
/*
* FIXME the modeset sequence is currently wrong and
- * can't deal with bigjoiner + port sync at the same time.
+ * can't deal with joiner + port sync at the same time.
*/
return crtc_state1->hw.active && crtc_state2->hw.active &&
- !crtc_state1->bigjoiner_pipes && !crtc_state2->bigjoiner_pipes &&
+ !crtc_state1->joiner_pipes && !crtc_state2->joiner_pipes &&
crtc_state1->output_types == crtc_state2->output_types &&
crtc_state1->output_format == crtc_state2->output_format &&
crtc_state1->lane_count == crtc_state2->lane_count &&
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index ef986b508431..c74721188e59 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -242,53 +242,53 @@ is_trans_port_sync_mode(const struct intel_crtc_state *crtc_state)
is_trans_port_sync_slave(crtc_state);
}
-static enum pipe bigjoiner_master_pipe(const struct intel_crtc_state *crtc_state)
+static enum pipe joiner_master_pipe(const struct intel_crtc_state *crtc_state)
{
- return ffs(crtc_state->bigjoiner_pipes) - 1;
+ return ffs(crtc_state->joiner_pipes) - 1;
}
-u8 intel_crtc_bigjoiner_slave_pipes(const struct intel_crtc_state *crtc_state)
+u8 intel_crtc_joiner_slave_pipes(const struct intel_crtc_state *crtc_state)
{
- if (crtc_state->bigjoiner_pipes)
- return crtc_state->bigjoiner_pipes & ~BIT(bigjoiner_master_pipe(crtc_state));
+ if (crtc_state->joiner_pipes)
+ return crtc_state->joiner_pipes & ~BIT(joiner_master_pipe(crtc_state));
else
return 0;
}
-bool intel_crtc_is_bigjoiner_slave(const struct intel_crtc_state *crtc_state)
+bool intel_crtc_is_joiner_slave(const struct intel_crtc_state *crtc_state)
{
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
- return crtc_state->bigjoiner_pipes &&
- crtc->pipe != bigjoiner_master_pipe(crtc_state);
+ return crtc_state->joiner_pipes &&
+ crtc->pipe != joiner_master_pipe(crtc_state);
}
-bool intel_crtc_is_bigjoiner_master(const struct intel_crtc_state *crtc_state)
+bool intel_crtc_is_joiner_master(const struct intel_crtc_state *crtc_state)
{
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
- return crtc_state->bigjoiner_pipes &&
- crtc->pipe == bigjoiner_master_pipe(crtc_state);
+ return crtc_state->joiner_pipes &&
+ crtc->pipe == joiner_master_pipe(crtc_state);
}
-static int intel_bigjoiner_num_pipes(const struct intel_crtc_state *crtc_state)
+static int intel_joiner_num_pipes(const struct intel_crtc_state *crtc_state)
{
- return hweight8(crtc_state->bigjoiner_pipes);
+ return hweight8(crtc_state->joiner_pipes);
}
u8 intel_crtc_joined_pipe_mask(const struct intel_crtc_state *crtc_state)
{
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
- return BIT(crtc->pipe) | crtc_state->bigjoiner_pipes;
+ return BIT(crtc->pipe) | crtc_state->joiner_pipes;
}
struct intel_crtc *intel_master_crtc(const struct intel_crtc_state *crtc_state)
{
struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
- if (intel_crtc_is_bigjoiner_slave(crtc_state))
- return intel_crtc_for_pipe(i915, bigjoiner_master_pipe(crtc_state));
+ if (intel_crtc_is_joiner_slave(crtc_state))
+ return intel_crtc_for_pipe(i915, joiner_master_pipe(crtc_state));
else
return to_intel_crtc(crtc_state->uapi.crtc);
}
@@ -2314,10 +2314,10 @@ static void intel_crtc_compute_pixel_rate(struct intel_crtc_state *crtc_state)
ilk_pipe_pixel_rate(crtc_state);
}
-static void intel_bigjoiner_adjust_timings(const struct intel_crtc_state *crtc_state,
+static void intel_joiner_adjust_timings(const struct intel_crtc_state *crtc_state,
struct drm_display_mode *mode)
{
- int num_pipes = intel_bigjoiner_num_pipes(crtc_state);
+ int num_pipes = intel_joiner_num_pipes(crtc_state);
if (num_pipes < 2)
return;
@@ -2381,11 +2381,11 @@ static void intel_crtc_readout_derived_state(struct intel_crtc_state *crtc_state
drm_mode_copy(mode, pipe_mode);
intel_mode_from_crtc_timings(mode, mode);
mode->hdisplay = drm_rect_width(&crtc_state->pipe_src) *
- (intel_bigjoiner_num_pipes(crtc_state) ?: 1);
+ (intel_joiner_num_pipes(crtc_state) ?: 1);
mode->vdisplay = drm_rect_height(&crtc_state->pipe_src);
- /* Derive per-pipe timings in case bigjoiner is used */
- intel_bigjoiner_adjust_timings(crtc_state, pipe_mode);
+ /* Derive per-pipe timings in case joiner is used */
+ intel_joiner_adjust_timings(crtc_state, pipe_mode);
intel_mode_from_crtc_timings(pipe_mode, pipe_mode);
intel_crtc_compute_pixel_rate(crtc_state);
@@ -2399,9 +2399,9 @@ void intel_encoder_get_config(struct intel_encoder *encoder,
intel_crtc_readout_derived_state(crtc_state);
}
-static void intel_bigjoiner_compute_pipe_src(struct intel_crtc_state *crtc_state)
+static void intel_joiner_compute_pipe_src(struct intel_crtc_state *crtc_state)
{
- int num_pipes = intel_bigjoiner_num_pipes(crtc_state);
+ int num_pipes = intel_joiner_num_pipes(crtc_state);
int width, height;
if (num_pipes < 2)
@@ -2419,7 +2419,7 @@ static int intel_crtc_compute_pipe_src(struct intel_crtc_state *crtc_state)
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
struct drm_i915_private *i915 = to_i915(crtc->base.dev);
- intel_bigjoiner_compute_pipe_src(crtc_state);
+ intel_joiner_compute_pipe_src(crtc_state);
/*
* Pipe horizontal size must be even in:
@@ -2464,8 +2464,8 @@ static int intel_crtc_compute_pipe_mode(struct intel_crtc_state *crtc_state)
/* Expand MSO per-segment transcoder timings to full */
intel_splitter_adjust_timings(crtc_state, pipe_mode);
- /* Derive per-pipe timings in case bigjoiner is used */
- intel_bigjoiner_adjust_timings(crtc_state, pipe_mode);
+ /* Derive per-pipe timings in case joiner is used */
+ intel_joiner_adjust_timings(crtc_state, pipe_mode);
intel_mode_from_crtc_timings(pipe_mode, pipe_mode);
if (DISPLAY_VER(i915) < 4) {
@@ -2847,17 +2847,17 @@ static void intel_get_transcoder_timings(struct intel_crtc *crtc,
intel_de_read(dev_priv, TRANS_SET_CONTEXT_LATENCY(cpu_transcoder));
}
-static void intel_bigjoiner_adjust_pipe_src(struct intel_crtc_state *crtc_state)
+static void intel_joiner_adjust_pipe_src(struct intel_crtc_state *crtc_state)
{
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
- int num_pipes = intel_bigjoiner_num_pipes(crtc_state);
+ int num_pipes = intel_joiner_num_pipes(crtc_state);
enum pipe master_pipe, pipe = crtc->pipe;
int width;
if (num_pipes < 2)
return;
- master_pipe = bigjoiner_master_pipe(crtc_state);
+ master_pipe = joiner_master_pipe(crtc_state);
width = drm_rect_width(&crtc_state->pipe_src);
drm_rect_translate_to(&crtc_state->pipe_src,
@@ -2877,7 +2877,7 @@ static void intel_get_pipe_src_size(struct intel_crtc *crtc,
REG_FIELD_GET(PIPESRC_WIDTH_MASK, tmp) + 1,
REG_FIELD_GET(PIPESRC_HEIGHT_MASK, tmp) + 1);
- intel_bigjoiner_adjust_pipe_src(pipe_config);
+ intel_joiner_adjust_pipe_src(pipe_config);
}
void i9xx_set_pipeconf(const struct intel_crtc_state *crtc_state)
@@ -3461,7 +3461,7 @@ static bool ilk_get_pipe_config(struct intel_crtc *crtc,
return ret;
}
-static u8 bigjoiner_pipes(struct drm_i915_private *i915)
+static u8 joiner_pipes(struct drm_i915_private *i915)
{
u8 pipes;
@@ -3490,7 +3490,7 @@ static bool transcoder_ddi_func_is_enabled(struct drm_i915_private *dev_priv,
return tmp & TRANS_DDI_FUNC_ENABLE;
}
-static void enabled_bigjoiner_pipes(struct drm_i915_private *dev_priv,
+static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
u8 *master_pipes, u8 *slave_pipes)
{
struct intel_crtc *crtc;
@@ -3499,7 +3499,7 @@ static void enabled_bigjoiner_pipes(struct drm_i915_private *dev_priv,
*slave_pipes = 0;
for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, crtc,
- bigjoiner_pipes(dev_priv)) {
+ joiner_pipes(dev_priv)) {
enum intel_display_power_domain power_domain;
enum pipe pipe = crtc->pipe;
intel_wakeref_t wakeref;
@@ -3537,7 +3537,7 @@ static void enabled_bigjoiner_pipes(struct drm_i915_private *dev_priv,
*master_pipes, *slave_pipes);
}
-static enum pipe get_bigjoiner_master_pipe(enum pipe pipe, u8 master_pipes, u8 slave_pipes)
+static enum pipe get_joiner_master_pipe(enum pipe pipe, u8 master_pipes, u8 slave_pipes)
{
if ((slave_pipes & BIT(pipe)) == 0)
return pipe;
@@ -3549,11 +3549,11 @@ static enum pipe get_bigjoiner_master_pipe(enum pipe pipe, u8 master_pipes, u8 s
return fls(master_pipes) - 1;
}
-static u8 get_bigjoiner_slave_pipes(enum pipe pipe, u8 master_pipes, u8 slave_pipes)
+static u8 get_joiner_slave_pipes(enum pipe pipe, u8 master_pipes, u8 slave_pipes)
{
enum pipe master_pipe, next_master_pipe;
- master_pipe = get_bigjoiner_master_pipe(pipe, master_pipes, slave_pipes);
+ master_pipe = get_joiner_master_pipe(pipe, master_pipes, slave_pipes);
if ((master_pipes & BIT(master_pipe)) == 0)
return 0;
@@ -3630,16 +3630,16 @@ static u8 hsw_enabled_transcoders(struct intel_crtc *crtc)
enabled_transcoders |= BIT(cpu_transcoder);
}
- /* single pipe or bigjoiner master */
+ /* single pipe or joiner master */
cpu_transcoder = (enum transcoder) crtc->pipe;
if (transcoder_ddi_func_is_enabled(dev_priv, cpu_transcoder))
enabled_transcoders |= BIT(cpu_transcoder);
- /* bigjoiner slave -> consider the master pipe's transcoder as well */
- enabled_bigjoiner_pipes(dev_priv, &master_pipes, &slave_pipes);
+ /* joiner slave -> consider the master pipe's transcoder as well */
+ enabled_joiner_pipes(dev_priv, &master_pipes, &slave_pipes);
if (slave_pipes & BIT(crtc->pipe)) {
cpu_transcoder = (enum transcoder)
- get_bigjoiner_master_pipe(crtc->pipe, master_pipes, slave_pipes);
+ get_joiner_master_pipe(crtc->pipe, master_pipes, slave_pipes);
if (transcoder_ddi_func_is_enabled(dev_priv, cpu_transcoder))
enabled_transcoders |= BIT(cpu_transcoder);
}
@@ -3764,21 +3764,21 @@ static bool bxt_get_dsi_transcoder_state(struct intel_crtc *crtc,
return transcoder_is_dsi(pipe_config->cpu_transcoder);
}
-static void intel_bigjoiner_get_config(struct intel_crtc_state *crtc_state)
+static void intel_joiner_get_config(struct intel_crtc_state *crtc_state)
{
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
struct drm_i915_private *i915 = to_i915(crtc->base.dev);
u8 master_pipes, slave_pipes;
enum pipe pipe = crtc->pipe;
- enabled_bigjoiner_pipes(i915, &master_pipes, &slave_pipes);
+ enabled_joiner_pipes(i915, &master_pipes, &slave_pipes);
if (((master_pipes | slave_pipes) & BIT(pipe)) == 0)
return;
- crtc_state->bigjoiner_pipes =
- BIT(get_bigjoiner_master_pipe(pipe, master_pipes, slave_pipes)) |
- get_bigjoiner_slave_pipes(pipe, master_pipes, slave_pipes);
+ crtc_state->joiner_pipes =
+ BIT(get_joiner_master_pipe(pipe, master_pipes, slave_pipes)) |
+ get_joiner_slave_pipes(pipe, master_pipes, slave_pipes);
}
static bool hsw_get_pipe_config(struct intel_crtc *crtc,
@@ -3805,7 +3805,7 @@ static bool hsw_get_pipe_config(struct intel_crtc *crtc,
if (!active)
goto out;
- intel_bigjoiner_get_config(pipe_config);
+ intel_joiner_get_config(pipe_config);
intel_dsc_get_config(pipe_config);
if (!transcoder_is_dsi(pipe_config->cpu_transcoder) ||
@@ -4464,7 +4464,7 @@ intel_crtc_copy_uapi_to_hw_state_nomodeset(struct intel_atomic_state *state,
struct intel_crtc_state *crtc_state =
intel_atomic_get_new_crtc_state(state, crtc);
- WARN_ON(intel_crtc_is_bigjoiner_slave(crtc_state));
+ WARN_ON(intel_crtc_is_joiner_slave(crtc_state));
drm_property_replace_blob(&crtc_state->hw.degamma_lut,
crtc_state->uapi.degamma_lut);
@@ -4481,7 +4481,7 @@ intel_crtc_copy_uapi_to_hw_state_modeset(struct intel_atomic_state *state,
struct intel_crtc_state *crtc_state =
intel_atomic_get_new_crtc_state(state, crtc);
- WARN_ON(intel_crtc_is_bigjoiner_slave(crtc_state));
+ WARN_ON(intel_crtc_is_joiner_slave(crtc_state));
crtc_state->hw.enable = crtc_state->uapi.enable;
crtc_state->hw.active = crtc_state->uapi.active;
@@ -4495,7 +4495,7 @@ intel_crtc_copy_uapi_to_hw_state_modeset(struct intel_atomic_state *state,
}
static void
-copy_bigjoiner_crtc_state_nomodeset(struct intel_atomic_state *state,
+copy_joiner_crtc_state_nomodeset(struct intel_atomic_state *state,
struct intel_crtc *slave_crtc)
{
struct intel_crtc_state *slave_crtc_state =
@@ -4515,7 +4515,7 @@ copy_bigjoiner_crtc_state_nomodeset(struct intel_atomic_state *state,
}
static int
-copy_bigjoiner_crtc_state_modeset(struct intel_atomic_state *state,
+copy_joiner_crtc_state_modeset(struct intel_atomic_state *state,
struct intel_crtc *slave_crtc)
{
struct intel_crtc_state *slave_crtc_state =
@@ -4525,8 +4525,8 @@ copy_bigjoiner_crtc_state_modeset(struct intel_atomic_state *state,
intel_atomic_get_new_crtc_state(state, master_crtc);
struct intel_crtc_state *saved_state;
- WARN_ON(master_crtc_state->bigjoiner_pipes !=
- slave_crtc_state->bigjoiner_pipes);
+ WARN_ON(master_crtc_state->joiner_pipes !=
+ slave_crtc_state->joiner_pipes);
saved_state = kmemdup(master_crtc_state, sizeof(*saved_state), GFP_KERNEL);
if (!saved_state)
@@ -4560,14 +4560,14 @@ copy_bigjoiner_crtc_state_modeset(struct intel_atomic_state *state,
drm_dp_tunnel_ref_get(master_crtc_state->dp_tunnel_ref.tunnel,
&slave_crtc_state->dp_tunnel_ref);
- copy_bigjoiner_crtc_state_nomodeset(state, slave_crtc);
+ copy_joiner_crtc_state_nomodeset(state, slave_crtc);
slave_crtc_state->uapi.mode_changed = master_crtc_state->uapi.mode_changed;
slave_crtc_state->uapi.connectors_changed = master_crtc_state->uapi.connectors_changed;
slave_crtc_state->uapi.active_changed = master_crtc_state->uapi.active_changed;
- WARN_ON(master_crtc_state->bigjoiner_pipes !=
- slave_crtc_state->bigjoiner_pipes);
+ WARN_ON(master_crtc_state->joiner_pipes !=
+ slave_crtc_state->joiner_pipes);
return 0;
}
@@ -5365,7 +5365,7 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
PIPE_CONF_CHECK_X(sync_mode_slaves_mask);
PIPE_CONF_CHECK_I(master_transcoder);
- PIPE_CONF_CHECK_X(bigjoiner_pipes);
+ PIPE_CONF_CHECK_X(joiner_pipes);
PIPE_CONF_CHECK_BOOL(dsc.config.block_pred_enable);
PIPE_CONF_CHECK_BOOL(dsc.config.convert_rgb);
@@ -5729,7 +5729,7 @@ static bool active_planes_affects_min_cdclk(struct drm_i915_private *dev_priv)
IS_IVYBRIDGE(dev_priv);
}
-static int intel_crtc_add_bigjoiner_planes(struct intel_atomic_state *state,
+static int intel_crtc_add_joiner_planes(struct intel_atomic_state *state,
struct intel_crtc *crtc,
struct intel_crtc *other)
{
@@ -5746,7 +5746,7 @@ static int intel_crtc_add_bigjoiner_planes(struct intel_atomic_state *state,
return intel_crtc_add_planes_to_state(state, other, plane_ids);
}
-static int intel_bigjoiner_add_affected_planes(struct intel_atomic_state *state)
+static int intel_joiner_add_affected_planes(struct intel_atomic_state *state)
{
struct drm_i915_private *i915 = to_i915(state->base.dev);
const struct intel_crtc_state *crtc_state;
@@ -5757,13 +5757,13 @@ static int intel_bigjoiner_add_affected_planes(struct intel_atomic_state *state)
struct intel_crtc *other;
for_each_intel_crtc_in_pipe_mask(&i915->drm, other,
- crtc_state->bigjoiner_pipes) {
+ crtc_state->joiner_pipes) {
int ret;
if (crtc == other)
continue;
- ret = intel_crtc_add_bigjoiner_planes(state, crtc, other);
+ ret = intel_crtc_add_joiner_planes(state, crtc, other);
if (ret)
return ret;
}
@@ -5785,7 +5785,7 @@ static int intel_atomic_check_planes(struct intel_atomic_state *state)
if (ret)
return ret;
- ret = intel_bigjoiner_add_affected_planes(state);
+ ret = intel_joiner_add_affected_planes(state);
if (ret)
return ret;
@@ -5885,7 +5885,7 @@ static bool intel_pipes_need_modeset(struct intel_atomic_state *state,
return false;
}
-static int intel_atomic_check_bigjoiner(struct intel_atomic_state *state,
+static int intel_atomic_check_joiner(struct intel_atomic_state *state,
struct intel_crtc *master_crtc)
{
struct drm_i915_private *i915 = to_i915(state->base.dev);
@@ -5893,25 +5893,25 @@ static int intel_atomic_check_bigjoiner(struct intel_atomic_state *state,
intel_atomic_get_new_crtc_state(state, master_crtc);
struct intel_crtc *slave_crtc;
- if (!master_crtc_state->bigjoiner_pipes)
+ if (!master_crtc_state->joiner_pipes)
return 0;
/* sanity check */
if (drm_WARN_ON(&i915->drm,
- master_crtc->pipe != bigjoiner_master_pipe(master_crtc_state)))
+ master_crtc->pipe != joiner_master_pipe(master_crtc_state)))
return -EINVAL;
- if (master_crtc_state->bigjoiner_pipes & ~bigjoiner_pipes(i915)) {
+ if (master_crtc_state->joiner_pipes & ~joiner_pipes(i915)) {
drm_dbg_kms(&i915->drm,
"[CRTC:%d:%s] Cannot act as big joiner master "
"(need 0x%x as pipes, only 0x%x possible)\n",
master_crtc->base.base.id, master_crtc->base.name,
- master_crtc_state->bigjoiner_pipes, bigjoiner_pipes(i915));
+ master_crtc_state->joiner_pipes, joiner_pipes(i915));
return -EINVAL;
}
for_each_intel_crtc_in_pipe_mask(&i915->drm, slave_crtc,
- intel_crtc_bigjoiner_slave_pipes(master_crtc_state)) {
+ intel_crtc_joiner_slave_pipes(master_crtc_state)) {
struct intel_crtc_state *slave_crtc_state;
int ret;
@@ -5923,7 +5923,7 @@ static int intel_atomic_check_bigjoiner(struct intel_atomic_state *state,
if (slave_crtc_state->uapi.enable) {
drm_dbg_kms(&i915->drm,
"[CRTC:%d:%s] Slave is enabled as normal CRTC, but "
- "[CRTC:%d:%s] claiming this CRTC for bigjoiner.\n",
+ "[CRTC:%d:%s] claiming this CRTC for joiner.\n",
slave_crtc->base.base.id, slave_crtc->base.name,
master_crtc->base.base.id, master_crtc->base.name);
return -EINVAL;
@@ -5945,10 +5945,10 @@ static int intel_atomic_check_bigjoiner(struct intel_atomic_state *state,
slave_crtc->base.base.id, slave_crtc->base.name,
master_crtc->base.base.id, master_crtc->base.name);
- slave_crtc_state->bigjoiner_pipes =
- master_crtc_state->bigjoiner_pipes;
+ slave_crtc_state->joiner_pipes =
+ master_crtc_state->joiner_pipes;
- ret = copy_bigjoiner_crtc_state_modeset(state, slave_crtc);
+ ret = copy_joiner_crtc_state_modeset(state, slave_crtc);
if (ret)
return ret;
}
@@ -5956,7 +5956,7 @@ static int intel_atomic_check_bigjoiner(struct intel_atomic_state *state,
return 0;
}
-static void kill_bigjoiner_slave(struct intel_atomic_state *state,
+static void kill_joiner_slave(struct intel_atomic_state *state,
struct intel_crtc *master_crtc)
{
struct drm_i915_private *i915 = to_i915(state->base.dev);
@@ -5965,16 +5965,16 @@ static void kill_bigjoiner_slave(struct intel_atomic_state *state,
struct intel_crtc *slave_crtc;
for_each_intel_crtc_in_pipe_mask(&i915->drm, slave_crtc,
- intel_crtc_bigjoiner_slave_pipes(master_crtc_state)) {
+ intel_crtc_joiner_slave_pipes(master_crtc_state)) {
struct intel_crtc_state *slave_crtc_state =
intel_atomic_get_new_crtc_state(state, slave_crtc);
- slave_crtc_state->bigjoiner_pipes = 0;
+ slave_crtc_state->joiner_pipes = 0;
intel_crtc_copy_uapi_to_hw_state_modeset(state, slave_crtc);
}
- master_crtc_state->bigjoiner_pipes = 0;
+ master_crtc_state->joiner_pipes = 0;
}
/**
@@ -6027,9 +6027,9 @@ static int intel_async_flip_check_uapi(struct intel_atomic_state *state,
* FIXME: Bigjoiner+async flip is busted currently.
* Remove this check once the issues are fixed.
*/
- if (new_crtc_state->bigjoiner_pipes) {
+ if (new_crtc_state->joiner_pipes) {
drm_dbg_kms(&i915->drm,
- "[CRTC:%d:%s] async flip disallowed with bigjoiner\n",
+ "[CRTC:%d:%s] async flip disallowed with joiner\n",
crtc->base.base.id, crtc->base.name);
return -EINVAL;
}
@@ -6254,7 +6254,7 @@ static int intel_async_flip_check_hw(struct intel_atomic_state *state, struct in
return 0;
}
-static int intel_bigjoiner_add_affected_crtcs(struct intel_atomic_state *state)
+static int intel_joiner_add_affected_crtcs(struct intel_atomic_state *state)
{
struct drm_i915_private *i915 = to_i915(state->base.dev);
struct intel_crtc_state *crtc_state;
@@ -6264,9 +6264,9 @@ static int intel_bigjoiner_add_affected_crtcs(struct intel_atomic_state *state)
int i;
for_each_new_intel_crtc_in_state(state, crtc, crtc_state, i) {
- affected_pipes |= crtc_state->bigjoiner_pipes;
+ affected_pipes |= crtc_state->joiner_pipes;
if (intel_crtc_needs_modeset(crtc_state))
- modeset_pipes |= crtc_state->bigjoiner_pipes;
+ modeset_pipes |= crtc_state->joiner_pipes;
}
for_each_intel_crtc_in_pipe_mask(&i915->drm, crtc, affected_pipes) {
@@ -6292,10 +6292,10 @@ static int intel_bigjoiner_add_affected_crtcs(struct intel_atomic_state *state)
}
for_each_new_intel_crtc_in_state(state, crtc, crtc_state, i) {
- /* Kill old bigjoiner link, we may re-establish afterwards */
+ /* Kill old joiner link, we may re-establish afterwards */
if (intel_crtc_needs_modeset(crtc_state) &&
- intel_crtc_is_bigjoiner_master(crtc_state))
- kill_bigjoiner_slave(state, crtc);
+ intel_crtc_is_joiner_master(crtc_state))
+ kill_joiner_slave(state, crtc);
}
return 0;
@@ -6313,7 +6313,7 @@ static int intel_atomic_check_config(struct intel_atomic_state *state,
*failed_pipe = INVALID_PIPE;
- ret = intel_bigjoiner_add_affected_crtcs(state);
+ ret = intel_joiner_add_affected_crtcs(state);
if (ret)
return ret;
@@ -6323,14 +6323,14 @@ static int intel_atomic_check_config(struct intel_atomic_state *state,
for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) {
if (!intel_crtc_needs_modeset(new_crtc_state)) {
- if (intel_crtc_is_bigjoiner_slave(new_crtc_state))
- copy_bigjoiner_crtc_state_nomodeset(state, crtc);
+ if (intel_crtc_is_joiner_slave(new_crtc_state))
+ copy_joiner_crtc_state_nomodeset(state, crtc);
else
intel_crtc_copy_uapi_to_hw_state_nomodeset(state, crtc);
continue;
}
- if (drm_WARN_ON(&i915->drm, intel_crtc_is_bigjoiner_slave(new_crtc_state)))
+ if (drm_WARN_ON(&i915->drm, intel_crtc_is_joiner_slave(new_crtc_state)))
continue;
ret = intel_crtc_prepare_cleared_state(state, crtc);
@@ -6349,7 +6349,7 @@ static int intel_atomic_check_config(struct intel_atomic_state *state,
if (!intel_crtc_needs_modeset(new_crtc_state))
continue;
- if (drm_WARN_ON(&i915->drm, intel_crtc_is_bigjoiner_slave(new_crtc_state)))
+ if (drm_WARN_ON(&i915->drm, intel_crtc_is_joiner_slave(new_crtc_state)))
continue;
if (!new_crtc_state->hw.enable)
@@ -6460,12 +6460,12 @@ int intel_atomic_check(struct drm_device *dev,
if (!intel_crtc_needs_modeset(new_crtc_state))
continue;
- if (intel_crtc_is_bigjoiner_slave(new_crtc_state)) {
+ if (intel_crtc_is_joiner_slave(new_crtc_state)) {
drm_WARN_ON(&dev_priv->drm, new_crtc_state->uapi.enable);
continue;
}
- ret = intel_atomic_check_bigjoiner(state, crtc);
+ ret = intel_atomic_check_joiner(state, crtc);
if (ret)
goto fail;
}
@@ -6475,7 +6475,7 @@ int intel_atomic_check(struct drm_device *dev,
if (!intel_crtc_needs_modeset(new_crtc_state))
continue;
- intel_bigjoiner_adjust_pipe_src(new_crtc_state);
+ intel_joiner_adjust_pipe_src(new_crtc_state);
intel_crtc_check_fastset(old_crtc_state, new_crtc_state);
}
@@ -6515,8 +6515,8 @@ int intel_atomic_check(struct drm_device *dev,
intel_crtc_flag_modeset(new_crtc_state);
}
- if (new_crtc_state->bigjoiner_pipes) {
- if (intel_pipes_need_modeset(state, new_crtc_state->bigjoiner_pipes))
+ if (new_crtc_state->joiner_pipes) {
+ if (intel_pipes_need_modeset(state, new_crtc_state->joiner_pipes))
intel_crtc_flag_modeset(new_crtc_state);
}
}
@@ -6930,7 +6930,7 @@ static void intel_commit_modeset_disables(struct intel_atomic_state *state)
if ((disable_pipes & BIT(crtc->pipe)) == 0)
continue;
- if (intel_crtc_is_bigjoiner_slave(old_crtc_state))
+ if (intel_crtc_is_joiner_slave(old_crtc_state))
continue;
/* In case of Transcoder port Sync master slave CRTCs can be
@@ -6952,7 +6952,7 @@ static void intel_commit_modeset_disables(struct intel_atomic_state *state)
if ((disable_pipes & BIT(crtc->pipe)) == 0)
continue;
- if (intel_crtc_is_bigjoiner_slave(old_crtc_state))
+ if (intel_crtc_is_joiner_slave(old_crtc_state))
continue;
intel_old_crtc_state_disables(state, crtc);
@@ -7031,7 +7031,7 @@ static void skl_commit_modeset_enables(struct intel_atomic_state *state)
while (update_pipes) {
/*
- * Commit in reverse order to make bigjoiner master
+ * Commit in reverse order to make joiner master
* send the uapi events after slaves are done.
*/
for_each_oldnew_intel_crtc_in_state_reverse(state, crtc, old_crtc_state,
@@ -7077,7 +7077,7 @@ static void skl_commit_modeset_enables(struct intel_atomic_state *state)
if ((modeset_pipes & BIT(pipe)) == 0)
continue;
- if (intel_crtc_is_bigjoiner_slave(new_crtc_state))
+ if (intel_crtc_is_joiner_slave(new_crtc_state))
continue;
if (intel_dp_mst_is_slave_trans(new_crtc_state) ||
@@ -7099,7 +7099,7 @@ static void skl_commit_modeset_enables(struct intel_atomic_state *state)
if ((modeset_pipes & BIT(pipe)) == 0)
continue;
- if (intel_crtc_is_bigjoiner_slave(new_crtc_state))
+ if (intel_crtc_is_joiner_slave(new_crtc_state))
continue;
modeset_pipes &= ~intel_crtc_joined_pipe_mask(new_crtc_state);
@@ -7120,7 +7120,7 @@ static void skl_commit_modeset_enables(struct intel_atomic_state *state)
}
/*
- * Commit in reverse order to make bigjoiner master
+ * Commit in reverse order to make joiner master
* send the uapi events after slaves are done.
*/
for_each_new_intel_crtc_in_state_reverse(state, crtc, new_crtc_state, i) {
@@ -7848,7 +7848,7 @@ static int max_dotclock(struct drm_i915_private *i915)
{
int max_dotclock = i915->display.cdclk.max_dotclk_freq;
- /* icl+ might use bigjoiner */
+ /* icl+ might use joiner */
if (DISPLAY_VER(i915) >= 11)
max_dotclock *= 2;
@@ -7973,7 +7973,7 @@ enum drm_mode_status intel_cpu_transcoder_mode_valid(struct drm_i915_private *de
enum drm_mode_status
intel_mode_valid_max_plane_size(struct drm_i915_private *dev_priv,
const struct drm_display_mode *mode,
- bool bigjoiner)
+ bool joiner)
{
int plane_width_max, plane_height_max;
@@ -7990,7 +7990,7 @@ intel_mode_valid_max_plane_size(struct drm_i915_private *dev_priv,
* too big for that.
*/
if (DISPLAY_VER(dev_priv) >= 11) {
- plane_width_max = 5120 << bigjoiner;
+ plane_width_max = 5120 << joiner;
plane_height_max = 4320;
} else {
plane_width_max = 5120;
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index 56d1c0e3e62c..a2ec5309113e 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -415,7 +415,7 @@ u32 intel_plane_fb_max_stride(struct drm_i915_private *dev_priv,
enum drm_mode_status
intel_mode_valid_max_plane_size(struct drm_i915_private *dev_priv,
const struct drm_display_mode *mode,
- bool bigjoiner);
+ bool joiner);
enum drm_mode_status
intel_cpu_transcoder_mode_valid(struct drm_i915_private *i915,
const struct drm_display_mode *mode);
@@ -423,9 +423,9 @@ enum phy intel_port_to_phy(struct drm_i915_private *i915, enum port port);
bool is_trans_port_sync_mode(const struct intel_crtc_state *state);
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_bigjoiner_slave(const struct intel_crtc_state *crtc_state);
-bool intel_crtc_is_bigjoiner_master(const struct intel_crtc_state *crtc_state);
-u8 intel_crtc_bigjoiner_slave_pipes(const struct intel_crtc_state *crtc_state);
+bool intel_crtc_is_joiner_slave(const struct intel_crtc_state *crtc_state);
+bool intel_crtc_is_joiner_master(const struct intel_crtc_state *crtc_state);
+u8 intel_crtc_joiner_slave_pipes(const struct intel_crtc_state *crtc_state);
struct intel_crtc *intel_master_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_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
index 35f9f86ef70f..97fcf78bc8d0 100644
--- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
+++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
@@ -574,10 +574,10 @@ static void intel_crtc_info(struct seq_file *m, struct intel_crtc *crtc)
intel_scaler_info(m, crtc);
- if (crtc_state->bigjoiner_pipes)
+ if (crtc_state->joiner_pipes)
seq_printf(m, "\tLinked to 0x%x pipes as a %s\n",
- crtc_state->bigjoiner_pipes,
- intel_crtc_is_bigjoiner_slave(crtc_state) ? "slave" : "master");
+ crtc_state->joiner_pipes,
+ intel_crtc_is_joiner_slave(crtc_state) ? "slave" : "master");
for_each_intel_encoder_mask(&dev_priv->drm, encoder,
crtc_state->uapi.encoder_mask)
@@ -1542,8 +1542,8 @@ void intel_connector_debugfs_add(struct intel_connector *connector)
if (DISPLAY_VER(i915) >= 11 &&
(connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
connector_type == DRM_MODE_CONNECTOR_eDP)) {
- debugfs_create_bool("i915_bigjoiner_force_enable", 0644, root,
- &connector->force_bigjoiner_enable);
+ debugfs_create_bool("i915_joiner_force_enable", 0644, root,
+ &connector->force_joiner_enable);
}
if (connector_type == DRM_MODE_CONNECTOR_DSI ||
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index a06a154d587b..f84a2b180344 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -637,7 +637,7 @@ struct intel_connector {
struct intel_dp *mst_port;
- bool force_bigjoiner_enable;
+ bool force_joiner_enable;
struct {
struct drm_dp_aux *dsc_decompression_aux;
@@ -1339,7 +1339,7 @@ struct intel_crtc_state {
bool wgc_enable;
/* big joiner pipe bitmask */
- u8 bigjoiner_pipes;
+ u8 joiner_pipes;
/* Display Stream compression state */
struct {
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 486361eb0070..d6893a1cf5cc 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -436,7 +436,7 @@ int intel_dp_max_link_data_rate(struct intel_dp *intel_dp,
return max_rate;
}
-bool intel_dp_has_bigjoiner(struct intel_dp *intel_dp)
+bool intel_dp_has_joiner(struct intel_dp *intel_dp)
{
struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
struct intel_encoder *encoder = &intel_dig_port->base;
@@ -805,24 +805,24 @@ u32 intel_dp_dsc_nearest_valid_bpp(struct drm_i915_private *i915, u32 bpp, u32 p
static
u32 get_max_compressed_bpp_with_joiner(struct drm_i915_private *i915,
u32 mode_clock, u32 mode_hdisplay,
- bool bigjoiner)
+ bool joiner)
{
u32 max_bpp_small_joiner_ram;
/* Small Joiner Check: output bpp <= joiner RAM (bits) / Horiz. width */
max_bpp_small_joiner_ram = small_joiner_ram_size_bits(i915) / mode_hdisplay;
- if (bigjoiner) {
- int bigjoiner_interface_bits = DISPLAY_VER(i915) >= 14 ? 36 : 24;
- /* With bigjoiner multiple dsc engines are used in parallel so PPC is 2 */
+ if (joiner) {
+ int joiner_interface_bits = DISPLAY_VER(i915) >= 14 ? 36 : 24;
+ /* With joiner multiple dsc engines are used in parallel so PPC is 2 */
int ppc = 2;
- u32 max_bpp_bigjoiner =
- i915->display.cdclk.max_cdclk_freq * ppc * bigjoiner_interface_bits /
+ u32 max_bpp_joiner =
+ i915->display.cdclk.max_cdclk_freq * ppc * joiner_interface_bits /
intel_dp_mode_to_fec_clock(mode_clock);
max_bpp_small_joiner_ram *= 2;
- return min(max_bpp_small_joiner_ram, max_bpp_bigjoiner);
+ return min(max_bpp_small_joiner_ram, max_bpp_joiner);
}
return max_bpp_small_joiner_ram;
@@ -831,7 +831,7 @@ u32 get_max_compressed_bpp_with_joiner(struct drm_i915_private *i915,
u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
u32 link_clock, u32 lane_count,
u32 mode_clock, u32 mode_hdisplay,
- bool bigjoiner,
+ bool joiner,
enum intel_output_format output_format,
u32 pipe_bpp,
u32 timeslots)
@@ -877,7 +877,7 @@ u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
intel_dp_mode_to_fec_clock(mode_clock));
joiner_max_bpp = get_max_compressed_bpp_with_joiner(i915, mode_clock,
- mode_hdisplay, bigjoiner);
+ mode_hdisplay, joiner);
bits_per_pixel = min(bits_per_pixel, joiner_max_bpp);
bits_per_pixel = intel_dp_dsc_nearest_valid_bpp(i915, bits_per_pixel, pipe_bpp);
@@ -887,7 +887,7 @@ u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
int mode_clock, int mode_hdisplay,
- bool bigjoiner)
+ bool joiner)
{
struct drm_i915_private *i915 = to_i915(connector->base.dev);
u8 min_slice_count, i;
@@ -921,14 +921,14 @@ u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
/* Find the closest match to the valid slice count values */
for (i = 0; i < ARRAY_SIZE(valid_dsc_slicecount); i++) {
- u8 test_slice_count = valid_dsc_slicecount[i] << bigjoiner;
+ u8 test_slice_count = valid_dsc_slicecount[i] << joiner;
if (test_slice_count >
drm_dp_dsc_sink_max_slice_count(connector->dp.dsc_dpcd, false))
break;
/* big joiner needs small joiner to be enabled */
- if (bigjoiner && test_slice_count < 4)
+ if (joiner && test_slice_count < 4)
continue;
if (min_slice_count <= test_slice_count)
@@ -1207,17 +1207,17 @@ intel_dp_mode_valid_downstream(struct intel_connector *connector,
return MODE_OK;
}
-bool intel_dp_need_bigjoiner(struct intel_dp *intel_dp,
+bool intel_dp_need_joiner(struct intel_dp *intel_dp,
struct intel_connector *connector,
int hdisplay, int clock)
{
struct drm_i915_private *i915 = dp_to_i915(intel_dp);
- if (!intel_dp_has_bigjoiner(intel_dp))
+ if (!intel_dp_has_joiner(intel_dp))
return false;
return clock > i915->display.cdclk.max_dotclk_freq || hdisplay > 5120 ||
- connector->force_bigjoiner_enable;
+ connector->force_joiner_enable;
}
static enum drm_mode_status
@@ -1234,7 +1234,7 @@ intel_dp_mode_valid(struct drm_connector *_connector,
u16 dsc_max_compressed_bpp = 0;
u8 dsc_slice_count = 0;
enum drm_mode_status status;
- bool dsc = false, bigjoiner = false;
+ bool dsc = false, joiner = false;
status = intel_cpu_transcoder_mode_valid(dev_priv, mode);
if (status != MODE_OK)
@@ -1255,9 +1255,9 @@ intel_dp_mode_valid(struct drm_connector *_connector,
target_clock = fixed_mode->clock;
}
- if (intel_dp_need_bigjoiner(intel_dp, connector,
+ if (intel_dp_need_joiner(intel_dp, connector,
mode->hdisplay, target_clock)) {
- bigjoiner = true;
+ joiner = true;
max_dotclk *= 2;
}
if (target_clock > max_dotclk)
@@ -1304,20 +1304,20 @@ intel_dp_mode_valid(struct drm_connector *_connector,
max_lanes,
target_clock,
mode->hdisplay,
- bigjoiner,
+ joiner,
output_format,
pipe_bpp, 64);
dsc_slice_count =
intel_dp_dsc_get_slice_count(connector,
target_clock,
mode->hdisplay,
- bigjoiner);
+ joiner);
}
dsc = dsc_max_compressed_bpp && dsc_slice_count;
}
- if (intel_dp_joiner_needs_dsc(dev_priv, bigjoiner) && !dsc)
+ if (intel_dp_joiner_needs_dsc(dev_priv, joiner) && !dsc)
return MODE_CLOCK_HIGH;
if (mode_rate > max_rate && !dsc)
@@ -1327,7 +1327,7 @@ intel_dp_mode_valid(struct drm_connector *_connector,
if (status != MODE_OK)
return status;
- return intel_mode_valid_max_plane_size(dev_priv, mode, bigjoiner);
+ return intel_mode_valid_max_plane_size(dev_priv, mode, joiner);
}
bool intel_dp_source_supports_tps3(struct drm_i915_private *i915)
@@ -2018,7 +2018,7 @@ static int dsc_compute_compressed_bpp(struct intel_dp *intel_dp,
dsc_joiner_max_bpp = get_max_compressed_bpp_with_joiner(i915, adjusted_mode->clock,
adjusted_mode->hdisplay,
- pipe_config->bigjoiner_pipes);
+ pipe_config->joiner_pipes);
dsc_max_bpp = min(dsc_max_bpp, dsc_joiner_max_bpp);
dsc_max_bpp = min(dsc_max_bpp, to_bpp_int(limits->link.max_bpp_x16));
@@ -2252,7 +2252,7 @@ int intel_dp_dsc_compute_config(struct intel_dp *intel_dp,
intel_dp_dsc_get_slice_count(connector,
adjusted_mode->crtc_clock,
adjusted_mode->crtc_hdisplay,
- pipe_config->bigjoiner_pipes);
+ pipe_config->joiner_pipes);
if (!dsc_dp_slice_count) {
drm_dbg_kms(&dev_priv->drm,
"Compressed Slice Count not supported\n");
@@ -2266,7 +2266,7 @@ int intel_dp_dsc_compute_config(struct intel_dp *intel_dp,
* is greater than the maximum Cdclock and if slice count is even
* then we need to use 2 VDSC instances.
*/
- if (pipe_config->bigjoiner_pipes || pipe_config->dsc.slice_count > 1)
+ if (pipe_config->joiner_pipes || pipe_config->dsc.slice_count > 1)
pipe_config->dsc.dsc_split = true;
ret = intel_dp_dsc_compute_params(connector, pipe_config);
@@ -2432,12 +2432,12 @@ intel_dp_compute_link_config(struct intel_encoder *encoder,
!intel_dp_supports_fec(intel_dp, connector, pipe_config))
return -EINVAL;
- if (intel_dp_need_bigjoiner(intel_dp, connector,
+ if (intel_dp_need_joiner(intel_dp, connector,
adjusted_mode->crtc_hdisplay,
adjusted_mode->crtc_clock))
- pipe_config->bigjoiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe);
+ pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe);
- joiner_needs_dsc = intel_dp_joiner_needs_dsc(i915, pipe_config->bigjoiner_pipes);
+ joiner_needs_dsc = intel_dp_joiner_needs_dsc(i915, pipe_config->joiner_pipes);
dsc_needed = joiner_needs_dsc || intel_dp->force_dsc_en ||
!intel_dp_compute_config_limits(intel_dp, pipe_config,
@@ -2757,7 +2757,7 @@ intel_dp_drrs_compute_config(struct intel_connector *connector,
* FIXME all joined pipes share the same transcoder.
* Need to account for that when updating M/N live.
*/
- if (has_seamless_m_n(connector) && !pipe_config->bigjoiner_pipes)
+ if (has_seamless_m_n(connector) && !pipe_config->joiner_pipes)
pipe_config->update_m_n = true;
if (!can_enable_drrs(connector, pipe_config, downclock_mode)) {
diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h
index 106ecfde36d9..4e4f88e69c55 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.h
+++ b/drivers/gpu/drm/i915/display/intel_dp.h
@@ -121,7 +121,7 @@ int intel_dp_effective_data_rate(int pixel_clock, int bpp_x16,
int intel_dp_max_link_data_rate(struct intel_dp *intel_dp,
int max_dprx_rate, int max_dprx_lanes);
bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, bool use_joiner);
-bool intel_dp_has_bigjoiner(struct intel_dp *intel_dp);
+bool intel_dp_has_joiner(struct intel_dp *intel_dp);
bool intel_dp_needs_vsc_sdp(const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state);
void intel_dp_set_infoframes(struct intel_encoder *encoder, bool enable,
@@ -139,7 +139,7 @@ int intel_dp_dsc_compute_max_bpp(const struct intel_connector *connector,
u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
u32 link_clock, u32 lane_count,
u32 mode_clock, u32 mode_hdisplay,
- bool bigjoiner,
+ bool joiner,
enum intel_output_format output_format,
u32 pipe_bpp,
u32 timeslots);
@@ -149,8 +149,8 @@ int intel_dp_dsc_sink_max_compressed_bpp(const struct intel_connector *connector
int bpc);
u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
int mode_clock, int mode_hdisplay,
- bool bigjoiner);
-bool intel_dp_need_bigjoiner(struct intel_dp *intel_dp,
+ bool joiner);
+bool intel_dp_need_joiner(struct intel_dp *intel_dp,
struct intel_connector *connector,
int hdisplay, int clock);
diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index c772ba19c547..b2c6f7ec578f 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -105,7 +105,7 @@ static int intel_dp_mst_bw_overhead(const struct intel_crtc_state *crtc_state,
dsc_slice_count = intel_dp_dsc_get_slice_count(connector,
adjusted_mode->clock,
adjusted_mode->hdisplay,
- crtc_state->bigjoiner_pipes);
+ crtc_state->joiner_pipes);
}
overhead = drm_dp_bw_overhead(crtc_state->lane_count,
@@ -567,16 +567,16 @@ static int intel_dp_mst_compute_config(struct intel_encoder *encoder,
if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN)
return -EINVAL;
- if (intel_dp_need_bigjoiner(intel_dp, connector,
+ if (intel_dp_need_joiner(intel_dp, connector,
adjusted_mode->crtc_hdisplay,
adjusted_mode->crtc_clock))
- pipe_config->bigjoiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe);
+ pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe);
pipe_config->sink_format = INTEL_OUTPUT_FORMAT_RGB;
pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB;
pipe_config->has_pch_encoder = false;
- joiner_needs_dsc = intel_dp_joiner_needs_dsc(dev_priv, pipe_config->bigjoiner_pipes);
+ joiner_needs_dsc = intel_dp_joiner_needs_dsc(dev_priv, pipe_config->joiner_pipes);
dsc_needed = joiner_needs_dsc || intel_dp->force_dsc_en ||
!intel_dp_mst_compute_config_limits(intel_dp,
@@ -1375,7 +1375,7 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
int max_dotclk = to_i915(connector->dev)->display.cdclk.max_dotclk_freq;
int max_rate, mode_rate, max_lanes, max_link_clock;
int ret;
- bool dsc = false, bigjoiner = false;
+ bool dsc = false, joiner = false;
u16 dsc_max_compressed_bpp = 0;
u8 dsc_slice_count = 0;
int target_clock = mode->clock;
@@ -1418,9 +1418,9 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
* corresponding link capabilities of the sink) in case the
* stream is uncompressed for it by the last branch device.
*/
- if (intel_dp_need_bigjoiner(intel_dp, intel_connector,
+ if (intel_dp_need_joiner(intel_dp, intel_connector,
mode->hdisplay, target_clock)) {
- bigjoiner = true;
+ joiner = true;
max_dotclk *= 2;
}
@@ -1449,20 +1449,20 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
max_lanes,
target_clock,
mode->hdisplay,
- bigjoiner,
+ joiner,
INTEL_OUTPUT_FORMAT_RGB,
pipe_bpp, 64);
dsc_slice_count =
intel_dp_dsc_get_slice_count(intel_connector,
target_clock,
mode->hdisplay,
- bigjoiner);
+ joiner);
}
dsc = dsc_max_compressed_bpp && dsc_slice_count;
}
- if (intel_dp_joiner_needs_dsc(dev_priv, bigjoiner) && !dsc) {
+ if (intel_dp_joiner_needs_dsc(dev_priv, joiner) && !dsc) {
*status = MODE_CLOCK_HIGH;
return 0;
}
@@ -1472,7 +1472,7 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
return 0;
}
- *status = intel_mode_valid_max_plane_size(dev_priv, mode, bigjoiner);
+ *status = intel_mode_valid_max_plane_size(dev_priv, mode, joiner);
return 0;
}
diff --git a/drivers/gpu/drm/i915/display/intel_drrs.c b/drivers/gpu/drm/i915/display/intel_drrs.c
index 597f8bd6aa1a..ccdf49b2aebb 100644
--- a/drivers/gpu/drm/i915/display/intel_drrs.c
+++ b/drivers/gpu/drm/i915/display/intel_drrs.c
@@ -135,7 +135,7 @@ static unsigned int intel_drrs_frontbuffer_bits(const struct intel_crtc_state *c
frontbuffer_bits = INTEL_FRONTBUFFER_ALL_MASK(crtc->pipe);
for_each_intel_crtc_in_pipe_mask(&i915->drm, crtc,
- crtc_state->bigjoiner_pipes)
+ crtc_state->joiner_pipes)
frontbuffer_bits |= INTEL_FRONTBUFFER_ALL_MASK(crtc->pipe);
return frontbuffer_bits;
@@ -157,7 +157,7 @@ void intel_drrs_activate(const struct intel_crtc_state *crtc_state)
if (!crtc_state->hw.active)
return;
- if (intel_crtc_is_bigjoiner_slave(crtc_state))
+ if (intel_crtc_is_joiner_slave(crtc_state))
return;
mutex_lock(&crtc->drrs.mutex);
@@ -189,7 +189,7 @@ void intel_drrs_deactivate(const struct intel_crtc_state *old_crtc_state)
if (!old_crtc_state->hw.active)
return;
- if (intel_crtc_is_bigjoiner_slave(old_crtc_state))
+ if (intel_crtc_is_joiner_slave(old_crtc_state))
return;
mutex_lock(&crtc->drrs.mutex);
diff --git a/drivers/gpu/drm/i915/display/intel_modeset_setup.c b/drivers/gpu/drm/i915/display/intel_modeset_setup.c
index caeca3a8442c..2e4c006122e5 100644
--- a/drivers/gpu/drm/i915/display/intel_modeset_setup.c
+++ b/drivers/gpu/drm/i915/display/intel_modeset_setup.c
@@ -68,7 +68,7 @@ static void intel_crtc_disable_noatomic_begin(struct intel_crtc *crtc,
/* Everything's already locked, -EDEADLK can't happen. */
for_each_intel_crtc_in_pipe_mask(&i915->drm, temp_crtc,
BIT(pipe) |
- intel_crtc_bigjoiner_slave_pipes(crtc_state)) {
+ intel_crtc_joiner_slave_pipes(crtc_state)) {
struct intel_crtc_state *temp_crtc_state =
intel_atomic_get_crtc_state(state, temp_crtc);
int ret;
@@ -189,7 +189,7 @@ static void intel_crtc_disable_noatomic_complete(struct intel_crtc *crtc)
/*
* Return all the pipes using a transcoder in @transcoder_mask.
- * For bigjoiner configs return only the bigjoiner master.
+ * For joiner configs return only the joiner master.
*/
static u8 get_transcoder_pipes(struct drm_i915_private *i915,
u8 transcoder_mask)
@@ -204,7 +204,7 @@ static u8 get_transcoder_pipes(struct drm_i915_private *i915,
if (temp_crtc_state->cpu_transcoder == INVALID_TRANSCODER)
continue;
- if (intel_crtc_is_bigjoiner_slave(temp_crtc_state))
+ if (intel_crtc_is_joiner_slave(temp_crtc_state))
continue;
if (transcoder_mask & BIT(temp_crtc_state->cpu_transcoder))
@@ -216,7 +216,7 @@ static u8 get_transcoder_pipes(struct drm_i915_private *i915,
/*
* Return the port sync master and slave pipes linked to @crtc.
- * For bigjoiner configs return only the bigjoiner master pipes.
+ * For joiner configs return only the joiner master pipes.
*/
static void get_portsync_pipes(struct intel_crtc *crtc,
u8 *master_pipe_mask, u8 *slave_pipes_mask)
@@ -248,7 +248,7 @@ static void get_portsync_pipes(struct intel_crtc *crtc,
*slave_pipes_mask = get_transcoder_pipes(i915, master_crtc_state->sync_mode_slaves_mask);
}
-static u8 get_bigjoiner_slave_pipes(struct drm_i915_private *i915, u8 master_pipes_mask)
+static u8 get_joiner_slave_pipes(struct drm_i915_private *i915, u8 master_pipes_mask)
{
struct intel_crtc *master_crtc;
u8 pipes = 0;
@@ -257,7 +257,7 @@ static u8 get_bigjoiner_slave_pipes(struct drm_i915_private *i915, u8 master_pip
struct intel_crtc_state *master_crtc_state =
to_intel_crtc_state(master_crtc->base.state);
- pipes |= intel_crtc_bigjoiner_slave_pipes(master_crtc_state);
+ pipes |= intel_crtc_joiner_slave_pipes(master_crtc_state);
}
return pipes;
@@ -269,21 +269,21 @@ static void intel_crtc_disable_noatomic(struct intel_crtc *crtc,
struct drm_i915_private *i915 = to_i915(crtc->base.dev);
u8 portsync_master_mask;
u8 portsync_slaves_mask;
- u8 bigjoiner_slaves_mask;
+ u8 joiner_slaves_mask;
struct intel_crtc *temp_crtc;
/* TODO: Add support for MST */
get_portsync_pipes(crtc, &portsync_master_mask, &portsync_slaves_mask);
- bigjoiner_slaves_mask = get_bigjoiner_slave_pipes(i915,
+ joiner_slaves_mask = get_joiner_slave_pipes(i915,
portsync_master_mask |
portsync_slaves_mask);
drm_WARN_ON(&i915->drm,
portsync_master_mask & portsync_slaves_mask ||
- portsync_master_mask & bigjoiner_slaves_mask ||
- portsync_slaves_mask & bigjoiner_slaves_mask);
+ portsync_master_mask & joiner_slaves_mask ||
+ portsync_slaves_mask & joiner_slaves_mask);
- for_each_intel_crtc_in_pipe_mask(&i915->drm, temp_crtc, bigjoiner_slaves_mask)
+ for_each_intel_crtc_in_pipe_mask(&i915->drm, temp_crtc, joiner_slaves_mask)
intel_crtc_disable_noatomic_begin(temp_crtc, ctx);
for_each_intel_crtc_in_pipe_mask(&i915->drm, temp_crtc, portsync_slaves_mask)
@@ -293,7 +293,7 @@ static void intel_crtc_disable_noatomic(struct intel_crtc *crtc,
intel_crtc_disable_noatomic_begin(temp_crtc, ctx);
for_each_intel_crtc_in_pipe_mask(&i915->drm, temp_crtc,
- bigjoiner_slaves_mask |
+ joiner_slaves_mask |
portsync_slaves_mask |
portsync_master_mask)
intel_crtc_disable_noatomic_complete(temp_crtc);
@@ -326,7 +326,7 @@ static void intel_modeset_update_connector_atomic_state(struct drm_i915_private
static void intel_crtc_copy_hw_to_uapi_state(struct intel_crtc_state *crtc_state)
{
- if (intel_crtc_is_bigjoiner_slave(crtc_state))
+ if (intel_crtc_is_joiner_slave(crtc_state))
return;
crtc_state->uapi.enable = crtc_state->hw.enable;
@@ -474,7 +474,7 @@ static bool intel_sanitize_crtc(struct intel_crtc *crtc,
}
if (!crtc_state->hw.active ||
- intel_crtc_is_bigjoiner_slave(crtc_state))
+ intel_crtc_is_joiner_slave(crtc_state))
return false;
needs_link_reset = intel_crtc_needs_link_reset(crtc);
@@ -728,15 +728,15 @@ static void intel_modeset_readout_hw_state(struct drm_i915_private *i915)
encoder->base.crtc = &crtc->base;
intel_encoder_get_config(encoder, crtc_state);
- /* read out to slave crtc as well for bigjoiner */
- if (crtc_state->bigjoiner_pipes) {
+ /* read out to slave crtc as well for joiner */
+ if (crtc_state->joiner_pipes) {
struct intel_crtc *slave_crtc;
- /* encoder should read be linked to bigjoiner master */
- WARN_ON(intel_crtc_is_bigjoiner_slave(crtc_state));
+ /* encoder should read be linked to joiner master */
+ WARN_ON(intel_crtc_is_joiner_slave(crtc_state));
for_each_intel_crtc_in_pipe_mask(&i915->drm, slave_crtc,
- intel_crtc_bigjoiner_slave_pipes(crtc_state)) {
+ intel_crtc_joiner_slave_pipes(crtc_state)) {
struct intel_crtc_state *slave_crtc_state;
slave_crtc_state = to_intel_crtc_state(slave_crtc->base.state);
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 595eb1b3b6c6..f9bc9679f888 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1625,13 +1625,13 @@ void intel_psr_compute_config(struct intel_dp *intel_dp,
}
/*
- * FIXME figure out what is wrong with PSR+bigjoiner and
+ * FIXME figure out what is wrong with PSR+joiner and
* fix it. Presumably something related to the fact that
* PSR is a transcoder level feature.
*/
- if (crtc_state->bigjoiner_pipes) {
+ if (crtc_state->joiner_pipes) {
drm_dbg_kms(&dev_priv->drm,
- "PSR disabled due to bigjoiner\n");
+ "PSR disabled due to joiner\n");
return;
}
diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c b/drivers/gpu/drm/i915/display/intel_vdsc.c
index 17d6572f9d0a..47468af8e029 100644
--- a/drivers/gpu/drm/i915/display/intel_vdsc.c
+++ b/drivers/gpu/drm/i915/display/intel_vdsc.c
@@ -380,7 +380,7 @@ int intel_dsc_get_num_vdsc_instances(const struct intel_crtc_state *crtc_state)
{
int num_vdsc_instances = intel_dsc_get_vdsc_per_pipe(crtc_state);
- if (crtc_state->bigjoiner_pipes)
+ if (crtc_state->joiner_pipes)
num_vdsc_instances *= 2;
return num_vdsc_instances;
@@ -761,8 +761,8 @@ void intel_uncompressed_joiner_enable(const struct intel_crtc_state *crtc_state)
struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
u32 dss_ctl1_val = 0;
- if (crtc_state->bigjoiner_pipes && !crtc_state->dsc.compression_enable) {
- if (intel_crtc_is_bigjoiner_slave(crtc_state))
+ if (crtc_state->joiner_pipes && !crtc_state->dsc.compression_enable) {
+ if (intel_crtc_is_joiner_slave(crtc_state))
dss_ctl1_val |= UNCOMPRESSED_JOINER_SLAVE;
else
dss_ctl1_val |= UNCOMPRESSED_JOINER_MASTER;
@@ -789,9 +789,9 @@ void intel_dsc_enable(const struct intel_crtc_state *crtc_state)
dss_ctl2_val |= RIGHT_BRANCH_VDSC_ENABLE;
dss_ctl1_val |= JOINER_ENABLE;
}
- if (crtc_state->bigjoiner_pipes) {
+ if (crtc_state->joiner_pipes) {
dss_ctl1_val |= BIG_JOINER_ENABLE;
- if (!intel_crtc_is_bigjoiner_slave(crtc_state))
+ if (!intel_crtc_is_joiner_slave(crtc_state))
dss_ctl1_val |= MASTER_BIG_JOINER_ENABLE;
}
intel_de_write(dev_priv, dss_ctl1_reg(crtc, crtc_state->cpu_transcoder), dss_ctl1_val);
@@ -805,7 +805,7 @@ void intel_dsc_disable(const struct intel_crtc_state *old_crtc_state)
/* Disable only if either of them is enabled */
if (old_crtc_state->dsc.compression_enable ||
- old_crtc_state->bigjoiner_pipes) {
+ old_crtc_state->joiner_pipes) {
intel_de_write(dev_priv, dss_ctl1_reg(crtc, old_crtc_state->cpu_transcoder), 0);
intel_de_write(dev_priv, dss_ctl2_reg(crtc, old_crtc_state->cpu_transcoder), 0);
}
diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.h b/drivers/gpu/drm/i915/display/intel_vdsc.h
index 2cc41ff08909..b12ed71c42c0 100644
--- a/drivers/gpu/drm/i915/display/intel_vdsc.h
+++ b/drivers/gpu/drm/i915/display/intel_vdsc.h
@@ -21,7 +21,7 @@ int intel_dsc_compute_params(struct intel_crtc_state *pipe_config);
void intel_dsc_get_config(struct intel_crtc_state *crtc_state);
enum intel_display_power_domain
intel_dsc_power_domain(struct intel_crtc *crtc, enum transcoder cpu_transcoder);
-struct intel_crtc *intel_dsc_get_bigjoiner_secondary(const struct intel_crtc *primary_crtc);
+struct intel_crtc *intel_dsc_get_joiner_secondary(const struct intel_crtc *primary_crtc);
int intel_dsc_get_num_vdsc_instances(const struct intel_crtc_state *crtc_state);
void intel_dsc_dsi_pps_write(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state);
diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c
index 5f3657aa8313..58531f02971b 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -123,7 +123,7 @@ intel_vrr_compute_config(struct intel_crtc_state *crtc_state,
* FIXME all joined pipes share the same transcoder.
* Need to account for that during VRR toggle/push/etc.
*/
- if (crtc_state->bigjoiner_pipes)
+ if (crtc_state->joiner_pipes)
return;
if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE)
diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
index 7b79704fa674..06e01dd6fd62 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -2494,9 +2494,9 @@ skl_get_initial_plane_config(struct intel_crtc *crtc,
drm_WARN_ON(dev, pipe != crtc->pipe);
- if (crtc_state->bigjoiner_pipes) {
+ if (crtc_state->joiner_pipes) {
drm_dbg_kms(&dev_priv->drm,
- "Unsupported bigjoiner configuration for initial FB\n");
+ "Unsupported joiner configuration for initial FB\n");
return;
}
--
2.37.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 2/5] drm/i915: Implement basic functions for ultrajoiner support
2024-05-20 7:38 [PATCH 0/5] Ultrajoiner basic functionality series Stanislav Lisovskiy
2024-05-20 7:38 ` [PATCH 1/5] drm/i915: Rename all bigjoiner to joiner Stanislav Lisovskiy
@ 2024-05-20 7:38 ` Stanislav Lisovskiy
2024-05-20 18:24 ` Ville Syrjälä
2024-05-20 7:38 ` [PATCH 3/5] drm/i915: Implement hw state readout for ultrajoiner Stanislav Lisovskiy
` (5 subsequent siblings)
7 siblings, 1 reply; 17+ messages in thread
From: Stanislav Lisovskiy @ 2024-05-20 7:38 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.saarinen, ville.syrjala
Lets implement or change basic functions required for ultrajoiner
support from atomic commit/modesetting point of view.
Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 66 +++++++++++++++++---
1 file changed, 56 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index c74721188e59..c390b79a43d6 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -242,33 +242,65 @@ is_trans_port_sync_mode(const struct intel_crtc_state *crtc_state)
is_trans_port_sync_slave(crtc_state);
}
-static enum pipe joiner_master_pipe(const struct intel_crtc_state *crtc_state)
+static u8 joiner_master_pipes(const struct intel_crtc_state *crtc_state)
{
- return ffs(crtc_state->joiner_pipes) - 1;
+ return BIT(PIPE_A) | BIT(PIPE_C);
+}
+
+static u8 joiner_primary_master_pipes(const struct intel_crtc_state *crtc_state)
+{
+ return BIT(PIPE_A);
}
u8 intel_crtc_joiner_slave_pipes(const struct intel_crtc_state *crtc_state)
{
- if (crtc_state->joiner_pipes)
- return crtc_state->joiner_pipes & ~BIT(joiner_master_pipe(crtc_state));
+ if (intel_is_ultrajoiner(crtc_state))
+ return crtc_state->joiner_pipes & ~joiner_primary_master_pipes(crtc_state);
+ else if (intel_is_bigjoiner(crtc_state))
+ return crtc_state->joiner_pipes & ~joiner_master_pipes(crtc_state);
else
return 0;
}
-bool intel_crtc_is_joiner_slave(const struct intel_crtc_state *crtc_state)
+bool intel_crtc_is_bigjoiner_slave(const struct intel_crtc_state *crtc_state)
{
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
return crtc_state->joiner_pipes &&
- crtc->pipe != joiner_master_pipe(crtc_state);
+ !(BIT(crtc->pipe) & joiner_master_pipes(crtc_state));
+}
+
+bool intel_crtc_is_bigjoiner_master(const struct intel_crtc_state *crtc_state)
+{
+ return !intel_crtc_is_bigjoiner_slave(crtc_state);
+}
+
+bool intel_crtc_is_joiner_slave(const struct intel_crtc_state *crtc_state)
+{
+ struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+
+ if (intel_is_ultrajoiner(crtc_state))
+ return crtc_state->joiner_pipes &&
+ !(BIT(crtc->pipe) & joiner_primary_master_pipes(crtc_state));
+ return intel_crtc_is_bigjoiner_slave(crtc_state);
}
bool intel_crtc_is_joiner_master(const struct intel_crtc_state *crtc_state)
{
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+ if (intel_is_ultrajoiner(crtc_state))
+ return crtc_state->joiner_pipes &&
+ (BIT(crtc->pipe) & joiner_primary_master_pipes(crtc_state));
+ return intel_crtc_is_bigjoiner_master(crtc_state);
+}
+
+bool intel_crtc_is_joiner_primary_master(const struct intel_crtc_state *crtc_state)
+{
+ struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+
return crtc_state->joiner_pipes &&
- crtc->pipe == joiner_master_pipe(crtc_state);
+ (BIT(crtc->pipe) & joiner_primary_master_pipes(crtc_state));
}
static int intel_joiner_num_pipes(const struct intel_crtc_state *crtc_state)
@@ -283,12 +315,26 @@ u8 intel_crtc_joined_pipe_mask(const struct intel_crtc_state *crtc_state)
return BIT(crtc->pipe) | crtc_state->joiner_pipes;
}
+enum pipe intel_crtc_master_pipe(const struct intel_crtc_state *crtc_state)
+{
+ struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+
+ if (intel_is_ultrajoiner(crtc_state)) {
+ return ffs(joiner_primary_master_pipes(crtc_state)) - 1;
+ } else if (intel_is_bigjoiner(crtc_state)) {
+ return intel_crtc_is_joiner_slave(crtc_state) ?
+ crtc->pipe - 1 : crtc->pipe;
+ } else {
+ return crtc->pipe;
+ }
+}
+
struct intel_crtc *intel_master_crtc(const struct intel_crtc_state *crtc_state)
{
struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
if (intel_crtc_is_joiner_slave(crtc_state))
- return intel_crtc_for_pipe(i915, joiner_master_pipe(crtc_state));
+ return intel_crtc_for_pipe(i915, intel_crtc_master_pipe(crtc_state));
else
return to_intel_crtc(crtc_state->uapi.crtc);
}
@@ -2857,7 +2903,7 @@ static void intel_joiner_adjust_pipe_src(struct intel_crtc_state *crtc_state)
if (num_pipes < 2)
return;
- master_pipe = joiner_master_pipe(crtc_state);
+ master_pipe = intel_crtc_master_pipe(crtc_state);
width = drm_rect_width(&crtc_state->pipe_src);
drm_rect_translate_to(&crtc_state->pipe_src,
@@ -5898,7 +5944,7 @@ static int intel_atomic_check_joiner(struct intel_atomic_state *state,
/* sanity check */
if (drm_WARN_ON(&i915->drm,
- master_crtc->pipe != joiner_master_pipe(master_crtc_state)))
+ master_crtc->pipe != intel_crtc_master_pipe(master_crtc_state)))
return -EINVAL;
if (master_crtc_state->joiner_pipes & ~joiner_pipes(i915)) {
--
2.37.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 3/5] drm/i915: Implement hw state readout for ultrajoiner
2024-05-20 7:38 [PATCH 0/5] Ultrajoiner basic functionality series Stanislav Lisovskiy
2024-05-20 7:38 ` [PATCH 1/5] drm/i915: Rename all bigjoiner to joiner Stanislav Lisovskiy
2024-05-20 7:38 ` [PATCH 2/5] drm/i915: Implement basic functions for ultrajoiner support Stanislav Lisovskiy
@ 2024-05-20 7:38 ` Stanislav Lisovskiy
2024-05-20 7:38 ` [PATCH 4/5] drm/i915: Compute config and mode valid changes " Stanislav Lisovskiy
` (4 subsequent siblings)
7 siblings, 0 replies; 17+ messages in thread
From: Stanislav Lisovskiy @ 2024-05-20 7:38 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.saarinen, ville.syrjala
Ultrajoiner mode has some new bits and states to be
read out from the hw. Lets make changes accordingly.
SIgned-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 56 +++++++++++++++----
.../gpu/drm/i915/display/intel_vdsc_regs.h | 2 +
2 files changed, 46 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index c390b79a43d6..0dc5349712f6 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -3537,12 +3537,14 @@ static bool transcoder_ddi_func_is_enabled(struct drm_i915_private *dev_priv,
}
static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
- u8 *master_pipes, u8 *slave_pipes)
+ u8 *master_pipes, u8 *slave_pipes,
+ bool *ultrajoiner_used)
{
struct intel_crtc *crtc;
*master_pipes = 0;
*slave_pipes = 0;
+ *ultrajoiner_used = false;
for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, crtc,
joiner_pipes(dev_priv)) {
@@ -3557,6 +3559,20 @@ static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
if (!(tmp & BIG_JOINER_ENABLE))
continue;
+ if (tmp & ULTRA_JOINER_ENABLE)
+ *ultrajoiner_used = true;
+
+ /*
+ * As of now we always assume primary master to be PIPE A.
+ * Otherwise we need a new field in crtc_state to track
+ * primary master as well.
+ */
+ drm_WARN(&dev_priv->drm,
+ (tmp & MASTER_ULTRA_JOINER_ENABLE) && crtc->pipe != PIPE_A,
+ "Ultrajoiner primary master isn't PIPE A(pipe %c)",
+ pipe_name(crtc->pipe));
+
+
if (tmp & MASTER_BIG_JOINER_ENABLE)
*master_pipes |= BIT(pipe);
else
@@ -3583,7 +3599,8 @@ static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
*master_pipes, *slave_pipes);
}
-static enum pipe get_joiner_master_pipe(enum pipe pipe, u8 master_pipes, u8 slave_pipes)
+static enum pipe get_joiner_master_pipe(enum pipe pipe, u8 master_pipes,
+ u8 slave_pipes, bool ultrajoiner_used)
{
if ((slave_pipes & BIT(pipe)) == 0)
return pipe;
@@ -3591,15 +3608,22 @@ static enum pipe get_joiner_master_pipe(enum pipe pipe, u8 master_pipes, u8 slav
/* ignore everything above our pipe */
master_pipes &= ~GENMASK(7, pipe);
- /* highest remaining bit should be our master pipe */
- return fls(master_pipes) - 1;
+ if (!ultrajoiner_used) {
+ /* highest remaining bit should be our master pipe */
+ return fls(master_pipes) - 1;
+ } else {
+ /* lowest remaining bit should be our primary master pipe */
+ return ffs(master_pipes) - 1;
+ }
}
-static u8 get_joiner_slave_pipes(enum pipe pipe, u8 master_pipes, u8 slave_pipes)
+static u8 get_joiner_slave_pipes(enum pipe pipe, u8 master_pipes,
+ u8 slave_pipes, bool ultrajoiner_used)
{
enum pipe master_pipe, next_master_pipe;
- master_pipe = get_joiner_master_pipe(pipe, master_pipes, slave_pipes);
+ master_pipe = get_joiner_master_pipe(pipe, master_pipes,
+ slave_pipes, ultrajoiner_used);
if ((master_pipes & BIT(master_pipe)) == 0)
return 0;
@@ -3611,7 +3635,10 @@ static u8 get_joiner_slave_pipes(enum pipe pipe, u8 master_pipes, u8 slave_pipes
/* lowest remaining bit should be the next master pipe */
next_master_pipe = ffs(master_pipes) - 1;
- return slave_pipes & GENMASK(next_master_pipe - 1, master_pipe);
+ if (!ultrajoiner_used)
+ return slave_pipes & GENMASK(next_master_pipe - 1, master_pipe);
+ else
+ return (slave_pipes | master_pipes) & ~BIT(master_pipe);
}
static u8 hsw_panel_transcoders(struct drm_i915_private *i915)
@@ -3632,6 +3659,7 @@ static u8 hsw_enabled_transcoders(struct intel_crtc *crtc)
enum transcoder cpu_transcoder;
u8 master_pipes, slave_pipes;
u8 enabled_transcoders = 0;
+ bool ultrajoiner_used;
/*
* XXX: Do intel_display_power_get_if_enabled before reading this (for
@@ -3682,10 +3710,11 @@ static u8 hsw_enabled_transcoders(struct intel_crtc *crtc)
enabled_transcoders |= BIT(cpu_transcoder);
/* joiner slave -> consider the master pipe's transcoder as well */
- enabled_joiner_pipes(dev_priv, &master_pipes, &slave_pipes);
+ enabled_joiner_pipes(dev_priv, &master_pipes, &slave_pipes, &ultrajoiner_used);
if (slave_pipes & BIT(crtc->pipe)) {
cpu_transcoder = (enum transcoder)
- get_joiner_master_pipe(crtc->pipe, master_pipes, slave_pipes);
+ get_joiner_master_pipe(crtc->pipe, master_pipes,
+ slave_pipes, ultrajoiner_used);
if (transcoder_ddi_func_is_enabled(dev_priv, cpu_transcoder))
enabled_transcoders |= BIT(cpu_transcoder);
}
@@ -3816,15 +3845,18 @@ static void intel_joiner_get_config(struct intel_crtc_state *crtc_state)
struct drm_i915_private *i915 = to_i915(crtc->base.dev);
u8 master_pipes, slave_pipes;
enum pipe pipe = crtc->pipe;
+ bool ultrajoiner_used;
- enabled_joiner_pipes(i915, &master_pipes, &slave_pipes);
+ enabled_joiner_pipes(i915, &master_pipes, &slave_pipes, &ultrajoiner_used);
if (((master_pipes | slave_pipes) & BIT(pipe)) == 0)
return;
crtc_state->joiner_pipes =
- BIT(get_joiner_master_pipe(pipe, master_pipes, slave_pipes)) |
- get_joiner_slave_pipes(pipe, master_pipes, slave_pipes);
+ BIT(get_joiner_master_pipe(pipe, master_pipes,
+ slave_pipes, ultrajoiner_used)) |
+ get_joiner_slave_pipes(pipe, master_pipes,
+ slave_pipes, ultrajoiner_used);
}
static bool hsw_get_pipe_config(struct intel_crtc *crtc,
diff --git a/drivers/gpu/drm/i915/display/intel_vdsc_regs.h b/drivers/gpu/drm/i915/display/intel_vdsc_regs.h
index 8b21dc8e26d5..b3d91c0a17a6 100644
--- a/drivers/gpu/drm/i915/display/intel_vdsc_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_vdsc_regs.h
@@ -37,6 +37,8 @@
#define SPLITTER_CONFIGURATION_MASK REG_GENMASK(26, 25)
#define SPLITTER_CONFIGURATION_2_SEGMENT REG_FIELD_PREP(SPLITTER_CONFIGURATION_MASK, 0)
#define SPLITTER_CONFIGURATION_4_SEGMENT REG_FIELD_PREP(SPLITTER_CONFIGURATION_MASK, 1)
+#define ULTRA_JOINER_ENABLE (1 << 23)
+#define MASTER_ULTRA_JOINER_ENABLE (1 << 22)
#define UNCOMPRESSED_JOINER_MASTER (1 << 21)
#define UNCOMPRESSED_JOINER_SLAVE (1 << 20)
--
2.37.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 4/5] drm/i915: Compute config and mode valid changes for ultrajoiner
2024-05-20 7:38 [PATCH 0/5] Ultrajoiner basic functionality series Stanislav Lisovskiy
` (2 preceding siblings ...)
2024-05-20 7:38 ` [PATCH 3/5] drm/i915: Implement hw state readout for ultrajoiner Stanislav Lisovskiy
@ 2024-05-20 7:38 ` Stanislav Lisovskiy
2024-05-21 4:28 ` kernel test robot
2024-05-20 7:38 ` [PATCH 5/5] drm/i915: Add new abstraction layer to handle pipe order for different joiners Stanislav Lisovskiy
` (3 subsequent siblings)
7 siblings, 1 reply; 17+ messages in thread
From: Stanislav Lisovskiy @ 2024-05-20 7:38 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.saarinen, ville.syrjala
Implement required changes for mode validation and compute config,
to support Ultrajoiner.
This also includes required DSC changes and checks.
Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 5 +-
drivers/gpu/drm/i915/display/intel_display.h | 3 +-
drivers/gpu/drm/i915/display/intel_dp.c | 109 ++++++++++++++-----
drivers/gpu/drm/i915/display/intel_dp.h | 16 ++-
drivers/gpu/drm/i915/display/intel_dp_mst.c | 31 ++++--
drivers/gpu/drm/i915/display/intel_dsi.c | 2 +-
drivers/gpu/drm/i915/display/intel_hdmi.c | 14 ++-
drivers/gpu/drm/i915/display/intel_vdsc.c | 27 ++++-
8 files changed, 158 insertions(+), 49 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 0dc5349712f6..6510476ac98c 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -8051,7 +8051,8 @@ enum drm_mode_status intel_cpu_transcoder_mode_valid(struct drm_i915_private *de
enum drm_mode_status
intel_mode_valid_max_plane_size(struct drm_i915_private *dev_priv,
const struct drm_display_mode *mode,
- bool joiner)
+ bool bigjoiner,
+ bool ultrajoiner)
{
int plane_width_max, plane_height_max;
@@ -8068,7 +8069,7 @@ intel_mode_valid_max_plane_size(struct drm_i915_private *dev_priv,
* too big for that.
*/
if (DISPLAY_VER(dev_priv) >= 11) {
- plane_width_max = 5120 << joiner;
+ plane_width_max = (5120 << bigjoiner) << ultrajoiner;
plane_height_max = 4320;
} else {
plane_width_max = 5120;
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index a2ec5309113e..aafb2eac5e03 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -415,7 +415,8 @@ u32 intel_plane_fb_max_stride(struct drm_i915_private *dev_priv,
enum drm_mode_status
intel_mode_valid_max_plane_size(struct drm_i915_private *dev_priv,
const struct drm_display_mode *mode,
- bool joiner);
+ bool bigjoiner,
+ bool ultrajoiner);
enum drm_mode_status
intel_cpu_transcoder_mode_valid(struct drm_i915_private *i915,
const struct drm_display_mode *mode);
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index d6893a1cf5cc..858db0ac9907 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -805,33 +805,41 @@ u32 intel_dp_dsc_nearest_valid_bpp(struct drm_i915_private *i915, u32 bpp, u32 p
static
u32 get_max_compressed_bpp_with_joiner(struct drm_i915_private *i915,
u32 mode_clock, u32 mode_hdisplay,
- bool joiner)
+ bool bigjoiner, bool ultrajoiner)
{
u32 max_bpp_small_joiner_ram;
+ u32 max_bpp_joiner;
/* Small Joiner Check: output bpp <= joiner RAM (bits) / Horiz. width */
- max_bpp_small_joiner_ram = small_joiner_ram_size_bits(i915) / mode_hdisplay;
+ max_bpp_joiner = max_bpp_small_joiner_ram =
+ small_joiner_ram_size_bits(i915) / mode_hdisplay;
- if (joiner) {
+ /* if ultra joiner is enabled, we have 2 bigjoiners enabled */
+ if (bigjoiner || ultrajoiner) {
int joiner_interface_bits = DISPLAY_VER(i915) >= 14 ? 36 : 24;
/* With joiner multiple dsc engines are used in parallel so PPC is 2 */
int ppc = 2;
- u32 max_bpp_joiner =
+ max_bpp_joiner =
i915->display.cdclk.max_cdclk_freq * ppc * joiner_interface_bits /
intel_dp_mode_to_fec_clock(mode_clock);
max_bpp_small_joiner_ram *= 2;
+ }
- return min(max_bpp_small_joiner_ram, max_bpp_joiner);
+ if (ultrajoiner) {
+ /* both get multiplied by 2, because ram bits/ppc now doubled */
+ max_bpp_small_joiner_ram *= 2;
+ max_bpp_joiner *= 2;
}
- return max_bpp_small_joiner_ram;
+ return min(max_bpp_small_joiner_ram, max_bpp_joiner);
}
u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
u32 link_clock, u32 lane_count,
u32 mode_clock, u32 mode_hdisplay,
- bool joiner,
+ bool bigjoiner,
+ bool ultrajoiner,
enum intel_output_format output_format,
u32 pipe_bpp,
u32 timeslots)
@@ -877,7 +885,7 @@ u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
intel_dp_mode_to_fec_clock(mode_clock));
joiner_max_bpp = get_max_compressed_bpp_with_joiner(i915, mode_clock,
- mode_hdisplay, joiner);
+ mode_hdisplay, bigjoiner, ultrajoiner);
bits_per_pixel = min(bits_per_pixel, joiner_max_bpp);
bits_per_pixel = intel_dp_dsc_nearest_valid_bpp(i915, bits_per_pixel, pipe_bpp);
@@ -887,7 +895,8 @@ u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
int mode_clock, int mode_hdisplay,
- bool joiner)
+ bool bigjoiner,
+ bool ultrajoiner)
{
struct drm_i915_private *i915 = to_i915(connector->base.dev);
u8 min_slice_count, i;
@@ -921,14 +930,18 @@ u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
/* Find the closest match to the valid slice count values */
for (i = 0; i < ARRAY_SIZE(valid_dsc_slicecount); i++) {
- u8 test_slice_count = valid_dsc_slicecount[i] << joiner;
+ u8 test_slice_count = (valid_dsc_slicecount[i] << bigjoiner) << ultrajoiner;
if (test_slice_count >
drm_dp_dsc_sink_max_slice_count(connector->dp.dsc_dpcd, false))
break;
/* big joiner needs small joiner to be enabled */
- if (joiner && test_slice_count < 4)
+ if (bigjoiner && test_slice_count < 4)
+ continue;
+
+ /* big joiner needs small joiner to be enabled */
+ if (ultrajoiner && test_slice_count < 8)
continue;
if (min_slice_count <= test_slice_count)
@@ -1207,7 +1220,7 @@ intel_dp_mode_valid_downstream(struct intel_connector *connector,
return MODE_OK;
}
-bool intel_dp_need_joiner(struct intel_dp *intel_dp,
+bool intel_dp_need_bigjoiner(struct intel_dp *intel_dp,
struct intel_connector *connector,
int hdisplay, int clock)
{
@@ -1220,6 +1233,35 @@ bool intel_dp_need_joiner(struct intel_dp *intel_dp,
connector->force_joiner_enable;
}
+static
+bool intel_can_ultrajoiner(const struct intel_encoder *encoder)
+{
+ struct drm_i915_private *i915 = to_i915(encoder->base.dev);
+
+ return IS_DGFX(i915) && DISPLAY_VER(i915) >= 14;
+}
+
+bool intel_dp_need_ultrajoiner(struct intel_dp *dp, int clock)
+{
+ const struct intel_encoder *encoder = &dp_to_dig_port(dp)->base;
+ struct drm_i915_private *i915 = to_i915(encoder->base.dev);
+
+ if (!intel_can_ultrajoiner(encoder))
+ return false;
+
+ return clock > (i915->display.cdclk.max_dotclk_freq * 2);
+}
+
+bool intel_is_bigjoiner(const struct intel_crtc_state *pipe_config)
+{
+ return hweight8(pipe_config->joiner_pipes) == 2;
+}
+
+bool intel_is_ultrajoiner(const struct intel_crtc_state *pipe_config)
+{
+ return hweight8(pipe_config->joiner_pipes) == 4;
+}
+
static enum drm_mode_status
intel_dp_mode_valid(struct drm_connector *_connector,
struct drm_display_mode *mode)
@@ -1234,7 +1276,7 @@ intel_dp_mode_valid(struct drm_connector *_connector,
u16 dsc_max_compressed_bpp = 0;
u8 dsc_slice_count = 0;
enum drm_mode_status status;
- bool dsc = false, joiner = false;
+ bool dsc = false, bigjoiner = false, ultrajoiner = false;
status = intel_cpu_transcoder_mode_valid(dev_priv, mode);
if (status != MODE_OK)
@@ -1255,11 +1297,16 @@ intel_dp_mode_valid(struct drm_connector *_connector,
target_clock = fixed_mode->clock;
}
- if (intel_dp_need_joiner(intel_dp, connector,
+ if (intel_dp_need_ultrajoiner(intel_dp, target_clock)) {
+ ultrajoiner = true;
+ max_dotclk *= 4;
+ }
+ else if (intel_dp_need_bigjoiner(intel_dp, connector,
mode->hdisplay, target_clock)) {
- joiner = true;
+ bigjoiner = true;
max_dotclk *= 2;
}
+
if (target_clock > max_dotclk)
return MODE_CLOCK_HIGH;
@@ -1304,20 +1351,22 @@ intel_dp_mode_valid(struct drm_connector *_connector,
max_lanes,
target_clock,
mode->hdisplay,
- joiner,
+ bigjoiner,
+ ultrajoiner,
output_format,
pipe_bpp, 64);
dsc_slice_count =
intel_dp_dsc_get_slice_count(connector,
target_clock,
mode->hdisplay,
- joiner);
+ bigjoiner,
+ ultrajoiner);
}
dsc = dsc_max_compressed_bpp && dsc_slice_count;
}
- if (intel_dp_joiner_needs_dsc(dev_priv, joiner) && !dsc)
+ if (intel_dp_joiner_needs_dsc(dev_priv, bigjoiner, ultrajoiner) && !dsc)
return MODE_CLOCK_HIGH;
if (mode_rate > max_rate && !dsc)
@@ -1327,7 +1376,7 @@ intel_dp_mode_valid(struct drm_connector *_connector,
if (status != MODE_OK)
return status;
- return intel_mode_valid_max_plane_size(dev_priv, mode, joiner);
+ return intel_mode_valid_max_plane_size(dev_priv, mode, bigjoiner, ultrajoiner);
}
bool intel_dp_source_supports_tps3(struct drm_i915_private *i915)
@@ -2018,7 +2067,8 @@ static int dsc_compute_compressed_bpp(struct intel_dp *intel_dp,
dsc_joiner_max_bpp = get_max_compressed_bpp_with_joiner(i915, adjusted_mode->clock,
adjusted_mode->hdisplay,
- pipe_config->joiner_pipes);
+ intel_is_bigjoiner(pipe_config),
+ intel_is_ultrajoiner(pipe_config));
dsc_max_bpp = min(dsc_max_bpp, dsc_joiner_max_bpp);
dsc_max_bpp = min(dsc_max_bpp, to_bpp_int(limits->link.max_bpp_x16));
@@ -2252,7 +2302,8 @@ int intel_dp_dsc_compute_config(struct intel_dp *intel_dp,
intel_dp_dsc_get_slice_count(connector,
adjusted_mode->crtc_clock,
adjusted_mode->crtc_hdisplay,
- pipe_config->joiner_pipes);
+ intel_is_bigjoiner(pipe_config),
+ intel_is_ultrajoiner(pipe_config));
if (!dsc_dp_slice_count) {
drm_dbg_kms(&dev_priv->drm,
"Compressed Slice Count not supported\n");
@@ -2401,14 +2452,15 @@ int intel_dp_config_required_rate(const struct intel_crtc_state *crtc_state)
return intel_dp_link_required(adjusted_mode->crtc_clock, bpp);
}
-bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, bool use_joiner)
+bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, bool bigjoiner, bool ultrajoiner)
{
/*
* Pipe joiner needs compression up to display 12 due to bandwidth
* limitation. DG2 onwards pipe joiner can be enabled without
* compression.
+ * Ultrajoiner always needs compression.
*/
- return DISPLAY_VER(i915) < 13 && use_joiner;
+ return (DISPLAY_VER(i915) < 13 && bigjoiner) || ultrajoiner;
}
static int
@@ -2426,18 +2478,21 @@ intel_dp_compute_link_config(struct intel_encoder *encoder,
struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
struct link_config_limits limits;
bool dsc_needed, joiner_needs_dsc;
+ bool bigjoiner = false, ultrajoiner = false;
int ret = 0;
if (pipe_config->fec_enable &&
!intel_dp_supports_fec(intel_dp, connector, pipe_config))
return -EINVAL;
- if (intel_dp_need_joiner(intel_dp, connector,
- adjusted_mode->crtc_hdisplay,
- adjusted_mode->crtc_clock))
+ if (intel_dp_need_ultrajoiner(intel_dp, adjusted_mode->crtc_clock))
+ pipe_config->joiner_pipes = GENMASK(crtc->pipe + 3, crtc->pipe);
+ else if (intel_dp_need_bigjoiner(intel_dp, connector,
+ adjusted_mode->crtc_hdisplay,
+ adjusted_mode->crtc_clock))
pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe);
- joiner_needs_dsc = intel_dp_joiner_needs_dsc(i915, pipe_config->joiner_pipes);
+ joiner_needs_dsc = intel_dp_joiner_needs_dsc(i915, bigjoiner, ultrajoiner);
dsc_needed = joiner_needs_dsc || intel_dp->force_dsc_en ||
!intel_dp_compute_config_limits(intel_dp, pipe_config,
diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h
index 4e4f88e69c55..d0939052146c 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.h
+++ b/drivers/gpu/drm/i915/display/intel_dp.h
@@ -120,7 +120,7 @@ int intel_dp_effective_data_rate(int pixel_clock, int bpp_x16,
int bw_overhead);
int intel_dp_max_link_data_rate(struct intel_dp *intel_dp,
int max_dprx_rate, int max_dprx_lanes);
-bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, bool use_joiner);
+bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, bool use_bigjoiner, bool use_ultrajoiner);
bool intel_dp_has_joiner(struct intel_dp *intel_dp);
bool intel_dp_needs_vsc_sdp(const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state);
@@ -139,7 +139,8 @@ int intel_dp_dsc_compute_max_bpp(const struct intel_connector *connector,
u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
u32 link_clock, u32 lane_count,
u32 mode_clock, u32 mode_hdisplay,
- bool joiner,
+ bool bigjoiner,
+ bool ultrajoiner,
enum intel_output_format output_format,
u32 pipe_bpp,
u32 timeslots);
@@ -149,10 +150,17 @@ int intel_dp_dsc_sink_max_compressed_bpp(const struct intel_connector *connector
int bpc);
u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
int mode_clock, int mode_hdisplay,
- bool joiner);
-bool intel_dp_need_joiner(struct intel_dp *intel_dp,
+ bool bigjoiner, bool ultrajoiner);
+bool intel_dp_need_bigjoiner(struct intel_dp *intel_dp,
struct intel_connector *connector,
int hdisplay, int clock);
+bool intel_dp_need_ultrajoiner(struct intel_dp *intel_dp, int clock);
+bool intel_is_bigjoiner(const struct intel_crtc_state *pipe_config);
+bool intel_is_ultrajoiner(const struct intel_crtc_state *pipe_config);
+bool intel_crtc_is_bigjoiner_slave(const struct intel_crtc_state *crtc_state);
+bool intel_crtc_is_bigjoiner_master(const struct intel_crtc_state *crtc_state);
+bool intel_crtc_is_joiner_primary_master(const struct intel_crtc_state *crtc_state);
+enum pipe intel_crtc_master_pipe(const struct intel_crtc_state *crtc_state);
static inline unsigned int intel_dp_unused_lane_mask(int lane_count)
{
diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index b2c6f7ec578f..2ac0835c1e8d 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -105,7 +105,8 @@ static int intel_dp_mst_bw_overhead(const struct intel_crtc_state *crtc_state,
dsc_slice_count = intel_dp_dsc_get_slice_count(connector,
adjusted_mode->clock,
adjusted_mode->hdisplay,
- crtc_state->joiner_pipes);
+ intel_is_bigjoiner(crtc_state),
+ intel_is_ultrajoiner(crtc_state));
}
overhead = drm_dp_bw_overhead(crtc_state->lane_count,
@@ -567,7 +568,9 @@ static int intel_dp_mst_compute_config(struct intel_encoder *encoder,
if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN)
return -EINVAL;
- if (intel_dp_need_joiner(intel_dp, connector,
+ if (intel_dp_need_ultrajoiner(intel_dp, adjusted_mode->crtc_clock))
+ pipe_config->joiner_pipes = GENMASK(crtc->pipe + 3, crtc->pipe);
+ else if (intel_dp_need_bigjoiner(intel_dp, connector,
adjusted_mode->crtc_hdisplay,
adjusted_mode->crtc_clock))
pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe);
@@ -576,7 +579,8 @@ static int intel_dp_mst_compute_config(struct intel_encoder *encoder,
pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB;
pipe_config->has_pch_encoder = false;
- joiner_needs_dsc = intel_dp_joiner_needs_dsc(dev_priv, pipe_config->joiner_pipes);
+ joiner_needs_dsc = intel_dp_joiner_needs_dsc(dev_priv, intel_is_bigjoiner(pipe_config),
+ intel_is_ultrajoiner(pipe_config));
dsc_needed = joiner_needs_dsc || intel_dp->force_dsc_en ||
!intel_dp_mst_compute_config_limits(intel_dp,
@@ -1375,7 +1379,7 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
int max_dotclk = to_i915(connector->dev)->display.cdclk.max_dotclk_freq;
int max_rate, mode_rate, max_lanes, max_link_clock;
int ret;
- bool dsc = false, joiner = false;
+ bool dsc = false, bigjoiner = false, ultrajoiner = false;
u16 dsc_max_compressed_bpp = 0;
u8 dsc_slice_count = 0;
int target_clock = mode->clock;
@@ -1418,9 +1422,12 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
* corresponding link capabilities of the sink) in case the
* stream is uncompressed for it by the last branch device.
*/
- if (intel_dp_need_joiner(intel_dp, intel_connector,
- mode->hdisplay, target_clock)) {
- joiner = true;
+ if (intel_dp_need_ultrajoiner(intel_dp, target_clock)) {
+ ultrajoiner = true;
+ max_dotclk *= 4;
+ } else if (intel_dp_need_bigjoiner(intel_dp, intel_connector,
+ mode->hdisplay, target_clock)) {
+ bigjoiner = true;
max_dotclk *= 2;
}
@@ -1449,20 +1456,22 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
max_lanes,
target_clock,
mode->hdisplay,
- joiner,
+ bigjoiner,
+ ultrajoiner,
INTEL_OUTPUT_FORMAT_RGB,
pipe_bpp, 64);
dsc_slice_count =
intel_dp_dsc_get_slice_count(intel_connector,
target_clock,
mode->hdisplay,
- joiner);
+ bigjoiner,
+ ultrajoiner);
}
dsc = dsc_max_compressed_bpp && dsc_slice_count;
}
- if (intel_dp_joiner_needs_dsc(dev_priv, joiner) && !dsc) {
+ if (intel_dp_joiner_needs_dsc(dev_priv, bigjoiner, ultrajoiner) && !dsc) {
*status = MODE_CLOCK_HIGH;
return 0;
}
@@ -1472,7 +1481,7 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
return 0;
}
- *status = intel_mode_valid_max_plane_size(dev_priv, mode, joiner);
+ *status = intel_mode_valid_max_plane_size(dev_priv, mode, bigjoiner, ultrajoiner);
return 0;
}
diff --git a/drivers/gpu/drm/i915/display/intel_dsi.c b/drivers/gpu/drm/i915/display/intel_dsi.c
index bd5888ce4852..1a7e9a56fccd 100644
--- a/drivers/gpu/drm/i915/display/intel_dsi.c
+++ b/drivers/gpu/drm/i915/display/intel_dsi.c
@@ -76,7 +76,7 @@ enum drm_mode_status intel_dsi_mode_valid(struct drm_connector *connector,
if (fixed_mode->clock > max_dotclk)
return MODE_CLOCK_HIGH;
- return intel_mode_valid_max_plane_size(dev_priv, mode, false);
+ return intel_mode_valid_max_plane_size(dev_priv, mode, false, false);
}
struct intel_dsi_host *intel_dsi_host_init(struct intel_dsi *intel_dsi,
diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
index 5f6deceaf8ba..ecb8fb128cbd 100644
--- a/drivers/gpu/drm/i915/display/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
@@ -2043,7 +2043,7 @@ intel_hdmi_mode_valid(struct drm_connector *connector,
return status;
}
- return intel_mode_valid_max_plane_size(dev_priv, mode, false);
+ return intel_mode_valid_max_plane_size(dev_priv, mode, false, false);
}
bool intel_hdmi_bpc_possible(const struct intel_crtc_state *crtc_state,
@@ -2336,6 +2336,18 @@ int intel_hdmi_compute_config(struct intel_encoder *encoder,
return ret;
}
+ if (adjusted_mode->crtc_clock > dev_priv->display.cdclk.max_dotclk_freq ||
+ pipe_config->joiner_pipes) {
+ if (pipe_config->dsc.slice_count < 2) {
+ drm_dbg_kms(&dev_priv->drm,
+ "Cannot split stream to use 2 VDSC instances\n");
+ return -EINVAL;
+ }
+
+ pipe_config->dsc.dsc_split = true;
+ }
+
+
if (intel_hdmi_is_ycbcr420(pipe_config)) {
ret = intel_panel_fitting(pipe_config, conn_state);
if (ret)
diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c b/drivers/gpu/drm/i915/display/intel_vdsc.c
index 47468af8e029..5f1186f075e9 100644
--- a/drivers/gpu/drm/i915/display/intel_vdsc.c
+++ b/drivers/gpu/drm/i915/display/intel_vdsc.c
@@ -14,6 +14,7 @@
#include "intel_crtc.h"
#include "intel_de.h"
#include "intel_display_types.h"
+#include "intel_dp.h"
#include "intel_dsi.h"
#include "intel_qp_tables.h"
#include "intel_vdsc.h"
@@ -380,7 +381,9 @@ int intel_dsc_get_num_vdsc_instances(const struct intel_crtc_state *crtc_state)
{
int num_vdsc_instances = intel_dsc_get_vdsc_per_pipe(crtc_state);
- if (crtc_state->joiner_pipes)
+ if (intel_is_ultrajoiner(crtc_state))
+ num_vdsc_instances *= 4;
+ else if (intel_is_bigjoiner(crtc_state))
num_vdsc_instances *= 2;
return num_vdsc_instances;
@@ -771,6 +774,13 @@ void intel_uncompressed_joiner_enable(const struct intel_crtc_state *crtc_state)
}
}
+static bool intel_crtc_ultrajoiner_enable_needed(const struct intel_crtc_state *crtc_state)
+{
+ struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+
+ return intel_is_ultrajoiner(crtc_state) && crtc->pipe != PIPE_D;
+}
+
void intel_dsc_enable(const struct intel_crtc_state *crtc_state)
{
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
@@ -789,9 +799,22 @@ void intel_dsc_enable(const struct intel_crtc_state *crtc_state)
dss_ctl2_val |= RIGHT_BRANCH_VDSC_ENABLE;
dss_ctl1_val |= JOINER_ENABLE;
}
+
if (crtc_state->joiner_pipes) {
+ /*
+ * This bit doesn't seem to follow master/slave logic or
+ * any other logic, so lets just add helper function to
+ * at least hide this hassle..
+ */
+ if (intel_crtc_ultrajoiner_enable_needed(crtc_state))
+ dss_ctl1_val |= ULTRA_JOINER_ENABLE;
+
+ if (intel_crtc_is_joiner_primary_master(crtc_state))
+ dss_ctl1_val |= MASTER_ULTRA_JOINER_ENABLE;;
+
dss_ctl1_val |= BIG_JOINER_ENABLE;
- if (!intel_crtc_is_joiner_slave(crtc_state))
+
+ if (intel_crtc_is_bigjoiner_master(crtc_state))
dss_ctl1_val |= MASTER_BIG_JOINER_ENABLE;
}
intel_de_write(dev_priv, dss_ctl1_reg(crtc, crtc_state->cpu_transcoder), dss_ctl1_val);
--
2.37.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 5/5] drm/i915: Add new abstraction layer to handle pipe order for different joiners
2024-05-20 7:38 [PATCH 0/5] Ultrajoiner basic functionality series Stanislav Lisovskiy
` (3 preceding siblings ...)
2024-05-20 7:38 ` [PATCH 4/5] drm/i915: Compute config and mode valid changes " Stanislav Lisovskiy
@ 2024-05-20 7:38 ` Stanislav Lisovskiy
2024-05-20 10:29 ` ✗ Fi.CI.CHECKPATCH: warning for Ultrajoiner basic functionality series Patchwork
` (2 subsequent siblings)
7 siblings, 0 replies; 17+ messages in thread
From: Stanislav Lisovskiy @ 2024-05-20 7:38 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.saarinen, ville.syrjala
Ultrajoiner case requires special treatment where both reverse and staight order
iteration doesn't work(for instance disabling case requires order to be:
primary master, slaves, secondary master).
Lets unify our approach by using not only pipe masks for iterating required
pipes based on joiner type used, but also using different "priority" arrays
for each of those.
Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
---
drivers/gpu/drm/i915/display/intel_ddi.c | 19 ++---
drivers/gpu/drm/i915/display/intel_display.c | 73 +++++++++++++++-----
drivers/gpu/drm/i915/display/intel_display.h | 7 ++
drivers/gpu/drm/i915/display/intel_dp_mst.c | 19 ++---
4 files changed, 86 insertions(+), 32 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
index 81f644533504..6cd0c545b85f 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -3102,10 +3102,11 @@ static void intel_ddi_post_disable_hdmi_or_sst(struct intel_atomic_state *state,
const struct drm_connector_state *old_conn_state)
{
struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
- struct intel_crtc *pipe_crtc;
+ struct intel_crtc *pipe_crtc; enum pipe pipe;
- for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(old_crtc_state)) {
+ for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(old_crtc_state),
+ intel_get_pipe_order_disable(old_crtc_state)) {
const struct intel_crtc_state *old_pipe_crtc_state =
intel_atomic_get_old_crtc_state(state, pipe_crtc);
@@ -3116,8 +3117,9 @@ 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_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(old_crtc_state),
+ intel_get_pipe_order_disable(old_crtc_state)) {
const struct intel_crtc_state *old_pipe_crtc_state =
intel_atomic_get_old_crtc_state(state, pipe_crtc);
@@ -3369,7 +3371,7 @@ static void intel_enable_ddi(struct intel_atomic_state *state,
const struct drm_connector_state *conn_state)
{
struct drm_i915_private *i915 = to_i915(encoder->base.dev);
- struct intel_crtc *pipe_crtc;
+ struct intel_crtc *pipe_crtc; enum pipe pipe;
intel_ddi_enable_transcoder_func(encoder, crtc_state);
@@ -3380,8 +3382,9 @@ 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_intel_crtc_in_mask_priority(i915, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(crtc_state),
+ intel_get_pipe_order_enable(crtc_state)) {
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 6510476ac98c..7e62604c1e12 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -1696,6 +1696,40 @@ static void hsw_configure_cpu_transcoder(const struct intel_crtc_state *crtc_sta
hsw_set_transconf(crtc_state);
}
+
+
+const enum pipe *intel_get_pipe_order_enable(const struct intel_crtc_state *crtc_state)
+{
+ static const enum pipe ultrajoiner_pipe_order_enable[I915_MAX_PIPES] =
+ { PIPE_B, PIPE_D, PIPE_C, PIPE_A };
+ static const enum pipe bigjoiner_pipe_order_enable[I915_MAX_PIPES] =
+ { PIPE_B, PIPE_A, PIPE_D, PIPE_C };
+ static const enum pipe nojoiner_pipe_order_enable[I915_MAX_PIPES] =
+ { PIPE_A, PIPE_B, PIPE_C, PIPE_D };
+
+ if (intel_is_ultrajoiner(crtc_state))
+ return ultrajoiner_pipe_order_enable;
+ else if (intel_is_bigjoiner(crtc_state))
+ return bigjoiner_pipe_order_enable;
+ return nojoiner_pipe_order_enable;
+}
+
+const enum pipe *intel_get_pipe_order_disable(const struct intel_crtc_state *crtc_state)
+{
+ static const enum pipe ultrajoiner_pipe_order_disable[I915_MAX_PIPES] =
+ { PIPE_A, PIPE_B, PIPE_D, PIPE_C };
+ static const enum pipe bigjoiner_pipe_order_disable[I915_MAX_PIPES] =
+ { PIPE_A, PIPE_B, PIPE_C, PIPE_D };
+ static const enum pipe nojoiner_pipe_order_disable[I915_MAX_PIPES] =
+ { PIPE_A, PIPE_B, PIPE_C, PIPE_D };
+
+ if (intel_is_ultrajoiner(crtc_state))
+ return ultrajoiner_pipe_order_disable;
+ else if (intel_is_bigjoiner(crtc_state))
+ return bigjoiner_pipe_order_disable;
+ return nojoiner_pipe_order_disable;
+}
+
static void hsw_crtc_enable(struct intel_atomic_state *state,
struct intel_crtc *crtc)
{
@@ -1703,19 +1737,21 @@ static void hsw_crtc_enable(struct intel_atomic_state *state,
intel_atomic_get_new_crtc_state(state, crtc);
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;
+ struct intel_crtc *pipe_crtc; enum pipe pipe;
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_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(new_crtc_state),
+ intel_get_pipe_order_enable(new_crtc_state))
intel_dmc_enable_pipe(dev_priv, 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_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(new_crtc_state),
+ intel_get_pipe_order_enable(new_crtc_state)) {
const struct intel_crtc_state *pipe_crtc_state =
intel_atomic_get_new_crtc_state(state, pipe_crtc);
@@ -1725,8 +1761,9 @@ 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_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(new_crtc_state),
+ intel_get_pipe_order_enable(new_crtc_state)) {
const struct intel_crtc_state *pipe_crtc_state =
intel_atomic_get_new_crtc_state(state, pipe_crtc);
@@ -1744,8 +1781,9 @@ 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_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(new_crtc_state),
+ intel_get_pipe_order_enable(new_crtc_state)) {
const struct intel_crtc_state *pipe_crtc_state =
intel_atomic_get_new_crtc_state(state, pipe_crtc);
@@ -1780,8 +1818,9 @@ 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_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(new_crtc_state),
+ intel_get_pipe_order_enable(new_crtc_state)) {
const struct intel_crtc_state *pipe_crtc_state =
intel_atomic_get_new_crtc_state(state, pipe_crtc);
enum pipe hsw_workaround_pipe;
@@ -1866,7 +1905,7 @@ 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 drm_i915_private *i915 = to_i915(crtc->base.dev);
- struct intel_crtc *pipe_crtc;
+ struct intel_crtc *pipe_crtc; enum pipe pipe;
/*
* FIXME collapse everything to one hook.
@@ -1875,8 +1914,9 @@ 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_intel_crtc_in_mask_priority(i915, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(old_crtc_state),
+ intel_get_pipe_order_disable(old_crtc_state)) {
const struct intel_crtc_state *old_pipe_crtc_state =
intel_atomic_get_old_crtc_state(state, pipe_crtc);
@@ -1885,8 +1925,9 @@ 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_intel_crtc_in_mask_priority(i915, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(old_crtc_state),
+ intel_get_pipe_order_disable(old_crtc_state))
intel_dmc_disable_pipe(i915, pipe_crtc->pipe);
}
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index aafb2eac5e03..c44464ab3e1e 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -274,6 +274,11 @@ enum phy_fia {
&(dev)->mode_config.crtc_list, \
base.head)
+#define for_each_intel_crtc_in_mask_priority(__dev_priv, intel_crtc, __p, __mask, __priolist) \
+ for_each_pipe(__dev_priv, __p) \
+ for_each_if((__mask) & BIT(__priolist[__p])) \
+ for_each_if(intel_crtc = intel_crtc_for_pipe(__dev_priv, __priolist[__p]))
+
#define for_each_intel_crtc_in_pipe_mask(dev, intel_crtc, pipe_mask) \
list_for_each_entry(intel_crtc, \
&(dev)->mode_config.crtc_list, \
@@ -424,6 +429,8 @@ enum phy intel_port_to_phy(struct drm_i915_private *i915, enum port port);
bool is_trans_port_sync_mode(const struct intel_crtc_state *state);
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);
+const enum pipe *intel_get_pipe_order_enable(const struct intel_crtc_state *crtc_state);
+const enum pipe *intel_get_pipe_order_disable(const struct intel_crtc_state *crtc_state);
bool intel_crtc_is_joiner_slave(const struct intel_crtc_state *crtc_state);
bool intel_crtc_is_joiner_master(const struct intel_crtc_state *crtc_state);
u8 intel_crtc_joiner_slave_pipes(const struct intel_crtc_state *crtc_state);
diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index 2ac0835c1e8d..5a732b4bf19c 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -990,7 +990,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state,
struct drm_dp_mst_atomic_payload *new_payload =
drm_atomic_get_mst_payload_state(new_mst_state, connector->port);
struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
- struct intel_crtc *pipe_crtc;
+ struct intel_crtc *pipe_crtc; enum pipe pipe;
bool last_mst_stream;
intel_dp->active_mst_links--;
@@ -999,8 +999,9 @@ 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_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(old_crtc_state),
+ intel_get_pipe_order_disable(old_crtc_state)) {
const struct intel_crtc_state *old_pipe_crtc_state =
intel_atomic_get_old_crtc_state(state, pipe_crtc);
@@ -1023,8 +1024,9 @@ 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_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(old_crtc_state),
+ intel_get_pipe_order_disable(old_crtc_state)) {
const struct intel_crtc_state *old_pipe_crtc_state =
intel_atomic_get_old_crtc_state(state, pipe_crtc);
@@ -1213,7 +1215,7 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state,
drm_atomic_get_new_mst_topology_state(&state->base, &intel_dp->mst_mgr);
enum transcoder trans = pipe_config->cpu_transcoder;
bool first_mst_stream = intel_dp->active_mst_links == 1;
- struct intel_crtc *pipe_crtc;
+ struct intel_crtc *pipe_crtc; enum pipe pipe;
drm_WARN_ON(&dev_priv->drm, pipe_config->has_pch_encoder);
@@ -1257,8 +1259,9 @@ 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_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(pipe_config),
+ intel_get_pipe_order_enable(pipe_config)) {
const struct intel_crtc_state *pipe_crtc_state =
intel_atomic_get_new_crtc_state(state, pipe_crtc);
--
2.37.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 1/5] drm/i915: Rename all bigjoiner to joiner
2024-05-20 7:38 ` [PATCH 1/5] drm/i915: Rename all bigjoiner to joiner Stanislav Lisovskiy
@ 2024-05-20 10:20 ` Jani Nikula
0 siblings, 0 replies; 17+ messages in thread
From: Jani Nikula @ 2024-05-20 10:20 UTC (permalink / raw)
To: Stanislav Lisovskiy, intel-gfx; +Cc: jani.saarinen, ville.syrjala
On Mon, 20 May 2024, Stanislav Lisovskiy <stanislav.lisovskiy@intel.com> wrote:
> Lets unify both bigjoiner and ultrajoiner under simple "joiner" name,
> because in future we might have multiple configurations, involving
> multiple bigjoiners, ultrajoiner, however it is possible to use
> same api for handling both.
If you're doing a big rename, might as well do the master/slave ->
primary/secondary rename too.
BR,
Jani.
>
> Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> ---
> .../gpu/drm/i915/display/intel_atomic_plane.c | 4 +-
> drivers/gpu/drm/i915/display/intel_cdclk.c | 8 +-
> .../drm/i915/display/intel_crtc_state_dump.c | 8 +-
> drivers/gpu/drm/i915/display/intel_cursor.c | 4 +-
> drivers/gpu/drm/i915/display/intel_ddi.c | 4 +-
> drivers/gpu/drm/i915/display/intel_display.c | 204 +++++++++---------
> drivers/gpu/drm/i915/display/intel_display.h | 8 +-
> .../drm/i915/display/intel_display_debugfs.c | 10 +-
> .../drm/i915/display/intel_display_types.h | 4 +-
> drivers/gpu/drm/i915/display/intel_dp.c | 60 +++---
> drivers/gpu/drm/i915/display/intel_dp.h | 8 +-
> drivers/gpu/drm/i915/display/intel_dp_mst.c | 22 +-
> drivers/gpu/drm/i915/display/intel_drrs.c | 6 +-
> .../drm/i915/display/intel_modeset_setup.c | 38 ++--
> drivers/gpu/drm/i915/display/intel_psr.c | 6 +-
> drivers/gpu/drm/i915/display/intel_vdsc.c | 12 +-
> drivers/gpu/drm/i915/display/intel_vdsc.h | 2 +-
> drivers/gpu/drm/i915/display/intel_vrr.c | 2 +-
> .../drm/i915/display/skl_universal_plane.c | 4 +-
> 19 files changed, 207 insertions(+), 207 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> index 27224ecdc94c..7a0b2f3a672e 100644
> --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> @@ -335,7 +335,7 @@ void intel_plane_copy_uapi_to_hw_state(struct intel_plane_state *plane_state,
> intel_plane_clear_hw_state(plane_state);
>
> /*
> - * For the bigjoiner slave uapi.crtc will point at
> + * For the joiner slave uapi.crtc will point at
> * the master crtc. So we explicitly assign the right
> * slave crtc to hw.crtc. uapi.crtc!=NULL simply indicates
> * the plane is logically enabled on the uapi level.
> @@ -720,7 +720,7 @@ int intel_plane_atomic_check(struct intel_atomic_state *state,
> struct intel_crtc_state *new_crtc_state =
> intel_atomic_get_new_crtc_state(state, crtc);
>
> - if (new_crtc_state && intel_crtc_is_bigjoiner_slave(new_crtc_state)) {
> + if (new_crtc_state && intel_crtc_is_joiner_slave(new_crtc_state)) {
> struct intel_crtc *master_crtc =
> intel_master_crtc(new_crtc_state);
> struct intel_plane *master_plane =
> diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
> index b78154c82a71..36fb7ad1d871 100644
> --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
> +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
> @@ -2731,7 +2731,7 @@ static int intel_vdsc_min_cdclk(const struct intel_crtc_state *crtc_state)
> min_cdclk = max_t(int, min_cdclk,
> DIV_ROUND_UP(crtc_state->pixel_rate, num_vdsc_instances));
>
> - if (crtc_state->bigjoiner_pipes) {
> + if (crtc_state->joiner_pipes) {
> int pixel_clock = intel_dp_mode_to_fec_clock(crtc_state->hw.adjusted_mode.clock);
>
> /*
> @@ -2743,13 +2743,13 @@ static int intel_vdsc_min_cdclk(const struct intel_crtc_state *crtc_state)
> *
> * => CDCLK >= compressed_bpp * Pixel clock / (PPC * Bigjoiner Interface bits)
> *
> - * Since PPC = 2 with bigjoiner
> + * Since PPC = 2 with joiner
> * => CDCLK >= compressed_bpp * Pixel clock / 2 * Bigjoiner Interface bits
> */
> - int bigjoiner_interface_bits = DISPLAY_VER(i915) >= 14 ? 36 : 24;
> + int joiner_interface_bits = DISPLAY_VER(i915) >= 14 ? 36 : 24;
> int min_cdclk_bj =
> (to_bpp_int_roundup(crtc_state->dsc.compressed_bpp_x16) *
> - pixel_clock) / (2 * bigjoiner_interface_bits);
> + pixel_clock) / (2 * joiner_interface_bits);
>
> min_cdclk = max(min_cdclk, min_cdclk_bj);
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c b/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
> index ccaa4cb2809b..a999c37293bd 100644
> --- a/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
> +++ b/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
> @@ -222,10 +222,10 @@ void intel_crtc_state_dump(const struct intel_crtc_state *pipe_config,
> transcoder_name(pipe_config->master_transcoder),
> pipe_config->sync_mode_slaves_mask);
>
> - drm_printf(&p, "bigjoiner: %s, pipes: 0x%x\n",
> - intel_crtc_is_bigjoiner_slave(pipe_config) ? "slave" :
> - intel_crtc_is_bigjoiner_master(pipe_config) ? "master" : "no",
> - pipe_config->bigjoiner_pipes);
> + drm_printf(&p, "joiner: %s, pipes: 0x%x\n",
> + intel_crtc_is_joiner_slave(pipe_config) ? "slave" :
> + intel_crtc_is_joiner_master(pipe_config) ? "master" : "no",
> + pipe_config->joiner_pipes);
>
> drm_printf(&p, "splitter: %s, link count %d, overlap %d\n",
> str_enabled_disabled(pipe_config->splitter.enable),
> diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
> index 2118b87ccb10..218ad2dfc242 100644
> --- a/drivers/gpu/drm/i915/display/intel_cursor.c
> +++ b/drivers/gpu/drm/i915/display/intel_cursor.c
> @@ -703,12 +703,12 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
> * PSR2 plane and transcoder registers can only be updated during
> * vblank.
> *
> - * FIXME bigjoiner fastpath would be good
> + * FIXME joiner fastpath would be good
> */
> if (!crtc_state->hw.active ||
> intel_crtc_needs_modeset(crtc_state) ||
> intel_crtc_needs_fastset(crtc_state) ||
> - crtc_state->bigjoiner_pipes)
> + crtc_state->joiner_pipes)
> goto slow;
>
> /*
> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
> index 3c3fc53376ce..81f644533504 100644
> --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> @@ -4264,10 +4264,10 @@ static bool crtcs_port_sync_compatible(const struct intel_crtc_state *crtc_state
> {
> /*
> * FIXME the modeset sequence is currently wrong and
> - * can't deal with bigjoiner + port sync at the same time.
> + * can't deal with joiner + port sync at the same time.
> */
> return crtc_state1->hw.active && crtc_state2->hw.active &&
> - !crtc_state1->bigjoiner_pipes && !crtc_state2->bigjoiner_pipes &&
> + !crtc_state1->joiner_pipes && !crtc_state2->joiner_pipes &&
> crtc_state1->output_types == crtc_state2->output_types &&
> crtc_state1->output_format == crtc_state2->output_format &&
> crtc_state1->lane_count == crtc_state2->lane_count &&
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index ef986b508431..c74721188e59 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -242,53 +242,53 @@ is_trans_port_sync_mode(const struct intel_crtc_state *crtc_state)
> is_trans_port_sync_slave(crtc_state);
> }
>
> -static enum pipe bigjoiner_master_pipe(const struct intel_crtc_state *crtc_state)
> +static enum pipe joiner_master_pipe(const struct intel_crtc_state *crtc_state)
> {
> - return ffs(crtc_state->bigjoiner_pipes) - 1;
> + return ffs(crtc_state->joiner_pipes) - 1;
> }
>
> -u8 intel_crtc_bigjoiner_slave_pipes(const struct intel_crtc_state *crtc_state)
> +u8 intel_crtc_joiner_slave_pipes(const struct intel_crtc_state *crtc_state)
> {
> - if (crtc_state->bigjoiner_pipes)
> - return crtc_state->bigjoiner_pipes & ~BIT(bigjoiner_master_pipe(crtc_state));
> + if (crtc_state->joiner_pipes)
> + return crtc_state->joiner_pipes & ~BIT(joiner_master_pipe(crtc_state));
> else
> return 0;
> }
>
> -bool intel_crtc_is_bigjoiner_slave(const struct intel_crtc_state *crtc_state)
> +bool intel_crtc_is_joiner_slave(const struct intel_crtc_state *crtc_state)
> {
> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>
> - return crtc_state->bigjoiner_pipes &&
> - crtc->pipe != bigjoiner_master_pipe(crtc_state);
> + return crtc_state->joiner_pipes &&
> + crtc->pipe != joiner_master_pipe(crtc_state);
> }
>
> -bool intel_crtc_is_bigjoiner_master(const struct intel_crtc_state *crtc_state)
> +bool intel_crtc_is_joiner_master(const struct intel_crtc_state *crtc_state)
> {
> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>
> - return crtc_state->bigjoiner_pipes &&
> - crtc->pipe == bigjoiner_master_pipe(crtc_state);
> + return crtc_state->joiner_pipes &&
> + crtc->pipe == joiner_master_pipe(crtc_state);
> }
>
> -static int intel_bigjoiner_num_pipes(const struct intel_crtc_state *crtc_state)
> +static int intel_joiner_num_pipes(const struct intel_crtc_state *crtc_state)
> {
> - return hweight8(crtc_state->bigjoiner_pipes);
> + return hweight8(crtc_state->joiner_pipes);
> }
>
> u8 intel_crtc_joined_pipe_mask(const struct intel_crtc_state *crtc_state)
> {
> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>
> - return BIT(crtc->pipe) | crtc_state->bigjoiner_pipes;
> + return BIT(crtc->pipe) | crtc_state->joiner_pipes;
> }
>
> struct intel_crtc *intel_master_crtc(const struct intel_crtc_state *crtc_state)
> {
> struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
>
> - if (intel_crtc_is_bigjoiner_slave(crtc_state))
> - return intel_crtc_for_pipe(i915, bigjoiner_master_pipe(crtc_state));
> + if (intel_crtc_is_joiner_slave(crtc_state))
> + return intel_crtc_for_pipe(i915, joiner_master_pipe(crtc_state));
> else
> return to_intel_crtc(crtc_state->uapi.crtc);
> }
> @@ -2314,10 +2314,10 @@ static void intel_crtc_compute_pixel_rate(struct intel_crtc_state *crtc_state)
> ilk_pipe_pixel_rate(crtc_state);
> }
>
> -static void intel_bigjoiner_adjust_timings(const struct intel_crtc_state *crtc_state,
> +static void intel_joiner_adjust_timings(const struct intel_crtc_state *crtc_state,
> struct drm_display_mode *mode)
> {
> - int num_pipes = intel_bigjoiner_num_pipes(crtc_state);
> + int num_pipes = intel_joiner_num_pipes(crtc_state);
>
> if (num_pipes < 2)
> return;
> @@ -2381,11 +2381,11 @@ static void intel_crtc_readout_derived_state(struct intel_crtc_state *crtc_state
> drm_mode_copy(mode, pipe_mode);
> intel_mode_from_crtc_timings(mode, mode);
> mode->hdisplay = drm_rect_width(&crtc_state->pipe_src) *
> - (intel_bigjoiner_num_pipes(crtc_state) ?: 1);
> + (intel_joiner_num_pipes(crtc_state) ?: 1);
> mode->vdisplay = drm_rect_height(&crtc_state->pipe_src);
>
> - /* Derive per-pipe timings in case bigjoiner is used */
> - intel_bigjoiner_adjust_timings(crtc_state, pipe_mode);
> + /* Derive per-pipe timings in case joiner is used */
> + intel_joiner_adjust_timings(crtc_state, pipe_mode);
> intel_mode_from_crtc_timings(pipe_mode, pipe_mode);
>
> intel_crtc_compute_pixel_rate(crtc_state);
> @@ -2399,9 +2399,9 @@ void intel_encoder_get_config(struct intel_encoder *encoder,
> intel_crtc_readout_derived_state(crtc_state);
> }
>
> -static void intel_bigjoiner_compute_pipe_src(struct intel_crtc_state *crtc_state)
> +static void intel_joiner_compute_pipe_src(struct intel_crtc_state *crtc_state)
> {
> - int num_pipes = intel_bigjoiner_num_pipes(crtc_state);
> + int num_pipes = intel_joiner_num_pipes(crtc_state);
> int width, height;
>
> if (num_pipes < 2)
> @@ -2419,7 +2419,7 @@ static int intel_crtc_compute_pipe_src(struct intel_crtc_state *crtc_state)
> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> struct drm_i915_private *i915 = to_i915(crtc->base.dev);
>
> - intel_bigjoiner_compute_pipe_src(crtc_state);
> + intel_joiner_compute_pipe_src(crtc_state);
>
> /*
> * Pipe horizontal size must be even in:
> @@ -2464,8 +2464,8 @@ static int intel_crtc_compute_pipe_mode(struct intel_crtc_state *crtc_state)
> /* Expand MSO per-segment transcoder timings to full */
> intel_splitter_adjust_timings(crtc_state, pipe_mode);
>
> - /* Derive per-pipe timings in case bigjoiner is used */
> - intel_bigjoiner_adjust_timings(crtc_state, pipe_mode);
> + /* Derive per-pipe timings in case joiner is used */
> + intel_joiner_adjust_timings(crtc_state, pipe_mode);
> intel_mode_from_crtc_timings(pipe_mode, pipe_mode);
>
> if (DISPLAY_VER(i915) < 4) {
> @@ -2847,17 +2847,17 @@ static void intel_get_transcoder_timings(struct intel_crtc *crtc,
> intel_de_read(dev_priv, TRANS_SET_CONTEXT_LATENCY(cpu_transcoder));
> }
>
> -static void intel_bigjoiner_adjust_pipe_src(struct intel_crtc_state *crtc_state)
> +static void intel_joiner_adjust_pipe_src(struct intel_crtc_state *crtc_state)
> {
> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> - int num_pipes = intel_bigjoiner_num_pipes(crtc_state);
> + int num_pipes = intel_joiner_num_pipes(crtc_state);
> enum pipe master_pipe, pipe = crtc->pipe;
> int width;
>
> if (num_pipes < 2)
> return;
>
> - master_pipe = bigjoiner_master_pipe(crtc_state);
> + master_pipe = joiner_master_pipe(crtc_state);
> width = drm_rect_width(&crtc_state->pipe_src);
>
> drm_rect_translate_to(&crtc_state->pipe_src,
> @@ -2877,7 +2877,7 @@ static void intel_get_pipe_src_size(struct intel_crtc *crtc,
> REG_FIELD_GET(PIPESRC_WIDTH_MASK, tmp) + 1,
> REG_FIELD_GET(PIPESRC_HEIGHT_MASK, tmp) + 1);
>
> - intel_bigjoiner_adjust_pipe_src(pipe_config);
> + intel_joiner_adjust_pipe_src(pipe_config);
> }
>
> void i9xx_set_pipeconf(const struct intel_crtc_state *crtc_state)
> @@ -3461,7 +3461,7 @@ static bool ilk_get_pipe_config(struct intel_crtc *crtc,
> return ret;
> }
>
> -static u8 bigjoiner_pipes(struct drm_i915_private *i915)
> +static u8 joiner_pipes(struct drm_i915_private *i915)
> {
> u8 pipes;
>
> @@ -3490,7 +3490,7 @@ static bool transcoder_ddi_func_is_enabled(struct drm_i915_private *dev_priv,
> return tmp & TRANS_DDI_FUNC_ENABLE;
> }
>
> -static void enabled_bigjoiner_pipes(struct drm_i915_private *dev_priv,
> +static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
> u8 *master_pipes, u8 *slave_pipes)
> {
> struct intel_crtc *crtc;
> @@ -3499,7 +3499,7 @@ static void enabled_bigjoiner_pipes(struct drm_i915_private *dev_priv,
> *slave_pipes = 0;
>
> for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, crtc,
> - bigjoiner_pipes(dev_priv)) {
> + joiner_pipes(dev_priv)) {
> enum intel_display_power_domain power_domain;
> enum pipe pipe = crtc->pipe;
> intel_wakeref_t wakeref;
> @@ -3537,7 +3537,7 @@ static void enabled_bigjoiner_pipes(struct drm_i915_private *dev_priv,
> *master_pipes, *slave_pipes);
> }
>
> -static enum pipe get_bigjoiner_master_pipe(enum pipe pipe, u8 master_pipes, u8 slave_pipes)
> +static enum pipe get_joiner_master_pipe(enum pipe pipe, u8 master_pipes, u8 slave_pipes)
> {
> if ((slave_pipes & BIT(pipe)) == 0)
> return pipe;
> @@ -3549,11 +3549,11 @@ static enum pipe get_bigjoiner_master_pipe(enum pipe pipe, u8 master_pipes, u8 s
> return fls(master_pipes) - 1;
> }
>
> -static u8 get_bigjoiner_slave_pipes(enum pipe pipe, u8 master_pipes, u8 slave_pipes)
> +static u8 get_joiner_slave_pipes(enum pipe pipe, u8 master_pipes, u8 slave_pipes)
> {
> enum pipe master_pipe, next_master_pipe;
>
> - master_pipe = get_bigjoiner_master_pipe(pipe, master_pipes, slave_pipes);
> + master_pipe = get_joiner_master_pipe(pipe, master_pipes, slave_pipes);
>
> if ((master_pipes & BIT(master_pipe)) == 0)
> return 0;
> @@ -3630,16 +3630,16 @@ static u8 hsw_enabled_transcoders(struct intel_crtc *crtc)
> enabled_transcoders |= BIT(cpu_transcoder);
> }
>
> - /* single pipe or bigjoiner master */
> + /* single pipe or joiner master */
> cpu_transcoder = (enum transcoder) crtc->pipe;
> if (transcoder_ddi_func_is_enabled(dev_priv, cpu_transcoder))
> enabled_transcoders |= BIT(cpu_transcoder);
>
> - /* bigjoiner slave -> consider the master pipe's transcoder as well */
> - enabled_bigjoiner_pipes(dev_priv, &master_pipes, &slave_pipes);
> + /* joiner slave -> consider the master pipe's transcoder as well */
> + enabled_joiner_pipes(dev_priv, &master_pipes, &slave_pipes);
> if (slave_pipes & BIT(crtc->pipe)) {
> cpu_transcoder = (enum transcoder)
> - get_bigjoiner_master_pipe(crtc->pipe, master_pipes, slave_pipes);
> + get_joiner_master_pipe(crtc->pipe, master_pipes, slave_pipes);
> if (transcoder_ddi_func_is_enabled(dev_priv, cpu_transcoder))
> enabled_transcoders |= BIT(cpu_transcoder);
> }
> @@ -3764,21 +3764,21 @@ static bool bxt_get_dsi_transcoder_state(struct intel_crtc *crtc,
> return transcoder_is_dsi(pipe_config->cpu_transcoder);
> }
>
> -static void intel_bigjoiner_get_config(struct intel_crtc_state *crtc_state)
> +static void intel_joiner_get_config(struct intel_crtc_state *crtc_state)
> {
> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> struct drm_i915_private *i915 = to_i915(crtc->base.dev);
> u8 master_pipes, slave_pipes;
> enum pipe pipe = crtc->pipe;
>
> - enabled_bigjoiner_pipes(i915, &master_pipes, &slave_pipes);
> + enabled_joiner_pipes(i915, &master_pipes, &slave_pipes);
>
> if (((master_pipes | slave_pipes) & BIT(pipe)) == 0)
> return;
>
> - crtc_state->bigjoiner_pipes =
> - BIT(get_bigjoiner_master_pipe(pipe, master_pipes, slave_pipes)) |
> - get_bigjoiner_slave_pipes(pipe, master_pipes, slave_pipes);
> + crtc_state->joiner_pipes =
> + BIT(get_joiner_master_pipe(pipe, master_pipes, slave_pipes)) |
> + get_joiner_slave_pipes(pipe, master_pipes, slave_pipes);
> }
>
> static bool hsw_get_pipe_config(struct intel_crtc *crtc,
> @@ -3805,7 +3805,7 @@ static bool hsw_get_pipe_config(struct intel_crtc *crtc,
> if (!active)
> goto out;
>
> - intel_bigjoiner_get_config(pipe_config);
> + intel_joiner_get_config(pipe_config);
> intel_dsc_get_config(pipe_config);
>
> if (!transcoder_is_dsi(pipe_config->cpu_transcoder) ||
> @@ -4464,7 +4464,7 @@ intel_crtc_copy_uapi_to_hw_state_nomodeset(struct intel_atomic_state *state,
> struct intel_crtc_state *crtc_state =
> intel_atomic_get_new_crtc_state(state, crtc);
>
> - WARN_ON(intel_crtc_is_bigjoiner_slave(crtc_state));
> + WARN_ON(intel_crtc_is_joiner_slave(crtc_state));
>
> drm_property_replace_blob(&crtc_state->hw.degamma_lut,
> crtc_state->uapi.degamma_lut);
> @@ -4481,7 +4481,7 @@ intel_crtc_copy_uapi_to_hw_state_modeset(struct intel_atomic_state *state,
> struct intel_crtc_state *crtc_state =
> intel_atomic_get_new_crtc_state(state, crtc);
>
> - WARN_ON(intel_crtc_is_bigjoiner_slave(crtc_state));
> + WARN_ON(intel_crtc_is_joiner_slave(crtc_state));
>
> crtc_state->hw.enable = crtc_state->uapi.enable;
> crtc_state->hw.active = crtc_state->uapi.active;
> @@ -4495,7 +4495,7 @@ intel_crtc_copy_uapi_to_hw_state_modeset(struct intel_atomic_state *state,
> }
>
> static void
> -copy_bigjoiner_crtc_state_nomodeset(struct intel_atomic_state *state,
> +copy_joiner_crtc_state_nomodeset(struct intel_atomic_state *state,
> struct intel_crtc *slave_crtc)
> {
> struct intel_crtc_state *slave_crtc_state =
> @@ -4515,7 +4515,7 @@ copy_bigjoiner_crtc_state_nomodeset(struct intel_atomic_state *state,
> }
>
> static int
> -copy_bigjoiner_crtc_state_modeset(struct intel_atomic_state *state,
> +copy_joiner_crtc_state_modeset(struct intel_atomic_state *state,
> struct intel_crtc *slave_crtc)
> {
> struct intel_crtc_state *slave_crtc_state =
> @@ -4525,8 +4525,8 @@ copy_bigjoiner_crtc_state_modeset(struct intel_atomic_state *state,
> intel_atomic_get_new_crtc_state(state, master_crtc);
> struct intel_crtc_state *saved_state;
>
> - WARN_ON(master_crtc_state->bigjoiner_pipes !=
> - slave_crtc_state->bigjoiner_pipes);
> + WARN_ON(master_crtc_state->joiner_pipes !=
> + slave_crtc_state->joiner_pipes);
>
> saved_state = kmemdup(master_crtc_state, sizeof(*saved_state), GFP_KERNEL);
> if (!saved_state)
> @@ -4560,14 +4560,14 @@ copy_bigjoiner_crtc_state_modeset(struct intel_atomic_state *state,
> drm_dp_tunnel_ref_get(master_crtc_state->dp_tunnel_ref.tunnel,
> &slave_crtc_state->dp_tunnel_ref);
>
> - copy_bigjoiner_crtc_state_nomodeset(state, slave_crtc);
> + copy_joiner_crtc_state_nomodeset(state, slave_crtc);
>
> slave_crtc_state->uapi.mode_changed = master_crtc_state->uapi.mode_changed;
> slave_crtc_state->uapi.connectors_changed = master_crtc_state->uapi.connectors_changed;
> slave_crtc_state->uapi.active_changed = master_crtc_state->uapi.active_changed;
>
> - WARN_ON(master_crtc_state->bigjoiner_pipes !=
> - slave_crtc_state->bigjoiner_pipes);
> + WARN_ON(master_crtc_state->joiner_pipes !=
> + slave_crtc_state->joiner_pipes);
>
> return 0;
> }
> @@ -5365,7 +5365,7 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
>
> PIPE_CONF_CHECK_X(sync_mode_slaves_mask);
> PIPE_CONF_CHECK_I(master_transcoder);
> - PIPE_CONF_CHECK_X(bigjoiner_pipes);
> + PIPE_CONF_CHECK_X(joiner_pipes);
>
> PIPE_CONF_CHECK_BOOL(dsc.config.block_pred_enable);
> PIPE_CONF_CHECK_BOOL(dsc.config.convert_rgb);
> @@ -5729,7 +5729,7 @@ static bool active_planes_affects_min_cdclk(struct drm_i915_private *dev_priv)
> IS_IVYBRIDGE(dev_priv);
> }
>
> -static int intel_crtc_add_bigjoiner_planes(struct intel_atomic_state *state,
> +static int intel_crtc_add_joiner_planes(struct intel_atomic_state *state,
> struct intel_crtc *crtc,
> struct intel_crtc *other)
> {
> @@ -5746,7 +5746,7 @@ static int intel_crtc_add_bigjoiner_planes(struct intel_atomic_state *state,
> return intel_crtc_add_planes_to_state(state, other, plane_ids);
> }
>
> -static int intel_bigjoiner_add_affected_planes(struct intel_atomic_state *state)
> +static int intel_joiner_add_affected_planes(struct intel_atomic_state *state)
> {
> struct drm_i915_private *i915 = to_i915(state->base.dev);
> const struct intel_crtc_state *crtc_state;
> @@ -5757,13 +5757,13 @@ static int intel_bigjoiner_add_affected_planes(struct intel_atomic_state *state)
> struct intel_crtc *other;
>
> for_each_intel_crtc_in_pipe_mask(&i915->drm, other,
> - crtc_state->bigjoiner_pipes) {
> + crtc_state->joiner_pipes) {
> int ret;
>
> if (crtc == other)
> continue;
>
> - ret = intel_crtc_add_bigjoiner_planes(state, crtc, other);
> + ret = intel_crtc_add_joiner_planes(state, crtc, other);
> if (ret)
> return ret;
> }
> @@ -5785,7 +5785,7 @@ static int intel_atomic_check_planes(struct intel_atomic_state *state)
> if (ret)
> return ret;
>
> - ret = intel_bigjoiner_add_affected_planes(state);
> + ret = intel_joiner_add_affected_planes(state);
> if (ret)
> return ret;
>
> @@ -5885,7 +5885,7 @@ static bool intel_pipes_need_modeset(struct intel_atomic_state *state,
> return false;
> }
>
> -static int intel_atomic_check_bigjoiner(struct intel_atomic_state *state,
> +static int intel_atomic_check_joiner(struct intel_atomic_state *state,
> struct intel_crtc *master_crtc)
> {
> struct drm_i915_private *i915 = to_i915(state->base.dev);
> @@ -5893,25 +5893,25 @@ static int intel_atomic_check_bigjoiner(struct intel_atomic_state *state,
> intel_atomic_get_new_crtc_state(state, master_crtc);
> struct intel_crtc *slave_crtc;
>
> - if (!master_crtc_state->bigjoiner_pipes)
> + if (!master_crtc_state->joiner_pipes)
> return 0;
>
> /* sanity check */
> if (drm_WARN_ON(&i915->drm,
> - master_crtc->pipe != bigjoiner_master_pipe(master_crtc_state)))
> + master_crtc->pipe != joiner_master_pipe(master_crtc_state)))
> return -EINVAL;
>
> - if (master_crtc_state->bigjoiner_pipes & ~bigjoiner_pipes(i915)) {
> + if (master_crtc_state->joiner_pipes & ~joiner_pipes(i915)) {
> drm_dbg_kms(&i915->drm,
> "[CRTC:%d:%s] Cannot act as big joiner master "
> "(need 0x%x as pipes, only 0x%x possible)\n",
> master_crtc->base.base.id, master_crtc->base.name,
> - master_crtc_state->bigjoiner_pipes, bigjoiner_pipes(i915));
> + master_crtc_state->joiner_pipes, joiner_pipes(i915));
> return -EINVAL;
> }
>
> for_each_intel_crtc_in_pipe_mask(&i915->drm, slave_crtc,
> - intel_crtc_bigjoiner_slave_pipes(master_crtc_state)) {
> + intel_crtc_joiner_slave_pipes(master_crtc_state)) {
> struct intel_crtc_state *slave_crtc_state;
> int ret;
>
> @@ -5923,7 +5923,7 @@ static int intel_atomic_check_bigjoiner(struct intel_atomic_state *state,
> if (slave_crtc_state->uapi.enable) {
> drm_dbg_kms(&i915->drm,
> "[CRTC:%d:%s] Slave is enabled as normal CRTC, but "
> - "[CRTC:%d:%s] claiming this CRTC for bigjoiner.\n",
> + "[CRTC:%d:%s] claiming this CRTC for joiner.\n",
> slave_crtc->base.base.id, slave_crtc->base.name,
> master_crtc->base.base.id, master_crtc->base.name);
> return -EINVAL;
> @@ -5945,10 +5945,10 @@ static int intel_atomic_check_bigjoiner(struct intel_atomic_state *state,
> slave_crtc->base.base.id, slave_crtc->base.name,
> master_crtc->base.base.id, master_crtc->base.name);
>
> - slave_crtc_state->bigjoiner_pipes =
> - master_crtc_state->bigjoiner_pipes;
> + slave_crtc_state->joiner_pipes =
> + master_crtc_state->joiner_pipes;
>
> - ret = copy_bigjoiner_crtc_state_modeset(state, slave_crtc);
> + ret = copy_joiner_crtc_state_modeset(state, slave_crtc);
> if (ret)
> return ret;
> }
> @@ -5956,7 +5956,7 @@ static int intel_atomic_check_bigjoiner(struct intel_atomic_state *state,
> return 0;
> }
>
> -static void kill_bigjoiner_slave(struct intel_atomic_state *state,
> +static void kill_joiner_slave(struct intel_atomic_state *state,
> struct intel_crtc *master_crtc)
> {
> struct drm_i915_private *i915 = to_i915(state->base.dev);
> @@ -5965,16 +5965,16 @@ static void kill_bigjoiner_slave(struct intel_atomic_state *state,
> struct intel_crtc *slave_crtc;
>
> for_each_intel_crtc_in_pipe_mask(&i915->drm, slave_crtc,
> - intel_crtc_bigjoiner_slave_pipes(master_crtc_state)) {
> + intel_crtc_joiner_slave_pipes(master_crtc_state)) {
> struct intel_crtc_state *slave_crtc_state =
> intel_atomic_get_new_crtc_state(state, slave_crtc);
>
> - slave_crtc_state->bigjoiner_pipes = 0;
> + slave_crtc_state->joiner_pipes = 0;
>
> intel_crtc_copy_uapi_to_hw_state_modeset(state, slave_crtc);
> }
>
> - master_crtc_state->bigjoiner_pipes = 0;
> + master_crtc_state->joiner_pipes = 0;
> }
>
> /**
> @@ -6027,9 +6027,9 @@ static int intel_async_flip_check_uapi(struct intel_atomic_state *state,
> * FIXME: Bigjoiner+async flip is busted currently.
> * Remove this check once the issues are fixed.
> */
> - if (new_crtc_state->bigjoiner_pipes) {
> + if (new_crtc_state->joiner_pipes) {
> drm_dbg_kms(&i915->drm,
> - "[CRTC:%d:%s] async flip disallowed with bigjoiner\n",
> + "[CRTC:%d:%s] async flip disallowed with joiner\n",
> crtc->base.base.id, crtc->base.name);
> return -EINVAL;
> }
> @@ -6254,7 +6254,7 @@ static int intel_async_flip_check_hw(struct intel_atomic_state *state, struct in
> return 0;
> }
>
> -static int intel_bigjoiner_add_affected_crtcs(struct intel_atomic_state *state)
> +static int intel_joiner_add_affected_crtcs(struct intel_atomic_state *state)
> {
> struct drm_i915_private *i915 = to_i915(state->base.dev);
> struct intel_crtc_state *crtc_state;
> @@ -6264,9 +6264,9 @@ static int intel_bigjoiner_add_affected_crtcs(struct intel_atomic_state *state)
> int i;
>
> for_each_new_intel_crtc_in_state(state, crtc, crtc_state, i) {
> - affected_pipes |= crtc_state->bigjoiner_pipes;
> + affected_pipes |= crtc_state->joiner_pipes;
> if (intel_crtc_needs_modeset(crtc_state))
> - modeset_pipes |= crtc_state->bigjoiner_pipes;
> + modeset_pipes |= crtc_state->joiner_pipes;
> }
>
> for_each_intel_crtc_in_pipe_mask(&i915->drm, crtc, affected_pipes) {
> @@ -6292,10 +6292,10 @@ static int intel_bigjoiner_add_affected_crtcs(struct intel_atomic_state *state)
> }
>
> for_each_new_intel_crtc_in_state(state, crtc, crtc_state, i) {
> - /* Kill old bigjoiner link, we may re-establish afterwards */
> + /* Kill old joiner link, we may re-establish afterwards */
> if (intel_crtc_needs_modeset(crtc_state) &&
> - intel_crtc_is_bigjoiner_master(crtc_state))
> - kill_bigjoiner_slave(state, crtc);
> + intel_crtc_is_joiner_master(crtc_state))
> + kill_joiner_slave(state, crtc);
> }
>
> return 0;
> @@ -6313,7 +6313,7 @@ static int intel_atomic_check_config(struct intel_atomic_state *state,
>
> *failed_pipe = INVALID_PIPE;
>
> - ret = intel_bigjoiner_add_affected_crtcs(state);
> + ret = intel_joiner_add_affected_crtcs(state);
> if (ret)
> return ret;
>
> @@ -6323,14 +6323,14 @@ static int intel_atomic_check_config(struct intel_atomic_state *state,
>
> for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) {
> if (!intel_crtc_needs_modeset(new_crtc_state)) {
> - if (intel_crtc_is_bigjoiner_slave(new_crtc_state))
> - copy_bigjoiner_crtc_state_nomodeset(state, crtc);
> + if (intel_crtc_is_joiner_slave(new_crtc_state))
> + copy_joiner_crtc_state_nomodeset(state, crtc);
> else
> intel_crtc_copy_uapi_to_hw_state_nomodeset(state, crtc);
> continue;
> }
>
> - if (drm_WARN_ON(&i915->drm, intel_crtc_is_bigjoiner_slave(new_crtc_state)))
> + if (drm_WARN_ON(&i915->drm, intel_crtc_is_joiner_slave(new_crtc_state)))
> continue;
>
> ret = intel_crtc_prepare_cleared_state(state, crtc);
> @@ -6349,7 +6349,7 @@ static int intel_atomic_check_config(struct intel_atomic_state *state,
> if (!intel_crtc_needs_modeset(new_crtc_state))
> continue;
>
> - if (drm_WARN_ON(&i915->drm, intel_crtc_is_bigjoiner_slave(new_crtc_state)))
> + if (drm_WARN_ON(&i915->drm, intel_crtc_is_joiner_slave(new_crtc_state)))
> continue;
>
> if (!new_crtc_state->hw.enable)
> @@ -6460,12 +6460,12 @@ int intel_atomic_check(struct drm_device *dev,
> if (!intel_crtc_needs_modeset(new_crtc_state))
> continue;
>
> - if (intel_crtc_is_bigjoiner_slave(new_crtc_state)) {
> + if (intel_crtc_is_joiner_slave(new_crtc_state)) {
> drm_WARN_ON(&dev_priv->drm, new_crtc_state->uapi.enable);
> continue;
> }
>
> - ret = intel_atomic_check_bigjoiner(state, crtc);
> + ret = intel_atomic_check_joiner(state, crtc);
> if (ret)
> goto fail;
> }
> @@ -6475,7 +6475,7 @@ int intel_atomic_check(struct drm_device *dev,
> if (!intel_crtc_needs_modeset(new_crtc_state))
> continue;
>
> - intel_bigjoiner_adjust_pipe_src(new_crtc_state);
> + intel_joiner_adjust_pipe_src(new_crtc_state);
>
> intel_crtc_check_fastset(old_crtc_state, new_crtc_state);
> }
> @@ -6515,8 +6515,8 @@ int intel_atomic_check(struct drm_device *dev,
> intel_crtc_flag_modeset(new_crtc_state);
> }
>
> - if (new_crtc_state->bigjoiner_pipes) {
> - if (intel_pipes_need_modeset(state, new_crtc_state->bigjoiner_pipes))
> + if (new_crtc_state->joiner_pipes) {
> + if (intel_pipes_need_modeset(state, new_crtc_state->joiner_pipes))
> intel_crtc_flag_modeset(new_crtc_state);
> }
> }
> @@ -6930,7 +6930,7 @@ static void intel_commit_modeset_disables(struct intel_atomic_state *state)
> if ((disable_pipes & BIT(crtc->pipe)) == 0)
> continue;
>
> - if (intel_crtc_is_bigjoiner_slave(old_crtc_state))
> + if (intel_crtc_is_joiner_slave(old_crtc_state))
> continue;
>
> /* In case of Transcoder port Sync master slave CRTCs can be
> @@ -6952,7 +6952,7 @@ static void intel_commit_modeset_disables(struct intel_atomic_state *state)
> if ((disable_pipes & BIT(crtc->pipe)) == 0)
> continue;
>
> - if (intel_crtc_is_bigjoiner_slave(old_crtc_state))
> + if (intel_crtc_is_joiner_slave(old_crtc_state))
> continue;
>
> intel_old_crtc_state_disables(state, crtc);
> @@ -7031,7 +7031,7 @@ static void skl_commit_modeset_enables(struct intel_atomic_state *state)
>
> while (update_pipes) {
> /*
> - * Commit in reverse order to make bigjoiner master
> + * Commit in reverse order to make joiner master
> * send the uapi events after slaves are done.
> */
> for_each_oldnew_intel_crtc_in_state_reverse(state, crtc, old_crtc_state,
> @@ -7077,7 +7077,7 @@ static void skl_commit_modeset_enables(struct intel_atomic_state *state)
> if ((modeset_pipes & BIT(pipe)) == 0)
> continue;
>
> - if (intel_crtc_is_bigjoiner_slave(new_crtc_state))
> + if (intel_crtc_is_joiner_slave(new_crtc_state))
> continue;
>
> if (intel_dp_mst_is_slave_trans(new_crtc_state) ||
> @@ -7099,7 +7099,7 @@ static void skl_commit_modeset_enables(struct intel_atomic_state *state)
> if ((modeset_pipes & BIT(pipe)) == 0)
> continue;
>
> - if (intel_crtc_is_bigjoiner_slave(new_crtc_state))
> + if (intel_crtc_is_joiner_slave(new_crtc_state))
> continue;
>
> modeset_pipes &= ~intel_crtc_joined_pipe_mask(new_crtc_state);
> @@ -7120,7 +7120,7 @@ static void skl_commit_modeset_enables(struct intel_atomic_state *state)
> }
>
> /*
> - * Commit in reverse order to make bigjoiner master
> + * Commit in reverse order to make joiner master
> * send the uapi events after slaves are done.
> */
> for_each_new_intel_crtc_in_state_reverse(state, crtc, new_crtc_state, i) {
> @@ -7848,7 +7848,7 @@ static int max_dotclock(struct drm_i915_private *i915)
> {
> int max_dotclock = i915->display.cdclk.max_dotclk_freq;
>
> - /* icl+ might use bigjoiner */
> + /* icl+ might use joiner */
> if (DISPLAY_VER(i915) >= 11)
> max_dotclock *= 2;
>
> @@ -7973,7 +7973,7 @@ enum drm_mode_status intel_cpu_transcoder_mode_valid(struct drm_i915_private *de
> enum drm_mode_status
> intel_mode_valid_max_plane_size(struct drm_i915_private *dev_priv,
> const struct drm_display_mode *mode,
> - bool bigjoiner)
> + bool joiner)
> {
> int plane_width_max, plane_height_max;
>
> @@ -7990,7 +7990,7 @@ intel_mode_valid_max_plane_size(struct drm_i915_private *dev_priv,
> * too big for that.
> */
> if (DISPLAY_VER(dev_priv) >= 11) {
> - plane_width_max = 5120 << bigjoiner;
> + plane_width_max = 5120 << joiner;
> plane_height_max = 4320;
> } else {
> plane_width_max = 5120;
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
> index 56d1c0e3e62c..a2ec5309113e 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -415,7 +415,7 @@ u32 intel_plane_fb_max_stride(struct drm_i915_private *dev_priv,
> enum drm_mode_status
> intel_mode_valid_max_plane_size(struct drm_i915_private *dev_priv,
> const struct drm_display_mode *mode,
> - bool bigjoiner);
> + bool joiner);
> enum drm_mode_status
> intel_cpu_transcoder_mode_valid(struct drm_i915_private *i915,
> const struct drm_display_mode *mode);
> @@ -423,9 +423,9 @@ enum phy intel_port_to_phy(struct drm_i915_private *i915, enum port port);
> bool is_trans_port_sync_mode(const struct intel_crtc_state *state);
> 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_bigjoiner_slave(const struct intel_crtc_state *crtc_state);
> -bool intel_crtc_is_bigjoiner_master(const struct intel_crtc_state *crtc_state);
> -u8 intel_crtc_bigjoiner_slave_pipes(const struct intel_crtc_state *crtc_state);
> +bool intel_crtc_is_joiner_slave(const struct intel_crtc_state *crtc_state);
> +bool intel_crtc_is_joiner_master(const struct intel_crtc_state *crtc_state);
> +u8 intel_crtc_joiner_slave_pipes(const struct intel_crtc_state *crtc_state);
> struct intel_crtc *intel_master_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_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> index 35f9f86ef70f..97fcf78bc8d0 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> @@ -574,10 +574,10 @@ static void intel_crtc_info(struct seq_file *m, struct intel_crtc *crtc)
>
> intel_scaler_info(m, crtc);
>
> - if (crtc_state->bigjoiner_pipes)
> + if (crtc_state->joiner_pipes)
> seq_printf(m, "\tLinked to 0x%x pipes as a %s\n",
> - crtc_state->bigjoiner_pipes,
> - intel_crtc_is_bigjoiner_slave(crtc_state) ? "slave" : "master");
> + crtc_state->joiner_pipes,
> + intel_crtc_is_joiner_slave(crtc_state) ? "slave" : "master");
>
> for_each_intel_encoder_mask(&dev_priv->drm, encoder,
> crtc_state->uapi.encoder_mask)
> @@ -1542,8 +1542,8 @@ void intel_connector_debugfs_add(struct intel_connector *connector)
> if (DISPLAY_VER(i915) >= 11 &&
> (connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
> connector_type == DRM_MODE_CONNECTOR_eDP)) {
> - debugfs_create_bool("i915_bigjoiner_force_enable", 0644, root,
> - &connector->force_bigjoiner_enable);
> + debugfs_create_bool("i915_joiner_force_enable", 0644, root,
> + &connector->force_joiner_enable);
> }
>
> if (connector_type == DRM_MODE_CONNECTOR_DSI ||
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
> index a06a154d587b..f84a2b180344 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -637,7 +637,7 @@ struct intel_connector {
>
> struct intel_dp *mst_port;
>
> - bool force_bigjoiner_enable;
> + bool force_joiner_enable;
>
> struct {
> struct drm_dp_aux *dsc_decompression_aux;
> @@ -1339,7 +1339,7 @@ struct intel_crtc_state {
> bool wgc_enable;
>
> /* big joiner pipe bitmask */
> - u8 bigjoiner_pipes;
> + u8 joiner_pipes;
>
> /* Display Stream compression state */
> struct {
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 486361eb0070..d6893a1cf5cc 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -436,7 +436,7 @@ int intel_dp_max_link_data_rate(struct intel_dp *intel_dp,
> return max_rate;
> }
>
> -bool intel_dp_has_bigjoiner(struct intel_dp *intel_dp)
> +bool intel_dp_has_joiner(struct intel_dp *intel_dp)
> {
> struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
> struct intel_encoder *encoder = &intel_dig_port->base;
> @@ -805,24 +805,24 @@ u32 intel_dp_dsc_nearest_valid_bpp(struct drm_i915_private *i915, u32 bpp, u32 p
> static
> u32 get_max_compressed_bpp_with_joiner(struct drm_i915_private *i915,
> u32 mode_clock, u32 mode_hdisplay,
> - bool bigjoiner)
> + bool joiner)
> {
> u32 max_bpp_small_joiner_ram;
>
> /* Small Joiner Check: output bpp <= joiner RAM (bits) / Horiz. width */
> max_bpp_small_joiner_ram = small_joiner_ram_size_bits(i915) / mode_hdisplay;
>
> - if (bigjoiner) {
> - int bigjoiner_interface_bits = DISPLAY_VER(i915) >= 14 ? 36 : 24;
> - /* With bigjoiner multiple dsc engines are used in parallel so PPC is 2 */
> + if (joiner) {
> + int joiner_interface_bits = DISPLAY_VER(i915) >= 14 ? 36 : 24;
> + /* With joiner multiple dsc engines are used in parallel so PPC is 2 */
> int ppc = 2;
> - u32 max_bpp_bigjoiner =
> - i915->display.cdclk.max_cdclk_freq * ppc * bigjoiner_interface_bits /
> + u32 max_bpp_joiner =
> + i915->display.cdclk.max_cdclk_freq * ppc * joiner_interface_bits /
> intel_dp_mode_to_fec_clock(mode_clock);
>
> max_bpp_small_joiner_ram *= 2;
>
> - return min(max_bpp_small_joiner_ram, max_bpp_bigjoiner);
> + return min(max_bpp_small_joiner_ram, max_bpp_joiner);
> }
>
> return max_bpp_small_joiner_ram;
> @@ -831,7 +831,7 @@ u32 get_max_compressed_bpp_with_joiner(struct drm_i915_private *i915,
> u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
> u32 link_clock, u32 lane_count,
> u32 mode_clock, u32 mode_hdisplay,
> - bool bigjoiner,
> + bool joiner,
> enum intel_output_format output_format,
> u32 pipe_bpp,
> u32 timeslots)
> @@ -877,7 +877,7 @@ u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
> intel_dp_mode_to_fec_clock(mode_clock));
>
> joiner_max_bpp = get_max_compressed_bpp_with_joiner(i915, mode_clock,
> - mode_hdisplay, bigjoiner);
> + mode_hdisplay, joiner);
> bits_per_pixel = min(bits_per_pixel, joiner_max_bpp);
>
> bits_per_pixel = intel_dp_dsc_nearest_valid_bpp(i915, bits_per_pixel, pipe_bpp);
> @@ -887,7 +887,7 @@ u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
>
> u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
> int mode_clock, int mode_hdisplay,
> - bool bigjoiner)
> + bool joiner)
> {
> struct drm_i915_private *i915 = to_i915(connector->base.dev);
> u8 min_slice_count, i;
> @@ -921,14 +921,14 @@ u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
>
> /* Find the closest match to the valid slice count values */
> for (i = 0; i < ARRAY_SIZE(valid_dsc_slicecount); i++) {
> - u8 test_slice_count = valid_dsc_slicecount[i] << bigjoiner;
> + u8 test_slice_count = valid_dsc_slicecount[i] << joiner;
>
> if (test_slice_count >
> drm_dp_dsc_sink_max_slice_count(connector->dp.dsc_dpcd, false))
> break;
>
> /* big joiner needs small joiner to be enabled */
> - if (bigjoiner && test_slice_count < 4)
> + if (joiner && test_slice_count < 4)
> continue;
>
> if (min_slice_count <= test_slice_count)
> @@ -1207,17 +1207,17 @@ intel_dp_mode_valid_downstream(struct intel_connector *connector,
> return MODE_OK;
> }
>
> -bool intel_dp_need_bigjoiner(struct intel_dp *intel_dp,
> +bool intel_dp_need_joiner(struct intel_dp *intel_dp,
> struct intel_connector *connector,
> int hdisplay, int clock)
> {
> struct drm_i915_private *i915 = dp_to_i915(intel_dp);
>
> - if (!intel_dp_has_bigjoiner(intel_dp))
> + if (!intel_dp_has_joiner(intel_dp))
> return false;
>
> return clock > i915->display.cdclk.max_dotclk_freq || hdisplay > 5120 ||
> - connector->force_bigjoiner_enable;
> + connector->force_joiner_enable;
> }
>
> static enum drm_mode_status
> @@ -1234,7 +1234,7 @@ intel_dp_mode_valid(struct drm_connector *_connector,
> u16 dsc_max_compressed_bpp = 0;
> u8 dsc_slice_count = 0;
> enum drm_mode_status status;
> - bool dsc = false, bigjoiner = false;
> + bool dsc = false, joiner = false;
>
> status = intel_cpu_transcoder_mode_valid(dev_priv, mode);
> if (status != MODE_OK)
> @@ -1255,9 +1255,9 @@ intel_dp_mode_valid(struct drm_connector *_connector,
> target_clock = fixed_mode->clock;
> }
>
> - if (intel_dp_need_bigjoiner(intel_dp, connector,
> + if (intel_dp_need_joiner(intel_dp, connector,
> mode->hdisplay, target_clock)) {
> - bigjoiner = true;
> + joiner = true;
> max_dotclk *= 2;
> }
> if (target_clock > max_dotclk)
> @@ -1304,20 +1304,20 @@ intel_dp_mode_valid(struct drm_connector *_connector,
> max_lanes,
> target_clock,
> mode->hdisplay,
> - bigjoiner,
> + joiner,
> output_format,
> pipe_bpp, 64);
> dsc_slice_count =
> intel_dp_dsc_get_slice_count(connector,
> target_clock,
> mode->hdisplay,
> - bigjoiner);
> + joiner);
> }
>
> dsc = dsc_max_compressed_bpp && dsc_slice_count;
> }
>
> - if (intel_dp_joiner_needs_dsc(dev_priv, bigjoiner) && !dsc)
> + if (intel_dp_joiner_needs_dsc(dev_priv, joiner) && !dsc)
> return MODE_CLOCK_HIGH;
>
> if (mode_rate > max_rate && !dsc)
> @@ -1327,7 +1327,7 @@ intel_dp_mode_valid(struct drm_connector *_connector,
> if (status != MODE_OK)
> return status;
>
> - return intel_mode_valid_max_plane_size(dev_priv, mode, bigjoiner);
> + return intel_mode_valid_max_plane_size(dev_priv, mode, joiner);
> }
>
> bool intel_dp_source_supports_tps3(struct drm_i915_private *i915)
> @@ -2018,7 +2018,7 @@ static int dsc_compute_compressed_bpp(struct intel_dp *intel_dp,
>
> dsc_joiner_max_bpp = get_max_compressed_bpp_with_joiner(i915, adjusted_mode->clock,
> adjusted_mode->hdisplay,
> - pipe_config->bigjoiner_pipes);
> + pipe_config->joiner_pipes);
> dsc_max_bpp = min(dsc_max_bpp, dsc_joiner_max_bpp);
> dsc_max_bpp = min(dsc_max_bpp, to_bpp_int(limits->link.max_bpp_x16));
>
> @@ -2252,7 +2252,7 @@ int intel_dp_dsc_compute_config(struct intel_dp *intel_dp,
> intel_dp_dsc_get_slice_count(connector,
> adjusted_mode->crtc_clock,
> adjusted_mode->crtc_hdisplay,
> - pipe_config->bigjoiner_pipes);
> + pipe_config->joiner_pipes);
> if (!dsc_dp_slice_count) {
> drm_dbg_kms(&dev_priv->drm,
> "Compressed Slice Count not supported\n");
> @@ -2266,7 +2266,7 @@ int intel_dp_dsc_compute_config(struct intel_dp *intel_dp,
> * is greater than the maximum Cdclock and if slice count is even
> * then we need to use 2 VDSC instances.
> */
> - if (pipe_config->bigjoiner_pipes || pipe_config->dsc.slice_count > 1)
> + if (pipe_config->joiner_pipes || pipe_config->dsc.slice_count > 1)
> pipe_config->dsc.dsc_split = true;
>
> ret = intel_dp_dsc_compute_params(connector, pipe_config);
> @@ -2432,12 +2432,12 @@ intel_dp_compute_link_config(struct intel_encoder *encoder,
> !intel_dp_supports_fec(intel_dp, connector, pipe_config))
> return -EINVAL;
>
> - if (intel_dp_need_bigjoiner(intel_dp, connector,
> + if (intel_dp_need_joiner(intel_dp, connector,
> adjusted_mode->crtc_hdisplay,
> adjusted_mode->crtc_clock))
> - pipe_config->bigjoiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe);
> + pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe);
>
> - joiner_needs_dsc = intel_dp_joiner_needs_dsc(i915, pipe_config->bigjoiner_pipes);
> + joiner_needs_dsc = intel_dp_joiner_needs_dsc(i915, pipe_config->joiner_pipes);
>
> dsc_needed = joiner_needs_dsc || intel_dp->force_dsc_en ||
> !intel_dp_compute_config_limits(intel_dp, pipe_config,
> @@ -2757,7 +2757,7 @@ intel_dp_drrs_compute_config(struct intel_connector *connector,
> * FIXME all joined pipes share the same transcoder.
> * Need to account for that when updating M/N live.
> */
> - if (has_seamless_m_n(connector) && !pipe_config->bigjoiner_pipes)
> + if (has_seamless_m_n(connector) && !pipe_config->joiner_pipes)
> pipe_config->update_m_n = true;
>
> if (!can_enable_drrs(connector, pipe_config, downclock_mode)) {
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h
> index 106ecfde36d9..4e4f88e69c55 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.h
> +++ b/drivers/gpu/drm/i915/display/intel_dp.h
> @@ -121,7 +121,7 @@ int intel_dp_effective_data_rate(int pixel_clock, int bpp_x16,
> int intel_dp_max_link_data_rate(struct intel_dp *intel_dp,
> int max_dprx_rate, int max_dprx_lanes);
> bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, bool use_joiner);
> -bool intel_dp_has_bigjoiner(struct intel_dp *intel_dp);
> +bool intel_dp_has_joiner(struct intel_dp *intel_dp);
> bool intel_dp_needs_vsc_sdp(const struct intel_crtc_state *crtc_state,
> const struct drm_connector_state *conn_state);
> void intel_dp_set_infoframes(struct intel_encoder *encoder, bool enable,
> @@ -139,7 +139,7 @@ int intel_dp_dsc_compute_max_bpp(const struct intel_connector *connector,
> u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
> u32 link_clock, u32 lane_count,
> u32 mode_clock, u32 mode_hdisplay,
> - bool bigjoiner,
> + bool joiner,
> enum intel_output_format output_format,
> u32 pipe_bpp,
> u32 timeslots);
> @@ -149,8 +149,8 @@ int intel_dp_dsc_sink_max_compressed_bpp(const struct intel_connector *connector
> int bpc);
> u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
> int mode_clock, int mode_hdisplay,
> - bool bigjoiner);
> -bool intel_dp_need_bigjoiner(struct intel_dp *intel_dp,
> + bool joiner);
> +bool intel_dp_need_joiner(struct intel_dp *intel_dp,
> struct intel_connector *connector,
> int hdisplay, int clock);
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index c772ba19c547..b2c6f7ec578f 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -105,7 +105,7 @@ static int intel_dp_mst_bw_overhead(const struct intel_crtc_state *crtc_state,
> dsc_slice_count = intel_dp_dsc_get_slice_count(connector,
> adjusted_mode->clock,
> adjusted_mode->hdisplay,
> - crtc_state->bigjoiner_pipes);
> + crtc_state->joiner_pipes);
> }
>
> overhead = drm_dp_bw_overhead(crtc_state->lane_count,
> @@ -567,16 +567,16 @@ static int intel_dp_mst_compute_config(struct intel_encoder *encoder,
> if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN)
> return -EINVAL;
>
> - if (intel_dp_need_bigjoiner(intel_dp, connector,
> + if (intel_dp_need_joiner(intel_dp, connector,
> adjusted_mode->crtc_hdisplay,
> adjusted_mode->crtc_clock))
> - pipe_config->bigjoiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe);
> + pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe);
>
> pipe_config->sink_format = INTEL_OUTPUT_FORMAT_RGB;
> pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB;
> pipe_config->has_pch_encoder = false;
>
> - joiner_needs_dsc = intel_dp_joiner_needs_dsc(dev_priv, pipe_config->bigjoiner_pipes);
> + joiner_needs_dsc = intel_dp_joiner_needs_dsc(dev_priv, pipe_config->joiner_pipes);
>
> dsc_needed = joiner_needs_dsc || intel_dp->force_dsc_en ||
> !intel_dp_mst_compute_config_limits(intel_dp,
> @@ -1375,7 +1375,7 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
> int max_dotclk = to_i915(connector->dev)->display.cdclk.max_dotclk_freq;
> int max_rate, mode_rate, max_lanes, max_link_clock;
> int ret;
> - bool dsc = false, bigjoiner = false;
> + bool dsc = false, joiner = false;
> u16 dsc_max_compressed_bpp = 0;
> u8 dsc_slice_count = 0;
> int target_clock = mode->clock;
> @@ -1418,9 +1418,9 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
> * corresponding link capabilities of the sink) in case the
> * stream is uncompressed for it by the last branch device.
> */
> - if (intel_dp_need_bigjoiner(intel_dp, intel_connector,
> + if (intel_dp_need_joiner(intel_dp, intel_connector,
> mode->hdisplay, target_clock)) {
> - bigjoiner = true;
> + joiner = true;
> max_dotclk *= 2;
> }
>
> @@ -1449,20 +1449,20 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
> max_lanes,
> target_clock,
> mode->hdisplay,
> - bigjoiner,
> + joiner,
> INTEL_OUTPUT_FORMAT_RGB,
> pipe_bpp, 64);
> dsc_slice_count =
> intel_dp_dsc_get_slice_count(intel_connector,
> target_clock,
> mode->hdisplay,
> - bigjoiner);
> + joiner);
> }
>
> dsc = dsc_max_compressed_bpp && dsc_slice_count;
> }
>
> - if (intel_dp_joiner_needs_dsc(dev_priv, bigjoiner) && !dsc) {
> + if (intel_dp_joiner_needs_dsc(dev_priv, joiner) && !dsc) {
> *status = MODE_CLOCK_HIGH;
> return 0;
> }
> @@ -1472,7 +1472,7 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
> return 0;
> }
>
> - *status = intel_mode_valid_max_plane_size(dev_priv, mode, bigjoiner);
> + *status = intel_mode_valid_max_plane_size(dev_priv, mode, joiner);
> return 0;
> }
>
> diff --git a/drivers/gpu/drm/i915/display/intel_drrs.c b/drivers/gpu/drm/i915/display/intel_drrs.c
> index 597f8bd6aa1a..ccdf49b2aebb 100644
> --- a/drivers/gpu/drm/i915/display/intel_drrs.c
> +++ b/drivers/gpu/drm/i915/display/intel_drrs.c
> @@ -135,7 +135,7 @@ static unsigned int intel_drrs_frontbuffer_bits(const struct intel_crtc_state *c
> frontbuffer_bits = INTEL_FRONTBUFFER_ALL_MASK(crtc->pipe);
>
> for_each_intel_crtc_in_pipe_mask(&i915->drm, crtc,
> - crtc_state->bigjoiner_pipes)
> + crtc_state->joiner_pipes)
> frontbuffer_bits |= INTEL_FRONTBUFFER_ALL_MASK(crtc->pipe);
>
> return frontbuffer_bits;
> @@ -157,7 +157,7 @@ void intel_drrs_activate(const struct intel_crtc_state *crtc_state)
> if (!crtc_state->hw.active)
> return;
>
> - if (intel_crtc_is_bigjoiner_slave(crtc_state))
> + if (intel_crtc_is_joiner_slave(crtc_state))
> return;
>
> mutex_lock(&crtc->drrs.mutex);
> @@ -189,7 +189,7 @@ void intel_drrs_deactivate(const struct intel_crtc_state *old_crtc_state)
> if (!old_crtc_state->hw.active)
> return;
>
> - if (intel_crtc_is_bigjoiner_slave(old_crtc_state))
> + if (intel_crtc_is_joiner_slave(old_crtc_state))
> return;
>
> mutex_lock(&crtc->drrs.mutex);
> diff --git a/drivers/gpu/drm/i915/display/intel_modeset_setup.c b/drivers/gpu/drm/i915/display/intel_modeset_setup.c
> index caeca3a8442c..2e4c006122e5 100644
> --- a/drivers/gpu/drm/i915/display/intel_modeset_setup.c
> +++ b/drivers/gpu/drm/i915/display/intel_modeset_setup.c
> @@ -68,7 +68,7 @@ static void intel_crtc_disable_noatomic_begin(struct intel_crtc *crtc,
> /* Everything's already locked, -EDEADLK can't happen. */
> for_each_intel_crtc_in_pipe_mask(&i915->drm, temp_crtc,
> BIT(pipe) |
> - intel_crtc_bigjoiner_slave_pipes(crtc_state)) {
> + intel_crtc_joiner_slave_pipes(crtc_state)) {
> struct intel_crtc_state *temp_crtc_state =
> intel_atomic_get_crtc_state(state, temp_crtc);
> int ret;
> @@ -189,7 +189,7 @@ static void intel_crtc_disable_noatomic_complete(struct intel_crtc *crtc)
>
> /*
> * Return all the pipes using a transcoder in @transcoder_mask.
> - * For bigjoiner configs return only the bigjoiner master.
> + * For joiner configs return only the joiner master.
> */
> static u8 get_transcoder_pipes(struct drm_i915_private *i915,
> u8 transcoder_mask)
> @@ -204,7 +204,7 @@ static u8 get_transcoder_pipes(struct drm_i915_private *i915,
> if (temp_crtc_state->cpu_transcoder == INVALID_TRANSCODER)
> continue;
>
> - if (intel_crtc_is_bigjoiner_slave(temp_crtc_state))
> + if (intel_crtc_is_joiner_slave(temp_crtc_state))
> continue;
>
> if (transcoder_mask & BIT(temp_crtc_state->cpu_transcoder))
> @@ -216,7 +216,7 @@ static u8 get_transcoder_pipes(struct drm_i915_private *i915,
>
> /*
> * Return the port sync master and slave pipes linked to @crtc.
> - * For bigjoiner configs return only the bigjoiner master pipes.
> + * For joiner configs return only the joiner master pipes.
> */
> static void get_portsync_pipes(struct intel_crtc *crtc,
> u8 *master_pipe_mask, u8 *slave_pipes_mask)
> @@ -248,7 +248,7 @@ static void get_portsync_pipes(struct intel_crtc *crtc,
> *slave_pipes_mask = get_transcoder_pipes(i915, master_crtc_state->sync_mode_slaves_mask);
> }
>
> -static u8 get_bigjoiner_slave_pipes(struct drm_i915_private *i915, u8 master_pipes_mask)
> +static u8 get_joiner_slave_pipes(struct drm_i915_private *i915, u8 master_pipes_mask)
> {
> struct intel_crtc *master_crtc;
> u8 pipes = 0;
> @@ -257,7 +257,7 @@ static u8 get_bigjoiner_slave_pipes(struct drm_i915_private *i915, u8 master_pip
> struct intel_crtc_state *master_crtc_state =
> to_intel_crtc_state(master_crtc->base.state);
>
> - pipes |= intel_crtc_bigjoiner_slave_pipes(master_crtc_state);
> + pipes |= intel_crtc_joiner_slave_pipes(master_crtc_state);
> }
>
> return pipes;
> @@ -269,21 +269,21 @@ static void intel_crtc_disable_noatomic(struct intel_crtc *crtc,
> struct drm_i915_private *i915 = to_i915(crtc->base.dev);
> u8 portsync_master_mask;
> u8 portsync_slaves_mask;
> - u8 bigjoiner_slaves_mask;
> + u8 joiner_slaves_mask;
> struct intel_crtc *temp_crtc;
>
> /* TODO: Add support for MST */
> get_portsync_pipes(crtc, &portsync_master_mask, &portsync_slaves_mask);
> - bigjoiner_slaves_mask = get_bigjoiner_slave_pipes(i915,
> + joiner_slaves_mask = get_joiner_slave_pipes(i915,
> portsync_master_mask |
> portsync_slaves_mask);
>
> drm_WARN_ON(&i915->drm,
> portsync_master_mask & portsync_slaves_mask ||
> - portsync_master_mask & bigjoiner_slaves_mask ||
> - portsync_slaves_mask & bigjoiner_slaves_mask);
> + portsync_master_mask & joiner_slaves_mask ||
> + portsync_slaves_mask & joiner_slaves_mask);
>
> - for_each_intel_crtc_in_pipe_mask(&i915->drm, temp_crtc, bigjoiner_slaves_mask)
> + for_each_intel_crtc_in_pipe_mask(&i915->drm, temp_crtc, joiner_slaves_mask)
> intel_crtc_disable_noatomic_begin(temp_crtc, ctx);
>
> for_each_intel_crtc_in_pipe_mask(&i915->drm, temp_crtc, portsync_slaves_mask)
> @@ -293,7 +293,7 @@ static void intel_crtc_disable_noatomic(struct intel_crtc *crtc,
> intel_crtc_disable_noatomic_begin(temp_crtc, ctx);
>
> for_each_intel_crtc_in_pipe_mask(&i915->drm, temp_crtc,
> - bigjoiner_slaves_mask |
> + joiner_slaves_mask |
> portsync_slaves_mask |
> portsync_master_mask)
> intel_crtc_disable_noatomic_complete(temp_crtc);
> @@ -326,7 +326,7 @@ static void intel_modeset_update_connector_atomic_state(struct drm_i915_private
>
> static void intel_crtc_copy_hw_to_uapi_state(struct intel_crtc_state *crtc_state)
> {
> - if (intel_crtc_is_bigjoiner_slave(crtc_state))
> + if (intel_crtc_is_joiner_slave(crtc_state))
> return;
>
> crtc_state->uapi.enable = crtc_state->hw.enable;
> @@ -474,7 +474,7 @@ static bool intel_sanitize_crtc(struct intel_crtc *crtc,
> }
>
> if (!crtc_state->hw.active ||
> - intel_crtc_is_bigjoiner_slave(crtc_state))
> + intel_crtc_is_joiner_slave(crtc_state))
> return false;
>
> needs_link_reset = intel_crtc_needs_link_reset(crtc);
> @@ -728,15 +728,15 @@ static void intel_modeset_readout_hw_state(struct drm_i915_private *i915)
> encoder->base.crtc = &crtc->base;
> intel_encoder_get_config(encoder, crtc_state);
>
> - /* read out to slave crtc as well for bigjoiner */
> - if (crtc_state->bigjoiner_pipes) {
> + /* read out to slave crtc as well for joiner */
> + if (crtc_state->joiner_pipes) {
> struct intel_crtc *slave_crtc;
>
> - /* encoder should read be linked to bigjoiner master */
> - WARN_ON(intel_crtc_is_bigjoiner_slave(crtc_state));
> + /* encoder should read be linked to joiner master */
> + WARN_ON(intel_crtc_is_joiner_slave(crtc_state));
>
> for_each_intel_crtc_in_pipe_mask(&i915->drm, slave_crtc,
> - intel_crtc_bigjoiner_slave_pipes(crtc_state)) {
> + intel_crtc_joiner_slave_pipes(crtc_state)) {
> struct intel_crtc_state *slave_crtc_state;
>
> slave_crtc_state = to_intel_crtc_state(slave_crtc->base.state);
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
> index 595eb1b3b6c6..f9bc9679f888 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -1625,13 +1625,13 @@ void intel_psr_compute_config(struct intel_dp *intel_dp,
> }
>
> /*
> - * FIXME figure out what is wrong with PSR+bigjoiner and
> + * FIXME figure out what is wrong with PSR+joiner and
> * fix it. Presumably something related to the fact that
> * PSR is a transcoder level feature.
> */
> - if (crtc_state->bigjoiner_pipes) {
> + if (crtc_state->joiner_pipes) {
> drm_dbg_kms(&dev_priv->drm,
> - "PSR disabled due to bigjoiner\n");
> + "PSR disabled due to joiner\n");
> return;
> }
>
> diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c b/drivers/gpu/drm/i915/display/intel_vdsc.c
> index 17d6572f9d0a..47468af8e029 100644
> --- a/drivers/gpu/drm/i915/display/intel_vdsc.c
> +++ b/drivers/gpu/drm/i915/display/intel_vdsc.c
> @@ -380,7 +380,7 @@ int intel_dsc_get_num_vdsc_instances(const struct intel_crtc_state *crtc_state)
> {
> int num_vdsc_instances = intel_dsc_get_vdsc_per_pipe(crtc_state);
>
> - if (crtc_state->bigjoiner_pipes)
> + if (crtc_state->joiner_pipes)
> num_vdsc_instances *= 2;
>
> return num_vdsc_instances;
> @@ -761,8 +761,8 @@ void intel_uncompressed_joiner_enable(const struct intel_crtc_state *crtc_state)
> struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
> u32 dss_ctl1_val = 0;
>
> - if (crtc_state->bigjoiner_pipes && !crtc_state->dsc.compression_enable) {
> - if (intel_crtc_is_bigjoiner_slave(crtc_state))
> + if (crtc_state->joiner_pipes && !crtc_state->dsc.compression_enable) {
> + if (intel_crtc_is_joiner_slave(crtc_state))
> dss_ctl1_val |= UNCOMPRESSED_JOINER_SLAVE;
> else
> dss_ctl1_val |= UNCOMPRESSED_JOINER_MASTER;
> @@ -789,9 +789,9 @@ void intel_dsc_enable(const struct intel_crtc_state *crtc_state)
> dss_ctl2_val |= RIGHT_BRANCH_VDSC_ENABLE;
> dss_ctl1_val |= JOINER_ENABLE;
> }
> - if (crtc_state->bigjoiner_pipes) {
> + if (crtc_state->joiner_pipes) {
> dss_ctl1_val |= BIG_JOINER_ENABLE;
> - if (!intel_crtc_is_bigjoiner_slave(crtc_state))
> + if (!intel_crtc_is_joiner_slave(crtc_state))
> dss_ctl1_val |= MASTER_BIG_JOINER_ENABLE;
> }
> intel_de_write(dev_priv, dss_ctl1_reg(crtc, crtc_state->cpu_transcoder), dss_ctl1_val);
> @@ -805,7 +805,7 @@ void intel_dsc_disable(const struct intel_crtc_state *old_crtc_state)
>
> /* Disable only if either of them is enabled */
> if (old_crtc_state->dsc.compression_enable ||
> - old_crtc_state->bigjoiner_pipes) {
> + old_crtc_state->joiner_pipes) {
> intel_de_write(dev_priv, dss_ctl1_reg(crtc, old_crtc_state->cpu_transcoder), 0);
> intel_de_write(dev_priv, dss_ctl2_reg(crtc, old_crtc_state->cpu_transcoder), 0);
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.h b/drivers/gpu/drm/i915/display/intel_vdsc.h
> index 2cc41ff08909..b12ed71c42c0 100644
> --- a/drivers/gpu/drm/i915/display/intel_vdsc.h
> +++ b/drivers/gpu/drm/i915/display/intel_vdsc.h
> @@ -21,7 +21,7 @@ int intel_dsc_compute_params(struct intel_crtc_state *pipe_config);
> void intel_dsc_get_config(struct intel_crtc_state *crtc_state);
> enum intel_display_power_domain
> intel_dsc_power_domain(struct intel_crtc *crtc, enum transcoder cpu_transcoder);
> -struct intel_crtc *intel_dsc_get_bigjoiner_secondary(const struct intel_crtc *primary_crtc);
> +struct intel_crtc *intel_dsc_get_joiner_secondary(const struct intel_crtc *primary_crtc);
> int intel_dsc_get_num_vdsc_instances(const struct intel_crtc_state *crtc_state);
> void intel_dsc_dsi_pps_write(struct intel_encoder *encoder,
> const struct intel_crtc_state *crtc_state);
> diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c
> index 5f3657aa8313..58531f02971b 100644
> --- a/drivers/gpu/drm/i915/display/intel_vrr.c
> +++ b/drivers/gpu/drm/i915/display/intel_vrr.c
> @@ -123,7 +123,7 @@ intel_vrr_compute_config(struct intel_crtc_state *crtc_state,
> * FIXME all joined pipes share the same transcoder.
> * Need to account for that during VRR toggle/push/etc.
> */
> - if (crtc_state->bigjoiner_pipes)
> + if (crtc_state->joiner_pipes)
> return;
>
> if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE)
> diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
> index 7b79704fa674..06e01dd6fd62 100644
> --- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
> +++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
> @@ -2494,9 +2494,9 @@ skl_get_initial_plane_config(struct intel_crtc *crtc,
>
> drm_WARN_ON(dev, pipe != crtc->pipe);
>
> - if (crtc_state->bigjoiner_pipes) {
> + if (crtc_state->joiner_pipes) {
> drm_dbg_kms(&dev_priv->drm,
> - "Unsupported bigjoiner configuration for initial FB\n");
> + "Unsupported joiner configuration for initial FB\n");
> return;
> }
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 17+ messages in thread
* ✗ Fi.CI.CHECKPATCH: warning for Ultrajoiner basic functionality series
2024-05-20 7:38 [PATCH 0/5] Ultrajoiner basic functionality series Stanislav Lisovskiy
` (4 preceding siblings ...)
2024-05-20 7:38 ` [PATCH 5/5] drm/i915: Add new abstraction layer to handle pipe order for different joiners Stanislav Lisovskiy
@ 2024-05-20 10:29 ` Patchwork
2024-05-20 10:40 ` ✓ Fi.CI.BAT: success " Patchwork
2024-05-20 11:52 ` ✗ Fi.CI.IGT: failure " Patchwork
7 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2024-05-20 10:29 UTC (permalink / raw)
To: Stanislav Lisovskiy; +Cc: intel-gfx
== Series Details ==
Series: Ultrajoiner basic functionality series
URL : https://patchwork.freedesktop.org/series/133800/
State : warning
== Summary ==
Error: dim checkpatch failed
f1c5de795401 drm/i915: Rename all bigjoiner to joiner
-:200: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#200: FILE: drivers/gpu/drm/i915/display/intel_display.c:2320:
+static void intel_joiner_adjust_timings(const struct intel_crtc_state *crtc_state,
struct drm_display_mode *mode)
-:299: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#299: FILE: drivers/gpu/drm/i915/display/intel_display.c:3496:
+static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
u8 *master_pipes, u8 *slave_pipes)
-:415: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#415: FILE: drivers/gpu/drm/i915/display/intel_display.c:4501:
+copy_joiner_crtc_state_nomodeset(struct intel_atomic_state *state,
struct intel_crtc *slave_crtc)
-:424: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#424: FILE: drivers/gpu/drm/i915/display/intel_display.c:4521:
+copy_joiner_crtc_state_modeset(struct intel_atomic_state *state,
struct intel_crtc *slave_crtc)
-:471: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#471: FILE: drivers/gpu/drm/i915/display/intel_display.c:5735:
+static int intel_crtc_add_joiner_planes(struct intel_atomic_state *state,
struct intel_crtc *crtc,
-:514: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#514: FILE: drivers/gpu/drm/i915/display/intel_display.c:5891:
+static int intel_atomic_check_joiner(struct intel_atomic_state *state,
struct intel_crtc *master_crtc)
-:577: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#577: FILE: drivers/gpu/drm/i915/display/intel_display.c:5962:
+static void kill_joiner_slave(struct intel_atomic_state *state,
struct intel_crtc *master_crtc)
-:971: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#971: FILE: drivers/gpu/drm/i915/display/intel_dp.c:1211:
+bool intel_dp_need_joiner(struct intel_dp *intel_dp,
struct intel_connector *connector,
-:1001: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#1001: FILE: drivers/gpu/drm/i915/display/intel_dp.c:1259:
+ if (intel_dp_need_joiner(intel_dp, connector,
mode->hdisplay, target_clock)) {
-:1073: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#1073: FILE: drivers/gpu/drm/i915/display/intel_dp.c:2436:
+ if (intel_dp_need_joiner(intel_dp, connector,
adjusted_mode->crtc_hdisplay,
-:1122: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#1122: FILE: drivers/gpu/drm/i915/display/intel_dp.h:154:
+bool intel_dp_need_joiner(struct intel_dp *intel_dp,
struct intel_connector *connector,
-:1144: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#1144: FILE: drivers/gpu/drm/i915/display/intel_dp_mst.c:571:
+ if (intel_dp_need_joiner(intel_dp, connector,
adjusted_mode->crtc_hdisplay,
-:1173: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#1173: FILE: drivers/gpu/drm/i915/display/intel_dp_mst.c:1422:
+ if (intel_dp_need_joiner(intel_dp, intel_connector,
mode->hdisplay, target_clock)) {
-:1313: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#1313: FILE: drivers/gpu/drm/i915/display/intel_modeset_setup.c:278:
+ joiner_slaves_mask = get_joiner_slave_pipes(i915,
portsync_master_mask |
-:1372: WARNING:LONG_LINE: line length of 109 exceeds 100 columns
#1372: FILE: drivers/gpu/drm/i915/display/intel_modeset_setup.c:739:
+ intel_crtc_joiner_slave_pipes(crtc_state)) {
total: 0 errors, 1 warnings, 14 checks, 1283 lines checked
8e8e3298a19d drm/i915: Implement basic functions for ultrajoiner support
c30500d06cf7 drm/i915: Implement hw state readout for ultrajoiner
-:9: WARNING:BAD_SIGN_OFF: 'Signed-off-by:' is the preferred signature form
#9:
SIgned-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
-:48: CHECK:LINE_SPACING: Please don't use multiple blank lines
#48: FILE: drivers/gpu/drm/i915/display/intel_display.c:3577:
+
+
-:71: WARNING:UNNECESSARY_ELSE: else is not generally useful after a break or return
#71: FILE: drivers/gpu/drm/i915/display/intel_display.c:3616:
+ return fls(master_pipes) - 1;
+ } else {
total: 0 errors, 2 warnings, 1 checks, 130 lines checked
f8f5dde0ee99 drm/i915: Compute config and mode valid changes for ultrajoiner
-:66: CHECK:MULTIPLE_ASSIGNMENTS: multiple assignments should be avoided
#66: FILE: drivers/gpu/drm/i915/display/intel_dp.c:814:
+ max_bpp_joiner = max_bpp_small_joiner_ram =
-:206: ERROR:ELSE_AFTER_BRACE: else should follow close brace '}'
#206: FILE: drivers/gpu/drm/i915/display/intel_dp.c:1304:
+ }
+ else if (intel_dp_need_bigjoiner(intel_dp, connector,
-:207: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#207: FILE: drivers/gpu/drm/i915/display/intel_dp.c:1305:
+ else if (intel_dp_need_bigjoiner(intel_dp, connector,
mode->hdisplay, target_clock)) {
-:324: WARNING:LONG_LINE: line length of 104 exceeds 100 columns
#324: FILE: drivers/gpu/drm/i915/display/intel_dp.h:123:
+bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, bool use_bigjoiner, bool use_ultrajoiner);
-:380: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#380: FILE: drivers/gpu/drm/i915/display/intel_dp_mst.c:574:
+ else if (intel_dp_need_bigjoiner(intel_dp, connector,
adjusted_mode->crtc_hdisplay,
-:494: CHECK:LINE_SPACING: Please don't use multiple blank lines
#494: FILE: drivers/gpu/drm/i915/display/intel_hdmi.c:2351:
+
+
-:550: WARNING:ONE_SEMICOLON: Statements terminations use 1 semicolon
#550: FILE: drivers/gpu/drm/i915/display/intel_vdsc.c:813:
+ dss_ctl1_val |= MASTER_ULTRA_JOINER_ENABLE;;
total: 1 errors, 2 warnings, 4 checks, 480 lines checked
dee2c5b44f8d drm/i915: Add new abstraction layer to handle pipe order for different joiners
-:7: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#7:
Ultrajoiner case requires special treatment where both reverse and staight order
-:77: CHECK:LINE_SPACING: Please don't use multiple blank lines
#77: FILE: drivers/gpu/drm/i915/display/intel_display.c:1701:
+
-:82: ERROR:OPEN_BRACE: that open brace { should be on the previous line
#82: FILE: drivers/gpu/drm/i915/display/intel_display.c:1706:
+ static const enum pipe ultrajoiner_pipe_order_enable[I915_MAX_PIPES] =
+ { PIPE_B, PIPE_D, PIPE_C, PIPE_A };
-:84: ERROR:OPEN_BRACE: that open brace { should be on the previous line
#84: FILE: drivers/gpu/drm/i915/display/intel_display.c:1708:
+ static const enum pipe bigjoiner_pipe_order_enable[I915_MAX_PIPES] =
+ { PIPE_B, PIPE_A, PIPE_D, PIPE_C };
-:86: ERROR:OPEN_BRACE: that open brace { should be on the previous line
#86: FILE: drivers/gpu/drm/i915/display/intel_display.c:1710:
+ static const enum pipe nojoiner_pipe_order_enable[I915_MAX_PIPES] =
+ { PIPE_A, PIPE_B, PIPE_C, PIPE_D };
-:98: ERROR:OPEN_BRACE: that open brace { should be on the previous line
#98: FILE: drivers/gpu/drm/i915/display/intel_display.c:1722:
+ static const enum pipe ultrajoiner_pipe_order_disable[I915_MAX_PIPES] =
+ { PIPE_A, PIPE_B, PIPE_D, PIPE_C };
-:100: ERROR:OPEN_BRACE: that open brace { should be on the previous line
#100: FILE: drivers/gpu/drm/i915/display/intel_display.c:1724:
+ static const enum pipe bigjoiner_pipe_order_disable[I915_MAX_PIPES] =
+ { PIPE_A, PIPE_B, PIPE_C, PIPE_D };
-:102: ERROR:OPEN_BRACE: that open brace { should be on the previous line
#102: FILE: drivers/gpu/drm/i915/display/intel_display.c:1726:
+ static const enum pipe nojoiner_pipe_order_disable[I915_MAX_PIPES] =
+ { PIPE_A, PIPE_B, PIPE_C, PIPE_D };
-:218: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#218: FILE: drivers/gpu/drm/i915/display/intel_display.h:277:
+#define for_each_intel_crtc_in_mask_priority(__dev_priv, intel_crtc, __p, __mask, __priolist) \
+ for_each_pipe(__dev_priv, __p) \
+ for_each_if((__mask) & BIT(__priolist[__p])) \
+ for_each_if(intel_crtc = intel_crtc_for_pipe(__dev_priv, __priolist[__p]))
-:218: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__dev_priv' - possible side-effects?
#218: FILE: drivers/gpu/drm/i915/display/intel_display.h:277:
+#define for_each_intel_crtc_in_mask_priority(__dev_priv, intel_crtc, __p, __mask, __priolist) \
+ for_each_pipe(__dev_priv, __p) \
+ for_each_if((__mask) & BIT(__priolist[__p])) \
+ for_each_if(intel_crtc = intel_crtc_for_pipe(__dev_priv, __priolist[__p]))
-:218: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__p' - possible side-effects?
#218: FILE: drivers/gpu/drm/i915/display/intel_display.h:277:
+#define for_each_intel_crtc_in_mask_priority(__dev_priv, intel_crtc, __p, __mask, __priolist) \
+ for_each_pipe(__dev_priv, __p) \
+ for_each_if((__mask) & BIT(__priolist[__p])) \
+ for_each_if(intel_crtc = intel_crtc_for_pipe(__dev_priv, __priolist[__p]))
-:218: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__priolist' - possible side-effects?
#218: FILE: drivers/gpu/drm/i915/display/intel_display.h:277:
+#define for_each_intel_crtc_in_mask_priority(__dev_priv, intel_crtc, __p, __mask, __priolist) \
+ for_each_pipe(__dev_priv, __p) \
+ for_each_if((__mask) & BIT(__priolist[__p])) \
+ for_each_if(intel_crtc = intel_crtc_for_pipe(__dev_priv, __priolist[__p]))
total: 7 errors, 1 warnings, 4 checks, 241 lines checked
^ permalink raw reply [flat|nested] 17+ messages in thread
* ✓ Fi.CI.BAT: success for Ultrajoiner basic functionality series
2024-05-20 7:38 [PATCH 0/5] Ultrajoiner basic functionality series Stanislav Lisovskiy
` (5 preceding siblings ...)
2024-05-20 10:29 ` ✗ Fi.CI.CHECKPATCH: warning for Ultrajoiner basic functionality series Patchwork
@ 2024-05-20 10:40 ` Patchwork
2024-05-20 11:52 ` ✗ Fi.CI.IGT: failure " Patchwork
7 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2024-05-20 10:40 UTC (permalink / raw)
To: Stanislav Lisovskiy; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 5011 bytes --]
== Series Details ==
Series: Ultrajoiner basic functionality series
URL : https://patchwork.freedesktop.org/series/133800/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_14784 -> Patchwork_133800v1
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/index.html
Participating hosts (40 -> 40)
------------------------------
Additional (3): fi-kbl-7567u fi-kbl-8809g fi-elk-e7500
Missing (3): fi-cfl-8109u fi-snb-2520m bat-arls-3
Known issues
------------
Here are the changes found in Patchwork_133800v1 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_huc_copy@huc-copy:
- fi-kbl-7567u: NOTRUN -> [SKIP][1] ([i915#2190])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/fi-kbl-7567u/igt@gem_huc_copy@huc-copy.html
- fi-kbl-8809g: NOTRUN -> [SKIP][2] ([i915#2190])
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/fi-kbl-8809g/igt@gem_huc_copy@huc-copy.html
* igt@gem_lmem_swapping@basic:
- fi-kbl-7567u: NOTRUN -> [SKIP][3] ([i915#4613]) +3 other tests skip
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/fi-kbl-7567u/igt@gem_lmem_swapping@basic.html
- fi-kbl-8809g: NOTRUN -> [SKIP][4] ([i915#4613]) +3 other tests skip
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/fi-kbl-8809g/igt@gem_lmem_swapping@basic.html
* igt@kms_force_connector_basic@force-load-detect:
- fi-kbl-7567u: NOTRUN -> [SKIP][5] +11 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/fi-kbl-7567u/igt@kms_force_connector_basic@force-load-detect.html
- fi-kbl-8809g: NOTRUN -> [SKIP][6] +30 other tests skip
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/fi-kbl-8809g/igt@kms_force_connector_basic@force-load-detect.html
* igt@kms_pm_rpm@basic-pci-d3-state:
- fi-elk-e7500: NOTRUN -> [SKIP][7] +24 other tests skip
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/fi-elk-e7500/igt@kms_pm_rpm@basic-pci-d3-state.html
#### Possible fixes ####
* igt@i915_pm_rpm@module-reload:
- {bat-mtlp-9}: [WARN][8] ([i915#10436]) -> [PASS][9]
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/bat-mtlp-9/igt@i915_pm_rpm@module-reload.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/bat-mtlp-9/igt@i915_pm_rpm@module-reload.html
* igt@i915_selftest@live@workarounds:
- bat-dg2-9: [DMESG-FAIL][10] ([i915#9500]) -> [PASS][11]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/bat-dg2-9/igt@i915_selftest@live@workarounds.html
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/bat-dg2-9/igt@i915_selftest@live@workarounds.html
* igt@kms_flip@basic-plain-flip@a-dp6:
- {bat-mtlp-9}: [DMESG-WARN][12] ([i915#10435]) -> [PASS][13] +1 other test pass
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/bat-mtlp-9/igt@kms_flip@basic-plain-flip@a-dp6.html
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/bat-mtlp-9/igt@kms_flip@basic-plain-flip@a-dp6.html
* igt@kms_frontbuffer_tracking@basic:
- {bat-mtlp-9}: [DMESG-WARN][14] ([i915#10435] / [i915#9157]) -> [PASS][15]
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/bat-mtlp-9/igt@kms_frontbuffer_tracking@basic.html
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/bat-mtlp-9/igt@kms_frontbuffer_tracking@basic.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[i915#10212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10212
[i915#10214]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10214
[i915#10216]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10216
[i915#10435]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10435
[i915#10436]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10436
[i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
[i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
[i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
[i915#9157]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9157
[i915#9500]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9500
Build changes
-------------
* Linux: CI_DRM_14784 -> Patchwork_133800v1
CI-20190529: 20190529
CI_DRM_14784: 5e9e7440f7d7efd64079148c738fc83600fb477b @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_7861: 7861
Patchwork_133800v1: 5e9e7440f7d7efd64079148c738fc83600fb477b @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/index.html
[-- Attachment #2: Type: text/html, Size: 5750 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* ✗ Fi.CI.IGT: failure for Ultrajoiner basic functionality series
2024-05-20 7:38 [PATCH 0/5] Ultrajoiner basic functionality series Stanislav Lisovskiy
` (6 preceding siblings ...)
2024-05-20 10:40 ` ✓ Fi.CI.BAT: success " Patchwork
@ 2024-05-20 11:52 ` Patchwork
7 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2024-05-20 11:52 UTC (permalink / raw)
To: Stanislav Lisovskiy; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 81568 bytes --]
== Series Details ==
Series: Ultrajoiner basic functionality series
URL : https://patchwork.freedesktop.org/series/133800/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_14784_full -> Patchwork_133800v1_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_133800v1_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_133800v1_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_133800v1_full:
### IGT changes ###
#### Possible regressions ####
* igt@gem_exec_create@madvise@smem:
- shard-dg2: NOTRUN -> [INCOMPLETE][1]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@gem_exec_create@madvise@smem.html
* igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-b-hdmi-a-2:
- shard-glk: NOTRUN -> [INCOMPLETE][2]
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-glk3/igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-b-hdmi-a-2.html
* igt@sysfs_timeslice_duration@timeout@bcs0:
- shard-mtlp: [PASS][3] -> [TIMEOUT][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-mtlp-8/igt@sysfs_timeslice_duration@timeout@bcs0.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-3/igt@sysfs_timeslice_duration@timeout@bcs0.html
New tests
---------
New tests have been introduced between CI_DRM_14784_full and Patchwork_133800v1_full:
### New IGT tests (9) ###
* igt@kms_fb_coherency@memset-crc:
- Statuses :
- Exec time: [None] s
* igt@kms_fb_coherency@memset-crc@mmap-gtt:
- Statuses : 3 pass(s)
- Exec time: [0.24, 0.43] s
* igt@kms_fb_coherency@memset-crc@mmap-legacy-wc:
- Statuses : 3 pass(s)
- Exec time: [0.19, 0.35] s
* igt@kms_fb_coherency@memset-crc@mmap-offset-fixed:
- Statuses : 2 pass(s)
- Exec time: [0.50, 0.54] s
* igt@perf@blocking@1-vcs1:
- Statuses : 1 pass(s)
- Exec time: [10.02] s
* igt@perf@enable-disable@1-vcs0:
- Statuses : 1 pass(s)
- Exec time: [4.21] s
* igt@perf@oa-exponents@1-vecs0:
- Statuses : 1 pass(s)
- Exec time: [1.83] s
* igt@perf@polling@1-vcs0:
- Statuses : 1 pass(s)
- Exec time: [10.02] s
* igt@perf@stress-open-close@1-vcs1:
- Statuses : 1 pass(s)
- Exec time: [2.18] s
Known issues
------------
Here are the changes found in Patchwork_133800v1_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@drm_fdinfo@all-busy-idle-check-all:
- shard-dg1: NOTRUN -> [SKIP][5] ([i915#8414])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@drm_fdinfo@all-busy-idle-check-all.html
* igt@drm_fdinfo@most-busy-check-all@bcs0:
- shard-dg2: NOTRUN -> [SKIP][6] ([i915#8414]) +14 other tests skip
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@drm_fdinfo@most-busy-check-all@bcs0.html
* igt@drm_fdinfo@most-busy-check-all@vcs0:
- shard-mtlp: NOTRUN -> [SKIP][7] ([i915#8414]) +5 other tests skip
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@drm_fdinfo@most-busy-check-all@vcs0.html
* igt@drm_fdinfo@most-busy-idle-check-all@rcs0:
- shard-rkl: [PASS][8] -> [FAIL][9] ([i915#7742])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-rkl-5/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html
* igt@gem_ccs@block-copy-compressed:
- shard-tglu: NOTRUN -> [SKIP][10] ([i915#3555] / [i915#9323])
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-9/igt@gem_ccs@block-copy-compressed.html
* igt@gem_ccs@ctrl-surf-copy-new-ctx:
- shard-dg1: NOTRUN -> [SKIP][11] ([i915#9323])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@gem_ccs@ctrl-surf-copy-new-ctx.html
* igt@gem_ccs@suspend-resume:
- shard-rkl: NOTRUN -> [SKIP][12] ([i915#9323])
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-3/igt@gem_ccs@suspend-resume.html
* igt@gem_ctx_exec@basic-nohangcheck:
- shard-tglu: [PASS][13] -> [FAIL][14] ([i915#6268])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-tglu-9/igt@gem_ctx_exec@basic-nohangcheck.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-8/igt@gem_ctx_exec@basic-nohangcheck.html
* igt@gem_ctx_sseu@engines:
- shard-rkl: NOTRUN -> [SKIP][15] ([i915#280])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@gem_ctx_sseu@engines.html
* igt@gem_eio@reset-stress:
- shard-dg1: NOTRUN -> [FAIL][16] ([i915#5784])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@gem_eio@reset-stress.html
* igt@gem_exec_balancer@bonded-true-hang:
- shard-dg2: NOTRUN -> [SKIP][17] ([i915#4812])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@gem_exec_balancer@bonded-true-hang.html
- shard-mtlp: NOTRUN -> [SKIP][18] ([i915#4812])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@gem_exec_balancer@bonded-true-hang.html
* igt@gem_exec_balancer@parallel-contexts:
- shard-rkl: NOTRUN -> [SKIP][19] ([i915#4525])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@gem_exec_balancer@parallel-contexts.html
* igt@gem_exec_capture@capture-invisible@smem0:
- shard-glk: NOTRUN -> [SKIP][20] ([i915#6334])
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-glk1/igt@gem_exec_capture@capture-invisible@smem0.html
* igt@gem_exec_capture@capture-recoverable:
- shard-rkl: NOTRUN -> [SKIP][21] ([i915#6344])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@gem_exec_capture@capture-recoverable.html
- shard-tglu: NOTRUN -> [SKIP][22] ([i915#6344])
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-4/igt@gem_exec_capture@capture-recoverable.html
* igt@gem_exec_capture@many-4k-incremental:
- shard-dg2: NOTRUN -> [FAIL][23] ([i915#9606])
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@gem_exec_capture@many-4k-incremental.html
- shard-rkl: NOTRUN -> [FAIL][24] ([i915#9606])
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-3/igt@gem_exec_capture@many-4k-incremental.html
* igt@gem_exec_capture@many-4k-zero:
- shard-dg1: NOTRUN -> [FAIL][25] ([i915#9606])
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-14/igt@gem_exec_capture@many-4k-zero.html
- shard-glk: NOTRUN -> [FAIL][26] ([i915#9606])
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-glk5/igt@gem_exec_capture@many-4k-zero.html
* igt@gem_exec_endless@dispatch@bcs0:
- shard-dg2: [PASS][27] -> [TIMEOUT][28] ([i915#3778] / [i915#7016])
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-dg2-6/igt@gem_exec_endless@dispatch@bcs0.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@gem_exec_endless@dispatch@bcs0.html
* igt@gem_exec_fair@basic-none-rrul@rcs0:
- shard-glk: NOTRUN -> [FAIL][29] ([i915#2842]) +1 other test fail
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-glk6/igt@gem_exec_fair@basic-none-rrul@rcs0.html
* igt@gem_exec_fair@basic-none-vip:
- shard-mtlp: NOTRUN -> [SKIP][30] ([i915#4473] / [i915#4771])
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@gem_exec_fair@basic-none-vip.html
* igt@gem_exec_fair@basic-none-vip@rcs0:
- shard-rkl: NOTRUN -> [FAIL][31] ([i915#2842]) +1 other test fail
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-4/igt@gem_exec_fair@basic-none-vip@rcs0.html
* igt@gem_exec_fair@basic-pace@rcs0:
- shard-rkl: [PASS][32] -> [FAIL][33] ([i915#2842])
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-rkl-5/igt@gem_exec_fair@basic-pace@rcs0.html
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-6/igt@gem_exec_fair@basic-pace@rcs0.html
* igt@gem_exec_fair@basic-sync:
- shard-dg2: NOTRUN -> [SKIP][34] ([i915#3539])
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-11/igt@gem_exec_fair@basic-sync.html
* igt@gem_exec_flush@basic-uc-ro-default:
- shard-dg2: NOTRUN -> [SKIP][35] ([i915#3539] / [i915#4852]) +4 other tests skip
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@gem_exec_flush@basic-uc-ro-default.html
* igt@gem_exec_flush@basic-wb-pro-default:
- shard-dg1: NOTRUN -> [SKIP][36] ([i915#3539] / [i915#4852])
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@gem_exec_flush@basic-wb-pro-default.html
* igt@gem_exec_reloc@basic-cpu-read-active:
- shard-mtlp: NOTRUN -> [SKIP][37] ([i915#3281]) +1 other test skip
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@gem_exec_reloc@basic-cpu-read-active.html
* igt@gem_exec_reloc@basic-gtt-read-noreloc:
- shard-rkl: NOTRUN -> [SKIP][38] ([i915#3281]) +14 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-3/igt@gem_exec_reloc@basic-gtt-read-noreloc.html
* igt@gem_exec_reloc@basic-wc-cpu:
- shard-dg2: NOTRUN -> [SKIP][39] ([i915#3281]) +11 other tests skip
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-5/igt@gem_exec_reloc@basic-wc-cpu.html
- shard-dg1: NOTRUN -> [SKIP][40] ([i915#3281]) +4 other tests skip
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@gem_exec_reloc@basic-wc-cpu.html
* igt@gem_exec_schedule@preempt-queue-chain:
- shard-dg2: NOTRUN -> [SKIP][41] ([i915#4537] / [i915#4812]) +1 other test skip
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@gem_exec_schedule@preempt-queue-chain.html
* igt@gem_exec_schedule@preempt-queue-contexts-chain:
- shard-dg1: NOTRUN -> [SKIP][42] ([i915#4812])
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@gem_exec_schedule@preempt-queue-contexts-chain.html
* igt@gem_huc_copy@huc-copy:
- shard-tglu: NOTRUN -> [SKIP][43] ([i915#2190])
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-9/igt@gem_huc_copy@huc-copy.html
* igt@gem_lmem_swapping@heavy-multi:
- shard-rkl: NOTRUN -> [SKIP][44] ([i915#4613]) +1 other test skip
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-4/igt@gem_lmem_swapping@heavy-multi.html
- shard-mtlp: NOTRUN -> [SKIP][45] ([i915#4613])
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@gem_lmem_swapping@heavy-multi.html
* igt@gem_lmem_swapping@heavy-verify-multi-ccs@lmem0:
- shard-dg2: [PASS][46] -> [FAIL][47] ([i915#10378])
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-dg2-2/igt@gem_lmem_swapping@heavy-verify-multi-ccs@lmem0.html
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-11/igt@gem_lmem_swapping@heavy-verify-multi-ccs@lmem0.html
* igt@gem_lmem_swapping@heavy-verify-multi@lmem0:
- shard-dg1: NOTRUN -> [FAIL][48] ([i915#10378])
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@gem_lmem_swapping@heavy-verify-multi@lmem0.html
- shard-dg2: NOTRUN -> [FAIL][49] ([i915#10378])
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-5/igt@gem_lmem_swapping@heavy-verify-multi@lmem0.html
* igt@gem_lmem_swapping@smem-oom:
- shard-glk: NOTRUN -> [SKIP][50] ([i915#4613]) +3 other tests skip
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-glk3/igt@gem_lmem_swapping@smem-oom.html
* igt@gem_mmap_gtt@bad-object:
- shard-mtlp: NOTRUN -> [SKIP][51] ([i915#4077]) +1 other test skip
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@gem_mmap_gtt@bad-object.html
* igt@gem_mmap_gtt@cpuset-basic-small-copy-odd:
- shard-dg1: NOTRUN -> [SKIP][52] ([i915#4077]) +7 other tests skip
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@gem_mmap_gtt@cpuset-basic-small-copy-odd.html
* igt@gem_mmap_wc@write-read:
- shard-dg1: NOTRUN -> [SKIP][53] ([i915#4083])
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@gem_mmap_wc@write-read.html
- shard-dg2: NOTRUN -> [SKIP][54] ([i915#4083]) +1 other test skip
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-5/igt@gem_mmap_wc@write-read.html
* igt@gem_partial_pwrite_pread@reads-uncached:
- shard-dg2: NOTRUN -> [SKIP][55] ([i915#3282]) +7 other tests skip
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@gem_partial_pwrite_pread@reads-uncached.html
* igt@gem_pread@bench:
- shard-rkl: NOTRUN -> [SKIP][56] ([i915#3282]) +9 other tests skip
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-4/igt@gem_pread@bench.html
* igt@gem_pxp@create-valid-protected-context:
- shard-dg1: NOTRUN -> [SKIP][57] ([i915#4270]) +1 other test skip
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@gem_pxp@create-valid-protected-context.html
* igt@gem_pxp@display-protected-crc:
- shard-rkl: NOTRUN -> [SKIP][58] ([i915#4270]) +2 other tests skip
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@gem_pxp@display-protected-crc.html
* igt@gem_pxp@regular-baseline-src-copy-readible:
- shard-dg2: NOTRUN -> [SKIP][59] ([i915#4270]) +3 other tests skip
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-11/igt@gem_pxp@regular-baseline-src-copy-readible.html
* igt@gem_readwrite@read-bad-handle:
- shard-mtlp: NOTRUN -> [SKIP][60] ([i915#3282]) +2 other tests skip
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@gem_readwrite@read-bad-handle.html
* igt@gem_render_copy@yf-tiled-ccs-to-yf-tiled:
- shard-mtlp: NOTRUN -> [SKIP][61] ([i915#8428]) +1 other test skip
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@gem_render_copy@yf-tiled-ccs-to-yf-tiled.html
* igt@gem_render_copy@yf-tiled-to-vebox-x-tiled:
- shard-dg2: NOTRUN -> [SKIP][62] ([i915#5190] / [i915#8428]) +4 other tests skip
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-5/igt@gem_render_copy@yf-tiled-to-vebox-x-tiled.html
* igt@gem_set_tiling_vs_blt@untiled-to-tiled:
- shard-rkl: NOTRUN -> [SKIP][63] ([i915#8411])
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@gem_set_tiling_vs_blt@untiled-to-tiled.html
* igt@gem_tiled_partial_pwrite_pread@writes:
- shard-dg2: NOTRUN -> [SKIP][64] ([i915#4077]) +13 other tests skip
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@gem_tiled_partial_pwrite_pread@writes.html
* igt@gem_tiled_pread_basic:
- shard-mtlp: NOTRUN -> [SKIP][65] ([i915#4079])
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@gem_tiled_pread_basic.html
- shard-dg2: NOTRUN -> [SKIP][66] ([i915#4079]) +1 other test skip
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@gem_tiled_pread_basic.html
* igt@gem_userptr_blits@dmabuf-unsync:
- shard-tglu: NOTRUN -> [SKIP][67] ([i915#3297])
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-9/igt@gem_userptr_blits@dmabuf-unsync.html
* igt@gem_userptr_blits@map-fixed-invalidate-overlap:
- shard-mtlp: NOTRUN -> [SKIP][68] ([i915#3297]) +1 other test skip
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@gem_userptr_blits@map-fixed-invalidate-overlap.html
* igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy:
- shard-dg2: NOTRUN -> [SKIP][69] ([i915#3297] / [i915#4880]) +2 other tests skip
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-5/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy.html
- shard-dg1: NOTRUN -> [SKIP][70] ([i915#3297] / [i915#4880])
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy.html
* igt@gem_userptr_blits@sd-probe:
- shard-dg2: NOTRUN -> [SKIP][71] ([i915#3297] / [i915#4958])
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@gem_userptr_blits@sd-probe.html
* igt@gen3_render_tiledy_blits:
- shard-mtlp: NOTRUN -> [SKIP][72] +6 other tests skip
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@gen3_render_tiledy_blits.html
* igt@gen7_exec_parse@basic-allowed:
- shard-snb: NOTRUN -> [SKIP][73] +40 other tests skip
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-snb7/igt@gen7_exec_parse@basic-allowed.html
* igt@gen7_exec_parse@chained-batch:
- shard-rkl: NOTRUN -> [SKIP][74] +38 other tests skip
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@gen7_exec_parse@chained-batch.html
* igt@gen9_exec_parse@batch-without-end:
- shard-dg1: NOTRUN -> [SKIP][75] ([i915#2527])
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@gen9_exec_parse@batch-without-end.html
* igt@gen9_exec_parse@bb-chained:
- shard-rkl: NOTRUN -> [SKIP][76] ([i915#2527]) +3 other tests skip
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-3/igt@gen9_exec_parse@bb-chained.html
* igt@gen9_exec_parse@secure-batches:
- shard-mtlp: NOTRUN -> [SKIP][77] ([i915#2856])
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@gen9_exec_parse@secure-batches.html
* igt@gen9_exec_parse@valid-registers:
- shard-dg2: NOTRUN -> [SKIP][78] ([i915#2856]) +4 other tests skip
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@gen9_exec_parse@valid-registers.html
* igt@i915_module_load@load:
- shard-dg1: NOTRUN -> [SKIP][79] ([i915#6227])
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@i915_module_load@load.html
- shard-dg2: NOTRUN -> [SKIP][80] ([i915#6227])
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-5/igt@i915_module_load@load.html
* igt@i915_module_load@reload-with-fault-injection:
- shard-dg1: [PASS][81] -> [ABORT][82] ([i915#9820])
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-dg1-17/igt@i915_module_load@reload-with-fault-injection.html
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-13/igt@i915_module_load@reload-with-fault-injection.html
* igt@i915_pm_freq_mult@media-freq@gt0:
- shard-rkl: NOTRUN -> [SKIP][83] ([i915#6590])
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@i915_pm_freq_mult@media-freq@gt0.html
- shard-tglu: NOTRUN -> [SKIP][84] ([i915#6590])
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-4/igt@i915_pm_freq_mult@media-freq@gt0.html
* igt@intel_hwmon@hwmon-read:
- shard-tglu: NOTRUN -> [SKIP][85] ([i915#7707])
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-9/igt@intel_hwmon@hwmon-read.html
* igt@kms_addfb_basic@bo-too-small-due-to-tiling:
- shard-mtlp: NOTRUN -> [SKIP][86] ([i915#4212])
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_addfb_basic@bo-too-small-due-to-tiling.html
- shard-dg2: NOTRUN -> [SKIP][87] ([i915#4212])
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@kms_addfb_basic@bo-too-small-due-to-tiling.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-edp-1-4-rc-ccs-cc:
- shard-mtlp: NOTRUN -> [SKIP][88] ([i915#8709]) +11 other tests skip
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-edp-1-4-rc-ccs-cc.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-hdmi-a-1-y-rc-ccs-cc:
- shard-rkl: NOTRUN -> [SKIP][89] ([i915#8709]) +3 other tests skip
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-4/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-hdmi-a-1-y-rc-ccs-cc.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-d-hdmi-a-3-4-mc-ccs:
- shard-dg2: NOTRUN -> [SKIP][90] ([i915#8709]) +11 other tests skip
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-d-hdmi-a-3-4-mc-ccs.html
* igt@kms_atomic@plane-primary-overlay-mutable-zpos:
- shard-dg2: NOTRUN -> [SKIP][91] ([i915#9531])
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-5/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html
- shard-dg1: NOTRUN -> [SKIP][92] ([i915#9531])
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html
* igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels:
- shard-glk: NOTRUN -> [SKIP][93] ([i915#1769])
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-glk5/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html
* igt@kms_big_fb@4-tiled-64bpp-rotate-0:
- shard-rkl: NOTRUN -> [SKIP][94] ([i915#5286]) +3 other tests skip
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@kms_big_fb@4-tiled-64bpp-rotate-0.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-dg1: NOTRUN -> [SKIP][95] ([i915#4538] / [i915#5286])
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
- shard-tglu: NOTRUN -> [SKIP][96] ([i915#5286])
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-9/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
* igt@kms_big_fb@linear-16bpp-rotate-270:
- shard-rkl: NOTRUN -> [SKIP][97] ([i915#3638]) +2 other tests skip
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-4/igt@kms_big_fb@linear-16bpp-rotate-270.html
* igt@kms_big_fb@linear-8bpp-rotate-270:
- shard-dg1: NOTRUN -> [SKIP][98] ([i915#3638]) +1 other test skip
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@kms_big_fb@linear-8bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
- shard-dg2: NOTRUN -> [SKIP][99] ([i915#4538] / [i915#5190]) +9 other tests skip
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0:
- shard-dg1: NOTRUN -> [SKIP][100] ([i915#4538]) +1 other test skip
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-14/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0.html
* igt@kms_big_joiner@basic-force-joiner:
- shard-mtlp: NOTRUN -> [SKIP][101] ([i915#10656]) +1 other test skip
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-1/igt@kms_big_joiner@basic-force-joiner.html
* igt@kms_big_joiner@invalid-modeset:
- shard-dg2: NOTRUN -> [SKIP][102] ([i915#10656])
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-11/igt@kms_big_joiner@invalid-modeset.html
* igt@kms_ccs@bad-aux-stride-y-tiled-ccs@pipe-c-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][103] ([i915#6095]) +91 other tests skip
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-17/igt@kms_ccs@bad-aux-stride-y-tiled-ccs@pipe-c-hdmi-a-4.html
* igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs@pipe-a-hdmi-a-1:
- shard-tglu: NOTRUN -> [SKIP][104] ([i915#6095]) +11 other tests skip
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-4/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs@pipe-a-hdmi-a-1.html
* igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs@pipe-c-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][105] ([i915#6095]) +7 other tests skip
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs@pipe-c-edp-1.html
* igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-a-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][106] ([i915#10307] / [i915#6095]) +151 other tests skip
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-7/igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-a-hdmi-a-3.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-xe2-ccs:
- shard-dg2: NOTRUN -> [SKIP][107] ([i915#10278]) +1 other test skip
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@kms_ccs@crc-primary-rotation-180-4-tiled-xe2-ccs.html
- shard-rkl: NOTRUN -> [SKIP][108] ([i915#10278])
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-3/igt@kms_ccs@crc-primary-rotation-180-4-tiled-xe2-ccs.html
* igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs@pipe-b-hdmi-a-1:
- shard-rkl: NOTRUN -> [SKIP][109] ([i915#6095]) +71 other tests skip
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-4/igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs@pipe-b-hdmi-a-1.html
* igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-d-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][110] ([i915#10307] / [i915#10434] / [i915#6095]) +3 other tests skip
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-4/igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-d-hdmi-a-1.html
* igt@kms_cdclk@mode-transition:
- shard-rkl: NOTRUN -> [SKIP][111] ([i915#3742])
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-4/igt@kms_cdclk@mode-transition.html
* igt@kms_cdclk@mode-transition@pipe-b-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][112] ([i915#7213] / [i915#9010]) +3 other tests skip
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_cdclk@mode-transition@pipe-b-edp-1.html
* igt@kms_cdclk@mode-transition@pipe-d-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][113] ([i915#7213]) +3 other tests skip
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@kms_cdclk@mode-transition@pipe-d-hdmi-a-3.html
* igt@kms_chamelium_audio@hdmi-audio-edid:
- shard-dg1: NOTRUN -> [SKIP][114] ([i915#7828]) +2 other tests skip
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@kms_chamelium_audio@hdmi-audio-edid.html
* igt@kms_chamelium_edid@hdmi-edid-change-during-suspend:
- shard-rkl: NOTRUN -> [SKIP][115] ([i915#7828]) +8 other tests skip
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-3/igt@kms_chamelium_edid@hdmi-edid-change-during-suspend.html
* igt@kms_chamelium_frames@hdmi-aspect-ratio:
- shard-tglu: NOTRUN -> [SKIP][116] ([i915#7828]) +2 other tests skip
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-4/igt@kms_chamelium_frames@hdmi-aspect-ratio.html
* igt@kms_chamelium_frames@hdmi-cmp-planar-formats:
- shard-dg2: NOTRUN -> [SKIP][117] ([i915#7828]) +8 other tests skip
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@kms_chamelium_frames@hdmi-cmp-planar-formats.html
* igt@kms_chamelium_hpd@vga-hpd-without-ddc:
- shard-mtlp: NOTRUN -> [SKIP][118] ([i915#7828]) +1 other test skip
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_chamelium_hpd@vga-hpd-without-ddc.html
* igt@kms_content_protection@atomic-dpms:
- shard-tglu: NOTRUN -> [SKIP][119] ([i915#6944] / [i915#7116] / [i915#7118] / [i915#9424])
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-4/igt@kms_content_protection@atomic-dpms.html
- shard-rkl: NOTRUN -> [SKIP][120] ([i915#7118] / [i915#9424])
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@kms_content_protection@atomic-dpms.html
* igt@kms_content_protection@content-type-change:
- shard-tglu: NOTRUN -> [SKIP][121] ([i915#6944] / [i915#9424])
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-9/igt@kms_content_protection@content-type-change.html
* igt@kms_content_protection@dp-mst-type-0:
- shard-rkl: NOTRUN -> [SKIP][122] ([i915#3116])
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-2/igt@kms_content_protection@dp-mst-type-0.html
* igt@kms_content_protection@lic-type-0:
- shard-mtlp: NOTRUN -> [SKIP][123] ([i915#6944] / [i915#9424])
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_content_protection@lic-type-0.html
- shard-dg2: NOTRUN -> [SKIP][124] ([i915#9424])
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@kms_content_protection@lic-type-0.html
- shard-rkl: NOTRUN -> [SKIP][125] ([i915#9424])
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-4/igt@kms_content_protection@lic-type-0.html
* igt@kms_content_protection@mei-interface:
- shard-rkl: NOTRUN -> [SKIP][126] ([i915#8063])
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@kms_content_protection@mei-interface.html
- shard-tglu: NOTRUN -> [SKIP][127] ([i915#8063])
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-4/igt@kms_content_protection@mei-interface.html
* igt@kms_content_protection@srm:
- shard-dg2: NOTRUN -> [SKIP][128] ([i915#7118])
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-5/igt@kms_content_protection@srm.html
- shard-dg1: NOTRUN -> [SKIP][129] ([i915#7116])
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@kms_content_protection@srm.html
* igt@kms_cursor_crc@cursor-offscreen-64x21:
- shard-mtlp: NOTRUN -> [SKIP][130] ([i915#8814])
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_cursor_crc@cursor-offscreen-64x21.html
* igt@kms_cursor_crc@cursor-random-512x512:
- shard-dg2: NOTRUN -> [SKIP][131] ([i915#3359]) +1 other test skip
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@kms_cursor_crc@cursor-random-512x512.html
- shard-rkl: NOTRUN -> [SKIP][132] ([i915#3359]) +1 other test skip
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-4/igt@kms_cursor_crc@cursor-random-512x512.html
- shard-mtlp: NOTRUN -> [SKIP][133] ([i915#3359])
[133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_cursor_crc@cursor-random-512x512.html
* igt@kms_cursor_crc@cursor-rapid-movement-32x10:
- shard-rkl: NOTRUN -> [SKIP][134] ([i915#3555]) +5 other tests skip
[134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html
- shard-tglu: NOTRUN -> [SKIP][135] ([i915#3555]) +1 other test skip
[135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-4/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
- shard-rkl: NOTRUN -> [SKIP][136] ([i915#4103]) +2 other tests skip
[136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-3/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
- shard-dg2: NOTRUN -> [SKIP][137] ([i915#4103] / [i915#4213])
[137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
* igt@kms_cursor_legacy@cursora-vs-flipb-legacy:
- shard-mtlp: NOTRUN -> [SKIP][138] ([i915#9809])
[138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_cursor_legacy@cursora-vs-flipb-legacy.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
- shard-glk: NOTRUN -> [FAIL][139] ([i915#2346])
[139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-glk6/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
* igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot:
- shard-dg2: NOTRUN -> [SKIP][140] ([i915#9067])
[140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html
- shard-rkl: NOTRUN -> [SKIP][141] ([i915#9067])
[141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-3/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html
* igt@kms_display_modes@mst-extended-mode-negative:
- shard-rkl: NOTRUN -> [SKIP][142] ([i915#8588])
[142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@kms_display_modes@mst-extended-mode-negative.html
- shard-tglu: NOTRUN -> [SKIP][143] ([i915#8588])
[143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-4/igt@kms_display_modes@mst-extended-mode-negative.html
* igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][144] ([i915#3804])
[144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-6/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-2.html
* igt@kms_dsc@dsc-basic:
- shard-dg2: NOTRUN -> [SKIP][145] ([i915#3555] / [i915#3840])
[145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@kms_dsc@dsc-basic.html
- shard-rkl: NOTRUN -> [SKIP][146] ([i915#3555] / [i915#3840])
[146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-3/igt@kms_dsc@dsc-basic.html
* igt@kms_dsc@dsc-fractional-bpp-with-bpc:
- shard-dg2: NOTRUN -> [SKIP][147] ([i915#3840])
[147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html
- shard-rkl: NOTRUN -> [SKIP][148] ([i915#3840])
[148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-4/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html
- shard-mtlp: NOTRUN -> [SKIP][149] ([i915#3840])
[149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html
* igt@kms_feature_discovery@dp-mst:
- shard-dg2: NOTRUN -> [SKIP][150] ([i915#9337])
[150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-5/igt@kms_feature_discovery@dp-mst.html
- shard-dg1: NOTRUN -> [SKIP][151] ([i915#9337])
[151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@kms_feature_discovery@dp-mst.html
* igt@kms_fence_pin_leak:
- shard-dg2: NOTRUN -> [SKIP][152] ([i915#4881])
[152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-11/igt@kms_fence_pin_leak.html
* igt@kms_flip@2x-blocking-absolute-wf_vblank:
- shard-tglu: NOTRUN -> [SKIP][153] ([i915#3637]) +3 other tests skip
[153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-4/igt@kms_flip@2x-blocking-absolute-wf_vblank.html
* igt@kms_flip@2x-flip-vs-absolute-wf_vblank:
- shard-dg1: NOTRUN -> [SKIP][154] ([i915#9934])
[154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@kms_flip@2x-flip-vs-absolute-wf_vblank.html
* igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible:
- shard-tglu: NOTRUN -> [SKIP][155] ([i915#3637] / [i915#3966])
[155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-9/igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible.html
* igt@kms_flip@wf_vblank-ts-check-interruptible@b-hdmi-a2:
- shard-dg2: NOTRUN -> [FAIL][156] ([i915#2122]) +1 other test fail
[156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-2/igt@kms_flip@wf_vblank-ts-check-interruptible@b-hdmi-a2.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-default-mode:
- shard-mtlp: NOTRUN -> [SKIP][157] ([i915#2672])
[157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode:
- shard-rkl: NOTRUN -> [SKIP][158] ([i915#2672]) +1 other test skip
[158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-4/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling@pipe-a-valid-mode:
- shard-dg2: NOTRUN -> [SKIP][159] ([i915#2672]) +3 other tests skip
[159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling@pipe-a-valid-mode.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-cpu:
- shard-dg2: NOTRUN -> [FAIL][160] ([i915#6880])
[160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-11/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-render:
- shard-snb: [PASS][161] -> [SKIP][162]
[161]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-snb7/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-render.html
[162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-snb5/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-pwrite:
- shard-mtlp: NOTRUN -> [SKIP][163] ([i915#1825]) +7 other tests skip
[163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-pgflip-blt:
- shard-rkl: NOTRUN -> [SKIP][164] ([i915#1825]) +34 other tests skip
[164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-wc:
- shard-dg2: NOTRUN -> [SKIP][165] ([i915#8708]) +18 other tests skip
[165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render:
- shard-dg2: NOTRUN -> [SKIP][166] ([i915#5354]) +26 other tests skip
[166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-11/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsr-tiling-y:
- shard-dg2: NOTRUN -> [SKIP][167] ([i915#10055]) +1 other test skip
[167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-5/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html
* igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-mmap-cpu:
- shard-dg1: NOTRUN -> [SKIP][168] ([i915#3458]) +3 other tests skip
[168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc:
- shard-dg1: NOTRUN -> [SKIP][169] ([i915#8708]) +4 other tests skip
[169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt:
- shard-rkl: NOTRUN -> [SKIP][170] ([i915#3023]) +24 other tests skip
[170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-mmap-gtt:
- shard-mtlp: NOTRUN -> [SKIP][171] ([i915#8708]) +1 other test skip
[171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-blt:
- shard-dg2: NOTRUN -> [SKIP][172] ([i915#3458]) +15 other tests skip
[172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-pwrite:
- shard-dg1: NOTRUN -> [SKIP][173] +10 other tests skip
[173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@psr-shrfb-scaledprimary:
- shard-tglu: NOTRUN -> [SKIP][174] +22 other tests skip
[174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-9/igt@kms_frontbuffer_tracking@psr-shrfb-scaledprimary.html
* igt@kms_hdr@bpc-switch-suspend:
- shard-tglu: NOTRUN -> [SKIP][175] ([i915#3555] / [i915#8228])
[175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-4/igt@kms_hdr@bpc-switch-suspend.html
* igt@kms_hdr@static-toggle-dpms:
- shard-mtlp: NOTRUN -> [SKIP][176] ([i915#3555] / [i915#8228])
[176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_hdr@static-toggle-dpms.html
- shard-dg2: NOTRUN -> [SKIP][177] ([i915#3555] / [i915#8228])
[177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@kms_hdr@static-toggle-dpms.html
- shard-rkl: NOTRUN -> [SKIP][178] ([i915#3555] / [i915#8228]) +1 other test skip
[178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-4/igt@kms_hdr@static-toggle-dpms.html
* igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
- shard-dg2: NOTRUN -> [SKIP][179] ([i915#4816])
[179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
- shard-rkl: NOTRUN -> [SKIP][180] ([i915#4816])
[180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-3/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
* igt@kms_pipe_b_c_ivb@from-pipe-c-to-b-with-3-lanes:
- shard-dg2: NOTRUN -> [SKIP][181] +16 other tests skip
[181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@kms_pipe_b_c_ivb@from-pipe-c-to-b-with-3-lanes.html
* igt@kms_plane_alpha_blend@alpha-basic@pipe-c-hdmi-a-1:
- shard-glk: NOTRUN -> [FAIL][182] ([i915#7862]) +1 other test fail
[182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-glk1/igt@kms_plane_alpha_blend@alpha-basic@pipe-c-hdmi-a-1.html
* igt@kms_plane_multiple@tiling-y:
- shard-dg2: NOTRUN -> [SKIP][183] ([i915#8806])
[183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-11/igt@kms_plane_multiple@tiling-y.html
* igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-a-hdmi-a-2:
- shard-dg2: NOTRUN -> [SKIP][184] ([i915#9423]) +3 other tests skip
[184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-2/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-a-hdmi-a-2.html
* igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation@pipe-a-hdmi-a-1:
- shard-tglu: NOTRUN -> [SKIP][185] ([i915#9423]) +3 other tests skip
[185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-4/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation@pipe-a-hdmi-a-1.html
* igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][186] ([i915#9423]) +7 other tests skip
[186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-6/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a-hdmi-a-2.html
* igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-d-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][187] ([i915#9423]) +7 other tests skip
[187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-17/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-d-hdmi-a-4.html
* igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][188] ([i915#5176] / [i915#9423]) +1 other test skip
[188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-6/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b-hdmi-a-2.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-b-hdmi-a-1:
- shard-rkl: NOTRUN -> [SKIP][189] ([i915#5235]) +5 other tests skip
[189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-b-hdmi-a-1.html
* igt@kms_plane_scaling@planes-downscale-factor-0-75@pipe-a-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][190] ([i915#5235]) +2 other tests skip
[190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_plane_scaling@planes-downscale-factor-0-75@pipe-a-edp-1.html
* igt@kms_plane_scaling@planes-downscale-factor-0-75@pipe-d-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][191] ([i915#3555] / [i915#5235])
[191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_plane_scaling@planes-downscale-factor-0-75@pipe-d-edp-1.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-c-hdmi-a-3:
- shard-dg1: NOTRUN -> [SKIP][192] ([i915#5235]) +15 other tests skip
[192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-13/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-c-hdmi-a-3.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-d-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][193] ([i915#5235] / [i915#9423]) +19 other tests skip
[193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-d-hdmi-a-1.html
* igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-a-hdmi-a-1:
- shard-glk: NOTRUN -> [SKIP][194] +256 other tests skip
[194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-glk6/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-a-hdmi-a-1.html
* igt@kms_pm_backlight@bad-brightness:
- shard-rkl: NOTRUN -> [SKIP][195] ([i915#5354]) +1 other test skip
[195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@kms_pm_backlight@bad-brightness.html
- shard-tglu: NOTRUN -> [SKIP][196] ([i915#9812])
[196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-4/igt@kms_pm_backlight@bad-brightness.html
* igt@kms_pm_lpsp@kms-lpsp:
- shard-dg2: NOTRUN -> [SKIP][197] ([i915#9340])
[197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@kms_pm_lpsp@kms-lpsp.html
* igt@kms_pm_rpm@modeset-lpsp:
- shard-dg2: NOTRUN -> [SKIP][198] ([i915#9519])
[198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@kms_pm_rpm@modeset-lpsp.html
* igt@kms_pm_rpm@modeset-non-lpsp-stress:
- shard-dg2: [PASS][199] -> [SKIP][200] ([i915#9519]) +1 other test skip
[199]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-dg2-7/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
[200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-8/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
- shard-rkl: NOTRUN -> [SKIP][201] ([i915#9519])
[201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-2/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
* igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
- shard-rkl: [PASS][202] -> [SKIP][203] ([i915#9519])
[202]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-rkl-6/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
[203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-2/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
* igt@kms_prime@d3hot:
- shard-dg2: NOTRUN -> [SKIP][204] ([i915#6524] / [i915#6805])
[204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-11/igt@kms_prime@d3hot.html
* igt@kms_psr2_su@frontbuffer-xrgb8888:
- shard-rkl: NOTRUN -> [SKIP][205] ([i915#9683]) +1 other test skip
[205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@kms_psr2_su@frontbuffer-xrgb8888.html
* igt@kms_psr2_su@page_flip-nv12:
- shard-mtlp: NOTRUN -> [SKIP][206] ([i915#4348])
[206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_psr2_su@page_flip-nv12.html
- shard-dg2: NOTRUN -> [SKIP][207] ([i915#9683])
[207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@kms_psr2_su@page_flip-nv12.html
* igt@kms_psr@fbc-pr-primary-blt:
- shard-dg1: NOTRUN -> [SKIP][208] ([i915#1072] / [i915#9732]) +5 other tests skip
[208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@kms_psr@fbc-pr-primary-blt.html
* igt@kms_psr@fbc-psr-cursor-plane-move:
- shard-dg2: NOTRUN -> [SKIP][209] ([i915#1072] / [i915#9732]) +15 other tests skip
[209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@kms_psr@fbc-psr-cursor-plane-move.html
* igt@kms_psr@fbc-psr2-cursor-plane-move:
- shard-tglu: NOTRUN -> [SKIP][210] ([i915#9732]) +6 other tests skip
[210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-4/igt@kms_psr@fbc-psr2-cursor-plane-move.html
* igt@kms_psr@pr-no-drrs:
- shard-mtlp: NOTRUN -> [SKIP][211] ([i915#9688]) +2 other tests skip
[211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_psr@pr-no-drrs.html
* igt@kms_psr@pr-sprite-mmap-gtt:
- shard-rkl: NOTRUN -> [SKIP][212] ([i915#1072] / [i915#9732]) +23 other tests skip
[212]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-3/igt@kms_psr@pr-sprite-mmap-gtt.html
* igt@kms_psr@psr-sprite-render:
- shard-dg2: NOTRUN -> [SKIP][213] ([i915#1072] / [i915#9673] / [i915#9732]) +4 other tests skip
[213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-11/igt@kms_psr@psr-sprite-render.html
* igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
- shard-dg1: NOTRUN -> [SKIP][214] ([i915#9685])
[214]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-14/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
* igt@kms_rotation_crc@exhaust-fences:
- shard-dg1: NOTRUN -> [SKIP][215] ([i915#4884])
[215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@kms_rotation_crc@exhaust-fences.html
* igt@kms_rotation_crc@primary-rotation-270:
- shard-dg2: NOTRUN -> [SKIP][216] ([i915#4235]) +2 other tests skip
[216]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@kms_rotation_crc@primary-rotation-270.html
- shard-mtlp: NOTRUN -> [SKIP][217] ([i915#4235])
[217]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_rotation_crc@primary-rotation-270.html
* igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
- shard-dg2: NOTRUN -> [SKIP][218] ([i915#4235] / [i915#5190])
[218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-5/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
* igt@kms_scaling_modes@scaling-mode-center:
- shard-dg1: NOTRUN -> [SKIP][219] ([i915#3555])
[219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@kms_scaling_modes@scaling-mode-center.html
* igt@kms_setmode@basic-clone-single-crtc:
- shard-dg2: NOTRUN -> [SKIP][220] ([i915#3555]) +4 other tests skip
[220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@kms_setmode@basic-clone-single-crtc.html
* igt@kms_setmode@invalid-clone-single-crtc:
- shard-mtlp: NOTRUN -> [SKIP][221] ([i915#3555] / [i915#8809])
[221]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_setmode@invalid-clone-single-crtc.html
* igt@kms_sysfs_edid_timing:
- shard-dg2: NOTRUN -> [FAIL][222] ([IGT#2])
[222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-5/igt@kms_sysfs_edid_timing.html
- shard-dg1: NOTRUN -> [FAIL][223] ([IGT#2] / [i915#6493])
[223]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@kms_sysfs_edid_timing.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-glk: NOTRUN -> [FAIL][224] ([i915#10959])
[224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-glk6/igt@kms_tiled_display@basic-test-pattern.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-rkl: NOTRUN -> [SKIP][225] ([i915#8623])
[225]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-3/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
- shard-dg2: NOTRUN -> [SKIP][226] ([i915#8623])
[226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1:
- shard-tglu: [PASS][227] -> [FAIL][228] ([i915#9196])
[227]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-tglu-6/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1.html
[228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-4/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-4:
- shard-dg1: NOTRUN -> [FAIL][229] ([i915#9196])
[229]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-17/igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-4.html
* igt@kms_writeback@writeback-invalid-parameters:
- shard-glk: NOTRUN -> [SKIP][230] ([i915#2437])
[230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-glk5/igt@kms_writeback@writeback-invalid-parameters.html
* igt@kms_writeback@writeback-pixel-formats:
- shard-mtlp: NOTRUN -> [SKIP][231] ([i915#2437] / [i915#9412])
[231]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@kms_writeback@writeback-pixel-formats.html
- shard-dg2: NOTRUN -> [SKIP][232] ([i915#2437] / [i915#9412])
[232]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@kms_writeback@writeback-pixel-formats.html
- shard-rkl: NOTRUN -> [SKIP][233] ([i915#2437] / [i915#9412])
[233]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-4/igt@kms_writeback@writeback-pixel-formats.html
* igt@perf@gen8-unprivileged-single-ctx-counters:
- shard-dg2: NOTRUN -> [SKIP][234] ([i915#2436])
[234]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@perf@gen8-unprivileged-single-ctx-counters.html
- shard-rkl: NOTRUN -> [SKIP][235] ([i915#2436])
[235]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-3/igt@perf@gen8-unprivileged-single-ctx-counters.html
* igt@perf@per-context-mode-unprivileged:
- shard-rkl: NOTRUN -> [SKIP][236] ([i915#2435])
[236]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-3/igt@perf@per-context-mode-unprivileged.html
* igt@perf_pmu@busy-double-start@vecs1:
- shard-dg2: [PASS][237] -> [FAIL][238] ([i915#4349]) +3 other tests fail
[237]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-dg2-6/igt@perf_pmu@busy-double-start@vecs1.html
[238]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-4/igt@perf_pmu@busy-double-start@vecs1.html
* igt@perf_pmu@rc6-all-gts:
- shard-dg2: NOTRUN -> [SKIP][239] ([i915#8516])
[239]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@perf_pmu@rc6-all-gts.html
- shard-rkl: NOTRUN -> [SKIP][240] ([i915#8516])
[240]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-4/igt@perf_pmu@rc6-all-gts.html
* igt@prime_vgem@fence-read-hang:
- shard-rkl: NOTRUN -> [SKIP][241] ([i915#3708]) +1 other test skip
[241]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@prime_vgem@fence-read-hang.html
* igt@prime_vgem@fence-write-hang:
- shard-dg2: NOTRUN -> [SKIP][242] ([i915#3708])
[242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@prime_vgem@fence-write-hang.html
* igt@v3d/v3d_get_bo_offset@get-bad-handle:
- shard-dg2: NOTRUN -> [SKIP][243] ([i915#2575]) +10 other tests skip
[243]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@v3d/v3d_get_bo_offset@get-bad-handle.html
* igt@v3d/v3d_submit_csd@bad-perfmon:
- shard-mtlp: NOTRUN -> [SKIP][244] ([i915#2575]) +2 other tests skip
[244]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@v3d/v3d_submit_csd@bad-perfmon.html
* igt@v3d/v3d_submit_csd@multisync-out-syncs:
- shard-dg1: NOTRUN -> [SKIP][245] ([i915#2575]) +2 other tests skip
[245]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-18/igt@v3d/v3d_submit_csd@multisync-out-syncs.html
* igt@vc4/vc4_label_bo@set-bad-handle:
- shard-mtlp: NOTRUN -> [SKIP][246] ([i915#7711]) +1 other test skip
[246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-2/igt@vc4/vc4_label_bo@set-bad-handle.html
* igt@vc4/vc4_label_bo@set-label:
- shard-dg1: NOTRUN -> [SKIP][247] ([i915#7711]) +3 other tests skip
[247]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-14/igt@vc4/vc4_label_bo@set-label.html
* igt@vc4/vc4_perfmon@create-two-perfmon:
- shard-rkl: NOTRUN -> [SKIP][248] ([i915#7711]) +6 other tests skip
[248]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@vc4/vc4_perfmon@create-two-perfmon.html
* igt@vc4/vc4_tiling@set-bad-modifier:
- shard-dg2: NOTRUN -> [SKIP][249] ([i915#7711]) +7 other tests skip
[249]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-5/igt@vc4/vc4_tiling@set-bad-modifier.html
* igt@vc4/vc4_wait_seqno@bad-seqno-0ns:
- shard-tglu: NOTRUN -> [SKIP][250] ([i915#2575]) +6 other tests skip
[250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-9/igt@vc4/vc4_wait_seqno@bad-seqno-0ns.html
#### Possible fixes ####
* igt@drm_fdinfo@idle@rcs0:
- shard-rkl: [FAIL][251] ([i915#7742]) -> [PASS][252]
[251]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-rkl-3/igt@drm_fdinfo@idle@rcs0.html
[252]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@drm_fdinfo@idle@rcs0.html
* igt@gem_exec_endless@dispatch@vcs1:
- shard-mtlp: [TIMEOUT][253] ([i915#3778] / [i915#7016]) -> [PASS][254]
[253]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-mtlp-5/igt@gem_exec_endless@dispatch@vcs1.html
[254]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-5/igt@gem_exec_endless@dispatch@vcs1.html
* igt@gem_exec_fair@basic-pace-share@rcs0:
- shard-rkl: [FAIL][255] ([i915#2842]) -> [PASS][256]
[255]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-rkl-6/igt@gem_exec_fair@basic-pace-share@rcs0.html
[256]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-4/igt@gem_exec_fair@basic-pace-share@rcs0.html
- shard-tglu: [FAIL][257] ([i915#2842]) -> [PASS][258]
[257]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-tglu-3/igt@gem_exec_fair@basic-pace-share@rcs0.html
[258]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-5/igt@gem_exec_fair@basic-pace-share@rcs0.html
* igt@gem_lmem_swapping@heavy-verify-random-ccs@lmem0:
- shard-dg2: [FAIL][259] ([i915#10378]) -> [PASS][260]
[259]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-dg2-5/igt@gem_lmem_swapping@heavy-verify-random-ccs@lmem0.html
[260]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-7/igt@gem_lmem_swapping@heavy-verify-random-ccs@lmem0.html
* igt@i915_module_load@reload-with-fault-injection:
- shard-rkl: [ABORT][261] ([i915#9820]) -> [PASS][262]
[261]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-rkl-3/igt@i915_module_load@reload-with-fault-injection.html
[262]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-5/igt@i915_module_load@reload-with-fault-injection.html
- shard-tglu: [INCOMPLETE][263] ([i915#10047] / [i915#9820]) -> [PASS][264]
[263]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-tglu-10/igt@i915_module_load@reload-with-fault-injection.html
[264]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-4/igt@i915_module_load@reload-with-fault-injection.html
* igt@i915_pm_rps@reset:
- shard-tglu: [INCOMPLETE][265] -> [PASS][266]
[265]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-tglu-4/igt@i915_pm_rps@reset.html
[266]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-9/igt@i915_pm_rps@reset.html
* igt@i915_suspend@basic-s3-without-i915:
- shard-rkl: [INCOMPLETE][267] ([i915#4817]) -> [PASS][268]
[267]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-rkl-3/igt@i915_suspend@basic-s3-without-i915.html
[268]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-2/igt@i915_suspend@basic-s3-without-i915.html
* igt@kms_cursor_legacy@single-move@pipe-a:
- shard-rkl: [DMESG-WARN][269] ([i915#10166]) -> [PASS][270]
[269]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-rkl-4/igt@kms_cursor_legacy@single-move@pipe-a.html
[270]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-4/igt@kms_cursor_legacy@single-move@pipe-a.html
* igt@kms_frontbuffer_tracking@basic:
- shard-dg1: [INCOMPLETE][271] -> [PASS][272]
[271]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-dg1-16/igt@kms_frontbuffer_tracking@basic.html
[272]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg1-14/igt@kms_frontbuffer_tracking@basic.html
* igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
- shard-rkl: [SKIP][273] ([i915#9519]) -> [PASS][274] +1 other test pass
[273]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-rkl-5/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
[274]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-rkl-6/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
* igt@kms_pm_rpm@modeset-lpsp-stress:
- shard-dg2: [SKIP][275] ([i915#9519]) -> [PASS][276]
[275]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-dg2-6/igt@kms_pm_rpm@modeset-lpsp-stress.html
[276]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-10/igt@kms_pm_rpm@modeset-lpsp-stress.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1:
- shard-snb: [FAIL][277] ([i915#9196]) -> [PASS][278]
[277]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-snb7/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1.html
[278]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-snb7/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-1:
- shard-tglu: [FAIL][279] ([i915#9196]) -> [PASS][280]
[279]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-tglu-6/igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-1.html
[280]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-tglu-4/igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-1.html
#### Warnings ####
* igt@gem_eio@kms:
- shard-dg2: [INCOMPLETE][281] ([i915#10513]) -> [FAIL][282] ([i915#5784])
[281]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-dg2-5/igt@gem_eio@kms.html
[282]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-7/igt@gem_eio@kms.html
* igt@i915_module_load@reload-with-fault-injection:
- shard-mtlp: [ABORT][283] ([i915#10131] / [i915#10887] / [i915#9820]) -> [ABORT][284] ([i915#10131] / [i915#9820])
[283]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-mtlp-5/igt@i915_module_load@reload-with-fault-injection.html
[284]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-mtlp-5/igt@i915_module_load@reload-with-fault-injection.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-blt:
- shard-dg2: [SKIP][285] ([i915#3458]) -> [SKIP][286] ([i915#10433] / [i915#3458]) +2 other tests skip
[285]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-dg2-8/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-blt.html
[286]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move:
- shard-dg2: [SKIP][287] ([i915#10433] / [i915#3458]) -> [SKIP][288] ([i915#3458]) +2 other tests skip
[287]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move.html
[288]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-7/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move.html
* igt@kms_psr@fbc-psr-primary-mmap-gtt:
- shard-dg2: [SKIP][289] ([i915#1072] / [i915#9673] / [i915#9732]) -> [SKIP][290] ([i915#1072] / [i915#9732]) +4 other tests skip
[289]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-dg2-11/igt@kms_psr@fbc-psr-primary-mmap-gtt.html
[290]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-8/igt@kms_psr@fbc-psr-primary-mmap-gtt.html
* igt@kms_psr@pr-cursor-blt:
- shard-dg2: [SKIP][291] ([i915#1072] / [i915#9732]) -> [SKIP][292] ([i915#1072] / [i915#9673] / [i915#9732]) +3 other tests skip
[291]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-dg2-2/igt@kms_psr@pr-cursor-blt.html
[292]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-11/igt@kms_psr@pr-cursor-blt.html
* igt@perf@non-zero-reason@0-rcs0:
- shard-dg2: [FAIL][293] ([i915#7484]) -> [FAIL][294] ([i915#9100])
[293]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14784/shard-dg2-7/igt@perf@non-zero-reason@0-rcs0.html
[294]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v1/shard-dg2-6/igt@perf@non-zero-reason@0-rcs0.html
[IGT#2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/2
[i915#10047]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10047
[i915#10055]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10055
[i915#10131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10131
[i915#10166]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10166
[i915#10278]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10278
[i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
[i915#10378]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10378
[i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
[i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
[i915#10513]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10513
[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#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
[i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
[i915#2122]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2122
[i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
[i915#2346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2346
[i915#2435]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2435
[i915#2436]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2436
[i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437
[i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
[i915#2575]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2575
[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#3116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3116
[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#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#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#3966]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3966
[i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
[i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
[i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
[i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
[i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
[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#4348]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4348
[i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349
[i915#4473]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4473
[i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
[i915#4537]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4537
[i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
[i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
[i915#4771]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4771
[i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812
[i915#4816]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4816
[i915#4817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4817
[i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852
[i915#4880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4880
[i915#4881]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4881
[i915#4884]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4884
[i915#4958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4958
[i915#5176]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5176
[i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
[i915#5235]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5235
[i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
[i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
[i915#5784]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5784
[i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
[i915#6227]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6227
[i915#6268]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6268
[i915#6334]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6334
[i915#6344]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6344
[i915#6493]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6493
[i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
[i915#6590]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6590
[i915#6805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6805
[i915#6880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6880
[i915#6944]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6944
[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#7213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7213
[i915#7484]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7484
[i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
[i915#7711]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7711
[i915#7742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7742
[i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
[i915#7862]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7862
[i915#8063]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8063
[i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
[i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
[i915#8414]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8414
[i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428
[i915#8516]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8516
[i915#8588]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8588
[i915#8623]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8623
[i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
[i915#8709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8709
[i915#8806]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8806
[i915#8809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8809
[i915#8814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8814
[i915#9010]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9010
[i915#9067]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9067
[i915#9100]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9100
[i915#9196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9196
[i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
[i915#9337]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9337
[i915#9340]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9340
[i915#9412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9412
[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#9531]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9531
[i915#9606]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9606
[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#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
[i915#9809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9809
[i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812
[i915#9820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9820
[i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934
Build changes
-------------
* Linux: CI_DRM_14784 -> Patchwork_133800v1
CI-20190529: 20190529
CI_DRM_14784: 5e9e7440f7d7efd64079148c738fc83600fb477b @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_7861: 7861
Patchwork_133800v1: 5e9e7440f7d7efd64079148c738fc83600fb477b @ 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_133800v1/index.html
[-- Attachment #2: Type: text/html, Size: 101236 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/5] drm/i915: Implement basic functions for ultrajoiner support
2024-05-20 7:38 ` [PATCH 2/5] drm/i915: Implement basic functions for ultrajoiner support Stanislav Lisovskiy
@ 2024-05-20 18:24 ` Ville Syrjälä
2024-05-21 8:25 ` Lisovskiy, Stanislav
0 siblings, 1 reply; 17+ messages in thread
From: Ville Syrjälä @ 2024-05-20 18:24 UTC (permalink / raw)
To: Stanislav Lisovskiy; +Cc: intel-gfx, jani.saarinen
On Mon, May 20, 2024 at 10:38:36AM +0300, Stanislav Lisovskiy wrote:
> Lets implement or change basic functions required for ultrajoiner
> support from atomic commit/modesetting point of view.
>
> Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 66 +++++++++++++++++---
> 1 file changed, 56 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index c74721188e59..c390b79a43d6 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -242,33 +242,65 @@ is_trans_port_sync_mode(const struct intel_crtc_state *crtc_state)
> is_trans_port_sync_slave(crtc_state);
> }
>
> -static enum pipe joiner_master_pipe(const struct intel_crtc_state *crtc_state)
> +static u8 joiner_master_pipes(const struct intel_crtc_state *crtc_state)
> {
> - return ffs(crtc_state->joiner_pipes) - 1;
> + return BIT(PIPE_A) | BIT(PIPE_C);
Not a fan of the hardcoded pipes.
We could just do something like
joiner_pipes & ((BIT(2) | BIT(0)) << joiner_master_pipe())
or some variant of that.
> +}
> +
> +static u8 joiner_primary_master_pipes(const struct intel_crtc_state *crtc_state)
> +{
> + return BIT(PIPE_A);
This is just the joiner_master_pipe() we already have.
> }
>
> u8 intel_crtc_joiner_slave_pipes(const struct intel_crtc_state *crtc_state)
> {
> - if (crtc_state->joiner_pipes)
> - return crtc_state->joiner_pipes & ~BIT(joiner_master_pipe(crtc_state));
> + if (intel_is_ultrajoiner(crtc_state))
> + return crtc_state->joiner_pipes & ~joiner_primary_master_pipes(crtc_state);
> + else if (intel_is_bigjoiner(crtc_state))
> + return crtc_state->joiner_pipes & ~joiner_master_pipes(crtc_state);
> else
> return 0;
I don't see why this should make any distinction between bigjoiner
and ultrajoiner.
Either it returns everything that isn't the overall master, or it
returns just all the bigjoiner slave pipes. Which one we want
depends on the use case I guess. So we might need both variants.
> }
>
> -bool intel_crtc_is_joiner_slave(const struct intel_crtc_state *crtc_state)
> +bool intel_crtc_is_bigjoiner_slave(const struct intel_crtc_state *crtc_state)
> {
> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>
> return crtc_state->joiner_pipes &&
> - crtc->pipe != joiner_master_pipe(crtc_state);
> + !(BIT(crtc->pipe) & joiner_master_pipes(crtc_state));
I'd probably add a joiner_slave_pipes() so that the logic is less
convoluted.
But I think first we need a solid agreement on the terminology,
and stick to it consistently.
Perhaps we need names for?
- the single master within the overall set of joined pipes
(be it ultrajoiner master or the bigjoiner/uncompressed
joiner master when ultrajoiner isn't used).
Just call this joiner_master perhaps? Or perhaps just call it
ultrajoiner_master but document that it is valid to use it
also for the non-ultrajoiner cases.
- every other pipe in the set, ie. the inverse of above
Should be just {ultra,}joiner_slaves to match the
above I guess? Do we actually even need this? Not sure.
And the for the modeset sequencing we would perhaps need:
- all bigjoiner masters within the entire set of joined pipes
- all bigjoiner slaves within the entire set of joined pipes
(inverse of the above)
The one slight snag here is that the "bigjoiner" name is
a bit incorrect for uncompressed joiner, but unless we want to
come up with some other name for these then I guess we'll just
have to live with it.
The other option is we try to come up with some generic names
for the two levels of pipe roles.
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 4/5] drm/i915: Compute config and mode valid changes for ultrajoiner
2024-05-20 7:38 ` [PATCH 4/5] drm/i915: Compute config and mode valid changes " Stanislav Lisovskiy
@ 2024-05-21 4:28 ` kernel test robot
0 siblings, 0 replies; 17+ messages in thread
From: kernel test robot @ 2024-05-21 4:28 UTC (permalink / raw)
To: Stanislav Lisovskiy, intel-gfx
Cc: oe-kbuild-all, jani.saarinen, ville.syrjala
Hi Stanislav,
kernel test robot noticed the following build warnings:
[auto build test WARNING on drm-intel/for-linux-next]
[also build test WARNING on drm-tip/drm-tip linus/master next-20240520]
[cannot apply to drm-intel/for-linux-next-fixes v6.9]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Stanislav-Lisovskiy/drm-i915-Rename-all-bigjoiner-to-joiner/20240520-194208
base: git://anongit.freedesktop.org/drm-intel for-linux-next
patch link: https://lore.kernel.org/r/20240520073839.23881-5-stanislav.lisovskiy%40intel.com
patch subject: [PATCH 4/5] drm/i915: Compute config and mode valid changes for ultrajoiner
config: x86_64-randconfig-103-20240521 (https://download.01.org/0day-ci/archive/20240521/202405211228.a5iQwc2H-lkp@intel.com/config)
compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202405211228.a5iQwc2H-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> drivers/gpu/drm/i915/display/intel_vdsc.c:813:46-47: Unneeded semicolon
vim +813 drivers/gpu/drm/i915/display/intel_vdsc.c
783
784 void intel_dsc_enable(const struct intel_crtc_state *crtc_state)
785 {
786 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
787 struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
788 u32 dss_ctl1_val = 0;
789 u32 dss_ctl2_val = 0;
790 int vdsc_instances_per_pipe = intel_dsc_get_vdsc_per_pipe(crtc_state);
791
792 if (!crtc_state->dsc.compression_enable)
793 return;
794
795 intel_dsc_pps_configure(crtc_state);
796
797 dss_ctl2_val |= LEFT_BRANCH_VDSC_ENABLE;
798 if (vdsc_instances_per_pipe > 1) {
799 dss_ctl2_val |= RIGHT_BRANCH_VDSC_ENABLE;
800 dss_ctl1_val |= JOINER_ENABLE;
801 }
802
803 if (crtc_state->joiner_pipes) {
804 /*
805 * This bit doesn't seem to follow master/slave logic or
806 * any other logic, so lets just add helper function to
807 * at least hide this hassle..
808 */
809 if (intel_crtc_ultrajoiner_enable_needed(crtc_state))
810 dss_ctl1_val |= ULTRA_JOINER_ENABLE;
811
812 if (intel_crtc_is_joiner_primary_master(crtc_state))
> 813 dss_ctl1_val |= MASTER_ULTRA_JOINER_ENABLE;;
814
815 dss_ctl1_val |= BIG_JOINER_ENABLE;
816
817 if (intel_crtc_is_bigjoiner_master(crtc_state))
818 dss_ctl1_val |= MASTER_BIG_JOINER_ENABLE;
819 }
820 intel_de_write(dev_priv, dss_ctl1_reg(crtc, crtc_state->cpu_transcoder), dss_ctl1_val);
821 intel_de_write(dev_priv, dss_ctl2_reg(crtc, crtc_state->cpu_transcoder), dss_ctl2_val);
822 }
823
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/5] drm/i915: Implement basic functions for ultrajoiner support
2024-05-20 18:24 ` Ville Syrjälä
@ 2024-05-21 8:25 ` Lisovskiy, Stanislav
2024-05-21 18:09 ` Ville Syrjälä
0 siblings, 1 reply; 17+ messages in thread
From: Lisovskiy, Stanislav @ 2024-05-21 8:25 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx, jani.saarinen
On Mon, May 20, 2024 at 09:24:45PM +0300, Ville Syrjälä wrote:
> On Mon, May 20, 2024 at 10:38:36AM +0300, Stanislav Lisovskiy wrote:
> > Lets implement or change basic functions required for ultrajoiner
> > support from atomic commit/modesetting point of view.
> >
> > Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> > ---
> > drivers/gpu/drm/i915/display/intel_display.c | 66 +++++++++++++++++---
> > 1 file changed, 56 insertions(+), 10 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> > index c74721188e59..c390b79a43d6 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > @@ -242,33 +242,65 @@ is_trans_port_sync_mode(const struct intel_crtc_state *crtc_state)
> > is_trans_port_sync_slave(crtc_state);
> > }
> >
> > -static enum pipe joiner_master_pipe(const struct intel_crtc_state *crtc_state)
> > +static u8 joiner_master_pipes(const struct intel_crtc_state *crtc_state)
> > {
> > - return ffs(crtc_state->joiner_pipes) - 1;
> > + return BIT(PIPE_A) | BIT(PIPE_C);
>
> Not a fan of the hardcoded pipes.
>
> We could just do something like
> joiner_pipes & ((BIT(2) | BIT(0)) << joiner_master_pipe())
> or some variant of that.
Well, here we need to decide whats worse: hardcoded bits/shifts versus harcoded pipes..
I would vote for pipes then, with reasoning that they are at least more obvious and easy to read.
It is anyway quite easy to change those here or make it platform based, if needed.
>
> > +}
> > +
> > +static u8 joiner_primary_master_pipes(const struct intel_crtc_state *crtc_state)
> > +{
> > + return BIT(PIPE_A);
>
> This is just the joiner_master_pipe() we already have.
I decided to convert joiner_master_pipe to joiner_master_pipes which should return a mask,
instead of a pipe.
That approach makes it more generic: for bigjoiner we still get only a single bit set in a mask,
however for ultrajoiner case we have now 2 master pipes, so we need a mask here.
joiner_primary_master_pipes is indeed supposed to return only a single primary master pipe,
however I decided that operating with masks instead of enum, seems more generic and practical approach,
for example if we need to get all pipes, which are not primary master, as below.
>
> > }
> >
> > u8 intel_crtc_joiner_slave_pipes(const struct intel_crtc_state *crtc_state)
> > {
> > - if (crtc_state->joiner_pipes)
> > - return crtc_state->joiner_pipes & ~BIT(joiner_master_pipe(crtc_state));
> > + if (intel_is_ultrajoiner(crtc_state))
> > + return crtc_state->joiner_pipes & ~joiner_primary_master_pipes(crtc_state);
> > + else if (intel_is_bigjoiner(crtc_state))
> > + return crtc_state->joiner_pipes & ~joiner_master_pipes(crtc_state);
> > else
> > return 0;
>
> I don't see why this should make any distinction between bigjoiner
> and ultrajoiner.
>
> Either it returns everything that isn't the overall master,
For ultrajoiner that is slave pipes + secondary master pipe.
I.e it is everything that is below primary master.
> returns just all the bigjoiner slave pipes. Which one we want
> depends on the use case I guess. So we might need both variants.
Yeah, we need both ways: sometimes we need to get all pipes except primary master.
And sometimes we need to get only slave pipes in Bigjoiner terminology.
There are use cases for both.
However definition of slave pipe is a bit tricky here, because technically secondary
master pipe is also a slave pipe in relation to primary master pipe.
>
> > }
> >
> > -bool intel_crtc_is_joiner_slave(const struct intel_crtc_state *crtc_state)
> > +bool intel_crtc_is_bigjoiner_slave(const struct intel_crtc_state *crtc_state)
> > {
> > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> >
> > return crtc_state->joiner_pipes &&
> > - crtc->pipe != joiner_master_pipe(crtc_state);
> > + !(BIT(crtc->pipe) & joiner_master_pipes(crtc_state));
>
> I'd probably add a joiner_slave_pipes() so that the logic is less
> convoluted.
Yeah, then joiner_slave_pipes would have to return only slave pipes in
bigjoiner terminology.
>
> But I think first we need a solid agreement on the terminology,
> and stick to it consistently.
>
> Perhaps we need names for?
> - the single master within the overall set of joined pipes
> (be it ultrajoiner master or the bigjoiner/uncompressed
> joiner master when ultrajoiner isn't used).
> Just call this joiner_master perhaps? Or perhaps just call it
> ultrajoiner_master but document that it is valid to use it
> also for the non-ultrajoiner cases.
I think it would be quite natural to call it a primary master.
Initially BSpec called it that way and it sounds logical.
I.e now we have not only master/slave hierarchy, but also
second level of hierarchy between masters: secondary master
and primary master.
Other names sound less obvious tbh: i.e "master of masters" :)
or "overall master" and etc..
That is why I'm a bit opposed to that Jani says to rename
master/slave to primary/secondary - we get a problem with
naming for Ultrajoiner then:
as we are going to have primary of primary pipe or smth like that.
Can't think of anything better than using primary/secondary master.
If anyone has better sounding ideas - you are welcome.
> - every other pipe in the set, ie. the inverse of above
> Should be just {ultra,}joiner_slaves to match the
> above I guess? Do we actually even need this? Not sure.
>
> And the for the modeset sequencing we would perhaps need:
> - all bigjoiner masters within the entire set of joined pipes
> - all bigjoiner slaves within the entire set of joined pipes
> (inverse of the above)
>
> The one slight snag here is that the "bigjoiner" name is
> a bit incorrect for uncompressed joiner, but unless we want to
> come up with some other name for these then I guess we'll just
> have to live with it.
>
> The other option is we try to come up with some generic names
> for the two levels of pipe roles.
We should just follow a KISS rule here, I guess..
Stan
>
> --
> Ville Syrjälä
> Intel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/5] drm/i915: Implement basic functions for ultrajoiner support
2024-05-21 8:25 ` Lisovskiy, Stanislav
@ 2024-05-21 18:09 ` Ville Syrjälä
2024-05-22 8:01 ` Lisovskiy, Stanislav
0 siblings, 1 reply; 17+ messages in thread
From: Ville Syrjälä @ 2024-05-21 18:09 UTC (permalink / raw)
To: Lisovskiy, Stanislav; +Cc: intel-gfx, jani.saarinen
On Tue, May 21, 2024 at 11:25:31AM +0300, Lisovskiy, Stanislav wrote:
> On Mon, May 20, 2024 at 09:24:45PM +0300, Ville Syrjälä wrote:
> > On Mon, May 20, 2024 at 10:38:36AM +0300, Stanislav Lisovskiy wrote:
> > > Lets implement or change basic functions required for ultrajoiner
> > > support from atomic commit/modesetting point of view.
> > >
> > > Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> > > ---
> > > drivers/gpu/drm/i915/display/intel_display.c | 66 +++++++++++++++++---
> > > 1 file changed, 56 insertions(+), 10 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> > > index c74721188e59..c390b79a43d6 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > > @@ -242,33 +242,65 @@ is_trans_port_sync_mode(const struct intel_crtc_state *crtc_state)
> > > is_trans_port_sync_slave(crtc_state);
> > > }
> > >
> > > -static enum pipe joiner_master_pipe(const struct intel_crtc_state *crtc_state)
> > > +static u8 joiner_master_pipes(const struct intel_crtc_state *crtc_state)
> > > {
> > > - return ffs(crtc_state->joiner_pipes) - 1;
> > > + return BIT(PIPE_A) | BIT(PIPE_C);
> >
> > Not a fan of the hardcoded pipes.
> >
> > We could just do something like
> > joiner_pipes & ((BIT(2) | BIT(0)) << joiner_master_pipe())
> > or some variant of that.
>
> Well, here we need to decide whats worse: hardcoded bits/shifts versus harcoded pipes..
> I would vote for pipes then, with reasoning that they are at least more obvious and easy to read.
> It is anyway quite easy to change those here or make it platform based, if needed.
Hardcoded pipes aren't going to allow us to make the rest of the
code generic because the overall master pipe can be anything when
ultrajoiner isn't used.
Eg. the way we assign the bigjoiner_pipes is by simply setting a
some number (either two or four) of consecutive bits in the mask.
In order for that to keep working universally these functions must
be able to answer questions based on that bitmask, no matter which
consecutive set of bits are set.
>
> >
> > > +}
> > > +
> > > +static u8 joiner_primary_master_pipes(const struct intel_crtc_state *crtc_state)
> > > +{
> > > + return BIT(PIPE_A);
> >
> > This is just the joiner_master_pipe() we already have.
>
> I decided to convert joiner_master_pipe to joiner_master_pipes which should return a mask,
> instead of a pipe.
> That approach makes it more generic: for bigjoiner we still get only a single bit set in a mask,
> however for ultrajoiner case we have now 2 master pipes, so we need a mask here.
>
> joiner_primary_master_pipes is indeed supposed to return only a single primary master pipe,
> however I decided that operating with masks instead of enum, seems more generic and practical approach,
> for example if we need to get all pipes, which are not primary master, as below.
>
> >
> > > }
> > >
> > > u8 intel_crtc_joiner_slave_pipes(const struct intel_crtc_state *crtc_state)
> > > {
> > > - if (crtc_state->joiner_pipes)
> > > - return crtc_state->joiner_pipes & ~BIT(joiner_master_pipe(crtc_state));
> > > + if (intel_is_ultrajoiner(crtc_state))
> > > + return crtc_state->joiner_pipes & ~joiner_primary_master_pipes(crtc_state);
> > > + else if (intel_is_bigjoiner(crtc_state))
> > > + return crtc_state->joiner_pipes & ~joiner_master_pipes(crtc_state);
> > > else
> > > return 0;
> >
> > I don't see why this should make any distinction between bigjoiner
> > and ultrajoiner.
> >
> > Either it returns everything that isn't the overall master,
>
> For ultrajoiner that is slave pipes + secondary master pipe.
> I.e it is everything that is below primary master.
Same for for non-ultrajoiner. The only difference is that there is just
the one slave rather than three. But the callers don't need to care
about that in general.
I suspect there is probably only few uses cases for this:
- the master->slave state copying. And there we just want to
go through all the slaves, no matter how many there are
- during the high level modeset sequence (and probably a few
other places as well) we need to simply skip all the slaves,
and again it doesn't matter how many there are
For the plane updates and such we probably don't really need to
care about the master/slave relationships, so the current thing
that just iterates all joined pipes will work perfectly fine.
And for actual modeset sequencing I suspect we just need the
bigjoiner master/slave bitmasks and make sure we iterate through
each in turn:
enable:
1. for_each_reverse(bigjoiner_slaves)
2. for_each_reverse(bigjoiner_masters)
disable:
1. for_each(bigjoiner_masters)
2. for_each(bigjoiner_slaves)
> > returns just all the bigjoiner slave pipes. Which one we want
> > depends on the use case I guess. So we might need both variants.
>
> Yeah, we need both ways: sometimes we need to get all pipes except primary master.
> And sometimes we need to get only slave pipes in Bigjoiner terminology.
> There are use cases for both.
>
> However definition of slave pipe is a bit tricky here, because technically secondary
> master pipe is also a slave pipe in relation to primary master pipe.
>
> >
> > > }
> > >
> > > -bool intel_crtc_is_joiner_slave(const struct intel_crtc_state *crtc_state)
> > > +bool intel_crtc_is_bigjoiner_slave(const struct intel_crtc_state *crtc_state)
> > > {
> > > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> > >
> > > return crtc_state->joiner_pipes &&
> > > - crtc->pipe != joiner_master_pipe(crtc_state);
> > > + !(BIT(crtc->pipe) & joiner_master_pipes(crtc_state));
> >
> > I'd probably add a joiner_slave_pipes() so that the logic is less
> > convoluted.
>
> Yeah, then joiner_slave_pipes would have to return only slave pipes in
> bigjoiner terminology.
>
> >
> > But I think first we need a solid agreement on the terminology,
> > and stick to it consistently.
> >
> > Perhaps we need names for?
> > - the single master within the overall set of joined pipes
> > (be it ultrajoiner master or the bigjoiner/uncompressed
> > joiner master when ultrajoiner isn't used).
> > Just call this joiner_master perhaps? Or perhaps just call it
> > ultrajoiner_master but document that it is valid to use it
> > also for the non-ultrajoiner cases.
>
> I think it would be quite natural to call it a primary master.
>
> Initially BSpec called it that way and it sounds logical.
>
> I.e now we have not only master/slave hierarchy, but also
> second level of hierarchy between masters: secondary master
> and primary master.
> Other names sound less obvious tbh: i.e "master of masters" :)
> or "overall master" and etc..
>
> That is why I'm a bit opposed to that Jani says to rename
> master/slave to primary/secondary - we get a problem with
> naming for Ultrajoiner then:
> as we are going to have primary of primary pipe or smth like that.
>
> Can't think of anything better than using primary/secondary master.
> If anyone has better sounding ideas - you are welcome.
The bspec rename does this:
master -> primary
slave -> secondary
I do agree that what you're going for here would have been pretty
natural way to experss this, but I think that ship sailed when
the annoying bspec rename happened. If we now start using those
same names to refer to a completely different concept I think the
end result will be extremely confusing.
IMO we probably need to slighly extend the ultrajoiner and bigjoiners
terms to cover all the joiner cases, which would look something like this:
- ultrajoiner master/primary = the first pipe in the set
- ultrajoiner slaves/secondaries = the rest of the pipes in the set
- bigjoiner masters/primaries = first pipe + third pipe + ... in the set
- bigjoiner slaves/secondaries = second pipe + fourth pipe + ... in the set
Or perhaps we just drop the "ultra" part form the first two and
speak of just "joiner" in general when referring to things on
that level?
Either that or we try to invent some new terminology for these
two levels of roles that doesn't conflict badly with the bspec
terminology. What that would be I'm not sure. Up/down,
heads/tails, noble/peasant, apple/orange? Nothing truly
inspiring comes to mind right now.
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/5] drm/i915: Implement basic functions for ultrajoiner support
2024-05-21 18:09 ` Ville Syrjälä
@ 2024-05-22 8:01 ` Lisovskiy, Stanislav
2024-05-22 11:40 ` Ville Syrjälä
0 siblings, 1 reply; 17+ messages in thread
From: Lisovskiy, Stanislav @ 2024-05-22 8:01 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx, jani.saarinen
On Tue, May 21, 2024 at 09:09:16PM +0300, Ville Syrjälä wrote:
> On Tue, May 21, 2024 at 11:25:31AM +0300, Lisovskiy, Stanislav wrote:
> > On Mon, May 20, 2024 at 09:24:45PM +0300, Ville Syrjälä wrote:
> > > On Mon, May 20, 2024 at 10:38:36AM +0300, Stanislav Lisovskiy wrote:
> > > > Lets implement or change basic functions required for ultrajoiner
> > > > support from atomic commit/modesetting point of view.
> > > >
> > > > Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> > > > ---
> > > > drivers/gpu/drm/i915/display/intel_display.c | 66 +++++++++++++++++---
> > > > 1 file changed, 56 insertions(+), 10 deletions(-)
> > > >
> > > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> > > > index c74721188e59..c390b79a43d6 100644
> > > > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > > > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > > > @@ -242,33 +242,65 @@ is_trans_port_sync_mode(const struct intel_crtc_state *crtc_state)
> > > > is_trans_port_sync_slave(crtc_state);
> > > > }
> > > >
> > > > -static enum pipe joiner_master_pipe(const struct intel_crtc_state *crtc_state)
> > > > +static u8 joiner_master_pipes(const struct intel_crtc_state *crtc_state)
> > > > {
> > > > - return ffs(crtc_state->joiner_pipes) - 1;
> > > > + return BIT(PIPE_A) | BIT(PIPE_C);
> > >
> > > Not a fan of the hardcoded pipes.
> > >
> > > We could just do something like
> > > joiner_pipes & ((BIT(2) | BIT(0)) << joiner_master_pipe())
> > > or some variant of that.
> >
> > Well, here we need to decide whats worse: hardcoded bits/shifts versus harcoded pipes..
> > I would vote for pipes then, with reasoning that they are at least more obvious and easy to read.
> > It is anyway quite easy to change those here or make it platform based, if needed.
>
> Hardcoded pipes aren't going to allow us to make the rest of the
> code generic because the overall master pipe can be anything when
> ultrajoiner isn't used.
joiner_master_pipes in current revision isn't supposed to calculate
master pipe for given crtc_state it just returns overall mask of the
pipes, which are allowed to be master.
For actual calculation another function is supposed to be used, which is
intel_crtc_master_pipe.
That will determine, if its ultrajoiner or bigjoiner and return correspondent
pipe. It is also based now on assumption that master pipe is always the
slave pipe - 1, which I also don't like, if one day BSpec decides to make it
possible to have like master to be pipe B and slave to be pipe A,
then we are screwed with that approach.
Thats why I would prefer overall to set all those relations by some platform
based or programmatically set table mappings, however I guess that won't go
through reviews :)
>
> Eg. the way we assign the bigjoiner_pipes is by simply setting a
> some number (either two or four) of consecutive bits in the mask.
> In order for that to keep working universally these functions must
> be able to answer questions based on that bitmask, no matter which
> consecutive set of bits are set.
You probably mean that stuff:
<------>if (intel_dp_need_ultrajoiner(intel_dp, adjusted_mode->crtc_clock))
<------><------>pipe_config->joiner_pipes = GENMASK(crtc->pipe + 3, crtc->pipe);
<------>else if (intel_dp_need_bigjoiner(intel_dp, connector,
<------><------><------><------><------> adjusted_mode->crtc_hdisplay,
<------><------><------><------><------> adjusted_mode->crtc_clock))
<------><------>pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe);
That one is also about the same, in fact I think we should be able
to set this in a more meaningful way - what if some platform will support
3 but not all 4 pipes for joiner, or 5 pipes..
Best approach would be to use something like joiner_master_pipes | joiner_slave_pipes
functions there, which return platform based masks of pipes, because
this GENMASK is kinda hardcoded and not explicit enough.
>
> >
> > >
> > > > +}
> > > > +
> > > > +static u8 joiner_primary_master_pipes(const struct intel_crtc_state *crtc_state)
> > > > +{
> > > > + return BIT(PIPE_A);
> > >
> > > This is just the joiner_master_pipe() we already have.
> >
> > I decided to convert joiner_master_pipe to joiner_master_pipes which should return a mask,
> > instead of a pipe.
> > That approach makes it more generic: for bigjoiner we still get only a single bit set in a mask,
> > however for ultrajoiner case we have now 2 master pipes, so we need a mask here.
> >
> > joiner_primary_master_pipes is indeed supposed to return only a single primary master pipe,
> > however I decided that operating with masks instead of enum, seems more generic and practical approach,
> > for example if we need to get all pipes, which are not primary master, as below.
> >
> > >
> > > > }
> > > >
> > > > u8 intel_crtc_joiner_slave_pipes(const struct intel_crtc_state *crtc_state)
> > > > {
> > > > - if (crtc_state->joiner_pipes)
> > > > - return crtc_state->joiner_pipes & ~BIT(joiner_master_pipe(crtc_state));
> > > > + if (intel_is_ultrajoiner(crtc_state))
> > > > + return crtc_state->joiner_pipes & ~joiner_primary_master_pipes(crtc_state);
> > > > + else if (intel_is_bigjoiner(crtc_state))
> > > > + return crtc_state->joiner_pipes & ~joiner_master_pipes(crtc_state);
> > > > else
> > > > return 0;
> > >
> > > I don't see why this should make any distinction between bigjoiner
> > > and ultrajoiner.
> > >
> > > Either it returns everything that isn't the overall master,
> >
> > For ultrajoiner that is slave pipes + secondary master pipe.
> > I.e it is everything that is below primary master.
>
> Same for for non-ultrajoiner. The only difference is that there is just
> the one slave rather than three. But the callers don't need to care
> about that in general.
There is a difference when we are doing actual register programming, there
we need to know exactly which pipes are just slaves, which pipe is secondary
or primary master.
However for things like state copying, yep we need to treat all except
primary master as slaves.
>
> I suspect there is probably only few uses cases for this:
> - the master->slave state copying. And there we just want to
> go through all the slaves, no matter how many there are
> - during the high level modeset sequence (and probably a few
> other places as well) we need to simply skip all the slaves,
> and again it doesn't matter how many there are
>
> For the plane updates and such we probably don't really need to
> care about the master/slave relationships, so the current thing
> that just iterates all joined pipes will work perfectly fine.
>
> And for actual modeset sequencing I suspect we just need the
> bigjoiner master/slave bitmasks and make sure we iterate through
> each in turn:
> enable:
> 1. for_each_reverse(bigjoiner_slaves)
> 2. for_each_reverse(bigjoiner_masters)
> disable:
> 1. for_each(bigjoiner_masters)
> 2. for_each(bigjoiner_slaves)
I would just unite those 2 cycles using new macro, I introduced, where
we can set explicitly the order in which it should attend each pipe in mask.
Also it will be completely transparent from hsw_crtc_enable/hsw_crtc_disable
point of view, without even having to mention things like master/slave there.
>
> > > returns just all the bigjoiner slave pipes. Which one we want
> > > depends on the use case I guess. So we might need both variants.
> >
> > Yeah, we need both ways: sometimes we need to get all pipes except primary master.
> > And sometimes we need to get only slave pipes in Bigjoiner terminology.
> > There are use cases for both.
> >
> > However definition of slave pipe is a bit tricky here, because technically secondary
> > master pipe is also a slave pipe in relation to primary master pipe.
> >
> > >
> > > > }
> > > >
> > > > -bool intel_crtc_is_joiner_slave(const struct intel_crtc_state *crtc_state)
> > > > +bool intel_crtc_is_bigjoiner_slave(const struct intel_crtc_state *crtc_state)
> > > > {
> > > > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> > > >
> > > > return crtc_state->joiner_pipes &&
> > > > - crtc->pipe != joiner_master_pipe(crtc_state);
> > > > + !(BIT(crtc->pipe) & joiner_master_pipes(crtc_state));
> > >
> > > I'd probably add a joiner_slave_pipes() so that the logic is less
> > > convoluted.
> >
> > Yeah, then joiner_slave_pipes would have to return only slave pipes in
> > bigjoiner terminology.
> >
> > >
> > > But I think first we need a solid agreement on the terminology,
> > > and stick to it consistently.
> > >
> > > Perhaps we need names for?
> > > - the single master within the overall set of joined pipes
> > > (be it ultrajoiner master or the bigjoiner/uncompressed
> > > joiner master when ultrajoiner isn't used).
> > > Just call this joiner_master perhaps? Or perhaps just call it
> > > ultrajoiner_master but document that it is valid to use it
> > > also for the non-ultrajoiner cases.
> >
> > I think it would be quite natural to call it a primary master.
> >
> > Initially BSpec called it that way and it sounds logical.
> >
> > I.e now we have not only master/slave hierarchy, but also
> > second level of hierarchy between masters: secondary master
> > and primary master.
> > Other names sound less obvious tbh: i.e "master of masters" :)
> > or "overall master" and etc..
> >
> > That is why I'm a bit opposed to that Jani says to rename
> > master/slave to primary/secondary - we get a problem with
> > naming for Ultrajoiner then:
> > as we are going to have primary of primary pipe or smth like that.
> >
> > Can't think of anything better than using primary/secondary master.
> > If anyone has better sounding ideas - you are welcome.
>
> The bspec rename does this:
> master -> primary
> slave -> secondary
>
> I do agree that what you're going for here would have been pretty
> natural way to experss this, but I think that ship sailed when
> the annoying bspec rename happened. If we now start using those
> same names to refer to a completely different concept I think the
> end result will be extremely confusing.
>
> IMO we probably need to slighly extend the ultrajoiner and bigjoiners
> terms to cover all the joiner cases, which would look something like this:
> - ultrajoiner master/primary = the first pipe in the set
> - ultrajoiner slaves/secondaries = the rest of the pipes in the set
> - bigjoiner masters/primaries = first pipe + third pipe + ... in the set
> - bigjoiner slaves/secondaries = second pipe + fourth pipe + ... in the set
>
> Or perhaps we just drop the "ultra" part form the first two and
> speak of just "joiner" in general when referring to things on
> that level?
Then we won't be able to distinguish between primary master and secondary master.
BSpec offers to call it Ultrajoiner master and Ultrajoiner secondary
which is assuming to be Bigjoiner master, however still _quite_ confusing.
We can call the primary master to be Ultrajoiner primary and refer to the rest
of pipes like bigjoiner primary/secondary.
To me it sounds so much more complex compared to primary/secondary master/slave
to be honest.. Looks like we are inventing troubles for ourselves.
Stan
>
> Either that or we try to invent some new terminology for these
> two levels of roles that doesn't conflict badly with the bspec
> terminology. What that would be I'm not sure. Up/down,
> heads/tails, noble/peasant, apple/orange? Nothing truly
> inspiring comes to mind right now.
>
> --
> Ville Syrjälä
> Intel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/5] drm/i915: Implement basic functions for ultrajoiner support
2024-05-22 8:01 ` Lisovskiy, Stanislav
@ 2024-05-22 11:40 ` Ville Syrjälä
2024-05-24 9:23 ` Lisovskiy, Stanislav
0 siblings, 1 reply; 17+ messages in thread
From: Ville Syrjälä @ 2024-05-22 11:40 UTC (permalink / raw)
To: Lisovskiy, Stanislav; +Cc: intel-gfx, jani.saarinen
On Wed, May 22, 2024 at 11:01:32AM +0300, Lisovskiy, Stanislav wrote:
> On Tue, May 21, 2024 at 09:09:16PM +0300, Ville Syrjälä wrote:
> > On Tue, May 21, 2024 at 11:25:31AM +0300, Lisovskiy, Stanislav wrote:
> > > On Mon, May 20, 2024 at 09:24:45PM +0300, Ville Syrjälä wrote:
> > > > On Mon, May 20, 2024 at 10:38:36AM +0300, Stanislav Lisovskiy wrote:
> > > > > Lets implement or change basic functions required for ultrajoiner
> > > > > support from atomic commit/modesetting point of view.
> > > > >
> > > > > Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> > > > > ---
> > > > > drivers/gpu/drm/i915/display/intel_display.c | 66 +++++++++++++++++---
> > > > > 1 file changed, 56 insertions(+), 10 deletions(-)
> > > > >
> > > > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> > > > > index c74721188e59..c390b79a43d6 100644
> > > > > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > > > > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > > > > @@ -242,33 +242,65 @@ is_trans_port_sync_mode(const struct intel_crtc_state *crtc_state)
> > > > > is_trans_port_sync_slave(crtc_state);
> > > > > }
> > > > >
> > > > > -static enum pipe joiner_master_pipe(const struct intel_crtc_state *crtc_state)
> > > > > +static u8 joiner_master_pipes(const struct intel_crtc_state *crtc_state)
> > > > > {
> > > > > - return ffs(crtc_state->joiner_pipes) - 1;
> > > > > + return BIT(PIPE_A) | BIT(PIPE_C);
> > > >
> > > > Not a fan of the hardcoded pipes.
> > > >
> > > > We could just do something like
> > > > joiner_pipes & ((BIT(2) | BIT(0)) << joiner_master_pipe())
> > > > or some variant of that.
> > >
> > > Well, here we need to decide whats worse: hardcoded bits/shifts versus harcoded pipes..
> > > I would vote for pipes then, with reasoning that they are at least more obvious and easy to read.
> > > It is anyway quite easy to change those here or make it platform based, if needed.
> >
> > Hardcoded pipes aren't going to allow us to make the rest of the
> > code generic because the overall master pipe can be anything when
> > ultrajoiner isn't used.
>
> joiner_master_pipes in current revision isn't supposed to calculate
> master pipe for given crtc_state it just returns overall mask of the
> pipes, which are allowed to be master.
Then it seems misnamed, and also why is it taking a crtc_state?
>
> For actual calculation another function is supposed to be used, which is
> intel_crtc_master_pipe.
> That will determine, if its ultrajoiner or bigjoiner and return correspondent
> pipe. It is also based now on assumption that master pipe is always the
> slave pipe - 1, which I also don't like, if one day BSpec decides to make it
> possible to have like master to be pipe B and slave to be pipe A,
> then we are screwed with that approach.
> Thats why I would prefer overall to set all those relations by some platform
> based or programmatically set table mappings, however I guess that won't go
> through reviews :)
>
> >
> > Eg. the way we assign the bigjoiner_pipes is by simply setting a
> > some number (either two or four) of consecutive bits in the mask.
> > In order for that to keep working universally these functions must
> > be able to answer questions based on that bitmask, no matter which
> > consecutive set of bits are set.
>
> You probably mean that stuff:
>
> <------>if (intel_dp_need_ultrajoiner(intel_dp, adjusted_mode->crtc_clock))
> <------><------>pipe_config->joiner_pipes = GENMASK(crtc->pipe + 3, crtc->pipe);
> <------>else if (intel_dp_need_bigjoiner(intel_dp, connector,
> <------><------><------><------><------> adjusted_mode->crtc_hdisplay,
> <------><------><------><------><------> adjusted_mode->crtc_clock))
> <------><------>pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe);
>
> That one is also about the same, in fact I think we should be able
> to set this in a more meaningful way - what if some platform will support
> 3 but not all 4 pipes for joiner, or 5 pipes..
> Best approach would be to use something like joiner_master_pipes | joiner_slave_pipes
> functions there, which return platform based masks of pipes, because
> this GENMASK is kinda hardcoded and not explicit enough.
>
> >
> > >
> > > >
> > > > > +}
> > > > > +
> > > > > +static u8 joiner_primary_master_pipes(const struct intel_crtc_state *crtc_state)
> > > > > +{
> > > > > + return BIT(PIPE_A);
> > > >
> > > > This is just the joiner_master_pipe() we already have.
> > >
> > > I decided to convert joiner_master_pipe to joiner_master_pipes which should return a mask,
> > > instead of a pipe.
> > > That approach makes it more generic: for bigjoiner we still get only a single bit set in a mask,
> > > however for ultrajoiner case we have now 2 master pipes, so we need a mask here.
> > >
> > > joiner_primary_master_pipes is indeed supposed to return only a single primary master pipe,
> > > however I decided that operating with masks instead of enum, seems more generic and practical approach,
> > > for example if we need to get all pipes, which are not primary master, as below.
> > >
> > > >
> > > > > }
> > > > >
> > > > > u8 intel_crtc_joiner_slave_pipes(const struct intel_crtc_state *crtc_state)
> > > > > {
> > > > > - if (crtc_state->joiner_pipes)
> > > > > - return crtc_state->joiner_pipes & ~BIT(joiner_master_pipe(crtc_state));
> > > > > + if (intel_is_ultrajoiner(crtc_state))
> > > > > + return crtc_state->joiner_pipes & ~joiner_primary_master_pipes(crtc_state);
> > > > > + else if (intel_is_bigjoiner(crtc_state))
> > > > > + return crtc_state->joiner_pipes & ~joiner_master_pipes(crtc_state);
> > > > > else
> > > > > return 0;
> > > >
> > > > I don't see why this should make any distinction between bigjoiner
> > > > and ultrajoiner.
> > > >
> > > > Either it returns everything that isn't the overall master,
> > >
> > > For ultrajoiner that is slave pipes + secondary master pipe.
> > > I.e it is everything that is below primary master.
> >
> > Same for for non-ultrajoiner. The only difference is that there is just
> > the one slave rather than three. But the callers don't need to care
> > about that in general.
>
> There is a difference when we are doing actual register programming, there
> we need to know exactly which pipes are just slaves,
That would be bigjoiner_slave_pipes() in what I outlined.
> which pipe is secondary
> or primary master.
And that is just the difference between ultrajoiner_master_pipe() vs.
bigjoiner_master_pipes() & ~BIT(ultrajoiner_master_pipe())
> However for things like state copying, yep we need to treat all except
> primary master as slaves.
And that would be just iterating through
ultrajoiner_slave_pipes() (or joiner_slave_pipes(), depending
on which of naming schemes I listed would be used).
>
> >
> > I suspect there is probably only few uses cases for this:
> > - the master->slave state copying. And there we just want to
> > go through all the slaves, no matter how many there are
> > - during the high level modeset sequence (and probably a few
> > other places as well) we need to simply skip all the slaves,
> > and again it doesn't matter how many there are
> >
> > For the plane updates and such we probably don't really need to
> > care about the master/slave relationships, so the current thing
> > that just iterates all joined pipes will work perfectly fine.
> >
> > And for actual modeset sequencing I suspect we just need the
> > bigjoiner master/slave bitmasks and make sure we iterate through
> > each in turn:
> > enable:
> > 1. for_each_reverse(bigjoiner_slaves)
> > 2. for_each_reverse(bigjoiner_masters)
> > disable:
> > 1. for_each(bigjoiner_masters)
> > 2. for_each(bigjoiner_slaves)
>
> I would just unite those 2 cycles using new macro, I introduced, where
> we can set explicitly the order in which it should attend each pipe in mask.
> Also it will be completely transparent from hsw_crtc_enable/hsw_crtc_disable
> point of view, without even having to mention things like master/slave there.
Yeah, a single macro would be nice, assuming we can achive it without
too many horrors. But still, the implementation just needs those two
masks.
>
> >
> > > > returns just all the bigjoiner slave pipes. Which one we want
> > > > depends on the use case I guess. So we might need both variants.
> > >
> > > Yeah, we need both ways: sometimes we need to get all pipes except primary master.
> > > And sometimes we need to get only slave pipes in Bigjoiner terminology.
> > > There are use cases for both.
> > >
> > > However definition of slave pipe is a bit tricky here, because technically secondary
> > > master pipe is also a slave pipe in relation to primary master pipe.
> > >
> > > >
> > > > > }
> > > > >
> > > > > -bool intel_crtc_is_joiner_slave(const struct intel_crtc_state *crtc_state)
> > > > > +bool intel_crtc_is_bigjoiner_slave(const struct intel_crtc_state *crtc_state)
> > > > > {
> > > > > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> > > > >
> > > > > return crtc_state->joiner_pipes &&
> > > > > - crtc->pipe != joiner_master_pipe(crtc_state);
> > > > > + !(BIT(crtc->pipe) & joiner_master_pipes(crtc_state));
> > > >
> > > > I'd probably add a joiner_slave_pipes() so that the logic is less
> > > > convoluted.
> > >
> > > Yeah, then joiner_slave_pipes would have to return only slave pipes in
> > > bigjoiner terminology.
> > >
> > > >
> > > > But I think first we need a solid agreement on the terminology,
> > > > and stick to it consistently.
> > > >
> > > > Perhaps we need names for?
> > > > - the single master within the overall set of joined pipes
> > > > (be it ultrajoiner master or the bigjoiner/uncompressed
> > > > joiner master when ultrajoiner isn't used).
> > > > Just call this joiner_master perhaps? Or perhaps just call it
> > > > ultrajoiner_master but document that it is valid to use it
> > > > also for the non-ultrajoiner cases.
> > >
> > > I think it would be quite natural to call it a primary master.
> > >
> > > Initially BSpec called it that way and it sounds logical.
> > >
> > > I.e now we have not only master/slave hierarchy, but also
> > > second level of hierarchy between masters: secondary master
> > > and primary master.
> > > Other names sound less obvious tbh: i.e "master of masters" :)
> > > or "overall master" and etc..
> > >
> > > That is why I'm a bit opposed to that Jani says to rename
> > > master/slave to primary/secondary - we get a problem with
> > > naming for Ultrajoiner then:
> > > as we are going to have primary of primary pipe or smth like that.
> > >
> > > Can't think of anything better than using primary/secondary master.
> > > If anyone has better sounding ideas - you are welcome.
> >
> > The bspec rename does this:
> > master -> primary
> > slave -> secondary
> >
> > I do agree that what you're going for here would have been pretty
> > natural way to experss this, but I think that ship sailed when
> > the annoying bspec rename happened. If we now start using those
> > same names to refer to a completely different concept I think the
> > end result will be extremely confusing.
> >
> > IMO we probably need to slighly extend the ultrajoiner and bigjoiners
> > terms to cover all the joiner cases, which would look something like this:
> > - ultrajoiner master/primary = the first pipe in the set
> > - ultrajoiner slaves/secondaries = the rest of the pipes in the set
> > - bigjoiner masters/primaries = first pipe + third pipe + ... in the set
> > - bigjoiner slaves/secondaries = second pipe + fourth pipe + ... in the set
> >
> > Or perhaps we just drop the "ultra" part form the first two and
> > speak of just "joiner" in general when referring to things on
> > that level?
>
> Then we won't be able to distinguish between primary master and secondary master.
> BSpec offers to call it Ultrajoiner master and Ultrajoiner secondary
> which is assuming to be Bigjoiner master, however still _quite_ confusing.
> We can call the primary master to be Ultrajoiner primary and refer to the rest
> of pipes like bigjoiner primary/secondary.
>
> To me it sounds so much more complex compared to primary/secondary master/slave
> to be honest.. Looks like we are inventing troubles for ourselves.
Some people will just keep on complaining about the master/slave
terminology, and having to keep responding to that is very tiresome.
So we are going to do the rename to align to the new primary/secondary
bspec terminology, if only to avoid that annoyance.
So to avoid a bit of the confusion I think we can just use the
generic term "joiner" at the high level stuff. The first pipe
in the set will be the joiner_primary, everyone else is a
joiner_secondary.
For the low level DSS_CTL register frobbing I think we
just need to be able to answer these simple questions:
- is ultrajoiner used?
- is bigjoiner used?
- is uncompressed joiner used?
- is this pipe an ultrajoiner primary?
- is this pipe a bigjoiner primary?
- is this pipe an uncompressed joiner primary?
And beyond that we just need to be able to split
bigjoiner/uncompressed joiner primaries from
bigjoiner/uncompressed joiner secondaries for the
purposes of the modeset iterator macros. IMO for that
we can keep using the term "bigjoiner" even if it also
covers uncompressed joiner as well.
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/5] drm/i915: Implement basic functions for ultrajoiner support
2024-05-22 11:40 ` Ville Syrjälä
@ 2024-05-24 9:23 ` Lisovskiy, Stanislav
0 siblings, 0 replies; 17+ messages in thread
From: Lisovskiy, Stanislav @ 2024-05-24 9:23 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx, jani.saarinen
On Wed, May 22, 2024 at 02:40:56PM +0300, Ville Syrjälä wrote:
> On Wed, May 22, 2024 at 11:01:32AM +0300, Lisovskiy, Stanislav wrote:
> > On Tue, May 21, 2024 at 09:09:16PM +0300, Ville Syrjälä wrote:
> > > On Tue, May 21, 2024 at 11:25:31AM +0300, Lisovskiy, Stanislav wrote:
> > > > On Mon, May 20, 2024 at 09:24:45PM +0300, Ville Syrjälä wrote:
> > > > > On Mon, May 20, 2024 at 10:38:36AM +0300, Stanislav Lisovskiy wrote:
> > > > > > Lets implement or change basic functions required for ultrajoiner
> > > > > > support from atomic commit/modesetting point of view.
> > > > > >
> > > > > > Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> > > > > > ---
> > > > > > drivers/gpu/drm/i915/display/intel_display.c | 66 +++++++++++++++++---
> > > > > > 1 file changed, 56 insertions(+), 10 deletions(-)
> > > > > >
> > > > > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> > > > > > index c74721188e59..c390b79a43d6 100644
> > > > > > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > > > > > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > > > > > @@ -242,33 +242,65 @@ is_trans_port_sync_mode(const struct intel_crtc_state *crtc_state)
> > > > > > is_trans_port_sync_slave(crtc_state);
> > > > > > }
> > > > > >
> > > > > > -static enum pipe joiner_master_pipe(const struct intel_crtc_state *crtc_state)
> > > > > > +static u8 joiner_master_pipes(const struct intel_crtc_state *crtc_state)
> > > > > > {
> > > > > > - return ffs(crtc_state->joiner_pipes) - 1;
> > > > > > + return BIT(PIPE_A) | BIT(PIPE_C);
> > > > >
> > > > > Not a fan of the hardcoded pipes.
> > > > >
> > > > > We could just do something like
> > > > > joiner_pipes & ((BIT(2) | BIT(0)) << joiner_master_pipe())
> > > > > or some variant of that.
> > > >
> > > > Well, here we need to decide whats worse: hardcoded bits/shifts versus harcoded pipes..
> > > > I would vote for pipes then, with reasoning that they are at least more obvious and easy to read.
> > > > It is anyway quite easy to change those here or make it platform based, if needed.
> > >
> > > Hardcoded pipes aren't going to allow us to make the rest of the
> > > code generic because the overall master pipe can be anything when
> > > ultrajoiner isn't used.
> >
> > joiner_master_pipes in current revision isn't supposed to calculate
> > master pipe for given crtc_state it just returns overall mask of the
> > pipes, which are allowed to be master.
>
> Then it seems misnamed, and also why is it taking a crtc_state?
Yeah, crtc_state isn't necessary here, I think.
>
> >
> > For actual calculation another function is supposed to be used, which is
> > intel_crtc_master_pipe.
> > That will determine, if its ultrajoiner or bigjoiner and return correspondent
> > pipe. It is also based now on assumption that master pipe is always the
> > slave pipe - 1, which I also don't like, if one day BSpec decides to make it
> > possible to have like master to be pipe B and slave to be pipe A,
> > then we are screwed with that approach.
> > Thats why I would prefer overall to set all those relations by some platform
> > based or programmatically set table mappings, however I guess that won't go
> > through reviews :)
> >
> > >
> > > Eg. the way we assign the bigjoiner_pipes is by simply setting a
> > > some number (either two or four) of consecutive bits in the mask.
> > > In order for that to keep working universally these functions must
> > > be able to answer questions based on that bitmask, no matter which
> > > consecutive set of bits are set.
> >
> > You probably mean that stuff:
> >
> > <------>if (intel_dp_need_ultrajoiner(intel_dp, adjusted_mode->crtc_clock))
> > <------><------>pipe_config->joiner_pipes = GENMASK(crtc->pipe + 3, crtc->pipe);
> > <------>else if (intel_dp_need_bigjoiner(intel_dp, connector,
> > <------><------><------><------><------> adjusted_mode->crtc_hdisplay,
> > <------><------><------><------><------> adjusted_mode->crtc_clock))
> > <------><------>pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe);
> >
> > That one is also about the same, in fact I think we should be able
> > to set this in a more meaningful way - what if some platform will support
> > 3 but not all 4 pipes for joiner, or 5 pipes..
> > Best approach would be to use something like joiner_master_pipes | joiner_slave_pipes
> > functions there, which return platform based masks of pipes, because
> > this GENMASK is kinda hardcoded and not explicit enough.
> >
> > >
> > > >
> > > > >
> > > > > > +}
> > > > > > +
> > > > > > +static u8 joiner_primary_master_pipes(const struct intel_crtc_state *crtc_state)
> > > > > > +{
> > > > > > + return BIT(PIPE_A);
> > > > >
> > > > > This is just the joiner_master_pipe() we already have.
> > > >
> > > > I decided to convert joiner_master_pipe to joiner_master_pipes which should return a mask,
> > > > instead of a pipe.
> > > > That approach makes it more generic: for bigjoiner we still get only a single bit set in a mask,
> > > > however for ultrajoiner case we have now 2 master pipes, so we need a mask here.
> > > >
> > > > joiner_primary_master_pipes is indeed supposed to return only a single primary master pipe,
> > > > however I decided that operating with masks instead of enum, seems more generic and practical approach,
> > > > for example if we need to get all pipes, which are not primary master, as below.
> > > >
> > > > >
> > > > > > }
> > > > > >
> > > > > > u8 intel_crtc_joiner_slave_pipes(const struct intel_crtc_state *crtc_state)
> > > > > > {
> > > > > > - if (crtc_state->joiner_pipes)
> > > > > > - return crtc_state->joiner_pipes & ~BIT(joiner_master_pipe(crtc_state));
> > > > > > + if (intel_is_ultrajoiner(crtc_state))
> > > > > > + return crtc_state->joiner_pipes & ~joiner_primary_master_pipes(crtc_state);
> > > > > > + else if (intel_is_bigjoiner(crtc_state))
> > > > > > + return crtc_state->joiner_pipes & ~joiner_master_pipes(crtc_state);
> > > > > > else
> > > > > > return 0;
> > > > >
> > > > > I don't see why this should make any distinction between bigjoiner
> > > > > and ultrajoiner.
> > > > >
> > > > > Either it returns everything that isn't the overall master,
> > > >
> > > > For ultrajoiner that is slave pipes + secondary master pipe.
> > > > I.e it is everything that is below primary master.
> > >
> > > Same for for non-ultrajoiner. The only difference is that there is just
> > > the one slave rather than three. But the callers don't need to care
> > > about that in general.
> >
> > There is a difference when we are doing actual register programming, there
> > we need to know exactly which pipes are just slaves,
>
> That would be bigjoiner_slave_pipes() in what I outlined.
>
> > which pipe is secondary
> > or primary master.
>
> And that is just the difference between ultrajoiner_master_pipe() vs.
> bigjoiner_master_pipes() & ~BIT(ultrajoiner_master_pipe())
>
> > However for things like state copying, yep we need to treat all except
> > primary master as slaves.
>
> And that would be just iterating through
> ultrajoiner_slave_pipes() (or joiner_slave_pipes(), depending
> on which of naming schemes I listed would be used).
So are we still going to use ultrajoiner/bigjoiner names in functions?.. :(
I thought that we are now calling primary master "joiner_primary" and everything
else is "joiner_secondary".
I would get all masters with joiner_primary_pipes(renamed from current joiner_master_pipes)
All bigjoiner slave pipes could be obtained by joiner_secondary_pipes &~ joiner_master_pipes
All ultrajoiner slave pipes(including secondary master) would be just joiner_secondary_pipes.
And ultrajoiner primary master we shall get by joiner_primary_pipE(returns just pipe enum).
That way we get rid of bigjoiner/ultrajoiner naming at least in most places and also
using new terminology.
Are you ok with that?
Stan
>
> >
> > >
> > > I suspect there is probably only few uses cases for this:
> > > - the master->slave state copying. And there we just want to
> > > go through all the slaves, no matter how many there are
> > > - during the high level modeset sequence (and probably a few
> > > other places as well) we need to simply skip all the slaves,
> > > and again it doesn't matter how many there are
> > >
> > > For the plane updates and such we probably don't really need to
> > > care about the master/slave relationships, so the current thing
> > > that just iterates all joined pipes will work perfectly fine.
> > >
> > > And for actual modeset sequencing I suspect we just need the
> > > bigjoiner master/slave bitmasks and make sure we iterate through
> > > each in turn:
> > > enable:
> > > 1. for_each_reverse(bigjoiner_slaves)
> > > 2. for_each_reverse(bigjoiner_masters)
> > > disable:
> > > 1. for_each(bigjoiner_masters)
> > > 2. for_each(bigjoiner_slaves)
> >
> > I would just unite those 2 cycles using new macro, I introduced, where
> > we can set explicitly the order in which it should attend each pipe in mask.
> > Also it will be completely transparent from hsw_crtc_enable/hsw_crtc_disable
> > point of view, without even having to mention things like master/slave there.
>
> Yeah, a single macro would be nice, assuming we can achive it without
> too many horrors. But still, the implementation just needs those two
> masks.
>
> >
> > >
> > > > > returns just all the bigjoiner slave pipes. Which one we want
> > > > > depends on the use case I guess. So we might need both variants.
> > > >
> > > > Yeah, we need both ways: sometimes we need to get all pipes except primary master.
> > > > And sometimes we need to get only slave pipes in Bigjoiner terminology.
> > > > There are use cases for both.
> > > >
> > > > However definition of slave pipe is a bit tricky here, because technically secondary
> > > > master pipe is also a slave pipe in relation to primary master pipe.
> > > >
> > > > >
> > > > > > }
> > > > > >
> > > > > > -bool intel_crtc_is_joiner_slave(const struct intel_crtc_state *crtc_state)
> > > > > > +bool intel_crtc_is_bigjoiner_slave(const struct intel_crtc_state *crtc_state)
> > > > > > {
> > > > > > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> > > > > >
> > > > > > return crtc_state->joiner_pipes &&
> > > > > > - crtc->pipe != joiner_master_pipe(crtc_state);
> > > > > > + !(BIT(crtc->pipe) & joiner_master_pipes(crtc_state));
> > > > >
> > > > > I'd probably add a joiner_slave_pipes() so that the logic is less
> > > > > convoluted.
> > > >
> > > > Yeah, then joiner_slave_pipes would have to return only slave pipes in
> > > > bigjoiner terminology.
> > > >
> > > > >
> > > > > But I think first we need a solid agreement on the terminology,
> > > > > and stick to it consistently.
> > > > >
> > > > > Perhaps we need names for?
> > > > > - the single master within the overall set of joined pipes
> > > > > (be it ultrajoiner master or the bigjoiner/uncompressed
> > > > > joiner master when ultrajoiner isn't used).
> > > > > Just call this joiner_master perhaps? Or perhaps just call it
> > > > > ultrajoiner_master but document that it is valid to use it
> > > > > also for the non-ultrajoiner cases.
> > > >
> > > > I think it would be quite natural to call it a primary master.
> > > >
> > > > Initially BSpec called it that way and it sounds logical.
> > > >
> > > > I.e now we have not only master/slave hierarchy, but also
> > > > second level of hierarchy between masters: secondary master
> > > > and primary master.
> > > > Other names sound less obvious tbh: i.e "master of masters" :)
> > > > or "overall master" and etc..
> > > >
> > > > That is why I'm a bit opposed to that Jani says to rename
> > > > master/slave to primary/secondary - we get a problem with
> > > > naming for Ultrajoiner then:
> > > > as we are going to have primary of primary pipe or smth like that.
> > > >
> > > > Can't think of anything better than using primary/secondary master.
> > > > If anyone has better sounding ideas - you are welcome.
> > >
> > > The bspec rename does this:
> > > master -> primary
> > > slave -> secondary
> > >
> > > I do agree that what you're going for here would have been pretty
> > > natural way to experss this, but I think that ship sailed when
> > > the annoying bspec rename happened. If we now start using those
> > > same names to refer to a completely different concept I think the
> > > end result will be extremely confusing.
> > >
> > > IMO we probably need to slighly extend the ultrajoiner and bigjoiners
> > > terms to cover all the joiner cases, which would look something like this:
> > > - ultrajoiner master/primary = the first pipe in the set
> > > - ultrajoiner slaves/secondaries = the rest of the pipes in the set
> > > - bigjoiner masters/primaries = first pipe + third pipe + ... in the set
> > > - bigjoiner slaves/secondaries = second pipe + fourth pipe + ... in the set
> > >
> > > Or perhaps we just drop the "ultra" part form the first two and
> > > speak of just "joiner" in general when referring to things on
> > > that level?
> >
> > Then we won't be able to distinguish between primary master and secondary master.
> > BSpec offers to call it Ultrajoiner master and Ultrajoiner secondary
> > which is assuming to be Bigjoiner master, however still _quite_ confusing.
> > We can call the primary master to be Ultrajoiner primary and refer to the rest
> > of pipes like bigjoiner primary/secondary.
> >
> > To me it sounds so much more complex compared to primary/secondary master/slave
> > to be honest.. Looks like we are inventing troubles for ourselves.
>
> Some people will just keep on complaining about the master/slave
> terminology, and having to keep responding to that is very tiresome.
> So we are going to do the rename to align to the new primary/secondary
> bspec terminology, if only to avoid that annoyance.
>
>
> So to avoid a bit of the confusion I think we can just use the
> generic term "joiner" at the high level stuff. The first pipe
> in the set will be the joiner_primary, everyone else is a
> joiner_secondary.
>
> For the low level DSS_CTL register frobbing I think we
> just need to be able to answer these simple questions:
> - is ultrajoiner used?
> - is bigjoiner used?
> - is uncompressed joiner used?
> - is this pipe an ultrajoiner primary?
> - is this pipe a bigjoiner primary?
> - is this pipe an uncompressed joiner primary?
>
> And beyond that we just need to be able to split
> bigjoiner/uncompressed joiner primaries from
> bigjoiner/uncompressed joiner secondaries for the
> purposes of the modeset iterator macros. IMO for that
> we can keep using the term "bigjoiner" even if it also
> covers uncompressed joiner as well.
>
> --
> Ville Syrjälä
> Intel
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2024-05-24 9:23 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-20 7:38 [PATCH 0/5] Ultrajoiner basic functionality series Stanislav Lisovskiy
2024-05-20 7:38 ` [PATCH 1/5] drm/i915: Rename all bigjoiner to joiner Stanislav Lisovskiy
2024-05-20 10:20 ` Jani Nikula
2024-05-20 7:38 ` [PATCH 2/5] drm/i915: Implement basic functions for ultrajoiner support Stanislav Lisovskiy
2024-05-20 18:24 ` Ville Syrjälä
2024-05-21 8:25 ` Lisovskiy, Stanislav
2024-05-21 18:09 ` Ville Syrjälä
2024-05-22 8:01 ` Lisovskiy, Stanislav
2024-05-22 11:40 ` Ville Syrjälä
2024-05-24 9:23 ` Lisovskiy, Stanislav
2024-05-20 7:38 ` [PATCH 3/5] drm/i915: Implement hw state readout for ultrajoiner Stanislav Lisovskiy
2024-05-20 7:38 ` [PATCH 4/5] drm/i915: Compute config and mode valid changes " Stanislav Lisovskiy
2024-05-21 4:28 ` kernel test robot
2024-05-20 7:38 ` [PATCH 5/5] drm/i915: Add new abstraction layer to handle pipe order for different joiners Stanislav Lisovskiy
2024-05-20 10:29 ` ✗ Fi.CI.CHECKPATCH: warning for Ultrajoiner basic functionality series Patchwork
2024-05-20 10:40 ` ✓ Fi.CI.BAT: success " Patchwork
2024-05-20 11:52 ` ✗ Fi.CI.IGT: failure " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox