* [PATCH 00/12] Ultrajoiner basic functionality series
@ 2024-07-18 8:17 Ankit Nautiyal
2024-07-18 8:17 ` [PATCH 01/12] drm/i915/display: Modify debugfs for joiner to force n pipes Ankit Nautiyal
` (15 more replies)
0 siblings, 16 replies; 32+ messages in thread
From: Ankit Nautiyal @ 2024-07-18 8:17 UTC (permalink / raw)
To: intel-gfx; +Cc: stanislav.lisovskiy, jani.saarinen, ville.syrjala
This patch series attempts to implement basic support
for Ultrajoiner functionality.
Rev6:
-Upgrade the debugfs functionality to enable the joining of a
specified number of pipes.
-Modify the display helpers reliant on the pipe joiner mechanism
to use number of pipes joined, instead of joiner flag.
-Checkpatch fixes.
Ankit Nautiyal (5):
drm/i915/display: Modify debugfs for joiner to force n pipes
drm/i915/display: Use joined pipes in intel_dp_joiner_needs_dsc
drm/i915/display: Use joined pipes in intel_mode_valid_max_plane_size
drm/i915/display: Use joined pipes in dsc helpers for slices, bpp
drm/i915/intel_dp: Add support for forcing ultrajoiner
Stanislav Lisovskiy (7):
drm/i915: Add some essential functionality for joiners
drm/i915: Split current joiner hw state readout
drm/i915: Add bigjoiner and uncompressed joiner hw readout sanity
checks
drm/i915: Implement hw state readout and checks for ultrajoiner
drm/i915/display/vdsc: Add ultrajoiner support with DSC
drm/i915: Compute config and mode valid changes for ultrajoiner
drm/i915: Add new abstraction layer to handle pipe order for different
joiners
.../gpu/drm/i915/display/intel_atomic_plane.c | 2 +-
drivers/gpu/drm/i915/display/intel_ddi.c | 19 +-
drivers/gpu/drm/i915/display/intel_display.c | 357 +++++++++++++++---
drivers/gpu/drm/i915/display/intel_display.h | 20 +-
.../drm/i915/display/intel_display_debugfs.c | 71 +++-
.../drm/i915/display/intel_display_types.h | 9 +-
drivers/gpu/drm/i915/display/intel_dp.c | 118 ++++--
drivers/gpu/drm/i915/display/intel_dp.h | 17 +-
drivers/gpu/drm/i915/display/intel_dp_mst.c | 62 +--
drivers/gpu/drm/i915/display/intel_dsi.c | 2 +-
drivers/gpu/drm/i915/display/intel_hdmi.c | 2 +-
.../drm/i915/display/intel_modeset_verify.c | 2 +-
drivers/gpu/drm/i915/display/intel_vdsc.c | 26 +-
.../gpu/drm/i915/display/intel_vdsc_regs.h | 3 +
14 files changed, 569 insertions(+), 141 deletions(-)
--
2.45.2
^ permalink raw reply [flat|nested] 32+ messages in thread
* [PATCH 01/12] drm/i915/display: Modify debugfs for joiner to force n pipes
2024-07-18 8:17 [PATCH 00/12] Ultrajoiner basic functionality series Ankit Nautiyal
@ 2024-07-18 8:17 ` Ankit Nautiyal
2024-07-31 4:21 ` Kandpal, Suraj
2024-07-18 8:17 ` [PATCH 02/12] drm/i915/display: Use joined pipes in intel_dp_joiner_needs_dsc Ankit Nautiyal
` (14 subsequent siblings)
15 siblings, 1 reply; 32+ messages in thread
From: Ankit Nautiyal @ 2024-07-18 8:17 UTC (permalink / raw)
To: intel-gfx; +Cc: stanislav.lisovskiy, jani.saarinen, 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.
This will help in case of ultra joiner where 4 pipes are joined.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
.../drm/i915/display/intel_display_debugfs.c | 71 ++++++++++++++++++-
.../drm/i915/display/intel_display_types.h | 8 ++-
drivers/gpu/drm/i915/display/intel_dp.c | 2 +-
3 files changed, 77 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 5cf9b4af9adf..18f3d83265ce 100644
--- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
+++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
@@ -1497,6 +1497,73 @@ 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;
+ struct drm_i915_private *i915 = to_i915(connector->base.dev);
+ int ret;
+
+ ret = drm_modeset_lock_single_interruptible(&i915->drm.mode_config.connection_mutex);
+ if (ret)
+ return ret;
+
+ seq_printf(m, "Force_joined_pipes: %d\n", connector->force_joined_pipes);
+
+ drm_modeset_unlock(&i915->drm.mode_config.connection_mutex);
+
+ return ret;
+}
+
+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 drm_i915_private *i915 = to_i915(connector->base.dev);
+ int force_join_pipes = 0;
+ int ret;
+
+ if (len == 0)
+ return 0;
+
+ drm_dbg(&i915->drm,
+ "Copied %zu bytes from user to force joiner\n", len);
+
+ ret = kstrtoint_from_user(ubuf, len, 0, &force_join_pipes);
+ if (ret < 0)
+ return ret;
+
+ drm_dbg(&i915->drm, "Got %d for force joining pipes\n", force_join_pipes);
+
+ if (force_join_pipes < INTEL_PIPE_JOINER_NONE ||
+ force_join_pipes >= INTEL_PIPE_JOINER_INVALID) {
+ drm_dbg(&i915->drm, "Ignoring Invalid num of pipes %d for force joining\n",
+ force_join_pipes);
+ connector->force_joined_pipes = INTEL_PIPE_JOINER_NONE;
+ } else {
+ connector->force_joined_pipes = force_join_pipes;
+ }
+
+ *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
@@ -1546,8 +1613,8 @@ void intel_connector_debugfs_add(struct intel_connector *connector)
if (DISPLAY_VER(i915) >= 11 &&
(connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
connector_type == DRM_MODE_CONNECTOR_eDP)) {
- debugfs_create_bool("i915_bigjoiner_force_enable", 0644, root,
- &connector->force_bigjoiner_enable);
+ debugfs_create_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 a9d2acdc51a4..14c78b18ffa1 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -613,6 +613,12 @@ struct intel_hdcp {
enum transcoder stream_transcoder;
};
+enum intel_joiner_pipe_count {
+ INTEL_PIPE_JOINER_NONE = 0,
+ INTEL_PIPE_JOINER_BIG = 2,
+ INTEL_PIPE_JOINER_INVALID,
+};
+
struct intel_connector {
struct drm_connector base;
/*
@@ -651,7 +657,7 @@ struct intel_connector {
struct intel_dp *mst_port;
- bool force_bigjoiner_enable;
+ enum intel_joiner_pipe_count 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 d4b1b18453dc..30442c9da06b 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -1164,7 +1164,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 == INTEL_PIPE_JOINER_BIG;
}
bool intel_dp_has_dsc(const struct intel_connector *connector)
--
2.45.2
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 02/12] drm/i915/display: Use joined pipes in intel_dp_joiner_needs_dsc
2024-07-18 8:17 [PATCH 00/12] Ultrajoiner basic functionality series Ankit Nautiyal
2024-07-18 8:17 ` [PATCH 01/12] drm/i915/display: Modify debugfs for joiner to force n pipes Ankit Nautiyal
@ 2024-07-18 8:17 ` Ankit Nautiyal
2024-07-31 4:28 ` Kandpal, Suraj
2024-07-18 8:17 ` [PATCH 03/12] drm/i915/display: Use joined pipes in intel_mode_valid_max_plane_size Ankit Nautiyal
` (13 subsequent siblings)
15 siblings, 1 reply; 32+ messages in thread
From: Ankit Nautiyal @ 2024-07-18 8:17 UTC (permalink / raw)
To: intel-gfx; +Cc: stanislav.lisovskiy, jani.saarinen, ville.syrjala
In preparation of ultrajoiner, use number of joined pipes in the
intel_dp_joiner_needs_dsc helper, instead of joiner flag.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 2 +-
drivers/gpu/drm/i915/display/intel_display.h | 2 ++
drivers/gpu/drm/i915/display/intel_dp.c | 18 +++++++++++++-----
drivers/gpu/drm/i915/display/intel_dp.h | 4 +++-
drivers/gpu/drm/i915/display/intel_dp_mst.c | 13 ++++++++++---
5 files changed, 29 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 01a5faa3fea5..eab07a5fa377 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -276,7 +276,7 @@ bool intel_crtc_is_joiner_primary(const struct intel_crtc_state *crtc_state)
crtc->pipe == joiner_primary_pipe(crtc_state);
}
-static int intel_joiner_num_pipes(const struct intel_crtc_state *crtc_state)
+int intel_joiner_num_pipes(const struct intel_crtc_state *crtc_state)
{
return hweight8(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 b0cf6ca70952..0aecc3330a53 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -584,4 +584,6 @@ bool assert_port_valid(struct drm_i915_private *i915, enum port port);
bool intel_scanout_needs_vtd_wa(struct drm_i915_private *i915);
+int intel_joiner_num_pipes(const struct intel_crtc_state *crtc_state);
+
#endif
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 30442c9da06b..7d66a969c461 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -1202,6 +1202,7 @@ intel_dp_mode_valid(struct drm_connector *_connector,
u8 dsc_slice_count = 0;
enum drm_mode_status status;
bool dsc = false, joiner = false;
+ enum intel_joiner_pipe_count joined_pipes = INTEL_PIPE_JOINER_NONE;
status = intel_cpu_transcoder_mode_valid(dev_priv, mode);
if (status != MODE_OK)
@@ -1225,7 +1226,8 @@ intel_dp_mode_valid(struct drm_connector *_connector,
if (intel_dp_need_joiner(intel_dp, connector,
mode->hdisplay, target_clock)) {
joiner = true;
- max_dotclk *= 2;
+ joined_pipes = INTEL_PIPE_JOINER_BIG;
+ max_dotclk *= INTEL_PIPE_JOINER_BIG;
}
if (target_clock > max_dotclk)
return MODE_CLOCK_HIGH;
@@ -1283,7 +1285,7 @@ intel_dp_mode_valid(struct drm_connector *_connector,
dsc = dsc_max_compressed_bpp && dsc_slice_count;
}
- if (intel_dp_joiner_needs_dsc(dev_priv, joiner) && !dsc)
+ if (intel_dp_joiner_needs_dsc(dev_priv, joined_pipes) && !dsc)
return MODE_CLOCK_HIGH;
if (mode_rate > max_rate && !dsc)
@@ -2391,14 +2393,15 @@ int intel_dp_config_required_rate(const struct intel_crtc_state *crtc_state)
return intel_dp_link_required(adjusted_mode->crtc_clock, bpp);
}
-bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, bool use_joiner)
+bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915,
+ enum intel_joiner_pipe_count joined_pipes)
{
/*
* Pipe joiner needs compression up to display 12 due to bandwidth
* limitation. DG2 onwards pipe joiner can be enabled without
* compression.
*/
- return DISPLAY_VER(i915) < 13 && use_joiner;
+ return DISPLAY_VER(i915) < 13 && (joined_pipes == INTEL_PIPE_JOINER_BIG);
}
static int
@@ -2416,6 +2419,7 @@ intel_dp_compute_link_config(struct intel_encoder *encoder,
struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
struct link_config_limits limits;
bool dsc_needed, joiner_needs_dsc;
+ enum intel_joiner_pipe_count joined_pipes;
int ret = 0;
if (pipe_config->fec_enable &&
@@ -2427,7 +2431,11 @@ intel_dp_compute_link_config(struct intel_encoder *encoder,
adjusted_mode->crtc_clock))
pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe);
- joiner_needs_dsc = intel_dp_joiner_needs_dsc(i915, pipe_config->joiner_pipes);
+ joined_pipes = intel_joiner_num_pipes(pipe_config);
+ if (joined_pipes >= INTEL_PIPE_JOINER_INVALID)
+ drm_warn(&i915->drm, "Invalid joined pipes : %d\n", joined_pipes);
+
+ joiner_needs_dsc = intel_dp_joiner_needs_dsc(i915, joined_pipes);
dsc_needed = joiner_needs_dsc || intel_dp->force_dsc_en ||
!intel_dp_compute_config_limits(intel_dp, pipe_config,
diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h
index 9be539edf817..a8116210c618 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.h
+++ b/drivers/gpu/drm/i915/display/intel_dp.h
@@ -8,6 +8,7 @@
#include <linux/types.h>
+enum intel_joiner_pipe_count;
enum intel_output_format;
enum pipe;
enum port;
@@ -121,7 +122,8 @@ int intel_dp_effective_data_rate(int pixel_clock, int bpp_x16,
int bw_overhead);
int intel_dp_max_link_data_rate(struct intel_dp *intel_dp,
int max_dprx_rate, int max_dprx_lanes);
-bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, bool use_joiner);
+bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915,
+ enum intel_joiner_pipe_count joined_pipes);
bool intel_dp_has_joiner(struct intel_dp *intel_dp);
bool intel_dp_needs_vsc_sdp(const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state);
diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index 27ce5c3f5951..e5797ee13667 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -567,6 +567,7 @@ static int intel_dp_mst_compute_config(struct intel_encoder *encoder,
&pipe_config->hw.adjusted_mode;
struct link_config_limits limits;
bool dsc_needed, joiner_needs_dsc;
+ enum intel_joiner_pipe_count joined_pipes;
int ret = 0;
if (pipe_config->fec_enable &&
@@ -585,7 +586,11 @@ static int intel_dp_mst_compute_config(struct intel_encoder *encoder,
pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB;
pipe_config->has_pch_encoder = false;
- joiner_needs_dsc = intel_dp_joiner_needs_dsc(dev_priv, pipe_config->joiner_pipes);
+ joined_pipes = intel_joiner_num_pipes(pipe_config);
+ if (joined_pipes >= INTEL_PIPE_JOINER_INVALID)
+ drm_warn(&dev_priv->drm, "Invalid joined pipes : %d\n", joined_pipes);
+
+ joiner_needs_dsc = intel_dp_joiner_needs_dsc(dev_priv, joined_pipes);
dsc_needed = joiner_needs_dsc || intel_dp->force_dsc_en ||
!intel_dp_mst_compute_config_limits(intel_dp,
@@ -1392,6 +1397,7 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
u16 dsc_max_compressed_bpp = 0;
u8 dsc_slice_count = 0;
int target_clock = mode->clock;
+ enum intel_joiner_pipe_count joined_pipes = INTEL_PIPE_JOINER_NONE;
if (drm_connector_is_unregistered(connector)) {
*status = MODE_ERROR;
@@ -1434,7 +1440,8 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
if (intel_dp_need_joiner(intel_dp, intel_connector,
mode->hdisplay, target_clock)) {
joiner = true;
- max_dotclk *= 2;
+ joined_pipes = INTEL_PIPE_JOINER_BIG;
+ max_dotclk *= INTEL_PIPE_JOINER_BIG;
}
ret = drm_modeset_lock(&mgr->base.lock, ctx);
@@ -1474,7 +1481,7 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
dsc = dsc_max_compressed_bpp && dsc_slice_count;
}
- if (intel_dp_joiner_needs_dsc(dev_priv, joiner) && !dsc) {
+ if (intel_dp_joiner_needs_dsc(dev_priv, joined_pipes) && !dsc) {
*status = MODE_CLOCK_HIGH;
return 0;
}
--
2.45.2
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 03/12] drm/i915/display: Use joined pipes in intel_mode_valid_max_plane_size
2024-07-18 8:17 [PATCH 00/12] Ultrajoiner basic functionality series Ankit Nautiyal
2024-07-18 8:17 ` [PATCH 01/12] drm/i915/display: Modify debugfs for joiner to force n pipes Ankit Nautiyal
2024-07-18 8:17 ` [PATCH 02/12] drm/i915/display: Use joined pipes in intel_dp_joiner_needs_dsc Ankit Nautiyal
@ 2024-07-18 8:17 ` Ankit Nautiyal
2024-07-31 4:43 ` Kandpal, Suraj
2024-07-18 8:17 ` [PATCH 04/12] drm/i915/display: Use joined pipes in dsc helpers for slices, bpp Ankit Nautiyal
` (12 subsequent siblings)
15 siblings, 1 reply; 32+ messages in thread
From: Ankit Nautiyal @ 2024-07-18 8:17 UTC (permalink / raw)
To: intel-gfx; +Cc: stanislav.lisovskiy, jani.saarinen, ville.syrjala
In preparation of ultrajoiner, use number of joined pipes in the
intel_mode_valid_max_plane_size helper, instead of joiner flag.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 4 ++--
drivers/gpu/drm/i915/display/intel_display.h | 3 ++-
drivers/gpu/drm/i915/display/intel_dp.c | 2 +-
drivers/gpu/drm/i915/display/intel_dp_mst.c | 2 +-
drivers/gpu/drm/i915/display/intel_dsi.c | 2 +-
drivers/gpu/drm/i915/display/intel_hdmi.c | 2 +-
6 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index eab07a5fa377..26e4b0c2e9f7 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -8081,7 +8081,7 @@ enum drm_mode_status intel_cpu_transcoder_mode_valid(struct drm_i915_private *de
enum drm_mode_status
intel_mode_valid_max_plane_size(struct drm_i915_private *dev_priv,
const struct drm_display_mode *mode,
- bool joiner)
+ enum intel_joiner_pipe_count joined_pipes)
{
int plane_width_max, plane_height_max;
@@ -8098,7 +8098,7 @@ intel_mode_valid_max_plane_size(struct drm_i915_private *dev_priv,
* too big for that.
*/
if (DISPLAY_VER(dev_priv) >= 11) {
- plane_width_max = 5120 << joiner;
+ plane_width_max = 5120 << joined_pipes / 2;
plane_height_max = 4320;
} else {
plane_width_max = 5120;
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index 0aecc3330a53..bf665f947b97 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -31,6 +31,7 @@
#include "intel_display_limits.h"
enum drm_scaling_filter;
+enum intel_joiner_pipe_count;
struct dpll;
struct drm_atomic_state;
struct drm_connector;
@@ -415,7 +416,7 @@ u32 intel_plane_fb_max_stride(struct drm_i915_private *dev_priv,
enum drm_mode_status
intel_mode_valid_max_plane_size(struct drm_i915_private *dev_priv,
const struct drm_display_mode *mode,
- bool joiner);
+ enum intel_joiner_pipe_count joined_pipes);
enum drm_mode_status
intel_cpu_transcoder_mode_valid(struct drm_i915_private *i915,
const struct drm_display_mode *mode);
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 7d66a969c461..320d8b6d1bce 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -1295,7 +1295,7 @@ intel_dp_mode_valid(struct drm_connector *_connector,
if (status != MODE_OK)
return status;
- return intel_mode_valid_max_plane_size(dev_priv, mode, joiner);
+ return intel_mode_valid_max_plane_size(dev_priv, mode, joined_pipes);
}
bool intel_dp_source_supports_tps3(struct drm_i915_private *i915)
diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index e5797ee13667..3f45ac7ca4d5 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -1491,7 +1491,7 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
return 0;
}
- *status = intel_mode_valid_max_plane_size(dev_priv, mode, joiner);
+ *status = intel_mode_valid_max_plane_size(dev_priv, mode, joined_pipes);
return 0;
}
diff --git a/drivers/gpu/drm/i915/display/intel_dsi.c b/drivers/gpu/drm/i915/display/intel_dsi.c
index bd5888ce4852..acc17546215f 100644
--- a/drivers/gpu/drm/i915/display/intel_dsi.c
+++ b/drivers/gpu/drm/i915/display/intel_dsi.c
@@ -76,7 +76,7 @@ enum drm_mode_status intel_dsi_mode_valid(struct drm_connector *connector,
if (fixed_mode->clock > max_dotclk)
return MODE_CLOCK_HIGH;
- return intel_mode_valid_max_plane_size(dev_priv, mode, false);
+ return intel_mode_valid_max_plane_size(dev_priv, mode, INTEL_PIPE_JOINER_NONE);
}
struct intel_dsi_host *intel_dsi_host_init(struct intel_dsi *intel_dsi,
diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
index 19498ee455fa..5aa4a9f0c470 100644
--- a/drivers/gpu/drm/i915/display/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
@@ -2048,7 +2048,7 @@ intel_hdmi_mode_valid(struct drm_connector *connector,
return status;
}
- return intel_mode_valid_max_plane_size(dev_priv, mode, false);
+ return intel_mode_valid_max_plane_size(dev_priv, mode, INTEL_PIPE_JOINER_NONE);
}
bool intel_hdmi_bpc_possible(const struct intel_crtc_state *crtc_state,
--
2.45.2
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 04/12] drm/i915/display: Use joined pipes in dsc helpers for slices, bpp
2024-07-18 8:17 [PATCH 00/12] Ultrajoiner basic functionality series Ankit Nautiyal
` (2 preceding siblings ...)
2024-07-18 8:17 ` [PATCH 03/12] drm/i915/display: Use joined pipes in intel_mode_valid_max_plane_size Ankit Nautiyal
@ 2024-07-18 8:17 ` Ankit Nautiyal
2024-07-31 5:10 ` Kandpal, Suraj
2024-07-18 8:17 ` [PATCH 05/12] drm/i915: Add some essential functionality for joiners Ankit Nautiyal
` (11 subsequent siblings)
15 siblings, 1 reply; 32+ messages in thread
From: Ankit Nautiyal @ 2024-07-18 8:17 UTC (permalink / raw)
To: intel-gfx; +Cc: stanislav.lisovskiy, jani.saarinen, ville.syrjala
In preparation of ultrajoiner, use number of joined pipes in the dsc
helpers to compute dsc slices and max compressed bpp, instead of using
the joiner flag.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 27 +++++++++++----------
drivers/gpu/drm/i915/display/intel_dp.h | 4 +--
drivers/gpu/drm/i915/display/intel_dp_mst.c | 11 +++++----
3 files changed, 22 insertions(+), 20 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 320d8b6d1bce..ff4c123de0ed 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -752,14 +752,14 @@ u32 intel_dp_dsc_nearest_valid_bpp(struct drm_i915_private *i915, u32 bpp, u32 p
static
u32 get_max_compressed_bpp_with_joiner(struct drm_i915_private *i915,
u32 mode_clock, u32 mode_hdisplay,
- bool bigjoiner)
+ enum intel_joiner_pipe_count joined_pipes)
{
u32 max_bpp_small_joiner_ram;
/* Small Joiner Check: output bpp <= joiner RAM (bits) / Horiz. width */
max_bpp_small_joiner_ram = small_joiner_ram_size_bits(i915) / mode_hdisplay;
- if (bigjoiner) {
+ if (joined_pipes == INTEL_PIPE_JOINER_BIG) {
int bigjoiner_interface_bits = DISPLAY_VER(i915) >= 14 ? 36 : 24;
/* With bigjoiner multiple dsc engines are used in parallel so PPC is 2 */
int ppc = 2;
@@ -778,7 +778,7 @@ u32 get_max_compressed_bpp_with_joiner(struct drm_i915_private *i915,
u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
u32 link_clock, u32 lane_count,
u32 mode_clock, u32 mode_hdisplay,
- bool bigjoiner,
+ enum intel_joiner_pipe_count joined_pipes,
enum intel_output_format output_format,
u32 pipe_bpp,
u32 timeslots)
@@ -824,7 +824,7 @@ u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
intel_dp_mode_to_fec_clock(mode_clock));
joiner_max_bpp = get_max_compressed_bpp_with_joiner(i915, mode_clock,
- mode_hdisplay, bigjoiner);
+ mode_hdisplay, joined_pipes);
bits_per_pixel = min(bits_per_pixel, joiner_max_bpp);
bits_per_pixel = intel_dp_dsc_nearest_valid_bpp(i915, bits_per_pixel, pipe_bpp);
@@ -834,7 +834,7 @@ u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
int mode_clock, int mode_hdisplay,
- bool bigjoiner)
+ enum intel_joiner_pipe_count joined_pipes)
{
struct drm_i915_private *i915 = to_i915(connector->base.dev);
u8 min_slice_count, i;
@@ -868,14 +868,14 @@ u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
/* Find the closest match to the valid slice count values */
for (i = 0; i < ARRAY_SIZE(valid_dsc_slicecount); i++) {
- u8 test_slice_count = valid_dsc_slicecount[i] << bigjoiner;
+ u8 test_slice_count = valid_dsc_slicecount[i] << (joined_pipes / 2);
if (test_slice_count >
drm_dp_dsc_sink_max_slice_count(connector->dp.dsc_dpcd, false))
break;
/* big joiner needs small joiner to be enabled */
- if (bigjoiner && test_slice_count < 4)
+ if (joined_pipes == INTEL_PIPE_JOINER_BIG && test_slice_count < 4)
continue;
if (min_slice_count <= test_slice_count)
@@ -1201,7 +1201,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;
enum intel_joiner_pipe_count joined_pipes = INTEL_PIPE_JOINER_NONE;
status = intel_cpu_transcoder_mode_valid(dev_priv, mode);
@@ -1225,7 +1225,6 @@ intel_dp_mode_valid(struct drm_connector *_connector,
if (intel_dp_need_joiner(intel_dp, connector,
mode->hdisplay, target_clock)) {
- joiner = true;
joined_pipes = INTEL_PIPE_JOINER_BIG;
max_dotclk *= INTEL_PIPE_JOINER_BIG;
}
@@ -1272,14 +1271,14 @@ intel_dp_mode_valid(struct drm_connector *_connector,
max_lanes,
target_clock,
mode->hdisplay,
- joiner,
+ joined_pipes,
output_format,
pipe_bpp, 64);
dsc_slice_count =
intel_dp_dsc_get_slice_count(connector,
target_clock,
mode->hdisplay,
- joiner);
+ joined_pipes);
}
dsc = dsc_max_compressed_bpp && dsc_slice_count;
@@ -1995,6 +1994,7 @@ static int dsc_compute_compressed_bpp(struct intel_dp *intel_dp,
int dsc_src_min_bpp, dsc_sink_min_bpp, dsc_min_bpp;
int dsc_src_max_bpp, dsc_sink_max_bpp, dsc_max_bpp;
int dsc_joiner_max_bpp;
+ int joined_pipes = intel_joiner_num_pipes(pipe_config);
dsc_src_min_bpp = dsc_src_min_compressed_bpp();
dsc_sink_min_bpp = intel_dp_dsc_sink_min_compressed_bpp(pipe_config);
@@ -2009,7 +2009,7 @@ static int dsc_compute_compressed_bpp(struct intel_dp *intel_dp,
dsc_joiner_max_bpp = get_max_compressed_bpp_with_joiner(i915, adjusted_mode->clock,
adjusted_mode->hdisplay,
- pipe_config->joiner_pipes);
+ joined_pipes);
dsc_max_bpp = min(dsc_max_bpp, dsc_joiner_max_bpp);
dsc_max_bpp = min(dsc_max_bpp, to_bpp_int(limits->link.max_bpp_x16));
@@ -2194,6 +2194,7 @@ int intel_dp_dsc_compute_config(struct intel_dp *intel_dp,
to_intel_connector(conn_state->connector);
const struct drm_display_mode *adjusted_mode =
&pipe_config->hw.adjusted_mode;
+ int joined_pipes = intel_joiner_num_pipes(pipe_config);
int ret;
pipe_config->fec_enable = pipe_config->fec_enable ||
@@ -2243,7 +2244,7 @@ int intel_dp_dsc_compute_config(struct intel_dp *intel_dp,
intel_dp_dsc_get_slice_count(connector,
adjusted_mode->crtc_clock,
adjusted_mode->crtc_hdisplay,
- pipe_config->joiner_pipes);
+ joined_pipes);
if (!dsc_dp_slice_count) {
drm_dbg_kms(&dev_priv->drm,
"Compressed Slice Count not supported\n");
diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h
index a8116210c618..acd05dc7b8ad 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.h
+++ b/drivers/gpu/drm/i915/display/intel_dp.h
@@ -142,7 +142,7 @@ int intel_dp_dsc_compute_max_bpp(const struct intel_connector *connector,
u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
u32 link_clock, u32 lane_count,
u32 mode_clock, u32 mode_hdisplay,
- bool bigjoiner,
+ enum intel_joiner_pipe_count joined_pipes,
enum intel_output_format output_format,
u32 pipe_bpp,
u32 timeslots);
@@ -152,7 +152,7 @@ int intel_dp_dsc_sink_max_compressed_bpp(const struct intel_connector *connector
int bpc);
u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
int mode_clock, int mode_hdisplay,
- bool bigjoiner);
+ enum intel_joiner_pipe_count joined_pipes);
bool intel_dp_need_joiner(struct intel_dp *intel_dp,
struct intel_connector *connector,
int hdisplay, int clock);
diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index 3f45ac7ca4d5..31a2acb7fa11 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -101,11 +101,13 @@ static int intel_dp_mst_bw_overhead(const struct intel_crtc_state *crtc_state,
flags |= crtc_state->fec_enable ? DRM_DP_BW_OVERHEAD_FEC : 0;
if (dsc) {
+ int joined_pipes = intel_joiner_num_pipes(crtc_state);
+
flags |= DRM_DP_BW_OVERHEAD_DSC;
dsc_slice_count = intel_dp_dsc_get_slice_count(connector,
adjusted_mode->clock,
adjusted_mode->hdisplay,
- crtc_state->joiner_pipes);
+ joined_pipes);
}
overhead = drm_dp_bw_overhead(crtc_state->lane_count,
@@ -1393,7 +1395,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;
@@ -1439,7 +1441,6 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
*/
if (intel_dp_need_joiner(intel_dp, intel_connector,
mode->hdisplay, target_clock)) {
- joiner = true;
joined_pipes = INTEL_PIPE_JOINER_BIG;
max_dotclk *= INTEL_PIPE_JOINER_BIG;
}
@@ -1468,14 +1469,14 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
max_lanes,
target_clock,
mode->hdisplay,
- joiner,
+ joined_pipes,
INTEL_OUTPUT_FORMAT_RGB,
pipe_bpp, 64);
dsc_slice_count =
intel_dp_dsc_get_slice_count(intel_connector,
target_clock,
mode->hdisplay,
- joiner);
+ joined_pipes);
}
dsc = dsc_max_compressed_bpp && dsc_slice_count;
--
2.45.2
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 05/12] drm/i915: Add some essential functionality for joiners
2024-07-18 8:17 [PATCH 00/12] Ultrajoiner basic functionality series Ankit Nautiyal
` (3 preceding siblings ...)
2024-07-18 8:17 ` [PATCH 04/12] drm/i915/display: Use joined pipes in dsc helpers for slices, bpp Ankit Nautiyal
@ 2024-07-18 8:17 ` Ankit Nautiyal
2024-07-31 7:14 ` Kandpal, Suraj
2024-08-16 8:23 ` Nautiyal, Ankit K
2024-07-18 8:17 ` [PATCH 06/12] drm/i915: Split current joiner hw state readout Ankit Nautiyal
` (10 subsequent siblings)
15 siblings, 2 replies; 32+ messages in thread
From: Ankit Nautiyal @ 2024-07-18 8:17 UTC (permalink / raw)
To: intel-gfx; +Cc: stanislav.lisovskiy, jani.saarinen, 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)
Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
.../gpu/drm/i915/display/intel_atomic_plane.c | 2 +-
drivers/gpu/drm/i915/display/intel_display.c | 75 ++++++++++++++++---
drivers/gpu/drm/i915/display/intel_display.h | 8 +-
.../drm/i915/display/intel_modeset_verify.c | 2 +-
drivers/gpu/drm/i915/display/intel_vdsc.c | 4 +-
5 files changed, 76 insertions(+), 15 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
index e979786aa5cf..9862d0339e6a 100644
--- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
@@ -724,7 +724,7 @@ int intel_plane_atomic_check(struct intel_atomic_state *state,
if (new_crtc_state && intel_crtc_is_joiner_secondary(new_crtc_state)) {
struct intel_crtc *primary_crtc =
- intel_primary_crtc(new_crtc_state);
+ intel_joiner_primary_crtc(new_crtc_state);
struct intel_plane *primary_crtc_plane =
intel_crtc_get_plane(primary_crtc, plane->id);
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 26e4b0c2e9f7..38e7c6811bf3 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -252,6 +252,68 @@ static enum pipe joiner_primary_pipe(const struct intel_crtc_state *crtc_state)
return ffs(crtc_state->joiner_pipes) - 1;
}
+int intel_joiner_num_pipes(const struct intel_crtc_state *crtc_state)
+{
+ return hweight8(crtc_state->joiner_pipes);
+}
+
+bool intel_crtc_is_ultrajoiner(const struct intel_crtc_state *crtc_state)
+{
+ return intel_joiner_num_pipes(crtc_state) == 4;
+}
+
+static bool intel_is_joiner(const struct intel_crtc_state *crtc_state)
+{
+ return intel_joiner_num_pipes(crtc_state) > 1;
+}
+
+static u8 bigjoiner_primary_pipes(const struct intel_crtc_state *crtc_state)
+{
+ int lsb = ffs(crtc_state->joiner_pipes) - 1;
+ int msb = fls(crtc_state->joiner_pipes) - 1;
+ int i;
+ u8 bigjoiner_primary_mask = 0;
+
+ for (i = lsb; i < msb; i += 4) {
+ /*
+ * Regardless of how joiner_pipes mask is set, currently
+ * we always assume, that primary pipe bit goes before secondary
+ * pipe bit. So in each set of 2 bits, least significant bit is
+ * bigjoiner primary pipe and most significant bit is secondary pipe.
+ */
+ bigjoiner_primary_mask |=
+ ((BIT(0) | BIT(2)) << i) & crtc_state->joiner_pipes;
+ }
+
+ return bigjoiner_primary_mask;
+}
+
+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 (!intel_is_joiner(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)
+{
+ if (!intel_is_joiner(crtc_state))
+ return false;
+
+ return !intel_crtc_is_bigjoiner_primary(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) &&
+ (crtc->pipe == joiner_primary_pipe(crtc_state));
+}
+
u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state)
{
if (crtc_state->joiner_pipes)
@@ -276,11 +338,6 @@ bool intel_crtc_is_joiner_primary(const struct intel_crtc_state *crtc_state)
crtc->pipe == joiner_primary_pipe(crtc_state);
}
-int intel_joiner_num_pipes(const struct intel_crtc_state *crtc_state)
-{
- return hweight8(crtc_state->joiner_pipes);
-}
-
u8 intel_crtc_joined_pipe_mask(const struct intel_crtc_state *crtc_state)
{
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
@@ -288,7 +345,7 @@ u8 intel_crtc_joined_pipe_mask(const struct intel_crtc_state *crtc_state)
return BIT(crtc->pipe) | crtc_state->joiner_pipes;
}
-struct intel_crtc *intel_primary_crtc(const struct intel_crtc_state *crtc_state)
+struct intel_crtc *intel_joiner_primary_crtc(const struct intel_crtc_state *crtc_state)
{
struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
@@ -808,7 +865,7 @@ intel_get_crtc_new_encoder(const struct intel_atomic_state *state,
int num_encoders = 0;
int i;
- primary_crtc = intel_primary_crtc(crtc_state);
+ primary_crtc = intel_joiner_primary_crtc(crtc_state);
for_each_new_connector_in_state(&state->base, connector, connector_state, i) {
if (connector_state->crtc != &primary_crtc->base)
@@ -4527,7 +4584,7 @@ copy_joiner_crtc_state_nomodeset(struct intel_atomic_state *state,
{
struct intel_crtc_state *secondary_crtc_state =
intel_atomic_get_new_crtc_state(state, secondary_crtc);
- struct intel_crtc *primary_crtc = intel_primary_crtc(secondary_crtc_state);
+ struct intel_crtc *primary_crtc = intel_joiner_primary_crtc(secondary_crtc_state);
const struct intel_crtc_state *primary_crtc_state =
intel_atomic_get_new_crtc_state(state, primary_crtc);
@@ -4547,7 +4604,7 @@ copy_joiner_crtc_state_modeset(struct intel_atomic_state *state,
{
struct intel_crtc_state *secondary_crtc_state =
intel_atomic_get_new_crtc_state(state, secondary_crtc);
- struct intel_crtc *primary_crtc = intel_primary_crtc(secondary_crtc_state);
+ struct intel_crtc *primary_crtc = intel_joiner_primary_crtc(secondary_crtc_state);
const struct intel_crtc_state *primary_crtc_state =
intel_atomic_get_new_crtc_state(state, primary_crtc);
struct intel_crtc_state *saved_state;
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index bf665f947b97..35e68e4cc712 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -424,10 +424,14 @@ enum phy intel_port_to_phy(struct drm_i915_private *i915, enum port port);
bool is_trans_port_sync_mode(const struct intel_crtc_state *state);
bool is_trans_port_sync_master(const struct intel_crtc_state *state);
u8 intel_crtc_joined_pipe_mask(const struct intel_crtc_state *crtc_state);
-bool intel_crtc_is_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_joiner_secondary(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);
-struct intel_crtc *intel_primary_crtc(const struct intel_crtc_state *crtc_state);
+struct intel_crtc *intel_joiner_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,
const struct intel_crtc_state *pipe_config,
diff --git a/drivers/gpu/drm/i915/display/intel_modeset_verify.c b/drivers/gpu/drm/i915/display/intel_modeset_verify.c
index 3491db5cad31..b53b810c6470 100644
--- a/drivers/gpu/drm/i915/display/intel_modeset_verify.c
+++ b/drivers/gpu/drm/i915/display/intel_modeset_verify.c
@@ -193,7 +193,7 @@ verify_crtc_state(struct intel_atomic_state *state,
"transitional active state does not match atomic hw state (expected %i, found %i)\n",
sw_crtc_state->hw.active, crtc->active);
- primary_crtc = intel_primary_crtc(sw_crtc_state);
+ primary_crtc = intel_joiner_primary_crtc(sw_crtc_state);
for_each_encoder_on_crtc(dev, &primary_crtc->base, encoder) {
enum pipe pipe;
diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c b/drivers/gpu/drm/i915/display/intel_vdsc.c
index b9687b7692b8..11058bb37d5a 100644
--- a/drivers/gpu/drm/i915/display/intel_vdsc.c
+++ b/drivers/gpu/drm/i915/display/intel_vdsc.c
@@ -761,7 +761,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;
@@ -790,7 +790,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] 32+ messages in thread
* [PATCH 06/12] drm/i915: Split current joiner hw state readout
2024-07-18 8:17 [PATCH 00/12] Ultrajoiner basic functionality series Ankit Nautiyal
` (4 preceding siblings ...)
2024-07-18 8:17 ` [PATCH 05/12] drm/i915: Add some essential functionality for joiners Ankit Nautiyal
@ 2024-07-18 8:17 ` Ankit Nautiyal
2024-07-31 7:27 ` Kandpal, Suraj
2024-07-18 8:17 ` [PATCH 07/12] drm/i915: Add bigjoiner and uncompressed joiner hw readout sanity checks Ankit Nautiyal
` (9 subsequent siblings)
15 siblings, 1 reply; 32+ messages in thread
From: Ankit Nautiyal @ 2024-07-18 8:17 UTC (permalink / raw)
To: intel-gfx; +Cc: stanislav.lisovskiy, jani.saarinen, ville.syrjala
From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
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)
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 | 65 +++++++++++++++-----
1 file changed, 48 insertions(+), 17 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 38e7c6811bf3..4aed8117f614 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -3590,51 +3590,82 @@ 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 drm_i915_private *dev_priv,
+ u8 *primary_pipes, u8 *secondary_pipes)
{
struct intel_crtc *crtc;
*primary_pipes = 0;
*secondary_pipes = 0;
+ if (DISPLAY_VER(dev_priv) < 13)
+ return;
+
for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, crtc,
joiner_pipes(dev_priv)) {
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);
+ 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));
- if (!(tmp & BIG_JOINER_ENABLE))
- continue;
-
- if (tmp & PRIMARY_BIG_JOINER_ENABLE)
+ if (tmp & UNCOMPRESSED_JOINER_PRIMARY)
*primary_pipes |= BIT(pipe);
- else
+ if (tmp & UNCOMPRESSED_JOINER_SECONDARY)
*secondary_pipes |= BIT(pipe);
}
+ }
+}
- if (DISPLAY_VER(dev_priv) < 13)
- continue;
+static void enabled_bigjoiner_pipes(struct drm_i915_private *dev_priv,
+ u8 *primary_pipes, u8 *secondary_pipes)
+{
+ struct intel_crtc *crtc;
- power_domain = POWER_DOMAIN_PIPE(pipe);
+ *primary_pipes = 0;
+ *secondary_pipes = 0;
+
+ for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, crtc,
+ joiner_pipes(dev_priv)) {
+ 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));
- if (tmp & UNCOMPRESSED_JOINER_PRIMARY)
+ if (!(tmp & BIG_JOINER_ENABLE))
+ continue;
+
+ if (tmp & PRIMARY_BIG_JOINER_ENABLE)
*primary_pipes |= BIT(pipe);
- if (tmp & UNCOMPRESSED_JOINER_SECONDARY)
+ else
*secondary_pipes |= BIT(pipe);
}
}
+}
+
+static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
+ u8 *primary_pipes, u8 *secondary_pipes)
+{
+ u8 primary_uncompressed_joiner_pipes, primary_bigjoiner_pipes;
+ u8 secondary_uncompressed_joiner_pipes, secondary_bigjoiner_pipes;
+
+ enabled_uncompressed_joiner_pipes(dev_priv, &primary_uncompressed_joiner_pipes,
+ &secondary_uncompressed_joiner_pipes);
+
+ enabled_bigjoiner_pipes(dev_priv, &primary_bigjoiner_pipes,
+ &secondary_bigjoiner_pipes);
+
+ *primary_pipes = 0;
+ *secondary_pipes = 0;
+
+ *primary_pipes = primary_uncompressed_joiner_pipes | primary_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",
- *primary_pipes, *secondary_pipes);
+ *secondary_pipes = secondary_uncompressed_joiner_pipes | secondary_bigjoiner_pipes;
}
static enum pipe get_joiner_primary_pipe(enum pipe pipe, u8 primary_pipes, u8 secondary_pipes)
--
2.45.2
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 07/12] drm/i915: Add bigjoiner and uncompressed joiner hw readout sanity checks
2024-07-18 8:17 [PATCH 00/12] Ultrajoiner basic functionality series Ankit Nautiyal
` (5 preceding siblings ...)
2024-07-18 8:17 ` [PATCH 06/12] drm/i915: Split current joiner hw state readout Ankit Nautiyal
@ 2024-07-18 8:17 ` Ankit Nautiyal
2024-07-31 8:25 ` Kandpal, Suraj
2024-07-18 8:17 ` [PATCH 08/12] drm/i915: Implement hw state readout and checks for ultrajoiner Ankit Nautiyal
` (8 subsequent siblings)
15 siblings, 1 reply; 32+ messages in thread
From: Ankit Nautiyal @ 2024-07-18 8:17 UTC (permalink / raw)
To: intel-gfx; +Cc: stanislav.lisovskiy, jani.saarinen, ville.syrjala
From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Adding sanity checks for primary and secondary bigjoiner/uncompressed
bitmasks, should make it easier to spot possible issues.
Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 25 +++++++++++++++++++-
1 file changed, 24 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 4aed8117f614..59cb0d2f773b 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -3648,11 +3648,17 @@ static void enabled_bigjoiner_pipes(struct drm_i915_private *dev_priv,
}
}
+static u8 expected_secondary_pipes(u8 primary_pipes)
+{
+ return primary_pipes << 1;
+}
+
static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
u8 *primary_pipes, u8 *secondary_pipes)
{
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(dev_priv, &primary_uncompressed_joiner_pipes,
&secondary_uncompressed_joiner_pipes);
@@ -3660,11 +3666,28 @@ static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
enabled_bigjoiner_pipes(dev_priv, &primary_bigjoiner_pipes,
&secondary_bigjoiner_pipes);
+ uncompressed_joiner_pipes = primary_uncompressed_joiner_pipes |
+ secondary_uncompressed_joiner_pipes;
+ bigjoiner_pipes = primary_bigjoiner_pipes | secondary_bigjoiner_pipes;
+
+ drm_WARN(&dev_priv->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(&dev_priv->drm, secondary_bigjoiner_pipes !=
+ expected_secondary_pipes(primary_bigjoiner_pipes),
+ "Wrong secondary bigjoiner pipes(expected %x, current %x)\n",
+ expected_secondary_pipes(primary_bigjoiner_pipes),
+ secondary_bigjoiner_pipes);
+ drm_WARN(&dev_priv->drm, secondary_uncompressed_joiner_pipes !=
+ expected_secondary_pipes(primary_uncompressed_joiner_pipes),
+ "Wrong secondary uncompressed joiner pipes(expected %x, current %x)\n",
+ expected_secondary_pipes(primary_uncompressed_joiner_pipes),
+ secondary_uncompressed_joiner_pipes);
+
*primary_pipes = 0;
*secondary_pipes = 0;
*primary_pipes = primary_uncompressed_joiner_pipes | primary_bigjoiner_pipes;
-
*secondary_pipes = secondary_uncompressed_joiner_pipes | secondary_bigjoiner_pipes;
}
--
2.45.2
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 08/12] drm/i915: Implement hw state readout and checks for ultrajoiner
2024-07-18 8:17 [PATCH 00/12] Ultrajoiner basic functionality series Ankit Nautiyal
` (6 preceding siblings ...)
2024-07-18 8:17 ` [PATCH 07/12] drm/i915: Add bigjoiner and uncompressed joiner hw readout sanity checks Ankit Nautiyal
@ 2024-07-18 8:17 ` Ankit Nautiyal
2024-07-31 9:57 ` Kandpal, Suraj
2024-07-18 8:18 ` [PATCH 09/12] drm/i915/display/vdsc: Add ultrajoiner support with DSC Ankit Nautiyal
` (7 subsequent siblings)
15 siblings, 1 reply; 32+ messages in thread
From: Ankit Nautiyal @ 2024-07-18 8:17 UTC (permalink / raw)
To: intel-gfx; +Cc: stanislav.lisovskiy, jani.saarinen, 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)
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 | 127 ++++++++++++++----
.../gpu/drm/i915/display/intel_vdsc_regs.h | 3 +
2 files changed, 101 insertions(+), 29 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 59cb0d2f773b..d032fd8011d5 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -3648,17 +3648,55 @@ static void enabled_bigjoiner_pipes(struct drm_i915_private *dev_priv,
}
}
-static u8 expected_secondary_pipes(u8 primary_pipes)
+static void enabled_ultrajoiner_pipes(struct drm_i915_private *i915,
+ u8 *primary_pipes, u8 *secondary_pipes)
{
- return primary_pipes << 1;
+ struct intel_crtc *crtc;
+
+ *primary_pipes = 0;
+ *secondary_pipes = 0;
+
+ if (DISPLAY_VER(i915) < 14)
+ 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 u8 expected_secondary_pipes(u8 primary_pipes, bool ultrajoiner_used)
+{
+ if (!ultrajoiner_used)
+ return primary_pipes << 1;
+ else
+ return GENMASK(3, primary_pipes + 1);
}
static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
- u8 *primary_pipes, u8 *secondary_pipes)
+ u8 *primary_pipes, u8 *secondary_pipes,
+ bool *ultrajoiner_used)
{
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(dev_priv, &primary_uncompressed_joiner_pipes,
&secondary_uncompressed_joiner_pipes);
@@ -3666,32 +3704,49 @@ static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
enabled_bigjoiner_pipes(dev_priv, &primary_bigjoiner_pipes,
&secondary_bigjoiner_pipes);
+ enabled_ultrajoiner_pipes(dev_priv, &primary_ultrajoiner_pipes,
+ &secondary_ultrajoiner_pipes);
+
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;
+ *ultrajoiner_used = ultrajoiner_pipes != 0;
drm_WARN(&dev_priv->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(&dev_priv->drm, (ultrajoiner_pipes & bigjoiner_pipes) != ultrajoiner_pipes,
+ "Ultrajoiner pipes(%x) should be bigjoiner pipes(%x)\n",
+ ultrajoiner_pipes, bigjoiner_pipes);
+
drm_WARN(&dev_priv->drm, secondary_bigjoiner_pipes !=
- expected_secondary_pipes(primary_bigjoiner_pipes),
+ expected_secondary_pipes(primary_bigjoiner_pipes, *ultrajoiner_used),
"Wrong secondary bigjoiner pipes(expected %x, current %x)\n",
- expected_secondary_pipes(primary_bigjoiner_pipes),
+ expected_secondary_pipes(primary_bigjoiner_pipes, *ultrajoiner_used),
secondary_bigjoiner_pipes);
drm_WARN(&dev_priv->drm, secondary_uncompressed_joiner_pipes !=
- expected_secondary_pipes(primary_uncompressed_joiner_pipes),
+ expected_secondary_pipes(primary_uncompressed_joiner_pipes, *ultrajoiner_used),
"Wrong secondary uncompressed joiner pipes(expected %x, current %x)\n",
- expected_secondary_pipes(primary_uncompressed_joiner_pipes),
+ expected_secondary_pipes(primary_uncompressed_joiner_pipes, *ultrajoiner_used),
secondary_uncompressed_joiner_pipes);
+ drm_WARN(&dev_priv->drm, secondary_ultrajoiner_pipes !=
+ expected_secondary_pipes(primary_ultrajoiner_pipes, *ultrajoiner_used),
+ "Wrong secondary ultrajoiner pipes(expected %x, current %x)\n",
+ expected_secondary_pipes(primary_ultrajoiner_pipes, *ultrajoiner_used),
+ secondary_ultrajoiner_pipes);
*primary_pipes = 0;
*secondary_pipes = 0;
- *primary_pipes = primary_uncompressed_joiner_pipes | primary_bigjoiner_pipes;
- *secondary_pipes = secondary_uncompressed_joiner_pipes | secondary_bigjoiner_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;
}
-static enum pipe get_joiner_primary_pipe(enum pipe pipe, u8 primary_pipes, u8 secondary_pipes)
+static enum pipe get_joiner_primary_pipe(enum pipe pipe, u8 primary_pipes,
+ u8 secondary_pipes, bool ultrajoiner_used)
{
if ((secondary_pipes & BIT(pipe)) == 0)
return pipe;
@@ -3699,27 +3754,37 @@ static enum pipe get_joiner_primary_pipe(enum pipe pipe, u8 primary_pipes, u8 se
/* ignore everything above our pipe */
primary_pipes &= ~GENMASK(7, pipe);
- /* highest remaining bit should be our primary pipe */
- return fls(primary_pipes) - 1;
+ if (!ultrajoiner_used)
+ /* highest remaining bit should be our master pipe */
+ return fls(primary_pipes) - 1;
+
+ /* lowest remaining bit should be our primary master pipe */
+ return ffs(primary_pipes) - 1;
}
-static u8 get_joiner_secondary_pipes(enum pipe pipe, u8 primary_pipes, u8 secondary_pipes)
+static u8 get_joiner_secondary_pipes(enum pipe pipe, u8 primary_pipes,
+ u8 secondary_pipes, bool ultrajoiner_used)
{
enum pipe primary_pipe, next_primary_pipe;
- primary_pipe = get_joiner_primary_pipe(pipe, primary_pipes, secondary_pipes);
+ primary_pipe = get_joiner_primary_pipe(pipe, primary_pipes,
+ secondary_pipes, ultrajoiner_used);
if ((primary_pipes & BIT(primary_pipe)) == 0)
return 0;
- /* ignore our primary pipe and everything below it */
- primary_pipes &= ~GENMASK(primary_pipe, 0);
- /* make sure a high bit is set for the ffs() */
- primary_pipes |= BIT(7);
- /* lowest remaining bit should be the next primary pipe */
- next_primary_pipe = ffs(primary_pipes) - 1;
+ if (!ultrajoiner_used) {
+ /* ignore our primary pipe and everything below it */
+ primary_pipes &= ~GENMASK(primary_pipe, 0);
+ /* make sure a high bit is set for the ffs() */
+ primary_pipes |= BIT(7);
+ /* lowest remaining bit should be the next primary pipe */
+ next_primary_pipe = ffs(primary_pipes) - 1;
- return secondary_pipes & GENMASK(next_primary_pipe - 1, primary_pipe);
+ return secondary_pipes & GENMASK(next_primary_pipe - 1, primary_pipe);
+ } else {
+ return (secondary_pipes | primary_pipes) & ~BIT(primary_pipe);
+ }
}
static u8 hsw_panel_transcoders(struct drm_i915_private *i915)
@@ -3740,6 +3805,7 @@ static u8 hsw_enabled_transcoders(struct intel_crtc *crtc)
enum transcoder cpu_transcoder;
u8 primary_pipes, secondary_pipes;
u8 enabled_transcoders = 0;
+ bool ultrajoiner_used;
/*
* XXX: Do intel_display_power_get_if_enabled before reading this (for
@@ -3790,11 +3856,12 @@ static u8 hsw_enabled_transcoders(struct intel_crtc *crtc)
if (transcoder_ddi_func_is_enabled(dev_priv, cpu_transcoder))
enabled_transcoders |= BIT(cpu_transcoder);
- /* joiner secondary -> consider the primary pipe's transcoder as well */
- enabled_joiner_pipes(dev_priv, &primary_pipes, &secondary_pipes);
+ /* joiner slave -> consider the master pipe's transcoder as well */
+ enabled_joiner_pipes(dev_priv, &primary_pipes, &secondary_pipes, &ultrajoiner_used);
if (secondary_pipes & BIT(crtc->pipe)) {
cpu_transcoder = (enum transcoder)
- get_joiner_primary_pipe(crtc->pipe, primary_pipes, secondary_pipes);
+ get_joiner_primary_pipe(crtc->pipe, primary_pipes,
+ secondary_pipes, ultrajoiner_used);
if (transcoder_ddi_func_is_enabled(dev_priv, cpu_transcoder))
enabled_transcoders |= BIT(cpu_transcoder);
}
@@ -3926,16 +3993,18 @@ static void intel_joiner_get_config(struct intel_crtc_state *crtc_state)
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
struct drm_i915_private *i915 = to_i915(crtc->base.dev);
u8 primary_pipes, secondary_pipes;
+ bool ultrajoiner_used;
enum pipe pipe = crtc->pipe;
- enabled_joiner_pipes(i915, &primary_pipes, &secondary_pipes);
+ enabled_joiner_pipes(i915, &primary_pipes, &secondary_pipes, &ultrajoiner_used);
if (((primary_pipes | secondary_pipes) & BIT(pipe)) == 0)
return;
- crtc_state->joiner_pipes =
- BIT(get_joiner_primary_pipe(pipe, primary_pipes, secondary_pipes)) |
- get_joiner_secondary_pipes(pipe, primary_pipes, secondary_pipes);
+ crtc_state->joiner_pipes = BIT(get_joiner_primary_pipe(pipe, primary_pipes,
+ secondary_pipes, ultrajoiner_used)) |
+ get_joiner_secondary_pipes(pipe, primary_pipes,
+ secondary_pipes, ultrajoiner_used);
}
static bool hsw_get_pipe_config(struct intel_crtc *crtc,
diff --git a/drivers/gpu/drm/i915/display/intel_vdsc_regs.h b/drivers/gpu/drm/i915/display/intel_vdsc_regs.h
index f921ad67b587..db07c9775892 100644
--- a/drivers/gpu/drm/i915/display/intel_vdsc_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_vdsc_regs.h
@@ -37,6 +37,9 @@
#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] 32+ messages in thread
* [PATCH 09/12] drm/i915/display/vdsc: Add ultrajoiner support with DSC
2024-07-18 8:17 [PATCH 00/12] Ultrajoiner basic functionality series Ankit Nautiyal
` (7 preceding siblings ...)
2024-07-18 8:17 ` [PATCH 08/12] drm/i915: Implement hw state readout and checks for ultrajoiner Ankit Nautiyal
@ 2024-07-18 8:18 ` Ankit Nautiyal
2024-08-01 6:41 ` Kandpal, Suraj
2024-07-18 8:18 ` [PATCH 10/12] drm/i915: Compute config and mode valid changes for ultrajoiner Ankit Nautiyal
` (6 subsequent siblings)
15 siblings, 1 reply; 32+ messages in thread
From: Ankit Nautiyal @ 2024-07-18 8:18 UTC (permalink / raw)
To: intel-gfx; +Cc: stanislav.lisovskiy, jani.saarinen, ville.syrjala
From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Add changes to DSC which are required for Ultrajoiner.
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_vdsc.c | 26 +++++++++++++++++++++--
1 file changed, 24 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c b/drivers/gpu/drm/i915/display/intel_vdsc.c
index 11058bb37d5a..815fbffc2d97 100644
--- a/drivers/gpu/drm/i915/display/intel_vdsc.c
+++ b/drivers/gpu/drm/i915/display/intel_vdsc.c
@@ -378,8 +378,11 @@ 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 joined_pipes = intel_joiner_num_pipes(crtc_state);
- if (crtc_state->joiner_pipes)
+ if (joined_pipes == 4)
+ num_vdsc_instances *= 4;
+ else if (joined_pipes == 2)
num_vdsc_instances *= 2;
return num_vdsc_instances;
@@ -770,6 +773,13 @@ void intel_uncompressed_joiner_enable(const struct intel_crtc_state *crtc_state)
}
}
+static bool intel_crtc_ultrajoiner_enable_needed(const struct intel_crtc_state *crtc_state)
+{
+ struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+
+ return intel_joiner_num_pipes(crtc_state) == 4 && crtc->pipe != PIPE_D;
+}
+
void intel_dsc_enable(const struct intel_crtc_state *crtc_state)
{
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
@@ -789,8 +799,20 @@ 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 master/slave logic or
+ * any other logic, so lets just add helper function to
+ * at least hide this hassle..
+ */
+ if (intel_crtc_ultrajoiner_enable_needed(crtc_state))
+ dss_ctl1_val |= ULTRA_JOINER_ENABLE;
+
+ if (intel_crtc_is_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))
+
+ if (!intel_crtc_is_joiner_secondary(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] 32+ messages in thread
* [PATCH 10/12] drm/i915: Compute config and mode valid changes for ultrajoiner
2024-07-18 8:17 [PATCH 00/12] Ultrajoiner basic functionality series Ankit Nautiyal
` (8 preceding siblings ...)
2024-07-18 8:18 ` [PATCH 09/12] drm/i915/display/vdsc: Add ultrajoiner support with DSC Ankit Nautiyal
@ 2024-07-18 8:18 ` Ankit Nautiyal
2024-07-31 10:29 ` Kandpal, Suraj
2024-07-18 8:18 ` [PATCH 11/12] drm/i915: Add new abstraction layer to handle pipe order for different joiners Ankit Nautiyal
` (5 subsequent siblings)
15 siblings, 1 reply; 32+ messages in thread
From: Ankit Nautiyal @ 2024-07-18 8:18 UTC (permalink / raw)
To: intel-gfx; +Cc: stanislav.lisovskiy, jani.saarinen, ville.syrjala
From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Implement required changes for mode validation and compute config,
to support Ultrajoiner.
This also includes required DSC changes and checks.
v2:
-Use enum for Ultrajoiner pipes.
-Drop changes for HDMI.
-Separate out DSC changes into another patch.
Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
.../drm/i915/display/intel_display_types.h | 1 +
drivers/gpu/drm/i915/display/intel_dp.c | 70 +++++++++++++++----
drivers/gpu/drm/i915/display/intel_dp.h | 7 +-
drivers/gpu/drm/i915/display/intel_dp_mst.c | 15 ++--
4 files changed, 70 insertions(+), 23 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 14c78b18ffa1..a36881b047e3 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -616,6 +616,7 @@ struct intel_hdcp {
enum intel_joiner_pipe_count {
INTEL_PIPE_JOINER_NONE = 0,
INTEL_PIPE_JOINER_BIG = 2,
+ INTEL_PIPE_JOINER_ULTRA = 4,
INTEL_PIPE_JOINER_INVALID,
};
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index ff4c123de0ed..c0a1f2603274 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -755,24 +755,33 @@ u32 get_max_compressed_bpp_with_joiner(struct drm_i915_private *i915,
enum intel_joiner_pipe_count 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 (joined_pipes == INTEL_PIPE_JOINER_BIG) {
- int bigjoiner_interface_bits = DISPLAY_VER(i915) >= 14 ? 36 : 24;
+ /* if ultra joiner is enabled, we have 2 bigjoiners enabled */
+ if (joined_pipes == INTEL_PIPE_JOINER_BIG ||
+ joined_pipes == INTEL_PIPE_JOINER_ULTRA) {
+ 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);
+ return min(max_bpp_small_joiner_ram, max_bpp_joiner);
+ }
+ if (joined_pipes == INTEL_PIPE_JOINER_ULTRA) {
+ /* both get multiplied by 2, because ram bits/ppc now doubled */
+ max_bpp_small_joiner_ram *= 2;
+ max_bpp_joiner *= 2;
}
- return max_bpp_small_joiner_ram;
+ return min(max_bpp_small_joiner_ram, max_bpp_joiner);
}
u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
@@ -878,6 +887,10 @@ u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
if (joined_pipes == INTEL_PIPE_JOINER_BIG && test_slice_count < 4)
continue;
+ /* ultrajoiner needs 2 bigjoiners to be enabled */
+ if (joined_pipes == INTEL_PIPE_JOINER_ULTRA && test_slice_count < 8)
+ continue;
+
if (min_slice_count <= test_slice_count)
return test_slice_count;
}
@@ -1154,9 +1167,9 @@ 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)
+bool intel_dp_need_bigjoiner(struct intel_dp *intel_dp,
+ struct intel_connector *connector,
+ int hdisplay, int clock)
{
struct drm_i915_private *i915 = dp_to_i915(intel_dp);
@@ -1187,6 +1200,25 @@ bool intel_dp_has_dsc(const struct intel_connector *connector)
return true;
}
+static
+bool intel_can_ultrajoiner(const struct intel_encoder *encoder)
+{
+ struct drm_i915_private *i915 = to_i915(encoder->base.dev);
+
+ return IS_DGFX(i915) && DISPLAY_VER(i915) >= 14;
+}
+
+bool intel_dp_need_ultrajoiner(struct intel_dp *dp, int clock)
+{
+ const struct intel_encoder *encoder = &dp_to_dig_port(dp)->base;
+ struct drm_i915_private *i915 = to_i915(encoder->base.dev);
+
+ if (!intel_can_ultrajoiner(encoder))
+ return false;
+
+ return clock > (i915->display.cdclk.max_dotclk_freq * 2);
+}
+
static enum drm_mode_status
intel_dp_mode_valid(struct drm_connector *_connector,
struct drm_display_mode *mode)
@@ -1223,11 +1255,15 @@ 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)) {
+ if (intel_dp_need_ultrajoiner(intel_dp, target_clock)) {
+ joined_pipes = INTEL_PIPE_JOINER_ULTRA;
+ max_dotclk *= INTEL_PIPE_JOINER_ULTRA;
+ } else if (intel_dp_need_bigjoiner(intel_dp, connector,
+ mode->hdisplay, target_clock)) {
joined_pipes = INTEL_PIPE_JOINER_BIG;
max_dotclk *= INTEL_PIPE_JOINER_BIG;
}
+
if (target_clock > max_dotclk)
return MODE_CLOCK_HIGH;
@@ -2401,8 +2437,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 DISPLAY_VER(i915) < 13 && (joined_pipes == INTEL_PIPE_JOINER_BIG);
+ return (DISPLAY_VER(i915) < 13 && (joined_pipes == INTEL_PIPE_JOINER_BIG)) ||
+ joined_pipes == INTEL_PIPE_JOINER_ULTRA;
}
static int
@@ -2427,9 +2465,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))
+ if (intel_dp_need_ultrajoiner(intel_dp, adjusted_mode->crtc_clock))
+ pipe_config->joiner_pipes = GENMASK(crtc->pipe + 3, crtc->pipe);
+ else if (intel_dp_need_bigjoiner(intel_dp, connector,
+ adjusted_mode->crtc_hdisplay,
+ adjusted_mode->crtc_clock))
pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe);
joined_pipes = intel_joiner_num_pipes(pipe_config);
diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h
index acd05dc7b8ad..6c607a218fbc 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.h
+++ b/drivers/gpu/drm/i915/display/intel_dp.h
@@ -153,9 +153,10 @@ 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,
enum intel_joiner_pipe_count joined_pipes);
-bool intel_dp_need_joiner(struct intel_dp *intel_dp,
- struct intel_connector *connector,
- int hdisplay, int clock);
+bool intel_dp_need_bigjoiner(struct intel_dp *intel_dp,
+ struct intel_connector *connector,
+ int hdisplay, int clock);
+bool intel_dp_need_ultrajoiner(struct intel_dp *intel_dp, int clock);
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 31a2acb7fa11..21b23f8eb5e7 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -579,9 +579,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))
+ if (intel_dp_need_ultrajoiner(intel_dp, adjusted_mode->crtc_clock))
+ pipe_config->joiner_pipes = GENMASK(crtc->pipe + 3, crtc->pipe);
+ else if (intel_dp_need_bigjoiner(intel_dp, connector,
+ adjusted_mode->crtc_hdisplay,
+ adjusted_mode->crtc_clock))
pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe);
pipe_config->sink_format = INTEL_OUTPUT_FORMAT_RGB;
@@ -1439,8 +1441,11 @@ 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)) {
+ if (intel_dp_need_ultrajoiner(intel_dp, target_clock)) {
+ joined_pipes = INTEL_PIPE_JOINER_BIG;
+ max_dotclk *= INTEL_PIPE_JOINER_BIG;
+ } else if (intel_dp_need_bigjoiner(intel_dp, intel_connector,
+ mode->hdisplay, target_clock)) {
joined_pipes = INTEL_PIPE_JOINER_BIG;
max_dotclk *= INTEL_PIPE_JOINER_BIG;
}
--
2.45.2
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 11/12] drm/i915: Add new abstraction layer to handle pipe order for different joiners
2024-07-18 8:17 [PATCH 00/12] Ultrajoiner basic functionality series Ankit Nautiyal
` (9 preceding siblings ...)
2024-07-18 8:18 ` [PATCH 10/12] drm/i915: Compute config and mode valid changes for ultrajoiner Ankit Nautiyal
@ 2024-07-18 8:18 ` Ankit Nautiyal
2024-08-01 7:12 ` Kandpal, Suraj
2024-07-18 8:18 ` [PATCH 12/12] drm/i915/intel_dp: Add support for forcing ultrajoiner Ankit Nautiyal
` (4 subsequent siblings)
15 siblings, 1 reply; 32+ messages in thread
From: Ankit Nautiyal @ 2024-07-18 8:18 UTC (permalink / raw)
To: intel-gfx; +Cc: stanislav.lisovskiy, jani.saarinen, ville.syrjala
From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Ultrajoiner case requires special treatment where both reverse and
staight order iteration doesn't work(for instance disabling case requires
order to be: primary master, slaves, secondary master).
Lets unify our approach by using not only pipe masks for iterating required
pipes based on joiner type used, but also using different "priority" arrays
for each of those.
v2: Fix checkpatch warnings. (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_ddi.c | 19 +++--
drivers/gpu/drm/i915/display/intel_display.c | 89 ++++++++++++++++----
drivers/gpu/drm/i915/display/intel_display.h | 7 ++
drivers/gpu/drm/i915/display/intel_dp_mst.c | 19 +++--
4 files changed, 102 insertions(+), 32 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
index a07aca96e551..d54c9e51209e 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -3116,10 +3116,11 @@ static void intel_ddi_post_disable_hdmi_or_sst(struct intel_atomic_state *state,
const struct drm_connector_state *old_conn_state)
{
struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
- struct intel_crtc *pipe_crtc;
+ struct intel_crtc *pipe_crtc; enum pipe pipe;
- for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(old_crtc_state)) {
+ for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(old_crtc_state),
+ intel_get_pipe_order_disable(old_crtc_state)) {
const struct intel_crtc_state *old_pipe_crtc_state =
intel_atomic_get_old_crtc_state(state, pipe_crtc);
@@ -3130,8 +3131,9 @@ static void intel_ddi_post_disable_hdmi_or_sst(struct intel_atomic_state *state,
intel_ddi_disable_transcoder_func(old_crtc_state);
- for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(old_crtc_state)) {
+ for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(old_crtc_state),
+ intel_get_pipe_order_disable(old_crtc_state)) {
const struct intel_crtc_state *old_pipe_crtc_state =
intel_atomic_get_old_crtc_state(state, pipe_crtc);
@@ -3383,7 +3385,7 @@ static void intel_enable_ddi(struct intel_atomic_state *state,
const struct drm_connector_state *conn_state)
{
struct drm_i915_private *i915 = to_i915(encoder->base.dev);
- struct intel_crtc *pipe_crtc;
+ struct intel_crtc *pipe_crtc; enum pipe pipe;
intel_ddi_enable_transcoder_func(encoder, crtc_state);
@@ -3394,8 +3396,9 @@ static void intel_enable_ddi(struct intel_atomic_state *state,
intel_ddi_wait_for_fec_status(encoder, crtc_state, true);
- for_each_intel_crtc_in_pipe_mask_reverse(&i915->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(crtc_state)) {
+ for_each_intel_crtc_in_mask_priority(i915, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(crtc_state),
+ intel_get_pipe_order_enable(crtc_state)) {
const struct intel_crtc_state *pipe_crtc_state =
intel_atomic_get_new_crtc_state(state, pipe_crtc);
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index d032fd8011d5..b6896058a594 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -1730,6 +1730,56 @@ static void hsw_configure_cpu_transcoder(const struct intel_crtc_state *crtc_sta
hsw_set_transconf(crtc_state);
}
+static
+bool intel_is_bigjoiner(const struct intel_crtc_state *pipe_config)
+{
+ return hweight8(pipe_config->joiner_pipes) == 2;
+}
+
+static
+bool intel_is_ultrajoiner(const struct intel_crtc_state *pipe_config)
+{
+ return hweight8(pipe_config->joiner_pipes) == 4;
+}
+
+const enum pipe *intel_get_pipe_order_enable(const struct intel_crtc_state *crtc_state)
+{
+ static const enum pipe ultrajoiner_pipe_order_enable[I915_MAX_PIPES] = {
+ PIPE_B, PIPE_D, PIPE_C, PIPE_A
+ };
+ static const enum pipe bigjoiner_pipe_order_enable[I915_MAX_PIPES] = {
+ PIPE_B, PIPE_A, PIPE_D, PIPE_C
+ };
+ static const enum pipe nojoiner_pipe_order_enable[I915_MAX_PIPES] = {
+ PIPE_A, PIPE_B, PIPE_C, PIPE_D
+ };
+
+ if (intel_is_ultrajoiner(crtc_state))
+ return ultrajoiner_pipe_order_enable;
+ else if (intel_is_bigjoiner(crtc_state))
+ return bigjoiner_pipe_order_enable;
+ return nojoiner_pipe_order_enable;
+}
+
+const enum pipe *intel_get_pipe_order_disable(const struct intel_crtc_state *crtc_state)
+{
+ static const enum pipe ultrajoiner_pipe_order_disable[I915_MAX_PIPES] = {
+ PIPE_A, PIPE_B, PIPE_D, PIPE_C
+ };
+ static const enum pipe bigjoiner_pipe_order_disable[I915_MAX_PIPES] = {
+ PIPE_A, PIPE_B, PIPE_C, PIPE_D
+ };
+ static const enum pipe nojoiner_pipe_order_disable[I915_MAX_PIPES] = {
+ PIPE_A, PIPE_B, PIPE_C, PIPE_D
+ };
+
+ if (intel_is_ultrajoiner(crtc_state))
+ return ultrajoiner_pipe_order_disable;
+ else if (intel_is_bigjoiner(crtc_state))
+ return bigjoiner_pipe_order_disable;
+ return nojoiner_pipe_order_disable;
+}
+
static void hsw_crtc_enable(struct intel_atomic_state *state,
struct intel_crtc *crtc)
{
@@ -1737,19 +1787,21 @@ static void hsw_crtc_enable(struct intel_atomic_state *state,
intel_atomic_get_new_crtc_state(state, crtc);
struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
enum transcoder cpu_transcoder = new_crtc_state->cpu_transcoder;
- struct intel_crtc *pipe_crtc;
+ struct intel_crtc *pipe_crtc; enum pipe pipe;
if (drm_WARN_ON(&dev_priv->drm, crtc->active))
return;
- for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(new_crtc_state))
+ for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(new_crtc_state),
+ intel_get_pipe_order_enable(new_crtc_state))
intel_dmc_enable_pipe(dev_priv, pipe_crtc->pipe);
intel_encoders_pre_pll_enable(state, crtc);
- for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(new_crtc_state)) {
+ for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(new_crtc_state),
+ intel_get_pipe_order_enable(new_crtc_state)) {
const struct intel_crtc_state *pipe_crtc_state =
intel_atomic_get_new_crtc_state(state, pipe_crtc);
@@ -1759,8 +1811,9 @@ static void hsw_crtc_enable(struct intel_atomic_state *state,
intel_encoders_pre_enable(state, crtc);
- for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(new_crtc_state)) {
+ for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(new_crtc_state),
+ intel_get_pipe_order_enable(new_crtc_state)) {
const struct intel_crtc_state *pipe_crtc_state =
intel_atomic_get_new_crtc_state(state, pipe_crtc);
@@ -1778,8 +1831,9 @@ static void hsw_crtc_enable(struct intel_atomic_state *state,
if (!transcoder_is_dsi(cpu_transcoder))
hsw_configure_cpu_transcoder(new_crtc_state);
- for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(new_crtc_state)) {
+ for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(new_crtc_state),
+ intel_get_pipe_order_enable(new_crtc_state)) {
const struct intel_crtc_state *pipe_crtc_state =
intel_atomic_get_new_crtc_state(state, pipe_crtc);
@@ -1814,8 +1868,9 @@ static void hsw_crtc_enable(struct intel_atomic_state *state,
intel_encoders_enable(state, crtc);
- for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(new_crtc_state)) {
+ for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(new_crtc_state),
+ intel_get_pipe_order_enable(new_crtc_state)) {
const struct intel_crtc_state *pipe_crtc_state =
intel_atomic_get_new_crtc_state(state, pipe_crtc);
enum pipe hsw_workaround_pipe;
@@ -1900,7 +1955,7 @@ static void hsw_crtc_disable(struct intel_atomic_state *state,
const struct intel_crtc_state *old_crtc_state =
intel_atomic_get_old_crtc_state(state, crtc);
struct drm_i915_private *i915 = to_i915(crtc->base.dev);
- struct intel_crtc *pipe_crtc;
+ struct intel_crtc *pipe_crtc; enum pipe pipe;
/*
* FIXME collapse everything to one hook.
@@ -1909,8 +1964,9 @@ static void hsw_crtc_disable(struct intel_atomic_state *state,
intel_encoders_disable(state, crtc);
intel_encoders_post_disable(state, crtc);
- for_each_intel_crtc_in_pipe_mask(&i915->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(old_crtc_state)) {
+ for_each_intel_crtc_in_mask_priority(i915, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(old_crtc_state),
+ intel_get_pipe_order_disable(old_crtc_state)) {
const struct intel_crtc_state *old_pipe_crtc_state =
intel_atomic_get_old_crtc_state(state, pipe_crtc);
@@ -1919,8 +1975,9 @@ static void hsw_crtc_disable(struct intel_atomic_state *state,
intel_encoders_post_pll_disable(state, crtc);
- for_each_intel_crtc_in_pipe_mask(&i915->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(old_crtc_state))
+ for_each_intel_crtc_in_mask_priority(i915, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(old_crtc_state),
+ intel_get_pipe_order_disable(old_crtc_state))
intel_dmc_disable_pipe(i915, pipe_crtc->pipe);
}
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index 35e68e4cc712..4cfd1da0bbc0 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -275,6 +275,11 @@ enum phy_fia {
&(dev)->mode_config.crtc_list, \
base.head)
+#define for_each_intel_crtc_in_mask_priority(__dev_priv, intel_crtc, __p, __mask, __priolist) \
+ for_each_pipe(__dev_priv, __p) \
+ for_each_if((__mask) & BIT(__priolist[__p])) \
+ for_each_if(intel_crtc = intel_crtc_for_pipe(__dev_priv, __priolist[__p]))
+
#define for_each_intel_crtc_in_pipe_mask(dev, intel_crtc, pipe_mask) \
list_for_each_entry(intel_crtc, \
&(dev)->mode_config.crtc_list, \
@@ -432,6 +437,8 @@ 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);
struct intel_crtc *intel_joiner_primary_crtc(const struct intel_crtc_state *crtc_state);
+const enum pipe *intel_get_pipe_order_enable(const struct intel_crtc_state *crtc_state);
+const enum pipe *intel_get_pipe_order_disable(const struct intel_crtc_state *crtc_state);
bool intel_crtc_get_pipe_config(struct intel_crtc_state *crtc_state);
bool intel_pipe_config_compare(const struct intel_crtc_state *current_config,
const struct intel_crtc_state *pipe_config,
diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index 21b23f8eb5e7..d4fc4439ce2b 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -1007,7 +1007,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state,
struct drm_dp_mst_atomic_payload *new_payload =
drm_atomic_get_mst_payload_state(new_mst_state, connector->port);
struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
- struct intel_crtc *pipe_crtc;
+ struct intel_crtc *pipe_crtc; enum pipe pipe;
bool last_mst_stream;
intel_dp->active_mst_links--;
@@ -1016,8 +1016,9 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state,
DISPLAY_VER(dev_priv) >= 12 && last_mst_stream &&
!intel_dp_mst_is_master_trans(old_crtc_state));
- for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(old_crtc_state)) {
+ for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(old_crtc_state),
+ intel_get_pipe_order_disable(old_crtc_state)) {
const struct intel_crtc_state *old_pipe_crtc_state =
intel_atomic_get_old_crtc_state(state, pipe_crtc);
@@ -1041,8 +1042,9 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state,
intel_ddi_disable_transcoder_func(old_crtc_state);
- for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(old_crtc_state)) {
+ for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(old_crtc_state),
+ intel_get_pipe_order_disable(old_crtc_state)) {
const struct intel_crtc_state *old_pipe_crtc_state =
intel_atomic_get_old_crtc_state(state, pipe_crtc);
@@ -1231,7 +1233,7 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state,
drm_atomic_get_new_mst_topology_state(&state->base, &intel_dp->mst_mgr);
enum transcoder trans = pipe_config->cpu_transcoder;
bool first_mst_stream = intel_dp->active_mst_links == 1;
- struct intel_crtc *pipe_crtc;
+ struct intel_crtc *pipe_crtc; enum pipe pipe;
drm_WARN_ON(&dev_priv->drm, pipe_config->has_pch_encoder);
@@ -1275,8 +1277,9 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state,
intel_enable_transcoder(pipe_config);
- for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc,
- intel_crtc_joined_pipe_mask(pipe_config)) {
+ for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
+ intel_crtc_joined_pipe_mask(pipe_config),
+ intel_get_pipe_order_enable(pipe_config)) {
const struct intel_crtc_state *pipe_crtc_state =
intel_atomic_get_new_crtc_state(state, pipe_crtc);
--
2.45.2
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH 12/12] drm/i915/intel_dp: Add support for forcing ultrajoiner
2024-07-18 8:17 [PATCH 00/12] Ultrajoiner basic functionality series Ankit Nautiyal
` (10 preceding siblings ...)
2024-07-18 8:18 ` [PATCH 11/12] drm/i915: Add new abstraction layer to handle pipe order for different joiners Ankit Nautiyal
@ 2024-07-18 8:18 ` Ankit Nautiyal
2024-08-01 7:13 ` Kandpal, Suraj
2024-07-18 8:45 ` ✗ Fi.CI.CHECKPATCH: warning for Ultrajoiner basic functionality series (rev6) Patchwork
` (3 subsequent siblings)
15 siblings, 1 reply; 32+ messages in thread
From: Ankit Nautiyal @ 2024-07-18 8:18 UTC (permalink / raw)
To: intel-gfx; +Cc: stanislav.lisovskiy, jani.saarinen, ville.syrjala
Allow forcing ultrajoiner through debugfs.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 11 +++++++----
drivers/gpu/drm/i915/display/intel_dp.h | 4 +++-
drivers/gpu/drm/i915/display/intel_dp_mst.c | 6 ++++--
3 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index c0a1f2603274..da6d8acf710a 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -1208,7 +1208,9 @@ bool intel_can_ultrajoiner(const struct intel_encoder *encoder)
return IS_DGFX(i915) && DISPLAY_VER(i915) >= 14;
}
-bool intel_dp_need_ultrajoiner(struct intel_dp *dp, int clock)
+bool intel_dp_need_ultrajoiner(struct intel_dp *dp,
+ struct intel_connector *connector,
+ int clock)
{
const struct intel_encoder *encoder = &dp_to_dig_port(dp)->base;
struct drm_i915_private *i915 = to_i915(encoder->base.dev);
@@ -1216,7 +1218,8 @@ bool intel_dp_need_ultrajoiner(struct intel_dp *dp, int clock)
if (!intel_can_ultrajoiner(encoder))
return false;
- return clock > (i915->display.cdclk.max_dotclk_freq * 2);
+ return clock > (i915->display.cdclk.max_dotclk_freq * 2) ||
+ connector->force_joined_pipes == INTEL_PIPE_JOINER_ULTRA;
}
static enum drm_mode_status
@@ -1255,7 +1258,7 @@ intel_dp_mode_valid(struct drm_connector *_connector,
target_clock = fixed_mode->clock;
}
- if (intel_dp_need_ultrajoiner(intel_dp, target_clock)) {
+ if (intel_dp_need_ultrajoiner(intel_dp, connector, target_clock)) {
joined_pipes = INTEL_PIPE_JOINER_ULTRA;
max_dotclk *= INTEL_PIPE_JOINER_ULTRA;
} else if (intel_dp_need_bigjoiner(intel_dp, connector,
@@ -2465,7 +2468,7 @@ intel_dp_compute_link_config(struct intel_encoder *encoder,
!intel_dp_supports_fec(intel_dp, connector, pipe_config))
return -EINVAL;
- if (intel_dp_need_ultrajoiner(intel_dp, adjusted_mode->crtc_clock))
+ if (intel_dp_need_ultrajoiner(intel_dp, connector, adjusted_mode->crtc_clock))
pipe_config->joiner_pipes = GENMASK(crtc->pipe + 3, crtc->pipe);
else if (intel_dp_need_bigjoiner(intel_dp, connector,
adjusted_mode->crtc_hdisplay,
diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h
index 6c607a218fbc..b23db3eb477a 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.h
+++ b/drivers/gpu/drm/i915/display/intel_dp.h
@@ -156,7 +156,9 @@ u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
bool intel_dp_need_bigjoiner(struct intel_dp *intel_dp,
struct intel_connector *connector,
int hdisplay, int clock);
-bool intel_dp_need_ultrajoiner(struct intel_dp *intel_dp, int clock);
+bool intel_dp_need_ultrajoiner(struct intel_dp *intel_dp,
+ struct intel_connector *connector,
+ 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 d4fc4439ce2b..b4351d37b963 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -579,7 +579,8 @@ 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_ultrajoiner(intel_dp, adjusted_mode->crtc_clock))
+ if (intel_dp_need_ultrajoiner(intel_dp, connector,
+ adjusted_mode->crtc_clock))
pipe_config->joiner_pipes = GENMASK(crtc->pipe + 3, crtc->pipe);
else if (intel_dp_need_bigjoiner(intel_dp, connector,
adjusted_mode->crtc_hdisplay,
@@ -1444,7 +1445,8 @@ 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_ultrajoiner(intel_dp, target_clock)) {
+ if (intel_dp_need_ultrajoiner(intel_dp, intel_connector,
+ target_clock)) {
joined_pipes = INTEL_PIPE_JOINER_BIG;
max_dotclk *= INTEL_PIPE_JOINER_BIG;
} else if (intel_dp_need_bigjoiner(intel_dp, intel_connector,
--
2.45.2
^ permalink raw reply related [flat|nested] 32+ messages in thread
* ✗ Fi.CI.CHECKPATCH: warning for Ultrajoiner basic functionality series (rev6)
2024-07-18 8:17 [PATCH 00/12] Ultrajoiner basic functionality series Ankit Nautiyal
` (11 preceding siblings ...)
2024-07-18 8:18 ` [PATCH 12/12] drm/i915/intel_dp: Add support for forcing ultrajoiner Ankit Nautiyal
@ 2024-07-18 8:45 ` Patchwork
2024-07-18 8:45 ` ✗ Fi.CI.SPARSE: " Patchwork
` (2 subsequent siblings)
15 siblings, 0 replies; 32+ messages in thread
From: Patchwork @ 2024-07-18 8:45 UTC (permalink / raw)
To: Stanislav Lisovskiy; +Cc: intel-gfx
== Series Details ==
Series: Ultrajoiner basic functionality series (rev6)
URL : https://patchwork.freedesktop.org/series/133800/
State : warning
== Summary ==
Error: dim checkpatch failed
23508b7b4b40 drm/i915/display: Modify debugfs for joiner to force n pipes
a064b31b51cd drm/i915/display: Use joined pipes in intel_dp_joiner_needs_dsc
efceeb539426 drm/i915/display: Use joined pipes in intel_mode_valid_max_plane_size
8ab3c7e4bacb drm/i915/display: Use joined pipes in dsc helpers for slices, bpp
d850eebf97fe drm/i915: Add some essential functionality for joiners
0e4c2974746f drm/i915: Split current joiner hw state readout
8f9ba2421a37 drm/i915: Add bigjoiner and uncompressed joiner hw readout sanity checks
ace849677f05 drm/i915: Implement hw state readout and checks for ultrajoiner
a9c4aef266c5 drm/i915/display/vdsc: Add ultrajoiner support with DSC
98f9585af083 drm/i915: Compute config and mode valid changes for ultrajoiner
cecd47d85a7f drm/i915: Add new abstraction layer to handle pipe order for different joiners
-:237: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#237: FILE: drivers/gpu/drm/i915/display/intel_display.h:278:
+#define for_each_intel_crtc_in_mask_priority(__dev_priv, intel_crtc, __p, __mask, __priolist) \
+ for_each_pipe(__dev_priv, __p) \
+ for_each_if((__mask) & BIT(__priolist[__p])) \
+ for_each_if(intel_crtc = intel_crtc_for_pipe(__dev_priv, __priolist[__p]))
-:237: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__dev_priv' - possible side-effects?
#237: FILE: drivers/gpu/drm/i915/display/intel_display.h:278:
+#define for_each_intel_crtc_in_mask_priority(__dev_priv, intel_crtc, __p, __mask, __priolist) \
+ for_each_pipe(__dev_priv, __p) \
+ for_each_if((__mask) & BIT(__priolist[__p])) \
+ for_each_if(intel_crtc = intel_crtc_for_pipe(__dev_priv, __priolist[__p]))
-:237: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__p' - possible side-effects?
#237: FILE: drivers/gpu/drm/i915/display/intel_display.h:278:
+#define for_each_intel_crtc_in_mask_priority(__dev_priv, intel_crtc, __p, __mask, __priolist) \
+ for_each_pipe(__dev_priv, __p) \
+ for_each_if((__mask) & BIT(__priolist[__p])) \
+ for_each_if(intel_crtc = intel_crtc_for_pipe(__dev_priv, __priolist[__p]))
-:237: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__priolist' - possible side-effects?
#237: FILE: drivers/gpu/drm/i915/display/intel_display.h:278:
+#define for_each_intel_crtc_in_mask_priority(__dev_priv, intel_crtc, __p, __mask, __priolist) \
+ for_each_pipe(__dev_priv, __p) \
+ for_each_if((__mask) & BIT(__priolist[__p])) \
+ for_each_if(intel_crtc = intel_crtc_for_pipe(__dev_priv, __priolist[__p]))
total: 1 errors, 0 warnings, 3 checks, 257 lines checked
492b5281d865 drm/i915/intel_dp: Add support for forcing ultrajoiner
^ permalink raw reply [flat|nested] 32+ messages in thread
* ✗ Fi.CI.SPARSE: warning for Ultrajoiner basic functionality series (rev6)
2024-07-18 8:17 [PATCH 00/12] Ultrajoiner basic functionality series Ankit Nautiyal
` (12 preceding siblings ...)
2024-07-18 8:45 ` ✗ Fi.CI.CHECKPATCH: warning for Ultrajoiner basic functionality series (rev6) Patchwork
@ 2024-07-18 8:45 ` Patchwork
2024-07-18 8:54 ` ✓ Fi.CI.BAT: success " Patchwork
2024-07-19 5:35 ` ✗ Fi.CI.IGT: failure " Patchwork
15 siblings, 0 replies; 32+ messages in thread
From: Patchwork @ 2024-07-18 8:45 UTC (permalink / raw)
To: Stanislav Lisovskiy; +Cc: intel-gfx
== Series Details ==
Series: Ultrajoiner basic functionality series (rev6)
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.
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'o
^ permalink raw reply [flat|nested] 32+ messages in thread
* ✓ Fi.CI.BAT: success for Ultrajoiner basic functionality series (rev6)
2024-07-18 8:17 [PATCH 00/12] Ultrajoiner basic functionality series Ankit Nautiyal
` (13 preceding siblings ...)
2024-07-18 8:45 ` ✗ Fi.CI.SPARSE: " Patchwork
@ 2024-07-18 8:54 ` Patchwork
2024-07-19 5:35 ` ✗ Fi.CI.IGT: failure " Patchwork
15 siblings, 0 replies; 32+ messages in thread
From: Patchwork @ 2024-07-18 8:54 UTC (permalink / raw)
To: Stanislav Lisovskiy; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 8134 bytes --]
== Series Details ==
Series: Ultrajoiner basic functionality series (rev6)
URL : https://patchwork.freedesktop.org/series/133800/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_15089 -> Patchwork_133800v6
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/index.html
Participating hosts (38 -> 38)
------------------------------
Additional (2): bat-dg2-11 fi-kbl-8809g
Missing (2): fi-snb-2520m fi-bsw-n3050
Known issues
------------
Here are the changes found in Patchwork_133800v6 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_huc_copy@huc-copy:
- fi-kbl-8809g: NOTRUN -> [SKIP][1] ([i915#2190])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/fi-kbl-8809g/igt@gem_huc_copy@huc-copy.html
* igt@gem_lmem_swapping@basic:
- fi-kbl-8809g: NOTRUN -> [SKIP][2] ([i915#4613]) +3 other tests skip
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/fi-kbl-8809g/igt@gem_lmem_swapping@basic.html
* igt@gem_mmap@basic:
- bat-dg2-11: NOTRUN -> [SKIP][3] ([i915#4083])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/bat-dg2-11/igt@gem_mmap@basic.html
* igt@gem_tiled_fence_blits@basic:
- bat-dg2-11: NOTRUN -> [SKIP][4] ([i915#4077]) +2 other tests skip
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/bat-dg2-11/igt@gem_tiled_fence_blits@basic.html
* igt@gem_tiled_pread_basic:
- bat-dg2-11: NOTRUN -> [SKIP][5] ([i915#4079]) +1 other test skip
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/bat-dg2-11/igt@gem_tiled_pread_basic.html
* igt@i915_pm_rps@basic-api:
- bat-dg2-11: NOTRUN -> [SKIP][6] ([i915#6621])
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/bat-dg2-11/igt@i915_pm_rps@basic-api.html
* igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy:
- bat-dg2-11: NOTRUN -> [SKIP][7] ([i915#4212]) +7 other tests skip
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/bat-dg2-11/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html
* igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- bat-dg2-11: NOTRUN -> [SKIP][8] ([i915#5190])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/bat-dg2-11/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
* igt@kms_addfb_basic@basic-y-tiled-legacy:
- bat-dg2-11: NOTRUN -> [SKIP][9] ([i915#4215] / [i915#5190])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/bat-dg2-11/igt@kms_addfb_basic@basic-y-tiled-legacy.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
- bat-dg2-11: NOTRUN -> [SKIP][10] ([i915#4103] / [i915#4213]) +1 other test skip
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/bat-dg2-11/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
* igt@kms_dsc@dsc-basic:
- bat-dg2-11: NOTRUN -> [SKIP][11] ([i915#3555] / [i915#3840])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/bat-dg2-11/igt@kms_dsc@dsc-basic.html
* igt@kms_force_connector_basic@force-load-detect:
- fi-kbl-8809g: NOTRUN -> [SKIP][12] +30 other tests skip
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/fi-kbl-8809g/igt@kms_force_connector_basic@force-load-detect.html
- bat-dg2-11: NOTRUN -> [SKIP][13]
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/bat-dg2-11/igt@kms_force_connector_basic@force-load-detect.html
* igt@kms_force_connector_basic@prune-stale-modes:
- bat-dg2-11: NOTRUN -> [SKIP][14] ([i915#5274])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/bat-dg2-11/igt@kms_force_connector_basic@prune-stale-modes.html
* igt@kms_frontbuffer_tracking@basic:
- bat-arls-2: [PASS][15] -> [DMESG-WARN][16] ([i915#7507])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/bat-arls-2/igt@kms_frontbuffer_tracking@basic.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/bat-arls-2/igt@kms_frontbuffer_tracking@basic.html
* igt@kms_pm_backlight@basic-brightness:
- bat-dg2-11: NOTRUN -> [SKIP][17] ([i915#5354])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/bat-dg2-11/igt@kms_pm_backlight@basic-brightness.html
* igt@kms_psr@psr-sprite-plane-onoff:
- bat-dg2-11: NOTRUN -> [SKIP][18] ([i915#1072] / [i915#9732]) +3 other tests skip
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/bat-dg2-11/igt@kms_psr@psr-sprite-plane-onoff.html
* igt@kms_setmode@basic-clone-single-crtc:
- bat-dg2-11: NOTRUN -> [SKIP][19] ([i915#3555])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/bat-dg2-11/igt@kms_setmode@basic-clone-single-crtc.html
* igt@prime_vgem@basic-fence-flip:
- bat-dg2-11: NOTRUN -> [SKIP][20] ([i915#3708])
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/bat-dg2-11/igt@prime_vgem@basic-fence-flip.html
* igt@prime_vgem@basic-fence-mmap:
- bat-dg2-11: NOTRUN -> [SKIP][21] ([i915#3708] / [i915#4077]) +1 other test skip
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/bat-dg2-11/igt@prime_vgem@basic-fence-mmap.html
* igt@prime_vgem@basic-read:
- bat-dg2-11: NOTRUN -> [SKIP][22] ([i915#3291] / [i915#3708]) +2 other tests skip
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/bat-dg2-11/igt@prime_vgem@basic-read.html
#### Possible fixes ####
* igt@i915_selftest@live@hangcheck:
- bat-mtlp-8: [ABORT][23] ([i915#9500]) -> [PASS][24]
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/bat-mtlp-8/igt@i915_selftest@live@hangcheck.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/bat-mtlp-8/igt@i915_selftest@live@hangcheck.html
[i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
[i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
[i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
[i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
[i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
[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#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
[i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
[i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
[i915#4215]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4215
[i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
[i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
[i915#5274]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5274
[i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
[i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
[i915#7507]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7507
[i915#9500]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9500
[i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
Build changes
-------------
* Linux: CI_DRM_15089 -> Patchwork_133800v6
CI-20190529: 20190529
CI_DRM_15089: c2610cb0857b1e68f684691f6d3e7fb110f7149f @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_7929: 7929
Patchwork_133800v6: c2610cb0857b1e68f684691f6d3e7fb110f7149f @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/index.html
[-- Attachment #2: Type: text/html, Size: 9635 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* ✗ Fi.CI.IGT: failure for Ultrajoiner basic functionality series (rev6)
2024-07-18 8:17 [PATCH 00/12] Ultrajoiner basic functionality series Ankit Nautiyal
` (14 preceding siblings ...)
2024-07-18 8:54 ` ✓ Fi.CI.BAT: success " Patchwork
@ 2024-07-19 5:35 ` Patchwork
15 siblings, 0 replies; 32+ messages in thread
From: Patchwork @ 2024-07-19 5:35 UTC (permalink / raw)
To: Stanislav Lisovskiy; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 100272 bytes --]
== Series Details ==
Series: Ultrajoiner basic functionality series (rev6)
URL : https://patchwork.freedesktop.org/series/133800/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_15089_full -> Patchwork_133800v6_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_133800v6_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_133800v6_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_133800v6_full:
### IGT changes ###
#### Possible regressions ####
* igt@kms_async_flips@alternate-sync-async-flip@pipe-a-hdmi-a-4:
- shard-dg1: NOTRUN -> [FAIL][1]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-15/igt@kms_async_flips@alternate-sync-async-flip@pipe-a-hdmi-a-4.html
* igt@kms_cursor_crc@cursor-onscreen-512x512:
- shard-mtlp: NOTRUN -> [SKIP][2]
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-8/igt@kms_cursor_crc@cursor-onscreen-512x512.html
#### Warnings ####
* igt@kms_cursor_crc@cursor-offscreen-512x170:
- shard-mtlp: [SKIP][3] ([i915#3359]) -> [SKIP][4] +6 other tests skip
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-mtlp-5/igt@kms_cursor_crc@cursor-offscreen-512x170.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-2/igt@kms_cursor_crc@cursor-offscreen-512x170.html
* igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
- shard-mtlp: [SKIP][5] ([i915#4235]) -> [SKIP][6] +10 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-mtlp-1/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-8/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
New tests
---------
New tests have been introduced between CI_DRM_15089_full and Patchwork_133800v6_full:
### New IGT tests (15) ###
* igt@kms_async_flips@test-cursor@pipe-a-hdmi-a-4:
- Statuses : 1 pass(s)
- Exec time: [0.29] s
* igt@kms_async_flips@test-cursor@pipe-b-hdmi-a-4:
- Statuses : 1 pass(s)
- Exec time: [0.06] s
* igt@kms_async_flips@test-cursor@pipe-c-hdmi-a-4:
- Statuses : 1 pass(s)
- Exec time: [0.07] s
* igt@kms_async_flips@test-cursor@pipe-d-hdmi-a-4:
- Statuses : 1 pass(s)
- Exec time: [0.07] s
* igt@kms_color@deep-color@pipe-b-dp-4-ctm:
- Statuses : 1 pass(s)
- Exec time: [6.18] s
* igt@kms_color@deep-color@pipe-b-dp-4-degamma:
- Statuses : 1 pass(s)
- Exec time: [6.14] s
* igt@kms_color@deep-color@pipe-b-dp-4-gamma:
- Statuses : 1 pass(s)
- Exec time: [6.17] s
* igt@kms_flip@flip-vs-blocking-wf-vblank@a-hdmi-a4:
- Statuses : 1 pass(s)
- Exec time: [8.18] s
* igt@kms_flip@flip-vs-blocking-wf-vblank@b-hdmi-a4:
- Statuses : 1 pass(s)
- Exec time: [8.10] s
* igt@kms_flip@flip-vs-blocking-wf-vblank@c-hdmi-a4:
- Statuses : 1 pass(s)
- Exec time: [8.12] s
* igt@kms_flip@flip-vs-blocking-wf-vblank@d-hdmi-a4:
- Statuses : 1 pass(s)
- Exec time: [8.11] s
* igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75@pipe-a-hdmi-a-4:
- Statuses : 1 pass(s)
- Exec time: [0.11] s
* igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75@pipe-b-hdmi-a-4:
- Statuses : 1 pass(s)
- Exec time: [0.15] s
* igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75@pipe-c-hdmi-a-4:
- Statuses : 1 pass(s)
- Exec time: [0.12] s
* igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75@pipe-d-hdmi-a-4:
- Statuses : 1 pass(s)
- Exec time: [0.12] s
Known issues
------------
Here are the changes found in Patchwork_133800v6_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@device_reset@unbind-reset-rebind:
- shard-dg1: NOTRUN -> [ABORT][7] ([i915#9413])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-17/igt@device_reset@unbind-reset-rebind.html
* igt@drm_fdinfo@idle@rcs0:
- shard-rkl: NOTRUN -> [FAIL][8] ([i915#7742]) +1 other test fail
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-1/igt@drm_fdinfo@idle@rcs0.html
* igt@drm_fdinfo@most-busy-check-all@bcs0:
- shard-dg1: NOTRUN -> [SKIP][9] ([i915#8414]) +4 other tests skip
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-18/igt@drm_fdinfo@most-busy-check-all@bcs0.html
* igt@drm_fdinfo@most-busy-idle-check-all@vecs1:
- shard-dg2: NOTRUN -> [SKIP][10] ([i915#8414]) +34 other tests skip
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-11/igt@drm_fdinfo@most-busy-idle-check-all@vecs1.html
* igt@drm_fdinfo@virtual-busy:
- shard-mtlp: NOTRUN -> [SKIP][11] ([i915#8414])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@drm_fdinfo@virtual-busy.html
* igt@gem_bad_reloc@negative-reloc-lut:
- shard-dg1: NOTRUN -> [SKIP][12] ([i915#3281]) +3 other tests skip
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-18/igt@gem_bad_reloc@negative-reloc-lut.html
* igt@gem_ccs@suspend-resume:
- shard-rkl: NOTRUN -> [SKIP][13] ([i915#9323])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-3/igt@gem_ccs@suspend-resume.html
* igt@gem_ccs@suspend-resume@linear-compressed-compfmt0-lmem0-lmem0:
- shard-dg2: NOTRUN -> [INCOMPLETE][14] ([i915#7297])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-1/igt@gem_ccs@suspend-resume@linear-compressed-compfmt0-lmem0-lmem0.html
* igt@gem_close_race@multigpu-basic-process:
- shard-dg2: NOTRUN -> [SKIP][15] ([i915#7697])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-11/igt@gem_close_race@multigpu-basic-process.html
* igt@gem_close_race@multigpu-basic-threads:
- shard-rkl: NOTRUN -> [SKIP][16] ([i915#7697])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-1/igt@gem_close_race@multigpu-basic-threads.html
* igt@gem_create@create-ext-set-pat:
- shard-dg2: NOTRUN -> [SKIP][17] ([i915#8562])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-11/igt@gem_create@create-ext-set-pat.html
* igt@gem_ctx_exec@basic-nohangcheck:
- shard-rkl: NOTRUN -> [FAIL][18] ([i915#6268])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-3/igt@gem_ctx_exec@basic-nohangcheck.html
* igt@gem_ctx_persistence@hang:
- shard-dg2: NOTRUN -> [SKIP][19] ([i915#8555])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@gem_ctx_persistence@hang.html
* igt@gem_ctx_persistence@saturated-hostile-nopreempt@ccs0:
- shard-dg2: NOTRUN -> [SKIP][20] ([i915#5882]) +6 other tests skip
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-7/igt@gem_ctx_persistence@saturated-hostile-nopreempt@ccs0.html
* igt@gem_ctx_sseu@invalid-args:
- shard-dg1: NOTRUN -> [SKIP][21] ([i915#280])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-17/igt@gem_ctx_sseu@invalid-args.html
* igt@gem_eio@reset-stress:
- shard-dg2: NOTRUN -> [FAIL][22] ([i915#5784])
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-1/igt@gem_eio@reset-stress.html
* igt@gem_exec_balancer@invalid-bonds:
- shard-mtlp: NOTRUN -> [SKIP][23] ([i915#4036])
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@gem_exec_balancer@invalid-bonds.html
* igt@gem_exec_balancer@noheartbeat:
- shard-dg1: NOTRUN -> [SKIP][24] ([i915#8555])
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-17/igt@gem_exec_balancer@noheartbeat.html
* igt@gem_exec_capture@capture@vecs0-lmem0:
- shard-dg2: NOTRUN -> [FAIL][25] ([i915#10386]) +3 other tests fail
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@gem_exec_capture@capture@vecs0-lmem0.html
* igt@gem_exec_capture@capture@vecs0-smem:
- shard-mtlp: NOTRUN -> [FAIL][26] ([i915#10386])
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-8/igt@gem_exec_capture@capture@vecs0-smem.html
* igt@gem_exec_fair@basic-deadline:
- shard-glk: [PASS][27] -> [FAIL][28] ([i915#2846])
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-glk7/igt@gem_exec_fair@basic-deadline.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-glk7/igt@gem_exec_fair@basic-deadline.html
- shard-mtlp: NOTRUN -> [SKIP][29] ([i915#4473] / [i915#4771])
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@gem_exec_fair@basic-deadline.html
* igt@gem_exec_fair@basic-none-rrul:
- shard-dg1: NOTRUN -> [SKIP][30] ([i915#3539] / [i915#4852])
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-18/igt@gem_exec_fair@basic-none-rrul.html
* igt@gem_exec_fair@basic-none-rrul@rcs0:
- shard-glk: NOTRUN -> [FAIL][31] ([i915#2842]) +3 other tests fail
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-glk7/igt@gem_exec_fair@basic-none-rrul@rcs0.html
- shard-rkl: NOTRUN -> [FAIL][32] ([i915#2842])
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-5/igt@gem_exec_fair@basic-none-rrul@rcs0.html
* igt@gem_exec_fair@basic-pace@bcs0:
- shard-tglu: NOTRUN -> [FAIL][33] ([i915#2842]) +4 other tests fail
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-tglu-5/igt@gem_exec_fair@basic-pace@bcs0.html
* igt@gem_exec_fence@submit:
- shard-mtlp: NOTRUN -> [SKIP][34] ([i915#4812])
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@gem_exec_fence@submit.html
* igt@gem_exec_flush@basic-wb-set-default:
- shard-dg2: NOTRUN -> [SKIP][35] ([i915#3539] / [i915#4852])
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-11/igt@gem_exec_flush@basic-wb-set-default.html
* igt@gem_exec_reloc@basic-write-gtt:
- shard-dg2: NOTRUN -> [SKIP][36] ([i915#3281]) +2 other tests skip
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@gem_exec_reloc@basic-write-gtt.html
* igt@gem_exec_reloc@basic-write-gtt-active:
- shard-mtlp: NOTRUN -> [SKIP][37] ([i915#3281])
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@gem_exec_reloc@basic-write-gtt-active.html
* igt@gem_exec_reloc@basic-write-read-noreloc:
- shard-rkl: NOTRUN -> [SKIP][38] ([i915#3281]) +10 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-5/igt@gem_exec_reloc@basic-write-read-noreloc.html
* igt@gem_exec_schedule@preempt-queue-contexts-chain:
- shard-mtlp: NOTRUN -> [SKIP][39] ([i915#4537] / [i915#4812])
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@gem_exec_schedule@preempt-queue-contexts-chain.html
* igt@gem_fence_thrash@bo-write-verify-y:
- shard-dg2: NOTRUN -> [SKIP][40] ([i915#4860]) +1 other test skip
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-1/igt@gem_fence_thrash@bo-write-verify-y.html
* igt@gem_fenced_exec_thrash@no-spare-fences:
- shard-dg1: NOTRUN -> [SKIP][41] ([i915#4860]) +1 other test skip
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-18/igt@gem_fenced_exec_thrash@no-spare-fences.html
* igt@gem_huc_copy@huc-copy:
- shard-rkl: NOTRUN -> [SKIP][42] ([i915#2190])
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-3/igt@gem_huc_copy@huc-copy.html
* igt@gem_lmem_swapping@heavy-verify-multi-ccs@lmem0:
- shard-dg2: NOTRUN -> [FAIL][43] ([i915#10378]) +1 other test fail
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-2/igt@gem_lmem_swapping@heavy-verify-multi-ccs@lmem0.html
* igt@gem_lmem_swapping@random:
- shard-tglu: NOTRUN -> [SKIP][44] ([i915#4613])
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-tglu-5/igt@gem_lmem_swapping@random.html
* igt@gem_lmem_swapping@smem-oom@lmem0:
- shard-dg1: NOTRUN -> [TIMEOUT][45] ([i915#5493])
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-18/igt@gem_lmem_swapping@smem-oom@lmem0.html
* igt@gem_lmem_swapping@verify-ccs:
- shard-glk: NOTRUN -> [SKIP][46] ([i915#4613]) +3 other tests skip
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-glk7/igt@gem_lmem_swapping@verify-ccs.html
- shard-rkl: NOTRUN -> [SKIP][47] ([i915#4613]) +1 other test skip
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-1/igt@gem_lmem_swapping@verify-ccs.html
* igt@gem_mmap@bad-size:
- shard-mtlp: NOTRUN -> [SKIP][48] ([i915#4083]) +1 other test skip
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@gem_mmap@bad-size.html
* igt@gem_mmap@basic:
- shard-dg1: NOTRUN -> [SKIP][49] ([i915#4083]) +1 other test skip
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-17/igt@gem_mmap@basic.html
* igt@gem_mmap_gtt@basic-read-write-distinct:
- shard-mtlp: NOTRUN -> [SKIP][50] ([i915#4077]) +5 other tests skip
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@gem_mmap_gtt@basic-read-write-distinct.html
* igt@gem_mmap_gtt@zero-extend:
- shard-dg2: NOTRUN -> [SKIP][51] ([i915#4077]) +3 other tests skip
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-11/igt@gem_mmap_gtt@zero-extend.html
* igt@gem_mmap_wc@pf-nonblock:
- shard-dg2: NOTRUN -> [SKIP][52] ([i915#4083]) +4 other tests skip
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-11/igt@gem_mmap_wc@pf-nonblock.html
* igt@gem_partial_pwrite_pread@reads-uncached:
- shard-dg1: NOTRUN -> [SKIP][53] ([i915#3282]) +1 other test skip
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-17/igt@gem_partial_pwrite_pread@reads-uncached.html
* igt@gem_partial_pwrite_pread@writes-after-reads-display:
- shard-dg2: NOTRUN -> [SKIP][54] ([i915#3282]) +2 other tests skip
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@gem_partial_pwrite_pread@writes-after-reads-display.html
* igt@gem_pwrite_snooped:
- shard-rkl: NOTRUN -> [SKIP][55] ([i915#3282]) +3 other tests skip
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-3/igt@gem_pwrite_snooped.html
- shard-mtlp: NOTRUN -> [SKIP][56] ([i915#3282]) +1 other test skip
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@gem_pwrite_snooped.html
* igt@gem_pxp@create-regular-context-2:
- shard-rkl: NOTRUN -> [SKIP][57] ([i915#4270]) +1 other test skip
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-5/igt@gem_pxp@create-regular-context-2.html
* igt@gem_pxp@protected-raw-src-copy-not-readible:
- shard-dg2: NOTRUN -> [SKIP][58] ([i915#4270]) +1 other test skip
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@gem_pxp@protected-raw-src-copy-not-readible.html
* igt@gem_pxp@reject-modify-context-protection-on:
- shard-tglu: NOTRUN -> [SKIP][59] ([i915#4270]) +1 other test skip
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-tglu-5/igt@gem_pxp@reject-modify-context-protection-on.html
* igt@gem_pxp@verify-pxp-stale-ctx-execution:
- shard-dg1: NOTRUN -> [SKIP][60] ([i915#4270]) +1 other test skip
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-18/igt@gem_pxp@verify-pxp-stale-ctx-execution.html
* igt@gem_render_copy@x-tiled-to-vebox-y-tiled:
- shard-mtlp: NOTRUN -> [SKIP][61] ([i915#8428]) +1 other test skip
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@gem_render_copy@x-tiled-to-vebox-y-tiled.html
* igt@gem_render_copy@yf-tiled-ccs-to-yf-tiled:
- shard-dg2: NOTRUN -> [SKIP][62] ([i915#5190] / [i915#8428]) +4 other tests skip
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@gem_render_copy@yf-tiled-ccs-to-yf-tiled.html
* igt@gem_set_tiling_vs_blt@tiled-to-untiled:
- shard-rkl: NOTRUN -> [SKIP][63] ([i915#8411]) +1 other test skip
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-3/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html
- shard-mtlp: NOTRUN -> [SKIP][64] ([i915#4079])
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html
* igt@gem_softpin@evict-snoop:
- shard-rkl: NOTRUN -> [SKIP][65] +22 other tests skip
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-1/igt@gem_softpin@evict-snoop.html
* igt@gem_spin_batch@spin-all-new:
- shard-dg2: NOTRUN -> [FAIL][66] ([i915#5889])
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-11/igt@gem_spin_batch@spin-all-new.html
* igt@gem_tiled_pread_pwrite:
- shard-dg1: NOTRUN -> [SKIP][67] ([i915#4079])
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-17/igt@gem_tiled_pread_pwrite.html
* igt@gem_userptr_blits@create-destroy-unsync:
- shard-dg2: NOTRUN -> [SKIP][68] ([i915#3297]) +1 other test skip
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@gem_userptr_blits@create-destroy-unsync.html
* igt@gem_userptr_blits@dmabuf-sync:
- shard-glk: NOTRUN -> [SKIP][69] ([i915#3323])
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-glk7/igt@gem_userptr_blits@dmabuf-sync.html
- shard-rkl: NOTRUN -> [SKIP][70] ([i915#3297] / [i915#3323])
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-1/igt@gem_userptr_blits@dmabuf-sync.html
* igt@gem_userptr_blits@mmap-offset-banned@gtt:
- shard-mtlp: NOTRUN -> [SKIP][71] ([i915#3297])
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@gem_userptr_blits@mmap-offset-banned@gtt.html
* igt@gem_userptr_blits@unsync-unmap-cycles:
- shard-rkl: NOTRUN -> [SKIP][72] ([i915#3297]) +1 other test skip
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-3/igt@gem_userptr_blits@unsync-unmap-cycles.html
* igt@gen9_exec_parse@allowed-single:
- shard-tglu: NOTRUN -> [SKIP][73] ([i915#2527] / [i915#2856])
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-tglu-5/igt@gen9_exec_parse@allowed-single.html
* igt@gen9_exec_parse@batch-invalid-length:
- shard-rkl: NOTRUN -> [SKIP][74] ([i915#2527]) +2 other tests skip
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-3/igt@gen9_exec_parse@batch-invalid-length.html
* igt@gen9_exec_parse@batch-without-end:
- shard-mtlp: NOTRUN -> [SKIP][75] ([i915#2856])
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@gen9_exec_parse@batch-without-end.html
* igt@gen9_exec_parse@cmd-crossing-page:
- shard-dg1: NOTRUN -> [SKIP][76] ([i915#2527]) +1 other test skip
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-17/igt@gen9_exec_parse@cmd-crossing-page.html
* igt@gen9_exec_parse@shadow-peek:
- shard-dg2: NOTRUN -> [SKIP][77] ([i915#2856]) +1 other test skip
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@gen9_exec_parse@shadow-peek.html
* igt@i915_module_load@reload-with-fault-injection:
- shard-snb: [PASS][78] -> [ABORT][79] ([i915#9820])
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-snb6/igt@i915_module_load@reload-with-fault-injection.html
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-snb2/igt@i915_module_load@reload-with-fault-injection.html
- shard-dg1: NOTRUN -> [ABORT][80] ([i915#9820])
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-18/igt@i915_module_load@reload-with-fault-injection.html
- shard-glk: NOTRUN -> [ABORT][81] ([i915#9820])
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-glk7/igt@i915_module_load@reload-with-fault-injection.html
- shard-mtlp: [PASS][82] -> [ABORT][83] ([i915#10131] / [i915#9820])
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-mtlp-1/igt@i915_module_load@reload-with-fault-injection.html
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-7/igt@i915_module_load@reload-with-fault-injection.html
* igt@i915_pm_rc6_residency@rc6-idle@gt0-vecs0:
- shard-dg1: [PASS][84] -> [FAIL][85] ([i915#3591])
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg1-15/igt@i915_pm_rc6_residency@rc6-idle@gt0-vecs0.html
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-16/igt@i915_pm_rc6_residency@rc6-idle@gt0-vecs0.html
* igt@i915_pm_rps@min-max-config-idle:
- shard-mtlp: NOTRUN -> [SKIP][86] ([i915#6621])
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@i915_pm_rps@min-max-config-idle.html
* igt@i915_pm_rps@min-max-config-loaded:
- shard-dg1: NOTRUN -> [SKIP][87] ([i915#6621])
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-17/igt@i915_pm_rps@min-max-config-loaded.html
* igt@i915_pm_rps@thresholds-idle@gt0:
- shard-dg2: NOTRUN -> [SKIP][88] ([i915#8925]) +1 other test skip
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-5/igt@i915_pm_rps@thresholds-idle@gt0.html
* igt@i915_selftest@mock@memory_region:
- shard-rkl: NOTRUN -> [DMESG-WARN][89] ([i915#9311])
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-3/igt@i915_selftest@mock@memory_region.html
* igt@i915_suspend@basic-s3-without-i915:
- shard-rkl: [PASS][90] -> [FAIL][91] ([i915#10031] / [i915#11279])
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-rkl-2/igt@i915_suspend@basic-s3-without-i915.html
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-6/igt@i915_suspend@basic-s3-without-i915.html
* igt@i915_suspend@fence-restore-tiled2untiled:
- shard-dg1: NOTRUN -> [SKIP][92] ([i915#4077])
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-17/igt@i915_suspend@fence-restore-tiled2untiled.html
* igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- shard-dg2: NOTRUN -> [SKIP][93] ([i915#5190]) +2 other tests skip
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
* igt@kms_addfb_basic@bo-too-small-due-to-tiling:
- shard-mtlp: NOTRUN -> [SKIP][94] ([i915#4212])
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@kms_addfb_basic@bo-too-small-due-to-tiling.html
* igt@kms_addfb_basic@framebuffer-vs-set-tiling:
- shard-dg2: NOTRUN -> [SKIP][95] ([i915#4212]) +1 other test skip
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html
* igt@kms_addfb_basic@invalid-smem-bo-on-discrete:
- shard-rkl: NOTRUN -> [SKIP][96] ([i915#3826])
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-1/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-2-y-rc-ccs-cc:
- shard-rkl: NOTRUN -> [SKIP][97] ([i915#8709]) +3 other tests skip
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-6/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-2-y-rc-ccs-cc.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-c-dp-4-4-rc-ccs-cc:
- shard-dg2: NOTRUN -> [SKIP][98] ([i915#8709]) +11 other tests skip
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-11/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-c-dp-4-4-rc-ccs-cc.html
* igt@kms_atomic@plane-primary-overlay-mutable-zpos:
- shard-dg2: NOTRUN -> [SKIP][99] ([i915#9531])
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-11/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html
* igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1:
- shard-snb: [PASS][100] -> [FAIL][101] ([i915#5956])
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-snb4/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1.html
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-snb6/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1.html
* igt@kms_big_fb@4-tiled-16bpp-rotate-0:
- shard-tglu: NOTRUN -> [SKIP][102] ([i915#5286]) +1 other test skip
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-tglu-5/igt@kms_big_fb@4-tiled-16bpp-rotate-0.html
* igt@kms_big_fb@4-tiled-8bpp-rotate-90:
- shard-rkl: NOTRUN -> [SKIP][103] ([i915#5286]) +6 other tests skip
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-5/igt@kms_big_fb@4-tiled-8bpp-rotate-90.html
- shard-dg1: NOTRUN -> [SKIP][104] ([i915#4538] / [i915#5286]) +2 other tests skip
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-18/igt@kms_big_fb@4-tiled-8bpp-rotate-90.html
* igt@kms_big_fb@x-tiled-16bpp-rotate-90:
- shard-dg1: NOTRUN -> [SKIP][105] ([i915#3638])
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-18/igt@kms_big_fb@x-tiled-16bpp-rotate-90.html
* igt@kms_big_fb@y-tiled-64bpp-rotate-270:
- shard-rkl: NOTRUN -> [SKIP][106] ([i915#3638]) +3 other tests skip
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-3/igt@kms_big_fb@y-tiled-64bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
- shard-dg2: NOTRUN -> [SKIP][107] ([i915#4538] / [i915#5190]) +5 other tests skip
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-11/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html
* igt@kms_big_fb@yf-tiled-16bpp-rotate-0:
- shard-mtlp: NOTRUN -> [SKIP][108] +7 other tests skip
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-8/igt@kms_big_fb@yf-tiled-16bpp-rotate-0.html
* igt@kms_big_fb@yf-tiled-8bpp-rotate-180:
- shard-dg1: NOTRUN -> [SKIP][109] ([i915#4538])
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-17/igt@kms_big_fb@yf-tiled-8bpp-rotate-180.html
* igt@kms_big_joiner@basic-force-joiner:
- shard-mtlp: NOTRUN -> [SKIP][110] ([i915#10656]) +1 other test skip
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-3/igt@kms_big_joiner@basic-force-joiner.html
- shard-rkl: NOTRUN -> [SKIP][111] ([i915#10656])
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-1/igt@kms_big_joiner@basic-force-joiner.html
* igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][112] ([i915#10307] / [i915#10434] / [i915#6095]) +8 other tests skip
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-1.html
* igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs@pipe-a-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][113] ([i915#6095]) +7 other tests skip
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs@pipe-a-edp-1.html
* igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc@pipe-b-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][114] ([i915#6095]) +59 other tests skip
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-16/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc@pipe-b-hdmi-a-4.html
* igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs@pipe-d-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][115] ([i915#10307] / [i915#6095]) +202 other tests skip
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs@pipe-d-hdmi-a-1.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs@pipe-d-hdmi-a-1:
- shard-tglu: NOTRUN -> [SKIP][116] ([i915#6095]) +3 other tests skip
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-tglu-5/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs@pipe-d-hdmi-a-1.html
* igt@kms_ccs@random-ccs-data-y-tiled-ccs@pipe-b-hdmi-a-1:
- shard-rkl: NOTRUN -> [SKIP][117] ([i915#6095]) +53 other tests skip
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-5/igt@kms_ccs@random-ccs-data-y-tiled-ccs@pipe-b-hdmi-a-1.html
* igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs-cc@pipe-c-hdmi-a-2:
- shard-glk: NOTRUN -> [SKIP][118] +202 other tests skip
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-glk1/igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs-cc@pipe-c-hdmi-a-2.html
* igt@kms_cdclk@mode-transition-all-outputs:
- shard-rkl: NOTRUN -> [SKIP][119] ([i915#3742])
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-1/igt@kms_cdclk@mode-transition-all-outputs.html
* igt@kms_chamelium_frames@dp-crc-fast:
- shard-rkl: NOTRUN -> [SKIP][120] ([i915#7828]) +7 other tests skip
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-3/igt@kms_chamelium_frames@dp-crc-fast.html
- shard-mtlp: NOTRUN -> [SKIP][121] ([i915#7828]) +1 other test skip
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@kms_chamelium_frames@dp-crc-fast.html
* igt@kms_chamelium_hpd@common-hpd-after-suspend:
- shard-tglu: NOTRUN -> [SKIP][122] ([i915#7828]) +1 other test skip
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-tglu-5/igt@kms_chamelium_hpd@common-hpd-after-suspend.html
* igt@kms_chamelium_hpd@dp-hpd-with-enabled-mode:
- shard-dg2: NOTRUN -> [SKIP][123] ([i915#7828]) +4 other tests skip
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_chamelium_hpd@dp-hpd-with-enabled-mode.html
* igt@kms_chamelium_hpd@vga-hpd:
- shard-dg1: NOTRUN -> [SKIP][124] ([i915#7828])
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-18/igt@kms_chamelium_hpd@vga-hpd.html
* igt@kms_content_protection@atomic:
- shard-rkl: NOTRUN -> [SKIP][125] ([i915#7118] / [i915#9424])
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-1/igt@kms_content_protection@atomic.html
* igt@kms_content_protection@atomic@pipe-a-dp-4:
- shard-dg2: NOTRUN -> [TIMEOUT][126] ([i915#7173]) +1 other test timeout
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-11/igt@kms_content_protection@atomic@pipe-a-dp-4.html
* igt@kms_content_protection@dp-mst-type-0:
- shard-rkl: NOTRUN -> [SKIP][127] ([i915#3116])
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-5/igt@kms_content_protection@dp-mst-type-0.html
- shard-dg1: NOTRUN -> [SKIP][128] ([i915#3299])
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-18/igt@kms_content_protection@dp-mst-type-0.html
* igt@kms_content_protection@lic-type-1:
- shard-dg2: NOTRUN -> [SKIP][129] ([i915#9424])
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-1/igt@kms_content_protection@lic-type-1.html
- shard-rkl: NOTRUN -> [SKIP][130] ([i915#9424])
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-3/igt@kms_content_protection@lic-type-1.html
* igt@kms_cursor_crc@cursor-rapid-movement-256x85:
- shard-mtlp: NOTRUN -> [SKIP][131] ([i915#8814])
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@kms_cursor_crc@cursor-rapid-movement-256x85.html
* igt@kms_cursor_crc@cursor-rapid-movement-32x10:
- shard-dg1: NOTRUN -> [SKIP][132] ([i915#3555]) +1 other test skip
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-18/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html
* igt@kms_cursor_crc@cursor-rapid-movement-max-size:
- shard-tglu: NOTRUN -> [SKIP][133] ([i915#3555])
[133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-tglu-5/igt@kms_cursor_crc@cursor-rapid-movement-max-size.html
* igt@kms_cursor_crc@cursor-sliding-32x10:
- shard-dg2: NOTRUN -> [SKIP][134] ([i915#3555]) +3 other tests skip
[134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-11/igt@kms_cursor_crc@cursor-sliding-32x10.html
* igt@kms_cursor_crc@cursor-sliding-512x512:
- shard-rkl: NOTRUN -> [SKIP][135] ([i915#11453]) +1 other test skip
[135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-5/igt@kms_cursor_crc@cursor-sliding-512x512.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size:
- shard-dg2: NOTRUN -> [SKIP][136] ([i915#4103] / [i915#4213])
[136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html
* igt@kms_cursor_legacy@cursora-vs-flipb-toggle:
- shard-dg2: NOTRUN -> [SKIP][137] ([i915#5354]) +21 other tests skip
[137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_cursor_legacy@cursora-vs-flipb-toggle.html
* igt@kms_display_modes@mst-extended-mode-negative:
- shard-dg1: NOTRUN -> [SKIP][138] ([i915#8588])
[138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-17/igt@kms_display_modes@mst-extended-mode-negative.html
* igt@kms_dp_aux_dev:
- shard-dg2: NOTRUN -> [SKIP][139] ([i915#1257])
[139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_dp_aux_dev.html
* igt@kms_draw_crc@draw-method-mmap-wc:
- shard-dg2: NOTRUN -> [SKIP][140] ([i915#8812])
[140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@kms_draw_crc@draw-method-mmap-wc.html
* igt@kms_dsc@dsc-basic:
- shard-rkl: NOTRUN -> [SKIP][141] ([i915#3555] / [i915#3840]) +1 other test skip
[141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-3/igt@kms_dsc@dsc-basic.html
- shard-mtlp: NOTRUN -> [SKIP][142] ([i915#3555] / [i915#3840] / [i915#9159])
[142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@kms_dsc@dsc-basic.html
* igt@kms_dsc@dsc-with-formats:
- shard-dg2: NOTRUN -> [SKIP][143] ([i915#3555] / [i915#3840]) +1 other test skip
[143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_dsc@dsc-with-formats.html
* igt@kms_feature_discovery@display-2x:
- shard-dg1: NOTRUN -> [SKIP][144] ([i915#1839])
[144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-17/igt@kms_feature_discovery@display-2x.html
* igt@kms_feature_discovery@display-3x:
- shard-tglu: NOTRUN -> [SKIP][145] ([i915#1839])
[145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-tglu-5/igt@kms_feature_discovery@display-3x.html
* igt@kms_feature_discovery@display-4x:
- shard-rkl: NOTRUN -> [SKIP][146] ([i915#1839])
[146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-5/igt@kms_feature_discovery@display-4x.html
* igt@kms_flip@2x-flip-vs-blocking-wf-vblank:
- shard-dg2: NOTRUN -> [SKIP][147] +10 other tests skip
[147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-11/igt@kms_flip@2x-flip-vs-blocking-wf-vblank.html
* igt@kms_flip@2x-flip-vs-dpms:
- shard-tglu: NOTRUN -> [SKIP][148] ([i915#3637]) +1 other test skip
[148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-tglu-5/igt@kms_flip@2x-flip-vs-dpms.html
* igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset:
- shard-mtlp: NOTRUN -> [SKIP][149] ([i915#3637])
[149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset.html
* igt@kms_flip@2x-plain-flip-ts-check-interruptible:
- shard-dg1: NOTRUN -> [SKIP][150] ([i915#9934]) +2 other tests skip
[150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-17/igt@kms_flip@2x-plain-flip-ts-check-interruptible.html
* igt@kms_flip@flip-vs-fences:
- shard-dg2: NOTRUN -> [SKIP][151] ([i915#8381])
[151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-1/igt@kms_flip@flip-vs-fences.html
* igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling@pipe-a-default-mode:
- shard-mtlp: NOTRUN -> [SKIP][152] ([i915#3555] / [i915#8810])
[152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-valid-mode:
- shard-dg2: NOTRUN -> [SKIP][153] ([i915#2672]) +4 other tests skip
[153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-2/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode:
- shard-rkl: NOTRUN -> [SKIP][154] ([i915#2672]) +3 other tests skip
[154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-5/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode.html
- shard-dg1: NOTRUN -> [SKIP][155] ([i915#2587] / [i915#2672])
[155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-18/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling@pipe-a-valid-mode:
- shard-tglu: NOTRUN -> [SKIP][156] ([i915#2587] / [i915#2672])
[156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-tglu-5/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-default-mode:
- shard-mtlp: NOTRUN -> [SKIP][157] ([i915#2672] / [i915#3555]) +2 other tests skip
[157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-default-mode.html
* igt@kms_force_connector_basic@prune-stale-modes:
- shard-mtlp: NOTRUN -> [SKIP][158] ([i915#5274])
[158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@kms_force_connector_basic@prune-stale-modes.html
* igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-render:
- shard-dg2: [PASS][159] -> [FAIL][160] ([i915#6880])
[159]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-2/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-render.html
[160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-2p-indfb-fliptrack-mmap-gtt:
- shard-mtlp: NOTRUN -> [SKIP][161] ([i915#8708]) +1 other test skip
[161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-2/igt@kms_frontbuffer_tracking@fbc-2p-indfb-fliptrack-mmap-gtt.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-cpu:
- shard-dg2: NOTRUN -> [SKIP][162] ([i915#3458]) +12 other tests skip
[162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-11/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-render:
- shard-dg1: NOTRUN -> [SKIP][163] ([i915#3458]) +6 other tests skip
[163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-17/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-gtt:
- shard-rkl: NOTRUN -> [SKIP][164] ([i915#3023]) +24 other tests skip
[164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-3/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-pgflip-blt:
- shard-dg1: NOTRUN -> [SKIP][165] +5 other tests skip
[165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-17/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-wc:
- shard-dg1: NOTRUN -> [SKIP][166] ([i915#8708]) +12 other tests skip
[166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-17/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-shrfb-fliptrack-mmap-gtt:
- shard-dg2: NOTRUN -> [SKIP][167] ([i915#8708]) +9 other tests skip
[167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-11/igt@kms_frontbuffer_tracking@fbcpsr-2p-shrfb-fliptrack-mmap-gtt.html
* igt@kms_frontbuffer_tracking@pipe-fbc-rte:
- shard-dg1: NOTRUN -> [SKIP][168] ([i915#9766])
[168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-17/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt:
- shard-rkl: NOTRUN -> [SKIP][169] ([i915#1825]) +30 other tests skip
[169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-1/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-blt:
- shard-mtlp: NOTRUN -> [SKIP][170] ([i915#1825]) +9 other tests skip
[170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-mmap-wc:
- shard-tglu: NOTRUN -> [SKIP][171] +19 other tests skip
[171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-tglu-5/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-mmap-wc.html
* igt@kms_hdr@static-swap:
- shard-mtlp: NOTRUN -> [SKIP][172] ([i915#3555] / [i915#8228])
[172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@kms_hdr@static-swap.html
- shard-rkl: NOTRUN -> [SKIP][173] ([i915#3555] / [i915#8228])
[173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-3/igt@kms_hdr@static-swap.html
* igt@kms_hdr@static-toggle-suspend:
- shard-dg2: NOTRUN -> [SKIP][174] ([i915#3555] / [i915#8228])
[174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_hdr@static-toggle-suspend.html
* igt@kms_plane_alpha_blend@alpha-basic@pipe-c-hdmi-a-1:
- shard-glk: NOTRUN -> [FAIL][175] ([i915#7862]) +1 other test fail
[175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-glk1/igt@kms_plane_alpha_blend@alpha-basic@pipe-c-hdmi-a-1.html
* igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-hdmi-a-1:
- shard-glk: NOTRUN -> [FAIL][176] ([i915#10647]) +1 other test fail
[176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-glk1/igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-hdmi-a-1.html
* igt@kms_plane_multiple@tiling-yf:
- shard-rkl: NOTRUN -> [SKIP][177] ([i915#3555]) +3 other tests skip
[177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-3/igt@kms_plane_multiple@tiling-yf.html
* igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-a-dp-4:
- shard-dg2: NOTRUN -> [SKIP][178] ([i915#9423]) +7 other tests skip
[178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-11/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-a-dp-4.html
* igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-a-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][179] ([i915#9423]) +15 other tests skip
[179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-15/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-a-hdmi-a-4.html
* igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-a-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][180] ([i915#9423]) +7 other tests skip
[180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-3/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-a-hdmi-a-2.html
* igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-c-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][181] ([i915#5176] / [i915#9423]) +3 other tests skip
[181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-16/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-c-hdmi-a-4.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-b-hdmi-a-1:
- shard-tglu: NOTRUN -> [SKIP][182] ([i915#5235]) +3 other tests skip
[182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-tglu-5/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-b-hdmi-a-1.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-c-hdmi-a-3:
- shard-dg1: NOTRUN -> [SKIP][183] ([i915#5235]) +3 other tests skip
[183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-13/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-c-hdmi-a-3.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-a-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][184] ([i915#5235]) +2 other tests skip
[184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-2/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-a-edp-1.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-d-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][185] ([i915#3555] / [i915#5235])
[185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-2/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-d-edp-1.html
* igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-a-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][186] ([i915#5235]) +3 other tests skip
[186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-6/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-a-hdmi-a-2.html
* igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-a-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][187] ([i915#5235] / [i915#9423]) +23 other tests skip
[187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-a-hdmi-a-3.html
* igt@kms_pm_backlight@fade-with-suspend:
- shard-rkl: NOTRUN -> [SKIP][188] ([i915#5354])
[188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-1/igt@kms_pm_backlight@fade-with-suspend.html
* igt@kms_pm_dc@dc3co-vpb-simulation:
- shard-dg2: NOTRUN -> [SKIP][189] ([i915#9685])
[189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-1/igt@kms_pm_dc@dc3co-vpb-simulation.html
- shard-rkl: NOTRUN -> [SKIP][190] ([i915#9685])
[190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-3/igt@kms_pm_dc@dc3co-vpb-simulation.html
* igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
- shard-rkl: NOTRUN -> [SKIP][191] ([i915#9519]) +1 other test skip
[191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-5/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
* igt@kms_pm_rpm@dpms-non-lpsp:
- shard-mtlp: NOTRUN -> [SKIP][192] ([i915#9519])
[192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@kms_pm_rpm@dpms-non-lpsp.html
* igt@kms_pm_rpm@modeset-non-lpsp-stress:
- shard-dg2: [PASS][193] -> [SKIP][194] ([i915#9519]) +1 other test skip
[193]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-5/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
[194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
- shard-tglu: NOTRUN -> [SKIP][195] ([i915#9519])
[195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-tglu-5/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
* igt@kms_psr2_sf@cursor-plane-move-continuous-sf:
- shard-dg1: NOTRUN -> [SKIP][196] ([i915#11520])
[196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-17/igt@kms_psr2_sf@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][197] ([i915#9808]) +1 other test skip
[197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-8/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-fully-sf:
- shard-rkl: NOTRUN -> [SKIP][198] ([i915#11520]) +5 other tests skip
[198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-1/igt@kms_psr2_sf@overlay-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@overlay-plane-update-continuous-sf:
- shard-dg2: NOTRUN -> [SKIP][199] ([i915#11520]) +2 other tests skip
[199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-1/igt@kms_psr2_sf@overlay-plane-update-continuous-sf.html
* igt@kms_psr@fbc-pr-sprite-blt:
- shard-dg2: NOTRUN -> [SKIP][200] ([i915#1072] / [i915#9673] / [i915#9732]) +5 other tests skip
[200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-11/igt@kms_psr@fbc-pr-sprite-blt.html
* igt@kms_psr@fbc-pr-sprite-render:
- shard-dg1: NOTRUN -> [SKIP][201] ([i915#1072] / [i915#9732]) +7 other tests skip
[201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-18/igt@kms_psr@fbc-pr-sprite-render.html
* igt@kms_psr@fbc-psr-cursor-mmap-cpu:
- shard-dg2: NOTRUN -> [SKIP][202] ([i915#1072] / [i915#9732]) +8 other tests skip
[202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_psr@fbc-psr-cursor-mmap-cpu.html
* igt@kms_psr@fbc-psr-primary-page-flip@edp-1:
- shard-mtlp: NOTRUN -> [SKIP][203] ([i915#9688]) +4 other tests skip
[203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@kms_psr@fbc-psr-primary-page-flip@edp-1.html
* igt@kms_psr@psr-primary-page-flip:
- shard-tglu: NOTRUN -> [SKIP][204] ([i915#9732]) +5 other tests skip
[204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-tglu-5/igt@kms_psr@psr-primary-page-flip.html
* igt@kms_psr@psr-sprite-plane-move:
- shard-rkl: NOTRUN -> [SKIP][205] ([i915#1072] / [i915#9732]) +19 other tests skip
[205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-3/igt@kms_psr@psr-sprite-plane-move.html
* igt@kms_psr@psr2-primary-mmap-gtt@edp-1:
- shard-mtlp: NOTRUN -> [SKIP][206] ([i915#4077] / [i915#9688])
[206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-5/igt@kms_psr@psr2-primary-mmap-gtt@edp-1.html
* igt@kms_rotation_crc@primary-4-tiled-reflect-x-0:
- shard-dg1: NOTRUN -> [SKIP][207] ([i915#5289])
[207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-17/igt@kms_rotation_crc@primary-4-tiled-reflect-x-0.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
- shard-rkl: NOTRUN -> [SKIP][208] ([i915#5289])
[208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270:
- shard-dg2: NOTRUN -> [SKIP][209] ([i915#11131] / [i915#5190]) +1 other test skip
[209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html
* igt@kms_setmode@clone-exclusive-crtc:
- shard-mtlp: NOTRUN -> [SKIP][210] ([i915#3555] / [i915#8809])
[210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-2/igt@kms_setmode@clone-exclusive-crtc.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-tglu: NOTRUN -> [SKIP][211] ([i915#8623])
[211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-tglu-5/igt@kms_tiled_display@basic-test-pattern.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1:
- shard-snb: [PASS][212] -> [FAIL][213] ([i915#9196])
[212]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-snb7/igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1.html
[213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-snb5/igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-1:
- shard-tglu: [PASS][214] -> [FAIL][215] ([i915#9196]) +1 other test fail
[214]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-tglu-9/igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-1.html
[215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-tglu-8/igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-1.html
* igt@kms_vrr@flip-basic-fastset:
- shard-dg2: NOTRUN -> [SKIP][216] ([i915#9906])
[216]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_vrr@flip-basic-fastset.html
* igt@kms_writeback@writeback-invalid-parameters:
- shard-glk: NOTRUN -> [SKIP][217] ([i915#2437])
[217]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-glk7/igt@kms_writeback@writeback-invalid-parameters.html
- shard-rkl: NOTRUN -> [SKIP][218] ([i915#2437])
[218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-1/igt@kms_writeback@writeback-invalid-parameters.html
* igt@perf@blocking@0-rcs0:
- shard-dg1: NOTRUN -> [FAIL][219] ([i915#10538])
[219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-17/igt@perf@blocking@0-rcs0.html
* igt@perf@unprivileged-single-ctx-counters:
- shard-rkl: NOTRUN -> [SKIP][220] ([i915#2433])
[220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-3/igt@perf@unprivileged-single-ctx-counters.html
* igt@perf_pmu@busy-double-start@rcs0:
- shard-mtlp: [PASS][221] -> [FAIL][222] ([i915#4349])
[221]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-mtlp-5/igt@perf_pmu@busy-double-start@rcs0.html
[222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-2/igt@perf_pmu@busy-double-start@rcs0.html
* igt@perf_pmu@cpu-hotplug:
- shard-dg2: NOTRUN -> [SKIP][223] ([i915#8850])
[223]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@perf_pmu@cpu-hotplug.html
* igt@perf_pmu@rc6-suspend:
- shard-rkl: [PASS][224] -> [FAIL][225] ([i915#11279])
[224]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-rkl-2/igt@perf_pmu@rc6-suspend.html
[225]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-6/igt@perf_pmu@rc6-suspend.html
* igt@perf_pmu@rc6@other-idle-gt0:
- shard-dg2: NOTRUN -> [SKIP][226] ([i915#8516])
[226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@perf_pmu@rc6@other-idle-gt0.html
* igt@prime_vgem@basic-fence-read:
- shard-rkl: NOTRUN -> [SKIP][227] ([i915#3291] / [i915#3708]) +1 other test skip
[227]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-1/igt@prime_vgem@basic-fence-read.html
* igt@prime_vgem@coherency-gtt:
- shard-dg2: NOTRUN -> [SKIP][228] ([i915#3708] / [i915#4077])
[228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-1/igt@prime_vgem@coherency-gtt.html
- shard-rkl: NOTRUN -> [SKIP][229] ([i915#3708])
[229]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-3/igt@prime_vgem@coherency-gtt.html
* igt@sriov_basic@enable-vfs-bind-unbind-each:
- shard-dg2: NOTRUN -> [SKIP][230] ([i915#9917])
[230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@sriov_basic@enable-vfs-bind-unbind-each.html
* igt@tools_test@sysfs_l3_parity:
- shard-mtlp: NOTRUN -> [SKIP][231] ([i915#4818])
[231]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-8/igt@tools_test@sysfs_l3_parity.html
#### Possible fixes ####
* igt@fbdev@unaligned-read:
- shard-dg2: [SKIP][232] ([i915#2582]) -> [PASS][233]
[232]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@fbdev@unaligned-read.html
[233]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@fbdev@unaligned-read.html
* igt@gem_exec_fair@basic-pace-share@rcs0:
- shard-glk: [FAIL][234] ([i915#2842]) -> [PASS][235]
[234]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-glk2/igt@gem_exec_fair@basic-pace-share@rcs0.html
[235]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-glk3/igt@gem_exec_fair@basic-pace-share@rcs0.html
* igt@gem_exec_fair@basic-pace@rcs0:
- shard-rkl: [FAIL][236] ([i915#2842]) -> [PASS][237]
[236]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-rkl-6/igt@gem_exec_fair@basic-pace@rcs0.html
[237]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-6/igt@gem_exec_fair@basic-pace@rcs0.html
* igt@gem_exec_fence@syncobj-timeline-unused-fence:
- shard-dg2: [SKIP][238] ([i915#2575]) -> [PASS][239] +154 other tests pass
[238]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_exec_fence@syncobj-timeline-unused-fence.html
[239]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@gem_exec_fence@syncobj-timeline-unused-fence.html
* igt@gem_lmem_evict@dontneed-evict-race:
- shard-dg2: [SKIP][240] ([i915#9643]) -> [PASS][241]
[240]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_lmem_evict@dontneed-evict-race.html
[241]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@gem_lmem_evict@dontneed-evict-race.html
* igt@gem_lmem_swapping@verify@lmem0:
- shard-dg1: [DMESG-WARN][242] ([i915#1982] / [i915#4391] / [i915#4423]) -> [PASS][243]
[242]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg1-13/igt@gem_lmem_swapping@verify@lmem0.html
[243]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-15/igt@gem_lmem_swapping@verify@lmem0.html
* igt@i915_pm_freq_api@freq-suspend@gt0:
- shard-dg2: [INCOMPLETE][244] ([i915#9407]) -> [PASS][245]
[244]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-6/igt@i915_pm_freq_api@freq-suspend@gt0.html
[245]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@i915_pm_freq_api@freq-suspend@gt0.html
* igt@i915_selftest@perf@engine_cs:
- shard-dg2: [FAIL][246] -> [PASS][247] +4 other tests pass
[246]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@i915_selftest@perf@engine_cs.html
[247]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-2/igt@i915_selftest@perf@engine_cs.html
* igt@i915_suspend@basic-s2idle-without-i915:
- shard-dg2: [WARN][248] -> [PASS][249]
[248]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@i915_suspend@basic-s2idle-without-i915.html
[249]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@i915_suspend@basic-s2idle-without-i915.html
* igt@kms_addfb_basic@addfb25-yf-tiled-legacy:
- shard-dg2: [SKIP][250] ([i915#2575] / [i915#5190]) -> [PASS][251]
[250]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_addfb_basic@addfb25-yf-tiled-legacy.html
[251]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-7/igt@kms_addfb_basic@addfb25-yf-tiled-legacy.html
* igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-1:
- shard-snb: [FAIL][252] ([i915#5956]) -> [PASS][253]
[252]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-snb2/igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-1.html
[253]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-snb5/igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-1.html
* igt@kms_big_fb@4-tiled-8bpp-rotate-180:
- shard-mtlp: [ABORT][254] ([i915#10354]) -> [PASS][255]
[254]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-mtlp-3/igt@kms_big_fb@4-tiled-8bpp-rotate-180.html
[255]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-mtlp-8/igt@kms_big_fb@4-tiled-8bpp-rotate-180.html
* igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180:
- shard-dg1: [DMESG-WARN][256] ([i915#4391] / [i915#4423]) -> [PASS][257] +1 other test pass
[256]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg1-13/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180.html
[257]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-15/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180.html
* igt@kms_cursor_legacy@torture-move@pipe-a:
- shard-tglu: [DMESG-WARN][258] ([i915#10166] / [i915#1982]) -> [PASS][259]
[258]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-tglu-3/igt@kms_cursor_legacy@torture-move@pipe-a.html
[259]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-tglu-8/igt@kms_cursor_legacy@torture-move@pipe-a.html
* igt@kms_pm_rpm@modeset-lpsp:
- shard-rkl: [SKIP][260] ([i915#9519]) -> [PASS][261] +1 other test pass
[260]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-rkl-3/igt@kms_pm_rpm@modeset-lpsp.html
[261]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-rkl-4/igt@kms_pm_rpm@modeset-lpsp.html
* igt@kms_sysfs_edid_timing:
- shard-dg2: [FAIL][262] ([IGT#2]) -> [PASS][263]
[262]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-4/igt@kms_sysfs_edid_timing.html
[263]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-11/igt@kms_sysfs_edid_timing.html
* igt@perf@i915-ref-count:
- shard-dg2: [SKIP][264] ([i915#11692]) -> [PASS][265] +1 other test pass
[264]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@perf@i915-ref-count.html
[265]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-2/igt@perf@i915-ref-count.html
* igt@perf@invalid-remove-userspace-config:
- shard-dg2: [SKIP][266] -> [PASS][267] +45 other tests pass
[266]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@perf@invalid-remove-userspace-config.html
[267]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@perf@invalid-remove-userspace-config.html
#### Warnings ####
* igt@device_reset@unbind-cold-reset-rebind:
- shard-dg2: [SKIP][268] -> [SKIP][269] ([i915#11078])
[268]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@device_reset@unbind-cold-reset-rebind.html
[269]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-2/igt@device_reset@unbind-cold-reset-rebind.html
* igt@gem_ctx_persistence@heartbeat-hostile:
- shard-dg2: [SKIP][270] ([i915#2575]) -> [SKIP][271] ([i915#8555])
[270]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_ctx_persistence@heartbeat-hostile.html
[271]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@gem_ctx_persistence@heartbeat-hostile.html
* igt@gem_exec_balancer@bonded-false-hang:
- shard-dg2: [SKIP][272] ([i915#2575]) -> [SKIP][273] ([i915#4812]) +3 other tests skip
[272]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_exec_balancer@bonded-false-hang.html
[273]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-7/igt@gem_exec_balancer@bonded-false-hang.html
* igt@gem_exec_balancer@bonded-sync:
- shard-dg2: [SKIP][274] ([i915#2575]) -> [SKIP][275] ([i915#4771])
[274]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_exec_balancer@bonded-sync.html
[275]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@gem_exec_balancer@bonded-sync.html
* igt@gem_exec_fair@basic-pace-share:
- shard-dg2: [SKIP][276] ([i915#2575]) -> [SKIP][277] ([i915#3539] / [i915#4852]) +6 other tests skip
[276]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_exec_fair@basic-pace-share.html
[277]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@gem_exec_fair@basic-pace-share.html
* igt@gem_exec_flush@basic-uc-set-default:
- shard-dg2: [SKIP][278] ([i915#2575]) -> [SKIP][279] ([i915#3539])
[278]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_exec_flush@basic-uc-set-default.html
[279]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-5/igt@gem_exec_flush@basic-uc-set-default.html
* igt@gem_exec_params@rsvd2-dirt:
- shard-dg2: [SKIP][280] ([i915#2575]) -> [SKIP][281] ([i915#5107])
[280]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_exec_params@rsvd2-dirt.html
[281]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-2/igt@gem_exec_params@rsvd2-dirt.html
* igt@gem_exec_reloc@basic-gtt-cpu-active:
- shard-dg2: [SKIP][282] ([i915#2575]) -> [SKIP][283] ([i915#3281]) +10 other tests skip
[282]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_exec_reloc@basic-gtt-cpu-active.html
[283]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-7/igt@gem_exec_reloc@basic-gtt-cpu-active.html
* igt@gem_exec_schedule@reorder-wide:
- shard-dg2: [SKIP][284] ([i915#2575]) -> [SKIP][285] ([i915#4537] / [i915#4812]) +1 other test skip
[284]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_exec_schedule@reorder-wide.html
[285]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-7/igt@gem_exec_schedule@reorder-wide.html
* igt@gem_fence_thrash@bo-copy:
- shard-dg2: [SKIP][286] ([i915#2575]) -> [SKIP][287] ([i915#4860])
[286]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_fence_thrash@bo-copy.html
[287]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@gem_fence_thrash@bo-copy.html
* igt@gem_media_vme:
- shard-dg2: [SKIP][288] ([i915#2575]) -> [SKIP][289] ([i915#284])
[288]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_media_vme.html
[289]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-5/igt@gem_media_vme.html
* igt@gem_mmap_wc@write-prefaulted:
- shard-dg2: [SKIP][290] ([i915#2575]) -> [SKIP][291] ([i915#4083]) +4 other tests skip
[290]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_mmap_wc@write-prefaulted.html
[291]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-2/igt@gem_mmap_wc@write-prefaulted.html
* igt@gem_pread@self:
- shard-dg2: [SKIP][292] ([i915#2575]) -> [SKIP][293] ([i915#3282]) +4 other tests skip
[292]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_pread@self.html
[293]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@gem_pread@self.html
* igt@gem_pxp@regular-baseline-src-copy-readible:
- shard-dg2: [SKIP][294] ([i915#2575]) -> [SKIP][295] ([i915#4270]) +3 other tests skip
[294]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_pxp@regular-baseline-src-copy-readible.html
[295]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-2/igt@gem_pxp@regular-baseline-src-copy-readible.html
* igt@gem_render_copy@y-tiled-ccs-to-linear:
- shard-dg2: [SKIP][296] ([i915#2575] / [i915#5190]) -> [SKIP][297] ([i915#5190] / [i915#8428]) +5 other tests skip
[296]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_render_copy@y-tiled-ccs-to-linear.html
[297]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@gem_render_copy@y-tiled-ccs-to-linear.html
* igt@gem_render_tiled_blits@basic:
- shard-dg2: [SKIP][298] ([i915#2575]) -> [SKIP][299] ([i915#4079])
[298]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_render_tiled_blits@basic.html
[299]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-5/igt@gem_render_tiled_blits@basic.html
* igt@gem_tiled_partial_pwrite_pread@writes:
- shard-dg2: [SKIP][300] ([i915#2575]) -> [SKIP][301] ([i915#4077]) +12 other tests skip
[300]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_tiled_partial_pwrite_pread@writes.html
[301]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-5/igt@gem_tiled_partial_pwrite_pread@writes.html
* igt@gem_userptr_blits@coherency-unsync:
- shard-dg2: [SKIP][302] ([i915#2575]) -> [SKIP][303] ([i915#3297]) +1 other test skip
[302]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_userptr_blits@coherency-unsync.html
[303]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@gem_userptr_blits@coherency-unsync.html
* igt@gem_userptr_blits@forbidden-operations:
- shard-dg2: [SKIP][304] ([i915#2575]) -> [SKIP][305] ([i915#3282] / [i915#3297])
[304]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_userptr_blits@forbidden-operations.html
[305]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-2/igt@gem_userptr_blits@forbidden-operations.html
* igt@gem_userptr_blits@sd-probe:
- shard-dg2: [SKIP][306] ([i915#2575]) -> [SKIP][307] ([i915#3297] / [i915#4958])
[306]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gem_userptr_blits@sd-probe.html
[307]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-7/igt@gem_userptr_blits@sd-probe.html
* igt@gen9_exec_parse@bb-start-far:
- shard-dg2: [SKIP][308] ([i915#2575]) -> [SKIP][309] ([i915#2856]) +2 other tests skip
[308]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@gen9_exec_parse@bb-start-far.html
[309]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-5/igt@gen9_exec_parse@bb-start-far.html
* igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling:
- shard-dg2: [SKIP][310] ([i915#2575]) -> [SKIP][311] ([i915#4212])
[310]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling.html
[311]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-2/igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling.html
* igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels:
- shard-dg2: [SKIP][312] ([i915#2575]) -> [SKIP][313] ([i915#1769] / [i915#3555]) +1 other test skip
[312]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html
[313]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-7/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html
* igt@kms_big_fb@y-tiled-8bpp-rotate-180:
- shard-dg2: [SKIP][314] ([i915#5190]) -> [SKIP][315] ([i915#4538] / [i915#5190]) +11 other tests skip
[314]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_big_fb@y-tiled-8bpp-rotate-180.html
[315]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-5/igt@kms_big_fb@y-tiled-8bpp-rotate-180.html
* igt@kms_big_joiner@invalid-modeset-force-joiner:
- shard-dg2: [SKIP][316] -> [SKIP][317] ([i915#10656])
[316]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_big_joiner@invalid-modeset-force-joiner.html
[317]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@kms_big_joiner@invalid-modeset-force-joiner.html
* igt@kms_chamelium_frames@hdmi-crc-multiple:
- shard-dg2: [SKIP][318] ([i915#2575]) -> [SKIP][319] ([i915#7828]) +8 other tests skip
[318]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_chamelium_frames@hdmi-crc-multiple.html
[319]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_chamelium_frames@hdmi-crc-multiple.html
* igt@kms_content_protection@mei-interface:
- shard-dg2: [SKIP][320] ([i915#2575]) -> [SKIP][321] ([i915#9424]) +1 other test skip
[320]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_content_protection@mei-interface.html
[321]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-5/igt@kms_content_protection@mei-interface.html
* igt@kms_content_protection@srm:
- shard-dg2: [SKIP][322] ([i915#2575]) -> [SKIP][323] ([i915#7118])
[322]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_content_protection@srm.html
[323]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-2/igt@kms_content_protection@srm.html
* igt@kms_cursor_crc@cursor-random-512x512:
- shard-dg2: [SKIP][324] ([i915#2575]) -> [SKIP][325] ([i915#11453]) +1 other test skip
[324]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_cursor_crc@cursor-random-512x512.html
[325]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-5/igt@kms_cursor_crc@cursor-random-512x512.html
* igt@kms_cursor_legacy@cursorb-vs-flipb-atomic:
- shard-dg2: [SKIP][326] ([i915#2575]) -> [SKIP][327] ([i915#5354]) +3 other tests skip
[326]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic.html
[327]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-2/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic.html
* igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot:
- shard-dg2: [SKIP][328] ([i915#2575]) -> [SKIP][329] ([i915#9067])
[328]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html
[329]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-7/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
- shard-dg2: [SKIP][330] ([i915#2575]) -> [SKIP][331] ([i915#4103] / [i915#4213]) +2 other tests skip
[330]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
[331]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-2/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
* igt@kms_display_modes@extended-mode-basic:
- shard-dg2: [SKIP][332] ([i915#2575]) -> [SKIP][333] ([i915#3555]) +6 other tests skip
[332]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_display_modes@extended-mode-basic.html
[333]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@kms_display_modes@extended-mode-basic.html
* igt@kms_feature_discovery@psr2:
- shard-dg2: [SKIP][334] ([i915#2575]) -> [SKIP][335] ([i915#658])
[334]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_feature_discovery@psr2.html
[335]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_feature_discovery@psr2.html
* igt@kms_flip@2x-modeset-vs-vblank-race:
- shard-dg2: [SKIP][336] ([i915#2575]) -> [SKIP][337] +19 other tests skip
[336]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_flip@2x-modeset-vs-vblank-race.html
[337]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_flip@2x-modeset-vs-vblank-race.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-gtt:
- shard-dg1: [SKIP][338] ([i915#4423] / [i915#8708]) -> [SKIP][339] ([i915#8708])
[338]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg1-13/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-gtt.html
[339]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-15/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt:
- shard-dg2: [SKIP][340] -> [SKIP][341] ([i915#5354]) +33 other tests skip
[340]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt.html
[341]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbc-tiling-y:
- shard-dg2: [SKIP][342] -> [SKIP][343] ([i915#10055])
[342]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_frontbuffer_tracking@fbc-tiling-y.html
[343]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-7/igt@kms_frontbuffer_tracking@fbc-tiling-y.html
* igt@kms_frontbuffer_tracking@fbcpsr-suspend:
- shard-dg2: [SKIP][344] ([i915#10433] / [i915#3458]) -> [SKIP][345] ([i915#3458]) +3 other tests skip
[344]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-suspend.html
[345]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-11/igt@kms_frontbuffer_tracking@fbcpsr-suspend.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move:
- shard-dg2: [SKIP][346] -> [SKIP][347] ([i915#3458]) +17 other tests skip
[346]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move.html
[347]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-wc:
- shard-dg2: [SKIP][348] -> [SKIP][349] ([i915#8708]) +25 other tests skip
[348]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-wc.html
[349]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-2/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_getfb@getfb-reject-ccs:
- shard-dg2: [SKIP][350] ([i915#2575]) -> [SKIP][351] ([i915#6118])
[350]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_getfb@getfb-reject-ccs.html
[351]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-5/igt@kms_getfb@getfb-reject-ccs.html
* igt@kms_hdr@invalid-metadata-sizes:
- shard-dg2: [SKIP][352] ([i915#2575]) -> [SKIP][353] ([i915#3555] / [i915#8228]) +1 other test skip
[352]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_hdr@invalid-metadata-sizes.html
[353]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_hdr@invalid-metadata-sizes.html
* igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
- shard-dg2: [SKIP][354] ([i915#2575]) -> [SKIP][355] ([i915#4816])
[354]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
[355]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
* igt@kms_plane_multiple@tiling-y:
- shard-dg2: [SKIP][356] ([i915#2575]) -> [SKIP][357] ([i915#8806])
[356]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_plane_multiple@tiling-y.html
[357]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-7/igt@kms_plane_multiple@tiling-y.html
* igt@kms_plane_scaling@intel-max-src-size:
- shard-dg2: [SKIP][358] ([i915#2575] / [i915#9423]) -> [SKIP][359] ([i915#6953] / [i915#9423])
[358]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_plane_scaling@intel-max-src-size.html
[359]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-5/igt@kms_plane_scaling@intel-max-src-size.html
* igt@kms_pm_lpsp@screens-disabled:
- shard-dg2: [SKIP][360] -> [SKIP][361] ([i915#8430])
[360]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_pm_lpsp@screens-disabled.html
[361]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_pm_lpsp@screens-disabled.html
* igt@kms_pm_rpm@dpms-lpsp:
- shard-dg2: [SKIP][362] -> [SKIP][363] ([i915#9519])
[362]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_pm_rpm@dpms-lpsp.html
[363]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-2/igt@kms_pm_rpm@dpms-lpsp.html
* igt@kms_pm_rpm@fences:
- shard-dg2: [SKIP][364] -> [SKIP][365] ([i915#4077])
[364]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_pm_rpm@fences.html
[365]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-7/igt@kms_pm_rpm@fences.html
* igt@kms_pm_rpm@pc8-residency:
- shard-dg2: [SKIP][366] ([i915#11717]) -> [SKIP][367]
[366]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_pm_rpm@pc8-residency.html
[367]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_pm_rpm@pc8-residency.html
* igt@kms_prime@basic-crc-vgem:
- shard-dg2: [SKIP][368] -> [SKIP][369] ([i915#6524] / [i915#6805])
[368]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_prime@basic-crc-vgem.html
[369]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-7/igt@kms_prime@basic-crc-vgem.html
* igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-sf:
- shard-dg2: [SKIP][370] -> [SKIP][371] ([i915#11520]) +4 other tests skip
[370]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-sf.html
[371]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-sf.html
* igt@kms_psr@fbc-psr-primary-mmap-gtt:
- shard-dg2: [SKIP][372] ([i915#1072] / [i915#9732]) -> [SKIP][373] ([i915#1072] / [i915#9673] / [i915#9732]) +13 other tests skip
[372]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-10/igt@kms_psr@fbc-psr-primary-mmap-gtt.html
[373]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-11/igt@kms_psr@fbc-psr-primary-mmap-gtt.html
* igt@kms_psr@psr-primary-mmap-cpu:
- shard-dg2: [SKIP][374] -> [SKIP][375] ([i915#1072] / [i915#9732]) +26 other tests skip
[374]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_psr@psr-primary-mmap-cpu.html
[375]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-5/igt@kms_psr@psr-primary-mmap-cpu.html
* igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
- shard-dg2: [SKIP][376] ([i915#2575] / [i915#5190]) -> [SKIP][377] ([i915#11131] / [i915#5190])
[376]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
[377]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
* igt@kms_rotation_crc@sprite-rotation-270:
- shard-dg2: [SKIP][378] ([i915#2575]) -> [SKIP][379] ([i915#11131])
[378]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_rotation_crc@sprite-rotation-270.html
[379]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-7/igt@kms_rotation_crc@sprite-rotation-270.html
* igt@kms_scaling_modes@scaling-mode-full:
- shard-dg1: [SKIP][380] ([i915#3555] / [i915#4423]) -> [SKIP][381] ([i915#3555])
[380]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg1-13/igt@kms_scaling_modes@scaling-mode-full.html
[381]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg1-15/igt@kms_scaling_modes@scaling-mode-full.html
* igt@kms_vrr@seamless-rr-switch-vrr:
- shard-dg2: [SKIP][382] ([i915#2575]) -> [SKIP][383] ([i915#9906]) +2 other tests skip
[382]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_vrr@seamless-rr-switch-vrr.html
[383]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@kms_vrr@seamless-rr-switch-vrr.html
* igt@kms_writeback@writeback-fb-id-xrgb2101010:
- shard-dg2: [SKIP][384] ([i915#2575]) -> [SKIP][385] ([i915#2437] / [i915#9412])
[384]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@kms_writeback@writeback-fb-id-xrgb2101010.html
[385]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-5/igt@kms_writeback@writeback-fb-id-xrgb2101010.html
* igt@perf@global-sseu-config:
- shard-dg2: [SKIP][386] -> [SKIP][387] ([i915#7387])
[386]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@perf@global-sseu-config.html
[387]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-7/igt@perf@global-sseu-config.html
* igt@prime_vgem@basic-fence-mmap:
- shard-dg2: [SKIP][388] ([i915#2575]) -> [SKIP][389] ([i915#3708] / [i915#4077])
[388]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@prime_vgem@basic-fence-mmap.html
[389]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@prime_vgem@basic-fence-mmap.html
* igt@prime_vgem@fence-write-hang:
- shard-dg2: [SKIP][390] ([i915#2575]) -> [SKIP][391] ([i915#3708])
[390]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@prime_vgem@fence-write-hang.html
[391]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-5/igt@prime_vgem@fence-write-hang.html
* igt@syncobj_timeline@invalid-wait-zero-handles:
- shard-dg2: [SKIP][392] ([i915#2575]) -> [FAIL][393] ([i915#9781]) +1 other test fail
[392]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@syncobj_timeline@invalid-wait-zero-handles.html
[393]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-6/igt@syncobj_timeline@invalid-wait-zero-handles.html
* igt@tools_test@sysfs_l3_parity:
- shard-dg2: [SKIP][394] ([i915#2575] / [i915#4818]) -> [SKIP][395] ([i915#4818])
[394]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15089/shard-dg2-11/igt@tools_test@sysfs_l3_parity.html
[395]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/shard-dg2-10/igt@tools_test@sysfs_l3_parity.html
[IGT#2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/2
[i915#10031]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10031
[i915#10055]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10055
[i915#10131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10131
[i915#10166]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10166
[i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
[i915#10354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10354
[i915#10378]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10378
[i915#10386]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10386
[i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
[i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
[i915#10538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10538
[i915#10647]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10647
[i915#10656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10656
[i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
[i915#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078
[i915#11131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11131
[i915#11279]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11279
[i915#11453]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11453
[i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
[i915#11692]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11692
[i915#11717]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11717
[i915#1257]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1257
[i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
[i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
[i915#1839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1839
[i915#1982]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1982
[i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
[i915#2433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2433
[i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437
[i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
[i915#2575]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2575
[i915#2582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2582
[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#284]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/284
[i915#2842]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2842
[i915#2846]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2846
[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#3323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3323
[i915#3359]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3359
[i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
[i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539
[i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
[i915#3591]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3591
[i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
[i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
[i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
[i915#3742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3742
[i915#3826]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3826
[i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
[i915#4036]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4036
[i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
[i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
[i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
[i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
[i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
[i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
[i915#4235]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4235
[i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
[i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349
[i915#4391]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4391
[i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423
[i915#4473]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4473
[i915#4537]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4537
[i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
[i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
[i915#4771]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4771
[i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812
[i915#4816]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4816
[i915#4818]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4818
[i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852
[i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860
[i915#4958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4958
[i915#5107]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5107
[i915#5176]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5176
[i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
[i915#5235]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5235
[i915#5274]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5274
[i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
[i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289
[i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
[i915#5493]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5493
[i915#5784]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5784
[i915#5882]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5882
[i915#5889]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5889
[i915#5956]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5956
[i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
[i915#6118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6118
[i915#6268]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6268
[i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
[i915#658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/658
[i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
[i915#6805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6805
[i915#6880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6880
[i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953
[i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118
[i915#7173]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7173
[i915#7297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7297
[i915#7387]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7387
[i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
[i915#7742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7742
[i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
[i915#7862]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7862
[i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
[i915#8381]: https://gitlab.fr
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133800v6/index.html
[-- Attachment #2: Type: text/html, Size: 123775 bytes --]
^ permalink raw reply [flat|nested] 32+ messages in thread
* RE: [PATCH 01/12] drm/i915/display: Modify debugfs for joiner to force n pipes
2024-07-18 8:17 ` [PATCH 01/12] drm/i915/display: Modify debugfs for joiner to force n pipes Ankit Nautiyal
@ 2024-07-31 4:21 ` Kandpal, Suraj
0 siblings, 0 replies; 32+ messages in thread
From: Kandpal, Suraj @ 2024-07-31 4:21 UTC (permalink / raw)
To: Nautiyal, Ankit K, intel-gfx@lists.freedesktop.org
Cc: Lisovskiy, Stanislav, Saarinen, Jani,
ville.syrjala@linux.intel.com
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Ankit
> Nautiyal
> Sent: Thursday, July 18, 2024 1:48 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: Lisovskiy, Stanislav <stanislav.lisovskiy@intel.com>; Saarinen, Jani
> <jani.saarinen@intel.com>; ville.syrjala@linux.intel.com
> Subject: [PATCH 01/12] drm/i915/display: Modify debugfs for joiner to force n
> pipes
>
> 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.
> This will help in case of ultra joiner where 4 pipes are joined.
>
I think saying join n number of pipes gives the right idea of what the functionality and Patch is doing.
We can only join 2 or 4 pipes I think the commit message should make that clear
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> .../drm/i915/display/intel_display_debugfs.c | 71 ++++++++++++++++++-
> .../drm/i915/display/intel_display_types.h | 8 ++-
> drivers/gpu/drm/i915/display/intel_dp.c | 2 +-
> 3 files changed, 77 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 5cf9b4af9adf..18f3d83265ce 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> @@ -1497,6 +1497,73 @@ 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;
> + struct drm_i915_private *i915 = to_i915(connector->base.dev);
> + int ret;
> +
> + ret = drm_modeset_lock_single_interruptible(&i915-
> >drm.mode_config.connection_mutex);
> + if (ret)
> + return ret;
> +
> + seq_printf(m, "Force_joined_pipes: %d\n",
> +connector->force_joined_pipes);
> +
> + drm_modeset_unlock(&i915->drm.mode_config.connection_mutex);
> +
> + return ret;
> +}
> +
> +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 drm_i915_private *i915 = to_i915(connector->base.dev);
> + int force_join_pipes = 0;
> + int ret;
> +
> + if (len == 0)
> + return 0;
> +
> + drm_dbg(&i915->drm,
> + "Copied %zu bytes from user to force joiner\n", len);
> +
> + ret = kstrtoint_from_user(ubuf, len, 0, &force_join_pipes);
> + if (ret < 0)
> + return ret;
> +
> + drm_dbg(&i915->drm, "Got %d for force joining pipes\n",
> +force_join_pipes);
> +
> + if (force_join_pipes < INTEL_PIPE_JOINER_NONE ||
> + force_join_pipes >= INTEL_PIPE_JOINER_INVALID) {
> + drm_dbg(&i915->drm, "Ignoring Invalid num of pipes %d for
> force joining\n",
> + force_join_pipes);
> + connector->force_joined_pipes = INTEL_PIPE_JOINER_NONE;
> + } else {
> + connector->force_joined_pipes = force_join_pipes;
> + }
> +
> + *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 @@ -1546,8 +1613,8
> @@ void intel_connector_debugfs_add(struct intel_connector *connector)
> if (DISPLAY_VER(i915) >= 11 &&
> (connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
> connector_type == DRM_MODE_CONNECTOR_eDP)) {
> - debugfs_create_bool("i915_bigjoiner_force_enable", 0644,
> root,
> - &connector->force_bigjoiner_enable);
> + debugfs_create_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 a9d2acdc51a4..14c78b18ffa1 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -613,6 +613,12 @@ struct intel_hdcp {
> enum transcoder stream_transcoder;
> };
>
> +enum intel_joiner_pipe_count {
> + INTEL_PIPE_JOINER_NONE = 0,
> + INTEL_PIPE_JOINER_BIG = 2,
> + INTEL_PIPE_JOINER_INVALID,
> +};
Also the naming here should be intel_pipe_joiner_count since the difference in enum variable and enum defines Does not seem right.
Also I think the ULTRA enum should be defined sooner rather than later it will help reduce a lot of magic numbers being used in ultrajoiner
and big joiner checks later on.
> +
> struct intel_connector {
> struct drm_connector base;
> /*
> @@ -651,7 +657,7 @@ struct intel_connector {
>
> struct intel_dp *mst_port;
>
> - bool force_bigjoiner_enable;
> + enum intel_joiner_pipe_count force_joined_pipes;
>
Naming here should be force_pipes_joined.
I think this whole patch series has a trend of naming it as joined pipe I think that should be changed to pipe joined
Regards,
Suraj Kandpal
> 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 d4b1b18453dc..30442c9da06b 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -1164,7 +1164,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 == INTEL_PIPE_JOINER_BIG;
> }
>
> bool intel_dp_has_dsc(const struct intel_connector *connector)
> --
> 2.45.2
^ permalink raw reply [flat|nested] 32+ messages in thread
* RE: [PATCH 02/12] drm/i915/display: Use joined pipes in intel_dp_joiner_needs_dsc
2024-07-18 8:17 ` [PATCH 02/12] drm/i915/display: Use joined pipes in intel_dp_joiner_needs_dsc Ankit Nautiyal
@ 2024-07-31 4:28 ` Kandpal, Suraj
0 siblings, 0 replies; 32+ messages in thread
From: Kandpal, Suraj @ 2024-07-31 4:28 UTC (permalink / raw)
To: Nautiyal, Ankit K, intel-gfx@lists.freedesktop.org
Cc: Lisovskiy, Stanislav, Saarinen, Jani,
ville.syrjala@linux.intel.com
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Ankit
> Nautiyal
> Sent: Thursday, July 18, 2024 1:48 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: Lisovskiy, Stanislav <stanislav.lisovskiy@intel.com>; Saarinen, Jani
> <jani.saarinen@intel.com>; ville.syrjala@linux.intel.com
> Subject: [PATCH 02/12] drm/i915/display: Use joined pipes in
> intel_dp_joiner_needs_dsc
>
> In preparation of ultrajoiner, use number of joined pipes in the
> intel_dp_joiner_needs_dsc helper, instead of joiner flag.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 2 +-
> drivers/gpu/drm/i915/display/intel_display.h | 2 ++
> drivers/gpu/drm/i915/display/intel_dp.c | 18 +++++++++++++-----
> drivers/gpu/drm/i915/display/intel_dp.h | 4 +++-
> drivers/gpu/drm/i915/display/intel_dp_mst.c | 13 ++++++++++---
> 5 files changed, 29 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index 01a5faa3fea5..eab07a5fa377 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -276,7 +276,7 @@ bool intel_crtc_is_joiner_primary(const struct
> intel_crtc_state *crtc_state)
> crtc->pipe == joiner_primary_pipe(crtc_state); }
>
> -static int intel_joiner_num_pipes(const struct intel_crtc_state *crtc_state)
> +int intel_joiner_num_pipes(const struct intel_crtc_state *crtc_state)
> {
> return hweight8(crtc_state->joiner_pipes);
> }
this is introduced in Patch 5 too and here it is being changed from static i think some reordering/modification is required.
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h
> b/drivers/gpu/drm/i915/display/intel_display.h
> index b0cf6ca70952..0aecc3330a53 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -584,4 +584,6 @@ bool assert_port_valid(struct drm_i915_private *i915,
> enum port port);
>
> bool intel_scanout_needs_vtd_wa(struct drm_i915_private *i915);
>
> +int intel_joiner_num_pipes(const struct intel_crtc_state *crtc_state);
> +
> #endif
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index 30442c9da06b..7d66a969c461 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -1202,6 +1202,7 @@ intel_dp_mode_valid(struct drm_connector
> *_connector,
> u8 dsc_slice_count = 0;
> enum drm_mode_status status;
> bool dsc = false, joiner = false;
> + enum intel_joiner_pipe_count joined_pipes =
> INTEL_PIPE_JOINER_NONE;
Also as mentioned in the last patch maybe change name convention to pipes_joined instead of joined pipes
Regards,
Suraj Kandpal
>
> status = intel_cpu_transcoder_mode_valid(dev_priv, mode);
> if (status != MODE_OK)
> @@ -1225,7 +1226,8 @@ intel_dp_mode_valid(struct drm_connector
> *_connector,
> if (intel_dp_need_joiner(intel_dp, connector,
> mode->hdisplay, target_clock)) {
> joiner = true;
> - max_dotclk *= 2;
> + joined_pipes = INTEL_PIPE_JOINER_BIG;
> + max_dotclk *= INTEL_PIPE_JOINER_BIG;
> }
> if (target_clock > max_dotclk)
> return MODE_CLOCK_HIGH;
> @@ -1283,7 +1285,7 @@ intel_dp_mode_valid(struct drm_connector
> *_connector,
> dsc = dsc_max_compressed_bpp && dsc_slice_count;
> }
>
> - if (intel_dp_joiner_needs_dsc(dev_priv, joiner) && !dsc)
> + if (intel_dp_joiner_needs_dsc(dev_priv, joined_pipes) && !dsc)
> return MODE_CLOCK_HIGH;
>
> if (mode_rate > max_rate && !dsc)
> @@ -2391,14 +2393,15 @@ int intel_dp_config_required_rate(const struct
> intel_crtc_state *crtc_state)
> return intel_dp_link_required(adjusted_mode->crtc_clock, bpp); }
>
> -bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, bool
> use_joiner)
> +bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915,
> + enum intel_joiner_pipe_count joined_pipes)
> {
> /*
> * Pipe joiner needs compression up to display 12 due to bandwidth
> * limitation. DG2 onwards pipe joiner can be enabled without
> * compression.
> */
> - return DISPLAY_VER(i915) < 13 && use_joiner;
> + return DISPLAY_VER(i915) < 13 && (joined_pipes ==
> +INTEL_PIPE_JOINER_BIG);
> }
>
> static int
> @@ -2416,6 +2419,7 @@ intel_dp_compute_link_config(struct intel_encoder
> *encoder,
> struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
> struct link_config_limits limits;
> bool dsc_needed, joiner_needs_dsc;
> + enum intel_joiner_pipe_count joined_pipes;
> int ret = 0;
>
> if (pipe_config->fec_enable &&
> @@ -2427,7 +2431,11 @@ intel_dp_compute_link_config(struct intel_encoder
> *encoder,
> adjusted_mode->crtc_clock))
> pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc-
> >pipe);
>
> - joiner_needs_dsc = intel_dp_joiner_needs_dsc(i915, pipe_config-
> >joiner_pipes);
> + joined_pipes = intel_joiner_num_pipes(pipe_config);
> + if (joined_pipes >= INTEL_PIPE_JOINER_INVALID)
> + drm_warn(&i915->drm, "Invalid joined pipes : %d\n",
> joined_pipes);
> +
> + joiner_needs_dsc = intel_dp_joiner_needs_dsc(i915, joined_pipes);
>
> dsc_needed = joiner_needs_dsc || intel_dp->force_dsc_en ||
> !intel_dp_compute_config_limits(intel_dp, pipe_config, diff --
> git a/drivers/gpu/drm/i915/display/intel_dp.h
> b/drivers/gpu/drm/i915/display/intel_dp.h
> index 9be539edf817..a8116210c618 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.h
> +++ b/drivers/gpu/drm/i915/display/intel_dp.h
> @@ -8,6 +8,7 @@
>
> #include <linux/types.h>
>
> +enum intel_joiner_pipe_count;
> enum intel_output_format;
> enum pipe;
> enum port;
> @@ -121,7 +122,8 @@ int intel_dp_effective_data_rate(int pixel_clock, int
> bpp_x16,
> int bw_overhead);
> int intel_dp_max_link_data_rate(struct intel_dp *intel_dp,
> int max_dprx_rate, int max_dprx_lanes); -bool
> intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, bool use_joiner);
> +bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915,
> + enum intel_joiner_pipe_count joined_pipes);
> bool intel_dp_has_joiner(struct intel_dp *intel_dp); bool
> intel_dp_needs_vsc_sdp(const struct intel_crtc_state *crtc_state,
> const struct drm_connector_state *conn_state); diff -
> -git a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index 27ce5c3f5951..e5797ee13667 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -567,6 +567,7 @@ static int intel_dp_mst_compute_config(struct
> intel_encoder *encoder,
> &pipe_config->hw.adjusted_mode;
> struct link_config_limits limits;
> bool dsc_needed, joiner_needs_dsc;
> + enum intel_joiner_pipe_count joined_pipes;
> int ret = 0;
>
> if (pipe_config->fec_enable &&
> @@ -585,7 +586,11 @@ static int intel_dp_mst_compute_config(struct
> intel_encoder *encoder,
> pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB;
> pipe_config->has_pch_encoder = false;
>
> - joiner_needs_dsc = intel_dp_joiner_needs_dsc(dev_priv, pipe_config-
> >joiner_pipes);
> + joined_pipes = intel_joiner_num_pipes(pipe_config);
> + if (joined_pipes >= INTEL_PIPE_JOINER_INVALID)
> + drm_warn(&dev_priv->drm, "Invalid joined pipes : %d\n",
> +joined_pipes);
> +
> + joiner_needs_dsc = intel_dp_joiner_needs_dsc(dev_priv, joined_pipes);
>
> dsc_needed = joiner_needs_dsc || intel_dp->force_dsc_en ||
> !intel_dp_mst_compute_config_limits(intel_dp,
> @@ -1392,6 +1397,7 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector
> *connector,
> u16 dsc_max_compressed_bpp = 0;
> u8 dsc_slice_count = 0;
> int target_clock = mode->clock;
> + enum intel_joiner_pipe_count joined_pipes =
> INTEL_PIPE_JOINER_NONE;
>
> if (drm_connector_is_unregistered(connector)) {
> *status = MODE_ERROR;
> @@ -1434,7 +1440,8 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector
> *connector,
> if (intel_dp_need_joiner(intel_dp, intel_connector,
> mode->hdisplay, target_clock)) {
> joiner = true;
> - max_dotclk *= 2;
> + joined_pipes = INTEL_PIPE_JOINER_BIG;
> + max_dotclk *= INTEL_PIPE_JOINER_BIG;
> }
>
> ret = drm_modeset_lock(&mgr->base.lock, ctx); @@ -1474,7 +1481,7
> @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
> dsc = dsc_max_compressed_bpp && dsc_slice_count;
> }
>
> - if (intel_dp_joiner_needs_dsc(dev_priv, joiner) && !dsc) {
> + if (intel_dp_joiner_needs_dsc(dev_priv, joined_pipes) && !dsc) {
> *status = MODE_CLOCK_HIGH;
> return 0;
> }
> --
> 2.45.2
^ permalink raw reply [flat|nested] 32+ messages in thread
* RE: [PATCH 03/12] drm/i915/display: Use joined pipes in intel_mode_valid_max_plane_size
2024-07-18 8:17 ` [PATCH 03/12] drm/i915/display: Use joined pipes in intel_mode_valid_max_plane_size Ankit Nautiyal
@ 2024-07-31 4:43 ` Kandpal, Suraj
0 siblings, 0 replies; 32+ messages in thread
From: Kandpal, Suraj @ 2024-07-31 4:43 UTC (permalink / raw)
To: Nautiyal, Ankit K, intel-gfx@lists.freedesktop.org
Cc: Lisovskiy, Stanislav, Saarinen, Jani,
ville.syrjala@linux.intel.com
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Ankit
> Nautiyal
> Sent: Thursday, July 18, 2024 1:48 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: Lisovskiy, Stanislav <stanislav.lisovskiy@intel.com>; Saarinen, Jani
> <jani.saarinen@intel.com>; ville.syrjala@linux.intel.com
> Subject: [PATCH 03/12] drm/i915/display: Use joined pipes in
> intel_mode_valid_max_plane_size
>
> In preparation of ultrajoiner, use number of joined pipes in the
> intel_mode_valid_max_plane_size helper, instead of joiner flag.
>
Other than the naming convention changes mentioned in previous patches
LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 4 ++--
> drivers/gpu/drm/i915/display/intel_display.h | 3 ++-
> drivers/gpu/drm/i915/display/intel_dp.c | 2 +-
> drivers/gpu/drm/i915/display/intel_dp_mst.c | 2 +-
> drivers/gpu/drm/i915/display/intel_dsi.c | 2 +-
> drivers/gpu/drm/i915/display/intel_hdmi.c | 2 +-
> 6 files changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index eab07a5fa377..26e4b0c2e9f7 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -8081,7 +8081,7 @@ enum drm_mode_status
> intel_cpu_transcoder_mode_valid(struct drm_i915_private *de enum
> drm_mode_status intel_mode_valid_max_plane_size(struct drm_i915_private
> *dev_priv,
> const struct drm_display_mode *mode,
> - bool joiner)
> + enum intel_joiner_pipe_count joined_pipes)
> {
> int plane_width_max, plane_height_max;
>
> @@ -8098,7 +8098,7 @@ intel_mode_valid_max_plane_size(struct
> drm_i915_private *dev_priv,
> * too big for that.
> */
> if (DISPLAY_VER(dev_priv) >= 11) {
> - plane_width_max = 5120 << joiner;
> + plane_width_max = 5120 << joined_pipes / 2;
> plane_height_max = 4320;
> } else {
> plane_width_max = 5120;
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h
> b/drivers/gpu/drm/i915/display/intel_display.h
> index 0aecc3330a53..bf665f947b97 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -31,6 +31,7 @@
> #include "intel_display_limits.h"
>
> enum drm_scaling_filter;
> +enum intel_joiner_pipe_count;
> struct dpll;
> struct drm_atomic_state;
> struct drm_connector;
> @@ -415,7 +416,7 @@ u32 intel_plane_fb_max_stride(struct
> drm_i915_private *dev_priv, enum drm_mode_status
> intel_mode_valid_max_plane_size(struct drm_i915_private *dev_priv,
> const struct drm_display_mode *mode,
> - bool joiner);
> + enum intel_joiner_pipe_count joined_pipes);
> enum drm_mode_status
> intel_cpu_transcoder_mode_valid(struct drm_i915_private *i915,
> const struct drm_display_mode *mode); diff --
> git a/drivers/gpu/drm/i915/display/intel_dp.c
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index 7d66a969c461..320d8b6d1bce 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -1295,7 +1295,7 @@ intel_dp_mode_valid(struct drm_connector
> *_connector,
> if (status != MODE_OK)
> return status;
>
> - return intel_mode_valid_max_plane_size(dev_priv, mode, joiner);
> + return intel_mode_valid_max_plane_size(dev_priv, mode,
> joined_pipes);
> }
>
> bool intel_dp_source_supports_tps3(struct drm_i915_private *i915) diff --git
> a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index e5797ee13667..3f45ac7ca4d5 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -1491,7 +1491,7 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector
> *connector,
> return 0;
> }
>
> - *status = intel_mode_valid_max_plane_size(dev_priv, mode, joiner);
> + *status = intel_mode_valid_max_plane_size(dev_priv, mode,
> +joined_pipes);
> return 0;
> }
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dsi.c
> b/drivers/gpu/drm/i915/display/intel_dsi.c
> index bd5888ce4852..acc17546215f 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsi.c
> +++ b/drivers/gpu/drm/i915/display/intel_dsi.c
> @@ -76,7 +76,7 @@ enum drm_mode_status intel_dsi_mode_valid(struct
> drm_connector *connector,
> if (fixed_mode->clock > max_dotclk)
> return MODE_CLOCK_HIGH;
>
> - return intel_mode_valid_max_plane_size(dev_priv, mode, false);
> + return intel_mode_valid_max_plane_size(dev_priv, mode,
> +INTEL_PIPE_JOINER_NONE);
> }
>
> struct intel_dsi_host *intel_dsi_host_init(struct intel_dsi *intel_dsi, diff --git
> a/drivers/gpu/drm/i915/display/intel_hdmi.c
> b/drivers/gpu/drm/i915/display/intel_hdmi.c
> index 19498ee455fa..5aa4a9f0c470 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
> @@ -2048,7 +2048,7 @@ intel_hdmi_mode_valid(struct drm_connector
> *connector,
> return status;
> }
>
> - return intel_mode_valid_max_plane_size(dev_priv, mode, false);
> + return intel_mode_valid_max_plane_size(dev_priv, mode,
> +INTEL_PIPE_JOINER_NONE);
> }
>
> bool intel_hdmi_bpc_possible(const struct intel_crtc_state *crtc_state,
> --
> 2.45.2
^ permalink raw reply [flat|nested] 32+ messages in thread
* RE: [PATCH 04/12] drm/i915/display: Use joined pipes in dsc helpers for slices, bpp
2024-07-18 8:17 ` [PATCH 04/12] drm/i915/display: Use joined pipes in dsc helpers for slices, bpp Ankit Nautiyal
@ 2024-07-31 5:10 ` Kandpal, Suraj
0 siblings, 0 replies; 32+ messages in thread
From: Kandpal, Suraj @ 2024-07-31 5:10 UTC (permalink / raw)
To: Nautiyal, Ankit K, intel-gfx@lists.freedesktop.org
Cc: Lisovskiy, Stanislav, Saarinen, Jani,
ville.syrjala@linux.intel.com
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Ankit
> Nautiyal
> Sent: Thursday, July 18, 2024 1:48 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: Lisovskiy, Stanislav <stanislav.lisovskiy@intel.com>; Saarinen, Jani
> <jani.saarinen@intel.com>; ville.syrjala@linux.intel.com
> Subject: [PATCH 04/12] drm/i915/display: Use joined pipes in dsc helpers for
> slices, bpp
>
> In preparation of ultrajoiner, use number of joined pipes in the dsc helpers to
> compute dsc slices and max compressed bpp, instead of using the joiner flag.
>
LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_dp.c | 27 +++++++++++----------
> drivers/gpu/drm/i915/display/intel_dp.h | 4 +--
> drivers/gpu/drm/i915/display/intel_dp_mst.c | 11 +++++----
> 3 files changed, 22 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index 320d8b6d1bce..ff4c123de0ed 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -752,14 +752,14 @@ u32 intel_dp_dsc_nearest_valid_bpp(struct
> drm_i915_private *i915, u32 bpp, u32 p static
> u32 get_max_compressed_bpp_with_joiner(struct drm_i915_private *i915,
> u32 mode_clock, u32 mode_hdisplay,
> - bool bigjoiner)
> + enum intel_joiner_pipe_count
> joined_pipes)
> {
> u32 max_bpp_small_joiner_ram;
>
> /* Small Joiner Check: output bpp <= joiner RAM (bits) / Horiz. width */
> max_bpp_small_joiner_ram = small_joiner_ram_size_bits(i915) /
> mode_hdisplay;
>
> - if (bigjoiner) {
> + if (joined_pipes == INTEL_PIPE_JOINER_BIG) {
> int bigjoiner_interface_bits = DISPLAY_VER(i915) >= 14 ? 36 :
> 24;
> /* With bigjoiner multiple dsc engines are used in parallel so
> PPC is 2 */
> int ppc = 2;
> @@ -778,7 +778,7 @@ u32 get_max_compressed_bpp_with_joiner(struct
> drm_i915_private *i915,
> u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
> u32 link_clock, u32 lane_count,
> u32 mode_clock, u32 mode_hdisplay,
> - bool bigjoiner,
> + enum intel_joiner_pipe_count
> joined_pipes,
> enum intel_output_format
> output_format,
> u32 pipe_bpp,
> u32 timeslots)
> @@ -824,7 +824,7 @@ u16 intel_dp_dsc_get_max_compressed_bpp(struct
> drm_i915_private *i915,
> intel_dp_mode_to_fec_clock(mode_clock));
>
> joiner_max_bpp = get_max_compressed_bpp_with_joiner(i915,
> mode_clock,
> - mode_hdisplay,
> bigjoiner);
> + mode_hdisplay,
> joined_pipes);
> bits_per_pixel = min(bits_per_pixel, joiner_max_bpp);
>
> bits_per_pixel = intel_dp_dsc_nearest_valid_bpp(i915, bits_per_pixel,
> pipe_bpp); @@ -834,7 +834,7 @@ u16
> intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
>
> u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
> int mode_clock, int mode_hdisplay,
> - bool bigjoiner)
> + enum intel_joiner_pipe_count joined_pipes)
> {
> struct drm_i915_private *i915 = to_i915(connector->base.dev);
> u8 min_slice_count, i;
> @@ -868,14 +868,14 @@ u8 intel_dp_dsc_get_slice_count(const struct
> intel_connector *connector,
>
> /* Find the closest match to the valid slice count values */
> for (i = 0; i < ARRAY_SIZE(valid_dsc_slicecount); i++) {
> - u8 test_slice_count = valid_dsc_slicecount[i] << bigjoiner;
> + u8 test_slice_count = valid_dsc_slicecount[i] << (joined_pipes /
> 2);
>
> if (test_slice_count >
> drm_dp_dsc_sink_max_slice_count(connector->dp.dsc_dpcd,
> false))
> break;
>
> /* big joiner needs small joiner to be enabled */
> - if (bigjoiner && test_slice_count < 4)
> + if (joined_pipes == INTEL_PIPE_JOINER_BIG && test_slice_count
> < 4)
> continue;
>
> if (min_slice_count <= test_slice_count) @@ -1201,7 +1201,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;
> enum intel_joiner_pipe_count joined_pipes =
> INTEL_PIPE_JOINER_NONE;
>
> status = intel_cpu_transcoder_mode_valid(dev_priv, mode); @@ -
> 1225,7 +1225,6 @@ intel_dp_mode_valid(struct drm_connector *_connector,
>
> if (intel_dp_need_joiner(intel_dp, connector,
> mode->hdisplay, target_clock)) {
> - joiner = true;
> joined_pipes = INTEL_PIPE_JOINER_BIG;
> max_dotclk *= INTEL_PIPE_JOINER_BIG;
> }
> @@ -1272,14 +1271,14 @@ intel_dp_mode_valid(struct drm_connector
> *_connector,
> max_lanes,
> target_clock,
> mode-
> >hdisplay,
> - joiner,
> +
> joined_pipes,
>
> output_format,
> pipe_bpp,
> 64);
> dsc_slice_count =
> intel_dp_dsc_get_slice_count(connector,
> target_clock,
> mode->hdisplay,
> - joiner);
> + joined_pipes);
> }
>
> dsc = dsc_max_compressed_bpp && dsc_slice_count; @@ -
> 1995,6 +1994,7 @@ static int dsc_compute_compressed_bpp(struct intel_dp
> *intel_dp,
> int dsc_src_min_bpp, dsc_sink_min_bpp, dsc_min_bpp;
> int dsc_src_max_bpp, dsc_sink_max_bpp, dsc_max_bpp;
> int dsc_joiner_max_bpp;
> + int joined_pipes = intel_joiner_num_pipes(pipe_config);
>
> dsc_src_min_bpp = dsc_src_min_compressed_bpp();
> dsc_sink_min_bpp =
> intel_dp_dsc_sink_min_compressed_bpp(pipe_config);
> @@ -2009,7 +2009,7 @@ static int dsc_compute_compressed_bpp(struct
> intel_dp *intel_dp,
>
> dsc_joiner_max_bpp = get_max_compressed_bpp_with_joiner(i915,
> adjusted_mode->clock,
>
> adjusted_mode->hdisplay,
> - pipe_config-
> >joiner_pipes);
> + joined_pipes);
> dsc_max_bpp = min(dsc_max_bpp, dsc_joiner_max_bpp);
> dsc_max_bpp = min(dsc_max_bpp, to_bpp_int(limits-
> >link.max_bpp_x16));
>
> @@ -2194,6 +2194,7 @@ int intel_dp_dsc_compute_config(struct intel_dp
> *intel_dp,
> to_intel_connector(conn_state->connector);
> const struct drm_display_mode *adjusted_mode =
> &pipe_config->hw.adjusted_mode;
> + int joined_pipes = intel_joiner_num_pipes(pipe_config);
> int ret;
>
> pipe_config->fec_enable = pipe_config->fec_enable || @@ -2243,7
> +2244,7 @@ int intel_dp_dsc_compute_config(struct intel_dp *intel_dp,
> intel_dp_dsc_get_slice_count(connector,
> adjusted_mode->crtc_clock,
> adjusted_mode-
> >crtc_hdisplay,
> - pipe_config->joiner_pipes);
> + joined_pipes);
> if (!dsc_dp_slice_count) {
> drm_dbg_kms(&dev_priv->drm,
> "Compressed Slice Count not supported\n");
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.h
> b/drivers/gpu/drm/i915/display/intel_dp.h
> index a8116210c618..acd05dc7b8ad 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.h
> +++ b/drivers/gpu/drm/i915/display/intel_dp.h
> @@ -142,7 +142,7 @@ int intel_dp_dsc_compute_max_bpp(const struct
> intel_connector *connector,
> u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private *i915,
> u32 link_clock, u32 lane_count,
> u32 mode_clock, u32 mode_hdisplay,
> - bool bigjoiner,
> + enum intel_joiner_pipe_count
> joined_pipes,
> enum intel_output_format
> output_format,
> u32 pipe_bpp,
> u32 timeslots);
> @@ -152,7 +152,7 @@ int intel_dp_dsc_sink_max_compressed_bpp(const
> struct intel_connector *connector
> int bpc);
> u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector,
> int mode_clock, int mode_hdisplay,
> - bool bigjoiner);
> + enum intel_joiner_pipe_count joined_pipes);
> bool intel_dp_need_joiner(struct intel_dp *intel_dp,
> struct intel_connector *connector,
> int hdisplay, int clock);
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index 3f45ac7ca4d5..31a2acb7fa11 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -101,11 +101,13 @@ static int intel_dp_mst_bw_overhead(const struct
> intel_crtc_state *crtc_state,
> flags |= crtc_state->fec_enable ? DRM_DP_BW_OVERHEAD_FEC : 0;
>
> if (dsc) {
> + int joined_pipes = intel_joiner_num_pipes(crtc_state);
> +
> flags |= DRM_DP_BW_OVERHEAD_DSC;
> dsc_slice_count = intel_dp_dsc_get_slice_count(connector,
> adjusted_mode-
> >clock,
> adjusted_mode-
> >hdisplay,
> - crtc_state-
> >joiner_pipes);
> + joined_pipes);
> }
>
> overhead = drm_dp_bw_overhead(crtc_state->lane_count,
> @@ -1393,7 +1395,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;
> @@ -1439,7 +1441,6 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector
> *connector,
> */
> if (intel_dp_need_joiner(intel_dp, intel_connector,
> mode->hdisplay, target_clock)) {
> - joiner = true;
> joined_pipes = INTEL_PIPE_JOINER_BIG;
> max_dotclk *= INTEL_PIPE_JOINER_BIG;
> }
> @@ -1468,14 +1469,14 @@ intel_dp_mst_mode_valid_ctx(struct
> drm_connector *connector,
> max_lanes,
> target_clock,
> mode-
> >hdisplay,
> - joiner,
> +
> joined_pipes,
>
> INTEL_OUTPUT_FORMAT_RGB,
> pipe_bpp,
> 64);
> dsc_slice_count =
> intel_dp_dsc_get_slice_count(intel_connector,
> target_clock,
> mode->hdisplay,
> - joiner);
> + joined_pipes);
> }
>
> dsc = dsc_max_compressed_bpp && dsc_slice_count;
> --
> 2.45.2
^ permalink raw reply [flat|nested] 32+ messages in thread
* RE: [PATCH 05/12] drm/i915: Add some essential functionality for joiners
2024-07-18 8:17 ` [PATCH 05/12] drm/i915: Add some essential functionality for joiners Ankit Nautiyal
@ 2024-07-31 7:14 ` Kandpal, Suraj
2024-08-16 8:23 ` Nautiyal, Ankit K
1 sibling, 0 replies; 32+ messages in thread
From: Kandpal, Suraj @ 2024-07-31 7:14 UTC (permalink / raw)
To: Nautiyal, Ankit K, intel-gfx@lists.freedesktop.org
Cc: Lisovskiy, Stanislav, Saarinen, Jani,
ville.syrjala@linux.intel.com
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Ankit
> Nautiyal
> Sent: Thursday, July 18, 2024 1:48 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: Lisovskiy, Stanislav <stanislav.lisovskiy@intel.com>; Saarinen, Jani
> <jani.saarinen@intel.com>; ville.syrjala@linux.intel.com
> Subject: [PATCH 05/12] drm/i915: Add some essential functionality for joiners
>
> 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)
Use imperatives
>
> Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> .../gpu/drm/i915/display/intel_atomic_plane.c | 2 +-
> drivers/gpu/drm/i915/display/intel_display.c | 75 ++++++++++++++++---
> drivers/gpu/drm/i915/display/intel_display.h | 8 +-
> .../drm/i915/display/intel_modeset_verify.c | 2 +-
> drivers/gpu/drm/i915/display/intel_vdsc.c | 4 +-
> 5 files changed, 76 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> index e979786aa5cf..9862d0339e6a 100644
> --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> @@ -724,7 +724,7 @@ int intel_plane_atomic_check(struct intel_atomic_state
> *state,
>
> if (new_crtc_state && intel_crtc_is_joiner_secondary(new_crtc_state)) {
> struct intel_crtc *primary_crtc =
> - intel_primary_crtc(new_crtc_state);
> + intel_joiner_primary_crtc(new_crtc_state);
> struct intel_plane *primary_crtc_plane =
> intel_crtc_get_plane(primary_crtc, plane->id);
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index 26e4b0c2e9f7..38e7c6811bf3 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -252,6 +252,68 @@ static enum pipe joiner_primary_pipe(const struct
> intel_crtc_state *crtc_state)
> return ffs(crtc_state->joiner_pipes) - 1; }
>
> +int intel_joiner_num_pipes(const struct intel_crtc_state *crtc_state) {
> + return hweight8(crtc_state->joiner_pipes);
> +}
This function is the same as one introduced in patch 2 its being added back in patch 5
> +
> +bool intel_crtc_is_ultrajoiner(const struct intel_crtc_state
> +*crtc_state) {
> + return intel_joiner_num_pipes(crtc_state) == 4; }
> +
> +static bool intel_is_joiner(const struct intel_crtc_state *crtc_state)
> +{
> + return intel_joiner_num_pipes(crtc_state) > 1; }
> +
Enums have been defined for no of pipe joiner lets use those and this is exactly why I wanted Ultra Joiner enum declared earlier to avoid comparison with direct numbers.
> +static u8 bigjoiner_primary_pipes(const struct intel_crtc_state
> +*crtc_state) {
> + int lsb = ffs(crtc_state->joiner_pipes) - 1;
> + int msb = fls(crtc_state->joiner_pipes) - 1;
> + int i;
> + u8 bigjoiner_primary_mask = 0;
> +
> + for (i = lsb; i < msb; i += 4) {
> + /*
> + * Regardless of how joiner_pipes mask is set, currently
> + * we always assume, that primary pipe bit goes before
> secondary
> + * pipe bit. So in each set of 2 bits, least significant bit is
> + * bigjoiner primary pipe and most significant bit is secondary
> pipe.
> + */
> + bigjoiner_primary_mask |=
> + ((BIT(0) | BIT(2)) << i) & crtc_state->joiner_pipes;
> + }
> +
> + return bigjoiner_primary_mask;
> +}
> +
> +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 (!intel_is_joiner(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) {
> + if (!intel_is_joiner(crtc_state))
> + return false;
> +
> + return !intel_crtc_is_bigjoiner_primary(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) &&
> + (crtc->pipe == joiner_primary_pipe(crtc_state)); }
> +
> u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state) {
> if (crtc_state->joiner_pipes)
> @@ -276,11 +338,6 @@ bool intel_crtc_is_joiner_primary(const struct
> intel_crtc_state *crtc_state)
> crtc->pipe == joiner_primary_pipe(crtc_state); }
>
> -int intel_joiner_num_pipes(const struct intel_crtc_state *crtc_state) -{
> - return hweight8(crtc_state->joiner_pipes);
> -}
> -
> u8 intel_crtc_joined_pipe_mask(const struct intel_crtc_state *crtc_state) {
> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> @@ -288,7 +345,7 @@ u8 intel_crtc_joined_pipe_mask(const struct
> intel_crtc_state *crtc_state)
> return BIT(crtc->pipe) | crtc_state->joiner_pipes; }
>
> -struct intel_crtc *intel_primary_crtc(const struct intel_crtc_state *crtc_state)
> +struct intel_crtc *intel_joiner_primary_crtc(const struct
> +intel_crtc_state *crtc_state)
> {
> struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
>
> @@ -808,7 +865,7 @@ intel_get_crtc_new_encoder(const struct
> intel_atomic_state *state,
> int num_encoders = 0;
> int i;
>
> - primary_crtc = intel_primary_crtc(crtc_state);
> + primary_crtc = intel_joiner_primary_crtc(crtc_state);
>
> for_each_new_connector_in_state(&state->base, connector,
> connector_state, i) {
> if (connector_state->crtc != &primary_crtc->base) @@ -4527,7
> +4584,7 @@ copy_joiner_crtc_state_nomodeset(struct intel_atomic_state
> *state, {
> struct intel_crtc_state *secondary_crtc_state =
> intel_atomic_get_new_crtc_state(state, secondary_crtc);
> - struct intel_crtc *primary_crtc =
> intel_primary_crtc(secondary_crtc_state);
> + struct intel_crtc *primary_crtc =
> +intel_joiner_primary_crtc(secondary_crtc_state);
> const struct intel_crtc_state *primary_crtc_state =
> intel_atomic_get_new_crtc_state(state, primary_crtc);
>
> @@ -4547,7 +4604,7 @@ copy_joiner_crtc_state_modeset(struct
> intel_atomic_state *state, {
> struct intel_crtc_state *secondary_crtc_state =
> intel_atomic_get_new_crtc_state(state, secondary_crtc);
> - struct intel_crtc *primary_crtc =
> intel_primary_crtc(secondary_crtc_state);
> + struct intel_crtc *primary_crtc =
> +intel_joiner_primary_crtc(secondary_crtc_state);
> const struct intel_crtc_state *primary_crtc_state =
> intel_atomic_get_new_crtc_state(state, primary_crtc);
> struct intel_crtc_state *saved_state;
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h
> b/drivers/gpu/drm/i915/display/intel_display.h
> index bf665f947b97..35e68e4cc712 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -424,10 +424,14 @@ enum phy intel_port_to_phy(struct
> drm_i915_private *i915, enum port port); bool
> is_trans_port_sync_mode(const struct intel_crtc_state *state); bool
> is_trans_port_sync_master(const struct intel_crtc_state *state);
> u8 intel_crtc_joined_pipe_mask(const struct intel_crtc_state *crtc_state); -bool
> intel_crtc_is_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_joiner_secondary(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); -
> struct intel_crtc *intel_primary_crtc(const struct intel_crtc_state *crtc_state);
> +struct intel_crtc *intel_joiner_primary_crtc(const struct
> +intel_crtc_state *crtc_state);
I think with all these joiner related functions introduced maybe joiner gets it own file
Quite a lot of functions including enable disable sequences including the functions introduced here can be moved there
Regards,
Suraj Kandpal
> bool intel_crtc_get_pipe_config(struct intel_crtc_state *crtc_state); bool
> intel_pipe_config_compare(const struct intel_crtc_state *current_config,
> const struct intel_crtc_state *pipe_config, diff --git
> a/drivers/gpu/drm/i915/display/intel_modeset_verify.c
> b/drivers/gpu/drm/i915/display/intel_modeset_verify.c
> index 3491db5cad31..b53b810c6470 100644
> --- a/drivers/gpu/drm/i915/display/intel_modeset_verify.c
> +++ b/drivers/gpu/drm/i915/display/intel_modeset_verify.c
> @@ -193,7 +193,7 @@ verify_crtc_state(struct intel_atomic_state *state,
> "transitional active state does not match atomic hw
> state (expected %i, found %i)\n",
> sw_crtc_state->hw.active, crtc->active);
>
> - primary_crtc = intel_primary_crtc(sw_crtc_state);
> + primary_crtc = intel_joiner_primary_crtc(sw_crtc_state);
>
> for_each_encoder_on_crtc(dev, &primary_crtc->base, encoder) {
> enum pipe pipe;
> diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c
> b/drivers/gpu/drm/i915/display/intel_vdsc.c
> index b9687b7692b8..11058bb37d5a 100644
> --- a/drivers/gpu/drm/i915/display/intel_vdsc.c
> +++ b/drivers/gpu/drm/i915/display/intel_vdsc.c
> @@ -761,7 +761,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;
> @@ -790,7 +790,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 [flat|nested] 32+ messages in thread
* RE: [PATCH 06/12] drm/i915: Split current joiner hw state readout
2024-07-18 8:17 ` [PATCH 06/12] drm/i915: Split current joiner hw state readout Ankit Nautiyal
@ 2024-07-31 7:27 ` Kandpal, Suraj
0 siblings, 0 replies; 32+ messages in thread
From: Kandpal, Suraj @ 2024-07-31 7:27 UTC (permalink / raw)
To: Nautiyal, Ankit K, intel-gfx@lists.freedesktop.org
Cc: Lisovskiy, Stanislav, Saarinen, Jani,
ville.syrjala@linux.intel.com
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Ankit
> Nautiyal
> Sent: Thursday, July 18, 2024 1:48 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: Lisovskiy, Stanislav <stanislav.lisovskiy@intel.com>; Saarinen, Jani
> <jani.saarinen@intel.com>; ville.syrjala@linux.intel.com
> Subject: [PATCH 06/12] drm/i915: Split current joiner hw state readout
>
> From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
>
> 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)
>
Use imperative here
Other than that LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> 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 | 65 +++++++++++++++-----
> 1 file changed, 48 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index 38e7c6811bf3..4aed8117f614 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -3590,51 +3590,82 @@ 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 drm_i915_private
> *dev_priv,
> + u8 *primary_pipes, u8
> *secondary_pipes)
> {
> struct intel_crtc *crtc;
>
> *primary_pipes = 0;
> *secondary_pipes = 0;
>
> + if (DISPLAY_VER(dev_priv) < 13)
> + return;
> +
> for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, crtc,
> joiner_pipes(dev_priv)) {
> 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);
> + 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));
>
> - if (!(tmp & BIG_JOINER_ENABLE))
> - continue;
> -
> - if (tmp & PRIMARY_BIG_JOINER_ENABLE)
> + if (tmp & UNCOMPRESSED_JOINER_PRIMARY)
> *primary_pipes |= BIT(pipe);
> - else
> + if (tmp & UNCOMPRESSED_JOINER_SECONDARY)
> *secondary_pipes |= BIT(pipe);
> }
> + }
> +}
>
> - if (DISPLAY_VER(dev_priv) < 13)
> - continue;
> +static void enabled_bigjoiner_pipes(struct drm_i915_private *dev_priv,
> + u8 *primary_pipes, u8 *secondary_pipes) {
> + struct intel_crtc *crtc;
>
> - power_domain = POWER_DOMAIN_PIPE(pipe);
> + *primary_pipes = 0;
> + *secondary_pipes = 0;
> +
> + for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, crtc,
> + joiner_pipes(dev_priv)) {
> + 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));
>
> - if (tmp & UNCOMPRESSED_JOINER_PRIMARY)
> + if (!(tmp & BIG_JOINER_ENABLE))
> + continue;
> +
> + if (tmp & PRIMARY_BIG_JOINER_ENABLE)
> *primary_pipes |= BIT(pipe);
> - if (tmp & UNCOMPRESSED_JOINER_SECONDARY)
> + else
> *secondary_pipes |= BIT(pipe);
> }
> }
> +}
> +
> +static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
> + u8 *primary_pipes, u8 *secondary_pipes) {
> + u8 primary_uncompressed_joiner_pipes, primary_bigjoiner_pipes;
> + u8 secondary_uncompressed_joiner_pipes, secondary_bigjoiner_pipes;
> +
> + enabled_uncompressed_joiner_pipes(dev_priv,
> &primary_uncompressed_joiner_pipes,
> +
> &secondary_uncompressed_joiner_pipes);
> +
> + enabled_bigjoiner_pipes(dev_priv, &primary_bigjoiner_pipes,
> + &secondary_bigjoiner_pipes);
> +
> + *primary_pipes = 0;
> + *secondary_pipes = 0;
> +
> + *primary_pipes = primary_uncompressed_joiner_pipes |
> +primary_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",
> - *primary_pipes, *secondary_pipes);
> + *secondary_pipes = secondary_uncompressed_joiner_pipes |
> +secondary_bigjoiner_pipes;
> }
>
> static enum pipe get_joiner_primary_pipe(enum pipe pipe, u8 primary_pipes,
> u8 secondary_pipes)
> --
> 2.45.2
^ permalink raw reply [flat|nested] 32+ messages in thread
* RE: [PATCH 07/12] drm/i915: Add bigjoiner and uncompressed joiner hw readout sanity checks
2024-07-18 8:17 ` [PATCH 07/12] drm/i915: Add bigjoiner and uncompressed joiner hw readout sanity checks Ankit Nautiyal
@ 2024-07-31 8:25 ` Kandpal, Suraj
0 siblings, 0 replies; 32+ messages in thread
From: Kandpal, Suraj @ 2024-07-31 8:25 UTC (permalink / raw)
To: Nautiyal, Ankit K, intel-gfx@lists.freedesktop.org
Cc: Lisovskiy, Stanislav, Saarinen, Jani,
ville.syrjala@linux.intel.com
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Ankit
> Nautiyal
> Sent: Thursday, July 18, 2024 1:48 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: Lisovskiy, Stanislav <stanislav.lisovskiy@intel.com>; Saarinen, Jani
> <jani.saarinen@intel.com>; ville.syrjala@linux.intel.com
> Subject: [PATCH 07/12] drm/i915: Add bigjoiner and uncompressed joiner
> hw readout sanity checks
>
> From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
>
> Adding sanity checks for primary and secondary bigjoiner/uncompressed
> bitmasks, should make it easier to spot possible issues.
>
Use imperative here in commit meesgae some thing like " add sanity checks..."
Other than that everything else LGTM.
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 25 +++++++++++++++++++-
> 1 file changed, 24 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index 4aed8117f614..59cb0d2f773b 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -3648,11 +3648,17 @@ static void enabled_bigjoiner_pipes(struct
> drm_i915_private *dev_priv,
> }
> }
>
> +static u8 expected_secondary_pipes(u8 primary_pipes) {
> + return primary_pipes << 1;
> +}
> +
> static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
> u8 *primary_pipes, u8 *secondary_pipes) {
> 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(dev_priv,
> &primary_uncompressed_joiner_pipes,
>
> &secondary_uncompressed_joiner_pipes);
> @@ -3660,11 +3666,28 @@ static void enabled_joiner_pipes(struct
> drm_i915_private *dev_priv,
> enabled_bigjoiner_pipes(dev_priv, &primary_bigjoiner_pipes,
> &secondary_bigjoiner_pipes);
>
> + uncompressed_joiner_pipes = primary_uncompressed_joiner_pipes
> |
> + secondary_uncompressed_joiner_pipes;
> + bigjoiner_pipes = primary_bigjoiner_pipes |
> secondary_bigjoiner_pipes;
> +
> + drm_WARN(&dev_priv->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(&dev_priv->drm, secondary_bigjoiner_pipes !=
> + expected_secondary_pipes(primary_bigjoiner_pipes),
> + "Wrong secondary bigjoiner pipes(expected %x, current
> %x)\n",
> + expected_secondary_pipes(primary_bigjoiner_pipes),
> + secondary_bigjoiner_pipes);
> + drm_WARN(&dev_priv->drm,
> secondary_uncompressed_joiner_pipes !=
> +
> expected_secondary_pipes(primary_uncompressed_joiner_pipes),
> + "Wrong secondary uncompressed joiner pipes(expected %x,
> current %x)\n",
> +
> expected_secondary_pipes(primary_uncompressed_joiner_pipes),
> + secondary_uncompressed_joiner_pipes);
> +
> *primary_pipes = 0;
> *secondary_pipes = 0;
>
> *primary_pipes = primary_uncompressed_joiner_pipes |
> primary_bigjoiner_pipes;
> -
> *secondary_pipes = secondary_uncompressed_joiner_pipes |
> secondary_bigjoiner_pipes; }
>
> --
> 2.45.2
^ permalink raw reply [flat|nested] 32+ messages in thread
* RE: [PATCH 08/12] drm/i915: Implement hw state readout and checks for ultrajoiner
2024-07-18 8:17 ` [PATCH 08/12] drm/i915: Implement hw state readout and checks for ultrajoiner Ankit Nautiyal
@ 2024-07-31 9:57 ` Kandpal, Suraj
0 siblings, 0 replies; 32+ messages in thread
From: Kandpal, Suraj @ 2024-07-31 9:57 UTC (permalink / raw)
To: Nautiyal, Ankit K, intel-gfx@lists.freedesktop.org
Cc: Lisovskiy, Stanislav, Saarinen, Jani,
ville.syrjala@linux.intel.com
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Ankit
> Nautiyal
> Sent: Thursday, July 18, 2024 1:48 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: Lisovskiy, Stanislav <stanislav.lisovskiy@intel.com>; Saarinen, Jani
> <jani.saarinen@intel.com>; ville.syrjala@linux.intel.com
> Subject: [PATCH 08/12] drm/i915: Implement hw state readout and checks
> for ultrajoiner
>
> 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)
>
> 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 | 127 ++++++++++++++----
> .../gpu/drm/i915/display/intel_vdsc_regs.h | 3 +
> 2 files changed, 101 insertions(+), 29 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index 59cb0d2f773b..d032fd8011d5 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -3648,17 +3648,55 @@ static void enabled_bigjoiner_pipes(struct
> drm_i915_private *dev_priv,
> }
> }
>
> -static u8 expected_secondary_pipes(u8 primary_pipes)
> +static void enabled_ultrajoiner_pipes(struct drm_i915_private *i915,
> + u8 *primary_pipes, u8
> *secondary_pipes)
> {
> - return primary_pipes << 1;
> + struct intel_crtc *crtc;
> +
> + *primary_pipes = 0;
> + *secondary_pipes = 0;
> +
> + if (DISPLAY_VER(i915) < 14)
> + 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 u8 expected_secondary_pipes(u8 primary_pipes, bool
> +ultrajoiner_used) {
> + if (!ultrajoiner_used)
> + return primary_pipes << 1;
> + else
> + return GENMASK(3, primary_pipes + 1);
> }
>
> static void enabled_joiner_pipes(struct drm_i915_private *dev_priv,
> - u8 *primary_pipes, u8 *secondary_pipes)
> + u8 *primary_pipes, u8 *secondary_pipes,
> + bool *ultrajoiner_used)
> {
> 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(dev_priv,
> &primary_uncompressed_joiner_pipes,
>
> &secondary_uncompressed_joiner_pipes);
> @@ -3666,32 +3704,49 @@ static void enabled_joiner_pipes(struct
> drm_i915_private *dev_priv,
> enabled_bigjoiner_pipes(dev_priv, &primary_bigjoiner_pipes,
> &secondary_bigjoiner_pipes);
>
> + enabled_ultrajoiner_pipes(dev_priv, &primary_ultrajoiner_pipes,
> + &secondary_ultrajoiner_pipes);
> +
> 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;
> + *ultrajoiner_used = ultrajoiner_pipes != 0;
>
> drm_WARN(&dev_priv->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(&dev_priv->drm, (ultrajoiner_pipes & bigjoiner_pipes)
> != ultrajoiner_pipes,
> + "Ultrajoiner pipes(%x) should be bigjoiner pipes(%x)\n",
> + ultrajoiner_pipes, bigjoiner_pipes);
> +
> drm_WARN(&dev_priv->drm, secondary_bigjoiner_pipes !=
> - expected_secondary_pipes(primary_bigjoiner_pipes),
> + expected_secondary_pipes(primary_bigjoiner_pipes,
> +*ultrajoiner_used),
> "Wrong secondary bigjoiner pipes(expected %x, current
> %x)\n",
> - expected_secondary_pipes(primary_bigjoiner_pipes),
> + expected_secondary_pipes(primary_bigjoiner_pipes,
> +*ultrajoiner_used),
> secondary_bigjoiner_pipes);
> drm_WARN(&dev_priv->drm,
> secondary_uncompressed_joiner_pipes !=
> -
> expected_secondary_pipes(primary_uncompressed_joiner_pipes),
> +
> expected_secondary_pipes(primary_uncompressed_joiner_pipes,
> +*ultrajoiner_used),
> "Wrong secondary uncompressed joiner pipes(expected %x,
> current %x)\n",
> -
> expected_secondary_pipes(primary_uncompressed_joiner_pipes),
> +
> expected_secondary_pipes(primary_uncompressed_joiner_pipes,
> +*ultrajoiner_used),
> secondary_uncompressed_joiner_pipes);
> + drm_WARN(&dev_priv->drm, secondary_ultrajoiner_pipes !=
> + expected_secondary_pipes(primary_ultrajoiner_pipes,
> *ultrajoiner_used),
> + "Wrong secondary ultrajoiner pipes(expected %x, current
> %x)\n",
> + expected_secondary_pipes(primary_ultrajoiner_pipes,
> *ultrajoiner_used),
> + secondary_ultrajoiner_pipes);
>
> *primary_pipes = 0;
> *secondary_pipes = 0;
>
> - *primary_pipes = primary_uncompressed_joiner_pipes |
> primary_bigjoiner_pipes;
> - *secondary_pipes = secondary_uncompressed_joiner_pipes |
> secondary_bigjoiner_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;
> }
>
> -static enum pipe get_joiner_primary_pipe(enum pipe pipe, u8
> primary_pipes, u8 secondary_pipes)
> +static enum pipe get_joiner_primary_pipe(enum pipe pipe, u8
> primary_pipes,
> + u8 secondary_pipes, bool
> ultrajoiner_used)
> {
> if ((secondary_pipes & BIT(pipe)) == 0)
> return pipe;
> @@ -3699,27 +3754,37 @@ static enum pipe
> get_joiner_primary_pipe(enum pipe pipe, u8 primary_pipes, u8 se
> /* ignore everything above our pipe */
> primary_pipes &= ~GENMASK(7, pipe);
>
> - /* highest remaining bit should be our primary pipe */
> - return fls(primary_pipes) - 1;
> + if (!ultrajoiner_used)
> + /* highest remaining bit should be our master pipe */
> + return fls(primary_pipes) - 1;
> +
> + /* lowest remaining bit should be our primary master pipe */
> + return ffs(primary_pipes) - 1;
> }
>
> -static u8 get_joiner_secondary_pipes(enum pipe pipe, u8 primary_pipes,
> u8 secondary_pipes)
> +static u8 get_joiner_secondary_pipes(enum pipe pipe, u8 primary_pipes,
> + u8 secondary_pipes, bool
> ultrajoiner_used)
> {
> enum pipe primary_pipe, next_primary_pipe;
>
> - primary_pipe = get_joiner_primary_pipe(pipe, primary_pipes,
> secondary_pipes);
> + primary_pipe = get_joiner_primary_pipe(pipe, primary_pipes,
> + secondary_pipes,
> ultrajoiner_used);
>
> if ((primary_pipes & BIT(primary_pipe)) == 0)
> return 0;
>
> - /* ignore our primary pipe and everything below it */
> - primary_pipes &= ~GENMASK(primary_pipe, 0);
> - /* make sure a high bit is set for the ffs() */
> - primary_pipes |= BIT(7);
> - /* lowest remaining bit should be the next primary pipe */
> - next_primary_pipe = ffs(primary_pipes) - 1;
> + if (!ultrajoiner_used) {
> + /* ignore our primary pipe and everything below it */
> + primary_pipes &= ~GENMASK(primary_pipe, 0);
> + /* make sure a high bit is set for the ffs() */
> + primary_pipes |= BIT(7);
> + /* lowest remaining bit should be the next primary pipe */
> + next_primary_pipe = ffs(primary_pipes) - 1;
>
> - return secondary_pipes & GENMASK(next_primary_pipe - 1,
> primary_pipe);
> + return secondary_pipes & GENMASK(next_primary_pipe - 1,
> primary_pipe);
> + } else {
> + return (secondary_pipes | primary_pipes) &
> ~BIT(primary_pipe);
> + }
> }
>
> static u8 hsw_panel_transcoders(struct drm_i915_private *i915) @@ -
> 3740,6 +3805,7 @@ static u8 hsw_enabled_transcoders(struct intel_crtc
> *crtc)
> enum transcoder cpu_transcoder;
> u8 primary_pipes, secondary_pipes;
> u8 enabled_transcoders = 0;
> + bool ultrajoiner_used;
>
> /*
> * XXX: Do intel_display_power_get_if_enabled before reading this
> (for @@ -3790,11 +3856,12 @@ static u8 hsw_enabled_transcoders(struct
> intel_crtc *crtc)
> if (transcoder_ddi_func_is_enabled(dev_priv, cpu_transcoder))
> enabled_transcoders |= BIT(cpu_transcoder);
>
> - /* joiner secondary -> consider the primary pipe's transcoder as
> well */
> - enabled_joiner_pipes(dev_priv, &primary_pipes,
> &secondary_pipes);
> + /* joiner slave -> consider the master pipe's transcoder as well */
Why is the master slave terminology coming here when we have consistently using
Primary secondary terminology
Regards,
Suraj Kandpal
> + enabled_joiner_pipes(dev_priv, &primary_pipes, &secondary_pipes,
> +&ultrajoiner_used);
> if (secondary_pipes & BIT(crtc->pipe)) {
> cpu_transcoder = (enum transcoder)
> - get_joiner_primary_pipe(crtc->pipe, primary_pipes,
> secondary_pipes);
> + get_joiner_primary_pipe(crtc->pipe, primary_pipes,
> + secondary_pipes,
> ultrajoiner_used);
> if (transcoder_ddi_func_is_enabled(dev_priv,
> cpu_transcoder))
> enabled_transcoders |= BIT(cpu_transcoder);
> }
> @@ -3926,16 +3993,18 @@ static void intel_joiner_get_config(struct
> intel_crtc_state *crtc_state)
> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> struct drm_i915_private *i915 = to_i915(crtc->base.dev);
> u8 primary_pipes, secondary_pipes;
> + bool ultrajoiner_used;
> enum pipe pipe = crtc->pipe;
>
> - enabled_joiner_pipes(i915, &primary_pipes, &secondary_pipes);
> + enabled_joiner_pipes(i915, &primary_pipes, &secondary_pipes,
> +&ultrajoiner_used);
>
> if (((primary_pipes | secondary_pipes) & BIT(pipe)) == 0)
> return;
>
> - crtc_state->joiner_pipes =
> - BIT(get_joiner_primary_pipe(pipe, primary_pipes,
> secondary_pipes)) |
> - get_joiner_secondary_pipes(pipe, primary_pipes,
> secondary_pipes);
> + crtc_state->joiner_pipes = BIT(get_joiner_primary_pipe(pipe,
> primary_pipes,
> + secondary_pipes,
> ultrajoiner_used)) |
> + get_joiner_secondary_pipes(pipe,
> primary_pipes,
> + secondary_pipes,
> ultrajoiner_used);
> }
>
> static bool hsw_get_pipe_config(struct intel_crtc *crtc, diff --git
> a/drivers/gpu/drm/i915/display/intel_vdsc_regs.h
> b/drivers/gpu/drm/i915/display/intel_vdsc_regs.h
> index f921ad67b587..db07c9775892 100644
> --- a/drivers/gpu/drm/i915/display/intel_vdsc_regs.h
> +++ b/drivers/gpu/drm/i915/display/intel_vdsc_regs.h
> @@ -37,6 +37,9 @@
> #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 [flat|nested] 32+ messages in thread
* RE: [PATCH 10/12] drm/i915: Compute config and mode valid changes for ultrajoiner
2024-07-18 8:18 ` [PATCH 10/12] drm/i915: Compute config and mode valid changes for ultrajoiner Ankit Nautiyal
@ 2024-07-31 10:29 ` Kandpal, Suraj
0 siblings, 0 replies; 32+ messages in thread
From: Kandpal, Suraj @ 2024-07-31 10:29 UTC (permalink / raw)
To: Nautiyal, Ankit K, intel-gfx@lists.freedesktop.org
Cc: Lisovskiy, Stanislav, Saarinen, Jani,
ville.syrjala@linux.intel.com
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Ankit
> Nautiyal
> Sent: Thursday, July 18, 2024 1:48 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: Lisovskiy, Stanislav <stanislav.lisovskiy@intel.com>; Saarinen, Jani
> <jani.saarinen@intel.com>; ville.syrjala@linux.intel.com
> Subject: [PATCH 10/12] drm/i915: Compute config and mode valid changes
> for ultrajoiner
>
> From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
>
> Implement required changes for mode validation and compute config, to
> support Ultrajoiner.
> This also includes required DSC changes and checks.
>
> v2:
> -Use enum for Ultrajoiner pipes.
> -Drop changes for HDMI.
> -Separate out DSC changes into another patch.
>
> Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> .../drm/i915/display/intel_display_types.h | 1 +
> drivers/gpu/drm/i915/display/intel_dp.c | 70 +++++++++++++++----
> drivers/gpu/drm/i915/display/intel_dp.h | 7 +-
> drivers/gpu/drm/i915/display/intel_dp_mst.c | 15 ++--
> 4 files changed, 70 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 14c78b18ffa1..a36881b047e3 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -616,6 +616,7 @@ struct intel_hdcp {
> enum intel_joiner_pipe_count {
> INTEL_PIPE_JOINER_NONE = 0,
> INTEL_PIPE_JOINER_BIG = 2,
> + INTEL_PIPE_JOINER_ULTRA = 4,
> INTEL_PIPE_JOINER_INVALID,
> };
This should be introduced in one of the earlier patches
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index ff4c123de0ed..c0a1f2603274 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -755,24 +755,33 @@ u32 get_max_compressed_bpp_with_joiner(struct
> drm_i915_private *i915,
> enum intel_joiner_pipe_count
> 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 (joined_pipes == INTEL_PIPE_JOINER_BIG) {
> - int bigjoiner_interface_bits = DISPLAY_VER(i915) >= 14 ? 36 :
> 24;
> + /* if ultra joiner is enabled, we have 2 bigjoiners enabled */
> + if (joined_pipes == INTEL_PIPE_JOINER_BIG ||
> + joined_pipes == INTEL_PIPE_JOINER_ULTRA) {
> + 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;
Also unrelated but should we assign ppc based on number of dsc engine used rather than hardcoding it
> - 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);
> + return min(max_bpp_small_joiner_ram, max_bpp_joiner);
> + }
> + if (joined_pipes == INTEL_PIPE_JOINER_ULTRA) {
> + /* both get multiplied by 2, because ram bits/ppc now
> doubled */
> + max_bpp_small_joiner_ram *= 2;
> + max_bpp_joiner *= 2;
> }
>
> - return max_bpp_small_joiner_ram;
> + return min(max_bpp_small_joiner_ram, max_bpp_joiner);
> }
>
> u16 intel_dp_dsc_get_max_compressed_bpp(struct drm_i915_private
> *i915, @@ -878,6 +887,10 @@ u8 intel_dp_dsc_get_slice_count(const struct
> intel_connector *connector,
> if (joined_pipes == INTEL_PIPE_JOINER_BIG &&
> test_slice_count < 4)
> continue;
>
> + /* ultrajoiner needs 2 bigjoiners to be enabled */
> + if (joined_pipes == INTEL_PIPE_JOINER_ULTRA &&
> test_slice_count < 8)
> + continue;
> +
> if (min_slice_count <= test_slice_count)
> return test_slice_count;
> }
> @@ -1154,9 +1167,9 @@ 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)
> +bool intel_dp_need_bigjoiner(struct intel_dp *intel_dp,
> + struct intel_connector *connector,
> + int hdisplay, int clock)
> {
> struct drm_i915_private *i915 = dp_to_i915(intel_dp);
>
> @@ -1187,6 +1200,25 @@ bool intel_dp_has_dsc(const struct
> intel_connector *connector)
> return true;
> }
>
> +static
> +bool intel_can_ultrajoiner(const struct intel_encoder *encoder) {
> + struct drm_i915_private *i915 = to_i915(encoder->base.dev);
> +
> + return IS_DGFX(i915) && DISPLAY_VER(i915) >= 14; }
> +
> +bool intel_dp_need_ultrajoiner(struct intel_dp *dp, int clock) {
> + const struct intel_encoder *encoder = &dp_to_dig_port(dp)->base;
> + struct drm_i915_private *i915 = to_i915(encoder->base.dev);
> +
> + if (!intel_can_ultrajoiner(encoder))
> + return false;
> +
> + return clock > (i915->display.cdclk.max_dotclk_freq * 2); }
> +
> static enum drm_mode_status
> intel_dp_mode_valid(struct drm_connector *_connector,
> struct drm_display_mode *mode)
> @@ -1223,11 +1255,15 @@ 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)) {
> + if (intel_dp_need_ultrajoiner(intel_dp, target_clock)) {
> + joined_pipes = INTEL_PIPE_JOINER_ULTRA;
> + max_dotclk *= INTEL_PIPE_JOINER_ULTRA;
> + } else if (intel_dp_need_bigjoiner(intel_dp, connector,
> + mode->hdisplay, target_clock)) {
> joined_pipes = INTEL_PIPE_JOINER_BIG;
> max_dotclk *= INTEL_PIPE_JOINER_BIG;
> }
> +
> if (target_clock > max_dotclk)
> return MODE_CLOCK_HIGH;
>
> @@ -2401,8 +2437,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 DISPLAY_VER(i915) < 13 && (joined_pipes ==
> INTEL_PIPE_JOINER_BIG);
> + return (DISPLAY_VER(i915) < 13 && (joined_pipes ==
> INTEL_PIPE_JOINER_BIG)) ||
> + joined_pipes == INTEL_PIPE_JOINER_ULTRA;
> }
>
> static int
> @@ -2427,9 +2465,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))
> + if (intel_dp_need_ultrajoiner(intel_dp, adjusted_mode->crtc_clock))
> + pipe_config->joiner_pipes = GENMASK(crtc->pipe + 3, crtc-
> >pipe);
> + else if (intel_dp_need_bigjoiner(intel_dp, connector,
> + adjusted_mode->crtc_hdisplay,
> + adjusted_mode->crtc_clock))
> pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc-
> >pipe);
>
> joined_pipes = intel_joiner_num_pipes(pipe_config);
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.h
> b/drivers/gpu/drm/i915/display/intel_dp.h
> index acd05dc7b8ad..6c607a218fbc 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.h
> +++ b/drivers/gpu/drm/i915/display/intel_dp.h
> @@ -153,9 +153,10 @@ 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,
> enum intel_joiner_pipe_count joined_pipes);
> -bool intel_dp_need_joiner(struct intel_dp *intel_dp,
> - struct intel_connector *connector,
> - int hdisplay, int clock);
> +bool intel_dp_need_bigjoiner(struct intel_dp *intel_dp,
> + struct intel_connector *connector,
> + int hdisplay, int clock);
> +bool intel_dp_need_ultrajoiner(struct intel_dp *intel_dp, int clock);
>
> 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 31a2acb7fa11..21b23f8eb5e7 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -579,9 +579,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))
> + if (intel_dp_need_ultrajoiner(intel_dp, adjusted_mode->crtc_clock))
> + pipe_config->joiner_pipes = GENMASK(crtc->pipe + 3, crtc-
> >pipe);
> + else if (intel_dp_need_bigjoiner(intel_dp, connector,
> + adjusted_mode->crtc_hdisplay,
> + adjusted_mode->crtc_clock))
> pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc-
> >pipe);
>
> pipe_config->sink_format = INTEL_OUTPUT_FORMAT_RGB; @@ -
> 1439,8 +1441,11 @@ 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)) {
> + if (intel_dp_need_ultrajoiner(intel_dp, target_clock)) {
> + joined_pipes = INTEL_PIPE_JOINER_BIG;
> + max_dotclk *= INTEL_PIPE_JOINER_BIG;
Should this not be ULTRA
Regards,
Suraj Kandpal
> + } else if (intel_dp_need_bigjoiner(intel_dp, intel_connector,
> + mode->hdisplay, target_clock)) {
> joined_pipes = INTEL_PIPE_JOINER_BIG;
> max_dotclk *= INTEL_PIPE_JOINER_BIG;
> }
> --
> 2.45.2
^ permalink raw reply [flat|nested] 32+ messages in thread
* RE: [PATCH 09/12] drm/i915/display/vdsc: Add ultrajoiner support with DSC
2024-07-18 8:18 ` [PATCH 09/12] drm/i915/display/vdsc: Add ultrajoiner support with DSC Ankit Nautiyal
@ 2024-08-01 6:41 ` Kandpal, Suraj
0 siblings, 0 replies; 32+ messages in thread
From: Kandpal, Suraj @ 2024-08-01 6:41 UTC (permalink / raw)
To: Nautiyal, Ankit K, intel-gfx@lists.freedesktop.org
Cc: Lisovskiy, Stanislav, Saarinen, Jani,
ville.syrjala@linux.intel.com
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Ankit
> Nautiyal
> Sent: Thursday, July 18, 2024 1:48 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: Lisovskiy, Stanislav <stanislav.lisovskiy@intel.com>; Saarinen, Jani
> <jani.saarinen@intel.com>; ville.syrjala@linux.intel.com
> Subject: [PATCH 09/12] drm/i915/display/vdsc: Add ultrajoiner support with
> DSC
>
> From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
>
> Add changes to DSC which are required for Ultrajoiner.
>
> 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_vdsc.c | 26 +++++++++++++++++++++--
> 1 file changed, 24 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c
> b/drivers/gpu/drm/i915/display/intel_vdsc.c
> index 11058bb37d5a..815fbffc2d97 100644
> --- a/drivers/gpu/drm/i915/display/intel_vdsc.c
> +++ b/drivers/gpu/drm/i915/display/intel_vdsc.c
> @@ -378,8 +378,11 @@ 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 joined_pipes = intel_joiner_num_pipes(crtc_state);
>
> - if (crtc_state->joiner_pipes)
> + if (joined_pipes == 4)
> + num_vdsc_instances *= 4;
> + else if (joined_pipes == 2)
> num_vdsc_instances *= 2;
>
Use enum here as well I think just doing A check of joined pipe no != invalid or none and then num_vdsc_instances *= pipes_joined Would be better.
> return num_vdsc_instances;
> @@ -770,6 +773,13 @@ void intel_uncompressed_joiner_enable(const struct
> intel_crtc_state *crtc_state)
> }
> }
>
> +static bool intel_crtc_ultrajoiner_enable_needed(const struct
> +intel_crtc_state *crtc_state) {
> + struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> +
> + return intel_joiner_num_pipes(crtc_state) == 4 && crtc->pipe !=
> +PIPE_D; }
> +
Ditto
Regards,
Suraj Kandpal
> void intel_dsc_enable(const struct intel_crtc_state *crtc_state) {
> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> @@ -789,8 +799,20 @@ 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 master/slave logic or
> + * any other logic, so lets just add helper function to
> + * at least hide this hassle..
> + */
> + if (intel_crtc_ultrajoiner_enable_needed(crtc_state))
> + dss_ctl1_val |= ULTRA_JOINER_ENABLE;
> +
> + if (intel_crtc_is_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))
> +
> + if (!intel_crtc_is_joiner_secondary(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 [flat|nested] 32+ messages in thread
* RE: [PATCH 11/12] drm/i915: Add new abstraction layer to handle pipe order for different joiners
2024-07-18 8:18 ` [PATCH 11/12] drm/i915: Add new abstraction layer to handle pipe order for different joiners Ankit Nautiyal
@ 2024-08-01 7:12 ` Kandpal, Suraj
0 siblings, 0 replies; 32+ messages in thread
From: Kandpal, Suraj @ 2024-08-01 7:12 UTC (permalink / raw)
To: Nautiyal, Ankit K, intel-gfx@lists.freedesktop.org
Cc: Lisovskiy, Stanislav, Saarinen, Jani,
ville.syrjala@linux.intel.com
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Ankit
> Nautiyal
> Sent: Thursday, July 18, 2024 1:48 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: Lisovskiy, Stanislav <stanislav.lisovskiy@intel.com>; Saarinen, Jani
> <jani.saarinen@intel.com>; ville.syrjala@linux.intel.com
> Subject: [PATCH 11/12] drm/i915: Add new abstraction layer to handle pipe
> order for different joiners
>
> From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
>
> Ultrajoiner case requires special treatment where both reverse and staight order
> iteration doesn't work(for instance disabling case requires order to be: primary
> master, slaves, secondary master).
>
> Lets unify our approach by using not only pipe masks for iterating required
> pipes based on joiner type used, but also using different "priority" arrays for
> each of those.
>
> v2: Fix checkpatch warnings. (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_ddi.c | 19 +++--
> drivers/gpu/drm/i915/display/intel_display.c | 89 ++++++++++++++++----
> drivers/gpu/drm/i915/display/intel_display.h | 7 ++
> drivers/gpu/drm/i915/display/intel_dp_mst.c | 19 +++--
> 4 files changed, 102 insertions(+), 32 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c
> b/drivers/gpu/drm/i915/display/intel_ddi.c
> index a07aca96e551..d54c9e51209e 100644
> --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> @@ -3116,10 +3116,11 @@ static void
> intel_ddi_post_disable_hdmi_or_sst(struct intel_atomic_state *state,
> const struct drm_connector_state
> *old_conn_state) {
> struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
> - struct intel_crtc *pipe_crtc;
> + struct intel_crtc *pipe_crtc; enum pipe pipe;
Can we have these declarations on different lines
>
> - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc,
> -
> intel_crtc_joined_pipe_mask(old_crtc_state)) {
> + for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
> +
> intel_crtc_joined_pipe_mask(old_crtc_state),
> +
> intel_get_pipe_order_disable(old_crtc_state)) {
> const struct intel_crtc_state *old_pipe_crtc_state =
> intel_atomic_get_old_crtc_state(state, pipe_crtc);
>
> @@ -3130,8 +3131,9 @@ static void
> intel_ddi_post_disable_hdmi_or_sst(struct intel_atomic_state *state,
>
> intel_ddi_disable_transcoder_func(old_crtc_state);
>
> - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc,
> -
> intel_crtc_joined_pipe_mask(old_crtc_state)) {
> + for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
> +
> intel_crtc_joined_pipe_mask(old_crtc_state),
> +
> intel_get_pipe_order_disable(old_crtc_state)) {
> const struct intel_crtc_state *old_pipe_crtc_state =
> intel_atomic_get_old_crtc_state(state, pipe_crtc);
>
> @@ -3383,7 +3385,7 @@ static void intel_enable_ddi(struct intel_atomic_state
> *state,
> const struct drm_connector_state *conn_state) {
> struct drm_i915_private *i915 = to_i915(encoder->base.dev);
> - struct intel_crtc *pipe_crtc;
> + struct intel_crtc *pipe_crtc; enum pipe pipe;
>
Ditto
> intel_ddi_enable_transcoder_func(encoder, crtc_state);
>
> @@ -3394,8 +3396,9 @@ static void intel_enable_ddi(struct intel_atomic_state
> *state,
>
> intel_ddi_wait_for_fec_status(encoder, crtc_state, true);
>
> - for_each_intel_crtc_in_pipe_mask_reverse(&i915->drm, pipe_crtc,
> -
> intel_crtc_joined_pipe_mask(crtc_state)) {
> + for_each_intel_crtc_in_mask_priority(i915, pipe_crtc, pipe,
> +
> intel_crtc_joined_pipe_mask(crtc_state),
> +
> intel_get_pipe_order_enable(crtc_state)) {
> const struct intel_crtc_state *pipe_crtc_state =
> intel_atomic_get_new_crtc_state(state, pipe_crtc);
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index d032fd8011d5..b6896058a594 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -1730,6 +1730,56 @@ static void hsw_configure_cpu_transcoder(const
> struct intel_crtc_state *crtc_sta
> hsw_set_transconf(crtc_state);
> }
>
> +static
> +bool intel_is_bigjoiner(const struct intel_crtc_state *pipe_config) {
> + return hweight8(pipe_config->joiner_pipes) == 2; }
> +
Use enums here
Regards,
Suraj Kandpal
> +static
> +bool intel_is_ultrajoiner(const struct intel_crtc_state *pipe_config) {
> + return hweight8(pipe_config->joiner_pipes) == 4; }
This function was already introduced back in the 5th patch as usual bool have a look
> +
> +const enum pipe *intel_get_pipe_order_enable(const struct
> +intel_crtc_state *crtc_state) {
> + static const enum pipe
> ultrajoiner_pipe_order_enable[I915_MAX_PIPES] = {
> + PIPE_B, PIPE_D, PIPE_C, PIPE_A
> + };
> + static const enum pipe bigjoiner_pipe_order_enable[I915_MAX_PIPES]
> = {
> + PIPE_B, PIPE_A, PIPE_D, PIPE_C
> + };
> + static const enum pipe nojoiner_pipe_order_enable[I915_MAX_PIPES] =
> {
> + PIPE_A, PIPE_B, PIPE_C, PIPE_D
> + };
> +
> + if (intel_is_ultrajoiner(crtc_state))
> + return ultrajoiner_pipe_order_enable;
> + else if (intel_is_bigjoiner(crtc_state))
> + return bigjoiner_pipe_order_enable;
> + return nojoiner_pipe_order_enable;
> +}
> +
> +const enum pipe *intel_get_pipe_order_disable(const struct
> +intel_crtc_state *crtc_state) {
> + static const enum pipe
> ultrajoiner_pipe_order_disable[I915_MAX_PIPES] = {
> + PIPE_A, PIPE_B, PIPE_D, PIPE_C
> + };
> + static const enum pipe bigjoiner_pipe_order_disable[I915_MAX_PIPES]
> = {
> + PIPE_A, PIPE_B, PIPE_C, PIPE_D
> + };
> + static const enum pipe nojoiner_pipe_order_disable[I915_MAX_PIPES]
> = {
> + PIPE_A, PIPE_B, PIPE_C, PIPE_D
> + };
> +
> + if (intel_is_ultrajoiner(crtc_state))
> + return ultrajoiner_pipe_order_disable;
> + else if (intel_is_bigjoiner(crtc_state))
> + return bigjoiner_pipe_order_disable;
> + return nojoiner_pipe_order_disable;
> +}
> +
> static void hsw_crtc_enable(struct intel_atomic_state *state,
> struct intel_crtc *crtc)
> {
> @@ -1737,19 +1787,21 @@ static void hsw_crtc_enable(struct
> intel_atomic_state *state,
> intel_atomic_get_new_crtc_state(state, crtc);
> struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
> enum transcoder cpu_transcoder = new_crtc_state->cpu_transcoder;
> - struct intel_crtc *pipe_crtc;
> + struct intel_crtc *pipe_crtc; enum pipe pipe;
>
> if (drm_WARN_ON(&dev_priv->drm, crtc->active))
> return;
>
> - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc,
> -
> intel_crtc_joined_pipe_mask(new_crtc_state))
> + for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
> +
> intel_crtc_joined_pipe_mask(new_crtc_state),
> +
> intel_get_pipe_order_enable(new_crtc_state))
> intel_dmc_enable_pipe(dev_priv, pipe_crtc->pipe);
>
> intel_encoders_pre_pll_enable(state, crtc);
>
> - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc,
> -
> intel_crtc_joined_pipe_mask(new_crtc_state)) {
> + for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
> +
> intel_crtc_joined_pipe_mask(new_crtc_state),
> +
> intel_get_pipe_order_enable(new_crtc_state)) {
> const struct intel_crtc_state *pipe_crtc_state =
> intel_atomic_get_new_crtc_state(state, pipe_crtc);
>
> @@ -1759,8 +1811,9 @@ static void hsw_crtc_enable(struct intel_atomic_state
> *state,
>
> intel_encoders_pre_enable(state, crtc);
>
> - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc,
> -
> intel_crtc_joined_pipe_mask(new_crtc_state)) {
> + for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
> +
> intel_crtc_joined_pipe_mask(new_crtc_state),
> +
> intel_get_pipe_order_enable(new_crtc_state)) {
> const struct intel_crtc_state *pipe_crtc_state =
> intel_atomic_get_new_crtc_state(state, pipe_crtc);
>
> @@ -1778,8 +1831,9 @@ static void hsw_crtc_enable(struct intel_atomic_state
> *state,
> if (!transcoder_is_dsi(cpu_transcoder))
> hsw_configure_cpu_transcoder(new_crtc_state);
>
> - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc,
> -
> intel_crtc_joined_pipe_mask(new_crtc_state)) {
> + for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
> +
> intel_crtc_joined_pipe_mask(new_crtc_state),
> +
> intel_get_pipe_order_enable(new_crtc_state)) {
> const struct intel_crtc_state *pipe_crtc_state =
> intel_atomic_get_new_crtc_state(state, pipe_crtc);
>
> @@ -1814,8 +1868,9 @@ static void hsw_crtc_enable(struct intel_atomic_state
> *state,
>
> intel_encoders_enable(state, crtc);
>
> - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc,
> -
> intel_crtc_joined_pipe_mask(new_crtc_state)) {
> + for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
> +
> intel_crtc_joined_pipe_mask(new_crtc_state),
> +
> intel_get_pipe_order_enable(new_crtc_state)) {
> const struct intel_crtc_state *pipe_crtc_state =
> intel_atomic_get_new_crtc_state(state, pipe_crtc);
> enum pipe hsw_workaround_pipe;
> @@ -1900,7 +1955,7 @@ static void hsw_crtc_disable(struct
> intel_atomic_state *state,
> const struct intel_crtc_state *old_crtc_state =
> intel_atomic_get_old_crtc_state(state, crtc);
> struct drm_i915_private *i915 = to_i915(crtc->base.dev);
> - struct intel_crtc *pipe_crtc;
> + struct intel_crtc *pipe_crtc; enum pipe pipe;
>
> /*
> * FIXME collapse everything to one hook.
> @@ -1909,8 +1964,9 @@ static void hsw_crtc_disable(struct
> intel_atomic_state *state,
> intel_encoders_disable(state, crtc);
> intel_encoders_post_disable(state, crtc);
>
> - for_each_intel_crtc_in_pipe_mask(&i915->drm, pipe_crtc,
> -
> intel_crtc_joined_pipe_mask(old_crtc_state)) {
> + for_each_intel_crtc_in_mask_priority(i915, pipe_crtc, pipe,
> +
> intel_crtc_joined_pipe_mask(old_crtc_state),
> +
> intel_get_pipe_order_disable(old_crtc_state)) {
> const struct intel_crtc_state *old_pipe_crtc_state =
> intel_atomic_get_old_crtc_state(state, pipe_crtc);
>
> @@ -1919,8 +1975,9 @@ static void hsw_crtc_disable(struct
> intel_atomic_state *state,
>
> intel_encoders_post_pll_disable(state, crtc);
>
> - for_each_intel_crtc_in_pipe_mask(&i915->drm, pipe_crtc,
> -
> intel_crtc_joined_pipe_mask(old_crtc_state))
> + for_each_intel_crtc_in_mask_priority(i915, pipe_crtc, pipe,
> +
> intel_crtc_joined_pipe_mask(old_crtc_state),
> +
> intel_get_pipe_order_disable(old_crtc_state))
> intel_dmc_disable_pipe(i915, pipe_crtc->pipe); }
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h
> b/drivers/gpu/drm/i915/display/intel_display.h
> index 35e68e4cc712..4cfd1da0bbc0 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -275,6 +275,11 @@ enum phy_fia {
> &(dev)->mode_config.crtc_list, \
> base.head)
>
> +#define for_each_intel_crtc_in_mask_priority(__dev_priv, intel_crtc, __p,
> __mask, __priolist) \
> + for_each_pipe(__dev_priv, __p) \
> + for_each_if((__mask) & BIT(__priolist[__p])) \
> + for_each_if(intel_crtc = intel_crtc_for_pipe(__dev_priv,
> +__priolist[__p]))
> +
> #define for_each_intel_crtc_in_pipe_mask(dev, intel_crtc, pipe_mask) \
> list_for_each_entry(intel_crtc, \
> &(dev)->mode_config.crtc_list, \
> @@ -432,6 +437,8 @@ 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);
> struct intel_crtc *intel_joiner_primary_crtc(const struct intel_crtc_state
> *crtc_state);
> +const enum pipe *intel_get_pipe_order_enable(const struct
> +intel_crtc_state *crtc_state); const enum pipe
> +*intel_get_pipe_order_disable(const struct intel_crtc_state
> +*crtc_state);
> bool intel_crtc_get_pipe_config(struct intel_crtc_state *crtc_state); bool
> intel_pipe_config_compare(const struct intel_crtc_state *current_config,
> const struct intel_crtc_state *pipe_config, diff --git
> a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index 21b23f8eb5e7..d4fc4439ce2b 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -1007,7 +1007,7 @@ static void intel_mst_post_disable_dp(struct
> intel_atomic_state *state,
> struct drm_dp_mst_atomic_payload *new_payload =
> drm_atomic_get_mst_payload_state(new_mst_state, connector-
> >port);
> struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> - struct intel_crtc *pipe_crtc;
> + struct intel_crtc *pipe_crtc; enum pipe pipe;
> bool last_mst_stream;
>
> intel_dp->active_mst_links--;
> @@ -1016,8 +1016,9 @@ static void intel_mst_post_disable_dp(struct
> intel_atomic_state *state,
> DISPLAY_VER(dev_priv) >= 12 && last_mst_stream &&
> !intel_dp_mst_is_master_trans(old_crtc_state));
>
> - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc,
> -
> intel_crtc_joined_pipe_mask(old_crtc_state)) {
> + for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
> +
> intel_crtc_joined_pipe_mask(old_crtc_state),
> +
> intel_get_pipe_order_disable(old_crtc_state)) {
> const struct intel_crtc_state *old_pipe_crtc_state =
> intel_atomic_get_old_crtc_state(state, pipe_crtc);
>
> @@ -1041,8 +1042,9 @@ static void intel_mst_post_disable_dp(struct
> intel_atomic_state *state,
>
> intel_ddi_disable_transcoder_func(old_crtc_state);
>
> - for_each_intel_crtc_in_pipe_mask(&dev_priv->drm, pipe_crtc,
> -
> intel_crtc_joined_pipe_mask(old_crtc_state)) {
> + for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
> +
> intel_crtc_joined_pipe_mask(old_crtc_state),
> +
> intel_get_pipe_order_disable(old_crtc_state)) {
> const struct intel_crtc_state *old_pipe_crtc_state =
> intel_atomic_get_old_crtc_state(state, pipe_crtc);
>
> @@ -1231,7 +1233,7 @@ static void intel_mst_enable_dp(struct
> intel_atomic_state *state,
> drm_atomic_get_new_mst_topology_state(&state->base,
> &intel_dp->mst_mgr);
> enum transcoder trans = pipe_config->cpu_transcoder;
> bool first_mst_stream = intel_dp->active_mst_links == 1;
> - struct intel_crtc *pipe_crtc;
> + struct intel_crtc *pipe_crtc; enum pipe pipe;
>
> drm_WARN_ON(&dev_priv->drm, pipe_config->has_pch_encoder);
>
> @@ -1275,8 +1277,9 @@ static void intel_mst_enable_dp(struct
> intel_atomic_state *state,
>
> intel_enable_transcoder(pipe_config);
>
> - for_each_intel_crtc_in_pipe_mask_reverse(&dev_priv->drm, pipe_crtc,
> -
> intel_crtc_joined_pipe_mask(pipe_config)) {
> + for_each_intel_crtc_in_mask_priority(dev_priv, pipe_crtc, pipe,
> +
> intel_crtc_joined_pipe_mask(pipe_config),
> +
> intel_get_pipe_order_enable(pipe_config)) {
> const struct intel_crtc_state *pipe_crtc_state =
> intel_atomic_get_new_crtc_state(state, pipe_crtc);
>
> --
> 2.45.2
^ permalink raw reply [flat|nested] 32+ messages in thread
* RE: [PATCH 12/12] drm/i915/intel_dp: Add support for forcing ultrajoiner
2024-07-18 8:18 ` [PATCH 12/12] drm/i915/intel_dp: Add support for forcing ultrajoiner Ankit Nautiyal
@ 2024-08-01 7:13 ` Kandpal, Suraj
0 siblings, 0 replies; 32+ messages in thread
From: Kandpal, Suraj @ 2024-08-01 7:13 UTC (permalink / raw)
To: Nautiyal, Ankit K, intel-gfx@lists.freedesktop.org
Cc: Lisovskiy, Stanislav, Saarinen, Jani,
ville.syrjala@linux.intel.com
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Ankit
> Nautiyal
> Sent: Thursday, July 18, 2024 1:48 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: Lisovskiy, Stanislav <stanislav.lisovskiy@intel.com>; Saarinen, Jani
> <jani.saarinen@intel.com>; ville.syrjala@linux.intel.com
> Subject: [PATCH 12/12] drm/i915/intel_dp: Add support for forcing ultrajoiner
>
> Allow forcing ultrajoiner through debugfs.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
LGTM
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_dp.c | 11 +++++++----
> drivers/gpu/drm/i915/display/intel_dp.h | 4 +++-
> drivers/gpu/drm/i915/display/intel_dp_mst.c | 6 ++++--
> 3 files changed, 14 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index c0a1f2603274..da6d8acf710a 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -1208,7 +1208,9 @@ bool intel_can_ultrajoiner(const struct intel_encoder
> *encoder)
> return IS_DGFX(i915) && DISPLAY_VER(i915) >= 14; }
>
> -bool intel_dp_need_ultrajoiner(struct intel_dp *dp, int clock)
> +bool intel_dp_need_ultrajoiner(struct intel_dp *dp,
> + struct intel_connector *connector,
> + int clock)
> {
> const struct intel_encoder *encoder = &dp_to_dig_port(dp)->base;
> struct drm_i915_private *i915 = to_i915(encoder->base.dev); @@ -
> 1216,7 +1218,8 @@ bool intel_dp_need_ultrajoiner(struct intel_dp *dp, int
> clock)
> if (!intel_can_ultrajoiner(encoder))
> return false;
>
> - return clock > (i915->display.cdclk.max_dotclk_freq * 2);
> + return clock > (i915->display.cdclk.max_dotclk_freq * 2) ||
> + connector->force_joined_pipes == INTEL_PIPE_JOINER_ULTRA;
> }
>
> static enum drm_mode_status
> @@ -1255,7 +1258,7 @@ intel_dp_mode_valid(struct drm_connector
> *_connector,
> target_clock = fixed_mode->clock;
> }
>
> - if (intel_dp_need_ultrajoiner(intel_dp, target_clock)) {
> + if (intel_dp_need_ultrajoiner(intel_dp, connector, target_clock)) {
> joined_pipes = INTEL_PIPE_JOINER_ULTRA;
> max_dotclk *= INTEL_PIPE_JOINER_ULTRA;
> } else if (intel_dp_need_bigjoiner(intel_dp, connector, @@ -2465,7
> +2468,7 @@ intel_dp_compute_link_config(struct intel_encoder *encoder,
> !intel_dp_supports_fec(intel_dp, connector, pipe_config))
> return -EINVAL;
>
> - if (intel_dp_need_ultrajoiner(intel_dp, adjusted_mode->crtc_clock))
> + if (intel_dp_need_ultrajoiner(intel_dp, connector,
> +adjusted_mode->crtc_clock))
> pipe_config->joiner_pipes = GENMASK(crtc->pipe + 3, crtc-
> >pipe);
> else if (intel_dp_need_bigjoiner(intel_dp, connector,
> adjusted_mode->crtc_hdisplay,
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.h
> b/drivers/gpu/drm/i915/display/intel_dp.h
> index 6c607a218fbc..b23db3eb477a 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.h
> +++ b/drivers/gpu/drm/i915/display/intel_dp.h
> @@ -156,7 +156,9 @@ u8 intel_dp_dsc_get_slice_count(const struct
> intel_connector *connector, bool intel_dp_need_bigjoiner(struct intel_dp
> *intel_dp,
> struct intel_connector *connector,
> int hdisplay, int clock);
> -bool intel_dp_need_ultrajoiner(struct intel_dp *intel_dp, int clock);
> +bool intel_dp_need_ultrajoiner(struct intel_dp *intel_dp,
> + struct intel_connector *connector,
> + 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 d4fc4439ce2b..b4351d37b963 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -579,7 +579,8 @@ 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_ultrajoiner(intel_dp, adjusted_mode->crtc_clock))
> + if (intel_dp_need_ultrajoiner(intel_dp, connector,
> + adjusted_mode->crtc_clock))
> pipe_config->joiner_pipes = GENMASK(crtc->pipe + 3, crtc-
> >pipe);
> else if (intel_dp_need_bigjoiner(intel_dp, connector,
> adjusted_mode->crtc_hdisplay,
> @@ -1444,7 +1445,8 @@ 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_ultrajoiner(intel_dp, target_clock)) {
> + if (intel_dp_need_ultrajoiner(intel_dp, intel_connector,
> + target_clock)) {
> joined_pipes = INTEL_PIPE_JOINER_BIG;
> max_dotclk *= INTEL_PIPE_JOINER_BIG;
> } else if (intel_dp_need_bigjoiner(intel_dp, intel_connector,
> --
> 2.45.2
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH 05/12] drm/i915: Add some essential functionality for joiners
2024-07-18 8:17 ` [PATCH 05/12] drm/i915: Add some essential functionality for joiners Ankit Nautiyal
2024-07-31 7:14 ` Kandpal, Suraj
@ 2024-08-16 8:23 ` Nautiyal, Ankit K
2024-08-21 13:41 ` Ville Syrjälä
1 sibling, 1 reply; 32+ messages in thread
From: Nautiyal, Ankit K @ 2024-08-16 8:23 UTC (permalink / raw)
To: intel-gfx; +Cc: stanislav.lisovskiy, jani.saarinen, ville.syrjala
On 7/18/2024 1:47 PM, Ankit Nautiyal wrote:
> From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
>
> In most of the cases we now try to avoid mentioning things like
> "bigjoiner" or "ultrajoiner" trying to unify the API and refer
> mostly to all this functionality as "joiner".
> In majority cases that should be way to go.
> However in some cases we still need to distinguish between
> bigjoiner primaries and secondaries(such as DSC register programming).
>
> Create correspondent helper functions and start using them,
> in order be prepared for adding ultrajoiner functionality.
>
> v2: Fixed checkpatch warnings (Ankit)
>
> Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> .../gpu/drm/i915/display/intel_atomic_plane.c | 2 +-
> drivers/gpu/drm/i915/display/intel_display.c | 75 ++++++++++++++++---
> drivers/gpu/drm/i915/display/intel_display.h | 8 +-
> .../drm/i915/display/intel_modeset_verify.c | 2 +-
> drivers/gpu/drm/i915/display/intel_vdsc.c | 4 +-
> 5 files changed, 76 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> index e979786aa5cf..9862d0339e6a 100644
> --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> @@ -724,7 +724,7 @@ int intel_plane_atomic_check(struct intel_atomic_state *state,
>
> if (new_crtc_state && intel_crtc_is_joiner_secondary(new_crtc_state)) {
> struct intel_crtc *primary_crtc =
> - intel_primary_crtc(new_crtc_state);
> + intel_joiner_primary_crtc(new_crtc_state);
> struct intel_plane *primary_crtc_plane =
> intel_crtc_get_plane(primary_crtc, plane->id);
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 26e4b0c2e9f7..38e7c6811bf3 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -252,6 +252,68 @@ static enum pipe joiner_primary_pipe(const struct intel_crtc_state *crtc_state)
> return ffs(crtc_state->joiner_pipes) - 1;
> }
>
> +int intel_joiner_num_pipes(const struct intel_crtc_state *crtc_state)
> +{
> + return hweight8(crtc_state->joiner_pipes);
> +}
> +
> +bool intel_crtc_is_ultrajoiner(const struct intel_crtc_state *crtc_state)
> +{
> + return intel_joiner_num_pipes(crtc_state) == 4;
On having a re-look, I think we need to change this. Currently there is
no way of knowing if its 2 set of bigjoiners or 1 ultrajoiner.
Perhaps need one more bit for ultrajoiner or a different flag altogether.
Regards,
Ankit
> +}
> +
> +static bool intel_is_joiner(const struct intel_crtc_state *crtc_state)
> +{
> + return intel_joiner_num_pipes(crtc_state) > 1;
> +}
> +
> +static u8 bigjoiner_primary_pipes(const struct intel_crtc_state *crtc_state)
> +{
> + int lsb = ffs(crtc_state->joiner_pipes) - 1;
> + int msb = fls(crtc_state->joiner_pipes) - 1;
> + int i;
> + u8 bigjoiner_primary_mask = 0;
> +
> + for (i = lsb; i < msb; i += 4) {
> + /*
> + * Regardless of how joiner_pipes mask is set, currently
> + * we always assume, that primary pipe bit goes before secondary
> + * pipe bit. So in each set of 2 bits, least significant bit is
> + * bigjoiner primary pipe and most significant bit is secondary pipe.
> + */
> + bigjoiner_primary_mask |=
> + ((BIT(0) | BIT(2)) << i) & crtc_state->joiner_pipes;
> + }
> +
> + return bigjoiner_primary_mask;
> +}
> +
> +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 (!intel_is_joiner(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)
> +{
> + if (!intel_is_joiner(crtc_state))
> + return false;
> +
> + return !intel_crtc_is_bigjoiner_primary(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) &&
> + (crtc->pipe == joiner_primary_pipe(crtc_state));
> +}
> +
> u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state)
> {
> if (crtc_state->joiner_pipes)
> @@ -276,11 +338,6 @@ bool intel_crtc_is_joiner_primary(const struct intel_crtc_state *crtc_state)
> crtc->pipe == joiner_primary_pipe(crtc_state);
> }
>
> -int intel_joiner_num_pipes(const struct intel_crtc_state *crtc_state)
> -{
> - return hweight8(crtc_state->joiner_pipes);
> -}
> -
> u8 intel_crtc_joined_pipe_mask(const struct intel_crtc_state *crtc_state)
> {
> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> @@ -288,7 +345,7 @@ u8 intel_crtc_joined_pipe_mask(const struct intel_crtc_state *crtc_state)
> return BIT(crtc->pipe) | crtc_state->joiner_pipes;
> }
>
> -struct intel_crtc *intel_primary_crtc(const struct intel_crtc_state *crtc_state)
> +struct intel_crtc *intel_joiner_primary_crtc(const struct intel_crtc_state *crtc_state)
> {
> struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
>
> @@ -808,7 +865,7 @@ intel_get_crtc_new_encoder(const struct intel_atomic_state *state,
> int num_encoders = 0;
> int i;
>
> - primary_crtc = intel_primary_crtc(crtc_state);
> + primary_crtc = intel_joiner_primary_crtc(crtc_state);
>
> for_each_new_connector_in_state(&state->base, connector, connector_state, i) {
> if (connector_state->crtc != &primary_crtc->base)
> @@ -4527,7 +4584,7 @@ copy_joiner_crtc_state_nomodeset(struct intel_atomic_state *state,
> {
> struct intel_crtc_state *secondary_crtc_state =
> intel_atomic_get_new_crtc_state(state, secondary_crtc);
> - struct intel_crtc *primary_crtc = intel_primary_crtc(secondary_crtc_state);
> + struct intel_crtc *primary_crtc = intel_joiner_primary_crtc(secondary_crtc_state);
> const struct intel_crtc_state *primary_crtc_state =
> intel_atomic_get_new_crtc_state(state, primary_crtc);
>
> @@ -4547,7 +4604,7 @@ copy_joiner_crtc_state_modeset(struct intel_atomic_state *state,
> {
> struct intel_crtc_state *secondary_crtc_state =
> intel_atomic_get_new_crtc_state(state, secondary_crtc);
> - struct intel_crtc *primary_crtc = intel_primary_crtc(secondary_crtc_state);
> + struct intel_crtc *primary_crtc = intel_joiner_primary_crtc(secondary_crtc_state);
> const struct intel_crtc_state *primary_crtc_state =
> intel_atomic_get_new_crtc_state(state, primary_crtc);
> struct intel_crtc_state *saved_state;
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
> index bf665f947b97..35e68e4cc712 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -424,10 +424,14 @@ enum phy intel_port_to_phy(struct drm_i915_private *i915, enum port port);
> bool is_trans_port_sync_mode(const struct intel_crtc_state *state);
> bool is_trans_port_sync_master(const struct intel_crtc_state *state);
> u8 intel_crtc_joined_pipe_mask(const struct intel_crtc_state *crtc_state);
> -bool intel_crtc_is_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_joiner_secondary(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);
> -struct intel_crtc *intel_primary_crtc(const struct intel_crtc_state *crtc_state);
> +struct intel_crtc *intel_joiner_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,
> const struct intel_crtc_state *pipe_config,
> diff --git a/drivers/gpu/drm/i915/display/intel_modeset_verify.c b/drivers/gpu/drm/i915/display/intel_modeset_verify.c
> index 3491db5cad31..b53b810c6470 100644
> --- a/drivers/gpu/drm/i915/display/intel_modeset_verify.c
> +++ b/drivers/gpu/drm/i915/display/intel_modeset_verify.c
> @@ -193,7 +193,7 @@ verify_crtc_state(struct intel_atomic_state *state,
> "transitional active state does not match atomic hw state (expected %i, found %i)\n",
> sw_crtc_state->hw.active, crtc->active);
>
> - primary_crtc = intel_primary_crtc(sw_crtc_state);
> + primary_crtc = intel_joiner_primary_crtc(sw_crtc_state);
>
> for_each_encoder_on_crtc(dev, &primary_crtc->base, encoder) {
> enum pipe pipe;
> diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c b/drivers/gpu/drm/i915/display/intel_vdsc.c
> index b9687b7692b8..11058bb37d5a 100644
> --- a/drivers/gpu/drm/i915/display/intel_vdsc.c
> +++ b/drivers/gpu/drm/i915/display/intel_vdsc.c
> @@ -761,7 +761,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;
> @@ -790,7 +790,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);
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH 05/12] drm/i915: Add some essential functionality for joiners
2024-08-16 8:23 ` Nautiyal, Ankit K
@ 2024-08-21 13:41 ` Ville Syrjälä
2024-08-21 14:48 ` Nautiyal, Ankit K
0 siblings, 1 reply; 32+ messages in thread
From: Ville Syrjälä @ 2024-08-21 13:41 UTC (permalink / raw)
To: Nautiyal, Ankit K; +Cc: intel-gfx, stanislav.lisovskiy, jani.saarinen
On Fri, Aug 16, 2024 at 01:53:20PM +0530, Nautiyal, Ankit K wrote:
>
> On 7/18/2024 1:47 PM, Ankit Nautiyal wrote:
> > From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> >
> > In most of the cases we now try to avoid mentioning things like
> > "bigjoiner" or "ultrajoiner" trying to unify the API and refer
> > mostly to all this functionality as "joiner".
> > In majority cases that should be way to go.
> > However in some cases we still need to distinguish between
> > bigjoiner primaries and secondaries(such as DSC register programming).
> >
> > Create correspondent helper functions and start using them,
> > in order be prepared for adding ultrajoiner functionality.
> >
> > v2: Fixed checkpatch warnings (Ankit)
> >
> > Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> > Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> > ---
> > .../gpu/drm/i915/display/intel_atomic_plane.c | 2 +-
> > drivers/gpu/drm/i915/display/intel_display.c | 75 ++++++++++++++++---
> > drivers/gpu/drm/i915/display/intel_display.h | 8 +-
> > .../drm/i915/display/intel_modeset_verify.c | 2 +-
> > drivers/gpu/drm/i915/display/intel_vdsc.c | 4 +-
> > 5 files changed, 76 insertions(+), 15 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> > index e979786aa5cf..9862d0339e6a 100644
> > --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> > +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> > @@ -724,7 +724,7 @@ int intel_plane_atomic_check(struct intel_atomic_state *state,
> >
> > if (new_crtc_state && intel_crtc_is_joiner_secondary(new_crtc_state)) {
> > struct intel_crtc *primary_crtc =
> > - intel_primary_crtc(new_crtc_state);
> > + intel_joiner_primary_crtc(new_crtc_state);
> > struct intel_plane *primary_crtc_plane =
> > intel_crtc_get_plane(primary_crtc, plane->id);
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> > index 26e4b0c2e9f7..38e7c6811bf3 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > @@ -252,6 +252,68 @@ static enum pipe joiner_primary_pipe(const struct intel_crtc_state *crtc_state)
> > return ffs(crtc_state->joiner_pipes) - 1;
> > }
> >
> > +int intel_joiner_num_pipes(const struct intel_crtc_state *crtc_state)
> > +{
> > + return hweight8(crtc_state->joiner_pipes);
> > +}
> > +
> > +bool intel_crtc_is_ultrajoiner(const struct intel_crtc_state *crtc_state)
> > +{
> > + return intel_joiner_num_pipes(crtc_state) == 4;
>
>
> On having a re-look, I think we need to change this. Currently there is
> no way of knowing if its 2 set of bigjoiners or 1 ultrajoiner.
There is no such thing as 2 sets of bigjoiners on one crtc.
>
> Perhaps need one more bit for ultrajoiner or a different flag altogether.
>
> Regards,
>
> Ankit
>
> > +}
> > +
> > +static bool intel_is_joiner(const struct intel_crtc_state *crtc_state)
> > +{
> > + return intel_joiner_num_pipes(crtc_state) > 1;
> > +}
> > +
> > +static u8 bigjoiner_primary_pipes(const struct intel_crtc_state *crtc_state)
> > +{
> > + int lsb = ffs(crtc_state->joiner_pipes) - 1;
> > + int msb = fls(crtc_state->joiner_pipes) - 1;
> > + int i;
> > + u8 bigjoiner_primary_mask = 0;
> > +
> > + for (i = lsb; i < msb; i += 4) {
> > + /*
> > + * Regardless of how joiner_pipes mask is set, currently
> > + * we always assume, that primary pipe bit goes before secondary
> > + * pipe bit. So in each set of 2 bits, least significant bit is
> > + * bigjoiner primary pipe and most significant bit is secondary pipe.
> > + */
> > + bigjoiner_primary_mask |=
> > + ((BIT(0) | BIT(2)) << i) & crtc_state->joiner_pipes;
> > + }
> > +
> > + return bigjoiner_primary_mask;
> > +}
> > +
> > +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 (!intel_is_joiner(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)
> > +{
> > + if (!intel_is_joiner(crtc_state))
> > + return false;
> > +
> > + return !intel_crtc_is_bigjoiner_primary(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) &&
> > + (crtc->pipe == joiner_primary_pipe(crtc_state));
> > +}
> > +
> > u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state)
> > {
> > if (crtc_state->joiner_pipes)
> > @@ -276,11 +338,6 @@ bool intel_crtc_is_joiner_primary(const struct intel_crtc_state *crtc_state)
> > crtc->pipe == joiner_primary_pipe(crtc_state);
> > }
> >
> > -int intel_joiner_num_pipes(const struct intel_crtc_state *crtc_state)
> > -{
> > - return hweight8(crtc_state->joiner_pipes);
> > -}
> > -
> > u8 intel_crtc_joined_pipe_mask(const struct intel_crtc_state *crtc_state)
> > {
> > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> > @@ -288,7 +345,7 @@ u8 intel_crtc_joined_pipe_mask(const struct intel_crtc_state *crtc_state)
> > return BIT(crtc->pipe) | crtc_state->joiner_pipes;
> > }
> >
> > -struct intel_crtc *intel_primary_crtc(const struct intel_crtc_state *crtc_state)
> > +struct intel_crtc *intel_joiner_primary_crtc(const struct intel_crtc_state *crtc_state)
> > {
> > struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
> >
> > @@ -808,7 +865,7 @@ intel_get_crtc_new_encoder(const struct intel_atomic_state *state,
> > int num_encoders = 0;
> > int i;
> >
> > - primary_crtc = intel_primary_crtc(crtc_state);
> > + primary_crtc = intel_joiner_primary_crtc(crtc_state);
> >
> > for_each_new_connector_in_state(&state->base, connector, connector_state, i) {
> > if (connector_state->crtc != &primary_crtc->base)
> > @@ -4527,7 +4584,7 @@ copy_joiner_crtc_state_nomodeset(struct intel_atomic_state *state,
> > {
> > struct intel_crtc_state *secondary_crtc_state =
> > intel_atomic_get_new_crtc_state(state, secondary_crtc);
> > - struct intel_crtc *primary_crtc = intel_primary_crtc(secondary_crtc_state);
> > + struct intel_crtc *primary_crtc = intel_joiner_primary_crtc(secondary_crtc_state);
> > const struct intel_crtc_state *primary_crtc_state =
> > intel_atomic_get_new_crtc_state(state, primary_crtc);
> >
> > @@ -4547,7 +4604,7 @@ copy_joiner_crtc_state_modeset(struct intel_atomic_state *state,
> > {
> > struct intel_crtc_state *secondary_crtc_state =
> > intel_atomic_get_new_crtc_state(state, secondary_crtc);
> > - struct intel_crtc *primary_crtc = intel_primary_crtc(secondary_crtc_state);
> > + struct intel_crtc *primary_crtc = intel_joiner_primary_crtc(secondary_crtc_state);
> > const struct intel_crtc_state *primary_crtc_state =
> > intel_atomic_get_new_crtc_state(state, primary_crtc);
> > struct intel_crtc_state *saved_state;
> > diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
> > index bf665f947b97..35e68e4cc712 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display.h
> > +++ b/drivers/gpu/drm/i915/display/intel_display.h
> > @@ -424,10 +424,14 @@ enum phy intel_port_to_phy(struct drm_i915_private *i915, enum port port);
> > bool is_trans_port_sync_mode(const struct intel_crtc_state *state);
> > bool is_trans_port_sync_master(const struct intel_crtc_state *state);
> > u8 intel_crtc_joined_pipe_mask(const struct intel_crtc_state *crtc_state);
> > -bool intel_crtc_is_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_joiner_secondary(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);
> > -struct intel_crtc *intel_primary_crtc(const struct intel_crtc_state *crtc_state);
> > +struct intel_crtc *intel_joiner_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,
> > const struct intel_crtc_state *pipe_config,
> > diff --git a/drivers/gpu/drm/i915/display/intel_modeset_verify.c b/drivers/gpu/drm/i915/display/intel_modeset_verify.c
> > index 3491db5cad31..b53b810c6470 100644
> > --- a/drivers/gpu/drm/i915/display/intel_modeset_verify.c
> > +++ b/drivers/gpu/drm/i915/display/intel_modeset_verify.c
> > @@ -193,7 +193,7 @@ verify_crtc_state(struct intel_atomic_state *state,
> > "transitional active state does not match atomic hw state (expected %i, found %i)\n",
> > sw_crtc_state->hw.active, crtc->active);
> >
> > - primary_crtc = intel_primary_crtc(sw_crtc_state);
> > + primary_crtc = intel_joiner_primary_crtc(sw_crtc_state);
> >
> > for_each_encoder_on_crtc(dev, &primary_crtc->base, encoder) {
> > enum pipe pipe;
> > diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c b/drivers/gpu/drm/i915/display/intel_vdsc.c
> > index b9687b7692b8..11058bb37d5a 100644
> > --- a/drivers/gpu/drm/i915/display/intel_vdsc.c
> > +++ b/drivers/gpu/drm/i915/display/intel_vdsc.c
> > @@ -761,7 +761,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;
> > @@ -790,7 +790,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);
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH 05/12] drm/i915: Add some essential functionality for joiners
2024-08-21 13:41 ` Ville Syrjälä
@ 2024-08-21 14:48 ` Nautiyal, Ankit K
0 siblings, 0 replies; 32+ messages in thread
From: Nautiyal, Ankit K @ 2024-08-21 14:48 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx, stanislav.lisovskiy, jani.saarinen
On 8/21/2024 7:11 PM, Ville Syrjälä wrote:
> On Fri, Aug 16, 2024 at 01:53:20PM +0530, Nautiyal, Ankit K wrote:
>> On 7/18/2024 1:47 PM, Ankit Nautiyal wrote:
>>> From: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
>>>
>>> In most of the cases we now try to avoid mentioning things like
>>> "bigjoiner" or "ultrajoiner" trying to unify the API and refer
>>> mostly to all this functionality as "joiner".
>>> In majority cases that should be way to go.
>>> However in some cases we still need to distinguish between
>>> bigjoiner primaries and secondaries(such as DSC register programming).
>>>
>>> Create correspondent helper functions and start using them,
>>> in order be prepared for adding ultrajoiner functionality.
>>>
>>> v2: Fixed checkpatch warnings (Ankit)
>>>
>>> Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
>>> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
>>> ---
>>> .../gpu/drm/i915/display/intel_atomic_plane.c | 2 +-
>>> drivers/gpu/drm/i915/display/intel_display.c | 75 ++++++++++++++++---
>>> drivers/gpu/drm/i915/display/intel_display.h | 8 +-
>>> .../drm/i915/display/intel_modeset_verify.c | 2 +-
>>> drivers/gpu/drm/i915/display/intel_vdsc.c | 4 +-
>>> 5 files changed, 76 insertions(+), 15 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
>>> index e979786aa5cf..9862d0339e6a 100644
>>> --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
>>> +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
>>> @@ -724,7 +724,7 @@ int intel_plane_atomic_check(struct intel_atomic_state *state,
>>>
>>> if (new_crtc_state && intel_crtc_is_joiner_secondary(new_crtc_state)) {
>>> struct intel_crtc *primary_crtc =
>>> - intel_primary_crtc(new_crtc_state);
>>> + intel_joiner_primary_crtc(new_crtc_state);
>>> struct intel_plane *primary_crtc_plane =
>>> intel_crtc_get_plane(primary_crtc, plane->id);
>>>
>>> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
>>> index 26e4b0c2e9f7..38e7c6811bf3 100644
>>> --- a/drivers/gpu/drm/i915/display/intel_display.c
>>> +++ b/drivers/gpu/drm/i915/display/intel_display.c
>>> @@ -252,6 +252,68 @@ static enum pipe joiner_primary_pipe(const struct intel_crtc_state *crtc_state)
>>> return ffs(crtc_state->joiner_pipes) - 1;
>>> }
>>>
>>> +int intel_joiner_num_pipes(const struct intel_crtc_state *crtc_state)
>>> +{
>>> + return hweight8(crtc_state->joiner_pipes);
>>> +}
>>> +
>>> +bool intel_crtc_is_ultrajoiner(const struct intel_crtc_state *crtc_state)
>>> +{
>>> + return intel_joiner_num_pipes(crtc_state) == 4;
>>
>> On having a re-look, I think we need to change this. Currently there is
>> no way of knowing if its 2 set of bigjoiners or 1 ultrajoiner.
> There is no such thing as 2 sets of bigjoiners on one crtc.
Oh right, sorry for the mixup and confusion.
In case of 2 bigjoiners AB and CD, for pipes A and B the joiner_pipes
will read 0x3 and for C and D it will read 0xc.
In case of ultrajoiner, for all pipes the joiner_pipes will read 0xf.
Regards,
Ankit
>
>
>> Perhaps need one more bit for ultrajoiner or a different flag altogether.
>>
>> Regards,
>>
>> Ankit
>>
>>> +}
>>> +
>>> +static bool intel_is_joiner(const struct intel_crtc_state *crtc_state)
>>> +{
>>> + return intel_joiner_num_pipes(crtc_state) > 1;
>>> +}
>>> +
>>> +static u8 bigjoiner_primary_pipes(const struct intel_crtc_state *crtc_state)
>>> +{
>>> + int lsb = ffs(crtc_state->joiner_pipes) - 1;
>>> + int msb = fls(crtc_state->joiner_pipes) - 1;
>>> + int i;
>>> + u8 bigjoiner_primary_mask = 0;
>>> +
>>> + for (i = lsb; i < msb; i += 4) {
>>> + /*
>>> + * Regardless of how joiner_pipes mask is set, currently
>>> + * we always assume, that primary pipe bit goes before secondary
>>> + * pipe bit. So in each set of 2 bits, least significant bit is
>>> + * bigjoiner primary pipe and most significant bit is secondary pipe.
>>> + */
>>> + bigjoiner_primary_mask |=
>>> + ((BIT(0) | BIT(2)) << i) & crtc_state->joiner_pipes;
>>> + }
>>> +
>>> + return bigjoiner_primary_mask;
>>> +}
>>> +
>>> +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 (!intel_is_joiner(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)
>>> +{
>>> + if (!intel_is_joiner(crtc_state))
>>> + return false;
>>> +
>>> + return !intel_crtc_is_bigjoiner_primary(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) &&
>>> + (crtc->pipe == joiner_primary_pipe(crtc_state));
>>> +}
>>> +
>>> u8 intel_crtc_joiner_secondary_pipes(const struct intel_crtc_state *crtc_state)
>>> {
>>> if (crtc_state->joiner_pipes)
>>> @@ -276,11 +338,6 @@ bool intel_crtc_is_joiner_primary(const struct intel_crtc_state *crtc_state)
>>> crtc->pipe == joiner_primary_pipe(crtc_state);
>>> }
>>>
>>> -int intel_joiner_num_pipes(const struct intel_crtc_state *crtc_state)
>>> -{
>>> - return hweight8(crtc_state->joiner_pipes);
>>> -}
>>> -
>>> u8 intel_crtc_joined_pipe_mask(const struct intel_crtc_state *crtc_state)
>>> {
>>> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>>> @@ -288,7 +345,7 @@ u8 intel_crtc_joined_pipe_mask(const struct intel_crtc_state *crtc_state)
>>> return BIT(crtc->pipe) | crtc_state->joiner_pipes;
>>> }
>>>
>>> -struct intel_crtc *intel_primary_crtc(const struct intel_crtc_state *crtc_state)
>>> +struct intel_crtc *intel_joiner_primary_crtc(const struct intel_crtc_state *crtc_state)
>>> {
>>> struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
>>>
>>> @@ -808,7 +865,7 @@ intel_get_crtc_new_encoder(const struct intel_atomic_state *state,
>>> int num_encoders = 0;
>>> int i;
>>>
>>> - primary_crtc = intel_primary_crtc(crtc_state);
>>> + primary_crtc = intel_joiner_primary_crtc(crtc_state);
>>>
>>> for_each_new_connector_in_state(&state->base, connector, connector_state, i) {
>>> if (connector_state->crtc != &primary_crtc->base)
>>> @@ -4527,7 +4584,7 @@ copy_joiner_crtc_state_nomodeset(struct intel_atomic_state *state,
>>> {
>>> struct intel_crtc_state *secondary_crtc_state =
>>> intel_atomic_get_new_crtc_state(state, secondary_crtc);
>>> - struct intel_crtc *primary_crtc = intel_primary_crtc(secondary_crtc_state);
>>> + struct intel_crtc *primary_crtc = intel_joiner_primary_crtc(secondary_crtc_state);
>>> const struct intel_crtc_state *primary_crtc_state =
>>> intel_atomic_get_new_crtc_state(state, primary_crtc);
>>>
>>> @@ -4547,7 +4604,7 @@ copy_joiner_crtc_state_modeset(struct intel_atomic_state *state,
>>> {
>>> struct intel_crtc_state *secondary_crtc_state =
>>> intel_atomic_get_new_crtc_state(state, secondary_crtc);
>>> - struct intel_crtc *primary_crtc = intel_primary_crtc(secondary_crtc_state);
>>> + struct intel_crtc *primary_crtc = intel_joiner_primary_crtc(secondary_crtc_state);
>>> const struct intel_crtc_state *primary_crtc_state =
>>> intel_atomic_get_new_crtc_state(state, primary_crtc);
>>> struct intel_crtc_state *saved_state;
>>> diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
>>> index bf665f947b97..35e68e4cc712 100644
>>> --- a/drivers/gpu/drm/i915/display/intel_display.h
>>> +++ b/drivers/gpu/drm/i915/display/intel_display.h
>>> @@ -424,10 +424,14 @@ enum phy intel_port_to_phy(struct drm_i915_private *i915, enum port port);
>>> bool is_trans_port_sync_mode(const struct intel_crtc_state *state);
>>> bool is_trans_port_sync_master(const struct intel_crtc_state *state);
>>> u8 intel_crtc_joined_pipe_mask(const struct intel_crtc_state *crtc_state);
>>> -bool intel_crtc_is_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_joiner_secondary(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);
>>> -struct intel_crtc *intel_primary_crtc(const struct intel_crtc_state *crtc_state);
>>> +struct intel_crtc *intel_joiner_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,
>>> const struct intel_crtc_state *pipe_config,
>>> diff --git a/drivers/gpu/drm/i915/display/intel_modeset_verify.c b/drivers/gpu/drm/i915/display/intel_modeset_verify.c
>>> index 3491db5cad31..b53b810c6470 100644
>>> --- a/drivers/gpu/drm/i915/display/intel_modeset_verify.c
>>> +++ b/drivers/gpu/drm/i915/display/intel_modeset_verify.c
>>> @@ -193,7 +193,7 @@ verify_crtc_state(struct intel_atomic_state *state,
>>> "transitional active state does not match atomic hw state (expected %i, found %i)\n",
>>> sw_crtc_state->hw.active, crtc->active);
>>>
>>> - primary_crtc = intel_primary_crtc(sw_crtc_state);
>>> + primary_crtc = intel_joiner_primary_crtc(sw_crtc_state);
>>>
>>> for_each_encoder_on_crtc(dev, &primary_crtc->base, encoder) {
>>> enum pipe pipe;
>>> diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c b/drivers/gpu/drm/i915/display/intel_vdsc.c
>>> index b9687b7692b8..11058bb37d5a 100644
>>> --- a/drivers/gpu/drm/i915/display/intel_vdsc.c
>>> +++ b/drivers/gpu/drm/i915/display/intel_vdsc.c
>>> @@ -761,7 +761,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;
>>> @@ -790,7 +790,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);
^ permalink raw reply [flat|nested] 32+ messages in thread
end of thread, other threads:[~2024-08-21 14:49 UTC | newest]
Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-18 8:17 [PATCH 00/12] Ultrajoiner basic functionality series Ankit Nautiyal
2024-07-18 8:17 ` [PATCH 01/12] drm/i915/display: Modify debugfs for joiner to force n pipes Ankit Nautiyal
2024-07-31 4:21 ` Kandpal, Suraj
2024-07-18 8:17 ` [PATCH 02/12] drm/i915/display: Use joined pipes in intel_dp_joiner_needs_dsc Ankit Nautiyal
2024-07-31 4:28 ` Kandpal, Suraj
2024-07-18 8:17 ` [PATCH 03/12] drm/i915/display: Use joined pipes in intel_mode_valid_max_plane_size Ankit Nautiyal
2024-07-31 4:43 ` Kandpal, Suraj
2024-07-18 8:17 ` [PATCH 04/12] drm/i915/display: Use joined pipes in dsc helpers for slices, bpp Ankit Nautiyal
2024-07-31 5:10 ` Kandpal, Suraj
2024-07-18 8:17 ` [PATCH 05/12] drm/i915: Add some essential functionality for joiners Ankit Nautiyal
2024-07-31 7:14 ` Kandpal, Suraj
2024-08-16 8:23 ` Nautiyal, Ankit K
2024-08-21 13:41 ` Ville Syrjälä
2024-08-21 14:48 ` Nautiyal, Ankit K
2024-07-18 8:17 ` [PATCH 06/12] drm/i915: Split current joiner hw state readout Ankit Nautiyal
2024-07-31 7:27 ` Kandpal, Suraj
2024-07-18 8:17 ` [PATCH 07/12] drm/i915: Add bigjoiner and uncompressed joiner hw readout sanity checks Ankit Nautiyal
2024-07-31 8:25 ` Kandpal, Suraj
2024-07-18 8:17 ` [PATCH 08/12] drm/i915: Implement hw state readout and checks for ultrajoiner Ankit Nautiyal
2024-07-31 9:57 ` Kandpal, Suraj
2024-07-18 8:18 ` [PATCH 09/12] drm/i915/display/vdsc: Add ultrajoiner support with DSC Ankit Nautiyal
2024-08-01 6:41 ` Kandpal, Suraj
2024-07-18 8:18 ` [PATCH 10/12] drm/i915: Compute config and mode valid changes for ultrajoiner Ankit Nautiyal
2024-07-31 10:29 ` Kandpal, Suraj
2024-07-18 8:18 ` [PATCH 11/12] drm/i915: Add new abstraction layer to handle pipe order for different joiners Ankit Nautiyal
2024-08-01 7:12 ` Kandpal, Suraj
2024-07-18 8:18 ` [PATCH 12/12] drm/i915/intel_dp: Add support for forcing ultrajoiner Ankit Nautiyal
2024-08-01 7:13 ` Kandpal, Suraj
2024-07-18 8:45 ` ✗ Fi.CI.CHECKPATCH: warning for Ultrajoiner basic functionality series (rev6) Patchwork
2024-07-18 8:45 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-07-18 8:54 ` ✓ Fi.CI.BAT: success " Patchwork
2024-07-19 5:35 ` ✗ Fi.CI.IGT: failure " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox