* [PATCH 01/15] drm/i915: Add some essential functionality for joiners
2024-09-18 14:43 [PATCH 00/15] Ultrajoiner basic functionality series Ankit Nautiyal
@ 2024-09-18 14:43 ` Ankit Nautiyal
2024-09-18 14:43 ` [PATCH 02/15] drm/i915/display: Enhance iterators for modeset en/disable Ankit Nautiyal
` (17 subsequent siblings)
18 siblings, 0 replies; 34+ messages in thread
From: Ankit Nautiyal @ 2024-09-18 14:43 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe, suraj.kandpal, ville.syrjala
From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
In most of the cases we now try to avoid mentioning things like
"bigjoiner" or "ultrajoiner" trying to unify the API and refer
mostly to all this functionality as "joiner".
In majority cases that should be way to go.
However in some cases we still need to distinguish between
bigjoiner primaries and secondaries(such as DSC register programming).
Create correspondent helper functions and start using them,
in order be prepared for adding ultrajoiner functionality.
v2: Fixed checkpatch warnings (Ankit)
v3: Introduce ultrajoiner helpers in next patch.
v4: Streamline the helpers and add few more. (Ville)
v5: Add comment to clarify that helpers apply to both bigjoiner and
uncompressed joiner configurations. (Ville)
Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 45 ++++++++++++++++++++
drivers/gpu/drm/i915/display/intel_display.h | 2 +
drivers/gpu/drm/i915/display/intel_vdsc.c | 4 +-
3 files changed, 49 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 886abed1783b..9f108d5e00ef 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -254,6 +254,51 @@ static enum pipe joiner_primary_pipe(const struct intel_crtc_state *crtc_state)
return ffs(crtc_state->joiner_pipes) - 1;
}
+/*
+ * The following helper functions, despite being named for bigjoiner,
+ * are applicable to both bigjoiner and uncompressed joiner configurations.
+ */
+static bool is_bigjoiner(const struct intel_crtc_state *crtc_state)
+{
+ return hweight8(crtc_state->joiner_pipes) >= 2;
+}
+
+static u8 bigjoiner_primary_pipes(const struct intel_crtc_state *crtc_state)
+{
+ if (!is_bigjoiner(crtc_state))
+ return 0;
+
+ return crtc_state->joiner_pipes & (0b01010101 << joiner_primary_pipe(crtc_state));
+}
+
+static unsigned int bigjoiner_secondary_pipes(const struct intel_crtc_state *crtc_state)
+{
+ if (!is_bigjoiner(crtc_state))
+ return 0;
+
+ return crtc_state->joiner_pipes & (0b10101010 << joiner_primary_pipe(crtc_state));
+}
+
+bool intel_crtc_is_bigjoiner_primary(const struct intel_crtc_state *crtc_state)
+{
+ struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+
+ if (!is_bigjoiner(crtc_state))
+ return false;
+
+ return BIT(crtc->pipe) & bigjoiner_primary_pipes(crtc_state);
+}
+
+bool intel_crtc_is_bigjoiner_secondary(const struct intel_crtc_state *crtc_state)
+{
+ struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+
+ if (!is_bigjoiner(crtc_state))
+ return false;
+
+ return BIT(crtc->pipe) & bigjoiner_secondary_pipes(crtc_state);
+}
+
u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state)
{
if (crtc_state->joiner_pipes)
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index e48461410632..64ca0f1ae013 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -416,6 +416,8 @@ bool is_trans_port_sync_master(const struct intel_crtc_state *state);
u8 intel_crtc_joined_pipe_mask(const struct intel_crtc_state *crtc_state);
bool intel_crtc_is_joiner_secondary(const struct intel_crtc_state *crtc_state);
bool intel_crtc_is_joiner_primary(const struct intel_crtc_state *crtc_state);
+bool intel_crtc_is_bigjoiner_primary(const struct intel_crtc_state *crtc_state);
+bool intel_crtc_is_bigjoiner_secondary(const struct intel_crtc_state *crtc_state);
u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state);
struct intel_crtc *intel_primary_crtc(const struct intel_crtc_state *crtc_state);
bool intel_crtc_get_pipe_config(struct intel_crtc_state *crtc_state);
diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c b/drivers/gpu/drm/i915/display/intel_vdsc.c
index 2e849b015e74..8158e3702ed5 100644
--- a/drivers/gpu/drm/i915/display/intel_vdsc.c
+++ b/drivers/gpu/drm/i915/display/intel_vdsc.c
@@ -742,7 +742,7 @@ void intel_uncompressed_joiner_enable(const struct intel_crtc_state *crtc_state)
u32 dss_ctl1_val = 0;
if (crtc_state->joiner_pipes && !crtc_state->dsc.compression_enable) {
- if (intel_crtc_is_joiner_secondary(crtc_state))
+ if (intel_crtc_is_bigjoiner_secondary(crtc_state))
dss_ctl1_val |= UNCOMPRESSED_JOINER_SECONDARY;
else
dss_ctl1_val |= UNCOMPRESSED_JOINER_PRIMARY;
@@ -771,7 +771,7 @@ void intel_dsc_enable(const struct intel_crtc_state *crtc_state)
}
if (crtc_state->joiner_pipes) {
dss_ctl1_val |= BIG_JOINER_ENABLE;
- if (!intel_crtc_is_joiner_secondary(crtc_state))
+ if (intel_crtc_is_bigjoiner_primary(crtc_state))
dss_ctl1_val |= PRIMARY_BIG_JOINER_ENABLE;
}
intel_de_write(dev_priv, dss_ctl1_reg(crtc, crtc_state->cpu_transcoder), dss_ctl1_val);
--
2.45.2
^ permalink raw reply related [flat|nested] 34+ messages in thread* [PATCH 02/15] drm/i915/display: Enhance iterators for modeset en/disable
2024-09-18 14:43 [PATCH 00/15] Ultrajoiner basic functionality series Ankit Nautiyal
2024-09-18 14:43 ` [PATCH 01/15] drm/i915: Add some essential functionality for joiners Ankit Nautiyal
@ 2024-09-18 14:43 ` Ankit Nautiyal
2024-09-18 14:43 ` [PATCH 03/15] drm/i915/display_debugfs: Allow force joiner only if supported Ankit Nautiyal
` (16 subsequent siblings)
18 siblings, 0 replies; 34+ messages in thread
From: Ankit Nautiyal @ 2024-09-18 14:43 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe, suraj.kandpal, ville.syrjala
Joiners have specific enabling and disabling order dependent on primary
and secondary pipes. This becomes more complex with ultrajoiner where we
have ultrajoiner primary/secondary pipes in addition to bigjoiner
primary/secondary pipes. To unify the approach that works for present
and future joiner cases, use primary and secondary pipe masks to
iterate over pipes.
If joiner is used, derive bigoiner primary and secondary pipe masks
and use following sequences:
Disabling : disable primary pipes followed by secondary pipes,
Enabling: enable secondary pipes followed by primary pipes.
This works well with ultrajoiner too, as ultrajoiner has 2 bigjoiner
primary/secondary pairs (AC, BD).
For non joiner case, enable/disable based on usual pipe order A-D, D-A
respectively.
v2:
-Simplify the iterator macro. (Ville)
-Use struct intel_display. (Ville)
-Add prefix _intel to the helper name. (Ville)
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/display/intel_ddi.c | 14 +++----
drivers/gpu/drm/i915/display/intel_display.c | 40 ++++++++++++--------
drivers/gpu/drm/i915/display/intel_display.h | 26 +++++++++++++
drivers/gpu/drm/i915/display/intel_dp_mst.c | 14 +++----
4 files changed, 64 insertions(+), 30 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
index b1c294236cc8..85e519a21542 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -3115,11 +3115,12 @@ static void intel_ddi_post_disable_hdmi_or_sst(struct intel_atomic_state *state,
const struct intel_crtc_state *old_crtc_state,
const struct drm_connector_state *old_conn_state)
{
+ struct intel_display *display = to_intel_display(encoder);
struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
struct intel_crtc *pipe_crtc;
+ int i;
- for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(old_crtc_state)) {
+ for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i) {
const struct intel_crtc_state *old_pipe_crtc_state =
intel_atomic_get_old_crtc_state(state, pipe_crtc);
@@ -3130,8 +3131,7 @@ static void intel_ddi_post_disable_hdmi_or_sst(struct intel_atomic_state *state,
intel_ddi_disable_transcoder_func(old_crtc_state);
- for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(old_crtc_state)) {
+ for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i) {
const struct intel_crtc_state *old_pipe_crtc_state =
intel_atomic_get_old_crtc_state(state, pipe_crtc);
@@ -3382,8 +3382,9 @@ static void intel_enable_ddi(struct intel_atomic_state *state,
const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state)
{
- struct drm_i915_private *i915 = to_i915(encoder->base.dev);
+ struct intel_display *display = to_intel_display(encoder);
struct intel_crtc *pipe_crtc;
+ int i;
intel_ddi_enable_transcoder_func(encoder, crtc_state);
@@ -3394,8 +3395,7 @@ static void intel_enable_ddi(struct intel_atomic_state *state,
intel_ddi_wait_for_fec_status(encoder, crtc_state, true);
- for_each_intel_crtc_in_pipe_mask_reverse(&i915->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(crtc_state)) {
+ for_each_pipe_crtc_modeset_enable(display, pipe_crtc, crtc_state, i) {
const struct intel_crtc_state *pipe_crtc_state =
intel_atomic_get_new_crtc_state(state, pipe_crtc);
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 9f108d5e00ef..7cdc12188df9 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -299,6 +299,21 @@ bool intel_crtc_is_bigjoiner_secondary(const struct intel_crtc_state *crtc_state
return BIT(crtc->pipe) & bigjoiner_secondary_pipes(crtc_state);
}
+u8 _intel_modeset_primary_pipes(const struct intel_crtc_state *crtc_state)
+{
+ struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+
+ if (!is_bigjoiner(crtc_state))
+ return BIT(crtc->pipe);
+
+ return bigjoiner_primary_pipes(crtc_state);
+}
+
+u8 _intel_modeset_secondary_pipes(const struct intel_crtc_state *crtc_state)
+{
+ return bigjoiner_secondary_pipes(crtc_state);
+}
+
u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state)
{
if (crtc_state->joiner_pipes)
@@ -1729,18 +1744,16 @@ static void hsw_crtc_enable(struct intel_atomic_state *state,
struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
enum transcoder cpu_transcoder = new_crtc_state->cpu_transcoder;
struct intel_crtc *pipe_crtc;
+ int i;
if (drm_WARN_ON(&dev_priv->drm, crtc->active))
return;
-
- for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(new_crtc_state))
+ for_each_pipe_crtc_modeset_enable(display, pipe_crtc, new_crtc_state, i)
intel_dmc_enable_pipe(display, pipe_crtc->pipe);
intel_encoders_pre_pll_enable(state, crtc);
- for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(new_crtc_state)) {
+ for_each_pipe_crtc_modeset_enable(display, pipe_crtc, new_crtc_state, i) {
const struct intel_crtc_state *pipe_crtc_state =
intel_atomic_get_new_crtc_state(state, pipe_crtc);
@@ -1750,8 +1763,7 @@ static void hsw_crtc_enable(struct intel_atomic_state *state,
intel_encoders_pre_enable(state, crtc);
- for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(new_crtc_state)) {
+ for_each_pipe_crtc_modeset_enable(display, pipe_crtc, new_crtc_state, i) {
const struct intel_crtc_state *pipe_crtc_state =
intel_atomic_get_new_crtc_state(state, pipe_crtc);
@@ -1769,8 +1781,7 @@ static void hsw_crtc_enable(struct intel_atomic_state *state,
if (!transcoder_is_dsi(cpu_transcoder))
hsw_configure_cpu_transcoder(new_crtc_state);
- for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(new_crtc_state)) {
+ for_each_pipe_crtc_modeset_enable(display, pipe_crtc, new_crtc_state, i) {
const struct intel_crtc_state *pipe_crtc_state =
intel_atomic_get_new_crtc_state(state, pipe_crtc);
@@ -1805,8 +1816,7 @@ static void hsw_crtc_enable(struct intel_atomic_state *state,
intel_encoders_enable(state, crtc);
- for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(new_crtc_state)) {
+ for_each_pipe_crtc_modeset_enable(display, pipe_crtc, new_crtc_state, i) {
const struct intel_crtc_state *pipe_crtc_state =
intel_atomic_get_new_crtc_state(state, pipe_crtc);
enum pipe hsw_workaround_pipe;
@@ -1889,10 +1899,10 @@ static void hsw_crtc_disable(struct intel_atomic_state *state,
struct intel_crtc *crtc)
{
struct intel_display *display = to_intel_display(state);
- struct drm_i915_private *i915 = to_i915(display->drm);
const struct intel_crtc_state *old_crtc_state =
intel_atomic_get_old_crtc_state(state, crtc);
struct intel_crtc *pipe_crtc;
+ int i;
/*
* FIXME collapse everything to one hook.
@@ -1901,8 +1911,7 @@ static void hsw_crtc_disable(struct intel_atomic_state *state,
intel_encoders_disable(state, crtc);
intel_encoders_post_disable(state, crtc);
- for_each_intel_crtc_in_pipe_mask(&i915->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(old_crtc_state)) {
+ for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i) {
const struct intel_crtc_state *old_pipe_crtc_state =
intel_atomic_get_old_crtc_state(state, pipe_crtc);
@@ -1911,8 +1920,7 @@ static void hsw_crtc_disable(struct intel_atomic_state *state,
intel_encoders_post_pll_disable(state, crtc);
- for_each_intel_crtc_in_pipe_mask(&i915->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(old_crtc_state))
+ for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i)
intel_dmc_disable_pipe(display, pipe_crtc->pipe);
}
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index 64ca0f1ae013..783562dc013b 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -392,6 +392,30 @@ enum phy_fia {
((connector) = to_intel_connector((__state)->base.connectors[__i].ptr), \
(new_connector_state) = to_intel_digital_connector_state((__state)->base.connectors[__i].new_state), 1))
+#define for_each_crtc_in_masks(display, crtc, first_pipes, second_pipes, i) \
+ for ((i) = 0; \
+ (i) < (I915_MAX_PIPES * 2) && ((crtc) = intel_crtc_for_pipe(display, (i) % I915_MAX_PIPES), 1); \
+ (i)++) \
+ for_each_if((crtc) && ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)) & BIT(i))
+
+#define for_each_crtc_in_masks_reverse(display, crtc, first_pipes, second_pipes, i) \
+ for ((i) = (I915_MAX_PIPES * 2 - 1); \
+ (i) >= 0 && ((crtc) = intel_crtc_for_pipe(display, (i) % I915_MAX_PIPES), 1); \
+ (i)--) \
+ for_each_if((crtc) && ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)) & BIT(i))
+
+#define for_each_pipe_crtc_modeset_disable(display, crtc, crtc_state, i) \
+ for_each_crtc_in_masks(display, crtc, \
+ _intel_modeset_primary_pipes(crtc_state), \
+ _intel_modeset_secondary_pipes(crtc_state), \
+ i)
+
+#define for_each_pipe_crtc_modeset_enable(display, crtc, crtc_state, i) \
+ for_each_crtc_in_masks_reverse(display, crtc, \
+ _intel_modeset_primary_pipes(crtc_state), \
+ _intel_modeset_secondary_pipes(crtc_state), \
+ i)
+
int intel_atomic_check(struct drm_device *dev, struct drm_atomic_state *state);
int intel_atomic_add_affected_planes(struct intel_atomic_state *state,
struct intel_crtc *crtc);
@@ -419,6 +443,8 @@ bool intel_crtc_is_joiner_primary(const struct intel_crtc_state *crtc_state);
bool intel_crtc_is_bigjoiner_primary(const struct intel_crtc_state *crtc_state);
bool intel_crtc_is_bigjoiner_secondary(const struct intel_crtc_state *crtc_state);
u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state);
+u8 _intel_modeset_primary_pipes(const struct intel_crtc_state *crtc_state);
+u8 _intel_modeset_secondary_pipes(const struct intel_crtc_state *crtc_state);
struct intel_crtc *intel_primary_crtc(const struct intel_crtc_state *crtc_state);
bool intel_crtc_get_pipe_config(struct intel_crtc_state *crtc_state);
bool intel_pipe_config_compare(const struct intel_crtc_state *current_config,
diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index dc050da29815..7debefd4a0d6 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -990,6 +990,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state,
const struct intel_crtc_state *old_crtc_state,
const struct drm_connector_state *old_conn_state)
{
+ struct intel_display *display = to_intel_display(encoder);
struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder);
struct intel_digital_port *dig_port = intel_mst->primary;
struct intel_dp *intel_dp = &dig_port->dp;
@@ -1006,6 +1007,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state,
struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
struct intel_crtc *pipe_crtc;
bool last_mst_stream;
+ int i;
intel_dp->active_mst_links--;
last_mst_stream = intel_dp->active_mst_links == 0;
@@ -1013,8 +1015,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state,
DISPLAY_VER(dev_priv) >= 12 && last_mst_stream &&
!intel_dp_mst_is_master_trans(old_crtc_state));
- for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(old_crtc_state)) {
+ for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i) {
const struct intel_crtc_state *old_pipe_crtc_state =
intel_atomic_get_old_crtc_state(state, pipe_crtc);
@@ -1038,8 +1039,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state,
intel_ddi_disable_transcoder_func(old_crtc_state);
- for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(old_crtc_state)) {
+ for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i) {
const struct intel_crtc_state *old_pipe_crtc_state =
intel_atomic_get_old_crtc_state(state, pipe_crtc);
@@ -1248,6 +1248,7 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state,
const struct intel_crtc_state *pipe_config,
const struct drm_connector_state *conn_state)
{
+ struct intel_display *display = to_intel_display(encoder);
struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder);
struct intel_digital_port *dig_port = intel_mst->primary;
struct intel_dp *intel_dp = &dig_port->dp;
@@ -1258,7 +1259,7 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state,
enum transcoder trans = pipe_config->cpu_transcoder;
bool first_mst_stream = intel_dp->active_mst_links == 1;
struct intel_crtc *pipe_crtc;
- int ret;
+ int ret, i;
drm_WARN_ON(&dev_priv->drm, pipe_config->has_pch_encoder);
@@ -1305,8 +1306,7 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state,
intel_enable_transcoder(pipe_config);
- for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(pipe_config)) {
+ for_each_pipe_crtc_modeset_enable(display, pipe_crtc, pipe_config, i) {
const struct intel_crtc_state *pipe_crtc_state =
intel_atomic_get_new_crtc_state(state, pipe_crtc);
--
2.45.2
^ permalink raw reply related [flat|nested] 34+ messages in thread* [PATCH 03/15] drm/i915/display_debugfs: Allow force joiner only if supported
2024-09-18 14:43 [PATCH 00/15] Ultrajoiner basic functionality series Ankit Nautiyal
2024-09-18 14:43 ` [PATCH 01/15] drm/i915: Add some essential functionality for joiners Ankit Nautiyal
2024-09-18 14:43 ` [PATCH 02/15] drm/i915/display: Enhance iterators for modeset en/disable Ankit Nautiyal
@ 2024-09-18 14:43 ` Ankit Nautiyal
2024-09-19 15:04 ` Ville Syrjälä
2024-09-18 14:43 ` [PATCH 04/15] drm/i915/display: Modify debugfs for joiner to force n pipes Ankit Nautiyal
` (15 subsequent siblings)
18 siblings, 1 reply; 34+ messages in thread
From: Ankit Nautiyal @ 2024-09-18 14:43 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe, suraj.kandpal, ville.syrjala
Currently we support joiner only for DP encoder.
Do not create the debugfs for joiner if DP does not support the joiner.
This will also help avoiding cases where config has eDP MSO, with which
we do not support joiner.
v2: Check for intel_dp_has_joiner and avoid creating debugfs if not
supported. (Ville)
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_display_debugfs.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
index 86403a9318b0..cda3f6cf724d 100644
--- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
+++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
@@ -1516,6 +1516,7 @@ void intel_connector_debugfs_add(struct intel_connector *connector)
struct drm_i915_private *i915 = to_i915(connector->base.dev);
struct dentry *root = connector->base.debugfs_entry;
int connector_type = connector->base.connector_type;
+ struct intel_dp *intel_dp = intel_attached_dp(connector);
/* The connector must have been registered beforehands. */
if (!root)
@@ -1550,7 +1551,7 @@ void intel_connector_debugfs_add(struct intel_connector *connector)
connector, &i915_dsc_fractional_bpp_fops);
}
- if (HAS_BIGJOINER(i915) &&
+ if (HAS_BIGJOINER(i915) && intel_dp_has_joiner(intel_dp) &&
(connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
connector_type == DRM_MODE_CONNECTOR_eDP)) {
debugfs_create_bool("i915_bigjoiner_force_enable", 0644, root,
--
2.45.2
^ permalink raw reply related [flat|nested] 34+ messages in thread* Re: [PATCH 03/15] drm/i915/display_debugfs: Allow force joiner only if supported
2024-09-18 14:43 ` [PATCH 03/15] drm/i915/display_debugfs: Allow force joiner only if supported Ankit Nautiyal
@ 2024-09-19 15:04 ` Ville Syrjälä
0 siblings, 0 replies; 34+ messages in thread
From: Ville Syrjälä @ 2024-09-19 15:04 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, suraj.kandpal
On Wed, Sep 18, 2024 at 08:13:31PM +0530, Ankit Nautiyal wrote:
> Currently we support joiner only for DP encoder.
> Do not create the debugfs for joiner if DP does not support the joiner.
> This will also help avoiding cases where config has eDP MSO, with which
> we do not support joiner.
>
> v2: Check for intel_dp_has_joiner and avoid creating debugfs if not
> supported. (Ville)
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display_debugfs.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> index 86403a9318b0..cda3f6cf724d 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> @@ -1516,6 +1516,7 @@ void intel_connector_debugfs_add(struct intel_connector *connector)
> struct drm_i915_private *i915 = to_i915(connector->base.dev);
> struct dentry *root = connector->base.debugfs_entry;
> int connector_type = connector->base.connector_type;
> + struct intel_dp *intel_dp = intel_attached_dp(connector);
>
> /* The connector must have been registered beforehands. */
> if (!root)
> @@ -1550,7 +1551,7 @@ void intel_connector_debugfs_add(struct intel_connector *connector)
> connector, &i915_dsc_fractional_bpp_fops);
> }
>
> - if (HAS_BIGJOINER(i915) &&
> + if (HAS_BIGJOINER(i915) && intel_dp_has_joiner(intel_dp) &&
Can't we drop the HAS_BIGJOINER() check now?
> (connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
> connector_type == DRM_MODE_CONNECTOR_eDP)) {
> debugfs_create_bool("i915_bigjoiner_force_enable", 0644, root,
> --
> 2.45.2
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 04/15] drm/i915/display: Modify debugfs for joiner to force n pipes
2024-09-18 14:43 [PATCH 00/15] Ultrajoiner basic functionality series Ankit Nautiyal
` (2 preceding siblings ...)
2024-09-18 14:43 ` [PATCH 03/15] drm/i915/display_debugfs: Allow force joiner only if supported Ankit Nautiyal
@ 2024-09-18 14:43 ` Ankit Nautiyal
2024-09-19 15:07 ` Ville Syrjälä
2024-09-18 14:43 ` [PATCH 05/15] drm/i915/dp: Add helper to compute num pipes required Ankit Nautiyal
` (14 subsequent siblings)
18 siblings, 1 reply; 34+ messages in thread
From: Ankit Nautiyal @ 2024-09-18 14:43 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe, suraj.kandpal, ville.syrjala
At the moment, the debugfs for joiner allows only to force enable/disable
pipe joiner for 2 pipes. Modify it to force join 'n' number of pipes,
where n is a valid pipe joiner configuration.
This will help in case of ultra joiner where 4 pipes are joined.
v2:
-Fix commit message to state that only valid joiner config can be
forced. (Suraj)
-Rename the identifiers to have INTEL_BIG/NONE_JOINER_PIPES. (Suraj)
v3:
-Avoid enum for joiner pipe counts, use bare numbers for better
readability. (Ville)
-Remove redundant prints from debugfs. (Ville)
v4:
-Return -EINVAL if joiner forced to an invalid value.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
.../drm/i915/display/intel_display_debugfs.c | 63 ++++++++++++++++++-
.../drm/i915/display/intel_display_types.h | 2 +-
drivers/gpu/drm/i915/display/intel_dp.c | 2 +-
3 files changed, 63 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
index cda3f6cf724d..5775413c6763 100644
--- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
+++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
@@ -1504,6 +1504,65 @@ static int intel_crtc_pipe_show(struct seq_file *m, void *unused)
}
DEFINE_SHOW_ATTRIBUTE(intel_crtc_pipe);
+static int i915_joiner_show(struct seq_file *m, void *data)
+{
+ struct intel_connector *connector = m->private;
+
+ seq_printf(m, "%d\n", connector->force_joined_pipes);
+
+ return 0;
+}
+
+static ssize_t i915_joiner_write(struct file *file,
+ const char __user *ubuf,
+ size_t len, loff_t *offp)
+{
+ struct seq_file *m = file->private_data;
+ struct intel_connector *connector = m->private;
+ struct intel_display *display = to_intel_display(connector);
+ int force_join_pipes = 0;
+ int ret;
+
+ if (len == 0)
+ return 0;
+
+ ret = kstrtoint_from_user(ubuf, len, 0, &force_join_pipes);
+ if (ret < 0)
+ return ret;
+
+ switch (force_join_pipes) {
+ case 0:
+ fallthrough;
+ case 2:
+ connector->force_joined_pipes = force_join_pipes;
+ break;
+ default:
+ drm_dbg(display->drm, "Ignoring Invalid num of pipes %d for force joining\n",
+ force_join_pipes);
+ connector->force_joined_pipes = 0;
+
+ return -EINVAL;
+ }
+
+ *offp += len;
+
+ return len;
+}
+
+static int i915_joiner_open(struct inode *inode, struct file *file)
+{
+ return single_open(file, i915_joiner_show, inode->i_private);
+}
+
+static const struct file_operations i915_joiner_fops = {
+ .owner = THIS_MODULE,
+ .open = i915_joiner_open,
+ .read = seq_read,
+ .llseek = seq_lseek,
+ .release = single_release,
+ .write = i915_joiner_write
+};
+
/**
* intel_connector_debugfs_add - add i915 specific connector debugfs files
* @connector: pointer to a registered intel_connector
@@ -1554,8 +1613,8 @@ void intel_connector_debugfs_add(struct intel_connector *connector)
if (HAS_BIGJOINER(i915) && intel_dp_has_joiner(intel_dp) &&
(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_file("i915_joiner_force_enable", 0644, root,
+ connector, &i915_joiner_fops);
}
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 000ab373c887..2ac2068aefa4 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -524,7 +524,7 @@ struct intel_connector {
struct intel_dp *mst_port;
- bool force_bigjoiner_enable;
+ int force_joined_pipes;
struct {
struct drm_dp_aux *dsc_decompression_aux;
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 19f78432cc8f..2e35a81fa6d1 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -1280,7 +1280,7 @@ bool intel_dp_need_joiner(struct intel_dp *intel_dp,
return false;
return clock > i915->display.cdclk.max_dotclk_freq || hdisplay > 5120 ||
- connector->force_bigjoiner_enable;
+ connector->force_joined_pipes == 2;
}
bool intel_dp_has_dsc(const struct intel_connector *connector)
--
2.45.2
^ permalink raw reply related [flat|nested] 34+ messages in thread* Re: [PATCH 04/15] drm/i915/display: Modify debugfs for joiner to force n pipes
2024-09-18 14:43 ` [PATCH 04/15] drm/i915/display: Modify debugfs for joiner to force n pipes Ankit Nautiyal
@ 2024-09-19 15:07 ` Ville Syrjälä
0 siblings, 0 replies; 34+ messages in thread
From: Ville Syrjälä @ 2024-09-19 15:07 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, suraj.kandpal
On Wed, Sep 18, 2024 at 08:13:32PM +0530, Ankit Nautiyal wrote:
> At the moment, the debugfs for joiner allows only to force enable/disable
> pipe joiner for 2 pipes. Modify it to force join 'n' number of pipes,
> where n is a valid pipe joiner configuration.
> This will help in case of ultra joiner where 4 pipes are joined.
>
> v2:
> -Fix commit message to state that only valid joiner config can be
> forced. (Suraj)
> -Rename the identifiers to have INTEL_BIG/NONE_JOINER_PIPES. (Suraj)
> v3:
> -Avoid enum for joiner pipe counts, use bare numbers for better
> readability. (Ville)
> -Remove redundant prints from debugfs. (Ville)
> v4:
> -Return -EINVAL if joiner forced to an invalid value.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> .../drm/i915/display/intel_display_debugfs.c | 63 ++++++++++++++++++-
> .../drm/i915/display/intel_display_types.h | 2 +-
> drivers/gpu/drm/i915/display/intel_dp.c | 2 +-
> 3 files changed, 63 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> index cda3f6cf724d..5775413c6763 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> @@ -1504,6 +1504,65 @@ static int intel_crtc_pipe_show(struct seq_file *m, void *unused)
> }
> DEFINE_SHOW_ATTRIBUTE(intel_crtc_pipe);
>
> +static int i915_joiner_show(struct seq_file *m, void *data)
> +{
> + struct intel_connector *connector = m->private;
> +
> + seq_printf(m, "%d\n", connector->force_joined_pipes);
> +
> + return 0;
> +}
> +
> +static ssize_t i915_joiner_write(struct file *file,
> + const char __user *ubuf,
> + size_t len, loff_t *offp)
> +{
> + struct seq_file *m = file->private_data;
> + struct intel_connector *connector = m->private;
> + struct intel_display *display = to_intel_display(connector);
> + int force_join_pipes = 0;
'force_joined_pipes' for consistency
> + int ret;
> +
> + if (len == 0)
> + return 0;
> +
> + ret = kstrtoint_from_user(ubuf, len, 0, &force_join_pipes);
> + if (ret < 0)
> + return ret;
> +
> + switch (force_join_pipes) {
> + case 0:
> + fallthrough;
> + case 2:
> + connector->force_joined_pipes = force_join_pipes;
> + break;
> + default:
> + drm_dbg(display->drm, "Ignoring Invalid num of pipes %d for force joining\n",
> + force_join_pipes);
> + connector->force_joined_pipes = 0;
I don't think we should do any of that. Just return the error.
> +
> + return -EINVAL;
> + }
> +
> + *offp += len;
> +
> + return len;
> +}
> +
> +static int i915_joiner_open(struct inode *inode, struct file *file)
> +{
> + return single_open(file, i915_joiner_show, inode->i_private);
> +}
> +
> +static const struct file_operations i915_joiner_fops = {
> + .owner = THIS_MODULE,
> + .open = i915_joiner_open,
> + .read = seq_read,
> + .llseek = seq_lseek,
> + .release = single_release,
> + .write = i915_joiner_write
> +};
> +
> /**
> * intel_connector_debugfs_add - add i915 specific connector debugfs files
> * @connector: pointer to a registered intel_connector
> @@ -1554,8 +1613,8 @@ void intel_connector_debugfs_add(struct intel_connector *connector)
> if (HAS_BIGJOINER(i915) && intel_dp_has_joiner(intel_dp) &&
> (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_file("i915_joiner_force_enable", 0644, root,
> + connector, &i915_joiner_fops);
> }
>
> 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 000ab373c887..2ac2068aefa4 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -524,7 +524,7 @@ struct intel_connector {
>
> struct intel_dp *mst_port;
>
> - bool force_bigjoiner_enable;
> + int force_joined_pipes;
>
> struct {
> struct drm_dp_aux *dsc_decompression_aux;
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 19f78432cc8f..2e35a81fa6d1 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -1280,7 +1280,7 @@ bool intel_dp_need_joiner(struct intel_dp *intel_dp,
> return false;
>
> return clock > i915->display.cdclk.max_dotclk_freq || hdisplay > 5120 ||
> - connector->force_bigjoiner_enable;
> + connector->force_joined_pipes == 2;
> }
>
> bool intel_dp_has_dsc(const struct intel_connector *connector)
> --
> 2.45.2
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 05/15] drm/i915/dp: Add helper to compute num pipes required
2024-09-18 14:43 [PATCH 00/15] Ultrajoiner basic functionality series Ankit Nautiyal
` (3 preceding siblings ...)
2024-09-18 14:43 ` [PATCH 04/15] drm/i915/display: Modify debugfs for joiner to force n pipes Ankit Nautiyal
@ 2024-09-18 14:43 ` Ankit Nautiyal
2024-09-19 15:12 ` Ville Syrjälä
2024-09-18 14:43 ` [PATCH 06/15] drm/i915/display: Add debugfs support to avoid joiner Ankit Nautiyal
` (13 subsequent siblings)
18 siblings, 1 reply; 34+ messages in thread
From: Ankit Nautiyal @ 2024-09-18 14:43 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe, suraj.kandpal, ville.syrjala
Add a helper to compute the number of pipes required.
This will depend on whether the joiner is required or is forced through
the debugfs. If no joiner is required the helper returns 1.
v2:
-Return 1 if no joiner is required. (Ville)
-Change the suffix from joined_pipes to num_pipes. (Ville)
-Use number of pipes while calculating joined_pipe masks and
max_dotclk. (Ville)
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 51 +++++++++++++--------
drivers/gpu/drm/i915/display/intel_dp.h | 6 +--
drivers/gpu/drm/i915/display/intel_dp_mst.c | 23 ++++------
3 files changed, 44 insertions(+), 36 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 2e35a81fa6d1..96ad048b68cf 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -1270,17 +1270,35 @@ intel_dp_mode_valid_downstream(struct intel_connector *connector,
return MODE_OK;
}
-bool intel_dp_need_joiner(struct intel_dp *intel_dp,
- struct intel_connector *connector,
- int hdisplay, int clock)
+static
+bool intel_dp_needs_bigjoiner(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_joiner(intel_dp))
return false;
- return clock > i915->display.cdclk.max_dotclk_freq || hdisplay > 5120 ||
- connector->force_joined_pipes == 2;
+ return clock > i915->display.cdclk.max_dotclk_freq || hdisplay > 5120;
+}
+
+int intel_dp_compute_num_pipes(struct intel_dp *intel_dp,
+ struct intel_connector *connector,
+ int hdisplay, int clock)
+{
+ switch (connector->force_joined_pipes) {
+ case 2:
+ return connector->force_joined_pipes;
+ default:
+ MISSING_CASE(connector->force_joined_pipes);
+ fallthrough;
+ case 0:
+ if (intel_dp_needs_bigjoiner(intel_dp, connector, hdisplay, clock))
+ return 2;
+ }
+
+ return 1;
}
bool intel_dp_has_dsc(const struct intel_connector *connector)
@@ -1317,7 +1335,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;
int num_joined_pipes;
status = intel_cpu_transcoder_mode_valid(dev_priv, mode);
@@ -1339,13 +1357,9 @@ intel_dp_mode_valid(struct drm_connector *_connector,
target_clock = fixed_mode->clock;
}
- if (intel_dp_need_joiner(intel_dp, connector,
- mode->hdisplay, target_clock)) {
- joiner = true;
- max_dotclk *= 2;
- }
-
- num_joined_pipes = joiner ? 2 : 1;
+ num_joined_pipes = intel_dp_compute_num_pipes(intel_dp, connector,
+ mode->hdisplay, target_clock);
+ max_dotclk *= num_joined_pipes;
if (target_clock > max_dotclk)
return MODE_CLOCK_HIGH;
@@ -2552,12 +2566,11 @@ intel_dp_compute_link_config(struct intel_encoder *encoder,
!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))
- pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe);
-
- num_joined_pipes = intel_crtc_num_joined_pipes(pipe_config);
+ num_joined_pipes = intel_dp_compute_num_pipes(intel_dp, connector,
+ adjusted_mode->crtc_hdisplay,
+ adjusted_mode->crtc_clock);
+ if (num_joined_pipes > 1)
+ pipe_config->joiner_pipes = GENMASK(crtc->pipe + num_joined_pipes - 1, crtc->pipe);
joiner_needs_dsc = intel_dp_joiner_needs_dsc(i915, num_joined_pipes);
diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h
index a0a31fb64716..d72ca99e3a1c 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.h
+++ b/drivers/gpu/drm/i915/display/intel_dp.h
@@ -154,9 +154,9 @@ int intel_dp_dsc_sink_max_compressed_bpp(const struct intel_connector *connector
u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
int mode_clock, int mode_hdisplay,
int num_joined_pipes);
-bool intel_dp_need_joiner(struct intel_dp *intel_dp,
- struct intel_connector *connector,
- int hdisplay, int clock);
+int intel_dp_compute_num_pipes(struct intel_dp *intel_dp,
+ struct intel_connector *connector,
+ int hdisplay, int clock);
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 7debefd4a0d6..df380f6ee76c 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -580,12 +580,11 @@ 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,
- adjusted_mode->crtc_hdisplay,
- adjusted_mode->crtc_clock))
- pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe);
-
- num_joined_pipes = intel_crtc_num_joined_pipes(pipe_config);
+ num_joined_pipes = intel_dp_compute_num_pipes(intel_dp, connector,
+ adjusted_mode->crtc_hdisplay,
+ adjusted_mode->crtc_clock);
+ if (num_joined_pipes > 1)
+ pipe_config->joiner_pipes = GENMASK(crtc->pipe + num_joined_pipes - 1, crtc->pipe);
pipe_config->sink_format = INTEL_OUTPUT_FORMAT_RGB;
pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB;
@@ -1427,7 +1426,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;
u16 dsc_max_compressed_bpp = 0;
u8 dsc_slice_count = 0;
int target_clock = mode->clock;
@@ -1471,13 +1470,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_joiner(intel_dp, intel_connector,
- mode->hdisplay, target_clock)) {
- joiner = true;
- max_dotclk *= 2;
- }
-
- num_joined_pipes = joiner ? 2 : 1;
+ num_joined_pipes = intel_dp_compute_num_pipes(intel_dp, intel_connector,
+ mode->hdisplay, target_clock);
+ max_dotclk *= num_joined_pipes;
ret = drm_modeset_lock(&mgr->base.lock, ctx);
if (ret)
--
2.45.2
^ permalink raw reply related [flat|nested] 34+ messages in thread* Re: [PATCH 05/15] drm/i915/dp: Add helper to compute num pipes required
2024-09-18 14:43 ` [PATCH 05/15] drm/i915/dp: Add helper to compute num pipes required Ankit Nautiyal
@ 2024-09-19 15:12 ` Ville Syrjälä
0 siblings, 0 replies; 34+ messages in thread
From: Ville Syrjälä @ 2024-09-19 15:12 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, suraj.kandpal
On Wed, Sep 18, 2024 at 08:13:33PM +0530, Ankit Nautiyal wrote:
> Add a helper to compute the number of pipes required.
> This will depend on whether the joiner is required or is forced through
> the debugfs. If no joiner is required the helper returns 1.
>
> v2:
> -Return 1 if no joiner is required. (Ville)
> -Change the suffix from joined_pipes to num_pipes. (Ville)
> -Use number of pipes while calculating joined_pipe masks and
> max_dotclk. (Ville)
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_dp.c | 51 +++++++++++++--------
> drivers/gpu/drm/i915/display/intel_dp.h | 6 +--
> drivers/gpu/drm/i915/display/intel_dp_mst.c | 23 ++++------
> 3 files changed, 44 insertions(+), 36 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 2e35a81fa6d1..96ad048b68cf 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -1270,17 +1270,35 @@ intel_dp_mode_valid_downstream(struct intel_connector *connector,
> return MODE_OK;
> }
>
> -bool intel_dp_need_joiner(struct intel_dp *intel_dp,
> - struct intel_connector *connector,
> - int hdisplay, int clock)
> +static
> +bool intel_dp_needs_bigjoiner(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_joiner(intel_dp))
> return false;
>
> - return clock > i915->display.cdclk.max_dotclk_freq || hdisplay > 5120 ||
> - connector->force_joined_pipes == 2;
> + return clock > i915->display.cdclk.max_dotclk_freq || hdisplay > 5120;
> +}
> +
> +int intel_dp_compute_num_pipes(struct intel_dp *intel_dp,
> + struct intel_connector *connector,
> + int hdisplay, int clock)
intel_dp_compute_num_joined_pipes() to be a bit more specfic?
Or even just intel_dp_num_joined_pipes()?
> +{
> + switch (connector->force_joined_pipes) {
> + case 2:
> + return connector->force_joined_pipes;
> + default:
> + MISSING_CASE(connector->force_joined_pipes);
> + fallthrough;
> + case 0:
> + if (intel_dp_needs_bigjoiner(intel_dp, connector, hdisplay, clock))
> + return 2;
> + }
> +
> + return 1;
I think that could be simplified to just:
{
if (force_joined_pipes)
return force_joined_pipes;
if (need_bigjoiner())
return 2;
return 1;
}
Apart from that this looks good.
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> }
>
> bool intel_dp_has_dsc(const struct intel_connector *connector)
> @@ -1317,7 +1335,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;
> int num_joined_pipes;
>
> status = intel_cpu_transcoder_mode_valid(dev_priv, mode);
> @@ -1339,13 +1357,9 @@ intel_dp_mode_valid(struct drm_connector *_connector,
> target_clock = fixed_mode->clock;
> }
>
> - if (intel_dp_need_joiner(intel_dp, connector,
> - mode->hdisplay, target_clock)) {
> - joiner = true;
> - max_dotclk *= 2;
> - }
> -
> - num_joined_pipes = joiner ? 2 : 1;
> + num_joined_pipes = intel_dp_compute_num_pipes(intel_dp, connector,
> + mode->hdisplay, target_clock);
> + max_dotclk *= num_joined_pipes;
>
> if (target_clock > max_dotclk)
> return MODE_CLOCK_HIGH;
> @@ -2552,12 +2566,11 @@ intel_dp_compute_link_config(struct intel_encoder *encoder,
> !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))
> - pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe);
> -
> - num_joined_pipes = intel_crtc_num_joined_pipes(pipe_config);
> + num_joined_pipes = intel_dp_compute_num_pipes(intel_dp, connector,
> + adjusted_mode->crtc_hdisplay,
> + adjusted_mode->crtc_clock);
> + if (num_joined_pipes > 1)
> + pipe_config->joiner_pipes = GENMASK(crtc->pipe + num_joined_pipes - 1, crtc->pipe);
>
> joiner_needs_dsc = intel_dp_joiner_needs_dsc(i915, num_joined_pipes);
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h
> index a0a31fb64716..d72ca99e3a1c 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.h
> +++ b/drivers/gpu/drm/i915/display/intel_dp.h
> @@ -154,9 +154,9 @@ int intel_dp_dsc_sink_max_compressed_bpp(const struct intel_connector *connector
> u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
> int mode_clock, int mode_hdisplay,
> int num_joined_pipes);
> -bool intel_dp_need_joiner(struct intel_dp *intel_dp,
> - struct intel_connector *connector,
> - int hdisplay, int clock);
> +int intel_dp_compute_num_pipes(struct intel_dp *intel_dp,
> + struct intel_connector *connector,
> + int hdisplay, int clock);
>
> 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 7debefd4a0d6..df380f6ee76c 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -580,12 +580,11 @@ 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,
> - adjusted_mode->crtc_hdisplay,
> - adjusted_mode->crtc_clock))
> - pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe);
> -
> - num_joined_pipes = intel_crtc_num_joined_pipes(pipe_config);
> + num_joined_pipes = intel_dp_compute_num_pipes(intel_dp, connector,
> + adjusted_mode->crtc_hdisplay,
> + adjusted_mode->crtc_clock);
> + if (num_joined_pipes > 1)
> + pipe_config->joiner_pipes = GENMASK(crtc->pipe + num_joined_pipes - 1, crtc->pipe);
>
> pipe_config->sink_format = INTEL_OUTPUT_FORMAT_RGB;
> pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB;
> @@ -1427,7 +1426,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;
> u16 dsc_max_compressed_bpp = 0;
> u8 dsc_slice_count = 0;
> int target_clock = mode->clock;
> @@ -1471,13 +1470,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_joiner(intel_dp, intel_connector,
> - mode->hdisplay, target_clock)) {
> - joiner = true;
> - max_dotclk *= 2;
> - }
> -
> - num_joined_pipes = joiner ? 2 : 1;
> + num_joined_pipes = intel_dp_compute_num_pipes(intel_dp, intel_connector,
> + mode->hdisplay, target_clock);
> + max_dotclk *= num_joined_pipes;
>
> ret = drm_modeset_lock(&mgr->base.lock, ctx);
> if (ret)
> --
> 2.45.2
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 06/15] drm/i915/display: Add debugfs support to avoid joiner
2024-09-18 14:43 [PATCH 00/15] Ultrajoiner basic functionality series Ankit Nautiyal
` (4 preceding siblings ...)
2024-09-18 14:43 ` [PATCH 05/15] drm/i915/dp: Add helper to compute num pipes required Ankit Nautiyal
@ 2024-09-18 14:43 ` Ankit Nautiyal
2024-09-19 15:15 ` Ville Syrjälä
2024-09-18 14:43 ` [PATCH 07/15] drm/i915: Split current joiner hw state readout Ankit Nautiyal
` (12 subsequent siblings)
18 siblings, 1 reply; 34+ messages in thread
From: Ankit Nautiyal @ 2024-09-18 14:43 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe, suraj.kandpal, ville.syrjala
Currently debugfs for joiner can take a value of 0->dont care and
2->join 2 pipes. Add option to force to use only 1 pipe.
If debugfs is set to 1, force to exactly one pipe (ie. no
joiner despite what the automagic logic is saying).
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_display_debugfs.c | 2 ++
drivers/gpu/drm/i915/display/intel_dp.c | 2 ++
2 files changed, 4 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
index 5775413c6763..85742400348f 100644
--- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
+++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
@@ -1533,6 +1533,8 @@ static ssize_t i915_joiner_write(struct file *file,
switch (force_join_pipes) {
case 0:
fallthrough;
+ case 1:
+ fallthrough;
case 2:
connector->force_joined_pipes = force_join_pipes;
break;
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 96ad048b68cf..369829ea5a12 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -1288,6 +1288,8 @@ int intel_dp_compute_num_pipes(struct intel_dp *intel_dp,
int hdisplay, int clock)
{
switch (connector->force_joined_pipes) {
+ case 1:
+ fallthrough;
case 2:
return connector->force_joined_pipes;
default:
--
2.45.2
^ permalink raw reply related [flat|nested] 34+ messages in thread* Re: [PATCH 06/15] drm/i915/display: Add debugfs support to avoid joiner
2024-09-18 14:43 ` [PATCH 06/15] drm/i915/display: Add debugfs support to avoid joiner Ankit Nautiyal
@ 2024-09-19 15:15 ` Ville Syrjälä
0 siblings, 0 replies; 34+ messages in thread
From: Ville Syrjälä @ 2024-09-19 15:15 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, suraj.kandpal
On Wed, Sep 18, 2024 at 08:13:34PM +0530, Ankit Nautiyal wrote:
> Currently debugfs for joiner can take a value of 0->dont care and
> 2->join 2 pipes. Add option to force to use only 1 pipe.
>
> If debugfs is set to 1, force to exactly one pipe (ie. no
> joiner despite what the automagic logic is saying).
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display_debugfs.c | 2 ++
> drivers/gpu/drm/i915/display/intel_dp.c | 2 ++
> 2 files changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> index 5775413c6763..85742400348f 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> @@ -1533,6 +1533,8 @@ static ssize_t i915_joiner_write(struct file *file,
> switch (force_join_pipes) {
> case 0:
> fallthrough;
^^^^^^^^^^^
I don't think you need the fallthough keyword here
because there is nothing else being done in this case.
> + case 1:
> + fallthrough;
> case 2:
> connector->force_joined_pipes = force_join_pipes;
> break;
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 96ad048b68cf..369829ea5a12 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -1288,6 +1288,8 @@ int intel_dp_compute_num_pipes(struct intel_dp *intel_dp,
> int hdisplay, int clock)
> {
> switch (connector->force_joined_pipes) {
> + case 1:
> + fallthrough;
> case 2:
> return connector->force_joined_pipes;
> default:
This hunk would completely disappear with the previously
suggested simplification to this function.
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 07/15] drm/i915: Split current joiner hw state readout
2024-09-18 14:43 [PATCH 00/15] Ultrajoiner basic functionality series Ankit Nautiyal
` (5 preceding siblings ...)
2024-09-18 14:43 ` [PATCH 06/15] drm/i915/display: Add debugfs support to avoid joiner Ankit Nautiyal
@ 2024-09-18 14:43 ` Ankit Nautiyal
2024-09-19 15:18 ` Ville Syrjälä
2024-09-18 14:43 ` [PATCH 08/15] drm/i915: Add bigjoiner and uncompressed joiner hw readout sanity checks Ankit Nautiyal
` (11 subsequent siblings)
18 siblings, 1 reply; 34+ messages in thread
From: Ankit Nautiyal @ 2024-09-18 14:43 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe, suraj.kandpal, ville.syrjala
We need to add a new sanity checks and also do
some preparations for adding ultrajoiner hw state readout.
Lets first split reading of the uncompressed joiner and bigjoiner
bit masks into separate functions.
v2: Fixed checkpatch warnings (Ankit)
v3: Use struct intel_display in the new functions. (Ankit)
v4: Use check for bigjoiner before reading the regs. (Ville)
Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 74 +++++++++++++++-----
1 file changed, 55 insertions(+), 19 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 7cdc12188df9..28447d4c8934 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -3591,26 +3591,57 @@ static bool transcoder_ddi_func_is_enabled(struct drm_i915_private *dev_priv,
return tmp & TRANS_DDI_FUNC_ENABLE;
}
-static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
- u8 *primary_pipes, u8 *secondary_pipes)
+static void enabled_uncompressed_joiner_pipes(struct intel_display *display,
+ u8 *primary_pipes, u8 *secondary_pipes)
{
+ struct drm_i915_private *i915 = to_i915(display->drm);
struct intel_crtc *crtc;
*primary_pipes = 0;
*secondary_pipes = 0;
- if (!HAS_BIGJOINER(dev_priv))
+ if (!HAS_UNCOMPRESSED_JOINER(display))
return;
- for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, crtc,
- joiner_pipes(dev_priv)) {
+ for_each_intel_crtc_in_pipe_mask(&i915->drm, crtc,
+ joiner_pipes(i915)) {
enum intel_display_power_domain power_domain;
enum pipe pipe = crtc->pipe;
intel_wakeref_t wakeref;
- power_domain = intel_dsc_power_domain(crtc, (enum transcoder) pipe);
- with_intel_display_power_if_enabled(dev_priv, power_domain, wakeref) {
- u32 tmp = intel_de_read(dev_priv, ICL_PIPE_DSS_CTL1(pipe));
+ power_domain = POWER_DOMAIN_PIPE(pipe);
+ with_intel_display_power_if_enabled(i915, power_domain, wakeref) {
+ u32 tmp = intel_de_read(display, ICL_PIPE_DSS_CTL1(pipe));
+
+ if (tmp & UNCOMPRESSED_JOINER_PRIMARY)
+ *primary_pipes |= BIT(pipe);
+ if (tmp & UNCOMPRESSED_JOINER_SECONDARY)
+ *secondary_pipes |= BIT(pipe);
+ }
+ }
+}
+
+static void enabled_bigjoiner_pipes(struct intel_display *display,
+ u8 *primary_pipes, u8 *secondary_pipes)
+{
+ struct drm_i915_private *i915 = to_i915(display->drm);
+ struct intel_crtc *crtc;
+
+ *primary_pipes = 0;
+ *secondary_pipes = 0;
+
+ if (!HAS_BIGJOINER(display))
+ return;
+
+ for_each_intel_crtc_in_pipe_mask(&i915->drm, crtc,
+ joiner_pipes(i915)) {
+ enum intel_display_power_domain power_domain;
+ enum pipe pipe = crtc->pipe;
+ intel_wakeref_t wakeref;
+
+ power_domain = intel_dsc_power_domain(crtc, (enum transcoder)pipe);
+ with_intel_display_power_if_enabled(i915, power_domain, wakeref) {
+ u32 tmp = intel_de_read(display, ICL_PIPE_DSS_CTL1(pipe));
if (!(tmp & BIG_JOINER_ENABLE))
continue;
@@ -3620,20 +3651,25 @@ static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
else
*secondary_pipes |= BIT(pipe);
}
+ }
+}
- if (!HAS_UNCOMPRESSED_JOINER(dev_priv))
- continue;
+static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
+ u8 *primary_pipes, u8 *secondary_pipes)
+{
+ struct intel_display *display = to_intel_display(&dev_priv->drm);
+ u8 primary_uncompressed_joiner_pipes, primary_bigjoiner_pipes;
+ u8 secondary_uncompressed_joiner_pipes, secondary_bigjoiner_pipes;
- power_domain = POWER_DOMAIN_PIPE(pipe);
- with_intel_display_power_if_enabled(dev_priv, power_domain, wakeref) {
- u32 tmp = intel_de_read(dev_priv, ICL_PIPE_DSS_CTL1(pipe));
+ enabled_uncompressed_joiner_pipes(display, &primary_uncompressed_joiner_pipes,
+ &secondary_uncompressed_joiner_pipes);
- if (tmp & UNCOMPRESSED_JOINER_PRIMARY)
- *primary_pipes |= BIT(pipe);
- if (tmp & UNCOMPRESSED_JOINER_SECONDARY)
- *secondary_pipes |= BIT(pipe);
- }
- }
+ enabled_bigjoiner_pipes(display, &primary_bigjoiner_pipes,
+ &secondary_bigjoiner_pipes);
+
+ *primary_pipes = primary_uncompressed_joiner_pipes | primary_bigjoiner_pipes;
+
+ *secondary_pipes = secondary_uncompressed_joiner_pipes | secondary_bigjoiner_pipes;
/* Joiner pipes should always be consecutive primary and secondary */
drm_WARN(&dev_priv->drm, *secondary_pipes != *primary_pipes << 1,
--
2.45.2
^ permalink raw reply related [flat|nested] 34+ messages in thread* Re: [PATCH 07/15] drm/i915: Split current joiner hw state readout
2024-09-18 14:43 ` [PATCH 07/15] drm/i915: Split current joiner hw state readout Ankit Nautiyal
@ 2024-09-19 15:18 ` Ville Syrjälä
0 siblings, 0 replies; 34+ messages in thread
From: Ville Syrjälä @ 2024-09-19 15:18 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, suraj.kandpal
On Wed, Sep 18, 2024 at 08:13:35PM +0530, Ankit Nautiyal wrote:
> We need to add a new sanity checks and also do
> some preparations for adding ultrajoiner hw state readout.
> Lets first split reading of the uncompressed joiner and bigjoiner
> bit masks into separate functions.
>
> v2: Fixed checkpatch warnings (Ankit)
> v3: Use struct intel_display in the new functions. (Ankit)
> v4: Use check for bigjoiner before reading the regs. (Ville)
>
> Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 74 +++++++++++++++-----
> 1 file changed, 55 insertions(+), 19 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 7cdc12188df9..28447d4c8934 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -3591,26 +3591,57 @@ static bool transcoder_ddi_func_is_enabled(struct drm_i915_private *dev_priv,
> return tmp & TRANS_DDI_FUNC_ENABLE;
> }
>
> -static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
> - u8 *primary_pipes, u8 *secondary_pipes)
> +static void enabled_uncompressed_joiner_pipes(struct intel_display *display,
> + u8 *primary_pipes, u8 *secondary_pipes)
> {
> + struct drm_i915_private *i915 = to_i915(display->drm);
> struct intel_crtc *crtc;
>
> *primary_pipes = 0;
> *secondary_pipes = 0;
>
> - if (!HAS_BIGJOINER(dev_priv))
> + if (!HAS_UNCOMPRESSED_JOINER(display))
> return;
>
> - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, crtc,
> - joiner_pipes(dev_priv)) {
> + for_each_intel_crtc_in_pipe_mask(&i915->drm, crtc,
> + joiner_pipes(i915)) {
> enum intel_display_power_domain power_domain;
> enum pipe pipe = crtc->pipe;
> intel_wakeref_t wakeref;
>
> - power_domain = intel_dsc_power_domain(crtc, (enum transcoder) pipe);
> - with_intel_display_power_if_enabled(dev_priv, power_domain, wakeref) {
> - u32 tmp = intel_de_read(dev_priv, ICL_PIPE_DSS_CTL1(pipe));
> + power_domain = POWER_DOMAIN_PIPE(pipe);
> + with_intel_display_power_if_enabled(i915, power_domain, wakeref) {
> + u32 tmp = intel_de_read(display, ICL_PIPE_DSS_CTL1(pipe));
> +
> + if (tmp & UNCOMPRESSED_JOINER_PRIMARY)
> + *primary_pipes |= BIT(pipe);
> + if (tmp & UNCOMPRESSED_JOINER_SECONDARY)
> + *secondary_pipes |= BIT(pipe);
> + }
> + }
> +}
> +
> +static void enabled_bigjoiner_pipes(struct intel_display *display,
> + u8 *primary_pipes, u8 *secondary_pipes)
> +{
> + struct drm_i915_private *i915 = to_i915(display->drm);
> + struct intel_crtc *crtc;
> +
> + *primary_pipes = 0;
> + *secondary_pipes = 0;
> +
> + if (!HAS_BIGJOINER(display))
> + return;
> +
> + for_each_intel_crtc_in_pipe_mask(&i915->drm, crtc,
> + joiner_pipes(i915)) {
> + enum intel_display_power_domain power_domain;
> + enum pipe pipe = crtc->pipe;
> + intel_wakeref_t wakeref;
> +
> + power_domain = intel_dsc_power_domain(crtc, (enum transcoder)pipe);
> + with_intel_display_power_if_enabled(i915, power_domain, wakeref) {
> + u32 tmp = intel_de_read(display, ICL_PIPE_DSS_CTL1(pipe));
>
> if (!(tmp & BIG_JOINER_ENABLE))
> continue;
> @@ -3620,20 +3651,25 @@ static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
> else
> *secondary_pipes |= BIT(pipe);
> }
> + }
> +}
>
> - if (!HAS_UNCOMPRESSED_JOINER(dev_priv))
> - continue;
> +static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
> + u8 *primary_pipes, u8 *secondary_pipes)
> +{
> + struct intel_display *display = to_intel_display(&dev_priv->drm);
> + u8 primary_uncompressed_joiner_pipes, primary_bigjoiner_pipes;
> + u8 secondary_uncompressed_joiner_pipes, secondary_bigjoiner_pipes;
>
> - power_domain = POWER_DOMAIN_PIPE(pipe);
> - with_intel_display_power_if_enabled(dev_priv, power_domain, wakeref) {
> - u32 tmp = intel_de_read(dev_priv, ICL_PIPE_DSS_CTL1(pipe));
> + enabled_uncompressed_joiner_pipes(display, &primary_uncompressed_joiner_pipes,
> + &secondary_uncompressed_joiner_pipes);
>
> - if (tmp & UNCOMPRESSED_JOINER_PRIMARY)
> - *primary_pipes |= BIT(pipe);
> - if (tmp & UNCOMPRESSED_JOINER_SECONDARY)
> - *secondary_pipes |= BIT(pipe);
> - }
> - }
> + enabled_bigjoiner_pipes(display, &primary_bigjoiner_pipes,
> + &secondary_bigjoiner_pipes);
> +
> + *primary_pipes = primary_uncompressed_joiner_pipes | primary_bigjoiner_pipes;
> +
> + *secondary_pipes = secondary_uncompressed_joiner_pipes | secondary_bigjoiner_pipes;
>
> /* Joiner pipes should always be consecutive primary and secondary */
> drm_WARN(&dev_priv->drm, *secondary_pipes != *primary_pipes << 1,
> --
> 2.45.2
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 08/15] drm/i915: Add bigjoiner and uncompressed joiner hw readout sanity checks
2024-09-18 14:43 [PATCH 00/15] Ultrajoiner basic functionality series Ankit Nautiyal
` (6 preceding siblings ...)
2024-09-18 14:43 ` [PATCH 07/15] drm/i915: Split current joiner hw state readout Ankit Nautiyal
@ 2024-09-18 14:43 ` Ankit Nautiyal
2024-09-19 15:22 ` Ville Syrjälä
2024-09-18 14:43 ` [PATCH 09/15] drm/i915/display: Add macro HAS_ULTRAJOINER() Ankit Nautiyal
` (10 subsequent siblings)
18 siblings, 1 reply; 34+ messages in thread
From: Ankit Nautiyal @ 2024-09-18 14:43 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe, suraj.kandpal, ville.syrjala
From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Add sanity checks for primary and secondary bigjoiner/uncompressed
bitmasks, should make it easier to spot possible issues.
v2:
-Streamline the expected masks and add few more drm_WARNs. (Ville)
-Use %#x format specifier for printing joiner masks. (Ville)
-Use struct intel_display instead of struct drm_i915_private. (Ankit)
Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com> (v1)
---
drivers/gpu/drm/i915/display/intel_display.c | 49 +++++++++++++++++++-
1 file changed, 47 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 28447d4c8934..a17e89fb5eb9 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -3654,26 +3654,71 @@ static void enabled_bigjoiner_pipes(struct intel_display *display,
}
}
+static u8 expected_secondary_pipes(u8 primary_pipes, int num_pipes)
+{
+ u8 secondary_pipes = 0;
+
+ for (int i = 1; i < num_pipes; i++)
+ secondary_pipes |= primary_pipes << i;
+
+ return secondary_pipes;
+}
+
+static u8 expected_uncompjoiner_secondary_pipes(u8 uncompjoiner_primary_pipes)
+{
+ return expected_secondary_pipes(uncompjoiner_primary_pipes, 2);
+}
+
+static u8 expected_bigjoiner_secondary_pipes(u8 bigjoiner_primary_pipes)
+{
+ return expected_secondary_pipes(bigjoiner_primary_pipes, 2);
+}
+
static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
u8 *primary_pipes, u8 *secondary_pipes)
{
struct intel_display *display = to_intel_display(&dev_priv->drm);
u8 primary_uncompressed_joiner_pipes, primary_bigjoiner_pipes;
u8 secondary_uncompressed_joiner_pipes, secondary_bigjoiner_pipes;
+ u8 uncompressed_joiner_pipes, bigjoiner_pipes;
enabled_uncompressed_joiner_pipes(display, &primary_uncompressed_joiner_pipes,
&secondary_uncompressed_joiner_pipes);
+ drm_WARN_ON(display->drm,
+ (primary_uncompressed_joiner_pipes & secondary_uncompressed_joiner_pipes) != 0);
+
enabled_bigjoiner_pipes(display, &primary_bigjoiner_pipes,
&secondary_bigjoiner_pipes);
+ drm_WARN_ON(display->drm,
+ (primary_bigjoiner_pipes & secondary_bigjoiner_pipes) != 0);
+
+ uncompressed_joiner_pipes = primary_uncompressed_joiner_pipes |
+ secondary_uncompressed_joiner_pipes;
+ bigjoiner_pipes = primary_bigjoiner_pipes | secondary_bigjoiner_pipes;
+
+ drm_WARN(display->drm, (uncompressed_joiner_pipes & bigjoiner_pipes) != 0,
+ "Uncomressed joiner pipes(%#x) and bigjoiner pipes(%#x) can't intersect\n",
+ uncompressed_joiner_pipes, bigjoiner_pipes);
+ drm_WARN(display->drm, secondary_bigjoiner_pipes !=
+ expected_bigjoiner_secondary_pipes(primary_bigjoiner_pipes),
+ "Wrong secondary bigjoiner pipes(expected %#x, current %#x)\n",
+ expected_bigjoiner_secondary_pipes(primary_bigjoiner_pipes),
+ secondary_bigjoiner_pipes);
+ drm_WARN(display->drm, secondary_uncompressed_joiner_pipes !=
+ expected_uncompjoiner_secondary_pipes(primary_uncompressed_joiner_pipes),
+ "Wrong secondary uncompressed joiner pipes(expected %#x, current %#x)\n",
+ expected_uncompjoiner_secondary_pipes(primary_uncompressed_joiner_pipes),
+ secondary_uncompressed_joiner_pipes);
+
*primary_pipes = primary_uncompressed_joiner_pipes | primary_bigjoiner_pipes;
*secondary_pipes = secondary_uncompressed_joiner_pipes | secondary_bigjoiner_pipes;
/* Joiner pipes should always be consecutive primary and secondary */
- drm_WARN(&dev_priv->drm, *secondary_pipes != *primary_pipes << 1,
- "Joiner misconfigured (primary pipes 0x%x, secondary pipes 0x%x)\n",
+ drm_WARN(display->drm, *secondary_pipes != *primary_pipes << 1,
+ "Joiner misconfigured (primary pipes %#x, secondary pipes %#x)\n",
*primary_pipes, *secondary_pipes);
}
--
2.45.2
^ permalink raw reply related [flat|nested] 34+ messages in thread* Re: [PATCH 08/15] drm/i915: Add bigjoiner and uncompressed joiner hw readout sanity checks
2024-09-18 14:43 ` [PATCH 08/15] drm/i915: Add bigjoiner and uncompressed joiner hw readout sanity checks Ankit Nautiyal
@ 2024-09-19 15:22 ` Ville Syrjälä
0 siblings, 0 replies; 34+ messages in thread
From: Ville Syrjälä @ 2024-09-19 15:22 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, suraj.kandpal
On Wed, Sep 18, 2024 at 08:13:36PM +0530, Ankit Nautiyal wrote:
> From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
>
> Add sanity checks for primary and secondary bigjoiner/uncompressed
> bitmasks, should make it easier to spot possible issues.
>
> v2:
> -Streamline the expected masks and add few more drm_WARNs. (Ville)
> -Use %#x format specifier for printing joiner masks. (Ville)
> -Use struct intel_display instead of struct drm_i915_private. (Ankit)
>
> Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com> (v1)
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 49 +++++++++++++++++++-
> 1 file changed, 47 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 28447d4c8934..a17e89fb5eb9 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -3654,26 +3654,71 @@ static void enabled_bigjoiner_pipes(struct intel_display *display,
> }
> }
>
> +static u8 expected_secondary_pipes(u8 primary_pipes, int num_pipes)
> +{
> + u8 secondary_pipes = 0;
> +
> + for (int i = 1; i < num_pipes; i++)
> + secondary_pipes |= primary_pipes << i;
> +
> + return secondary_pipes;
> +}
> +
> +static u8 expected_uncompjoiner_secondary_pipes(u8 uncompjoiner_primary_pipes)
You use the full "uncompressed_joiner" everywhere else, so should
probably stick to that here as well for consistency.
> +{
> + return expected_secondary_pipes(uncompjoiner_primary_pipes, 2);
> +}
> +
> +static u8 expected_bigjoiner_secondary_pipes(u8 bigjoiner_primary_pipes)
> +{
> + return expected_secondary_pipes(bigjoiner_primary_pipes, 2);
> +}
> +
> static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
> u8 *primary_pipes, u8 *secondary_pipes)
> {
> struct intel_display *display = to_intel_display(&dev_priv->drm);
> u8 primary_uncompressed_joiner_pipes, primary_bigjoiner_pipes;
> u8 secondary_uncompressed_joiner_pipes, secondary_bigjoiner_pipes;
> + u8 uncompressed_joiner_pipes, bigjoiner_pipes;
>
> enabled_uncompressed_joiner_pipes(display, &primary_uncompressed_joiner_pipes,
> &secondary_uncompressed_joiner_pipes);
>
> + drm_WARN_ON(display->drm,
> + (primary_uncompressed_joiner_pipes & secondary_uncompressed_joiner_pipes) != 0);
> +
> enabled_bigjoiner_pipes(display, &primary_bigjoiner_pipes,
> &secondary_bigjoiner_pipes);
>
> + drm_WARN_ON(display->drm,
> + (primary_bigjoiner_pipes & secondary_bigjoiner_pipes) != 0);
> +
> + uncompressed_joiner_pipes = primary_uncompressed_joiner_pipes |
> + secondary_uncompressed_joiner_pipes;
> + bigjoiner_pipes = primary_bigjoiner_pipes | secondary_bigjoiner_pipes;
> +
> + drm_WARN(display->drm, (uncompressed_joiner_pipes & bigjoiner_pipes) != 0,
> + "Uncomressed joiner pipes(%#x) and bigjoiner pipes(%#x) can't intersect\n",
> + uncompressed_joiner_pipes, bigjoiner_pipes);
Maybe add an empty line between all the WARNs because this is starting
to look pretty busy othwerwise.
Otherwise lgtm
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> + drm_WARN(display->drm, secondary_bigjoiner_pipes !=
> + expected_bigjoiner_secondary_pipes(primary_bigjoiner_pipes),
> + "Wrong secondary bigjoiner pipes(expected %#x, current %#x)\n",
> + expected_bigjoiner_secondary_pipes(primary_bigjoiner_pipes),
> + secondary_bigjoiner_pipes);
> + drm_WARN(display->drm, secondary_uncompressed_joiner_pipes !=
> + expected_uncompjoiner_secondary_pipes(primary_uncompressed_joiner_pipes),
> + "Wrong secondary uncompressed joiner pipes(expected %#x, current %#x)\n",
> + expected_uncompjoiner_secondary_pipes(primary_uncompressed_joiner_pipes),
> + secondary_uncompressed_joiner_pipes);
> +
> *primary_pipes = primary_uncompressed_joiner_pipes | primary_bigjoiner_pipes;
>
> *secondary_pipes = secondary_uncompressed_joiner_pipes | secondary_bigjoiner_pipes;
>
> /* Joiner pipes should always be consecutive primary and secondary */
> - drm_WARN(&dev_priv->drm, *secondary_pipes != *primary_pipes << 1,
> - "Joiner misconfigured (primary pipes 0x%x, secondary pipes 0x%x)\n",
> + drm_WARN(display->drm, *secondary_pipes != *primary_pipes << 1,
> + "Joiner misconfigured (primary pipes %#x, secondary pipes %#x)\n",
> *primary_pipes, *secondary_pipes);
> }
>
> --
> 2.45.2
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 09/15] drm/i915/display: Add macro HAS_ULTRAJOINER()
2024-09-18 14:43 [PATCH 00/15] Ultrajoiner basic functionality series Ankit Nautiyal
` (7 preceding siblings ...)
2024-09-18 14:43 ` [PATCH 08/15] drm/i915: Add bigjoiner and uncompressed joiner hw readout sanity checks Ankit Nautiyal
@ 2024-09-18 14:43 ` Ankit Nautiyal
2024-09-19 15:24 ` Ville Syrjälä
2024-09-18 14:43 ` [PATCH 10/15] drm/i915: Implement hw state readout and checks for ultrajoiner Ankit Nautiyal
` (9 subsequent siblings)
18 siblings, 1 reply; 34+ messages in thread
From: Ankit Nautiyal @ 2024-09-18 14:43 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe, suraj.kandpal, ville.syrjala
Add macro to check if platform supports Ultrajoiner.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_display_device.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
index 5306bbd13e59..8dd7bef49133 100644
--- a/drivers/gpu/drm/i915/display/intel_display_device.h
+++ b/drivers/gpu/drm/i915/display/intel_display_device.h
@@ -154,6 +154,7 @@ enum intel_display_subplatform {
#define HAS_TRANSCODER(i915, trans) ((DISPLAY_RUNTIME_INFO(i915)->cpu_transcoder_mask & \
BIT(trans)) != 0)
#define HAS_UNCOMPRESSED_JOINER(i915) (DISPLAY_VER(i915) >= 13)
+#define HAS_ULTRAJOINER(i915) ((DISPLAY_VER(i915) == 14 && IS_DGFX(i915)) || DISPLAY_VER(i915) > 14)
#define HAS_VRR(i915) (DISPLAY_VER(i915) >= 11)
#define HAS_AS_SDP(i915) (DISPLAY_VER(i915) >= 13)
#define HAS_CMRR(i915) (DISPLAY_VER(i915) >= 20)
--
2.45.2
^ permalink raw reply related [flat|nested] 34+ messages in thread* Re: [PATCH 09/15] drm/i915/display: Add macro HAS_ULTRAJOINER()
2024-09-18 14:43 ` [PATCH 09/15] drm/i915/display: Add macro HAS_ULTRAJOINER() Ankit Nautiyal
@ 2024-09-19 15:24 ` Ville Syrjälä
0 siblings, 0 replies; 34+ messages in thread
From: Ville Syrjälä @ 2024-09-19 15:24 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, suraj.kandpal
On Wed, Sep 18, 2024 at 08:13:37PM +0530, Ankit Nautiyal wrote:
> Add macro to check if platform supports Ultrajoiner.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display_device.h | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
> index 5306bbd13e59..8dd7bef49133 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_device.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_device.h
> @@ -154,6 +154,7 @@ enum intel_display_subplatform {
> #define HAS_TRANSCODER(i915, trans) ((DISPLAY_RUNTIME_INFO(i915)->cpu_transcoder_mask & \
> BIT(trans)) != 0)
> #define HAS_UNCOMPRESSED_JOINER(i915) (DISPLAY_VER(i915) >= 13)
> +#define HAS_ULTRAJOINER(i915) ((DISPLAY_VER(i915) == 14 && IS_DGFX(i915)) || DISPLAY_VER(i915) > 14)
s/> 14/>= 20/ please
Since we generally prefer the new->old order, should probably start with
the >=20 check, and follow with the bmg special case.
> #define HAS_VRR(i915) (DISPLAY_VER(i915) >= 11)
> #define HAS_AS_SDP(i915) (DISPLAY_VER(i915) >= 13)
> #define HAS_CMRR(i915) (DISPLAY_VER(i915) >= 20)
> --
> 2.45.2
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 10/15] drm/i915: Implement hw state readout and checks for ultrajoiner
2024-09-18 14:43 [PATCH 00/15] Ultrajoiner basic functionality series Ankit Nautiyal
` (8 preceding siblings ...)
2024-09-18 14:43 ` [PATCH 09/15] drm/i915/display: Add macro HAS_ULTRAJOINER() Ankit Nautiyal
@ 2024-09-18 14:43 ` Ankit Nautiyal
2024-09-19 15:33 ` Ville Syrjälä
2024-09-18 14:43 ` [PATCH 11/15] drm/i915/display: Refactor enable_joiner_pipes Ankit Nautiyal
` (8 subsequent siblings)
18 siblings, 1 reply; 34+ messages in thread
From: Ankit Nautiyal @ 2024-09-18 14:43 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe, suraj.kandpal, ville.syrjala
From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Ultrajoiner mode has some new bits and states to be
read out from the hw. Lets make changes accordingly.
v2: Fix checkpatch warnings. (Ankit)
v3: Add separate functions for computing expected secondary_big/ultrajoiner
pipes. (Ankit)
v4:
-Streamline the helpers for ultrajoiner. (Ville)
-Add fixup to accommodate PIPED check for ultrajoiner. (Ville)
-Add more Ultrajoiner drm_WARNs. (Ville)
v5: Remove spurious newline. (Ville)
Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 81 +++++++++++++++++--
.../gpu/drm/i915/display/intel_vdsc_regs.h | 2 +
2 files changed, 78 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index a17e89fb5eb9..1ce334f3a3ae 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -3674,13 +3674,58 @@ static u8 expected_bigjoiner_secondary_pipes(u8 bigjoiner_primary_pipes)
return expected_secondary_pipes(bigjoiner_primary_pipes, 2);
}
+static u8 expected_ultrajoiner_secondary_pipes(u8 ultrajoiner_primary_pipes)
+{
+ return expected_secondary_pipes(ultrajoiner_primary_pipes, 4);
+}
+
+static u8 fixup_ultrajoiner_secondary_pipes(u8 ultrajoiner_primary_pipes,
+ u8 ultrajoiner_secondary_pipes)
+{
+ return ultrajoiner_secondary_pipes | ultrajoiner_primary_pipes << 3;
+}
+
+static void enabled_ultrajoiner_pipes(struct drm_i915_private *i915,
+ u8 *primary_pipes, u8 *secondary_pipes)
+{
+ struct intel_crtc *crtc;
+
+ *primary_pipes = 0;
+ *secondary_pipes = 0;
+
+ if (!HAS_ULTRAJOINER(i915))
+ return;
+
+ for_each_intel_crtc_in_pipe_mask(&i915->drm, crtc,
+ joiner_pipes(i915)) {
+ enum intel_display_power_domain power_domain;
+ enum pipe pipe = crtc->pipe;
+ intel_wakeref_t wakeref;
+
+ power_domain = intel_dsc_power_domain(crtc, (enum transcoder)pipe);
+ with_intel_display_power_if_enabled(i915, power_domain, wakeref) {
+ u32 tmp = intel_de_read(i915, ICL_PIPE_DSS_CTL1(pipe));
+
+ if (!(tmp & ULTRA_JOINER_ENABLE))
+ continue;
+
+ if (tmp & PRIMARY_ULTRA_JOINER_ENABLE)
+ *primary_pipes |= BIT(pipe);
+ else
+ *secondary_pipes |= BIT(pipe);
+ }
+ }
+}
+
static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
u8 *primary_pipes, u8 *secondary_pipes)
{
struct intel_display *display = to_intel_display(&dev_priv->drm);
u8 primary_uncompressed_joiner_pipes, primary_bigjoiner_pipes;
+ u8 primary_ultrajoiner_pipes;
u8 secondary_uncompressed_joiner_pipes, secondary_bigjoiner_pipes;
- u8 uncompressed_joiner_pipes, bigjoiner_pipes;
+ u8 secondary_ultrajoiner_pipes;
+ u8 uncompressed_joiner_pipes, bigjoiner_pipes, ultrajoiner_pipes;
enabled_uncompressed_joiner_pipes(display, &primary_uncompressed_joiner_pipes,
&secondary_uncompressed_joiner_pipes);
@@ -3694,13 +3739,33 @@ static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
drm_WARN_ON(display->drm,
(primary_bigjoiner_pipes & secondary_bigjoiner_pipes) != 0);
+ enabled_ultrajoiner_pipes(dev_priv, &primary_ultrajoiner_pipes,
+ &secondary_ultrajoiner_pipes);
+ /*
+ * For some strange reason the last pipe in the set of four
+ * shouldn't have ultrajoiner enable bit set in hardware.
+ * Set the bit anyway to make life easier.
+ */
+ drm_WARN_ON(&dev_priv->drm,
+ expected_secondary_pipes(primary_ultrajoiner_pipes, 3) !=
+ secondary_ultrajoiner_pipes);
+ secondary_ultrajoiner_pipes =
+ fixup_ultrajoiner_secondary_pipes(primary_ultrajoiner_pipes,
+ secondary_ultrajoiner_pipes);
+
+ drm_WARN_ON(&dev_priv->drm, (primary_ultrajoiner_pipes & secondary_ultrajoiner_pipes) != 0);
+
uncompressed_joiner_pipes = primary_uncompressed_joiner_pipes |
secondary_uncompressed_joiner_pipes;
bigjoiner_pipes = primary_bigjoiner_pipes | secondary_bigjoiner_pipes;
+ ultrajoiner_pipes = primary_ultrajoiner_pipes | secondary_ultrajoiner_pipes;
drm_WARN(display->drm, (uncompressed_joiner_pipes & bigjoiner_pipes) != 0,
"Uncomressed joiner pipes(%#x) and bigjoiner pipes(%#x) can't intersect\n",
uncompressed_joiner_pipes, bigjoiner_pipes);
+ drm_WARN(display->drm, (ultrajoiner_pipes & bigjoiner_pipes) != ultrajoiner_pipes,
+ "Ultrajoiner pipes(%#x) should be bigjoiner pipes(%#x)\n",
+ ultrajoiner_pipes, bigjoiner_pipes);
drm_WARN(display->drm, secondary_bigjoiner_pipes !=
expected_bigjoiner_secondary_pipes(primary_bigjoiner_pipes),
"Wrong secondary bigjoiner pipes(expected %#x, current %#x)\n",
@@ -3711,10 +3776,16 @@ static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
"Wrong secondary uncompressed joiner pipes(expected %#x, current %#x)\n",
expected_uncompjoiner_secondary_pipes(primary_uncompressed_joiner_pipes),
secondary_uncompressed_joiner_pipes);
-
- *primary_pipes = primary_uncompressed_joiner_pipes | primary_bigjoiner_pipes;
-
- *secondary_pipes = secondary_uncompressed_joiner_pipes | secondary_bigjoiner_pipes;
+ drm_WARN(display->drm, secondary_ultrajoiner_pipes !=
+ expected_ultrajoiner_secondary_pipes(primary_ultrajoiner_pipes),
+ "Wrong secondary ultrajoiner pipes(expected %x, current %x)\n",
+ expected_ultrajoiner_secondary_pipes(primary_ultrajoiner_pipes),
+ secondary_ultrajoiner_pipes);
+
+ *primary_pipes = primary_uncompressed_joiner_pipes | primary_bigjoiner_pipes |
+ primary_ultrajoiner_pipes;
+ *secondary_pipes = secondary_uncompressed_joiner_pipes | secondary_bigjoiner_pipes |
+ secondary_ultrajoiner_pipes;
/* Joiner pipes should always be consecutive primary and secondary */
drm_WARN(display->drm, *secondary_pipes != *primary_pipes << 1,
diff --git a/drivers/gpu/drm/i915/display/intel_vdsc_regs.h b/drivers/gpu/drm/i915/display/intel_vdsc_regs.h
index f921ad67b587..bf32a3b46fb1 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 REG_BIT(23)
+#define PRIMARY_ULTRA_JOINER_ENABLE REG_BIT(22)
#define UNCOMPRESSED_JOINER_PRIMARY (1 << 21)
#define UNCOMPRESSED_JOINER_SECONDARY (1 << 20)
--
2.45.2
^ permalink raw reply related [flat|nested] 34+ messages in thread* Re: [PATCH 10/15] drm/i915: Implement hw state readout and checks for ultrajoiner
2024-09-18 14:43 ` [PATCH 10/15] drm/i915: Implement hw state readout and checks for ultrajoiner Ankit Nautiyal
@ 2024-09-19 15:33 ` Ville Syrjälä
0 siblings, 0 replies; 34+ messages in thread
From: Ville Syrjälä @ 2024-09-19 15:33 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, suraj.kandpal
On Wed, Sep 18, 2024 at 08:13:38PM +0530, Ankit Nautiyal wrote:
> From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
>
> Ultrajoiner mode has some new bits and states to be
> read out from the hw. Lets make changes accordingly.
>
> v2: Fix checkpatch warnings. (Ankit)
> v3: Add separate functions for computing expected secondary_big/ultrajoiner
> pipes. (Ankit)
> v4:
> -Streamline the helpers for ultrajoiner. (Ville)
> -Add fixup to accommodate PIPED check for ultrajoiner. (Ville)
> -Add more Ultrajoiner drm_WARNs. (Ville)
> v5: Remove spurious newline. (Ville)
>
> Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 81 +++++++++++++++++--
> .../gpu/drm/i915/display/intel_vdsc_regs.h | 2 +
> 2 files changed, 78 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index a17e89fb5eb9..1ce334f3a3ae 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -3674,13 +3674,58 @@ static u8 expected_bigjoiner_secondary_pipes(u8 bigjoiner_primary_pipes)
> return expected_secondary_pipes(bigjoiner_primary_pipes, 2);
> }
>
> +static u8 expected_ultrajoiner_secondary_pipes(u8 ultrajoiner_primary_pipes)
> +{
> + return expected_secondary_pipes(ultrajoiner_primary_pipes, 4);
> +}
> +
> +static u8 fixup_ultrajoiner_secondary_pipes(u8 ultrajoiner_primary_pipes,
> + u8 ultrajoiner_secondary_pipes)
> +{
> + return ultrajoiner_secondary_pipes | ultrajoiner_primary_pipes << 3;
> +}
> +
> +static void enabled_ultrajoiner_pipes(struct drm_i915_private *i915,
> + u8 *primary_pipes, u8 *secondary_pipes)
> +{
> + struct intel_crtc *crtc;
> +
> + *primary_pipes = 0;
> + *secondary_pipes = 0;
> +
> + if (!HAS_ULTRAJOINER(i915))
> + return;
> +
> + for_each_intel_crtc_in_pipe_mask(&i915->drm, crtc,
> + joiner_pipes(i915)) {
> + enum intel_display_power_domain power_domain;
> + enum pipe pipe = crtc->pipe;
> + intel_wakeref_t wakeref;
> +
> + power_domain = intel_dsc_power_domain(crtc, (enum transcoder)pipe);
> + with_intel_display_power_if_enabled(i915, power_domain, wakeref) {
> + u32 tmp = intel_de_read(i915, ICL_PIPE_DSS_CTL1(pipe));
> +
> + if (!(tmp & ULTRA_JOINER_ENABLE))
> + continue;
> +
> + if (tmp & PRIMARY_ULTRA_JOINER_ENABLE)
> + *primary_pipes |= BIT(pipe);
> + else
> + *secondary_pipes |= BIT(pipe);
> + }
> + }
> +}
> +
> static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
> u8 *primary_pipes, u8 *secondary_pipes)
> {
> struct intel_display *display = to_intel_display(&dev_priv->drm);
> u8 primary_uncompressed_joiner_pipes, primary_bigjoiner_pipes;
> + u8 primary_ultrajoiner_pipes;
> u8 secondary_uncompressed_joiner_pipes, secondary_bigjoiner_pipes;
> - u8 uncompressed_joiner_pipes, bigjoiner_pipes;
> + u8 secondary_ultrajoiner_pipes;
> + u8 uncompressed_joiner_pipes, bigjoiner_pipes, ultrajoiner_pipes;
>
> enabled_uncompressed_joiner_pipes(display, &primary_uncompressed_joiner_pipes,
> &secondary_uncompressed_joiner_pipes);
> @@ -3694,13 +3739,33 @@ static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
> drm_WARN_ON(display->drm,
> (primary_bigjoiner_pipes & secondary_bigjoiner_pipes) != 0);
>
> + enabled_ultrajoiner_pipes(dev_priv, &primary_ultrajoiner_pipes,
> + &secondary_ultrajoiner_pipes);
> + /*
> + * For some strange reason the last pipe in the set of four
> + * shouldn't have ultrajoiner enable bit set in hardware.
> + * Set the bit anyway to make life easier.
> + */
> + drm_WARN_ON(&dev_priv->drm,
> + expected_secondary_pipes(primary_ultrajoiner_pipes, 3) !=
> + secondary_ultrajoiner_pipes);
> + secondary_ultrajoiner_pipes =
> + fixup_ultrajoiner_secondary_pipes(primary_ultrajoiner_pipes,
> + secondary_ultrajoiner_pipes);
> +
> + drm_WARN_ON(&dev_priv->drm, (primary_ultrajoiner_pipes & secondary_ultrajoiner_pipes) != 0);
> +
> uncompressed_joiner_pipes = primary_uncompressed_joiner_pipes |
> secondary_uncompressed_joiner_pipes;
> bigjoiner_pipes = primary_bigjoiner_pipes | secondary_bigjoiner_pipes;
> + ultrajoiner_pipes = primary_ultrajoiner_pipes | secondary_ultrajoiner_pipes;
>
> drm_WARN(display->drm, (uncompressed_joiner_pipes & bigjoiner_pipes) != 0,
> "Uncomressed joiner pipes(%#x) and bigjoiner pipes(%#x) can't intersect\n",
> uncompressed_joiner_pipes, bigjoiner_pipes);
> + drm_WARN(display->drm, (ultrajoiner_pipes & bigjoiner_pipes) != ultrajoiner_pipes,
> + "Ultrajoiner pipes(%#x) should be bigjoiner pipes(%#x)\n",
> + ultrajoiner_pipes, bigjoiner_pipes);
> drm_WARN(display->drm, secondary_bigjoiner_pipes !=
> expected_bigjoiner_secondary_pipes(primary_bigjoiner_pipes),
> "Wrong secondary bigjoiner pipes(expected %#x, current %#x)\n",
> @@ -3711,10 +3776,16 @@ static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
> "Wrong secondary uncompressed joiner pipes(expected %#x, current %#x)\n",
> expected_uncompjoiner_secondary_pipes(primary_uncompressed_joiner_pipes),
> secondary_uncompressed_joiner_pipes);
> -
> - *primary_pipes = primary_uncompressed_joiner_pipes | primary_bigjoiner_pipes;
> -
> - *secondary_pipes = secondary_uncompressed_joiner_pipes | secondary_bigjoiner_pipes;
> + drm_WARN(display->drm, secondary_ultrajoiner_pipes !=
> + expected_ultrajoiner_secondary_pipes(primary_ultrajoiner_pipes),
> + "Wrong secondary ultrajoiner pipes(expected %x, current %x)\n",
> + expected_ultrajoiner_secondary_pipes(primary_ultrajoiner_pipes),
> + secondary_ultrajoiner_pipes);
> +
> + *primary_pipes = primary_uncompressed_joiner_pipes | primary_bigjoiner_pipes |
> + primary_ultrajoiner_pipes;
> + *secondary_pipes = secondary_uncompressed_joiner_pipes | secondary_bigjoiner_pipes |
> + secondary_ultrajoiner_pipes;
>
> /* Joiner pipes should always be consecutive primary and secondary */
> drm_WARN(display->drm, *secondary_pipes != *primary_pipes << 1,
This stuff will now be wrong. I think we need to update the logic to
that constructs the final primary_pipes and secondary_pipes first.
Which I think is in the next patch, I'll comment there some more.
> diff --git a/drivers/gpu/drm/i915/display/intel_vdsc_regs.h b/drivers/gpu/drm/i915/display/intel_vdsc_regs.h
> index f921ad67b587..bf32a3b46fb1 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 REG_BIT(23)
> +#define PRIMARY_ULTRA_JOINER_ENABLE REG_BIT(22)
> #define UNCOMPRESSED_JOINER_PRIMARY (1 << 21)
> #define UNCOMPRESSED_JOINER_SECONDARY (1 << 20)
>
> --
> 2.45.2
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 11/15] drm/i915/display: Refactor enable_joiner_pipes
2024-09-18 14:43 [PATCH 00/15] Ultrajoiner basic functionality series Ankit Nautiyal
` (9 preceding siblings ...)
2024-09-18 14:43 ` [PATCH 10/15] drm/i915: Implement hw state readout and checks for ultrajoiner Ankit Nautiyal
@ 2024-09-18 14:43 ` Ankit Nautiyal
2024-09-19 18:02 ` Ville Syrjälä
2024-09-18 14:43 ` [PATCH 12/15] drm/i915/display/vdsc: Add ultrajoiner support with DSC Ankit Nautiyal
` (7 subsequent siblings)
18 siblings, 1 reply; 34+ messages in thread
From: Ankit Nautiyal @ 2024-09-18 14:43 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe, suraj.kandpal, ville.syrjala
Pass the current pipe into enabled_joiner_pipes(), and let it figure out
the proper bitmasks for us.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 58 +++++++++++++-------
1 file changed, 39 insertions(+), 19 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 1ce334f3a3ae..65119c26ec88 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -3717,7 +3717,19 @@ static void enabled_ultrajoiner_pipes(struct drm_i915_private *i915,
}
}
-static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
+static enum pipe get_joiner_primary_pipe(enum pipe pipe, u8 primary_pipes, u8 secondary_pipes)
+{
+ if ((secondary_pipes & BIT(pipe)) == 0)
+ return pipe;
+
+ /* ignore everything above our pipe */
+ primary_pipes &= ~GENMASK(7, pipe);
+
+ /* highest remaining bit should be our primary pipe */
+ return fls(primary_pipes) - 1;
+}
+
+static void enabled_joiner_pipes(struct drm_i915_private *dev_priv, enum pipe pipe,
u8 *primary_pipes, u8 *secondary_pipes)
{
struct intel_display *display = to_intel_display(&dev_priv->drm);
@@ -3782,10 +3794,30 @@ static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
expected_ultrajoiner_secondary_pipes(primary_ultrajoiner_pipes),
secondary_ultrajoiner_pipes);
- *primary_pipes = primary_uncompressed_joiner_pipes | primary_bigjoiner_pipes |
- primary_ultrajoiner_pipes;
- *secondary_pipes = secondary_uncompressed_joiner_pipes | secondary_bigjoiner_pipes |
- secondary_ultrajoiner_pipes;
+ *primary_pipes = 0;
+ *secondary_pipes = 0;
+
+ if (ultrajoiner_pipes & BIT(pipe)) {
+ *primary_pipes = BIT(get_joiner_primary_pipe(pipe, primary_ultrajoiner_pipes,
+ secondary_ultrajoiner_pipes));
+ *secondary_pipes = secondary_ultrajoiner_pipes &
+ expected_ultrajoiner_secondary_pipes(primary_ultrajoiner_pipes);
+ return;
+ }
+
+ if (uncompressed_joiner_pipes & BIT(pipe)) {
+ *primary_pipes = BIT(get_joiner_primary_pipe(pipe,
+ primary_uncompressed_joiner_pipes,
+ secondary_uncompressed_joiner_pipes));
+ *secondary_pipes =
+ secondary_uncompressed_joiner_pipes &
+ expected_uncompjoiner_secondary_pipes(primary_uncompressed_joiner_pipes);
+ } else if (bigjoiner_pipes & BIT(pipe)) {
+ *primary_pipes = BIT(get_joiner_primary_pipe(pipe, primary_bigjoiner_pipes,
+ secondary_bigjoiner_pipes));
+ *secondary_pipes = secondary_bigjoiner_pipes &
+ expected_bigjoiner_secondary_pipes(primary_bigjoiner_pipes);
+ }
/* Joiner pipes should always be consecutive primary and secondary */
drm_WARN(display->drm, *secondary_pipes != *primary_pipes << 1,
@@ -3793,18 +3825,6 @@ static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
*primary_pipes, *secondary_pipes);
}
-static enum pipe get_joiner_primary_pipe(enum pipe pipe, u8 primary_pipes, u8 secondary_pipes)
-{
- if ((secondary_pipes & BIT(pipe)) == 0)
- return pipe;
-
- /* ignore everything above our pipe */
- primary_pipes &= ~GENMASK(7, pipe);
-
- /* highest remaining bit should be our primary pipe */
- return fls(primary_pipes) - 1;
-}
-
static u8 get_joiner_secondary_pipes(enum pipe pipe, u8 primary_pipes, u8 secondary_pipes)
{
enum pipe primary_pipe, next_primary_pipe;
@@ -3893,7 +3913,7 @@ static u8 hsw_enabled_transcoders(struct intel_crtc *crtc)
enabled_transcoders |= BIT(cpu_transcoder);
/* joiner secondary -> consider the primary pipe's transcoder as well */
- enabled_joiner_pipes(dev_priv, &primary_pipes, &secondary_pipes);
+ enabled_joiner_pipes(dev_priv, crtc->pipe, &primary_pipes, &secondary_pipes);
if (secondary_pipes & BIT(crtc->pipe)) {
cpu_transcoder = (enum transcoder)
get_joiner_primary_pipe(crtc->pipe, primary_pipes, secondary_pipes);
@@ -4030,7 +4050,7 @@ static void intel_joiner_get_config(struct intel_crtc_state *crtc_state)
u8 primary_pipes, secondary_pipes;
enum pipe pipe = crtc->pipe;
- enabled_joiner_pipes(i915, &primary_pipes, &secondary_pipes);
+ enabled_joiner_pipes(i915, pipe, &primary_pipes, &secondary_pipes);
if (((primary_pipes | secondary_pipes) & BIT(pipe)) == 0)
return;
--
2.45.2
^ permalink raw reply related [flat|nested] 34+ messages in thread* Re: [PATCH 11/15] drm/i915/display: Refactor enable_joiner_pipes
2024-09-18 14:43 ` [PATCH 11/15] drm/i915/display: Refactor enable_joiner_pipes Ankit Nautiyal
@ 2024-09-19 18:02 ` Ville Syrjälä
0 siblings, 0 replies; 34+ messages in thread
From: Ville Syrjälä @ 2024-09-19 18:02 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, suraj.kandpal
On Wed, Sep 18, 2024 at 08:13:39PM +0530, Ankit Nautiyal wrote:
> Pass the current pipe into enabled_joiner_pipes(), and let it figure out
> the proper bitmasks for us.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 58 +++++++++++++-------
> 1 file changed, 39 insertions(+), 19 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 1ce334f3a3ae..65119c26ec88 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -3717,7 +3717,19 @@ static void enabled_ultrajoiner_pipes(struct drm_i915_private *i915,
> }
> }
>
> -static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
> +static enum pipe get_joiner_primary_pipe(enum pipe pipe, u8 primary_pipes, u8 secondary_pipes)
> +{
> + if ((secondary_pipes & BIT(pipe)) == 0)
> + return pipe;
> +
> + /* ignore everything above our pipe */
> + primary_pipes &= ~GENMASK(7, pipe);
> +
> + /* highest remaining bit should be our primary pipe */
> + return fls(primary_pipes) - 1;
I think this could now be simplified to something like:
{
primary_pipes &= GENMASK(pipe, 0);
return primary_pipes ? BIT(fls(primary_pipes) - 1) : 0;
}
And returning a bitmask like that would perhaps be easier
for enabled_joiner_pipes() to handle.
> +}
> +
> +static void enabled_joiner_pipes(struct drm_i915_private *dev_priv, enum pipe pipe,
> u8 *primary_pipes, u8 *secondary_pipes)
> {
> struct intel_display *display = to_intel_display(&dev_priv->drm);
> @@ -3782,10 +3794,30 @@ static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
> expected_ultrajoiner_secondary_pipes(primary_ultrajoiner_pipes),
> secondary_ultrajoiner_pipes);
>
> - *primary_pipes = primary_uncompressed_joiner_pipes | primary_bigjoiner_pipes |
> - primary_ultrajoiner_pipes;
> - *secondary_pipes = secondary_uncompressed_joiner_pipes | secondary_bigjoiner_pipes |
> - secondary_ultrajoiner_pipes;
> + *primary_pipes = 0;
> + *secondary_pipes = 0;
> +
> + if (ultrajoiner_pipes & BIT(pipe)) {
> + *primary_pipes = BIT(get_joiner_primary_pipe(pipe, primary_ultrajoiner_pipes,
> + secondary_ultrajoiner_pipes));
> + *secondary_pipes = secondary_ultrajoiner_pipes &
> + expected_ultrajoiner_secondary_pipes(primary_ultrajoiner_pipes);
> + return;
> + }
> +
> + if (uncompressed_joiner_pipes & BIT(pipe)) {
> + *primary_pipes = BIT(get_joiner_primary_pipe(pipe,
> + primary_uncompressed_joiner_pipes,
> + secondary_uncompressed_joiner_pipes));
> + *secondary_pipes =
> + secondary_uncompressed_joiner_pipes &
> + expected_uncompjoiner_secondary_pipes(primary_uncompressed_joiner_pipes);
> + } else if (bigjoiner_pipes & BIT(pipe)) {
> + *primary_pipes = BIT(get_joiner_primary_pipe(pipe, primary_bigjoiner_pipes,
> + secondary_bigjoiner_pipes));
> + *secondary_pipes = secondary_bigjoiner_pipes &
> + expected_bigjoiner_secondary_pipes(primary_bigjoiner_pipes);
> + }
>
> /* Joiner pipes should always be consecutive primary and secondary */
> drm_WARN(display->drm, *secondary_pipes != *primary_pipes << 1,
This would now have to be something like:
drm_WARN(expected_*_secondary_pipes(*primary_pipes) != *secondary_pipes);
(wich I suppose manes it has to be done for each joiner type
separately.
> @@ -3793,18 +3825,6 @@ static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
> *primary_pipes, *secondary_pipes);
> }
>
> -static enum pipe get_joiner_primary_pipe(enum pipe pipe, u8 primary_pipes, u8 secondary_pipes)
> -{
> - if ((secondary_pipes & BIT(pipe)) == 0)
> - return pipe;
> -
> - /* ignore everything above our pipe */
> - primary_pipes &= ~GENMASK(7, pipe);
> -
> - /* highest remaining bit should be our primary pipe */
> - return fls(primary_pipes) - 1;
> -}
> -
> static u8 get_joiner_secondary_pipes(enum pipe pipe, u8 primary_pipes, u8 secondary_pipes)
> {
> enum pipe primary_pipe, next_primary_pipe;
I think this guy could be nuked, and callers should just use the
bitmasks returned by enabled_joiner_pipes directly.
> @@ -3893,7 +3913,7 @@ static u8 hsw_enabled_transcoders(struct intel_crtc *crtc)
> enabled_transcoders |= BIT(cpu_transcoder);
>
> /* joiner secondary -> consider the primary pipe's transcoder as well */
> - enabled_joiner_pipes(dev_priv, &primary_pipes, &secondary_pipes);
> + enabled_joiner_pipes(dev_priv, crtc->pipe, &primary_pipes, &secondary_pipes);
> if (secondary_pipes & BIT(crtc->pipe)) {
> cpu_transcoder = (enum transcoder)
> get_joiner_primary_pipe(crtc->pipe, primary_pipes, secondary_pipes);
> @@ -4030,7 +4050,7 @@ static void intel_joiner_get_config(struct intel_crtc_state *crtc_state)
> u8 primary_pipes, secondary_pipes;
> enum pipe pipe = crtc->pipe;
>
> - enabled_joiner_pipes(i915, &primary_pipes, &secondary_pipes);
> + enabled_joiner_pipes(i915, pipe, &primary_pipes, &secondary_pipes);
>
> if (((primary_pipes | secondary_pipes) & BIT(pipe)) == 0)
> return;
> --
> 2.45.2
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 12/15] drm/i915/display/vdsc: Add ultrajoiner support with DSC
2024-09-18 14:43 [PATCH 00/15] Ultrajoiner basic functionality series Ankit Nautiyal
` (10 preceding siblings ...)
2024-09-18 14:43 ` [PATCH 11/15] drm/i915/display: Refactor enable_joiner_pipes Ankit Nautiyal
@ 2024-09-18 14:43 ` Ankit Nautiyal
2024-09-19 18:06 ` Ville Syrjälä
2024-09-18 14:43 ` [PATCH 13/15] drm/i915: Compute config and mode valid changes for ultrajoiner Ankit Nautiyal
` (6 subsequent siblings)
18 siblings, 1 reply; 34+ messages in thread
From: Ankit Nautiyal @ 2024-09-18 14:43 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe, suraj.kandpal, ville.syrjala
From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Add changes to DSC which are required for Ultrajoiner.
v2:
-Use correct helper for setting bits for bigjoiner secondary. (Ankit)
-Use primary/secondary instead of master/slave. (Suraj)
v3: Add the ultrajoiner helpers and use it for setting ultrajoiner
bits (Ankit)
v4: Use num_vdsc_instances *= num_joined_pipes (Ville)
Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 21 +++++++++++++++++
drivers/gpu/drm/i915/display/intel_display.h | 2 ++
drivers/gpu/drm/i915/display/intel_vdsc.c | 24 ++++++++++++++++++--
3 files changed, 45 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 65119c26ec88..044f91359c42 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -314,6 +314,27 @@ u8 _intel_modeset_secondary_pipes(const struct intel_crtc_state *crtc_state)
return bigjoiner_secondary_pipes(crtc_state);
}
+bool intel_crtc_is_ultrajoiner(const struct intel_crtc_state *crtc_state)
+{
+ return intel_crtc_num_joined_pipes(crtc_state) >= 4;
+}
+
+static u8 ultrajoiner_primary_pipes(const struct intel_crtc_state *crtc_state)
+{
+ if (!intel_crtc_is_ultrajoiner(crtc_state))
+ return 0;
+
+ return crtc_state->joiner_pipes & (0b00010001 << joiner_primary_pipe(crtc_state));
+}
+
+bool intel_crtc_is_ultrajoiner_primary(const struct intel_crtc_state *crtc_state)
+{
+ struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+
+ return intel_crtc_is_ultrajoiner(crtc_state) &&
+ BIT(crtc->pipe) & ultrajoiner_primary_pipes(crtc_state);
+}
+
u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state)
{
if (crtc_state->joiner_pipes)
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index 783562dc013b..6f470ffc61ea 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -442,6 +442,8 @@ bool intel_crtc_is_joiner_secondary(const struct intel_crtc_state *crtc_state);
bool intel_crtc_is_joiner_primary(const struct intel_crtc_state *crtc_state);
bool intel_crtc_is_bigjoiner_primary(const struct intel_crtc_state *crtc_state);
bool intel_crtc_is_bigjoiner_secondary(const struct intel_crtc_state *crtc_state);
+bool intel_crtc_is_ultrajoiner(const struct intel_crtc_state *crtc_state);
+bool intel_crtc_is_ultrajoiner_primary(const struct intel_crtc_state *crtc_state);
u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state);
u8 _intel_modeset_primary_pipes(const struct intel_crtc_state *crtc_state);
u8 _intel_modeset_secondary_pipes(const struct intel_crtc_state *crtc_state);
diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c b/drivers/gpu/drm/i915/display/intel_vdsc.c
index 8158e3702ed5..990abac12779 100644
--- a/drivers/gpu/drm/i915/display/intel_vdsc.c
+++ b/drivers/gpu/drm/i915/display/intel_vdsc.c
@@ -379,9 +379,9 @@ static int intel_dsc_get_vdsc_per_pipe(const struct intel_crtc_state *crtc_state
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);
+ int num_joined_pipes = intel_crtc_num_joined_pipes(crtc_state);
- if (crtc_state->joiner_pipes)
- num_vdsc_instances *= 2;
+ num_vdsc_instances *= num_joined_pipes;
return num_vdsc_instances;
}
@@ -751,6 +751,14 @@ 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_crtc_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);
@@ -770,7 +778,19 @@ void intel_dsc_enable(const struct intel_crtc_state *crtc_state)
dss_ctl1_val |= JOINER_ENABLE;
}
if (crtc_state->joiner_pipes) {
+ /*
+ * This bit doesn't seem to follow primary/secondary 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_ultrajoiner_primary(crtc_state))
+ dss_ctl1_val |= PRIMARY_ULTRA_JOINER_ENABLE;
+
dss_ctl1_val |= BIG_JOINER_ENABLE;
+
if (intel_crtc_is_bigjoiner_primary(crtc_state))
dss_ctl1_val |= PRIMARY_BIG_JOINER_ENABLE;
}
--
2.45.2
^ permalink raw reply related [flat|nested] 34+ messages in thread* Re: [PATCH 12/15] drm/i915/display/vdsc: Add ultrajoiner support with DSC
2024-09-18 14:43 ` [PATCH 12/15] drm/i915/display/vdsc: Add ultrajoiner support with DSC Ankit Nautiyal
@ 2024-09-19 18:06 ` Ville Syrjälä
0 siblings, 0 replies; 34+ messages in thread
From: Ville Syrjälä @ 2024-09-19 18:06 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, suraj.kandpal
On Wed, Sep 18, 2024 at 08:13:40PM +0530, Ankit Nautiyal wrote:
> From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
>
> Add changes to DSC which are required for Ultrajoiner.
>
> v2:
> -Use correct helper for setting bits for bigjoiner secondary. (Ankit)
> -Use primary/secondary instead of master/slave. (Suraj)
> v3: Add the ultrajoiner helpers and use it for setting ultrajoiner
> bits (Ankit)
> v4: Use num_vdsc_instances *= num_joined_pipes (Ville)
>
> Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 21 +++++++++++++++++
> drivers/gpu/drm/i915/display/intel_display.h | 2 ++
> drivers/gpu/drm/i915/display/intel_vdsc.c | 24 ++++++++++++++++++--
> 3 files changed, 45 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 65119c26ec88..044f91359c42 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -314,6 +314,27 @@ u8 _intel_modeset_secondary_pipes(const struct intel_crtc_state *crtc_state)
> return bigjoiner_secondary_pipes(crtc_state);
> }
>
> +bool intel_crtc_is_ultrajoiner(const struct intel_crtc_state *crtc_state)
> +{
> + return intel_crtc_num_joined_pipes(crtc_state) >= 4;
> +}
> +
> +static u8 ultrajoiner_primary_pipes(const struct intel_crtc_state *crtc_state)
> +{
> + if (!intel_crtc_is_ultrajoiner(crtc_state))
> + return 0;
> +
> + return crtc_state->joiner_pipes & (0b00010001 << joiner_primary_pipe(crtc_state));
> +}
> +
> +bool intel_crtc_is_ultrajoiner_primary(const struct intel_crtc_state *crtc_state)
> +{
> + struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> +
> + return intel_crtc_is_ultrajoiner(crtc_state) &&
> + BIT(crtc->pipe) & ultrajoiner_primary_pipes(crtc_state);
> +}
> +
> u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state)
> {
> if (crtc_state->joiner_pipes)
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
> index 783562dc013b..6f470ffc61ea 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -442,6 +442,8 @@ bool intel_crtc_is_joiner_secondary(const struct intel_crtc_state *crtc_state);
> bool intel_crtc_is_joiner_primary(const struct intel_crtc_state *crtc_state);
> bool intel_crtc_is_bigjoiner_primary(const struct intel_crtc_state *crtc_state);
> bool intel_crtc_is_bigjoiner_secondary(const struct intel_crtc_state *crtc_state);
> +bool intel_crtc_is_ultrajoiner(const struct intel_crtc_state *crtc_state);
> +bool intel_crtc_is_ultrajoiner_primary(const struct intel_crtc_state *crtc_state);
> u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state);
> u8 _intel_modeset_primary_pipes(const struct intel_crtc_state *crtc_state);
> u8 _intel_modeset_secondary_pipes(const struct intel_crtc_state *crtc_state);
> diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c b/drivers/gpu/drm/i915/display/intel_vdsc.c
> index 8158e3702ed5..990abac12779 100644
> --- a/drivers/gpu/drm/i915/display/intel_vdsc.c
> +++ b/drivers/gpu/drm/i915/display/intel_vdsc.c
> @@ -379,9 +379,9 @@ static int intel_dsc_get_vdsc_per_pipe(const struct intel_crtc_state *crtc_state
> 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);
> + int num_joined_pipes = intel_crtc_num_joined_pipes(crtc_state);
>
> - if (crtc_state->joiner_pipes)
> - num_vdsc_instances *= 2;
> + num_vdsc_instances *= num_joined_pipes;
>
> return num_vdsc_instances;
> }
> @@ -751,6 +751,14 @@ 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_crtc_is_ultrajoiner(crtc_state) &&
> + crtc->pipe != PIPE_D;
> +}
For this I think we want a function similar to your
ultrajoiner_primary_pipes(), just with a 0b01110111 mask.
> +
> void intel_dsc_enable(const struct intel_crtc_state *crtc_state)
> {
> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> @@ -770,7 +778,19 @@ void intel_dsc_enable(const struct intel_crtc_state *crtc_state)
> dss_ctl1_val |= JOINER_ENABLE;
> }
> if (crtc_state->joiner_pipes) {
> + /*
> + * This bit doesn't seem to follow primary/secondary 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_ultrajoiner_primary(crtc_state))
> + dss_ctl1_val |= PRIMARY_ULTRA_JOINER_ENABLE;
> +
> dss_ctl1_val |= BIG_JOINER_ENABLE;
> +
> if (intel_crtc_is_bigjoiner_primary(crtc_state))
> dss_ctl1_val |= PRIMARY_BIG_JOINER_ENABLE;
> }
> --
> 2.45.2
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 13/15] drm/i915: Compute config and mode valid changes for ultrajoiner
2024-09-18 14:43 [PATCH 00/15] Ultrajoiner basic functionality series Ankit Nautiyal
` (11 preceding siblings ...)
2024-09-18 14:43 ` [PATCH 12/15] drm/i915/display/vdsc: Add ultrajoiner support with DSC Ankit Nautiyal
@ 2024-09-18 14:43 ` Ankit Nautiyal
2024-09-19 18:30 ` Ville Syrjälä
2024-09-18 14:43 ` [PATCH 14/15] drm/i915/display: Consider ultrajoiner for computing maxdotclock Ankit Nautiyal
` (5 subsequent siblings)
18 siblings, 1 reply; 34+ messages in thread
From: Ankit Nautiyal @ 2024-09-18 14:43 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe, suraj.kandpal, ville.syrjala
From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Implement required changes for mode validation and compute config,
to support Ultrajoiner.
v2:
-Drop changes for HDMI.
-Separate out DSC changes into another patch.
v3: Fix check in can_ultrajoiner. (Ankit)
Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 44 +++++++++++++++++++++----
1 file changed, 37 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 369829ea5a12..4005700ab043 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -871,24 +871,34 @@ u32 get_max_compressed_bpp_with_joiner(struct drm_i915_private *i915,
int num_joined_pipes)
{
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;
- if (num_joined_pipes == 2) {
- int bigjoiner_interface_bits = DISPLAY_VER(i915) >= 14 ? 36 : 24;
+ /* if ultra joiner is enabled, we have 2 bigjoiners enabled */
+ if (num_joined_pipes == 2 ||
+ num_joined_pipes == 4) {
+ int joiner_interface_bits = DISPLAY_VER(i915) >= 14 ? 36 : 24;
/* With bigjoiner 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 /
+ 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);
}
+ if (num_joined_pipes == 4) {
+ /* TODO: Check for ultrajoiner ram constraints */
- return max_bpp_small_joiner_ram;
+ /* both get multiplied by 2, because ram bits/ppc now doubled */
+ max_bpp_small_joiner_ram *= 2;
+ max_bpp_joiner *= 2;
+ }
+
+ return min(max_bpp_small_joiner_ram, max_bpp_joiner);
}
u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
@@ -994,6 +1004,10 @@ u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
if (num_joined_pipes == 2 && test_slice_count < 4)
continue;
+ /* ultrajoiner needs 2 bigjoiners to be enabled */
+ if (num_joined_pipes == 4 && test_slice_count < 8)
+ continue;
+
if (min_slice_count <= test_slice_count)
return test_slice_count;
}
@@ -1270,6 +1284,18 @@ intel_dp_mode_valid_downstream(struct intel_connector *connector,
return MODE_OK;
}
+static
+bool intel_dp_needs_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 (!HAS_ULTRAJOINER(i915))
+ return false;
+
+ return clock > (i915->display.cdclk.max_dotclk_freq * 2);
+}
+
static
bool intel_dp_needs_bigjoiner(struct intel_dp *intel_dp,
struct intel_connector *connector,
@@ -1296,6 +1322,8 @@ int intel_dp_compute_num_pipes(struct intel_dp *intel_dp,
MISSING_CASE(connector->force_joined_pipes);
fallthrough;
case 0:
+ if (intel_dp_needs_ultrajoiner(intel_dp, clock))
+ return 4;
if (intel_dp_needs_bigjoiner(intel_dp, connector, hdisplay, clock))
return 2;
}
@@ -2542,8 +2570,10 @@ bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915,
* 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 !HAS_UNCOMPRESSED_JOINER(i915) && num_joined_pipes == 2;
+ return (!HAS_UNCOMPRESSED_JOINER(i915) && num_joined_pipes == 2) ||
+ num_joined_pipes == 4;
}
static int
--
2.45.2
^ permalink raw reply related [flat|nested] 34+ messages in thread* Re: [PATCH 13/15] drm/i915: Compute config and mode valid changes for ultrajoiner
2024-09-18 14:43 ` [PATCH 13/15] drm/i915: Compute config and mode valid changes for ultrajoiner Ankit Nautiyal
@ 2024-09-19 18:30 ` Ville Syrjälä
0 siblings, 0 replies; 34+ messages in thread
From: Ville Syrjälä @ 2024-09-19 18:30 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, suraj.kandpal
On Wed, Sep 18, 2024 at 08:13:41PM +0530, Ankit Nautiyal wrote:
> From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
>
> Implement required changes for mode validation and compute config,
> to support Ultrajoiner.
>
> v2:
> -Drop changes for HDMI.
> -Separate out DSC changes into another patch.
> v3: Fix check in can_ultrajoiner. (Ankit)
>
> Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_dp.c | 44 +++++++++++++++++++++----
> 1 file changed, 37 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 369829ea5a12..4005700ab043 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -871,24 +871,34 @@ u32 get_max_compressed_bpp_with_joiner(struct drm_i915_private *i915,
> int num_joined_pipes)
> {
> 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;
>
> - if (num_joined_pipes == 2) {
> - int bigjoiner_interface_bits = DISPLAY_VER(i915) >= 14 ? 36 : 24;
> + /* if ultra joiner is enabled, we have 2 bigjoiners enabled */
> + if (num_joined_pipes == 2 ||
> + num_joined_pipes == 4) {
I guess just 'num_joined_pipes > 1' or something could be
used for all cases like this.
> + int joiner_interface_bits = DISPLAY_VER(i915) >= 14 ? 36 : 24;
Isn't this specifically about bigjoiner? If so the name should stay as
is.
> /* With bigjoiner 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 /
> + 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;
Can't we just multiply both max_* with num_joined_pipes
to take care of both bigjoiner and ultrajoiner?
>
> - return min(max_bpp_small_joiner_ram, max_bpp_bigjoiner);
> }
> + if (num_joined_pipes == 4) {
> + /* TODO: Check for ultrajoiner ram constraints */
>
> - return max_bpp_small_joiner_ram;
> + /* both get multiplied by 2, because ram bits/ppc now doubled */
> + max_bpp_small_joiner_ram *= 2;
> + max_bpp_joiner *= 2;
> + }
> +
> + return min(max_bpp_small_joiner_ram, max_bpp_joiner);
> }
>
> u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
> @@ -994,6 +1004,10 @@ u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
> if (num_joined_pipes == 2 && test_slice_count < 4)
> continue;
>
> + /* ultrajoiner needs 2 bigjoiners to be enabled */
> + if (num_joined_pipes == 4 && test_slice_count < 8)
> + continue;
> +
> if (min_slice_count <= test_slice_count)
> return test_slice_count;
> }
> @@ -1270,6 +1284,18 @@ intel_dp_mode_valid_downstream(struct intel_connector *connector,
> return MODE_OK;
> }
>
> +static
> +bool intel_dp_needs_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);
struct intel_display *display = intel_display(intel_dp);
> +
> + if (!HAS_ULTRAJOINER(i915))
> + return false;
> +
> + return clock > (i915->display.cdclk.max_dotclk_freq * 2);
Redundant parens.
> +}
> +
> static
> bool intel_dp_needs_bigjoiner(struct intel_dp *intel_dp,
> struct intel_connector *connector,
> @@ -1296,6 +1322,8 @@ int intel_dp_compute_num_pipes(struct intel_dp *intel_dp,
> MISSING_CASE(connector->force_joined_pipes);
> fallthrough;
> case 0:
> + if (intel_dp_needs_ultrajoiner(intel_dp, clock))
Hmm. Technically we should be checking the same things for both
bigjoiner and ultrajoiner.
How about something like this with parametrized number
of pipes:
bool intel_dp_needs_joiner(struct intel_dp *intel_dp,
struct intel_connector *connector,
int hdisplay, int clock,
int num_joined_pipes)
{
if (!intel_dp_has_joiner(intel_dp))
return false;
num_joined_pipes /= 2;
return clock > num_joined_pipes * max_dotclk_freq ||
hdisplay > num_joined_pipes * 5120;
}
Pair that with HAS_*JOINER(), and pass in the correct number
of joined pipes to get final answer.
> + return 4;
> if (intel_dp_needs_bigjoiner(intel_dp, connector, hdisplay, clock))
> return 2;
> }
> @@ -2542,8 +2570,10 @@ bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915,
> * 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 !HAS_UNCOMPRESSED_JOINER(i915) && num_joined_pipes == 2;
> + return (!HAS_UNCOMPRESSED_JOINER(i915) && num_joined_pipes == 2) ||
> + num_joined_pipes == 4;
> }
>
> static int
> --
> 2.45.2
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 14/15] drm/i915/display: Consider ultrajoiner for computing maxdotclock
2024-09-18 14:43 [PATCH 00/15] Ultrajoiner basic functionality series Ankit Nautiyal
` (12 preceding siblings ...)
2024-09-18 14:43 ` [PATCH 13/15] drm/i915: Compute config and mode valid changes for ultrajoiner Ankit Nautiyal
@ 2024-09-18 14:43 ` Ankit Nautiyal
2024-09-19 18:42 ` Ville Syrjälä
2024-09-18 14:43 ` [PATCH 15/15] drm/i915/intel_dp: Add support for forcing ultrajoiner Ankit Nautiyal
` (4 subsequent siblings)
18 siblings, 1 reply; 34+ messages in thread
From: Ankit Nautiyal @ 2024-09-18 14:43 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe, suraj.kandpal, ville.syrjala
Use the check for ultrajoiner while computing maxdotclock.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 044f91359c42..b1dc44f9fa88 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -8197,8 +8197,11 @@ static int max_dotclock(struct drm_i915_private *i915)
{
int max_dotclock = i915->display.cdclk.max_dotclk_freq;
+ if (HAS_ULTRAJOINER(i915))
+ max_dotclock *= 4;
+
/* icl+ might use joiner */
- if (HAS_BIGJOINER(i915))
+ else if (HAS_BIGJOINER(i915))
max_dotclock *= 2;
return max_dotclock;
--
2.45.2
^ permalink raw reply related [flat|nested] 34+ messages in thread* Re: [PATCH 14/15] drm/i915/display: Consider ultrajoiner for computing maxdotclock
2024-09-18 14:43 ` [PATCH 14/15] drm/i915/display: Consider ultrajoiner for computing maxdotclock Ankit Nautiyal
@ 2024-09-19 18:42 ` Ville Syrjälä
0 siblings, 0 replies; 34+ messages in thread
From: Ville Syrjälä @ 2024-09-19 18:42 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, suraj.kandpal
On Wed, Sep 18, 2024 at 08:13:42PM +0530, Ankit Nautiyal wrote:
> Use the check for ultrajoiner while computing maxdotclock.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 044f91359c42..b1dc44f9fa88 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -8197,8 +8197,11 @@ static int max_dotclock(struct drm_i915_private *i915)
> {
> int max_dotclock = i915->display.cdclk.max_dotclk_freq;
>
> + if (HAS_ULTRAJOINER(i915))
> + max_dotclock *= 4;
> +
> /* icl+ might use joiner */
> - if (HAS_BIGJOINER(i915))
> + else if (HAS_BIGJOINER(i915))
I'd probably write that as 'HAS_BIGJOINER || HAS_UNCOMPRESSED_JOINER'
just to reduce our dependency on the subtle detail that all current
uncompressed joiner capable hardware is also bigjoiner capable.
In fact, technically that isn't even true because bigjoiner
depends on dsc which can (at least theoretically) be fused
odd. Perhaps we also want to include a has_dsc check in
HAS_BIGJOINER() and HAS_ULTRAJOINER()...
> max_dotclock *= 2;
>
> return max_dotclock;
> --
> 2.45.2
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 15/15] drm/i915/intel_dp: Add support for forcing ultrajoiner
2024-09-18 14:43 [PATCH 00/15] Ultrajoiner basic functionality series Ankit Nautiyal
` (13 preceding siblings ...)
2024-09-18 14:43 ` [PATCH 14/15] drm/i915/display: Consider ultrajoiner for computing maxdotclock Ankit Nautiyal
@ 2024-09-18 14:43 ` Ankit Nautiyal
2024-09-19 18:45 ` Ville Syrjälä
2024-09-18 15:22 ` ✗ Fi.CI.CHECKPATCH: warning for Ultrajoiner basic functionality series (rev9) Patchwork
` (3 subsequent siblings)
18 siblings, 1 reply; 34+ messages in thread
From: Ankit Nautiyal @ 2024-09-18 14:43 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe, suraj.kandpal, ville.syrjala
Allow forcing ultrajoiner through debugfs.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
---
drivers/gpu/drm/i915/display/intel_display_debugfs.c | 8 ++++++++
drivers/gpu/drm/i915/display/intel_dp.c | 2 ++
2 files changed, 10 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
index 85742400348f..f5dcc1a4c45c 100644
--- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
+++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
@@ -1520,6 +1520,7 @@ static ssize_t i915_joiner_write(struct file *file,
struct seq_file *m = file->private_data;
struct intel_connector *connector = m->private;
struct intel_display *display = to_intel_display(connector);
+ struct drm_i915_private *i915 = to_i915(display->drm);
int force_join_pipes = 0;
int ret;
@@ -1538,6 +1539,13 @@ static ssize_t i915_joiner_write(struct file *file,
case 2:
connector->force_joined_pipes = force_join_pipes;
break;
+ case 4:
+ if (HAS_ULTRAJOINER(i915)) {
+ connector->force_joined_pipes = 4;
+ break;
+ }
+
+ fallthrough;
default:
drm_dbg(display->drm, "Ignoring Invalid num of pipes %d for force joining\n",
force_join_pipes);
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 4005700ab043..be82d4485fee 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -1317,6 +1317,8 @@ int intel_dp_compute_num_pipes(struct intel_dp *intel_dp,
case 1:
fallthrough;
case 2:
+ fallthrough;
+ case 4:
return connector->force_joined_pipes;
default:
MISSING_CASE(connector->force_joined_pipes);
--
2.45.2
^ permalink raw reply related [flat|nested] 34+ messages in thread* Re: [PATCH 15/15] drm/i915/intel_dp: Add support for forcing ultrajoiner
2024-09-18 14:43 ` [PATCH 15/15] drm/i915/intel_dp: Add support for forcing ultrajoiner Ankit Nautiyal
@ 2024-09-19 18:45 ` Ville Syrjälä
0 siblings, 0 replies; 34+ messages in thread
From: Ville Syrjälä @ 2024-09-19 18:45 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, suraj.kandpal
On Wed, Sep 18, 2024 at 08:13:43PM +0530, Ankit Nautiyal wrote:
> Allow forcing ultrajoiner through debugfs.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display_debugfs.c | 8 ++++++++
> drivers/gpu/drm/i915/display/intel_dp.c | 2 ++
> 2 files changed, 10 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> index 85742400348f..f5dcc1a4c45c 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> @@ -1520,6 +1520,7 @@ static ssize_t i915_joiner_write(struct file *file,
> struct seq_file *m = file->private_data;
> struct intel_connector *connector = m->private;
> struct intel_display *display = to_intel_display(connector);
> + struct drm_i915_private *i915 = to_i915(display->drm);
> int force_join_pipes = 0;
> int ret;
>
> @@ -1538,6 +1539,13 @@ static ssize_t i915_joiner_write(struct file *file,
> case 2:
> connector->force_joined_pipes = force_join_pipes;
> break;
> + case 4:
> + if (HAS_ULTRAJOINER(i915)) {
> + connector->force_joined_pipes = 4;
You assigned '... = force_join_pipes' in the other cases
so I'd do the same here instead of hardcoding the =4.
> + break;
> + }
> +
> + fallthrough;
> default:
> drm_dbg(display->drm, "Ignoring Invalid num of pipes %d for force joining\n",
> force_join_pipes);
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 4005700ab043..be82d4485fee 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -1317,6 +1317,8 @@ int intel_dp_compute_num_pipes(struct intel_dp *intel_dp,
> case 1:
> fallthrough;
> case 2:
> + fallthrough;
Unnecessary fallthrough.
> + case 4:
> return connector->force_joined_pipes;
> default:
> MISSING_CASE(connector->force_joined_pipes);
> --
> 2.45.2
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 34+ messages in thread
* ✗ Fi.CI.CHECKPATCH: warning for Ultrajoiner basic functionality series (rev9)
2024-09-18 14:43 [PATCH 00/15] Ultrajoiner basic functionality series Ankit Nautiyal
` (14 preceding siblings ...)
2024-09-18 14:43 ` [PATCH 15/15] drm/i915/intel_dp: Add support for forcing ultrajoiner Ankit Nautiyal
@ 2024-09-18 15:22 ` Patchwork
2024-09-18 15:22 ` ✗ Fi.CI.SPARSE: " Patchwork
` (2 subsequent siblings)
18 siblings, 0 replies; 34+ messages in thread
From: Patchwork @ 2024-09-18 15:22 UTC (permalink / raw)
To: Stanislav Lisovskiy; +Cc: intel-gfx
== Series Details ==
Series: Ultrajoiner basic functionality series (rev9)
URL : https://patchwork.freedesktop.org/series/133800/
State : warning
== Summary ==
Error: dim checkpatch failed
7f9c12c8ab14 drm/i915: Add some essential functionality for joiners
6a5b5a43ecd0 drm/i915/display: Enhance iterators for modeset en/disable
-:204: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'crtc' - possible side-effects?
#204: FILE: drivers/gpu/drm/i915/display/intel_display.h:395:
+#define for_each_crtc_in_masks(display, crtc, first_pipes, second_pipes, i) \
+ for ((i) = 0; \
+ (i) < (I915_MAX_PIPES * 2) && ((crtc) = intel_crtc_for_pipe(display, (i) % I915_MAX_PIPES), 1); \
+ (i)++) \
+ for_each_if((crtc) && ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)) & BIT(i))
-:204: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects?
#204: FILE: drivers/gpu/drm/i915/display/intel_display.h:395:
+#define for_each_crtc_in_masks(display, crtc, first_pipes, second_pipes, i) \
+ for ((i) = 0; \
+ (i) < (I915_MAX_PIPES * 2) && ((crtc) = intel_crtc_for_pipe(display, (i) % I915_MAX_PIPES), 1); \
+ (i)++) \
+ for_each_if((crtc) && ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)) & BIT(i))
-:206: WARNING:LONG_LINE: line length of 110 exceeds 100 columns
#206: FILE: drivers/gpu/drm/i915/display/intel_display.h:397:
+ (i) < (I915_MAX_PIPES * 2) && ((crtc) = intel_crtc_for_pipe(display, (i) % I915_MAX_PIPES), 1); \
-:210: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'crtc' - possible side-effects?
#210: FILE: drivers/gpu/drm/i915/display/intel_display.h:401:
+#define for_each_crtc_in_masks_reverse(display, crtc, first_pipes, second_pipes, i) \
+ for ((i) = (I915_MAX_PIPES * 2 - 1); \
+ (i) >= 0 && ((crtc) = intel_crtc_for_pipe(display, (i) % I915_MAX_PIPES), 1); \
+ (i)--) \
+ for_each_if((crtc) && ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)) & BIT(i))
-:210: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects?
#210: FILE: drivers/gpu/drm/i915/display/intel_display.h:401:
+#define for_each_crtc_in_masks_reverse(display, crtc, first_pipes, second_pipes, i) \
+ for ((i) = (I915_MAX_PIPES * 2 - 1); \
+ (i) >= 0 && ((crtc) = intel_crtc_for_pipe(display, (i) % I915_MAX_PIPES), 1); \
+ (i)--) \
+ for_each_if((crtc) && ((first_pipes) | ((second_pipes) << I915_MAX_PIPES)) & BIT(i))
-:216: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'crtc_state' - possible side-effects?
#216: FILE: drivers/gpu/drm/i915/display/intel_display.h:407:
+#define for_each_pipe_crtc_modeset_disable(display, crtc, crtc_state, i) \
+ for_each_crtc_in_masks(display, crtc, \
+ _intel_modeset_primary_pipes(crtc_state), \
+ _intel_modeset_secondary_pipes(crtc_state), \
+ i)
-:222: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'crtc_state' - possible side-effects?
#222: FILE: drivers/gpu/drm/i915/display/intel_display.h:413:
+#define for_each_pipe_crtc_modeset_enable(display, crtc, crtc_state, i) \
+ for_each_crtc_in_masks_reverse(display, crtc, \
+ _intel_modeset_primary_pipes(crtc_state), \
+ _intel_modeset_secondary_pipes(crtc_state), \
+ i)
total: 0 errors, 1 warnings, 6 checks, 234 lines checked
4d4efc9deed7 drm/i915/display_debugfs: Allow force joiner only if supported
df6d2d17d88e drm/i915/display: Modify debugfs for joiner to force n pipes
d16d4875812e drm/i915/dp: Add helper to compute num pipes required
1aba0d5af3ce drm/i915/display: Add debugfs support to avoid joiner
e4caaef167f1 drm/i915: Split current joiner hw state readout
b3e03e79c34d drm/i915: Add bigjoiner and uncompressed joiner hw readout sanity checks
aa0ae3b5a754 drm/i915/display: Add macro HAS_ULTRAJOINER()
-:18: WARNING:LONG_LINE: line length of 110 exceeds 100 columns
#18: FILE: drivers/gpu/drm/i915/display/intel_display_device.h:157:
+#define HAS_ULTRAJOINER(i915) ((DISPLAY_VER(i915) == 14 && IS_DGFX(i915)) || DISPLAY_VER(i915) > 14)
-:18: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i915' - possible side-effects?
#18: FILE: drivers/gpu/drm/i915/display/intel_display_device.h:157:
+#define HAS_ULTRAJOINER(i915) ((DISPLAY_VER(i915) == 14 && IS_DGFX(i915)) || DISPLAY_VER(i915) > 14)
total: 0 errors, 1 warnings, 1 checks, 7 lines checked
7fc7cdaad399 drm/i915: Implement hw state readout and checks for ultrajoiner
a8765aa8412f drm/i915/display: Refactor enable_joiner_pipes
89a087c8cac4 drm/i915/display/vdsc: Add ultrajoiner support with DSC
3d45203e749c drm/i915: Compute config and mode valid changes for ultrajoiner
3e7af13225d2 drm/i915/display: Consider ultrajoiner for computing maxdotclock
6cc6ceac2394 drm/i915/intel_dp: Add support for forcing ultrajoiner
^ permalink raw reply [flat|nested] 34+ messages in thread* ✗ Fi.CI.SPARSE: warning for Ultrajoiner basic functionality series (rev9)
2024-09-18 14:43 [PATCH 00/15] Ultrajoiner basic functionality series Ankit Nautiyal
` (15 preceding siblings ...)
2024-09-18 15:22 ` ✗ Fi.CI.CHECKPATCH: warning for Ultrajoiner basic functionality series (rev9) Patchwork
@ 2024-09-18 15:22 ` Patchwork
2024-09-18 15:30 ` ✓ Fi.CI.BAT: success " Patchwork
2024-09-19 5:01 ` ✗ Fi.CI.IGT: failure " Patchwork
18 siblings, 0 replies; 34+ messages in thread
From: Patchwork @ 2024-09-18 15:22 UTC (permalink / raw)
To: Stanislav Lisovskiy; +Cc: intel-gfx
== Series Details ==
Series: Ultrajoiner basic functionality series (rev9)
URL : https://patchwork.freedesktop.org/series/133800/
State : warning
== Summary ==
Error: dim sparse failed
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.
^ permalink raw reply [flat|nested] 34+ messages in thread* ✓ Fi.CI.BAT: success for Ultrajoiner basic functionality series (rev9)
2024-09-18 14:43 [PATCH 00/15] Ultrajoiner basic functionality series Ankit Nautiyal
` (16 preceding siblings ...)
2024-09-18 15:22 ` ✗ Fi.CI.SPARSE: " Patchwork
@ 2024-09-18 15:30 ` Patchwork
2024-09-19 5:01 ` ✗ Fi.CI.IGT: failure " Patchwork
18 siblings, 0 replies; 34+ messages in thread
From: Patchwork @ 2024-09-18 15:30 UTC (permalink / raw)
To: Stanislav Lisovskiy; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 4078 bytes --]
== Series Details ==
Series: Ultrajoiner basic functionality series (rev9)
URL : https://patchwork.freedesktop.org/series/133800/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_15435 -> Patchwork_133800v9
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/index.html
Participating hosts (37 -> 35)
------------------------------
Additional (1): fi-pnv-d510
Missing (3): bat-dg2-9 fi-snb-2520m fi-kbl-8809g
Known issues
------------
Here are the changes found in Patchwork_133800v9 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12:
- fi-pnv-d510: NOTRUN -> [SKIP][1] +33 other tests skip
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/fi-pnv-d510/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12.html
#### Possible fixes ####
* igt@i915_selftest@live:
- bat-mtlp-8: [ABORT][2] ([i915#12061]) -> [PASS][3] +1 other test pass
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/bat-mtlp-8/igt@i915_selftest@live.html
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/bat-mtlp-8/igt@i915_selftest@live.html
#### Warnings ####
* igt@i915_module_load@reload:
- fi-kbl-7567u: [DMESG-WARN][4] ([i915#180] / [i915#9925]) -> [DMESG-WARN][5] ([i915#180] / [i915#1982] / [i915#9925])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/fi-kbl-7567u/igt@i915_module_load@reload.html
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/fi-kbl-7567u/igt@i915_module_load@reload.html
- bat-arls-5: [DMESG-WARN][6] ([i915#11637] / [i915#1982]) -> [DMESG-WARN][7] ([i915#11637])
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/bat-arls-5/igt@i915_module_load@reload.html
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/bat-arls-5/igt@i915_module_load@reload.html
* igt@kms_flip@basic-flip-vs-wf_vblank:
- fi-kbl-7567u: [DMESG-WARN][8] ([i915#180] / [i915#1982] / [i915#9925]) -> [DMESG-WARN][9] ([i915#180] / [i915#9925])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/fi-kbl-7567u/igt@kms_flip@basic-flip-vs-wf_vblank.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/fi-kbl-7567u/igt@kms_flip@basic-flip-vs-wf_vblank.html
* igt@kms_flip@basic-flip-vs-wf_vblank@a-dp1:
- fi-kbl-7567u: [DMESG-WARN][10] ([i915#11621] / [i915#180] / [i915#1982] / [i915#9925]) -> [DMESG-WARN][11] ([i915#11621] / [i915#180] / [i915#9925])
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/fi-kbl-7567u/igt@kms_flip@basic-flip-vs-wf_vblank@a-dp1.html
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/fi-kbl-7567u/igt@kms_flip@basic-flip-vs-wf_vblank@a-dp1.html
[i915#11621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11621
[i915#11637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11637
[i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
[i915#180]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/180
[i915#1982]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1982
[i915#9925]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9925
Build changes
-------------
* IGT: IGT_8024 -> IGTPW_11755
* Linux: CI_DRM_15435 -> Patchwork_133800v9
CI-20190529: 20190529
CI_DRM_15435: 3abb1f2faac15a9f09824d692d1a38e0c485dc6b @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_11755: 406ba93e99bbbe39aecf3dad3c6a58ff7a76d816 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8024: 15f8ad0bce184e96d171dfe19c06bdef93e7cf72 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_133800v9: 3abb1f2faac15a9f09824d692d1a38e0c485dc6b @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/index.html
[-- Attachment #2: Type: text/html, Size: 5893 bytes --]
^ permalink raw reply [flat|nested] 34+ messages in thread* ✗ Fi.CI.IGT: failure for Ultrajoiner basic functionality series (rev9)
2024-09-18 14:43 [PATCH 00/15] Ultrajoiner basic functionality series Ankit Nautiyal
` (17 preceding siblings ...)
2024-09-18 15:30 ` ✓ Fi.CI.BAT: success " Patchwork
@ 2024-09-19 5:01 ` Patchwork
18 siblings, 0 replies; 34+ messages in thread
From: Patchwork @ 2024-09-19 5:01 UTC (permalink / raw)
To: Stanislav Lisovskiy; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 92214 bytes --]
== Series Details ==
Series: Ultrajoiner basic functionality series (rev9)
URL : https://patchwork.freedesktop.org/series/133800/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_15435_full -> Patchwork_133800v9_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_133800v9_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_133800v9_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_133800v9_full:
### IGT changes ###
#### Possible regressions ####
* igt@kms_joiner@basic-big-joiner (NEW):
- shard-rkl: NOTRUN -> [SKIP][1] +7 other tests skip
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-4/igt@kms_joiner@basic-big-joiner.html
* igt@kms_joiner@basic-force-big-joiner (NEW):
- shard-tglu: NOTRUN -> [SKIP][2] +6 other tests skip
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-6/igt@kms_joiner@basic-force-big-joiner.html
* igt@kms_joiner@basic-force-ultra-joiner (NEW):
- shard-dg1: NOTRUN -> [SKIP][3] +5 other tests skip
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-14/igt@kms_joiner@basic-force-ultra-joiner.html
* igt@kms_joiner@invalid-modeset-force-ultra-joiner (NEW):
- shard-dg2: NOTRUN -> [SKIP][4] +6 other tests skip
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-5/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html
* igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
- shard-mtlp: NOTRUN -> [SKIP][5] +9 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-5/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
#### Warnings ####
* igt@gem_exec_fair@basic-none-rrul:
- shard-rkl: [FAIL][6] ([i915#2842]) -> [FAIL][7]
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-rkl-4/igt@gem_exec_fair@basic-none-rrul.html
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-2/igt@gem_exec_fair@basic-none-rrul.html
* igt@kms_cursor_crc@cursor-sliding-512x170:
- shard-mtlp: [SKIP][8] ([i915#3359]) -> [SKIP][9] +6 other tests skip
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-mtlp-2/igt@kms_cursor_crc@cursor-sliding-512x170.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-5/igt@kms_cursor_crc@cursor-sliding-512x170.html
* igt@kms_psr@psr2-primary-mmap-gtt:
- shard-mtlp: [SKIP][10] ([i915#4077] / [i915#9688]) -> [FAIL][11]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-mtlp-8/igt@kms_psr@psr2-primary-mmap-gtt.html
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-7/igt@kms_psr@psr2-primary-mmap-gtt.html
* igt@kms_rotation_crc@bad-tiling:
- shard-mtlp: [SKIP][12] ([i915#4235]) -> [SKIP][13] +8 other tests skip
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-mtlp-6/igt@kms_rotation_crc@bad-tiling.html
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-5/igt@kms_rotation_crc@bad-tiling.html
New tests
---------
New tests have been introduced between CI_DRM_15435_full and Patchwork_133800v9_full:
### New IGT tests (10) ###
* igt@kms_joiner@basic-big-joiner:
- Statuses : 6 skip(s)
- Exec time: [0.0] s
* igt@kms_joiner@basic-force-big-joiner:
- Statuses : 1 pass(s) 5 skip(s)
- Exec time: [0.0, 3.61] s
* igt@kms_joiner@basic-force-big-joiner@single:
- Statuses : 1 pass(s)
- Exec time: [3.61] s
* igt@kms_joiner@basic-force-ultra-joiner:
- Statuses : 6 skip(s)
- Exec time: [0.0] s
* igt@kms_joiner@basic-ultra-joiner:
- Statuses : 6 skip(s)
- Exec time: [0.0] s
* igt@kms_joiner@invalid-modeset-big-joiner:
- Statuses : 6 skip(s)
- Exec time: [0.0] s
* igt@kms_joiner@invalid-modeset-force-big-joiner:
- Statuses : 1 pass(s) 4 skip(s)
- Exec time: [0.0, 0.33] s
* igt@kms_joiner@invalid-modeset-force-big-joiner@big_joiner_on_last_pipe:
- Statuses : 1 pass(s)
- Exec time: [0.33] s
* igt@kms_joiner@invalid-modeset-force-ultra-joiner:
- Statuses : 7 skip(s)
- Exec time: [0.0] s
* igt@kms_joiner@invalid-modeset-ultra-joiner:
- Statuses : 7 skip(s)
- Exec time: [0.0] s
Known issues
------------
Here are the changes found in Patchwork_133800v9_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@api_intel_bb@object-reloc-keep-cache:
- shard-rkl: NOTRUN -> [SKIP][14] ([i915#8411]) +2 other tests skip
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-6/igt@api_intel_bb@object-reloc-keep-cache.html
* igt@device_reset@unbind-cold-reset-rebind:
- shard-dg2: NOTRUN -> [SKIP][15] ([i915#11078])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-11/igt@device_reset@unbind-cold-reset-rebind.html
* igt@drm_fdinfo@all-busy-check-all:
- shard-mtlp: NOTRUN -> [SKIP][16] ([i915#8414]) +14 other tests skip
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-3/igt@drm_fdinfo@all-busy-check-all.html
* igt@drm_fdinfo@busy-idle-check-all@vcs0:
- shard-dg2: NOTRUN -> [SKIP][17] ([i915#8414]) +8 other tests skip
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-2/igt@drm_fdinfo@busy-idle-check-all@vcs0.html
* igt@drm_fdinfo@busy-idle-check-all@vcs1:
- shard-dg1: NOTRUN -> [SKIP][18] ([i915#8414]) +17 other tests skip
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-16/igt@drm_fdinfo@busy-idle-check-all@vcs1.html
* igt@gem_ccs@ctrl-surf-copy-new-ctx:
- shard-rkl: NOTRUN -> [SKIP][19] ([i915#9323])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-5/igt@gem_ccs@ctrl-surf-copy-new-ctx.html
* igt@gem_close_race@multigpu-basic-process:
- shard-tglu: NOTRUN -> [SKIP][20] ([i915#7697])
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-7/igt@gem_close_race@multigpu-basic-process.html
- shard-mtlp: NOTRUN -> [SKIP][21] ([i915#7697])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-6/igt@gem_close_race@multigpu-basic-process.html
- shard-dg1: NOTRUN -> [SKIP][22] ([i915#7697])
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-15/igt@gem_close_race@multigpu-basic-process.html
* igt@gem_create@create-ext-cpu-access-big:
- shard-tglu: NOTRUN -> [SKIP][23] ([i915#6335])
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-8/igt@gem_create@create-ext-cpu-access-big.html
- shard-dg2: NOTRUN -> [ABORT][24] ([i915#9846])
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-8/igt@gem_create@create-ext-cpu-access-big.html
- shard-rkl: NOTRUN -> [SKIP][25] ([i915#6335])
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-6/igt@gem_create@create-ext-cpu-access-big.html
* igt@gem_ctx_freq@sysfs:
- shard-dg2: [PASS][26] -> [FAIL][27] ([i915#9561]) +1 other test fail
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-dg2-4/igt@gem_ctx_freq@sysfs.html
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-4/igt@gem_ctx_freq@sysfs.html
* igt@gem_ctx_persistence@hang:
- shard-dg2: NOTRUN -> [SKIP][28] ([i915#8555])
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-2/igt@gem_ctx_persistence@hang.html
* igt@gem_ctx_persistence@heartbeat-many:
- shard-dg1: NOTRUN -> [SKIP][29] ([i915#8555])
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-15/igt@gem_ctx_persistence@heartbeat-many.html
* igt@gem_ctx_sseu@invalid-args:
- shard-dg2: NOTRUN -> [SKIP][30] ([i915#280])
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-2/igt@gem_ctx_sseu@invalid-args.html
- shard-rkl: NOTRUN -> [SKIP][31] ([i915#280])
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-4/igt@gem_ctx_sseu@invalid-args.html
- shard-tglu: NOTRUN -> [SKIP][32] ([i915#280])
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-8/igt@gem_ctx_sseu@invalid-args.html
* igt@gem_ctx_sseu@invalid-sseu:
- shard-dg1: NOTRUN -> [SKIP][33] ([i915#280])
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-17/igt@gem_ctx_sseu@invalid-sseu.html
* igt@gem_exec_balancer@parallel-balancer:
- shard-rkl: NOTRUN -> [SKIP][34] ([i915#4525]) +2 other tests skip
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-4/igt@gem_exec_balancer@parallel-balancer.html
* igt@gem_exec_capture@capture-invisible:
- shard-dg2: NOTRUN -> [SKIP][35] ([i915#6334]) +2 other tests skip
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-2/igt@gem_exec_capture@capture-invisible.html
- shard-rkl: NOTRUN -> [SKIP][36] ([i915#6334]) +1 other test skip
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-5/igt@gem_exec_capture@capture-invisible.html
- shard-tglu: NOTRUN -> [SKIP][37] ([i915#6334]) +1 other test skip
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-5/igt@gem_exec_capture@capture-invisible.html
* igt@gem_exec_capture@capture-invisible@smem0:
- shard-glk: NOTRUN -> [SKIP][38] ([i915#6334]) +1 other test skip
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-glk1/igt@gem_exec_capture@capture-invisible@smem0.html
- shard-mtlp: NOTRUN -> [SKIP][39] ([i915#6334]) +1 other test skip
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-1/igt@gem_exec_capture@capture-invisible@smem0.html
* igt@gem_exec_capture@capture@vecs0-lmem0:
- shard-dg1: NOTRUN -> [FAIL][40] ([i915#11965]) +2 other tests fail
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-16/igt@gem_exec_capture@capture@vecs0-lmem0.html
* igt@gem_exec_endless@dispatch:
- shard-dg2: [PASS][41] -> [TIMEOUT][42] ([i915#7016])
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-dg2-5/igt@gem_exec_endless@dispatch.html
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-4/igt@gem_exec_endless@dispatch.html
* igt@gem_exec_endless@dispatch@bcs0:
- shard-dg2: [PASS][43] -> [TIMEOUT][44] ([i915#3778] / [i915#7016])
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-dg2-5/igt@gem_exec_endless@dispatch@bcs0.html
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-4/igt@gem_exec_endless@dispatch@bcs0.html
* igt@gem_exec_fair@basic-none-solo:
- shard-glk: NOTRUN -> [FAIL][45] ([i915#2842]) +1 other test fail
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-glk9/igt@gem_exec_fair@basic-none-solo.html
* igt@gem_exec_fair@basic-none-vip@rcs0:
- shard-rkl: NOTRUN -> [FAIL][46] ([i915#2842]) +5 other tests fail
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-4/igt@gem_exec_fair@basic-none-vip@rcs0.html
* igt@gem_exec_fair@basic-pace-solo:
- shard-dg1: NOTRUN -> [SKIP][47] ([i915#3539])
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-14/igt@gem_exec_fair@basic-pace-solo.html
- shard-mtlp: NOTRUN -> [SKIP][48] ([i915#4473])
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-7/igt@gem_exec_fair@basic-pace-solo.html
* igt@gem_exec_fence@submit:
- shard-dg2: NOTRUN -> [SKIP][49] ([i915#4812])
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-2/igt@gem_exec_fence@submit.html
* igt@gem_exec_flush@basic-uc-pro-default:
- shard-dg2: NOTRUN -> [SKIP][50] ([i915#3539] / [i915#4852]) +3 other tests skip
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-1/igt@gem_exec_flush@basic-uc-pro-default.html
* igt@gem_exec_flush@basic-wb-rw-before-default:
- shard-dg1: NOTRUN -> [SKIP][51] ([i915#3539] / [i915#4852]) +1 other test skip
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-17/igt@gem_exec_flush@basic-wb-rw-before-default.html
* igt@gem_exec_reloc@basic-cpu-read-noreloc:
- shard-mtlp: NOTRUN -> [SKIP][52] ([i915#3281]) +5 other tests skip
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-1/igt@gem_exec_reloc@basic-cpu-read-noreloc.html
* igt@gem_exec_reloc@basic-wc-read-noreloc:
- shard-rkl: NOTRUN -> [SKIP][53] ([i915#3281]) +19 other tests skip
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-3/igt@gem_exec_reloc@basic-wc-read-noreloc.html
* igt@gem_exec_reloc@basic-write-gtt:
- shard-dg2: NOTRUN -> [SKIP][54] ([i915#3281]) +10 other tests skip
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-1/igt@gem_exec_reloc@basic-write-gtt.html
* igt@gem_exec_reloc@basic-write-gtt-active:
- shard-dg1: NOTRUN -> [SKIP][55] ([i915#3281]) +10 other tests skip
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-14/igt@gem_exec_reloc@basic-write-gtt-active.html
* igt@gem_exec_schedule@deep@rcs0:
- shard-mtlp: NOTRUN -> [SKIP][56] ([i915#4537])
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-1/igt@gem_exec_schedule@deep@rcs0.html
* igt@gem_exec_schedule@preempt-queue:
- shard-dg1: NOTRUN -> [SKIP][57] ([i915#4812]) +1 other test skip
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-14/igt@gem_exec_schedule@preempt-queue.html
* igt@gem_exec_schedule@preempt-queue-contexts:
- shard-mtlp: NOTRUN -> [SKIP][58] ([i915#4537] / [i915#4812])
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-5/igt@gem_exec_schedule@preempt-queue-contexts.html
- shard-dg2: NOTRUN -> [SKIP][59] ([i915#4537] / [i915#4812])
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-7/igt@gem_exec_schedule@preempt-queue-contexts.html
* igt@gem_fence_thrash@bo-write-verify-none:
- shard-dg1: NOTRUN -> [SKIP][60] ([i915#4860]) +1 other test skip
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-15/igt@gem_fence_thrash@bo-write-verify-none.html
* igt@gem_huc_copy@huc-copy:
- shard-rkl: NOTRUN -> [SKIP][61] ([i915#2190])
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-5/igt@gem_huc_copy@huc-copy.html
- shard-tglu: NOTRUN -> [SKIP][62] ([i915#2190])
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-10/igt@gem_huc_copy@huc-copy.html
* igt@gem_lmem_swapping@basic:
- shard-tglu: NOTRUN -> [SKIP][63] ([i915#4613])
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-7/igt@gem_lmem_swapping@basic.html
* igt@gem_lmem_swapping@massive:
- shard-rkl: NOTRUN -> [SKIP][64] ([i915#4613]) +2 other tests skip
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-2/igt@gem_lmem_swapping@massive.html
- shard-mtlp: NOTRUN -> [SKIP][65] ([i915#4613])
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-3/igt@gem_lmem_swapping@massive.html
* igt@gem_lmem_swapping@random-engines:
- shard-glk: NOTRUN -> [SKIP][66] ([i915#4613]) +2 other tests skip
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-glk2/igt@gem_lmem_swapping@random-engines.html
* igt@gem_lmem_swapping@smem-oom@lmem0:
- shard-dg2: [PASS][67] -> [TIMEOUT][68] ([i915#5493]) +1 other test timeout
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-dg2-10/igt@gem_lmem_swapping@smem-oom@lmem0.html
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-1/igt@gem_lmem_swapping@smem-oom@lmem0.html
* igt@gem_mmap_gtt@basic-write-read-distinct:
- shard-mtlp: NOTRUN -> [SKIP][69] ([i915#4077]) +5 other tests skip
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-5/igt@gem_mmap_gtt@basic-write-read-distinct.html
* igt@gem_mmap_gtt@cpuset-big-copy:
- shard-dg2: NOTRUN -> [SKIP][70] ([i915#4077]) +3 other tests skip
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-7/igt@gem_mmap_gtt@cpuset-big-copy.html
* igt@gem_mmap_gtt@medium-copy-odd:
- shard-dg1: NOTRUN -> [SKIP][71] ([i915#4077]) +9 other tests skip
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-17/igt@gem_mmap_gtt@medium-copy-odd.html
* igt@gem_mmap_wc@invalid-flags:
- shard-dg2: NOTRUN -> [SKIP][72] ([i915#4083]) +3 other tests skip
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-11/igt@gem_mmap_wc@invalid-flags.html
- shard-dg1: NOTRUN -> [SKIP][73] ([i915#4083]) +3 other tests skip
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-16/igt@gem_mmap_wc@invalid-flags.html
* igt@gem_mmap_wc@read-write:
- shard-mtlp: NOTRUN -> [SKIP][74] ([i915#4083]) +3 other tests skip
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-3/igt@gem_mmap_wc@read-write.html
* igt@gem_partial_pwrite_pread@writes-after-reads-uncached:
- shard-dg1: NOTRUN -> [SKIP][75] ([i915#3282]) +3 other tests skip
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-15/igt@gem_partial_pwrite_pread@writes-after-reads-uncached.html
* igt@gem_pread@snoop:
- shard-rkl: NOTRUN -> [SKIP][76] ([i915#3282]) +7 other tests skip
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-3/igt@gem_pread@snoop.html
* igt@gem_pxp@protected-encrypted-src-copy-not-readible:
- shard-dg1: NOTRUN -> [SKIP][77] ([i915#4270]) +1 other test skip
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-17/igt@gem_pxp@protected-encrypted-src-copy-not-readible.html
* igt@gem_pxp@reject-modify-context-protection-off-1:
- shard-tglu: NOTRUN -> [SKIP][78] ([i915#4270]) +1 other test skip
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-6/igt@gem_pxp@reject-modify-context-protection-off-1.html
- shard-mtlp: NOTRUN -> [SKIP][79] ([i915#4270]) +1 other test skip
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-1/igt@gem_pxp@reject-modify-context-protection-off-1.html
- shard-dg2: NOTRUN -> [SKIP][80] ([i915#4270])
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-1/igt@gem_pxp@reject-modify-context-protection-off-1.html
- shard-rkl: NOTRUN -> [SKIP][81] ([i915#4270]) +2 other tests skip
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-4/igt@gem_pxp@reject-modify-context-protection-off-1.html
* igt@gem_readwrite@new-obj:
- shard-dg2: NOTRUN -> [SKIP][82] ([i915#3282]) +2 other tests skip
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-6/igt@gem_readwrite@new-obj.html
* igt@gem_render_copy@mixed-tiled-to-y-tiled-ccs:
- shard-dg2: NOTRUN -> [SKIP][83] ([i915#5190] / [i915#8428]) +3 other tests skip
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-5/igt@gem_render_copy@mixed-tiled-to-y-tiled-ccs.html
* igt@gem_render_copy@yf-tiled-to-vebox-y-tiled:
- shard-mtlp: NOTRUN -> [SKIP][84] ([i915#8428]) +2 other tests skip
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-3/igt@gem_render_copy@yf-tiled-to-vebox-y-tiled.html
* igt@gem_set_tiling_vs_pwrite:
- shard-mtlp: NOTRUN -> [SKIP][85] ([i915#4079])
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-3/igt@gem_set_tiling_vs_pwrite.html
* igt@gem_unfence_active_buffers:
- shard-dg2: NOTRUN -> [SKIP][86] ([i915#4879])
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-4/igt@gem_unfence_active_buffers.html
* igt@gem_userptr_blits@coherency-unsync:
- shard-dg2: NOTRUN -> [SKIP][87] ([i915#3297]) +1 other test skip
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-5/igt@gem_userptr_blits@coherency-unsync.html
- shard-rkl: NOTRUN -> [SKIP][88] ([i915#3297]) +1 other test skip
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-5/igt@gem_userptr_blits@coherency-unsync.html
* igt@gem_userptr_blits@map-fixed-invalidate-overlap:
- shard-dg1: NOTRUN -> [SKIP][89] ([i915#3297] / [i915#4880])
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-16/igt@gem_userptr_blits@map-fixed-invalidate-overlap.html
- shard-mtlp: NOTRUN -> [SKIP][90] ([i915#3297]) +1 other test skip
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-8/igt@gem_userptr_blits@map-fixed-invalidate-overlap.html
- shard-dg2: NOTRUN -> [SKIP][91] ([i915#3297] / [i915#4880])
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-6/igt@gem_userptr_blits@map-fixed-invalidate-overlap.html
* igt@gem_userptr_blits@sd-probe:
- shard-dg2: NOTRUN -> [SKIP][92] ([i915#3297] / [i915#4958])
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-7/igt@gem_userptr_blits@sd-probe.html
* igt@gem_userptr_blits@unsync-unmap-cycles:
- shard-tglu: NOTRUN -> [SKIP][93] ([i915#3297]) +2 other tests skip
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-3/igt@gem_userptr_blits@unsync-unmap-cycles.html
* igt@gen9_exec_parse@basic-rejected:
- shard-tglu: NOTRUN -> [SKIP][94] ([i915#2527] / [i915#2856]) +2 other tests skip
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-8/igt@gen9_exec_parse@basic-rejected.html
* igt@gen9_exec_parse@bb-start-far:
- shard-dg1: NOTRUN -> [SKIP][95] ([i915#2527]) +1 other test skip
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-18/igt@gen9_exec_parse@bb-start-far.html
* igt@gen9_exec_parse@shadow-peek:
- shard-rkl: NOTRUN -> [SKIP][96] ([i915#2527]) +2 other tests skip
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-3/igt@gen9_exec_parse@shadow-peek.html
* igt@i915_module_load@reload-with-fault-injection:
- shard-dg1: [PASS][97] -> [ABORT][98] ([i915#9820])
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-dg1-15/igt@i915_module_load@reload-with-fault-injection.html
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-17/igt@i915_module_load@reload-with-fault-injection.html
* igt@i915_module_load@resize-bar:
- shard-dg1: NOTRUN -> [SKIP][99] ([i915#7178])
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-14/igt@i915_module_load@resize-bar.html
* igt@i915_pm_freq_mult@media-freq@gt0:
- shard-rkl: NOTRUN -> [SKIP][100] ([i915#6590]) +1 other test skip
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-4/igt@i915_pm_freq_mult@media-freq@gt0.html
- shard-tglu: NOTRUN -> [SKIP][101] ([i915#6590]) +1 other test skip
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-8/igt@i915_pm_freq_mult@media-freq@gt0.html
* igt@i915_pm_rps@min-max-config-loaded:
- shard-dg1: NOTRUN -> [SKIP][102] ([i915#11681] / [i915#6621])
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-16/igt@i915_pm_rps@min-max-config-loaded.html
* igt@i915_pm_rps@thresholds:
- shard-dg1: NOTRUN -> [SKIP][103] ([i915#11681]) +1 other test skip
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-15/igt@i915_pm_rps@thresholds.html
* igt@i915_pm_rps@thresholds-idle:
- shard-mtlp: NOTRUN -> [SKIP][104] ([i915#11681])
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-4/igt@i915_pm_rps@thresholds-idle.html
* igt@i915_query@hwconfig_table:
- shard-tglu: NOTRUN -> [SKIP][105] ([i915#6245])
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-8/igt@i915_query@hwconfig_table.html
- shard-rkl: NOTRUN -> [SKIP][106] ([i915#6245])
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-4/igt@i915_query@hwconfig_table.html
* igt@intel_hwmon@hwmon-read:
- shard-mtlp: NOTRUN -> [SKIP][107] ([i915#7707])
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-3/igt@intel_hwmon@hwmon-read.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-2-y-rc-ccs-cc:
- shard-rkl: NOTRUN -> [SKIP][108] ([i915#8709]) +3 other tests skip
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-5/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-2-y-rc-ccs-cc.html
* igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
- shard-snb: NOTRUN -> [SKIP][109] ([i915#1769])
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-snb4/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
- shard-tglu: NOTRUN -> [SKIP][110] ([i915#1769] / [i915#3555])
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-10/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
- shard-glk: NOTRUN -> [SKIP][111] ([i915#1769])
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-glk3/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
- shard-dg2: NOTRUN -> [SKIP][112] ([i915#1769] / [i915#3555])
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-4/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
- shard-rkl: NOTRUN -> [SKIP][113] ([i915#1769] / [i915#3555])
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-5/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
* igt@kms_atomic_transition@plane-toggle-modeset-transition:
- shard-snb: [PASS][114] -> [FAIL][115] ([i915#5956]) +3 other tests fail
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-snb5/igt@kms_atomic_transition@plane-toggle-modeset-transition.html
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-snb4/igt@kms_atomic_transition@plane-toggle-modeset-transition.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0:
- shard-rkl: NOTRUN -> [SKIP][116] ([i915#5286]) +8 other tests skip
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-2/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180:
- shard-dg1: NOTRUN -> [SKIP][117] ([i915#4538] / [i915#5286]) +3 other tests skip
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-16/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180.html
- shard-tglu: NOTRUN -> [SKIP][118] ([i915#5286]) +3 other tests skip
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-8/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180.html
* igt@kms_big_fb@x-tiled-64bpp-rotate-270:
- shard-rkl: NOTRUN -> [SKIP][119] ([i915#3638]) +2 other tests skip
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-2/igt@kms_big_fb@x-tiled-64bpp-rotate-270.html
- shard-dg1: NOTRUN -> [SKIP][120] ([i915#3638]) +5 other tests skip
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-17/igt@kms_big_fb@x-tiled-64bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-addfb-size-offset-overflow:
- shard-dg2: NOTRUN -> [SKIP][121] ([i915#5190]) +1 other test skip
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-6/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html
- shard-mtlp: NOTRUN -> [SKIP][122] ([i915#6187])
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-7/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html
* igt@kms_big_fb@yf-tiled-16bpp-rotate-90:
- shard-dg2: NOTRUN -> [SKIP][123] ([i915#4538] / [i915#5190]) +2 other tests skip
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-7/igt@kms_big_fb@yf-tiled-16bpp-rotate-90.html
* igt@kms_big_fb@yf-tiled-32bpp-rotate-0:
- shard-dg1: NOTRUN -> [SKIP][124] ([i915#4538])
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-15/igt@kms_big_fb@yf-tiled-32bpp-rotate-0.html
* igt@kms_ccs@bad-pixel-format-4-tiled-dg2-rc-ccs:
- shard-mtlp: NOTRUN -> [SKIP][125] ([i915#6095]) +29 other tests skip
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-1/igt@kms_ccs@bad-pixel-format-4-tiled-dg2-rc-ccs.html
* igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-1:
- shard-tglu: NOTRUN -> [SKIP][126] ([i915#6095]) +59 other tests skip
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-5/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-1.html
* igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-c-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][127] ([i915#6095]) +43 other tests skip
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-16/igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-c-hdmi-a-4.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-mc-ccs@pipe-b-hdmi-a-1:
- shard-rkl: NOTRUN -> [SKIP][128] ([i915#6095]) +87 other tests skip
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-2/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-mc-ccs@pipe-b-hdmi-a-1.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-mc-ccs@pipe-d-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][129] ([i915#10307] / [i915#10434] / [i915#6095]) +4 other tests skip
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-10/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-mc-ccs@pipe-d-hdmi-a-1.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs:
- shard-dg1: NOTRUN -> [SKIP][130] ([i915#12042]) +1 other test skip
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-16/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs@pipe-d-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][131] ([i915#10307] / [i915#6095]) +147 other tests skip
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-2/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs@pipe-d-hdmi-a-1.html
* igt@kms_cdclk@plane-scaling:
- shard-rkl: NOTRUN -> [SKIP][132] ([i915#3742])
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-5/igt@kms_cdclk@plane-scaling.html
* igt@kms_cdclk@plane-scaling@pipe-b-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][133] ([i915#4087]) +3 other tests skip
[133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-5/igt@kms_cdclk@plane-scaling@pipe-b-hdmi-a-3.html
* igt@kms_chamelium_audio@dp-audio:
- shard-tglu: NOTRUN -> [SKIP][134] ([i915#7828]) +6 other tests skip
[134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-8/igt@kms_chamelium_audio@dp-audio.html
* igt@kms_chamelium_color@ctm-max:
- shard-mtlp: NOTRUN -> [SKIP][135] +6 other tests skip
[135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-1/igt@kms_chamelium_color@ctm-max.html
* igt@kms_chamelium_edid@hdmi-edid-change-during-suspend:
- shard-rkl: NOTRUN -> [SKIP][136] ([i915#7828]) +13 other tests skip
[136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-3/igt@kms_chamelium_edid@hdmi-edid-change-during-suspend.html
* igt@kms_chamelium_hpd@dp-hpd-enable-disable-mode:
- shard-dg1: NOTRUN -> [SKIP][137] ([i915#7828]) +5 other tests skip
[137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-15/igt@kms_chamelium_hpd@dp-hpd-enable-disable-mode.html
* igt@kms_chamelium_hpd@hdmi-hpd:
- shard-mtlp: NOTRUN -> [SKIP][138] ([i915#7828]) +3 other tests skip
[138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-5/igt@kms_chamelium_hpd@hdmi-hpd.html
* igt@kms_chamelium_hpd@hdmi-hpd-enable-disable-mode:
- shard-dg2: NOTRUN -> [SKIP][139] ([i915#7828]) +5 other tests skip
[139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-6/igt@kms_chamelium_hpd@hdmi-hpd-enable-disable-mode.html
* igt@kms_color@deep-color:
- shard-dg2: [PASS][140] -> [SKIP][141] ([i915#3555])
[140]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-dg2-11/igt@kms_color@deep-color.html
[141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-1/igt@kms_color@deep-color.html
* igt@kms_content_protection@dp-mst-type-0:
- shard-rkl: NOTRUN -> [SKIP][142] ([i915#3116])
[142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-5/igt@kms_content_protection@dp-mst-type-0.html
- shard-tglu: NOTRUN -> [SKIP][143] ([i915#3116] / [i915#3299])
[143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-10/igt@kms_content_protection@dp-mst-type-0.html
* igt@kms_content_protection@dp-mst-type-1:
- shard-dg1: NOTRUN -> [SKIP][144] ([i915#3299]) +1 other test skip
[144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-15/igt@kms_content_protection@dp-mst-type-1.html
* igt@kms_content_protection@lic-type-1:
- shard-dg2: NOTRUN -> [SKIP][145] ([i915#9424])
[145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-7/igt@kms_content_protection@lic-type-1.html
- shard-rkl: NOTRUN -> [SKIP][146] ([i915#9424])
[146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-3/igt@kms_content_protection@lic-type-1.html
* igt@kms_content_protection@type1:
- shard-rkl: NOTRUN -> [SKIP][147] ([i915#7118] / [i915#9424])
[147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-2/igt@kms_content_protection@type1.html
* igt@kms_cursor_crc@cursor-random-512x170:
- shard-dg2: NOTRUN -> [SKIP][148] ([i915#11453]) +1 other test skip
[148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-7/igt@kms_cursor_crc@cursor-random-512x170.html
- shard-rkl: NOTRUN -> [SKIP][149] ([i915#11453]) +3 other tests skip
[149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-3/igt@kms_cursor_crc@cursor-random-512x170.html
- shard-dg1: NOTRUN -> [SKIP][150] ([i915#11453]) +1 other test skip
[150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-16/igt@kms_cursor_crc@cursor-random-512x170.html
* igt@kms_cursor_crc@cursor-rapid-movement-512x170:
- shard-tglu: NOTRUN -> [SKIP][151] ([i915#11453]) +3 other tests skip
[151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-8/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html
* igt@kms_cursor_crc@cursor-sliding-32x10:
- shard-tglu: NOTRUN -> [SKIP][152] ([i915#3555]) +4 other tests skip
[152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-3/igt@kms_cursor_crc@cursor-sliding-32x10.html
- shard-mtlp: NOTRUN -> [SKIP][153] ([i915#3555] / [i915#8814])
[153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-4/igt@kms_cursor_crc@cursor-sliding-32x10.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
- shard-mtlp: NOTRUN -> [SKIP][154] ([i915#4213])
[154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-1/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
- shard-dg1: NOTRUN -> [SKIP][155] ([i915#4103] / [i915#4213]) +1 other test skip
[155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-18/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size:
- shard-rkl: NOTRUN -> [SKIP][156] ([i915#4103]) +1 other test skip
[156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-4/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html
- shard-dg2: NOTRUN -> [SKIP][157] ([i915#4103] / [i915#4213])
[157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-7/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html
* igt@kms_cursor_legacy@cursora-vs-flipb-legacy:
- shard-mtlp: NOTRUN -> [SKIP][158] ([i915#9809]) +1 other test skip
[158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-7/igt@kms_cursor_legacy@cursora-vs-flipb-legacy.html
* igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size:
- shard-tglu: NOTRUN -> [SKIP][159] +50 other tests skip
[159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-3/igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
- shard-glk: [PASS][160] -> [FAIL][161] ([i915#2346])
[160]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-glk1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
[161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-glk3/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
* igt@kms_cursor_legacy@single-move@pipe-a:
- shard-rkl: [PASS][162] -> [DMESG-WARN][163] ([i915#10166]) +1 other test dmesg-warn
[162]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-rkl-1/igt@kms_cursor_legacy@single-move@pipe-a.html
[163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-3/igt@kms_cursor_legacy@single-move@pipe-a.html
* igt@kms_dirtyfb@drrs-dirtyfb-ioctl:
- shard-rkl: NOTRUN -> [SKIP][164] ([i915#9723])
[164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-5/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html
- shard-tglu: NOTRUN -> [SKIP][165] ([i915#9723])
[165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-5/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html
* igt@kms_display_modes@extended-mode-basic:
- shard-dg2: NOTRUN -> [SKIP][166] ([i915#3555]) +4 other tests skip
[166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-5/igt@kms_display_modes@extended-mode-basic.html
- shard-mtlp: NOTRUN -> [SKIP][167] ([i915#3555] / [i915#8827])
[167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-3/igt@kms_display_modes@extended-mode-basic.html
* igt@kms_display_modes@mst-extended-mode-negative:
- shard-rkl: NOTRUN -> [SKIP][168] ([i915#8588])
[168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-4/igt@kms_display_modes@mst-extended-mode-negative.html
- shard-dg1: NOTRUN -> [SKIP][169] ([i915#8588])
[169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-16/igt@kms_display_modes@mst-extended-mode-negative.html
- shard-mtlp: NOTRUN -> [SKIP][170] ([i915#8588])
[170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-8/igt@kms_display_modes@mst-extended-mode-negative.html
* igt@kms_dsc@dsc-fractional-bpp:
- shard-rkl: NOTRUN -> [SKIP][171] ([i915#3840])
[171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-4/igt@kms_dsc@dsc-fractional-bpp.html
* igt@kms_dsc@dsc-with-output-formats:
- shard-mtlp: NOTRUN -> [SKIP][172] ([i915#3555] / [i915#3840])
[172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-5/igt@kms_dsc@dsc-with-output-formats.html
- shard-dg2: NOTRUN -> [SKIP][173] ([i915#3555] / [i915#3840])
[173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-5/igt@kms_dsc@dsc-with-output-formats.html
- shard-rkl: NOTRUN -> [SKIP][174] ([i915#3555] / [i915#3840]) +1 other test skip
[174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-3/igt@kms_dsc@dsc-with-output-formats.html
- shard-dg1: NOTRUN -> [SKIP][175] ([i915#3555] / [i915#3840])
[175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-18/igt@kms_dsc@dsc-with-output-formats.html
- shard-tglu: NOTRUN -> [SKIP][176] ([i915#3555] / [i915#3840])
[176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-7/igt@kms_dsc@dsc-with-output-formats.html
* igt@kms_dsc@dsc-with-output-formats-with-bpc:
- shard-tglu: NOTRUN -> [SKIP][177] ([i915#3840] / [i915#9053])
[177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-5/igt@kms_dsc@dsc-with-output-formats-with-bpc.html
* igt@kms_feature_discovery@chamelium:
- shard-dg1: NOTRUN -> [SKIP][178] ([i915#4854])
[178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-16/igt@kms_feature_discovery@chamelium.html
* igt@kms_flip@2x-blocking-wf_vblank:
- shard-mtlp: NOTRUN -> [SKIP][179] ([i915#3637]) +2 other tests skip
[179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-5/igt@kms_flip@2x-blocking-wf_vblank.html
* igt@kms_flip@2x-flip-vs-absolute-wf_vblank:
- shard-tglu: NOTRUN -> [SKIP][180] ([i915#3637]) +7 other tests skip
[180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-5/igt@kms_flip@2x-flip-vs-absolute-wf_vblank.html
* igt@kms_flip@2x-flip-vs-fences:
- shard-dg2: NOTRUN -> [SKIP][181] ([i915#8381])
[181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-2/igt@kms_flip@2x-flip-vs-fences.html
* igt@kms_flip@2x-flip-vs-modeset-vs-hang:
- shard-dg2: NOTRUN -> [SKIP][182] +13 other tests skip
[182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-7/igt@kms_flip@2x-flip-vs-modeset-vs-hang.html
* igt@kms_flip@2x-plain-flip:
- shard-dg1: NOTRUN -> [SKIP][183] ([i915#9934]) +5 other tests skip
[183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-16/igt@kms_flip@2x-plain-flip.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling:
- shard-tglu: NOTRUN -> [SKIP][184] ([i915#2672] / [i915#3555])
[184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-5/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling@pipe-a-valid-mode:
- shard-tglu: NOTRUN -> [SKIP][185] ([i915#2587] / [i915#2672]) +1 other test skip
[185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-5/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling:
- shard-dg2: NOTRUN -> [SKIP][186] ([i915#2672] / [i915#3555] / [i915#5190]) +2 other tests skip
[186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-2/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling:
- shard-tglu: NOTRUN -> [SKIP][187] ([i915#2587] / [i915#2672] / [i915#3555])
[187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-8/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling.html
- shard-mtlp: NOTRUN -> [SKIP][188] ([i915#2672] / [i915#3555] / [i915#8813]) +2 other tests skip
[188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-3/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-default-mode:
- shard-mtlp: NOTRUN -> [SKIP][189] ([i915#2672]) +2 other tests skip
[189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-3/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode:
- shard-dg2: NOTRUN -> [SKIP][190] ([i915#2672]) +2 other tests skip
[190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-6/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling:
- shard-dg1: NOTRUN -> [SKIP][191] ([i915#2587] / [i915#2672] / [i915#3555])
[191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-16/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling@pipe-a-valid-mode:
- shard-dg1: NOTRUN -> [SKIP][192] ([i915#2587] / [i915#2672])
[192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-16/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling:
- shard-rkl: NOTRUN -> [SKIP][193] ([i915#2672] / [i915#3555]) +4 other tests skip
[193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-4/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode:
- shard-rkl: NOTRUN -> [SKIP][194] ([i915#2672]) +4 other tests skip
[194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-4/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling:
- shard-mtlp: NOTRUN -> [SKIP][195] ([i915#3555] / [i915#8813])
[195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-4/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling@pipe-a-default-mode:
- shard-mtlp: NOTRUN -> [SKIP][196] ([i915#3555] / [i915#8810])
[196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-4/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling@pipe-a-default-mode.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-cpu:
- shard-dg1: NOTRUN -> [SKIP][197] +26 other tests skip
[197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-16/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-blt:
- shard-snb: [PASS][198] -> [SKIP][199]
[198]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-snb6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-blt.html
[199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-snb4/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbc-tiling-4:
- shard-rkl: NOTRUN -> [SKIP][200] ([i915#5439]) +1 other test skip
[200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-4/igt@kms_frontbuffer_tracking@fbc-tiling-4.html
- shard-tglu: NOTRUN -> [SKIP][201] ([i915#5439])
[201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-6/igt@kms_frontbuffer_tracking@fbc-tiling-4.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu:
- shard-dg2: NOTRUN -> [SKIP][202] ([i915#3458]) +6 other tests skip
[202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-5/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-indfb-fliptrack-mmap-gtt:
- shard-rkl: NOTRUN -> [SKIP][203] +36 other tests skip
[203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-indfb-fliptrack-mmap-gtt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-wc:
- shard-dg2: NOTRUN -> [SKIP][204] ([i915#8708]) +9 other tests skip
[204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt:
- shard-dg1: NOTRUN -> [SKIP][205] ([i915#3458]) +12 other tests skip
[205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-16/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-gtt:
- shard-mtlp: NOTRUN -> [SKIP][206] ([i915#8708]) +3 other tests skip
[206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-2/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-pwrite:
- shard-dg2: NOTRUN -> [SKIP][207] ([i915#10433] / [i915#3458])
[207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-pwrite:
- shard-rkl: NOTRUN -> [SKIP][208] ([i915#3023]) +27 other tests skip
[208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-2/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-plflip-blt:
- shard-mtlp: NOTRUN -> [SKIP][209] ([i915#1825]) +16 other tests skip
[209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-1/igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-mmap-cpu:
- shard-dg2: NOTRUN -> [SKIP][210] ([i915#5354]) +17 other tests skip
[210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-2/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt:
- shard-rkl: NOTRUN -> [SKIP][211] ([i915#1825]) +51 other tests skip
[211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-5/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc:
- shard-dg1: NOTRUN -> [SKIP][212] ([i915#8708]) +11 other tests skip
[212]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-15/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc.html
* igt@kms_hdr@bpc-switch:
- shard-dg1: NOTRUN -> [SKIP][213] ([i915#3555] / [i915#8228]) +2 other tests skip
[213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-18/igt@kms_hdr@bpc-switch.html
* igt@kms_hdr@invalid-metadata-sizes:
- shard-mtlp: NOTRUN -> [SKIP][214] ([i915#3555] / [i915#8228])
[214]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-4/igt@kms_hdr@invalid-metadata-sizes.html
* igt@kms_hdr@static-toggle:
- shard-tglu: NOTRUN -> [SKIP][215] ([i915#3555] / [i915#8228]) +1 other test skip
[215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-6/igt@kms_hdr@static-toggle.html
* igt@kms_hdr@static-toggle-dpms:
- shard-dg2: [PASS][216] -> [SKIP][217] ([i915#3555] / [i915#8228]) +1 other test skip
[216]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-dg2-11/igt@kms_hdr@static-toggle-dpms.html
[217]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-2/igt@kms_hdr@static-toggle-dpms.html
- shard-rkl: NOTRUN -> [SKIP][218] ([i915#3555] / [i915#8228])
[218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-4/igt@kms_hdr@static-toggle-dpms.html
* igt@kms_panel_fitting@atomic-fastset:
- shard-rkl: NOTRUN -> [SKIP][219] ([i915#6301])
[219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-3/igt@kms_panel_fitting@atomic-fastset.html
* igt@kms_plane@pixel-format-source-clamping@pipe-a-plane-3:
- shard-mtlp: [PASS][220] -> [ABORT][221] ([i915#10354])
[220]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-mtlp-7/igt@kms_plane@pixel-format-source-clamping@pipe-a-plane-3.html
[221]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-3/igt@kms_plane@pixel-format-source-clamping@pipe-a-plane-3.html
* igt@kms_plane_alpha_blend@alpha-transparent-fb:
- shard-glk: NOTRUN -> [FAIL][222] ([i915#12177])
[222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-glk8/igt@kms_plane_alpha_blend@alpha-transparent-fb.html
* igt@kms_plane_alpha_blend@alpha-transparent-fb@pipe-a-hdmi-a-1:
- shard-glk: NOTRUN -> [FAIL][223] ([i915#10647]) +1 other test fail
[223]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-glk8/igt@kms_plane_alpha_blend@alpha-transparent-fb@pipe-a-hdmi-a-1.html
* igt@kms_plane_lowres@tiling-y:
- shard-dg2: NOTRUN -> [SKIP][224] ([i915#8821])
[224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-7/igt@kms_plane_lowres@tiling-y.html
* igt@kms_plane_multiple@tiling-y:
- shard-mtlp: NOTRUN -> [SKIP][225] ([i915#3555] / [i915#8806])
[225]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-4/igt@kms_plane_multiple@tiling-y.html
* igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-a:
- shard-dg1: NOTRUN -> [SKIP][226] ([i915#12247]) +13 other tests skip
[226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-16/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-a.html
* igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation:
- shard-dg2: NOTRUN -> [SKIP][227] ([i915#12247] / [i915#9423])
[227]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-1/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation.html
* igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation@pipe-a:
- shard-mtlp: NOTRUN -> [SKIP][228] ([i915#12247]) +4 other tests skip
[228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-1/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation@pipe-a.html
* igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation@pipe-c:
- shard-tglu: NOTRUN -> [SKIP][229] ([i915#12247]) +8 other tests skip
[229]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-6/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation@pipe-c.html
* igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation@pipe-d:
- shard-dg2: NOTRUN -> [SKIP][230] ([i915#12247]) +3 other tests skip
[230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-1/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation@pipe-d.html
* igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation:
- shard-rkl: NOTRUN -> [SKIP][231] ([i915#3555]) +8 other tests skip
[231]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-4/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation.html
- shard-dg1: NOTRUN -> [SKIP][232] ([i915#3555]) +3 other tests skip
[232]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-14/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation.html
* igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b:
- shard-rkl: NOTRUN -> [SKIP][233] ([i915#12247]) +12 other tests skip
[233]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-4/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25:
- shard-rkl: NOTRUN -> [SKIP][234] ([i915#6953])
[234]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-3/igt@kms_plane_scaling@planes-downscale-factor-0-25.html
* igt@kms_plane_scaling@planes-downscale-factor-0-5:
- shard-tglu: NOTRUN -> [SKIP][235] ([i915#6953])
[235]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-3/igt@kms_plane_scaling@planes-downscale-factor-0-5.html
* igt@kms_pm_backlight@bad-brightness:
- shard-dg1: NOTRUN -> [SKIP][236] ([i915#5354]) +2 other tests skip
[236]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-15/igt@kms_pm_backlight@bad-brightness.html
* igt@kms_pm_dc@dc3co-vpb-simulation:
- shard-rkl: NOTRUN -> [SKIP][237] ([i915#9685])
[237]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-1/igt@kms_pm_dc@dc3co-vpb-simulation.html
- shard-tglu: NOTRUN -> [SKIP][238] ([i915#9685])
[238]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-3/igt@kms_pm_dc@dc3co-vpb-simulation.html
* igt@kms_pm_dc@dc6-psr:
- shard-glk: NOTRUN -> [SKIP][239] +200 other tests skip
[239]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-glk8/igt@kms_pm_dc@dc6-psr.html
* igt@kms_pm_lpsp@screens-disabled:
- shard-rkl: NOTRUN -> [SKIP][240] ([i915#8430])
[240]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-5/igt@kms_pm_lpsp@screens-disabled.html
- shard-dg2: NOTRUN -> [SKIP][241] ([i915#8430])
[241]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-2/igt@kms_pm_lpsp@screens-disabled.html
* igt@kms_pm_rpm@dpms-mode-unset-lpsp:
- shard-rkl: NOTRUN -> [SKIP][242] ([i915#9519])
[242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-1/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html
* igt@kms_prime@basic-crc-hybrid:
- shard-rkl: NOTRUN -> [SKIP][243] ([i915#6524])
[243]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-3/igt@kms_prime@basic-crc-hybrid.html
* igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-fully-sf:
- shard-rkl: NOTRUN -> [SKIP][244] ([i915#11520]) +4 other tests skip
[244]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-5/igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-exceed-fully-sf:
- shard-tglu: NOTRUN -> [SKIP][245] ([i915#11520]) +5 other tests skip
[245]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-5/igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-sf:
- shard-dg1: NOTRUN -> [SKIP][246] ([i915#11520]) +1 other test skip
[246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-15/igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-sf.html
* igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-sf@psr2-pipe-b-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][247] ([i915#9808]) +2 other tests skip
[247]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-6/igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-sf@psr2-pipe-b-edp-1.html
* igt@kms_psr2_sf@overlay-plane-move-continuous-exceed-sf:
- shard-dg2: NOTRUN -> [SKIP][248] ([i915#11520]) +2 other tests skip
[248]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-6/igt@kms_psr2_sf@overlay-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_su@page_flip-p010:
- shard-dg2: NOTRUN -> [SKIP][249] ([i915#9683])
[249]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-1/igt@kms_psr2_su@page_flip-p010.html
- shard-dg1: NOTRUN -> [SKIP][250] ([i915#9683])
[250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-15/igt@kms_psr2_su@page_flip-p010.html
- shard-tglu: NOTRUN -> [SKIP][251] ([i915#9683])
[251]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-3/igt@kms_psr2_su@page_flip-p010.html
* igt@kms_psr@fbc-pr-sprite-render:
- shard-dg1: NOTRUN -> [SKIP][252] ([i915#1072] / [i915#9732]) +14 other tests skip
[252]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-13/igt@kms_psr@fbc-pr-sprite-render.html
* igt@kms_psr@fbc-psr2-sprite-plane-move:
- shard-mtlp: NOTRUN -> [SKIP][253] ([i915#9688]) +5 other tests skip
[253]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-2/igt@kms_psr@fbc-psr2-sprite-plane-move.html
* igt@kms_psr@pr-cursor-mmap-cpu:
- shard-dg2: NOTRUN -> [SKIP][254] ([i915#1072] / [i915#9732]) +11 other tests skip
[254]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-6/igt@kms_psr@pr-cursor-mmap-cpu.html
* igt@kms_psr@psr-sprite-blt:
- shard-snb: NOTRUN -> [SKIP][255] +60 other tests skip
[255]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-snb4/igt@kms_psr@psr-sprite-blt.html
* igt@kms_psr@psr2-cursor-blt:
- shard-rkl: NOTRUN -> [SKIP][256] ([i915#1072] / [i915#9732]) +29 other tests skip
[256]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-4/igt@kms_psr@psr2-cursor-blt.html
* igt@kms_psr@psr2-primary-render:
- shard-tglu: NOTRUN -> [SKIP][257] ([i915#9732]) +15 other tests skip
[257]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-8/igt@kms_psr@psr2-primary-render.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
- shard-dg1: NOTRUN -> [SKIP][258] ([i915#5289])
[258]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-16/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html
* igt@kms_rotation_crc@sprite-rotation-90:
- shard-dg2: NOTRUN -> [SKIP][259] ([i915#11131])
[259]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-5/igt@kms_rotation_crc@sprite-rotation-90.html
* igt@kms_selftest@drm_framebuffer:
- shard-dg1: NOTRUN -> [ABORT][260] ([i915#12231])
[260]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-18/igt@kms_selftest@drm_framebuffer.html
* igt@kms_sysfs_edid_timing:
- shard-dg2: [PASS][261] -> [FAIL][262] ([IGT#2])
[261]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-dg2-11/igt@kms_sysfs_edid_timing.html
[262]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-2/igt@kms_sysfs_edid_timing.html
* igt@kms_vrr@flipline:
- shard-mtlp: NOTRUN -> [SKIP][263] ([i915#3555] / [i915#8808]) +1 other test skip
[263]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-1/igt@kms_vrr@flipline.html
* igt@kms_vrr@seamless-rr-switch-virtual:
- shard-rkl: NOTRUN -> [SKIP][264] ([i915#9906])
[264]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-5/igt@kms_vrr@seamless-rr-switch-virtual.html
* igt@kms_writeback@writeback-check-output:
- shard-dg1: NOTRUN -> [SKIP][265] ([i915#2437])
[265]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-16/igt@kms_writeback@writeback-check-output.html
* igt@kms_writeback@writeback-invalid-parameters:
- shard-tglu: NOTRUN -> [SKIP][266] ([i915#2437])
[266]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-5/igt@kms_writeback@writeback-invalid-parameters.html
- shard-rkl: NOTRUN -> [SKIP][267] ([i915#2437])
[267]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-2/igt@kms_writeback@writeback-invalid-parameters.html
* igt@perf@gen8-unprivileged-single-ctx-counters:
- shard-rkl: NOTRUN -> [SKIP][268] ([i915#2436])
[268]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-1/igt@perf@gen8-unprivileged-single-ctx-counters.html
* igt@perf@mi-rpc:
- shard-dg1: NOTRUN -> [SKIP][269] ([i915#2434])
[269]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-17/igt@perf@mi-rpc.html
* igt@perf_pmu@rc6-all-gts:
- shard-dg1: NOTRUN -> [SKIP][270] ([i915#8516])
[270]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-18/igt@perf_pmu@rc6-all-gts.html
- shard-rkl: NOTRUN -> [SKIP][271] ([i915#8516])
[271]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-6/igt@perf_pmu@rc6-all-gts.html
* igt@prime_vgem@basic-fence-read:
- shard-rkl: NOTRUN -> [SKIP][272] ([i915#3291] / [i915#3708]) +1 other test skip
[272]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-4/igt@prime_vgem@basic-fence-read.html
* igt@prime_vgem@basic-gtt:
- shard-mtlp: NOTRUN -> [SKIP][273] ([i915#3708] / [i915#4077])
[273]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-7/igt@prime_vgem@basic-gtt.html
* igt@prime_vgem@basic-write:
- shard-dg1: NOTRUN -> [SKIP][274] ([i915#3708])
[274]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-17/igt@prime_vgem@basic-write.html
* igt@prime_vgem@fence-flip-hang:
- shard-rkl: NOTRUN -> [SKIP][275] ([i915#3708])
[275]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-5/igt@prime_vgem@fence-flip-hang.html
* igt@sriov_basic@enable-vfs-autoprobe-on:
- shard-tglu: NOTRUN -> [SKIP][276] ([i915#9917])
[276]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-7/igt@sriov_basic@enable-vfs-autoprobe-on.html
- shard-rkl: NOTRUN -> [SKIP][277] ([i915#9917])
[277]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-2/igt@sriov_basic@enable-vfs-autoprobe-on.html
#### Possible fixes ####
* igt@gem_eio@reset-stress:
- shard-dg1: [FAIL][278] ([i915#5784]) -> [PASS][279]
[278]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-dg1-13/igt@gem_eio@reset-stress.html
[279]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg1-14/igt@gem_eio@reset-stress.html
* igt@gem_exec_big@single:
- shard-tglu: [ABORT][280] ([i915#11713]) -> [PASS][281]
[280]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-tglu-3/igt@gem_exec_big@single.html
[281]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-6/igt@gem_exec_big@single.html
* igt@gem_exec_fair@basic-pace-share@rcs0:
- shard-glk: [FAIL][282] ([i915#2842]) -> [PASS][283] +1 other test pass
[282]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-glk8/igt@gem_exec_fair@basic-pace-share@rcs0.html
[283]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-glk3/igt@gem_exec_fair@basic-pace-share@rcs0.html
* igt@gem_exec_fair@basic-pace-solo:
- shard-tglu: [FAIL][284] ([i915#2842]) -> [PASS][285] +1 other test pass
[284]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-tglu-10/igt@gem_exec_fair@basic-pace-solo.html
[285]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-6/igt@gem_exec_fair@basic-pace-solo.html
* igt@gen9_exec_parse@allowed-single:
- shard-glk: [ABORT][286] ([i915#5566]) -> [PASS][287]
[286]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-glk8/igt@gen9_exec_parse@allowed-single.html
[287]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-glk5/igt@gen9_exec_parse@allowed-single.html
* igt@i915_module_load@reload-with-fault-injection:
- shard-glk: [ABORT][288] ([i915#9820]) -> [PASS][289]
[288]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-glk9/igt@i915_module_load@reload-with-fault-injection.html
[289]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-glk2/igt@i915_module_load@reload-with-fault-injection.html
* igt@kms_atomic_transition@modeset-transition-fencing:
- shard-glk: [FAIL][290] ([i915#12238]) -> [PASS][291]
[290]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-glk8/igt@kms_atomic_transition@modeset-transition-fencing.html
[291]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-glk5/igt@kms_atomic_transition@modeset-transition-fencing.html
* igt@kms_atomic_transition@modeset-transition-fencing@2x-outputs:
- shard-glk: [FAIL][292] ([i915#11859]) -> [PASS][293]
[292]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-glk8/igt@kms_atomic_transition@modeset-transition-fencing@2x-outputs.html
[293]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-glk5/igt@kms_atomic_transition@modeset-transition-fencing@2x-outputs.html
* igt@kms_cursor_legacy@torture-move@pipe-b:
- shard-glk: [DMESG-WARN][294] ([i915#10166]) -> [PASS][295] +1 other test pass
[294]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-glk2/igt@kms_cursor_legacy@torture-move@pipe-b.html
[295]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-glk5/igt@kms_cursor_legacy@torture-move@pipe-b.html
* igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite:
- shard-dg2: [FAIL][296] ([i915#6880]) -> [PASS][297]
[296]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite.html
[297]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-2/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite.html
* igt@kms_hdr@invalid-metadata-sizes:
- shard-dg2: [SKIP][298] ([i915#3555] / [i915#8228]) -> [PASS][299]
[298]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-dg2-1/igt@kms_hdr@invalid-metadata-sizes.html
[299]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-11/igt@kms_hdr@invalid-metadata-sizes.html
* igt@kms_plane@pixel-format-source-clamping@pipe-b-plane-3:
- shard-mtlp: [ABORT][300] ([i915#10354]) -> [PASS][301]
[300]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-mtlp-7/igt@kms_plane@pixel-format-source-clamping@pipe-b-plane-3.html
[301]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-3/igt@kms_plane@pixel-format-source-clamping@pipe-b-plane-3.html
* igt@kms_pm_dc@dc6-dpms:
- shard-tglu: [FAIL][302] ([i915#9295]) -> [PASS][303]
[302]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-tglu-7/igt@kms_pm_dc@dc6-dpms.html
[303]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-10/igt@kms_pm_dc@dc6-dpms.html
* igt@kms_pm_rpm@modeset-lpsp:
- shard-rkl: [SKIP][304] ([i915#9519]) -> [PASS][305] +1 other test pass
[304]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-rkl-5/igt@kms_pm_rpm@modeset-lpsp.html
[305]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-rkl-4/igt@kms_pm_rpm@modeset-lpsp.html
* igt@kms_pm_rpm@modeset-lpsp-stress:
- shard-dg2: [SKIP][306] ([i915#9519]) -> [PASS][307] +2 other tests pass
[306]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-dg2-5/igt@kms_pm_rpm@modeset-lpsp-stress.html
[307]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-2/igt@kms_pm_rpm@modeset-lpsp-stress.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-1:
- shard-tglu: [FAIL][308] ([i915#9196]) -> [PASS][309] +2 other tests pass
[308]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-tglu-10/igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-1.html
[309]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-tglu-3/igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-1.html
* igt@perf_pmu@busy-double-start@vecs1:
- shard-dg2: [FAIL][310] ([i915#4349]) -> [PASS][311] +4 other tests pass
[310]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-dg2-8/igt@perf_pmu@busy-double-start@vecs1.html
[311]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-6/igt@perf_pmu@busy-double-start@vecs1.html
* igt@perf_pmu@most-busy-idle-check-all@rcs0:
- shard-mtlp: [FAIL][312] -> [PASS][313] +1 other test pass
[312]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-mtlp-3/igt@perf_pmu@most-busy-idle-check-all@rcs0.html
[313]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-7/igt@perf_pmu@most-busy-idle-check-all@rcs0.html
#### Warnings ####
* igt@gem_ctx_engines@invalid-engines:
- shard-glk: [FAIL][314] ([i915#12027]) -> [FAIL][315] ([i915#12052])
[314]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-glk7/igt@gem_ctx_engines@invalid-engines.html
[315]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-glk7/igt@gem_ctx_engines@invalid-engines.html
* igt@i915_module_load@reload-with-fault-injection:
- shard-mtlp: [ABORT][316] ([i915#10131] / [i915#9820]) -> [ABORT][317] ([i915#10131] / [i915#10887] / [i915#9697])
[316]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-mtlp-6/igt@i915_module_load@reload-with-fault-injection.html
[317]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-2/igt@i915_module_load@reload-with-fault-injection.html
* igt@i915_selftest@mock:
- shard-dg2: [DMESG-WARN][318] ([i915#1982] / [i915#9311]) -> [DMESG-WARN][319] ([i915#9311])
[318]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-dg2-7/igt@i915_selftest@mock.html
[319]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-6/igt@i915_selftest@mock.html
* igt@kms_content_protection@type1:
- shard-dg2: [SKIP][320] ([i915#7118] / [i915#7162] / [i915#9424]) -> [SKIP][321] ([i915#7118] / [i915#9424])
[320]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-dg2-11/igt@kms_content_protection@type1.html
[321]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-7/igt@kms_content_protection@type1.html
* igt@kms_cursor_crc@cursor-onscreen-512x170:
- shard-dg2: [SKIP][322] ([i915#11453] / [i915#3359]) -> [SKIP][323] ([i915#11453]) +1 other test skip
[322]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-dg2-11/igt@kms_cursor_crc@cursor-onscreen-512x170.html
[323]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-5/igt@kms_cursor_crc@cursor-onscreen-512x170.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-cpu:
- shard-dg2: [SKIP][324] ([i915#10433] / [i915#3458]) -> [SKIP][325] ([i915#3458])
[324]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-cpu.html
[325]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-5/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-cpu.html
* igt@kms_psr@fbc-psr-sprite-blt:
- shard-dg2: [SKIP][326] ([i915#1072] / [i915#9673] / [i915#9732]) -> [SKIP][327] ([i915#1072] / [i915#9732]) +10 other tests skip
[326]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-dg2-11/igt@kms_psr@fbc-psr-sprite-blt.html
[327]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-6/igt@kms_psr@fbc-psr-sprite-blt.html
* igt@kms_psr@psr-cursor-render:
- shard-dg2: [SKIP][328] ([i915#1072] / [i915#9732]) -> [SKIP][329] ([i915#1072] / [i915#9673] / [i915#9732]) +4 other tests skip
[328]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-dg2-6/igt@kms_psr@psr-cursor-render.html
[329]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-11/igt@kms_psr@psr-cursor-render.html
* igt@kms_psr@psr2-primary-mmap-gtt@edp-1:
- shard-mtlp: [SKIP][330] ([i915#4077] / [i915#9688]) -> [FAIL][331] ([i915#10105])
[330]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-mtlp-8/igt@kms_psr@psr2-primary-mmap-gtt@edp-1.html
[331]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-mtlp-7/igt@kms_psr@psr2-primary-mmap-gtt@edp-1.html
* igt@kms_rotation_crc@sprite-rotation-90-pos-100-0:
- shard-dg2: [SKIP][332] ([i915#11131] / [i915#4235]) -> [SKIP][333] ([i915#11131]) +1 other test skip
[332]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-dg2-11/igt@kms_rotation_crc@sprite-rotation-90-pos-100-0.html
[333]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-dg2-2/igt@kms_rotation_crc@sprite-rotation-90-pos-100-0.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-glk: [FAIL][334] ([i915#10959]) -> [SKIP][335]
[334]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15435/shard-glk7/igt@kms_tiled_display@basic-test-pattern.html
[335]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v9/shard-glk8/igt@kms_tiled_display@basic-test-pattern.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[IGT#2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/2
[i915#10105]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10105
[i915#10131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10131
[i915#10166]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10166
[i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
[i915#10354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10354
[i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
[i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
[i915#10647]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10647
[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#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078
[i915#11131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11131
[i915#11453]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11453
[i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
[i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
[i915#11713]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11713
[i915#11859]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11859
[i915#11965]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11965
[i915#12027]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12027
[i915#12042]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12042
[i915#12052]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12052
[i915#12177]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12177
[i915#12231]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12231
[i915#12238]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12238
[i915#12247]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12247
[i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
[i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
[i915#1982]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1982
[i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
[i915#2346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2346
[i915#2434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2434
[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#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587
[i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
[i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
[i915#2842]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2842
[i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
[i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023
[i915#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#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
[i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
[i915#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299
[i915#3359]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3359
[i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
[i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539
[i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
[i915#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#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
[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#4087]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4087
[i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
[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#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#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812
[i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852
[i915#4854]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4854
[i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860
[i915#4879]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4879
[i915#4880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4880
[i915#4958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4958
[i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
[i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
[i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289
[i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
[i915#5439]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5439
[i915#5493]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5493
[i915#5566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5566
[i915#5784]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5784
[i915#5956]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5956
[i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
[i915#6187]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6187
[i915#6245]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6245
[i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301
[i915#6334]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6334
[i915#6335]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6335
[i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
[i915#6590]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6590
[i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
[i915#6880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6880
[i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953
[i915#7016]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7016
[i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118
[i915#7162]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7162
[i915#7178]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7178
[i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
[i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
[i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
[i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
[i915#8381]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8381
[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#8430]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8430
[i915#8516]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8516
[i915#8555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8555
[i915#8588]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8588
[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#8808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8808
[i915#8810]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8810
[i915#8813]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8813
[i915#8814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8814
[i915#8821]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8821
[i915#8827]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8827
[i915#9053]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9053
[i915#9196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9196
[i915#9295]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9295
[i915#9311]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9311
[i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
[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#9561]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9561
[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#9697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9697
[i915#9723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9723
[i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
[i915#9808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9808
[i915#9809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9809
[i915#9820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9820
[i915#9846]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9846
[i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906
[i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917
[i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934
Build changes
-------------
* IGT: IGT_8024 -> IGTPW_11755
* Linux: CI_DRM_15435 -> Patchwork_133800v9
CI-20190529: 20190529
CI_DRM_15435: 3abb1f2faac15a9f09824d692d1a38e0c485dc6b @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_11755: 406ba93e99bbbe39aecf3dad3c6a58ff7a76d816 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8024: 15f8ad0bce184e96d171dfe19c06bdef93e7cf72 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_133800v9: 3abb1f2faac15a9f09824d692d1a38e0c485dc6b @ 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_133800v9/index.html
[-- Attachment #2: Type: text/html, Size: 115034 bytes --]
^ permalink raw reply [flat|nested] 34+ messages in thread