* [PATCH 0/8] drm/client: Stop using legacy crtc->mode and a bunch of cleanups
@ 2024-10-03 11:32 Ville Syrjala
2024-10-03 11:32 ` [PATCH 1/8] drm/client: Constify modes Ville Syrjala
` (12 more replies)
0 siblings, 13 replies; 28+ messages in thread
From: Ville Syrjala @ 2024-10-03 11:32 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
The most interesting part is the change to modes[] to solve
the lifetime issue so that we can stop using the legacy
crtc->mode for atomic drivers.
Additionally I included a bunch of cleanups, some of which were
inherited from https://patchwork.freedesktop.org/series/132051/
Ville Syrjälä (8):
drm/client: Constify modes
drm/client: Use array notation for function arguments
drm/client: Streamline mode selection debugs
drm/client: Make copies of modes
drm/client: Stop using the legacy crtc->mode
drm/client: s/new_crtc/crtc/
drm/client: Move variables to tighter scope
drm/client: s/unsigned int i/int i/
drivers/gpu/drm/drm_client_modeset.c | 253 +++++++++++++--------------
1 file changed, 125 insertions(+), 128 deletions(-)
--
2.45.2
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 1/8] drm/client: Constify modes
2024-10-03 11:32 [PATCH 0/8] drm/client: Stop using legacy crtc->mode and a bunch of cleanups Ville Syrjala
@ 2024-10-03 11:32 ` Ville Syrjala
2024-10-04 23:59 ` kernel test robot
2024-10-05 0:19 ` kernel test robot
2024-10-03 11:32 ` [PATCH 2/8] drm/client: Use array notation for function arguments Ville Syrjala
` (11 subsequent siblings)
12 siblings, 2 replies; 28+ messages in thread
From: Ville Syrjala @ 2024-10-03 11:32 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx, Jani Nikula, Thomas Zimmermann
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
The modes used by the client code live on the connectors' mode
lists, which are not owned by the client code, and thus it has
no business modifying the modes. Mark the modes const to make
that fact abundantly clear.
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/drm_client_modeset.c | 39 +++++++++++++++-------------
1 file changed, 21 insertions(+), 18 deletions(-)
diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
index 251f94313717..20882dffcf5e 100644
--- a/drivers/gpu/drm/drm_client_modeset.c
+++ b/drivers/gpu/drm/drm_client_modeset.c
@@ -117,10 +117,10 @@ drm_client_find_modeset(struct drm_client_dev *client, struct drm_crtc *crtc)
return NULL;
}
-static struct drm_display_mode *
+static const struct drm_display_mode *
drm_connector_get_tiled_mode(struct drm_connector *connector)
{
- struct drm_display_mode *mode;
+ const struct drm_display_mode *mode;
list_for_each_entry(mode, &connector->modes, head) {
if (mode->hdisplay == connector->tile_h_size &&
@@ -130,10 +130,10 @@ drm_connector_get_tiled_mode(struct drm_connector *connector)
return NULL;
}
-static struct drm_display_mode *
+static const struct drm_display_mode *
drm_connector_fallback_non_tiled_mode(struct drm_connector *connector)
{
- struct drm_display_mode *mode;
+ const struct drm_display_mode *mode;
list_for_each_entry(mode, &connector->modes, head) {
if (mode->hdisplay == connector->tile_h_size &&
@@ -144,10 +144,10 @@ drm_connector_fallback_non_tiled_mode(struct drm_connector *connector)
return NULL;
}
-static struct drm_display_mode *
+static const struct drm_display_mode *
drm_connector_preferred_mode(struct drm_connector *connector, int width, int height)
{
- struct drm_display_mode *mode;
+ const struct drm_display_mode *mode;
list_for_each_entry(mode, &connector->modes, head) {
if (mode->hdisplay > width ||
@@ -159,16 +159,18 @@ drm_connector_preferred_mode(struct drm_connector *connector, int width, int hei
return NULL;
}
-static struct drm_display_mode *drm_connector_first_mode(struct drm_connector *connector)
+static const struct drm_display_mode *
+drm_connector_first_mode(struct drm_connector *connector)
{
return list_first_entry_or_null(&connector->modes,
struct drm_display_mode, head);
}
-static struct drm_display_mode *drm_connector_pick_cmdline_mode(struct drm_connector *connector)
+static const struct drm_display_mode *
+drm_connector_pick_cmdline_mode(struct drm_connector *connector)
{
- struct drm_cmdline_mode *cmdline_mode;
- struct drm_display_mode *mode;
+ const struct drm_cmdline_mode *cmdline_mode;
+ const struct drm_display_mode *mode;
bool prefer_non_interlace;
/*
@@ -266,13 +268,14 @@ static void drm_client_connectors_enabled(struct drm_connector **connectors,
static bool drm_client_target_cloned(struct drm_device *dev,
struct drm_connector **connectors,
unsigned int connector_count,
- struct drm_display_mode **modes,
+ const struct drm_display_mode **modes,
struct drm_client_offset *offsets,
bool *enabled, int width, int height)
{
int count, i, j;
bool can_clone = false;
- struct drm_display_mode *dmt_mode, *mode;
+ const struct drm_display_mode *mode;
+ struct drm_display_mode *dmt_mode;
/* only contemplate cloning in the single crtc case */
if (dev->mode_config.num_crtc > 1)
@@ -351,7 +354,7 @@ static bool drm_client_target_cloned(struct drm_device *dev,
static int drm_client_get_tile_offsets(struct drm_device *dev,
struct drm_connector **connectors,
unsigned int connector_count,
- struct drm_display_mode **modes,
+ const struct drm_display_mode **modes,
struct drm_client_offset *offsets,
int idx,
int h_idx, int v_idx)
@@ -386,7 +389,7 @@ static int drm_client_get_tile_offsets(struct drm_device *dev,
static bool drm_client_target_preferred(struct drm_device *dev,
struct drm_connector **connectors,
unsigned int connector_count,
- struct drm_display_mode **modes,
+ const struct drm_display_mode **modes,
struct drm_client_offset *offsets,
bool *enabled, int width, int height)
{
@@ -505,7 +508,7 @@ static int drm_client_pick_crtcs(struct drm_client_dev *client,
struct drm_connector **connectors,
unsigned int connector_count,
struct drm_crtc **best_crtcs,
- struct drm_display_mode **modes,
+ const struct drm_display_mode **modes,
int n, int width, int height)
{
struct drm_device *dev = client->dev;
@@ -580,7 +583,7 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
struct drm_connector **connectors,
unsigned int connector_count,
struct drm_crtc **crtcs,
- struct drm_display_mode **modes,
+ const struct drm_display_mode **modes,
struct drm_client_offset *offsets,
bool *enabled, int width, int height)
{
@@ -791,7 +794,7 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
struct drm_client_offset *offsets;
unsigned int connector_count = 0;
/* points to modes protected by mode_config.mutex */
- struct drm_display_mode **modes;
+ const struct drm_display_mode **modes;
struct drm_crtc **crtcs;
int i, ret = 0;
bool *enabled;
@@ -862,7 +865,7 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
drm_client_modeset_release(client);
for (i = 0; i < connector_count; i++) {
- struct drm_display_mode *mode = modes[i];
+ const struct drm_display_mode *mode = modes[i];
struct drm_crtc *crtc = crtcs[i];
struct drm_client_offset *offset = &offsets[i];
--
2.45.2
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 2/8] drm/client: Use array notation for function arguments
2024-10-03 11:32 [PATCH 0/8] drm/client: Stop using legacy crtc->mode and a bunch of cleanups Ville Syrjala
2024-10-03 11:32 ` [PATCH 1/8] drm/client: Constify modes Ville Syrjala
@ 2024-10-03 11:32 ` Ville Syrjala
2024-10-03 11:32 ` [PATCH 3/8] drm/client: Streamline mode selection debugs Ville Syrjala
` (10 subsequent siblings)
12 siblings, 0 replies; 28+ messages in thread
From: Ville Syrjala @ 2024-10-03 11:32 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx, Jani Nikula, Thomas Zimmermann
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Use the array notation rather that the pointer notation for
function arguments. This makes it clear to the reader that
we are in fact dealing with an array rather than a single
pointer. Functionally the two are equivalent.
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/drm_client_modeset.c | 42 ++++++++++++++--------------
1 file changed, 21 insertions(+), 21 deletions(-)
diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
index 20882dffcf5e..068ce32cc41b 100644
--- a/drivers/gpu/drm/drm_client_modeset.c
+++ b/drivers/gpu/drm/drm_client_modeset.c
@@ -239,9 +239,9 @@ static bool drm_connector_enabled(struct drm_connector *connector, bool strict)
return enable;
}
-static void drm_client_connectors_enabled(struct drm_connector **connectors,
+static void drm_client_connectors_enabled(struct drm_connector *connectors[],
unsigned int connector_count,
- bool *enabled)
+ bool enabled[])
{
bool any_enabled = false;
struct drm_connector *connector;
@@ -266,11 +266,11 @@ static void drm_client_connectors_enabled(struct drm_connector **connectors,
}
static bool drm_client_target_cloned(struct drm_device *dev,
- struct drm_connector **connectors,
+ struct drm_connector *connectors[],
unsigned int connector_count,
- const struct drm_display_mode **modes,
- struct drm_client_offset *offsets,
- bool *enabled, int width, int height)
+ const struct drm_display_mode *modes[],
+ struct drm_client_offset offsets[],
+ bool enabled[], int width, int height)
{
int count, i, j;
bool can_clone = false;
@@ -352,10 +352,10 @@ static bool drm_client_target_cloned(struct drm_device *dev,
}
static int drm_client_get_tile_offsets(struct drm_device *dev,
- struct drm_connector **connectors,
+ struct drm_connector *connectors[],
unsigned int connector_count,
- const struct drm_display_mode **modes,
- struct drm_client_offset *offsets,
+ const struct drm_display_mode *modes[],
+ struct drm_client_offset offsets[],
int idx,
int h_idx, int v_idx)
{
@@ -387,11 +387,11 @@ static int drm_client_get_tile_offsets(struct drm_device *dev,
}
static bool drm_client_target_preferred(struct drm_device *dev,
- struct drm_connector **connectors,
+ struct drm_connector *connectors[],
unsigned int connector_count,
- const struct drm_display_mode **modes,
- struct drm_client_offset *offsets,
- bool *enabled, int width, int height)
+ const struct drm_display_mode *modes[],
+ struct drm_client_offset offsets[],
+ bool enabled[], int width, int height)
{
const u64 mask = BIT_ULL(connector_count) - 1;
struct drm_connector *connector;
@@ -505,10 +505,10 @@ static bool connector_has_possible_crtc(struct drm_connector *connector,
}
static int drm_client_pick_crtcs(struct drm_client_dev *client,
- struct drm_connector **connectors,
+ struct drm_connector *connectors[],
unsigned int connector_count,
- struct drm_crtc **best_crtcs,
- const struct drm_display_mode **modes,
+ struct drm_crtc *best_crtcs[],
+ const struct drm_display_mode *modes[],
int n, int width, int height)
{
struct drm_device *dev = client->dev;
@@ -580,12 +580,12 @@ static int drm_client_pick_crtcs(struct drm_client_dev *client,
/* Try to read the BIOS display configuration and use it for the initial config */
static bool drm_client_firmware_config(struct drm_client_dev *client,
- struct drm_connector **connectors,
+ struct drm_connector *connectors[],
unsigned int connector_count,
- struct drm_crtc **crtcs,
- const struct drm_display_mode **modes,
- struct drm_client_offset *offsets,
- bool *enabled, int width, int height)
+ struct drm_crtc *crtcs[],
+ const struct drm_display_mode *modes[],
+ struct drm_client_offset offsets[],
+ bool enabled[], int width, int height)
{
const int count = min_t(unsigned int, connector_count, BITS_PER_LONG);
unsigned long conn_configured, conn_seq, mask;
--
2.45.2
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 3/8] drm/client: Streamline mode selection debugs
2024-10-03 11:32 [PATCH 0/8] drm/client: Stop using legacy crtc->mode and a bunch of cleanups Ville Syrjala
2024-10-03 11:32 ` [PATCH 1/8] drm/client: Constify modes Ville Syrjala
2024-10-03 11:32 ` [PATCH 2/8] drm/client: Use array notation for function arguments Ville Syrjala
@ 2024-10-03 11:32 ` Ville Syrjala
2024-10-03 11:33 ` [PATCH 4/8] drm/client: Make copies of modes Ville Syrjala
` (9 subsequent siblings)
12 siblings, 0 replies; 28+ messages in thread
From: Ville Syrjala @ 2024-10-03 11:32 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx, Thomas Zimmermann
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Get rid of all the redundant debugs and just wait until the end
to print which mode (and of which type) we picked.
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/drm_client_modeset.c | 70 +++++++++++++---------------
1 file changed, 33 insertions(+), 37 deletions(-)
diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
index 068ce32cc41b..888323137a6a 100644
--- a/drivers/gpu/drm/drm_client_modeset.c
+++ b/drivers/gpu/drm/drm_client_modeset.c
@@ -408,6 +408,8 @@ static bool drm_client_target_preferred(struct drm_device *dev,
retry:
for (i = 0; i < connector_count; i++) {
+ const char *mode_type;
+
connector = connectors[i];
if (conn_configured & BIT_ULL(i))
@@ -441,20 +443,20 @@ static bool drm_client_target_preferred(struct drm_device *dev,
modes, offsets, i,
connector->tile_h_loc, connector->tile_v_loc);
}
- drm_dbg_kms(dev, "[CONNECTOR:%d:%s] looking for cmdline mode\n",
- connector->base.id, connector->name);
- /* got for command line mode first */
+ mode_type = "cmdline";
modes[i] = drm_connector_pick_cmdline_mode(connector);
+
if (!modes[i]) {
- drm_dbg_kms(dev, "[CONNECTOR:%d:%s] looking for preferred mode, tile %d\n",
- connector->base.id, connector->name,
- connector->tile_group ? connector->tile_group->id : 0);
+ mode_type = "preferred";
modes[i] = drm_connector_preferred_mode(connector, width, height);
}
- /* No preferred modes, pick one off the list */
- if (!modes[i])
+
+ if (!modes[i]) {
+ mode_type = "first";
modes[i] = drm_connector_first_mode(connector);
+ }
+
/*
* In case of tiled mode if all tiles not present fallback to
* first available non tiled mode.
@@ -469,18 +471,22 @@ static bool drm_client_target_preferred(struct drm_device *dev,
(connector->tile_h_loc == 0 &&
connector->tile_v_loc == 0 &&
!drm_connector_get_tiled_mode(connector))) {
- drm_dbg_kms(dev,
- "[CONNECTOR:%d:%s] Falling back to non-tiled mode\n",
- connector->base.id, connector->name);
+ mode_type = "non tiled";
modes[i] = drm_connector_fallback_non_tiled_mode(connector);
} else {
+ mode_type = "tiled";
modes[i] = drm_connector_get_tiled_mode(connector);
}
}
- drm_dbg_kms(dev, "[CONNECTOR:%d:%s] Found mode %s\n",
- connector->base.id, connector->name,
- modes[i] ? modes[i]->name : "none");
+ if (modes[i])
+ drm_dbg_kms(dev, "[CONNECTOR:%d:%s] found %s mode: %s\n",
+ connector->base.id, connector->name,
+ mode_type, modes[i]->name);
+ else
+ drm_dbg_kms(dev, "[CONNECTOR:%d:%s] no mode found\n",
+ connector->base.id, connector->name);
+
conn_configured |= BIT_ULL(i);
}
@@ -627,6 +633,7 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
struct drm_connector *connector;
struct drm_encoder *encoder;
struct drm_crtc *new_crtc;
+ const char *mode_type;
connector = connectors[i];
@@ -676,30 +683,22 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
*/
for (j = 0; j < count; j++) {
if (crtcs[j] == new_crtc) {
- drm_dbg_kms(dev, "fallback: cloned configuration\n");
+ drm_dbg_kms(dev, "[CONNECTOR:%d:%s] fallback: cloned configuration\n",
+ connector->base.id, connector->name);
goto bail;
}
}
- drm_dbg_kms(dev, "[CONNECTOR:%d:%s] looking for cmdline mode\n",
- connector->base.id, connector->name);
-
- /* go for command line mode first */
+ mode_type = "cmdline";
modes[i] = drm_connector_pick_cmdline_mode(connector);
- /* try for preferred next */
if (!modes[i]) {
- drm_dbg_kms(dev,
- "[CONNECTOR:%d:%s] looking for preferred mode, has tile: %s\n",
- connector->base.id, connector->name,
- str_yes_no(connector->has_tile));
+ mode_type = "preferred";
modes[i] = drm_connector_preferred_mode(connector, width, height);
}
- /* No preferred mode marked by the EDID? Are there any modes? */
- if (!modes[i] && !list_empty(&connector->modes)) {
- drm_dbg_kms(dev, "[CONNECTOR:%d:%s] using first listed mode\n",
- connector->base.id, connector->name);
+ if (!modes[i]) {
+ mode_type = "first";
modes[i] = drm_connector_first_mode(connector);
}
@@ -716,28 +715,25 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
* This is crtc->mode and not crtc->state->mode for the
* fastboot check to work correctly.
*/
- drm_dbg_kms(dev, "[CONNECTOR:%d:%s] looking for current mode\n",
- connector->base.id, connector->name);
+ mode_type = "current";
modes[i] = &connector->state->crtc->mode;
}
+
/*
* In case of tiled modes, if all tiles are not present
* then fallback to a non tiled mode.
*/
if (connector->has_tile &&
num_tiled_conns < connector->num_h_tile * connector->num_v_tile) {
- drm_dbg_kms(dev, "[CONNECTOR:%d:%s] Falling back to non-tiled mode\n",
- connector->base.id, connector->name);
+ mode_type = "non tiled";
modes[i] = drm_connector_fallback_non_tiled_mode(connector);
}
crtcs[i] = new_crtc;
- drm_dbg_kms(dev, "[CONNECTOR:%d:%s] on [CRTC:%d:%s]: %dx%d%s\n",
+ drm_dbg_kms(dev, "[CONNECTOR::%d:%s] on [CRTC:%d:%s] using %s mode: %s\n",
connector->base.id, connector->name,
- connector->state->crtc->base.id,
- connector->state->crtc->name,
- modes[i]->hdisplay, modes[i]->vdisplay,
- modes[i]->flags & DRM_MODE_FLAG_INTERLACE ? "i" : "");
+ new_crtc->base.id, new_crtc->name,
+ mode_type, modes[i]->name);
fallback = false;
conn_configured |= BIT(i);
--
2.45.2
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 4/8] drm/client: Make copies of modes
2024-10-03 11:32 [PATCH 0/8] drm/client: Stop using legacy crtc->mode and a bunch of cleanups Ville Syrjala
` (2 preceding siblings ...)
2024-10-03 11:32 ` [PATCH 3/8] drm/client: Streamline mode selection debugs Ville Syrjala
@ 2024-10-03 11:33 ` Ville Syrjala
2024-10-03 16:45 ` Ville Syrjälä
` (3 more replies)
2024-10-03 11:33 ` [PATCH 5/8] drm/client: Stop using the legacy crtc->mode Ville Syrjala
` (8 subsequent siblings)
12 siblings, 4 replies; 28+ messages in thread
From: Ville Syrjala @ 2024-10-03 11:33 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
drm_client_firmware_config() is currently picking up the current
mode of the crtc via the legacy crtc->mode, which is not supposed
to be used by atomic drivers at all. We can't simply switch over
to the proper crtc->state->mode because we drop the crtc->mutex
(which protects crtc->state) before the mode gets used.
The most straightforward solution to extend the lifetime of
modes[] seem to be to make full copies of the modes instead
of just storing pointers. We do have to replace the NULL checks
with something else though. Checking that mode->clock!=0
should be sufficient.
And with this we can undo also commit 3eadd887dbac
("drm/client:Fully protect modes[] with dev->mode_config.mutex")
as the lifetime of modes[] no longer has anything to do with
that lock.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/drm_client_modeset.c | 80 +++++++++++++++-------------
1 file changed, 43 insertions(+), 37 deletions(-)
diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
index 888323137a6a..d413e119db3f 100644
--- a/drivers/gpu/drm/drm_client_modeset.c
+++ b/drivers/gpu/drm/drm_client_modeset.c
@@ -265,10 +265,15 @@ static void drm_client_connectors_enabled(struct drm_connector *connectors[],
enabled[i] = drm_connector_enabled(connectors[i], false);
}
+static bool mode_valid(const struct drm_display_mode *mode)
+{
+ return mode->clock != 0;
+}
+
static bool drm_client_target_cloned(struct drm_device *dev,
struct drm_connector *connectors[],
unsigned int connector_count,
- const struct drm_display_mode *modes[],
+ struct drm_display_mode modes[],
struct drm_client_offset offsets[],
bool enabled[], int width, int height)
{
@@ -296,15 +301,16 @@ static bool drm_client_target_cloned(struct drm_device *dev,
for (i = 0; i < connector_count; i++) {
if (!enabled[i])
continue;
- modes[i] = drm_connector_pick_cmdline_mode(connectors[i]);
- if (!modes[i]) {
+
+ drm_mode_copy(&modes[i], drm_connector_pick_cmdline_mode(connectors[i]));
+ if (!mode_valid(&modes[i])) {
can_clone = false;
break;
}
for (j = 0; j < i; j++) {
if (!enabled[j])
continue;
- if (!drm_mode_match(modes[j], modes[i],
+ if (!drm_mode_match(&modes[j], &modes[i],
DRM_MODE_MATCH_TIMINGS |
DRM_MODE_MATCH_CLOCK |
DRM_MODE_MATCH_FLAGS |
@@ -335,9 +341,9 @@ static bool drm_client_target_cloned(struct drm_device *dev,
DRM_MODE_MATCH_CLOCK |
DRM_MODE_MATCH_FLAGS |
DRM_MODE_MATCH_3D_FLAGS))
- modes[i] = mode;
+ drm_mode_copy(&modes[i], mode);
}
- if (!modes[i])
+ if (!mode_valid(&modes[i]))
can_clone = false;
}
drm_mode_destroy(dev, dmt_mode);
@@ -354,7 +360,7 @@ static bool drm_client_target_cloned(struct drm_device *dev,
static int drm_client_get_tile_offsets(struct drm_device *dev,
struct drm_connector *connectors[],
unsigned int connector_count,
- const struct drm_display_mode *modes[],
+ const struct drm_display_mode modes[],
struct drm_client_offset offsets[],
int idx,
int h_idx, int v_idx)
@@ -368,17 +374,17 @@ static int drm_client_get_tile_offsets(struct drm_device *dev,
if (!connector->has_tile)
continue;
- if (!modes[i] && (h_idx || v_idx)) {
+ if (!mode_valid(&modes[i]) && (h_idx || v_idx)) {
drm_dbg_kms(dev,
"[CONNECTOR:%d:%s] no modes for connector tiled %d\n",
connector->base.id, connector->name, i);
continue;
}
if (connector->tile_h_loc < h_idx)
- hoffset += modes[i]->hdisplay;
+ hoffset += modes[i].hdisplay;
if (connector->tile_v_loc < v_idx)
- voffset += modes[i]->vdisplay;
+ voffset += modes[i].vdisplay;
}
offsets[idx].x = hoffset;
offsets[idx].y = voffset;
@@ -389,7 +395,7 @@ static int drm_client_get_tile_offsets(struct drm_device *dev,
static bool drm_client_target_preferred(struct drm_device *dev,
struct drm_connector *connectors[],
unsigned int connector_count,
- const struct drm_display_mode *modes[],
+ struct drm_display_mode modes[],
struct drm_client_offset offsets[],
bool enabled[], int width, int height)
{
@@ -445,16 +451,16 @@ static bool drm_client_target_preferred(struct drm_device *dev,
}
mode_type = "cmdline";
- modes[i] = drm_connector_pick_cmdline_mode(connector);
+ drm_mode_copy(&modes[i], drm_connector_pick_cmdline_mode(connector));
- if (!modes[i]) {
+ if (!mode_valid(&modes[i])) {
mode_type = "preferred";
- modes[i] = drm_connector_preferred_mode(connector, width, height);
+ drm_mode_copy(&modes[i], drm_connector_preferred_mode(connector, width, height));
}
- if (!modes[i]) {
+ if (!mode_valid(&modes[i])) {
mode_type = "first";
- modes[i] = drm_connector_first_mode(connector);
+ drm_mode_copy(&modes[i], drm_connector_first_mode(connector));
}
/*
@@ -472,17 +478,17 @@ static bool drm_client_target_preferred(struct drm_device *dev,
connector->tile_v_loc == 0 &&
!drm_connector_get_tiled_mode(connector))) {
mode_type = "non tiled";
- modes[i] = drm_connector_fallback_non_tiled_mode(connector);
+ drm_mode_copy(&modes[i], drm_connector_fallback_non_tiled_mode(connector));
} else {
mode_type = "tiled";
- modes[i] = drm_connector_get_tiled_mode(connector);
+ drm_mode_copy(&modes[i], drm_connector_get_tiled_mode(connector));
}
}
- if (modes[i])
+ if (mode_valid(&modes[i]))
drm_dbg_kms(dev, "[CONNECTOR:%d:%s] found %s mode: %s\n",
connector->base.id, connector->name,
- mode_type, modes[i]->name);
+ mode_type, modes[i].name);
else
drm_dbg_kms(dev, "[CONNECTOR:%d:%s] no mode found\n",
connector->base.id, connector->name);
@@ -514,7 +520,7 @@ static int drm_client_pick_crtcs(struct drm_client_dev *client,
struct drm_connector *connectors[],
unsigned int connector_count,
struct drm_crtc *best_crtcs[],
- const struct drm_display_mode *modes[],
+ const struct drm_display_mode modes[],
int n, int width, int height)
{
struct drm_device *dev = client->dev;
@@ -532,7 +538,7 @@ static int drm_client_pick_crtcs(struct drm_client_dev *client,
best_crtcs[n] = NULL;
best_score = drm_client_pick_crtcs(client, connectors, connector_count,
best_crtcs, modes, n + 1, width, height);
- if (modes[n] == NULL)
+ if (!mode_valid(&modes[n]))
return best_score;
crtcs = kcalloc(connector_count, sizeof(*crtcs), GFP_KERNEL);
@@ -566,7 +572,7 @@ static int drm_client_pick_crtcs(struct drm_client_dev *client,
if (dev->mode_config.num_crtc > 1)
continue;
- if (!drm_mode_equal(modes[o], modes[n]))
+ if (!drm_mode_equal(&modes[o], &modes[n]))
continue;
}
@@ -589,7 +595,7 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
struct drm_connector *connectors[],
unsigned int connector_count,
struct drm_crtc *crtcs[],
- const struct drm_display_mode *modes[],
+ struct drm_display_mode modes[],
struct drm_client_offset offsets[],
bool enabled[], int width, int height)
{
@@ -690,20 +696,20 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
}
mode_type = "cmdline";
- modes[i] = drm_connector_pick_cmdline_mode(connector);
+ drm_mode_copy(&modes[i], drm_connector_pick_cmdline_mode(connector));
- if (!modes[i]) {
+ if (!mode_valid(&modes[i])) {
mode_type = "preferred";
- modes[i] = drm_connector_preferred_mode(connector, width, height);
+ drm_mode_copy(&modes[i], drm_connector_preferred_mode(connector, width, height));
}
- if (!modes[i]) {
+ if (!mode_valid(&modes[i])) {
mode_type = "first";
- modes[i] = drm_connector_first_mode(connector);
+ drm_mode_copy(&modes[i], drm_connector_first_mode(connector));
}
/* last resort: use current mode */
- if (!modes[i]) {
+ if (!mode_valid(&modes[i])) {
/*
* IMPORTANT: We want to use the adjusted mode (i.e.
* after the panel fitter upscaling) as the initial
@@ -716,7 +722,7 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
* fastboot check to work correctly.
*/
mode_type = "current";
- modes[i] = &connector->state->crtc->mode;
+ drm_mode_copy(&modes[i], &connector->state->crtc->mode);
}
/*
@@ -726,14 +732,14 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
if (connector->has_tile &&
num_tiled_conns < connector->num_h_tile * connector->num_v_tile) {
mode_type = "non tiled";
- modes[i] = drm_connector_fallback_non_tiled_mode(connector);
+ drm_mode_copy(&modes[i], drm_connector_fallback_non_tiled_mode(connector));
}
crtcs[i] = new_crtc;
drm_dbg_kms(dev, "[CONNECTOR::%d:%s] on [CRTC:%d:%s] using %s mode: %s\n",
connector->base.id, connector->name,
new_crtc->base.id, new_crtc->name,
- mode_type, modes[i]->name);
+ mode_type, modes[i].name);
fallback = false;
conn_configured |= BIT(i);
@@ -789,8 +795,7 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
unsigned int total_modes_count = 0;
struct drm_client_offset *offsets;
unsigned int connector_count = 0;
- /* points to modes protected by mode_config.mutex */
- const struct drm_display_mode **modes;
+ struct drm_display_mode *modes;
struct drm_crtc **crtcs;
int i, ret = 0;
bool *enabled;
@@ -858,10 +863,12 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
crtcs, modes, 0, width, height);
}
+ mutex_unlock(&dev->mode_config.mutex);
+
drm_client_modeset_release(client);
for (i = 0; i < connector_count; i++) {
- const struct drm_display_mode *mode = modes[i];
+ const struct drm_display_mode *mode = &modes[i];
struct drm_crtc *crtc = crtcs[i];
struct drm_client_offset *offset = &offsets[i];
@@ -892,7 +899,6 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
modeset->y = offset->y;
}
}
- mutex_unlock(&dev->mode_config.mutex);
mutex_unlock(&client->modeset_mutex);
out:
--
2.45.2
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 5/8] drm/client: Stop using the legacy crtc->mode
2024-10-03 11:32 [PATCH 0/8] drm/client: Stop using legacy crtc->mode and a bunch of cleanups Ville Syrjala
` (3 preceding siblings ...)
2024-10-03 11:33 ` [PATCH 4/8] drm/client: Make copies of modes Ville Syrjala
@ 2024-10-03 11:33 ` Ville Syrjala
2024-10-03 18:16 ` [PATCH v2 " Ville Syrjala
2024-10-03 11:33 ` [PATCH 6/8] drm/client: s/new_crtc/crtc/ Ville Syrjala
` (7 subsequent siblings)
12 siblings, 1 reply; 28+ messages in thread
From: Ville Syrjala @ 2024-10-03 11:33 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
crtc->mode is legacy junk and shouldn't really be used with
atomic drivers.
Most (all?) atomic drivers do end up still calling
drm_atomic_helper_update_legacy_modeset_state() at some
point, so crtc->mode does still get populated, and this
does work for now. But now that the modes[] lifetime issues
have been sorted out we can just switch over to the
proper crtc->state->mode.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/drm_client_modeset.c | 13 +------------
1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
index d413e119db3f..3e49448370c4 100644
--- a/drivers/gpu/drm/drm_client_modeset.c
+++ b/drivers/gpu/drm/drm_client_modeset.c
@@ -710,19 +710,8 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
/* last resort: use current mode */
if (!mode_valid(&modes[i])) {
- /*
- * IMPORTANT: We want to use the adjusted mode (i.e.
- * after the panel fitter upscaling) as the initial
- * config, not the input mode, which is what crtc->mode
- * usually contains. But since our current
- * code puts a mode derived from the post-pfit timings
- * into crtc->mode this works out correctly.
- *
- * This is crtc->mode and not crtc->state->mode for the
- * fastboot check to work correctly.
- */
mode_type = "current";
- drm_mode_copy(&modes[i], &connector->state->crtc->mode);
+ drm_mode_copy(&modes[i], &new_crtc->state->mode);
}
/*
--
2.45.2
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 6/8] drm/client: s/new_crtc/crtc/
2024-10-03 11:32 [PATCH 0/8] drm/client: Stop using legacy crtc->mode and a bunch of cleanups Ville Syrjala
` (4 preceding siblings ...)
2024-10-03 11:33 ` [PATCH 5/8] drm/client: Stop using the legacy crtc->mode Ville Syrjala
@ 2024-10-03 11:33 ` Ville Syrjala
2024-10-03 18:17 ` [PATCH v2 " Ville Syrjala
2024-10-03 11:33 ` [PATCH 7/8] drm/client: Move variables to tighter scope Ville Syrjala
` (6 subsequent siblings)
12 siblings, 1 reply; 28+ messages in thread
From: Ville Syrjala @ 2024-10-03 11:33 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Rename the 'new_crtc' variable to just 'crtc' in
drm_client_firmware_config(). We don't call any of the other
stuff in here new or old so this feels out of place.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/drm_client_modeset.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
index 3e49448370c4..b82bb3119cb2 100644
--- a/drivers/gpu/drm/drm_client_modeset.c
+++ b/drivers/gpu/drm/drm_client_modeset.c
@@ -638,7 +638,7 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
for (i = 0; i < count; i++) {
struct drm_connector *connector;
struct drm_encoder *encoder;
- struct drm_crtc *new_crtc;
+ struct drm_crtc *crtc;
const char *mode_type;
connector = connectors[i];
@@ -680,7 +680,7 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
num_connectors_enabled++;
- new_crtc = connector->state->crtc;
+ crtc = connector->state->crtc;
/*
* Make sure we're not trying to drive multiple connectors
@@ -688,7 +688,7 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
* match the BIOS.
*/
for (j = 0; j < count; j++) {
- if (crtcs[j] == new_crtc) {
+ if (crtcs[j] == crtc) {
drm_dbg_kms(dev, "[CONNECTOR:%d:%s] fallback: cloned configuration\n",
connector->base.id, connector->name);
goto bail;
@@ -711,7 +711,7 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
/* last resort: use current mode */
if (!mode_valid(&modes[i])) {
mode_type = "current";
- drm_mode_copy(&modes[i], &new_crtc->state->mode);
+ drm_mode_copy(&modes[i], &crtc->state->mode);
}
/*
@@ -723,11 +723,11 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
mode_type = "non tiled";
drm_mode_copy(&modes[i], drm_connector_fallback_non_tiled_mode(connector));
}
- crtcs[i] = new_crtc;
+ crtcs[i] = crtc;
drm_dbg_kms(dev, "[CONNECTOR::%d:%s] on [CRTC:%d:%s] using %s mode: %s\n",
connector->base.id, connector->name,
- new_crtc->base.id, new_crtc->name,
+ crtc->base.id, crtc->name,
mode_type, modes[i].name);
fallback = false;
--
2.45.2
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 7/8] drm/client: Move variables to tighter scope
2024-10-03 11:32 [PATCH 0/8] drm/client: Stop using legacy crtc->mode and a bunch of cleanups Ville Syrjala
` (5 preceding siblings ...)
2024-10-03 11:33 ` [PATCH 6/8] drm/client: s/new_crtc/crtc/ Ville Syrjala
@ 2024-10-03 11:33 ` Ville Syrjala
2024-10-03 14:59 ` Ville Syrjälä
2024-10-03 11:33 ` [PATCH 8/8] drm/client: s/unsigned int i/int i/ Ville Syrjala
` (5 subsequent siblings)
12 siblings, 1 reply; 28+ messages in thread
From: Ville Syrjala @ 2024-10-03 11:33 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Bunch of variables are only needed inside loops and whatnot.
Move them to a tighter scope to make the code less confusing.
Also replace the 'unsigned int i' footguns with plain signed
ints.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/drm_client_modeset.c | 33 +++++++++++++++-------------
1 file changed, 18 insertions(+), 15 deletions(-)
diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
index b82bb3119cb2..ccf5c9b5537b 100644
--- a/drivers/gpu/drm/drm_client_modeset.c
+++ b/drivers/gpu/drm/drm_client_modeset.c
@@ -73,9 +73,10 @@ int drm_client_modeset_create(struct drm_client_dev *client)
static void drm_client_modeset_release(struct drm_client_dev *client)
{
struct drm_mode_set *modeset;
- unsigned int i;
drm_client_for_each_modeset(modeset, client) {
+ unsigned int i;
+
drm_mode_destroy(client->dev, modeset->mode);
modeset->mode = NULL;
modeset->fb = NULL;
@@ -277,9 +278,8 @@ static bool drm_client_target_cloned(struct drm_device *dev,
struct drm_client_offset offsets[],
bool enabled[], int width, int height)
{
- int count, i, j;
+ int count, i;
bool can_clone = false;
- const struct drm_display_mode *mode;
struct drm_display_mode *dmt_mode;
/* only contemplate cloning in the single crtc case */
@@ -299,6 +299,8 @@ static bool drm_client_target_cloned(struct drm_device *dev,
/* check the command line or if nothing common pick 1024x768 */
can_clone = true;
for (i = 0; i < connector_count; i++) {
+ int j;
+
if (!enabled[i])
continue;
@@ -332,6 +334,8 @@ static bool drm_client_target_cloned(struct drm_device *dev,
goto fail;
for (i = 0; i < connector_count; i++) {
+ const struct drm_display_mode *mode;
+
if (!enabled[i])
continue;
@@ -365,12 +369,12 @@ static int drm_client_get_tile_offsets(struct drm_device *dev,
int idx,
int h_idx, int v_idx)
{
- struct drm_connector *connector;
int i;
int hoffset = 0, voffset = 0;
for (i = 0; i < connector_count; i++) {
- connector = connectors[i];
+ struct drm_connector *connector = connectors[i];
+
if (!connector->has_tile)
continue;
@@ -400,7 +404,6 @@ static bool drm_client_target_preferred(struct drm_device *dev,
bool enabled[], int width, int height)
{
const u64 mask = BIT_ULL(connector_count) - 1;
- struct drm_connector *connector;
u64 conn_configured = 0;
int tile_pass = 0;
int num_tiled_conns = 0;
@@ -414,9 +417,9 @@ static bool drm_client_target_preferred(struct drm_device *dev,
retry:
for (i = 0; i < connector_count; i++) {
+ struct drm_connector *connector = connectors[i];
const char *mode_type;
- connector = connectors[i];
if (conn_configured & BIT_ULL(i))
continue;
@@ -526,9 +529,8 @@ static int drm_client_pick_crtcs(struct drm_client_dev *client,
struct drm_device *dev = client->dev;
struct drm_connector *connector;
int my_score, best_score, score;
- struct drm_crtc **crtcs, *crtc;
+ struct drm_crtc **crtcs;
struct drm_mode_set *modeset;
- int o;
if (n == connector_count)
return 0;
@@ -558,7 +560,8 @@ static int drm_client_pick_crtcs(struct drm_client_dev *client,
* remaining connectors
*/
drm_client_for_each_modeset(modeset, client) {
- crtc = modeset->crtc;
+ struct drm_crtc *crtc = modeset->crtc;
+ int o;
if (!connector_has_possible_crtc(connector, crtc))
continue;
@@ -602,7 +605,7 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
const int count = min_t(unsigned int, connector_count, BITS_PER_LONG);
unsigned long conn_configured, conn_seq, mask;
struct drm_device *dev = client->dev;
- int i, j;
+ int i;
bool *save_enabled;
bool fallback = true, ret = true;
int num_connectors_enabled = 0;
@@ -636,12 +639,11 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
retry:
conn_seq = conn_configured;
for (i = 0; i < count; i++) {
- struct drm_connector *connector;
+ struct drm_connector *connector = connectors[i];
struct drm_encoder *encoder;
struct drm_crtc *crtc;
const char *mode_type;
-
- connector = connectors[i];
+ int j;
if (conn_configured & BIT(i))
continue;
@@ -1204,11 +1206,12 @@ static void drm_client_modeset_dpms_legacy(struct drm_client_dev *client, int dp
struct drm_connector *connector;
struct drm_mode_set *modeset;
struct drm_modeset_acquire_ctx ctx;
- int j;
int ret;
DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret);
drm_client_for_each_modeset(modeset, client) {
+ int j;
+
if (!modeset->crtc->enabled)
continue;
--
2.45.2
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 8/8] drm/client: s/unsigned int i/int i/
2024-10-03 11:32 [PATCH 0/8] drm/client: Stop using legacy crtc->mode and a bunch of cleanups Ville Syrjala
` (6 preceding siblings ...)
2024-10-03 11:33 ` [PATCH 7/8] drm/client: Move variables to tighter scope Ville Syrjala
@ 2024-10-03 11:33 ` Ville Syrjala
2024-10-07 7:43 ` Thomas Zimmermann
2024-10-03 17:57 ` ✗ Fi.CI.CHECKPATCH: warning for drm/client: Stop using legacy crtc->mode and a bunch of cleanups Patchwork
` (4 subsequent siblings)
12 siblings, 1 reply; 28+ messages in thread
From: Ville Syrjala @ 2024-10-03 11:33 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Replace the 'unsigned int i' footguns with plain old signed
int. Avoids accidents if/when someone decides they need
to iterate backwards.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/drm_client_modeset.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
index ccf5c9b5537b..875d517fa8f2 100644
--- a/drivers/gpu/drm/drm_client_modeset.c
+++ b/drivers/gpu/drm/drm_client_modeset.c
@@ -39,7 +39,7 @@ int drm_client_modeset_create(struct drm_client_dev *client)
unsigned int max_connector_count = 1;
struct drm_mode_set *modeset;
struct drm_crtc *crtc;
- unsigned int i = 0;
+ int i = 0;
/* Add terminating zero entry to enable index less iteration */
client->modesets = kcalloc(num_crtc + 1, sizeof(*client->modesets), GFP_KERNEL);
@@ -75,7 +75,7 @@ static void drm_client_modeset_release(struct drm_client_dev *client)
struct drm_mode_set *modeset;
drm_client_for_each_modeset(modeset, client) {
- unsigned int i;
+ int i;
drm_mode_destroy(client->dev, modeset->mode);
modeset->mode = NULL;
@@ -925,7 +925,7 @@ bool drm_client_rotation(struct drm_mode_set *modeset, unsigned int *rotation)
struct drm_plane *plane = modeset->crtc->primary;
struct drm_cmdline_mode *cmdline;
u64 valid_mask = 0;
- unsigned int i;
+ int i;
if (!modeset->num_connectors)
return false;
--
2.45.2
^ permalink raw reply related [flat|nested] 28+ messages in thread
* Re: [PATCH 7/8] drm/client: Move variables to tighter scope
2024-10-03 11:33 ` [PATCH 7/8] drm/client: Move variables to tighter scope Ville Syrjala
@ 2024-10-03 14:59 ` Ville Syrjälä
0 siblings, 0 replies; 28+ messages in thread
From: Ville Syrjälä @ 2024-10-03 14:59 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx
On Thu, Oct 03, 2024 at 02:33:03PM +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Bunch of variables are only needed inside loops and whatnot.
> Move them to a tighter scope to make the code less confusing.
>
> Also replace the 'unsigned int i' footguns with plain signed
> ints.
I moved that last part to a separate patch but forgot
to update the commit message here.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/drm_client_modeset.c | 33 +++++++++++++++-------------
> 1 file changed, 18 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
> index b82bb3119cb2..ccf5c9b5537b 100644
> --- a/drivers/gpu/drm/drm_client_modeset.c
> +++ b/drivers/gpu/drm/drm_client_modeset.c
> @@ -73,9 +73,10 @@ int drm_client_modeset_create(struct drm_client_dev *client)
> static void drm_client_modeset_release(struct drm_client_dev *client)
> {
> struct drm_mode_set *modeset;
> - unsigned int i;
>
> drm_client_for_each_modeset(modeset, client) {
> + unsigned int i;
> +
> drm_mode_destroy(client->dev, modeset->mode);
> modeset->mode = NULL;
> modeset->fb = NULL;
> @@ -277,9 +278,8 @@ static bool drm_client_target_cloned(struct drm_device *dev,
> struct drm_client_offset offsets[],
> bool enabled[], int width, int height)
> {
> - int count, i, j;
> + int count, i;
> bool can_clone = false;
> - const struct drm_display_mode *mode;
> struct drm_display_mode *dmt_mode;
>
> /* only contemplate cloning in the single crtc case */
> @@ -299,6 +299,8 @@ static bool drm_client_target_cloned(struct drm_device *dev,
> /* check the command line or if nothing common pick 1024x768 */
> can_clone = true;
> for (i = 0; i < connector_count; i++) {
> + int j;
> +
> if (!enabled[i])
> continue;
>
> @@ -332,6 +334,8 @@ static bool drm_client_target_cloned(struct drm_device *dev,
> goto fail;
>
> for (i = 0; i < connector_count; i++) {
> + const struct drm_display_mode *mode;
> +
> if (!enabled[i])
> continue;
>
> @@ -365,12 +369,12 @@ static int drm_client_get_tile_offsets(struct drm_device *dev,
> int idx,
> int h_idx, int v_idx)
> {
> - struct drm_connector *connector;
> int i;
> int hoffset = 0, voffset = 0;
>
> for (i = 0; i < connector_count; i++) {
> - connector = connectors[i];
> + struct drm_connector *connector = connectors[i];
> +
> if (!connector->has_tile)
> continue;
>
> @@ -400,7 +404,6 @@ static bool drm_client_target_preferred(struct drm_device *dev,
> bool enabled[], int width, int height)
> {
> const u64 mask = BIT_ULL(connector_count) - 1;
> - struct drm_connector *connector;
> u64 conn_configured = 0;
> int tile_pass = 0;
> int num_tiled_conns = 0;
> @@ -414,9 +417,9 @@ static bool drm_client_target_preferred(struct drm_device *dev,
>
> retry:
> for (i = 0; i < connector_count; i++) {
> + struct drm_connector *connector = connectors[i];
> const char *mode_type;
>
> - connector = connectors[i];
>
> if (conn_configured & BIT_ULL(i))
> continue;
> @@ -526,9 +529,8 @@ static int drm_client_pick_crtcs(struct drm_client_dev *client,
> struct drm_device *dev = client->dev;
> struct drm_connector *connector;
> int my_score, best_score, score;
> - struct drm_crtc **crtcs, *crtc;
> + struct drm_crtc **crtcs;
> struct drm_mode_set *modeset;
> - int o;
>
> if (n == connector_count)
> return 0;
> @@ -558,7 +560,8 @@ static int drm_client_pick_crtcs(struct drm_client_dev *client,
> * remaining connectors
> */
> drm_client_for_each_modeset(modeset, client) {
> - crtc = modeset->crtc;
> + struct drm_crtc *crtc = modeset->crtc;
> + int o;
>
> if (!connector_has_possible_crtc(connector, crtc))
> continue;
> @@ -602,7 +605,7 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
> const int count = min_t(unsigned int, connector_count, BITS_PER_LONG);
> unsigned long conn_configured, conn_seq, mask;
> struct drm_device *dev = client->dev;
> - int i, j;
> + int i;
> bool *save_enabled;
> bool fallback = true, ret = true;
> int num_connectors_enabled = 0;
> @@ -636,12 +639,11 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
> retry:
> conn_seq = conn_configured;
> for (i = 0; i < count; i++) {
> - struct drm_connector *connector;
> + struct drm_connector *connector = connectors[i];
> struct drm_encoder *encoder;
> struct drm_crtc *crtc;
> const char *mode_type;
> -
> - connector = connectors[i];
> + int j;
>
> if (conn_configured & BIT(i))
> continue;
> @@ -1204,11 +1206,12 @@ static void drm_client_modeset_dpms_legacy(struct drm_client_dev *client, int dp
> struct drm_connector *connector;
> struct drm_mode_set *modeset;
> struct drm_modeset_acquire_ctx ctx;
> - int j;
> int ret;
>
> DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret);
> drm_client_for_each_modeset(modeset, client) {
> + int j;
> +
> if (!modeset->crtc->enabled)
> continue;
>
> --
> 2.45.2
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 4/8] drm/client: Make copies of modes
2024-10-03 11:33 ` [PATCH 4/8] drm/client: Make copies of modes Ville Syrjala
@ 2024-10-03 16:45 ` Ville Syrjälä
2024-10-03 18:15 ` [PATCH v2 " Ville Syrjala
` (2 subsequent siblings)
3 siblings, 0 replies; 28+ messages in thread
From: Ville Syrjälä @ 2024-10-03 16:45 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx
On Thu, Oct 03, 2024 at 02:33:00PM +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> drm_client_firmware_config() is currently picking up the current
> mode of the crtc via the legacy crtc->mode, which is not supposed
> to be used by atomic drivers at all. We can't simply switch over
> to the proper crtc->state->mode because we drop the crtc->mutex
> (which protects crtc->state) before the mode gets used.
>
> The most straightforward solution to extend the lifetime of
> modes[] seem to be to make full copies of the modes instead
> of just storing pointers. We do have to replace the NULL checks
> with something else though. Checking that mode->clock!=0
> should be sufficient.
>
> And with this we can undo also commit 3eadd887dbac
> ("drm/client:Fully protect modes[] with dev->mode_config.mutex")
> as the lifetime of modes[] no longer has anything to do with
> that lock.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/drm_client_modeset.c | 80 +++++++++++++++-------------
> 1 file changed, 43 insertions(+), 37 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
> index 888323137a6a..d413e119db3f 100644
> --- a/drivers/gpu/drm/drm_client_modeset.c
> +++ b/drivers/gpu/drm/drm_client_modeset.c
> @@ -265,10 +265,15 @@ static void drm_client_connectors_enabled(struct drm_connector *connectors[],
> enabled[i] = drm_connector_enabled(connectors[i], false);
> }
>
> +static bool mode_valid(const struct drm_display_mode *mode)
> +{
> + return mode->clock != 0;
> +}
> +
> static bool drm_client_target_cloned(struct drm_device *dev,
> struct drm_connector *connectors[],
> unsigned int connector_count,
> - const struct drm_display_mode *modes[],
> + struct drm_display_mode modes[],
> struct drm_client_offset offsets[],
> bool enabled[], int width, int height)
> {
> @@ -296,15 +301,16 @@ static bool drm_client_target_cloned(struct drm_device *dev,
> for (i = 0; i < connector_count; i++) {
> if (!enabled[i])
> continue;
> - modes[i] = drm_connector_pick_cmdline_mode(connectors[i]);
> - if (!modes[i]) {
> +
> + drm_mode_copy(&modes[i], drm_connector_pick_cmdline_mode(connectors[i]));
Apparently this guy doesn't accept NULL, so this is oops central now.
I'll have to wrap these up a bit I guess.
> + if (!mode_valid(&modes[i])) {
> can_clone = false;
> break;
> }
> for (j = 0; j < i; j++) {
> if (!enabled[j])
> continue;
> - if (!drm_mode_match(modes[j], modes[i],
> + if (!drm_mode_match(&modes[j], &modes[i],
> DRM_MODE_MATCH_TIMINGS |
> DRM_MODE_MATCH_CLOCK |
> DRM_MODE_MATCH_FLAGS |
> @@ -335,9 +341,9 @@ static bool drm_client_target_cloned(struct drm_device *dev,
> DRM_MODE_MATCH_CLOCK |
> DRM_MODE_MATCH_FLAGS |
> DRM_MODE_MATCH_3D_FLAGS))
> - modes[i] = mode;
> + drm_mode_copy(&modes[i], mode);
> }
> - if (!modes[i])
> + if (!mode_valid(&modes[i]))
> can_clone = false;
> }
> drm_mode_destroy(dev, dmt_mode);
> @@ -354,7 +360,7 @@ static bool drm_client_target_cloned(struct drm_device *dev,
> static int drm_client_get_tile_offsets(struct drm_device *dev,
> struct drm_connector *connectors[],
> unsigned int connector_count,
> - const struct drm_display_mode *modes[],
> + const struct drm_display_mode modes[],
> struct drm_client_offset offsets[],
> int idx,
> int h_idx, int v_idx)
> @@ -368,17 +374,17 @@ static int drm_client_get_tile_offsets(struct drm_device *dev,
> if (!connector->has_tile)
> continue;
>
> - if (!modes[i] && (h_idx || v_idx)) {
> + if (!mode_valid(&modes[i]) && (h_idx || v_idx)) {
> drm_dbg_kms(dev,
> "[CONNECTOR:%d:%s] no modes for connector tiled %d\n",
> connector->base.id, connector->name, i);
> continue;
> }
> if (connector->tile_h_loc < h_idx)
> - hoffset += modes[i]->hdisplay;
> + hoffset += modes[i].hdisplay;
>
> if (connector->tile_v_loc < v_idx)
> - voffset += modes[i]->vdisplay;
> + voffset += modes[i].vdisplay;
> }
> offsets[idx].x = hoffset;
> offsets[idx].y = voffset;
> @@ -389,7 +395,7 @@ static int drm_client_get_tile_offsets(struct drm_device *dev,
> static bool drm_client_target_preferred(struct drm_device *dev,
> struct drm_connector *connectors[],
> unsigned int connector_count,
> - const struct drm_display_mode *modes[],
> + struct drm_display_mode modes[],
> struct drm_client_offset offsets[],
> bool enabled[], int width, int height)
> {
> @@ -445,16 +451,16 @@ static bool drm_client_target_preferred(struct drm_device *dev,
> }
>
> mode_type = "cmdline";
> - modes[i] = drm_connector_pick_cmdline_mode(connector);
> + drm_mode_copy(&modes[i], drm_connector_pick_cmdline_mode(connector));
>
> - if (!modes[i]) {
> + if (!mode_valid(&modes[i])) {
> mode_type = "preferred";
> - modes[i] = drm_connector_preferred_mode(connector, width, height);
> + drm_mode_copy(&modes[i], drm_connector_preferred_mode(connector, width, height));
> }
>
> - if (!modes[i]) {
> + if (!mode_valid(&modes[i])) {
> mode_type = "first";
> - modes[i] = drm_connector_first_mode(connector);
> + drm_mode_copy(&modes[i], drm_connector_first_mode(connector));
> }
>
> /*
> @@ -472,17 +478,17 @@ static bool drm_client_target_preferred(struct drm_device *dev,
> connector->tile_v_loc == 0 &&
> !drm_connector_get_tiled_mode(connector))) {
> mode_type = "non tiled";
> - modes[i] = drm_connector_fallback_non_tiled_mode(connector);
> + drm_mode_copy(&modes[i], drm_connector_fallback_non_tiled_mode(connector));
> } else {
> mode_type = "tiled";
> - modes[i] = drm_connector_get_tiled_mode(connector);
> + drm_mode_copy(&modes[i], drm_connector_get_tiled_mode(connector));
> }
> }
>
> - if (modes[i])
> + if (mode_valid(&modes[i]))
> drm_dbg_kms(dev, "[CONNECTOR:%d:%s] found %s mode: %s\n",
> connector->base.id, connector->name,
> - mode_type, modes[i]->name);
> + mode_type, modes[i].name);
> else
> drm_dbg_kms(dev, "[CONNECTOR:%d:%s] no mode found\n",
> connector->base.id, connector->name);
> @@ -514,7 +520,7 @@ static int drm_client_pick_crtcs(struct drm_client_dev *client,
> struct drm_connector *connectors[],
> unsigned int connector_count,
> struct drm_crtc *best_crtcs[],
> - const struct drm_display_mode *modes[],
> + const struct drm_display_mode modes[],
> int n, int width, int height)
> {
> struct drm_device *dev = client->dev;
> @@ -532,7 +538,7 @@ static int drm_client_pick_crtcs(struct drm_client_dev *client,
> best_crtcs[n] = NULL;
> best_score = drm_client_pick_crtcs(client, connectors, connector_count,
> best_crtcs, modes, n + 1, width, height);
> - if (modes[n] == NULL)
> + if (!mode_valid(&modes[n]))
> return best_score;
>
> crtcs = kcalloc(connector_count, sizeof(*crtcs), GFP_KERNEL);
> @@ -566,7 +572,7 @@ static int drm_client_pick_crtcs(struct drm_client_dev *client,
> if (dev->mode_config.num_crtc > 1)
> continue;
>
> - if (!drm_mode_equal(modes[o], modes[n]))
> + if (!drm_mode_equal(&modes[o], &modes[n]))
> continue;
> }
>
> @@ -589,7 +595,7 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
> struct drm_connector *connectors[],
> unsigned int connector_count,
> struct drm_crtc *crtcs[],
> - const struct drm_display_mode *modes[],
> + struct drm_display_mode modes[],
> struct drm_client_offset offsets[],
> bool enabled[], int width, int height)
> {
> @@ -690,20 +696,20 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
> }
>
> mode_type = "cmdline";
> - modes[i] = drm_connector_pick_cmdline_mode(connector);
> + drm_mode_copy(&modes[i], drm_connector_pick_cmdline_mode(connector));
>
> - if (!modes[i]) {
> + if (!mode_valid(&modes[i])) {
> mode_type = "preferred";
> - modes[i] = drm_connector_preferred_mode(connector, width, height);
> + drm_mode_copy(&modes[i], drm_connector_preferred_mode(connector, width, height));
> }
>
> - if (!modes[i]) {
> + if (!mode_valid(&modes[i])) {
> mode_type = "first";
> - modes[i] = drm_connector_first_mode(connector);
> + drm_mode_copy(&modes[i], drm_connector_first_mode(connector));
> }
>
> /* last resort: use current mode */
> - if (!modes[i]) {
> + if (!mode_valid(&modes[i])) {
> /*
> * IMPORTANT: We want to use the adjusted mode (i.e.
> * after the panel fitter upscaling) as the initial
> @@ -716,7 +722,7 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
> * fastboot check to work correctly.
> */
> mode_type = "current";
> - modes[i] = &connector->state->crtc->mode;
> + drm_mode_copy(&modes[i], &connector->state->crtc->mode);
> }
>
> /*
> @@ -726,14 +732,14 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
> if (connector->has_tile &&
> num_tiled_conns < connector->num_h_tile * connector->num_v_tile) {
> mode_type = "non tiled";
> - modes[i] = drm_connector_fallback_non_tiled_mode(connector);
> + drm_mode_copy(&modes[i], drm_connector_fallback_non_tiled_mode(connector));
> }
> crtcs[i] = new_crtc;
>
> drm_dbg_kms(dev, "[CONNECTOR::%d:%s] on [CRTC:%d:%s] using %s mode: %s\n",
> connector->base.id, connector->name,
> new_crtc->base.id, new_crtc->name,
> - mode_type, modes[i]->name);
> + mode_type, modes[i].name);
>
> fallback = false;
> conn_configured |= BIT(i);
> @@ -789,8 +795,7 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
> unsigned int total_modes_count = 0;
> struct drm_client_offset *offsets;
> unsigned int connector_count = 0;
> - /* points to modes protected by mode_config.mutex */
> - const struct drm_display_mode **modes;
> + struct drm_display_mode *modes;
> struct drm_crtc **crtcs;
> int i, ret = 0;
> bool *enabled;
> @@ -858,10 +863,12 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
> crtcs, modes, 0, width, height);
> }
>
> + mutex_unlock(&dev->mode_config.mutex);
> +
> drm_client_modeset_release(client);
>
> for (i = 0; i < connector_count; i++) {
> - const struct drm_display_mode *mode = modes[i];
> + const struct drm_display_mode *mode = &modes[i];
> struct drm_crtc *crtc = crtcs[i];
> struct drm_client_offset *offset = &offsets[i];
>
> @@ -892,7 +899,6 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
> modeset->y = offset->y;
> }
> }
> - mutex_unlock(&dev->mode_config.mutex);
>
> mutex_unlock(&client->modeset_mutex);
> out:
> --
> 2.45.2
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 28+ messages in thread
* ✗ Fi.CI.CHECKPATCH: warning for drm/client: Stop using legacy crtc->mode and a bunch of cleanups
2024-10-03 11:32 [PATCH 0/8] drm/client: Stop using legacy crtc->mode and a bunch of cleanups Ville Syrjala
` (7 preceding siblings ...)
2024-10-03 11:33 ` [PATCH 8/8] drm/client: s/unsigned int i/int i/ Ville Syrjala
@ 2024-10-03 17:57 ` Patchwork
2024-10-03 18:07 ` ✗ Fi.CI.BAT: failure " Patchwork
` (3 subsequent siblings)
12 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2024-10-03 17:57 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx
== Series Details ==
Series: drm/client: Stop using legacy crtc->mode and a bunch of cleanups
URL : https://patchwork.freedesktop.org/series/139493/
State : warning
== Summary ==
Error: dim checkpatch failed
c792344099fd drm/client: Constify modes
dded8f971b9d drm/client: Use array notation for function arguments
5efbfc394267 drm/client: Streamline mode selection debugs
53b2c61a53f2 drm/client: Make copies of modes
-:21: ERROR:GIT_COMMIT_ID: Please use git commit description style 'commit <12+ chars of sha1> ("<title line>")' - ie: 'commit 3eadd887dbac ("drm/client: Fully protect modes[] with dev->mode_config.mutex")'
#21:
And with this we can undo also commit 3eadd887dbac
("drm/client:Fully protect modes[] with dev->mode_config.mutex")
-:131: WARNING:LONG_LINE: line length of 105 exceeds 100 columns
#131: FILE: drivers/gpu/drm/drm_client_modeset.c:458:
+ drm_mode_copy(&modes[i], drm_connector_preferred_mode(connector, width, height));
-:147: WARNING:LONG_LINE: line length of 107 exceeds 100 columns
#147: FILE: drivers/gpu/drm/drm_client_modeset.c:481:
+ drm_mode_copy(&modes[i], drm_connector_fallback_non_tiled_mode(connector));
-:211: WARNING:LONG_LINE: line length of 105 exceeds 100 columns
#211: FILE: drivers/gpu/drm/drm_client_modeset.c:703:
+ drm_mode_copy(&modes[i], drm_connector_preferred_mode(connector, width, height));
total: 1 errors, 3 warnings, 0 checks, 235 lines checked
2c97e1fbfe26 drm/client: Stop using the legacy crtc->mode
e690a0ca1b17 drm/client: s/new_crtc/crtc/
761f32dfac6c drm/client: Move variables to tighter scope
44f98be57a2b drm/client: s/unsigned int i/int i/
^ permalink raw reply [flat|nested] 28+ messages in thread
* ✗ Fi.CI.BAT: failure for drm/client: Stop using legacy crtc->mode and a bunch of cleanups
2024-10-03 11:32 [PATCH 0/8] drm/client: Stop using legacy crtc->mode and a bunch of cleanups Ville Syrjala
` (8 preceding siblings ...)
2024-10-03 17:57 ` ✗ Fi.CI.CHECKPATCH: warning for drm/client: Stop using legacy crtc->mode and a bunch of cleanups Patchwork
@ 2024-10-03 18:07 ` Patchwork
2024-10-03 21:40 ` ✗ Fi.CI.CHECKPATCH: warning for drm/client: Stop using legacy crtc->mode and a bunch of cleanups (rev4) Patchwork
` (2 subsequent siblings)
12 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2024-10-03 18:07 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 13486 bytes --]
== Series Details ==
Series: drm/client: Stop using legacy crtc->mode and a bunch of cleanups
URL : https://patchwork.freedesktop.org/series/139493/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_15481 -> Patchwork_139493v1
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_139493v1 absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_139493v1, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/index.html
Participating hosts (43 -> 42)
------------------------------
Missing (1): fi-snb-2520m
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_139493v1:
### IGT changes ###
#### Possible regressions ####
* igt@i915_module_load@load:
- fi-ilk-650: [PASS][1] -> [ABORT][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/fi-ilk-650/igt@i915_module_load@load.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/fi-ilk-650/igt@i915_module_load@load.html
- bat-jsl-1: [PASS][3] -> [ABORT][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-jsl-1/igt@i915_module_load@load.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-jsl-1/igt@i915_module_load@load.html
- bat-arls-1: [PASS][5] -> [ABORT][6]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-arls-1/igt@i915_module_load@load.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-arls-1/igt@i915_module_load@load.html
- fi-blb-e6850: [PASS][7] -> [ABORT][8]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/fi-blb-e6850/igt@i915_module_load@load.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/fi-blb-e6850/igt@i915_module_load@load.html
- fi-bsw-n3050: [PASS][9] -> [ABORT][10]
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/fi-bsw-n3050/igt@i915_module_load@load.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/fi-bsw-n3050/igt@i915_module_load@load.html
- bat-adlp-6: [PASS][11] -> [ABORT][12]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-adlp-6/igt@i915_module_load@load.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-adlp-6/igt@i915_module_load@load.html
- fi-rkl-11600: [PASS][13] -> [ABORT][14]
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/fi-rkl-11600/igt@i915_module_load@load.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/fi-rkl-11600/igt@i915_module_load@load.html
- bat-dg1-7: [PASS][15] -> [ABORT][16]
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-dg1-7/igt@i915_module_load@load.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-dg1-7/igt@i915_module_load@load.html
- bat-jsl-3: [PASS][17] -> [ABORT][18]
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-jsl-3/igt@i915_module_load@load.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-jsl-3/igt@i915_module_load@load.html
- fi-glk-j4005: [PASS][19] -> [ABORT][20]
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/fi-glk-j4005/igt@i915_module_load@load.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/fi-glk-j4005/igt@i915_module_load@load.html
- bat-adlp-9: [PASS][21] -> [ABORT][22]
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-adlp-9/igt@i915_module_load@load.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-adlp-9/igt@i915_module_load@load.html
- bat-twl-2: [PASS][23] -> [ABORT][24]
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-twl-2/igt@i915_module_load@load.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-twl-2/igt@i915_module_load@load.html
- bat-dg2-11: [PASS][25] -> [ABORT][26]
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-dg2-11/igt@i915_module_load@load.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-dg2-11/igt@i915_module_load@load.html
- fi-kbl-7567u: [PASS][27] -> [ABORT][28]
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/fi-kbl-7567u/igt@i915_module_load@load.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/fi-kbl-7567u/igt@i915_module_load@load.html
- fi-cfl-8700k: [PASS][29] -> [ABORT][30]
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/fi-cfl-8700k/igt@i915_module_load@load.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/fi-cfl-8700k/igt@i915_module_load@load.html
- bat-twl-1: [PASS][31] -> [ABORT][32]
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-twl-1/igt@i915_module_load@load.html
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-twl-1/igt@i915_module_load@load.html
- bat-apl-1: [PASS][33] -> [ABORT][34]
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-apl-1/igt@i915_module_load@load.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-apl-1/igt@i915_module_load@load.html
- bat-dg2-14: [PASS][35] -> [ABORT][36]
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-dg2-14/igt@i915_module_load@load.html
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-dg2-14/igt@i915_module_load@load.html
- fi-elk-e7500: [PASS][37] -> [ABORT][38]
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/fi-elk-e7500/igt@i915_module_load@load.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/fi-elk-e7500/igt@i915_module_load@load.html
- bat-rplp-1: [PASS][39] -> [ABORT][40]
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-rplp-1/igt@i915_module_load@load.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-rplp-1/igt@i915_module_load@load.html
- fi-tgl-1115g4: [PASS][41] -> [ABORT][42]
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/fi-tgl-1115g4/igt@i915_module_load@load.html
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/fi-tgl-1115g4/igt@i915_module_load@load.html
- fi-cfl-guc: [PASS][43] -> [ABORT][44]
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/fi-cfl-guc/igt@i915_module_load@load.html
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/fi-cfl-guc/igt@i915_module_load@load.html
- fi-hsw-4770: [PASS][45] -> [ABORT][46]
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/fi-hsw-4770/igt@i915_module_load@load.html
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/fi-hsw-4770/igt@i915_module_load@load.html
- fi-cfl-8109u: [PASS][47] -> [ABORT][48]
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/fi-cfl-8109u/igt@i915_module_load@load.html
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/fi-cfl-8109u/igt@i915_module_load@load.html
- bat-arls-2: [PASS][49] -> [ABORT][50]
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-arls-2/igt@i915_module_load@load.html
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-arls-2/igt@i915_module_load@load.html
- fi-ivb-3770: [PASS][51] -> [ABORT][52]
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/fi-ivb-3770/igt@i915_module_load@load.html
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/fi-ivb-3770/igt@i915_module_load@load.html
- bat-mtlp-8: [PASS][53] -> [ABORT][54]
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-mtlp-8/igt@i915_module_load@load.html
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-mtlp-8/igt@i915_module_load@load.html
- bat-dg2-8: [PASS][55] -> [ABORT][56]
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-dg2-8/igt@i915_module_load@load.html
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-dg2-8/igt@i915_module_load@load.html
- bat-adls-6: [PASS][57] -> [ABORT][58]
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-adls-6/igt@i915_module_load@load.html
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-adls-6/igt@i915_module_load@load.html
* igt@kms_force_connector_basic@force-connector-state:
- bat-adlm-1: [PASS][59] -> [ABORT][60]
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-adlm-1/igt@kms_force_connector_basic@force-connector-state.html
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-adlm-1/igt@kms_force_connector_basic@force-connector-state.html
- bat-mtlp-6: [PASS][61] -> [ABORT][62]
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-mtlp-6/igt@kms_force_connector_basic@force-connector-state.html
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-mtlp-6/igt@kms_force_connector_basic@force-connector-state.html
- fi-bsw-nick: [PASS][63] -> [ABORT][64]
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/fi-bsw-nick/igt@kms_force_connector_basic@force-connector-state.html
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/fi-bsw-nick/igt@kms_force_connector_basic@force-connector-state.html
- bat-kbl-2: [PASS][65] -> [ABORT][66]
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-kbl-2/igt@kms_force_connector_basic@force-connector-state.html
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-kbl-2/igt@kms_force_connector_basic@force-connector-state.html
- bat-dg2-9: [PASS][67] -> [ABORT][68]
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-dg2-9/igt@kms_force_connector_basic@force-connector-state.html
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-dg2-9/igt@kms_force_connector_basic@force-connector-state.html
- fi-kbl-x1275: [PASS][69] -> [ABORT][70]
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/fi-kbl-x1275/igt@kms_force_connector_basic@force-connector-state.html
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/fi-kbl-x1275/igt@kms_force_connector_basic@force-connector-state.html
- fi-kbl-guc: [PASS][71] -> [ABORT][72]
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/fi-kbl-guc/igt@kms_force_connector_basic@force-connector-state.html
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/fi-kbl-guc/igt@kms_force_connector_basic@force-connector-state.html
#### Warnings ####
* igt@i915_module_load@load:
- bat-arls-5: [DMESG-WARN][73] ([i915#11637]) -> [ABORT][74]
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-arls-5/igt@i915_module_load@load.html
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-arls-5/igt@i915_module_load@load.html
#### Suppressed ####
The following results come from untrusted machines, tests, or statuses.
They do not affect the overall result.
* igt@i915_module_load@load:
- {bat-arlh-3}: [PASS][75] -> [ABORT][76]
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-arlh-3/igt@i915_module_load@load.html
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-arlh-3/igt@i915_module_load@load.html
* igt@kms_force_connector_basic@force-edid:
- {bat-dg1-6}: [PASS][77] -> [ABORT][78]
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15481/bat-dg1-6/igt@kms_force_connector_basic@force-edid.html
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-dg1-6/igt@kms_force_connector_basic@force-edid.html
Known issues
------------
Here are the changes found in Patchwork_139493v1 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@runner@aborted:
- bat-dg2-13: NOTRUN -> [FAIL][79] ([i915#12292])
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/bat-dg2-13/igt@runner@aborted.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[i915#11637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11637
[i915#12292]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12292
Build changes
-------------
* Linux: CI_DRM_15481 -> Patchwork_139493v1
CI-20190529: 20190529
CI_DRM_15481: 17c0158bdb239d8b6d23834db5595ea422b69915 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8051: c2efcb5f207eebb0c19106f27b310f61ded6f11d @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_139493v1: 17c0158bdb239d8b6d23834db5595ea422b69915 @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v1/index.html
[-- Attachment #2: Type: text/html, Size: 14402 bytes --]
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v2 4/8] drm/client: Make copies of modes
2024-10-03 11:33 ` [PATCH 4/8] drm/client: Make copies of modes Ville Syrjala
2024-10-03 16:45 ` Ville Syrjälä
@ 2024-10-03 18:15 ` Ville Syrjala
2024-10-07 7:36 ` [PATCH " Thomas Zimmermann
2024-10-09 14:09 ` kernel test robot
3 siblings, 0 replies; 28+ messages in thread
From: Ville Syrjala @ 2024-10-03 18:15 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
drm_client_firmware_config() is currently picking up the current
mode of the crtc via the legacy crtc->mode, which is not supposed
to be used by atomic drivers at all. We can't simply switch over
to the proper crtc->state->mode because we drop the crtc->mutex
(which protects crtc->state) before the mode gets used.
The most straightforward solution to extend the lifetime of
modes[] seem to be to make full copies of the modes instead
of just storing pointers. We do have to replace the NULL checks
with something else though. Checking that mode->clock!=0
should be sufficient.
And with this we can undo also commit 3eadd887dbac
("drm/client:Fully protect modes[] with dev->mode_config.mutex")
as the lifetime of modes[] no longer has anything to do with
that lock.
v2: Don't try to copy NULL modes
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/drm_client_modeset.c | 96 +++++++++++++++++-----------
1 file changed, 59 insertions(+), 37 deletions(-)
diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
index 888323137a6a..730ed0d4bfa9 100644
--- a/drivers/gpu/drm/drm_client_modeset.c
+++ b/drivers/gpu/drm/drm_client_modeset.c
@@ -265,10 +265,21 @@ static void drm_client_connectors_enabled(struct drm_connector *connectors[],
enabled[i] = drm_connector_enabled(connectors[i], false);
}
+static bool mode_valid(const struct drm_display_mode *mode)
+{
+ return mode->clock != 0;
+}
+
+static void mode_copy_if_not_null(struct drm_display_mode *dst, const struct drm_display_mode *src)
+{
+ if (src)
+ drm_mode_copy(dst, src);
+}
+
static bool drm_client_target_cloned(struct drm_device *dev,
struct drm_connector *connectors[],
unsigned int connector_count,
- const struct drm_display_mode *modes[],
+ struct drm_display_mode modes[],
struct drm_client_offset offsets[],
bool enabled[], int width, int height)
{
@@ -296,15 +307,16 @@ static bool drm_client_target_cloned(struct drm_device *dev,
for (i = 0; i < connector_count; i++) {
if (!enabled[i])
continue;
- modes[i] = drm_connector_pick_cmdline_mode(connectors[i]);
- if (!modes[i]) {
+
+ mode_copy_if_not_null(&modes[i], drm_connector_pick_cmdline_mode(connectors[i]));
+ if (!mode_valid(&modes[i])) {
can_clone = false;
break;
}
for (j = 0; j < i; j++) {
if (!enabled[j])
continue;
- if (!drm_mode_match(modes[j], modes[i],
+ if (!drm_mode_match(&modes[j], &modes[i],
DRM_MODE_MATCH_TIMINGS |
DRM_MODE_MATCH_CLOCK |
DRM_MODE_MATCH_FLAGS |
@@ -335,9 +347,9 @@ static bool drm_client_target_cloned(struct drm_device *dev,
DRM_MODE_MATCH_CLOCK |
DRM_MODE_MATCH_FLAGS |
DRM_MODE_MATCH_3D_FLAGS))
- modes[i] = mode;
+ mode_copy_if_not_null(&modes[i], mode);
}
- if (!modes[i])
+ if (!mode_valid(&modes[i]))
can_clone = false;
}
drm_mode_destroy(dev, dmt_mode);
@@ -354,7 +366,7 @@ static bool drm_client_target_cloned(struct drm_device *dev,
static int drm_client_get_tile_offsets(struct drm_device *dev,
struct drm_connector *connectors[],
unsigned int connector_count,
- const struct drm_display_mode *modes[],
+ const struct drm_display_mode modes[],
struct drm_client_offset offsets[],
int idx,
int h_idx, int v_idx)
@@ -368,17 +380,17 @@ static int drm_client_get_tile_offsets(struct drm_device *dev,
if (!connector->has_tile)
continue;
- if (!modes[i] && (h_idx || v_idx)) {
+ if (!mode_valid(&modes[i]) && (h_idx || v_idx)) {
drm_dbg_kms(dev,
"[CONNECTOR:%d:%s] no modes for connector tiled %d\n",
connector->base.id, connector->name, i);
continue;
}
if (connector->tile_h_loc < h_idx)
- hoffset += modes[i]->hdisplay;
+ hoffset += modes[i].hdisplay;
if (connector->tile_v_loc < v_idx)
- voffset += modes[i]->vdisplay;
+ voffset += modes[i].vdisplay;
}
offsets[idx].x = hoffset;
offsets[idx].y = voffset;
@@ -389,7 +401,7 @@ static int drm_client_get_tile_offsets(struct drm_device *dev,
static bool drm_client_target_preferred(struct drm_device *dev,
struct drm_connector *connectors[],
unsigned int connector_count,
- const struct drm_display_mode *modes[],
+ struct drm_display_mode modes[],
struct drm_client_offset offsets[],
bool enabled[], int width, int height)
{
@@ -445,16 +457,19 @@ static bool drm_client_target_preferred(struct drm_device *dev,
}
mode_type = "cmdline";
- modes[i] = drm_connector_pick_cmdline_mode(connector);
+ mode_copy_if_not_null(&modes[i],
+ drm_connector_pick_cmdline_mode(connector));
- if (!modes[i]) {
+ if (!mode_valid(&modes[i])) {
mode_type = "preferred";
- modes[i] = drm_connector_preferred_mode(connector, width, height);
+ mode_copy_if_not_null(&modes[i],
+ drm_connector_preferred_mode(connector, width, height));
}
- if (!modes[i]) {
+ if (!mode_valid(&modes[i])) {
mode_type = "first";
- modes[i] = drm_connector_first_mode(connector);
+ mode_copy_if_not_null(&modes[i],
+ drm_connector_first_mode(connector));
}
/*
@@ -472,17 +487,19 @@ static bool drm_client_target_preferred(struct drm_device *dev,
connector->tile_v_loc == 0 &&
!drm_connector_get_tiled_mode(connector))) {
mode_type = "non tiled";
- modes[i] = drm_connector_fallback_non_tiled_mode(connector);
+ mode_copy_if_not_null(&modes[i],
+ drm_connector_fallback_non_tiled_mode(connector));
} else {
mode_type = "tiled";
- modes[i] = drm_connector_get_tiled_mode(connector);
+ mode_copy_if_not_null(&modes[i],
+ drm_connector_get_tiled_mode(connector));
}
}
- if (modes[i])
+ if (mode_valid(&modes[i]))
drm_dbg_kms(dev, "[CONNECTOR:%d:%s] found %s mode: %s\n",
connector->base.id, connector->name,
- mode_type, modes[i]->name);
+ mode_type, modes[i].name);
else
drm_dbg_kms(dev, "[CONNECTOR:%d:%s] no mode found\n",
connector->base.id, connector->name);
@@ -514,7 +531,7 @@ static int drm_client_pick_crtcs(struct drm_client_dev *client,
struct drm_connector *connectors[],
unsigned int connector_count,
struct drm_crtc *best_crtcs[],
- const struct drm_display_mode *modes[],
+ const struct drm_display_mode modes[],
int n, int width, int height)
{
struct drm_device *dev = client->dev;
@@ -532,7 +549,7 @@ static int drm_client_pick_crtcs(struct drm_client_dev *client,
best_crtcs[n] = NULL;
best_score = drm_client_pick_crtcs(client, connectors, connector_count,
best_crtcs, modes, n + 1, width, height);
- if (modes[n] == NULL)
+ if (!mode_valid(&modes[n]))
return best_score;
crtcs = kcalloc(connector_count, sizeof(*crtcs), GFP_KERNEL);
@@ -566,7 +583,7 @@ static int drm_client_pick_crtcs(struct drm_client_dev *client,
if (dev->mode_config.num_crtc > 1)
continue;
- if (!drm_mode_equal(modes[o], modes[n]))
+ if (!drm_mode_equal(&modes[o], &modes[n]))
continue;
}
@@ -589,7 +606,7 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
struct drm_connector *connectors[],
unsigned int connector_count,
struct drm_crtc *crtcs[],
- const struct drm_display_mode *modes[],
+ struct drm_display_mode modes[],
struct drm_client_offset offsets[],
bool enabled[], int width, int height)
{
@@ -690,20 +707,23 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
}
mode_type = "cmdline";
- modes[i] = drm_connector_pick_cmdline_mode(connector);
+ mode_copy_if_not_null(&modes[i],
+ drm_connector_pick_cmdline_mode(connector));
- if (!modes[i]) {
+ if (!mode_valid(&modes[i])) {
mode_type = "preferred";
- modes[i] = drm_connector_preferred_mode(connector, width, height);
+ mode_copy_if_not_null(&modes[i],
+ drm_connector_preferred_mode(connector, width, height));
}
- if (!modes[i]) {
+ if (!mode_valid(&modes[i])) {
mode_type = "first";
- modes[i] = drm_connector_first_mode(connector);
+ mode_copy_if_not_null(&modes[i],
+ drm_connector_first_mode(connector));
}
/* last resort: use current mode */
- if (!modes[i]) {
+ if (!mode_valid(&modes[i])) {
/*
* IMPORTANT: We want to use the adjusted mode (i.e.
* after the panel fitter upscaling) as the initial
@@ -716,7 +736,8 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
* fastboot check to work correctly.
*/
mode_type = "current";
- modes[i] = &connector->state->crtc->mode;
+ mode_copy_if_not_null(&modes[i],
+ &connector->state->crtc->mode);
}
/*
@@ -726,14 +747,15 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
if (connector->has_tile &&
num_tiled_conns < connector->num_h_tile * connector->num_v_tile) {
mode_type = "non tiled";
- modes[i] = drm_connector_fallback_non_tiled_mode(connector);
+ mode_copy_if_not_null(&modes[i],
+ drm_connector_fallback_non_tiled_mode(connector));
}
crtcs[i] = new_crtc;
drm_dbg_kms(dev, "[CONNECTOR::%d:%s] on [CRTC:%d:%s] using %s mode: %s\n",
connector->base.id, connector->name,
new_crtc->base.id, new_crtc->name,
- mode_type, modes[i]->name);
+ mode_type, modes[i].name);
fallback = false;
conn_configured |= BIT(i);
@@ -789,8 +811,7 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
unsigned int total_modes_count = 0;
struct drm_client_offset *offsets;
unsigned int connector_count = 0;
- /* points to modes protected by mode_config.mutex */
- const struct drm_display_mode **modes;
+ struct drm_display_mode *modes;
struct drm_crtc **crtcs;
int i, ret = 0;
bool *enabled;
@@ -858,10 +879,12 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
crtcs, modes, 0, width, height);
}
+ mutex_unlock(&dev->mode_config.mutex);
+
drm_client_modeset_release(client);
for (i = 0; i < connector_count; i++) {
- const struct drm_display_mode *mode = modes[i];
+ const struct drm_display_mode *mode = &modes[i];
struct drm_crtc *crtc = crtcs[i];
struct drm_client_offset *offset = &offsets[i];
@@ -892,7 +915,6 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
modeset->y = offset->y;
}
}
- mutex_unlock(&dev->mode_config.mutex);
mutex_unlock(&client->modeset_mutex);
out:
--
2.45.2
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v2 5/8] drm/client: Stop using the legacy crtc->mode
2024-10-03 11:33 ` [PATCH 5/8] drm/client: Stop using the legacy crtc->mode Ville Syrjala
@ 2024-10-03 18:16 ` Ville Syrjala
0 siblings, 0 replies; 28+ messages in thread
From: Ville Syrjala @ 2024-10-03 18:16 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
crtc->mode is legacy junk and shouldn't really be used with
atomic drivers.
Most (all?) atomic drivers do end up still calling
drm_atomic_helper_update_legacy_modeset_state() at some
point, so crtc->mode does still get populated, and this
does work for now. But now that the modes[] lifetime issues
have been sorted out we can just switch over to the
proper crtc->state->mode.
v2: Rebase
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/drm_client_modeset.c | 13 +------------
1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
index 730ed0d4bfa9..0f3418cb59ab 100644
--- a/drivers/gpu/drm/drm_client_modeset.c
+++ b/drivers/gpu/drm/drm_client_modeset.c
@@ -724,20 +724,9 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
/* last resort: use current mode */
if (!mode_valid(&modes[i])) {
- /*
- * IMPORTANT: We want to use the adjusted mode (i.e.
- * after the panel fitter upscaling) as the initial
- * config, not the input mode, which is what crtc->mode
- * usually contains. But since our current
- * code puts a mode derived from the post-pfit timings
- * into crtc->mode this works out correctly.
- *
- * This is crtc->mode and not crtc->state->mode for the
- * fastboot check to work correctly.
- */
mode_type = "current";
mode_copy_if_not_null(&modes[i],
- &connector->state->crtc->mode);
+ &new_crtc->state->mode);
}
/*
--
2.45.2
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v2 6/8] drm/client: s/new_crtc/crtc/
2024-10-03 11:33 ` [PATCH 6/8] drm/client: s/new_crtc/crtc/ Ville Syrjala
@ 2024-10-03 18:17 ` Ville Syrjala
0 siblings, 0 replies; 28+ messages in thread
From: Ville Syrjala @ 2024-10-03 18:17 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Rename the 'new_crtc' variable to just 'crtc' in
drm_client_firmware_config(). We don't call any of the other
stuff in here new or old so this feels out of place.
v2: Rebase
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/drm_client_modeset.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
index 0f3418cb59ab..d0ed7a8effbe 100644
--- a/drivers/gpu/drm/drm_client_modeset.c
+++ b/drivers/gpu/drm/drm_client_modeset.c
@@ -649,7 +649,7 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
for (i = 0; i < count; i++) {
struct drm_connector *connector;
struct drm_encoder *encoder;
- struct drm_crtc *new_crtc;
+ struct drm_crtc *crtc;
const char *mode_type;
connector = connectors[i];
@@ -691,7 +691,7 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
num_connectors_enabled++;
- new_crtc = connector->state->crtc;
+ crtc = connector->state->crtc;
/*
* Make sure we're not trying to drive multiple connectors
@@ -699,7 +699,7 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
* match the BIOS.
*/
for (j = 0; j < count; j++) {
- if (crtcs[j] == new_crtc) {
+ if (crtcs[j] == crtc) {
drm_dbg_kms(dev, "[CONNECTOR:%d:%s] fallback: cloned configuration\n",
connector->base.id, connector->name);
goto bail;
@@ -726,7 +726,7 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
if (!mode_valid(&modes[i])) {
mode_type = "current";
mode_copy_if_not_null(&modes[i],
- &new_crtc->state->mode);
+ &crtc->state->mode);
}
/*
@@ -739,11 +739,11 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
mode_copy_if_not_null(&modes[i],
drm_connector_fallback_non_tiled_mode(connector));
}
- crtcs[i] = new_crtc;
+ crtcs[i] = crtc;
drm_dbg_kms(dev, "[CONNECTOR::%d:%s] on [CRTC:%d:%s] using %s mode: %s\n",
connector->base.id, connector->name,
- new_crtc->base.id, new_crtc->name,
+ crtc->base.id, crtc->name,
mode_type, modes[i].name);
fallback = false;
--
2.45.2
^ permalink raw reply related [flat|nested] 28+ messages in thread
* ✗ Fi.CI.CHECKPATCH: warning for drm/client: Stop using legacy crtc->mode and a bunch of cleanups (rev4)
2024-10-03 11:32 [PATCH 0/8] drm/client: Stop using legacy crtc->mode and a bunch of cleanups Ville Syrjala
` (9 preceding siblings ...)
2024-10-03 18:07 ` ✗ Fi.CI.BAT: failure " Patchwork
@ 2024-10-03 21:40 ` Patchwork
2024-10-03 21:49 ` ✓ Fi.CI.BAT: success " Patchwork
2024-10-08 6:36 ` ✓ Fi.CI.IGT: " Patchwork
12 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2024-10-03 21:40 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx
== Series Details ==
Series: drm/client: Stop using legacy crtc->mode and a bunch of cleanups (rev4)
URL : https://patchwork.freedesktop.org/series/139493/
State : warning
== Summary ==
Error: dim checkpatch failed
ee02b235c701 drm/client: Constify modes
8f2ff5600d27 drm/client: Use array notation for function arguments
3359a09a8b20 drm/client: Streamline mode selection debugs
b9c677dbe986 drm/client: Make copies of modes
-:21: ERROR:GIT_COMMIT_ID: Please use git commit description style 'commit <12+ chars of sha1> ("<title line>")' - ie: 'commit 3eadd887dbac ("drm/client: Fully protect modes[] with dev->mode_config.mutex")'
#21:
And with this we can undo also commit 3eadd887dbac
("drm/client:Fully protect modes[] with dev->mode_config.mutex")
-:141: WARNING:LONG_LINE: line length of 102 exceeds 100 columns
#141: FILE: drivers/gpu/drm/drm_client_modeset.c:466:
+ drm_connector_preferred_mode(connector, width, height));
-:159: WARNING:LONG_LINE: line length of 104 exceeds 100 columns
#159: FILE: drivers/gpu/drm/drm_client_modeset.c:491:
+ drm_connector_fallback_non_tiled_mode(connector));
-:226: WARNING:LONG_LINE: line length of 102 exceeds 100 columns
#226: FILE: drivers/gpu/drm/drm_client_modeset.c:716:
+ drm_connector_preferred_mode(connector, width, height));
total: 1 errors, 3 warnings, 0 checks, 251 lines checked
1cee507155e9 drm/client: Stop using the legacy crtc->mode
eb60357dee42 drm/client: s/new_crtc/crtc/
380825ae46a6 drm/client: Move variables to tighter scope
18141aafedb0 drm/client: s/unsigned int i/int i/
^ permalink raw reply [flat|nested] 28+ messages in thread
* ✓ Fi.CI.BAT: success for drm/client: Stop using legacy crtc->mode and a bunch of cleanups (rev4)
2024-10-03 11:32 [PATCH 0/8] drm/client: Stop using legacy crtc->mode and a bunch of cleanups Ville Syrjala
` (10 preceding siblings ...)
2024-10-03 21:40 ` ✗ Fi.CI.CHECKPATCH: warning for drm/client: Stop using legacy crtc->mode and a bunch of cleanups (rev4) Patchwork
@ 2024-10-03 21:49 ` Patchwork
2024-10-08 6:36 ` ✓ Fi.CI.IGT: " Patchwork
12 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2024-10-03 21:49 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 5576 bytes --]
== Series Details ==
Series: drm/client: Stop using legacy crtc->mode and a bunch of cleanups (rev4)
URL : https://patchwork.freedesktop.org/series/139493/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_15483 -> Patchwork_139493v4
====================================================
Summary
-------
**WARNING**
Minor unknown changes coming with Patchwork_139493v4 need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_139493v4, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/index.html
Participating hosts (43 -> 41)
------------------------------
Missing (2): bat-rpls-4 fi-snb-2520m
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_139493v4:
### IGT changes ###
#### Warnings ####
* igt@i915_selftest@live@gem:
- bat-arls-5: [DMESG-WARN][1] ([i915#11637]) -> [INCOMPLETE][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/bat-arls-5/igt@i915_selftest@live@gem.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/bat-arls-5/igt@i915_selftest@live@gem.html
Known issues
------------
Here are the changes found in Patchwork_139493v4 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@i915_selftest@live:
- bat-adlp-6: [PASS][3] -> [INCOMPLETE][4] ([i915#9413])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/bat-adlp-6/igt@i915_selftest@live.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/bat-adlp-6/igt@i915_selftest@live.html
* igt@i915_selftest@live@gt_lrc:
- bat-adlp-6: [PASS][5] -> [INCOMPLETE][6] ([i915#10886] / [i915#9413])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/bat-adlp-6/igt@i915_selftest@live@gt_lrc.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/bat-adlp-6/igt@i915_selftest@live@gt_lrc.html
* igt@runner@aborted:
- bat-dg2-13: NOTRUN -> [FAIL][7] ([i915#12292])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/bat-dg2-13/igt@runner@aborted.html
#### Possible fixes ####
* igt@i915_selftest@live:
- fi-hsw-4770: [DMESG-WARN][8] ([i915#12310]) -> [PASS][9] +1 other test pass
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/fi-hsw-4770/igt@i915_selftest@live.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/fi-hsw-4770/igt@i915_selftest@live.html
- bat-mtlp-6: [DMESG-FAIL][10] ([i915#10341] / [i915#9500]) -> [PASS][11]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/bat-mtlp-6/igt@i915_selftest@live.html
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/bat-mtlp-6/igt@i915_selftest@live.html
- bat-dg2-11: [ABORT][12] ([i915#12133]) -> [PASS][13]
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/bat-dg2-11/igt@i915_selftest@live.html
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/bat-dg2-11/igt@i915_selftest@live.html
* igt@i915_selftest@live@active:
- bat-dg2-11: [ABORT][14] ([i915#12305]) -> [PASS][15]
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/bat-dg2-11/igt@i915_selftest@live@active.html
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/bat-dg2-11/igt@i915_selftest@live@active.html
* igt@i915_selftest@live@gt_mocs:
- bat-mtlp-6: [DMESG-FAIL][16] ([i915#9500]) -> [PASS][17]
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/bat-mtlp-6/igt@i915_selftest@live@gt_mocs.html
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/bat-mtlp-6/igt@i915_selftest@live@gt_mocs.html
#### Warnings ####
* igt@i915_selftest@live:
- bat-arls-5: [DMESG-WARN][18] ([i915#10341] / [i915#12133]) -> [INCOMPLETE][19] ([i915#10341] / [i915#12133])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/bat-arls-5/igt@i915_selftest@live.html
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/bat-arls-5/igt@i915_selftest@live.html
[i915#10341]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10341
[i915#10886]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10886
[i915#11637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11637
[i915#12133]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12133
[i915#12292]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12292
[i915#12305]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12305
[i915#12310]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12310
[i915#9413]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9413
[i915#9500]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9500
Build changes
-------------
* Linux: CI_DRM_15483 -> Patchwork_139493v4
CI-20190529: 20190529
CI_DRM_15483: b147208bee50e8d141c39532f8d2c467b3d1df7f @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8051: c2efcb5f207eebb0c19106f27b310f61ded6f11d @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_139493v4: b147208bee50e8d141c39532f8d2c467b3d1df7f @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/index.html
[-- Attachment #2: Type: text/html, Size: 6816 bytes --]
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 1/8] drm/client: Constify modes
2024-10-03 11:32 ` [PATCH 1/8] drm/client: Constify modes Ville Syrjala
@ 2024-10-04 23:59 ` kernel test robot
2024-10-05 0:19 ` kernel test robot
1 sibling, 0 replies; 28+ messages in thread
From: kernel test robot @ 2024-10-04 23:59 UTC (permalink / raw)
To: Ville Syrjala, dri-devel
Cc: llvm, oe-kbuild-all, intel-gfx, Jani Nikula, Thomas Zimmermann
Hi Ville,
kernel test robot noticed the following build errors:
[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on next-20241004]
[cannot apply to drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm/drm-next drm-exynos/exynos-drm-next linus/master v6.12-rc1]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Ville-Syrjala/drm-client-Constify-modes/20241004-061843
base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link: https://lore.kernel.org/r/20241003113304.11700-2-ville.syrjala%40linux.intel.com
patch subject: [PATCH 1/8] drm/client: Constify modes
config: i386-buildonly-randconfig-002-20241005 (https://download.01.org/0day-ci/archive/20241005/202410050750.I0iVowt8-lkp@intel.com/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241005/202410050750.I0iVowt8-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202410050750.I0iVowt8-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/gpu/drm/drm_client_modeset.c:1266:
>> drivers/gpu/drm/tests/drm_client_modeset_test.c:108:7: error: assigning to 'struct drm_display_mode *' from 'const struct drm_display_mode *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
108 | mode = drm_connector_pick_cmdline_mode(connector);
| ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
vim +108 drivers/gpu/drm/tests/drm_client_modeset_test.c
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 84
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 85 static void drm_test_pick_cmdline_res_1920_1080_60(struct kunit *test)
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 86 {
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 87 struct drm_client_modeset_test_priv *priv = test->priv;
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 88 struct drm_device *drm = priv->drm;
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 89 struct drm_connector *connector = &priv->connector;
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 90 struct drm_cmdline_mode *cmdline_mode = &connector->cmdline_mode;
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 91 struct drm_display_mode *expected_mode, *mode;
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 92 const char *cmdline = "1920x1080@60";
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 93 int ret;
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 94
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 95 expected_mode = drm_mode_find_dmt(priv->drm, 1920, 1080, 60, false);
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 96 KUNIT_ASSERT_NOT_NULL(test, expected_mode);
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 97
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 98 KUNIT_ASSERT_TRUE(test,
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 99 drm_mode_parse_command_line_for_connector(cmdline,
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 100 connector,
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 101 cmdline_mode));
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 102
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 103 mutex_lock(&drm->mode_config.mutex);
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 104 ret = drm_helper_probe_single_connector_modes(connector, 1920, 1080);
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 105 mutex_unlock(&drm->mode_config.mutex);
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 106 KUNIT_ASSERT_GT(test, ret, 0);
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 107
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 @108 mode = drm_connector_pick_cmdline_mode(connector);
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 109 KUNIT_ASSERT_NOT_NULL(test, mode);
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 110
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 111 KUNIT_EXPECT_TRUE(test, drm_mode_equal(expected_mode, mode));
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 112 }
8fc0380f6ba7e94 Maxime Ripard 2022-11-14 113
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 1/8] drm/client: Constify modes
2024-10-03 11:32 ` [PATCH 1/8] drm/client: Constify modes Ville Syrjala
2024-10-04 23:59 ` kernel test robot
@ 2024-10-05 0:19 ` kernel test robot
1 sibling, 0 replies; 28+ messages in thread
From: kernel test robot @ 2024-10-05 0:19 UTC (permalink / raw)
To: Ville Syrjala, dri-devel
Cc: oe-kbuild-all, intel-gfx, Jani Nikula, Thomas Zimmermann
Hi Ville,
kernel test robot noticed the following build warnings:
[auto build test WARNING on drm-misc/drm-misc-next]
[also build test WARNING on next-20241004]
[cannot apply to drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm/drm-next drm-exynos/exynos-drm-next linus/master v6.12-rc1]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Ville-Syrjala/drm-client-Constify-modes/20241004-061843
base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link: https://lore.kernel.org/r/20241003113304.11700-2-ville.syrjala%40linux.intel.com
patch subject: [PATCH 1/8] drm/client: Constify modes
config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20241005/202410050841.RWs2VIP5-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 13.3.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241005/202410050841.RWs2VIP5-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202410050841.RWs2VIP5-lkp@intel.com/
All warnings (new ones prefixed by >>):
In file included from drivers/gpu/drm/drm_client_modeset.c:1266:
drivers/gpu/drm/tests/drm_client_modeset_test.c: In function 'drm_test_pick_cmdline_res_1920_1080_60':
>> drivers/gpu/drm/tests/drm_client_modeset_test.c:108:14: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
108 | mode = drm_connector_pick_cmdline_mode(connector);
| ^
vim +/const +108 drivers/gpu/drm/tests/drm_client_modeset_test.c
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 84
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 85 static void drm_test_pick_cmdline_res_1920_1080_60(struct kunit *test)
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 86 {
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 87 struct drm_client_modeset_test_priv *priv = test->priv;
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 88 struct drm_device *drm = priv->drm;
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 89 struct drm_connector *connector = &priv->connector;
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 90 struct drm_cmdline_mode *cmdline_mode = &connector->cmdline_mode;
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 91 struct drm_display_mode *expected_mode, *mode;
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 92 const char *cmdline = "1920x1080@60";
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 93 int ret;
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 94
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 95 expected_mode = drm_mode_find_dmt(priv->drm, 1920, 1080, 60, false);
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 96 KUNIT_ASSERT_NOT_NULL(test, expected_mode);
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 97
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 98 KUNIT_ASSERT_TRUE(test,
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 99 drm_mode_parse_command_line_for_connector(cmdline,
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 100 connector,
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 101 cmdline_mode));
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 102
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 103 mutex_lock(&drm->mode_config.mutex);
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 104 ret = drm_helper_probe_single_connector_modes(connector, 1920, 1080);
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 105 mutex_unlock(&drm->mode_config.mutex);
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 106 KUNIT_ASSERT_GT(test, ret, 0);
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 107
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 @108 mode = drm_connector_pick_cmdline_mode(connector);
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 109 KUNIT_ASSERT_NOT_NULL(test, mode);
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 110
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 111 KUNIT_EXPECT_TRUE(test, drm_mode_equal(expected_mode, mode));
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 112 }
8fc0380f6ba7e9 Maxime Ripard 2022-11-14 113
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 4/8] drm/client: Make copies of modes
2024-10-03 11:33 ` [PATCH 4/8] drm/client: Make copies of modes Ville Syrjala
2024-10-03 16:45 ` Ville Syrjälä
2024-10-03 18:15 ` [PATCH v2 " Ville Syrjala
@ 2024-10-07 7:36 ` Thomas Zimmermann
2024-10-08 19:33 ` Ville Syrjälä
2024-10-09 14:09 ` kernel test robot
3 siblings, 1 reply; 28+ messages in thread
From: Thomas Zimmermann @ 2024-10-07 7:36 UTC (permalink / raw)
To: Ville Syrjala, dri-devel; +Cc: intel-gfx
Hi
Am 03.10.24 um 13:33 schrieb Ville Syrjala:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> drm_client_firmware_config() is currently picking up the current
> mode of the crtc via the legacy crtc->mode, which is not supposed
> to be used by atomic drivers at all. We can't simply switch over
> to the proper crtc->state->mode because we drop the crtc->mutex
> (which protects crtc->state) before the mode gets used.
>
> The most straightforward solution to extend the lifetime of
> modes[] seem to be to make full copies of the modes instead
> of just storing pointers. We do have to replace the NULL checks
> with something else though. Checking that mode->clock!=0
> should be sufficient.
>
> And with this we can undo also commit 3eadd887dbac
> ("drm/client:Fully protect modes[] with dev->mode_config.mutex")
> as the lifetime of modes[] no longer has anything to do with
> that lock.
I think it would be a lot better to first build that mode list while
holding the mutex, and afterwards copy the resulting modes before
releasing the lock. The code below is convoluted with drm_mode_copy().
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/drm_client_modeset.c | 80 +++++++++++++++-------------
> 1 file changed, 43 insertions(+), 37 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
> index 888323137a6a..d413e119db3f 100644
> --- a/drivers/gpu/drm/drm_client_modeset.c
> +++ b/drivers/gpu/drm/drm_client_modeset.c
> @@ -265,10 +265,15 @@ static void drm_client_connectors_enabled(struct drm_connector *connectors[],
> enabled[i] = drm_connector_enabled(connectors[i], false);
> }
>
> +static bool mode_valid(const struct drm_display_mode *mode)
> +{
> + return mode->clock != 0;
A mode's clock isn't always known and not all drivers might set it
correctly. At least in simpledrm/ofdrm, we have to make up a clock value
for the firmware framebuffer. Otherwise some of our userspace would oops.
The test for clock != 0 makes sense, but it's maybe the wrong place to
do this. Would a test for hdisplay/vdisplay != 0 work instead?
> +}
> +
> static bool drm_client_target_cloned(struct drm_device *dev,
> struct drm_connector *connectors[],
> unsigned int connector_count,
> - const struct drm_display_mode *modes[],
> + struct drm_display_mode modes[],
> struct drm_client_offset offsets[],
> bool enabled[], int width, int height)
> {
> @@ -296,15 +301,16 @@ static bool drm_client_target_cloned(struct drm_device *dev,
> for (i = 0; i < connector_count; i++) {
> if (!enabled[i])
> continue;
> - modes[i] = drm_connector_pick_cmdline_mode(connectors[i]);
> - if (!modes[i]) {
> +
> + drm_mode_copy(&modes[i], drm_connector_pick_cmdline_mode(connectors[i]));
> + if (!mode_valid(&modes[i])) {
You're copying and only then test for validity?
> can_clone = false;
> break;
> }
> for (j = 0; j < i; j++) {
> if (!enabled[j])
> continue;
> - if (!drm_mode_match(modes[j], modes[i],
> + if (!drm_mode_match(&modes[j], &modes[i],
> DRM_MODE_MATCH_TIMINGS |
> DRM_MODE_MATCH_CLOCK |
> DRM_MODE_MATCH_FLAGS |
> @@ -335,9 +341,9 @@ static bool drm_client_target_cloned(struct drm_device *dev,
> DRM_MODE_MATCH_CLOCK |
> DRM_MODE_MATCH_FLAGS |
> DRM_MODE_MATCH_3D_FLAGS))
> - modes[i] = mode;
> + drm_mode_copy(&modes[i], mode);
> }
> - if (!modes[i])
> + if (!mode_valid(&modes[i]))
> can_clone = false;
> }
> drm_mode_destroy(dev, dmt_mode);
> @@ -354,7 +360,7 @@ static bool drm_client_target_cloned(struct drm_device *dev,
> static int drm_client_get_tile_offsets(struct drm_device *dev,
> struct drm_connector *connectors[],
> unsigned int connector_count,
> - const struct drm_display_mode *modes[],
> + const struct drm_display_mode modes[],
> struct drm_client_offset offsets[],
> int idx,
> int h_idx, int v_idx)
> @@ -368,17 +374,17 @@ static int drm_client_get_tile_offsets(struct drm_device *dev,
> if (!connector->has_tile)
> continue;
>
> - if (!modes[i] && (h_idx || v_idx)) {
> + if (!mode_valid(&modes[i]) && (h_idx || v_idx)) {
> drm_dbg_kms(dev,
> "[CONNECTOR:%d:%s] no modes for connector tiled %d\n",
> connector->base.id, connector->name, i);
> continue;
> }
> if (connector->tile_h_loc < h_idx)
> - hoffset += modes[i]->hdisplay;
> + hoffset += modes[i].hdisplay;
>
> if (connector->tile_v_loc < v_idx)
> - voffset += modes[i]->vdisplay;
> + voffset += modes[i].vdisplay;
> }
> offsets[idx].x = hoffset;
> offsets[idx].y = voffset;
> @@ -389,7 +395,7 @@ static int drm_client_get_tile_offsets(struct drm_device *dev,
> static bool drm_client_target_preferred(struct drm_device *dev,
> struct drm_connector *connectors[],
> unsigned int connector_count,
> - const struct drm_display_mode *modes[],
> + struct drm_display_mode modes[],
> struct drm_client_offset offsets[],
> bool enabled[], int width, int height)
> {
> @@ -445,16 +451,16 @@ static bool drm_client_target_preferred(struct drm_device *dev,
> }
>
> mode_type = "cmdline";
> - modes[i] = drm_connector_pick_cmdline_mode(connector);
> + drm_mode_copy(&modes[i], drm_connector_pick_cmdline_mode(connector));
>
> - if (!modes[i]) {
> + if (!mode_valid(&modes[i])) {
> mode_type = "preferred";
> - modes[i] = drm_connector_preferred_mode(connector, width, height);
> + drm_mode_copy(&modes[i], drm_connector_preferred_mode(connector, width, height));
> }
>
> - if (!modes[i]) {
> + if (!mode_valid(&modes[i])) {
> mode_type = "first";
> - modes[i] = drm_connector_first_mode(connector);
> + drm_mode_copy(&modes[i], drm_connector_first_mode(connector));
> }
>
> /*
> @@ -472,17 +478,17 @@ static bool drm_client_target_preferred(struct drm_device *dev,
> connector->tile_v_loc == 0 &&
> !drm_connector_get_tiled_mode(connector))) {
> mode_type = "non tiled";
> - modes[i] = drm_connector_fallback_non_tiled_mode(connector);
> + drm_mode_copy(&modes[i], drm_connector_fallback_non_tiled_mode(connector));
> } else {
> mode_type = "tiled";
> - modes[i] = drm_connector_get_tiled_mode(connector);
> + drm_mode_copy(&modes[i], drm_connector_get_tiled_mode(connector));
> }
> }
>
> - if (modes[i])
> + if (mode_valid(&modes[i]))
> drm_dbg_kms(dev, "[CONNECTOR:%d:%s] found %s mode: %s\n",
> connector->base.id, connector->name,
> - mode_type, modes[i]->name);
> + mode_type, modes[i].name);
> else
> drm_dbg_kms(dev, "[CONNECTOR:%d:%s] no mode found\n",
> connector->base.id, connector->name);
> @@ -514,7 +520,7 @@ static int drm_client_pick_crtcs(struct drm_client_dev *client,
> struct drm_connector *connectors[],
> unsigned int connector_count,
> struct drm_crtc *best_crtcs[],
> - const struct drm_display_mode *modes[],
> + const struct drm_display_mode modes[],
> int n, int width, int height)
> {
> struct drm_device *dev = client->dev;
> @@ -532,7 +538,7 @@ static int drm_client_pick_crtcs(struct drm_client_dev *client,
> best_crtcs[n] = NULL;
> best_score = drm_client_pick_crtcs(client, connectors, connector_count,
> best_crtcs, modes, n + 1, width, height);
> - if (modes[n] == NULL)
> + if (!mode_valid(&modes[n]))
> return best_score;
>
> crtcs = kcalloc(connector_count, sizeof(*crtcs), GFP_KERNEL);
> @@ -566,7 +572,7 @@ static int drm_client_pick_crtcs(struct drm_client_dev *client,
> if (dev->mode_config.num_crtc > 1)
> continue;
>
> - if (!drm_mode_equal(modes[o], modes[n]))
> + if (!drm_mode_equal(&modes[o], &modes[n]))
> continue;
> }
>
> @@ -589,7 +595,7 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
> struct drm_connector *connectors[],
> unsigned int connector_count,
> struct drm_crtc *crtcs[],
> - const struct drm_display_mode *modes[],
> + struct drm_display_mode modes[],
> struct drm_client_offset offsets[],
> bool enabled[], int width, int height)
> {
> @@ -690,20 +696,20 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
> }
>
> mode_type = "cmdline";
> - modes[i] = drm_connector_pick_cmdline_mode(connector);
> + drm_mode_copy(&modes[i], drm_connector_pick_cmdline_mode(connector));
>
> - if (!modes[i]) {
> + if (!mode_valid(&modes[i])) {
> mode_type = "preferred";
> - modes[i] = drm_connector_preferred_mode(connector, width, height);
> + drm_mode_copy(&modes[i], drm_connector_preferred_mode(connector, width, height));
> }
>
> - if (!modes[i]) {
> + if (!mode_valid(&modes[i])) {
> mode_type = "first";
> - modes[i] = drm_connector_first_mode(connector);
> + drm_mode_copy(&modes[i], drm_connector_first_mode(connector));
> }
>
> /* last resort: use current mode */
> - if (!modes[i]) {
> + if (!mode_valid(&modes[i])) {
> /*
> * IMPORTANT: We want to use the adjusted mode (i.e.
> * after the panel fitter upscaling) as the initial
> @@ -716,7 +722,7 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
> * fastboot check to work correctly.
> */
> mode_type = "current";
> - modes[i] = &connector->state->crtc->mode;
> + drm_mode_copy(&modes[i], &connector->state->crtc->mode);
> }
>
> /*
> @@ -726,14 +732,14 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
> if (connector->has_tile &&
> num_tiled_conns < connector->num_h_tile * connector->num_v_tile) {
> mode_type = "non tiled";
> - modes[i] = drm_connector_fallback_non_tiled_mode(connector);
> + drm_mode_copy(&modes[i], drm_connector_fallback_non_tiled_mode(connector));
> }
> crtcs[i] = new_crtc;
>
> drm_dbg_kms(dev, "[CONNECTOR::%d:%s] on [CRTC:%d:%s] using %s mode: %s\n",
> connector->base.id, connector->name,
> new_crtc->base.id, new_crtc->name,
> - mode_type, modes[i]->name);
> + mode_type, modes[i].name);
>
> fallback = false;
> conn_configured |= BIT(i);
> @@ -789,8 +795,7 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
> unsigned int total_modes_count = 0;
> struct drm_client_offset *offsets;
> unsigned int connector_count = 0;
> - /* points to modes protected by mode_config.mutex */
> - const struct drm_display_mode **modes;
> + struct drm_display_mode *modes;
> struct drm_crtc **crtcs;
> int i, ret = 0;
> bool *enabled;
> @@ -858,10 +863,12 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
> crtcs, modes, 0, width, height);
> }
>
> + mutex_unlock(&dev->mode_config.mutex);
> +
> drm_client_modeset_release(client);
>
> for (i = 0; i < connector_count; i++) {
> - const struct drm_display_mode *mode = modes[i];
> + const struct drm_display_mode *mode = &modes[i];
> struct drm_crtc *crtc = crtcs[i];
> struct drm_client_offset *offset = &offsets[i];
>
> @@ -892,7 +899,6 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
> modeset->y = offset->y;
> }
> }
> - mutex_unlock(&dev->mode_config.mutex);
>
> mutex_unlock(&client->modeset_mutex);
> out:
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 8/8] drm/client: s/unsigned int i/int i/
2024-10-03 11:33 ` [PATCH 8/8] drm/client: s/unsigned int i/int i/ Ville Syrjala
@ 2024-10-07 7:43 ` Thomas Zimmermann
2024-10-08 19:12 ` Ville Syrjälä
0 siblings, 1 reply; 28+ messages in thread
From: Thomas Zimmermann @ 2024-10-07 7:43 UTC (permalink / raw)
To: Ville Syrjala, dri-devel; +Cc: intel-gfx
Hi
Am 03.10.24 um 13:33 schrieb Ville Syrjala:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Replace the 'unsigned int i' footguns with plain old signed
> int. Avoids accidents if/when someone decides they need
> to iterate backwards.
Why are signed types preferable here?
Best regards
Thomas
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/drm_client_modeset.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
> index ccf5c9b5537b..875d517fa8f2 100644
> --- a/drivers/gpu/drm/drm_client_modeset.c
> +++ b/drivers/gpu/drm/drm_client_modeset.c
> @@ -39,7 +39,7 @@ int drm_client_modeset_create(struct drm_client_dev *client)
> unsigned int max_connector_count = 1;
> struct drm_mode_set *modeset;
> struct drm_crtc *crtc;
> - unsigned int i = 0;
> + int i = 0;
>
> /* Add terminating zero entry to enable index less iteration */
> client->modesets = kcalloc(num_crtc + 1, sizeof(*client->modesets), GFP_KERNEL);
> @@ -75,7 +75,7 @@ static void drm_client_modeset_release(struct drm_client_dev *client)
> struct drm_mode_set *modeset;
>
> drm_client_for_each_modeset(modeset, client) {
> - unsigned int i;
> + int i;
>
> drm_mode_destroy(client->dev, modeset->mode);
> modeset->mode = NULL;
> @@ -925,7 +925,7 @@ bool drm_client_rotation(struct drm_mode_set *modeset, unsigned int *rotation)
> struct drm_plane *plane = modeset->crtc->primary;
> struct drm_cmdline_mode *cmdline;
> u64 valid_mask = 0;
> - unsigned int i;
> + int i;
>
> if (!modeset->num_connectors)
> return false;
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
^ permalink raw reply [flat|nested] 28+ messages in thread
* ✓ Fi.CI.IGT: success for drm/client: Stop using legacy crtc->mode and a bunch of cleanups (rev4)
2024-10-03 11:32 [PATCH 0/8] drm/client: Stop using legacy crtc->mode and a bunch of cleanups Ville Syrjala
` (11 preceding siblings ...)
2024-10-03 21:49 ` ✓ Fi.CI.BAT: success " Patchwork
@ 2024-10-08 6:36 ` Patchwork
12 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2024-10-08 6:36 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 93507 bytes --]
== Series Details ==
Series: drm/client: Stop using legacy crtc->mode and a bunch of cleanups (rev4)
URL : https://patchwork.freedesktop.org/series/139493/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_15483_full -> Patchwork_139493v4_full
====================================================
Summary
-------
**WARNING**
Minor unknown changes coming with Patchwork_139493v4_full need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_139493v4_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 (8 -> 8)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_139493v4_full:
### IGT changes ###
#### Warnings ####
* igt@kms_flip@2x-plain-flip-ts-check@ac-hdmi-a1-hdmi-a2:
- shard-glk: [FAIL][1] ([i915#2122]) -> [FAIL][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-glk8/igt@kms_flip@2x-plain-flip-ts-check@ac-hdmi-a1-hdmi-a2.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-glk3/igt@kms_flip@2x-plain-flip-ts-check@ac-hdmi-a1-hdmi-a2.html
Known issues
------------
Here are the changes found in Patchwork_139493v4_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@api_intel_bb@crc32:
- shard-tglu: NOTRUN -> [SKIP][3] ([i915#6230])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-6/igt@api_intel_bb@crc32.html
* igt@api_intel_bb@object-reloc-keep-cache:
- shard-rkl: NOTRUN -> [SKIP][4] ([i915#8411]) +1 other test skip
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@api_intel_bb@object-reloc-keep-cache.html
* igt@drm_fdinfo@virtual-busy-idle:
- shard-dg2: NOTRUN -> [SKIP][5] ([i915#8414])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-5/igt@drm_fdinfo@virtual-busy-idle.html
- shard-dg1: NOTRUN -> [SKIP][6] ([i915#8414])
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-14/igt@drm_fdinfo@virtual-busy-idle.html
* igt@gem_basic@multigpu-create-close:
- shard-mtlp: NOTRUN -> [SKIP][7] ([i915#7697])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-mtlp-7/igt@gem_basic@multigpu-create-close.html
* igt@gem_ccs@suspend-resume:
- shard-dg2: [PASS][8] -> [INCOMPLETE][9] ([i915#7297]) +1 other test incomplete
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-8/igt@gem_ccs@suspend-resume.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-6/igt@gem_ccs@suspend-resume.html
* igt@gem_create@create-ext-cpu-access-sanity-check:
- shard-rkl: NOTRUN -> [SKIP][10] ([i915#6335])
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-7/igt@gem_create@create-ext-cpu-access-sanity-check.html
* igt@gem_ctx_engines@invalid-engines:
- shard-glk: [PASS][11] -> [FAIL][12] ([i915#12027])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-glk7/igt@gem_ctx_engines@invalid-engines.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-glk6/igt@gem_ctx_engines@invalid-engines.html
* igt@gem_ctx_persistence@hostile:
- shard-rkl: NOTRUN -> [FAIL][13] ([i915#11980])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-7/igt@gem_ctx_persistence@hostile.html
* igt@gem_eio@reset-stress:
- shard-dg1: [PASS][14] -> [FAIL][15] ([i915#5784])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg1-14/igt@gem_eio@reset-stress.html
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-18/igt@gem_eio@reset-stress.html
* igt@gem_exec_balancer@parallel-balancer:
- shard-rkl: NOTRUN -> [SKIP][16] ([i915#4525]) +1 other test skip
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@gem_exec_balancer@parallel-balancer.html
* igt@gem_exec_capture@capture-recoverable:
- shard-rkl: NOTRUN -> [SKIP][17] ([i915#6344])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@gem_exec_capture@capture-recoverable.html
- shard-tglu: NOTRUN -> [SKIP][18] ([i915#6344])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@gem_exec_capture@capture-recoverable.html
* igt@gem_exec_fair@basic-none:
- shard-tglu: NOTRUN -> [FAIL][19] ([i915#2842]) +5 other tests fail
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@gem_exec_fair@basic-none.html
* igt@gem_exec_fair@basic-none-solo:
- shard-rkl: NOTRUN -> [FAIL][20] ([i915#2842]) +1 other test fail
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@gem_exec_fair@basic-none-solo.html
* igt@gem_exec_fair@basic-pace-solo@rcs0:
- shard-rkl: [PASS][21] -> [FAIL][22] ([i915#2842]) +1 other test fail
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-rkl-3/igt@gem_exec_fair@basic-pace-solo@rcs0.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-4/igt@gem_exec_fair@basic-pace-solo@rcs0.html
* igt@gem_exec_reloc@basic-cpu-noreloc:
- shard-rkl: NOTRUN -> [SKIP][23] ([i915#3281]) +6 other tests skip
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@gem_exec_reloc@basic-cpu-noreloc.html
* igt@gem_lmem_swapping@heavy-verify-random-ccs:
- shard-rkl: NOTRUN -> [SKIP][24] ([i915#4613]) +4 other tests skip
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@gem_lmem_swapping@heavy-verify-random-ccs.html
- shard-tglu: NOTRUN -> [SKIP][25] ([i915#4613]) +2 other tests skip
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@gem_lmem_swapping@heavy-verify-random-ccs.html
* igt@gem_madvise@dontneed-before-pwrite:
- shard-rkl: NOTRUN -> [SKIP][26] ([i915#3282]) +4 other tests skip
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-7/igt@gem_madvise@dontneed-before-pwrite.html
* igt@gem_mmap_gtt@coherency:
- shard-dg1: NOTRUN -> [SKIP][27] ([i915#4077])
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-18/igt@gem_mmap_gtt@coherency.html
* igt@gem_mmap_wc@write-cpu-read-wc:
- shard-dg1: NOTRUN -> [SKIP][28] ([i915#4083])
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-19/igt@gem_mmap_wc@write-cpu-read-wc.html
- shard-mtlp: NOTRUN -> [SKIP][29] ([i915#4083])
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-mtlp-8/igt@gem_mmap_wc@write-cpu-read-wc.html
* igt@gem_pxp@create-regular-context-1:
- shard-tglu: NOTRUN -> [SKIP][30] ([i915#4270])
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@gem_pxp@create-regular-context-1.html
* igt@gem_pxp@reject-modify-context-protection-off-1:
- shard-mtlp: NOTRUN -> [SKIP][31] ([i915#4270])
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-mtlp-3/igt@gem_pxp@reject-modify-context-protection-off-1.html
* igt@gem_pxp@reject-modify-context-protection-on:
- shard-rkl: NOTRUN -> [SKIP][32] ([i915#4270]) +1 other test skip
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@gem_pxp@reject-modify-context-protection-on.html
* igt@gem_readwrite@new-obj:
- shard-dg1: NOTRUN -> [SKIP][33] ([i915#3282])
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-19/igt@gem_readwrite@new-obj.html
* igt@gem_userptr_blits@dmabuf-sync:
- shard-glk: NOTRUN -> [SKIP][34] ([i915#3323])
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-glk1/igt@gem_userptr_blits@dmabuf-sync.html
* igt@gem_userptr_blits@unsync-unmap-after-close:
- shard-dg1: NOTRUN -> [SKIP][35] ([i915#3297])
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-18/igt@gem_userptr_blits@unsync-unmap-after-close.html
- shard-mtlp: NOTRUN -> [SKIP][36] ([i915#3297])
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-mtlp-2/igt@gem_userptr_blits@unsync-unmap-after-close.html
* igt@gen9_exec_parse@bb-oversize:
- shard-rkl: NOTRUN -> [SKIP][37] ([i915#2527]) +3 other tests skip
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-7/igt@gen9_exec_parse@bb-oversize.html
* igt@gen9_exec_parse@shadow-peek:
- shard-tglu: NOTRUN -> [SKIP][38] ([i915#2527] / [i915#2856]) +3 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@gen9_exec_parse@shadow-peek.html
* igt@i915_module_load@reload-with-fault-injection:
- shard-snb: [PASS][39] -> [ABORT][40] ([i915#9820])
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-snb7/igt@i915_module_load@reload-with-fault-injection.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-snb6/igt@i915_module_load@reload-with-fault-injection.html
- shard-mtlp: [PASS][41] -> [ABORT][42] ([i915#10131] / [i915#10887] / [i915#9820])
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-mtlp-8/igt@i915_module_load@reload-with-fault-injection.html
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-mtlp-2/igt@i915_module_load@reload-with-fault-injection.html
* igt@i915_pm_freq_mult@media-freq@gt0:
- shard-rkl: NOTRUN -> [SKIP][43] ([i915#6590]) +1 other test skip
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@i915_pm_freq_mult@media-freq@gt0.html
- shard-tglu: NOTRUN -> [SKIP][44] ([i915#6590]) +1 other test skip
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@i915_pm_freq_mult@media-freq@gt0.html
* igt@i915_pm_rps@reset:
- shard-snb: [PASS][45] -> [INCOMPLETE][46] ([i915#7790])
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-snb4/igt@i915_pm_rps@reset.html
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-snb2/igt@i915_pm_rps@reset.html
* igt@i915_pm_sseu@full-enable:
- shard-rkl: NOTRUN -> [SKIP][47] ([i915#4387])
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@i915_pm_sseu@full-enable.html
* igt@i915_power@sanity:
- shard-mtlp: [PASS][48] -> [SKIP][49] ([i915#7984])
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-mtlp-3/igt@i915_power@sanity.html
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-mtlp-7/igt@i915_power@sanity.html
* igt@i915_query@hwconfig_table:
- shard-tglu: NOTRUN -> [SKIP][50] ([i915#6245])
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@i915_query@hwconfig_table.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-hdmi-a-3-y-rc-ccs:
- shard-dg1: NOTRUN -> [SKIP][51] ([i915#8709]) +7 other tests skip
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-12/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-hdmi-a-3-y-rc-ccs.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-1-y-rc-ccs:
- shard-tglu: NOTRUN -> [SKIP][52] ([i915#8709]) +7 other tests skip
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-1-y-rc-ccs.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-d-hdmi-a-2-4-mc-ccs:
- shard-dg2: NOTRUN -> [SKIP][53] ([i915#8709]) +11 other tests skip
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-11/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-d-hdmi-a-2-4-mc-ccs.html
* igt@kms_atomic_transition@modeset-transition-nonblocking:
- shard-glk: [PASS][54] -> [FAIL][55] ([i915#12177])
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-glk2/igt@kms_atomic_transition@modeset-transition-nonblocking.html
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-glk8/igt@kms_atomic_transition@modeset-transition-nonblocking.html
* igt@kms_atomic_transition@modeset-transition-nonblocking@2x-outputs:
- shard-glk: [PASS][56] -> [FAIL][57] ([i915#11859])
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-glk2/igt@kms_atomic_transition@modeset-transition-nonblocking@2x-outputs.html
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-glk8/igt@kms_atomic_transition@modeset-transition-nonblocking@2x-outputs.html
* igt@kms_big_fb@4-tiled-16bpp-rotate-0:
- shard-rkl: NOTRUN -> [SKIP][58] ([i915#5286]) +4 other tests skip
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-7/igt@kms_big_fb@4-tiled-16bpp-rotate-0.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-tglu: NOTRUN -> [SKIP][59] ([i915#5286]) +3 other tests skip
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_big_fb@linear-64bpp-rotate-90:
- shard-rkl: NOTRUN -> [SKIP][60] ([i915#3638])
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-7/igt@kms_big_fb@linear-64bpp-rotate-90.html
* igt@kms_busy@basic:
- shard-dg2: [PASS][61] -> [SKIP][62] ([i915#9197]) +50 other tests skip
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_busy@basic.html
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_busy@basic.html
* igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][63] ([i915#10307] / [i915#10434] / [i915#6095]) +5 other tests skip
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-8/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-1.html
* igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc@pipe-b-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][64] ([i915#6095]) +100 other tests skip
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-15/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-lnl-ccs:
- shard-rkl: NOTRUN -> [SKIP][65] ([i915#12313]) +1 other test skip
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs.html
- shard-tglu: NOTRUN -> [SKIP][66] ([i915#12313])
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs:
- shard-snb: NOTRUN -> [SKIP][67] +8 other tests skip
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-snb2/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc@pipe-a-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][68] ([i915#6095]) +9 other tests skip
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-mtlp-3/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc@pipe-a-edp-1.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc@pipe-b-hdmi-a-1:
- shard-tglu: NOTRUN -> [SKIP][69] ([i915#6095]) +29 other tests skip
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-10/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc@pipe-b-hdmi-a-1.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][70] ([i915#10307] / [i915#6095]) +177 other tests skip
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-5/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-3.html
* igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][71] ([i915#6095]) +94 other tests skip
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-3/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2.html
* igt@kms_cdclk@plane-scaling@pipe-c-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][72] ([i915#4087]) +3 other tests skip
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-1/igt@kms_cdclk@plane-scaling@pipe-c-hdmi-a-3.html
* igt@kms_chamelium_audio@hdmi-audio:
- shard-dg1: NOTRUN -> [SKIP][73] ([i915#7828])
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-19/igt@kms_chamelium_audio@hdmi-audio.html
* igt@kms_chamelium_frames@dp-crc-single:
- shard-tglu: NOTRUN -> [SKIP][74] ([i915#7828]) +4 other tests skip
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@kms_chamelium_frames@dp-crc-single.html
* igt@kms_chamelium_frames@hdmi-frame-dump:
- shard-rkl: NOTRUN -> [SKIP][75] ([i915#7828]) +5 other tests skip
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@kms_chamelium_frames@hdmi-frame-dump.html
* igt@kms_chamelium_hpd@hdmi-hpd-enable-disable-mode:
- shard-mtlp: NOTRUN -> [SKIP][76] ([i915#7828]) +2 other tests skip
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-mtlp-3/igt@kms_chamelium_hpd@hdmi-hpd-enable-disable-mode.html
* igt@kms_color@deep-color:
- shard-tglu: NOTRUN -> [SKIP][77] ([i915#3555] / [i915#9979])
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@kms_color@deep-color.html
* igt@kms_content_protection@content-type-change:
- shard-rkl: NOTRUN -> [SKIP][78] ([i915#9424])
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@kms_content_protection@content-type-change.html
* igt@kms_content_protection@dp-mst-lic-type-0:
- shard-tglu: NOTRUN -> [SKIP][79] ([i915#3116] / [i915#3299])
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-10/igt@kms_content_protection@dp-mst-lic-type-0.html
* igt@kms_cursor_crc@cursor-rapid-movement-512x512:
- shard-tglu: NOTRUN -> [SKIP][80] ([i915#11453])
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html
- shard-rkl: NOTRUN -> [SKIP][81] ([i915#11453])
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html
* igt@kms_cursor_legacy@cursorb-vs-flipb-atomic:
- shard-rkl: NOTRUN -> [SKIP][82] +18 other tests skip
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-7/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic.html
* igt@kms_cursor_legacy@cursorb-vs-flipb-varying-size:
- shard-mtlp: NOTRUN -> [SKIP][83] ([i915#9809]) +1 other test skip
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-mtlp-3/igt@kms_cursor_legacy@cursorb-vs-flipb-varying-size.html
* igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot:
- shard-rkl: NOTRUN -> [SKIP][84] ([i915#9067])
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
- shard-rkl: NOTRUN -> [SKIP][85] ([i915#4103])
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html
- shard-tglu: NOTRUN -> [SKIP][86] ([i915#4103]) +1 other test skip
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html
* igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][87] ([i915#3804])
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-1/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-2.html
* igt@kms_dsc@dsc-fractional-bpp-with-bpc:
- shard-rkl: NOTRUN -> [SKIP][88] ([i915#3840])
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-7/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html
* igt@kms_dsc@dsc-with-output-formats-with-bpc:
- shard-tglu: NOTRUN -> [SKIP][89] ([i915#3840] / [i915#9053])
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@kms_dsc@dsc-with-output-formats-with-bpc.html
* igt@kms_fb_coherency@memset-crc:
- shard-dg2: [PASS][90] -> [SKIP][91]
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-5/igt@kms_fb_coherency@memset-crc.html
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_fb_coherency@memset-crc.html
* igt@kms_fbcon_fbt@fbc-suspend:
- shard-tglu: [PASS][92] -> [FAIL][93] ([i915#4767])
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-tglu-2/igt@kms_fbcon_fbt@fbc-suspend.html
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-8/igt@kms_fbcon_fbt@fbc-suspend.html
* igt@kms_feature_discovery@chamelium:
- shard-tglu: NOTRUN -> [SKIP][94] ([i915#2065] / [i915#4854])
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-10/igt@kms_feature_discovery@chamelium.html
* igt@kms_feature_discovery@display-4x:
- shard-rkl: NOTRUN -> [SKIP][95] ([i915#1839])
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@kms_feature_discovery@display-4x.html
- shard-tglu: NOTRUN -> [SKIP][96] ([i915#1839])
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@kms_feature_discovery@display-4x.html
* igt@kms_feature_discovery@dp-mst:
- shard-rkl: NOTRUN -> [SKIP][97] ([i915#9337])
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@kms_feature_discovery@dp-mst.html
* igt@kms_flip@2x-flip-vs-blocking-wf-vblank@bc-hdmi-a1-hdmi-a2:
- shard-glk: [PASS][98] -> [FAIL][99] ([i915#2122]) +1 other test fail
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-glk2/igt@kms_flip@2x-flip-vs-blocking-wf-vblank@bc-hdmi-a1-hdmi-a2.html
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-glk8/igt@kms_flip@2x-flip-vs-blocking-wf-vblank@bc-hdmi-a1-hdmi-a2.html
* igt@kms_flip@2x-flip-vs-modeset:
- shard-tglu: NOTRUN -> [SKIP][100] ([i915#3637] / [i915#3966])
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-10/igt@kms_flip@2x-flip-vs-modeset.html
* igt@kms_flip@2x-flip-vs-panning-vs-hang:
- shard-mtlp: NOTRUN -> [SKIP][101] ([i915#3637])
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-mtlp-3/igt@kms_flip@2x-flip-vs-panning-vs-hang.html
* igt@kms_flip@2x-plain-flip-fb-recreate-interruptible:
- shard-snb: [PASS][102] -> [FAIL][103] ([i915#2122]) +12 other tests fail
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-snb1/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-snb2/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html
- shard-tglu: NOTRUN -> [SKIP][104] ([i915#3637]) +2 other tests skip
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html
* igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible:
- shard-tglu: [PASS][105] -> [FAIL][106] ([i915#2122]) +6 other tests fail
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-tglu-2/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible.html
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-8/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible.html
* igt@kms_flip@flip-vs-suspend:
- shard-dg1: [PASS][107] -> [DMESG-WARN][108] ([i915#4423])
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg1-19/igt@kms_flip@flip-vs-suspend.html
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-12/igt@kms_flip@flip-vs-suspend.html
* igt@kms_flip@flip-vs-suspend-interruptible:
- shard-glk: [PASS][109] -> [INCOMPLETE][110] ([i915#4839]) +1 other test incomplete
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-glk6/igt@kms_flip@flip-vs-suspend-interruptible.html
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-glk5/igt@kms_flip@flip-vs-suspend-interruptible.html
* igt@kms_flip@flip-vs-suspend-interruptible@b-hdmi-a3:
- shard-dg1: NOTRUN -> [INCOMPLETE][111] ([i915#4839] / [i915#6113])
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-12/igt@kms_flip@flip-vs-suspend-interruptible@b-hdmi-a3.html
* igt@kms_flip@flip-vs-suspend-interruptible@c-hdmi-a2:
- shard-dg2: NOTRUN -> [INCOMPLETE][112] ([i915#6113] / [i915#9878])
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-11/igt@kms_flip@flip-vs-suspend-interruptible@c-hdmi-a2.html
* igt@kms_flip@flip-vs-suspend@b-hdmi-a3:
- shard-dg1: NOTRUN -> [DMESG-WARN][113] ([i915#4423]) +1 other test dmesg-warn
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-12/igt@kms_flip@flip-vs-suspend@b-hdmi-a3.html
* igt@kms_flip@plain-flip-fb-recreate-interruptible@a-edp1:
- shard-mtlp: [PASS][114] -> [FAIL][115] ([i915#2122])
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-mtlp-3/igt@kms_flip@plain-flip-fb-recreate-interruptible@a-edp1.html
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-mtlp-1/igt@kms_flip@plain-flip-fb-recreate-interruptible@a-edp1.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling:
- shard-tglu: NOTRUN -> [SKIP][116] ([i915#2672] / [i915#3555]) +2 other tests skip
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-10/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling:
- shard-tglu: NOTRUN -> [SKIP][117] ([i915#2587] / [i915#2672] / [i915#3555])
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling@pipe-a-valid-mode:
- shard-tglu: NOTRUN -> [SKIP][118] ([i915#2587] / [i915#2672]) +3 other tests skip
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling:
- shard-dg2: [PASS][119] -> [SKIP][120] ([i915#3555]) +5 other tests skip
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-5/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling.html
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling@pipe-a-valid-mode:
- shard-dg2: NOTRUN -> [SKIP][121] ([i915#2672]) +2 other tests skip
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-1/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling:
- shard-rkl: NOTRUN -> [SKIP][122] ([i915#2672] / [i915#3555]) +3 other tests skip
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling@pipe-a-valid-mode:
- shard-rkl: NOTRUN -> [SKIP][123] ([i915#2672]) +3 other tests skip
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling@pipe-a-valid-mode.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite:
- shard-dg2: [PASS][124] -> [SKIP][125] ([i915#5354]) +13 other tests skip
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite.html
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-gtt:
- shard-snb: [PASS][126] -> [SKIP][127]
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-snb5/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-gtt.html
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-snb4/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt:
- shard-dg1: NOTRUN -> [SKIP][128] +3 other tests skip
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-19/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt.html
- shard-mtlp: NOTRUN -> [SKIP][129] ([i915#1825]) +3 other tests skip
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-mtlp-8/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-mmap-wc:
- shard-dg1: NOTRUN -> [SKIP][130] ([i915#8708])
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-18/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-gtt:
- shard-rkl: NOTRUN -> [SKIP][131] ([i915#3023]) +15 other tests skip
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-cpu:
- shard-tglu: NOTRUN -> [SKIP][132] +55 other tests skip
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt:
- shard-rkl: NOTRUN -> [SKIP][133] ([i915#1825]) +26 other tests skip
[133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-7/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt.html
* igt@kms_joiner@invalid-modeset-big-joiner:
- shard-rkl: NOTRUN -> [SKIP][134] ([i915#10656])
[134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-7/igt@kms_joiner@invalid-modeset-big-joiner.html
* igt@kms_plane@pixel-format:
- shard-dg2: [PASS][135] -> [SKIP][136] ([i915#8825])
[135]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_plane@pixel-format.html
[136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_plane@pixel-format.html
* igt@kms_plane_alpha_blend@alpha-transparent-fb:
- shard-dg2: [PASS][137] -> [SKIP][138] ([i915#7294]) +1 other test skip
[137]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_plane_alpha_blend@alpha-transparent-fb.html
[138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_plane_alpha_blend@alpha-transparent-fb.html
* igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-1:
- shard-tglu: NOTRUN -> [FAIL][139] ([i915#8292]) +1 other test fail
[139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-10/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-1.html
* igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation:
- shard-dg2: [PASS][140] -> [SKIP][141] ([i915#12247] / [i915#8152] / [i915#9423])
[140]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation.html
[141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation.html
* igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-d:
- shard-dg2: [PASS][142] -> [SKIP][143] ([i915#12247] / [i915#8152])
[142]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-d.html
[143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-d.html
* igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-modifiers:
- shard-dg2: [PASS][144] -> [SKIP][145] ([i915#3555] / [i915#8152] / [i915#9423])
[144]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-modifiers.html
[145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-modifiers.html
* igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-modifiers@pipe-b:
- shard-dg2: [PASS][146] -> [SKIP][147] ([i915#12247]) +11 other tests skip
[146]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-modifiers@pipe-b.html
[147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-modifiers@pipe-b.html
* igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-modifiers@pipe-d:
- shard-dg2: [PASS][148] -> [SKIP][149] ([i915#8152]) +2 other tests skip
[148]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-modifiers@pipe-d.html
[149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-modifiers@pipe-d.html
* igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation:
- shard-rkl: NOTRUN -> [SKIP][150] ([i915#3555]) +2 other tests skip
[150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-7/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation.html
* igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b:
- shard-rkl: NOTRUN -> [SKIP][151] ([i915#12247]) +4 other tests skip
[151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-7/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b.html
* igt@kms_plane_scaling@plane-upscale-20x20-with-pixel-format:
- shard-dg2: [PASS][152] -> [SKIP][153] ([i915#8152] / [i915#9423]) +1 other test skip
[152]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_plane_scaling@plane-upscale-20x20-with-pixel-format.html
[153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_plane_scaling@plane-upscale-20x20-with-pixel-format.html
* igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-d:
- shard-tglu: NOTRUN -> [SKIP][154] ([i915#12247]) +18 other tests skip
[154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-d.html
* igt@kms_plane_scaling@planes-downscale-factor-0-5:
- shard-tglu: NOTRUN -> [SKIP][155] ([i915#12247] / [i915#6953])
[155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@kms_plane_scaling@planes-downscale-factor-0-5.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-a:
- shard-glk: NOTRUN -> [SKIP][156] +26 other tests skip
[156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-glk1/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-a.html
* igt@kms_pm_backlight@fade:
- shard-tglu: NOTRUN -> [SKIP][157] ([i915#9812]) +1 other test skip
[157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-6/igt@kms_pm_backlight@fade.html
* igt@kms_pm_dc@dc5-dpms-negative:
- shard-dg2: [PASS][158] -> [SKIP][159] ([i915#9293])
[158]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_pm_dc@dc5-dpms-negative.html
[159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_pm_dc@dc5-dpms-negative.html
* igt@kms_pm_dc@dc6-dpms:
- shard-rkl: NOTRUN -> [SKIP][160] ([i915#3361])
[160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@kms_pm_dc@dc6-dpms.html
* igt@kms_pm_rpm@dpms-lpsp:
- shard-rkl: [PASS][161] -> [SKIP][162] ([i915#9519]) +1 other test skip
[161]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-rkl-2/igt@kms_pm_rpm@dpms-lpsp.html
[162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-1/igt@kms_pm_rpm@dpms-lpsp.html
* igt@kms_pm_rpm@modeset-non-lpsp:
- shard-dg2: [PASS][163] -> [SKIP][164] ([i915#9519])
[163]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-1/igt@kms_pm_rpm@modeset-non-lpsp.html
[164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-8/igt@kms_pm_rpm@modeset-non-lpsp.html
- shard-rkl: NOTRUN -> [SKIP][165] ([i915#9519])
[165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-7/igt@kms_pm_rpm@modeset-non-lpsp.html
* igt@kms_prime@basic-crc-hybrid:
- shard-tglu: NOTRUN -> [SKIP][166] ([i915#6524])
[166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@kms_prime@basic-crc-hybrid.html
* igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf:
- shard-rkl: NOTRUN -> [SKIP][167] ([i915#11520]) +5 other tests skip
[167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf:
- shard-tglu: NOTRUN -> [SKIP][168] ([i915#11520]) +4 other tests skip
[168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-10/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf:
- shard-glk: NOTRUN -> [SKIP][169] ([i915#11520])
[169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-glk1/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_su@frontbuffer-xrgb8888:
- shard-dg1: NOTRUN -> [SKIP][170] ([i915#9683])
[170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-19/igt@kms_psr2_su@frontbuffer-xrgb8888.html
* igt@kms_psr@fbc-psr2-sprite-render:
- shard-rkl: NOTRUN -> [SKIP][171] ([i915#1072] / [i915#9732]) +15 other tests skip
[171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-7/igt@kms_psr@fbc-psr2-sprite-render.html
* igt@kms_psr@pr-dpms:
- shard-tglu: NOTRUN -> [SKIP][172] ([i915#9732]) +14 other tests skip
[172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-10/igt@kms_psr@pr-dpms.html
* igt@kms_psr@pr-primary-mmap-gtt:
- shard-mtlp: NOTRUN -> [SKIP][173] ([i915#9688])
[173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-mtlp-6/igt@kms_psr@pr-primary-mmap-gtt.html
* igt@kms_psr@psr-cursor-plane-onoff:
- shard-dg1: NOTRUN -> [SKIP][174] ([i915#1072] / [i915#9732]) +1 other test skip
[174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-19/igt@kms_psr@psr-cursor-plane-onoff.html
* igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
- shard-tglu: NOTRUN -> [SKIP][175] ([i915#9685])
[175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
- shard-rkl: NOTRUN -> [SKIP][176] ([i915#9685])
[176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
- shard-tglu: NOTRUN -> [SKIP][177] ([i915#5289]) +1 other test skip
[177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-10/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
- shard-rkl: NOTRUN -> [SKIP][178] ([i915#5289])
[178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html
* igt@kms_scaling_modes@scaling-mode-full:
- shard-tglu: NOTRUN -> [SKIP][179] ([i915#3555]) +2 other tests skip
[179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-6/igt@kms_scaling_modes@scaling-mode-full.html
* igt@kms_selftest@drm_framebuffer:
- shard-dg1: NOTRUN -> [ABORT][180] ([i915#12231]) +1 other test abort
[180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-18/igt@kms_selftest@drm_framebuffer.html
- shard-mtlp: NOTRUN -> [ABORT][181] ([i915#12231]) +1 other test abort
[181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-mtlp-2/igt@kms_selftest@drm_framebuffer.html
* igt@kms_setmode@clone-exclusive-crtc:
- shard-dg1: NOTRUN -> [SKIP][182] ([i915#3555])
[182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-18/igt@kms_setmode@clone-exclusive-crtc.html
- shard-mtlp: NOTRUN -> [SKIP][183] ([i915#3555] / [i915#8809])
[183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-mtlp-2/igt@kms_setmode@clone-exclusive-crtc.html
* igt@kms_sysfs_edid_timing:
- shard-dg1: NOTRUN -> [FAIL][184] ([IGT#2] / [i915#6493])
[184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-18/igt@kms_sysfs_edid_timing.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-rkl: NOTRUN -> [SKIP][185] ([i915#8623])
[185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@kms_tiled_display@basic-test-pattern.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-tglu: NOTRUN -> [SKIP][186] ([i915#8623])
[186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-6/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@kms_universal_plane@cursor-fb-leak:
- shard-mtlp: [PASS][187] -> [FAIL][188] ([i915#9196]) +1 other test fail
[187]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-mtlp-2/igt@kms_universal_plane@cursor-fb-leak.html
[188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-mtlp-6/igt@kms_universal_plane@cursor-fb-leak.html
* igt@kms_vrr@seamless-rr-switch-vrr:
- shard-rkl: NOTRUN -> [SKIP][189] ([i915#9906])
[189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-7/igt@kms_vrr@seamless-rr-switch-vrr.html
* igt@kms_writeback@writeback-check-output-xrgb2101010:
- shard-tglu: NOTRUN -> [SKIP][190] ([i915#2437] / [i915#9412])
[190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@kms_writeback@writeback-check-output-xrgb2101010.html
* igt@kms_writeback@writeback-fb-id:
- shard-rkl: NOTRUN -> [SKIP][191] ([i915#2437])
[191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@kms_writeback@writeback-fb-id.html
* igt@perf@mi-rpc:
- shard-rkl: NOTRUN -> [SKIP][192] ([i915#2434])
[192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-7/igt@perf@mi-rpc.html
* igt@perf@per-context-mode-unprivileged:
- shard-rkl: NOTRUN -> [SKIP][193] ([i915#2435])
[193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@perf@per-context-mode-unprivileged.html
* igt@prime_vgem@basic-write:
- shard-rkl: NOTRUN -> [SKIP][194] ([i915#3291] / [i915#3708]) +1 other test skip
[194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@prime_vgem@basic-write.html
* igt@prime_vgem@coherency-gtt:
- shard-rkl: NOTRUN -> [SKIP][195] ([i915#3708])
[195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@prime_vgem@coherency-gtt.html
* igt@sriov_basic@enable-vfs-autoprobe-on:
- shard-tglu: NOTRUN -> [SKIP][196] ([i915#9917])
[196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-3/igt@sriov_basic@enable-vfs-autoprobe-on.html
- shard-rkl: NOTRUN -> [SKIP][197] ([i915#9917])
[197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-2/igt@sriov_basic@enable-vfs-autoprobe-on.html
* igt@tools_test@sysfs_l3_parity:
- shard-mtlp: NOTRUN -> [SKIP][198] ([i915#4818])
[198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-mtlp-3/igt@tools_test@sysfs_l3_parity.html
#### Possible fixes ####
* igt@gem_eio@kms:
- shard-dg2: [FAIL][199] ([i915#5784]) -> [PASS][200]
[199]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-11/igt@gem_eio@kms.html
[200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-8/igt@gem_eio@kms.html
* igt@gem_exec_balancer@nop:
- shard-mtlp: [DMESG-WARN][201] -> [PASS][202]
[201]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-mtlp-3/igt@gem_exec_balancer@nop.html
[202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-mtlp-7/igt@gem_exec_balancer@nop.html
* igt@i915_module_load@reload-with-fault-injection:
- shard-tglu: [ABORT][203] ([i915#9820]) -> [PASS][204]
[203]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-tglu-6/igt@i915_module_load@reload-with-fault-injection.html
[204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-6/igt@i915_module_load@reload-with-fault-injection.html
* igt@i915_pm_rc6_residency@rc6-idle:
- shard-dg1: [FAIL][205] ([i915#3591]) -> [PASS][206] +1 other test pass
[205]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg1-16/igt@i915_pm_rc6_residency@rc6-idle.html
[206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-14/igt@i915_pm_rc6_residency@rc6-idle.html
* igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-4:
- shard-dg1: [FAIL][207] ([i915#5956]) -> [PASS][208] +1 other test pass
[207]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg1-14/igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-4.html
[208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-14/igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-4.html
* igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1:
- shard-tglu: [FAIL][209] ([i915#11808]) -> [PASS][210] +1 other test pass
[209]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-tglu-6/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1.html
[210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-10/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1.html
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0:
- shard-mtlp: [FAIL][211] ([i915#5138]) -> [PASS][212]
[211]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-mtlp-1/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0.html
[212]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-mtlp-7/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs:
- shard-dg2: [SKIP][213] ([i915#9197]) -> [PASS][214] +44 other tests pass
[213]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs.html
[214]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-4/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs.html
* igt@kms_cursor_legacy@cursora-vs-flipb-legacy:
- shard-snb: [SKIP][215] -> [PASS][216] +6 other tests pass
[215]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-snb7/igt@kms_cursor_legacy@cursora-vs-flipb-legacy.html
[216]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-snb5/igt@kms_cursor_legacy@cursora-vs-flipb-legacy.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
- shard-glk: [FAIL][217] ([i915#2346]) -> [PASS][218]
[217]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-glk5/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
[218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-glk1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
* igt@kms_flip@2x-wf_vblank-ts-check-interruptible@ab-vga1-hdmi-a1:
- shard-snb: [FAIL][219] ([i915#2122]) -> [PASS][220] +1 other test pass
[219]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-snb5/igt@kms_flip@2x-wf_vblank-ts-check-interruptible@ab-vga1-hdmi-a1.html
[220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-snb4/igt@kms_flip@2x-wf_vblank-ts-check-interruptible@ab-vga1-hdmi-a1.html
* igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-upscaling:
- shard-dg2: [SKIP][221] ([i915#3555]) -> [PASS][222] +3 other tests pass
[221]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-upscaling.html
[222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-4/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-upscaling.html
* igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-pwrite:
- shard-dg2: [SKIP][223] ([i915#5354]) -> [PASS][224] +12 other tests pass
[223]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-pwrite.html
[224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-1/igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-pwrite.html
* igt@kms_plane@plane-panning-top-left:
- shard-dg2: [SKIP][225] ([i915#8825]) -> [PASS][226]
[225]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_plane@plane-panning-top-left.html
[226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-1/igt@kms_plane@plane-panning-top-left.html
* igt@kms_plane_scaling@intel-max-src-size:
- shard-rkl: [FAIL][227] ([i915#8292]) -> [PASS][228]
[227]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-rkl-2/igt@kms_plane_scaling@intel-max-src-size.html
[228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-1/igt@kms_plane_scaling@intel-max-src-size.html
* igt@kms_plane_scaling@plane-downscale-factor-0-75-with-modifiers:
- shard-dg2: [SKIP][229] ([i915#8152] / [i915#9423]) -> [PASS][230] +2 other tests pass
[229]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-modifiers.html
[230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-6/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-modifiers.html
* igt@kms_plane_scaling@plane-downscale-factor-0-75-with-modifiers@pipe-d:
- shard-dg2: [SKIP][231] ([i915#8152]) -> [PASS][232] +2 other tests pass
[231]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-modifiers@pipe-d.html
[232]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-6/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-modifiers@pipe-d.html
* igt@kms_plane_scaling@planes-downscale-factor-0-75-upscale-20x20:
- shard-dg2: [SKIP][233] ([i915#12247] / [i915#3558] / [i915#8152] / [i915#9423]) -> [PASS][234]
[233]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_plane_scaling@planes-downscale-factor-0-75-upscale-20x20.html
[234]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-4/igt@kms_plane_scaling@planes-downscale-factor-0-75-upscale-20x20.html
* igt@kms_plane_scaling@planes-downscale-factor-0-75-upscale-20x20@pipe-c:
- shard-dg2: [SKIP][235] ([i915#12247]) -> [PASS][236] +17 other tests pass
[235]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_plane_scaling@planes-downscale-factor-0-75-upscale-20x20@pipe-c.html
[236]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-4/igt@kms_plane_scaling@planes-downscale-factor-0-75-upscale-20x20@pipe-c.html
* igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75:
- shard-dg2: [SKIP][237] ([i915#3555] / [i915#6953] / [i915#8152] / [i915#9423]) -> [PASS][238]
[237]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75.html
[238]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-1/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75.html
* igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75@pipe-d:
- shard-dg2: [SKIP][239] ([i915#12247] / [i915#8152]) -> [PASS][240] +2 other tests pass
[239]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75@pipe-d.html
[240]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-1/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75@pipe-d.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75:
- shard-dg2: [SKIP][241] ([i915#12247] / [i915#6953] / [i915#8152] / [i915#9423]) -> [PASS][242]
[241]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75.html
[242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-4/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75.html
* igt@kms_pm_lpsp@kms-lpsp:
- shard-dg2: [SKIP][243] ([i915#9340]) -> [PASS][244]
[243]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-1/igt@kms_pm_lpsp@kms-lpsp.html
[244]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-8/igt@kms_pm_lpsp@kms-lpsp.html
* igt@kms_pm_rpm@cursor:
- shard-dg2: [SKIP][245] ([i915#1849]) -> [PASS][246]
[245]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_pm_rpm@cursor.html
[246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-6/igt@kms_pm_rpm@cursor.html
* igt@kms_pm_rpm@i2c:
- shard-dg2: [SKIP][247] -> [PASS][248]
[247]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_pm_rpm@i2c.html
[248]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-4/igt@kms_pm_rpm@i2c.html
* igt@kms_pm_rpm@modeset-lpsp-stress:
- shard-rkl: [SKIP][249] ([i915#9519]) -> [PASS][250] +2 other tests pass
[249]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-rkl-3/igt@kms_pm_rpm@modeset-lpsp-stress.html
[250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-4/igt@kms_pm_rpm@modeset-lpsp-stress.html
* igt@kms_pm_rpm@modeset-non-lpsp-stress:
- shard-dg2: [SKIP][251] ([i915#9519]) -> [PASS][252]
[251]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
[252]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-1/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
* igt@kms_properties@crtc-properties-atomic:
- shard-dg2: [SKIP][253] ([i915#11521]) -> [PASS][254]
[253]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_properties@crtc-properties-atomic.html
[254]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-4/igt@kms_properties@crtc-properties-atomic.html
#### Warnings ####
* igt@gem_exec_fair@basic-pace@rcs0:
- shard-tglu: [FAIL][255] ([i915#2876]) -> [FAIL][256] ([i915#2842])
[255]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-tglu-10/igt@gem_exec_fair@basic-pace@rcs0.html
[256]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-tglu-4/igt@gem_exec_fair@basic-pace@rcs0.html
* igt@i915_pipe_stress@stress-xrgb8888-ytiled:
- shard-dg2: [SKIP][257] ([i915#9197]) -> [SKIP][258] ([i915#7091])
[257]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@i915_pipe_stress@stress-xrgb8888-ytiled.html
[258]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-1/igt@i915_pipe_stress@stress-xrgb8888-ytiled.html
* igt@i915_selftest@mock:
- shard-glk: [DMESG-WARN][259] ([i915#9311]) -> [DMESG-WARN][260] ([i915#1982] / [i915#9311])
[259]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-glk4/igt@i915_selftest@mock.html
[260]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-glk4/igt@i915_selftest@mock.html
* igt@kms_big_fb@x-tiled-16bpp-rotate-270:
- shard-dg2: [SKIP][261] -> [SKIP][262] ([i915#9197]) +2 other tests skip
[261]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html
[262]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html
* igt@kms_big_fb@x-tiled-64bpp-rotate-270:
- shard-dg2: [SKIP][263] ([i915#9197]) -> [SKIP][264] +1 other test skip
[263]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_big_fb@x-tiled-64bpp-rotate-270.html
[264]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-4/igt@kms_big_fb@x-tiled-64bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-8bpp-rotate-90:
- shard-dg2: [SKIP][265] ([i915#5190] / [i915#9197]) -> [SKIP][266] ([i915#4538] / [i915#5190]) +7 other tests skip
[265]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_big_fb@y-tiled-8bpp-rotate-90.html
[266]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-4/igt@kms_big_fb@y-tiled-8bpp-rotate-90.html
* igt@kms_big_fb@y-tiled-addfb-size-overflow:
- shard-dg2: [SKIP][267] ([i915#5190]) -> [SKIP][268] ([i915#5190] / [i915#9197]) +3 other tests skip
[267]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-7/igt@kms_big_fb@y-tiled-addfb-size-overflow.html
[268]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_big_fb@y-tiled-addfb-size-overflow.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
- shard-dg2: [SKIP][269] ([i915#4538] / [i915#5190]) -> [SKIP][270] ([i915#5190] / [i915#9197]) +10 other tests skip
[269]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
[270]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
* igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs:
- shard-dg2: [SKIP][271] ([i915#9197]) -> [SKIP][272] ([i915#12313]) +1 other test skip
[271]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs.html
[272]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-4/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs-cc:
- shard-dg2: [SKIP][273] ([i915#9197]) -> [SKIP][274] ([i915#10307] / [i915#6095]) +6 other tests skip
[273]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs-cc.html
[274]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-6/igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs-cc.html
* igt@kms_ccs@crc-primary-rotation-180-y-tiled-ccs:
- shard-dg2: [SKIP][275] ([i915#10307] / [i915#6095]) -> [SKIP][276] ([i915#9197]) +10 other tests skip
[275]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_ccs@crc-primary-rotation-180-y-tiled-ccs.html
[276]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_ccs@crc-primary-rotation-180-y-tiled-ccs.html
* igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs:
- shard-dg2: [SKIP][277] ([i915#12313]) -> [SKIP][278] ([i915#9197])
[277]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs.html
[278]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs.html
* igt@kms_cdclk@mode-transition-all-outputs:
- shard-dg2: [SKIP][279] ([i915#9197]) -> [SKIP][280] ([i915#11616] / [i915#7213])
[279]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_cdclk@mode-transition-all-outputs.html
[280]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-4/igt@kms_cdclk@mode-transition-all-outputs.html
* igt@kms_cdclk@plane-scaling:
- shard-dg2: [SKIP][281] ([i915#9197]) -> [SKIP][282] ([i915#4087])
[281]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_cdclk@plane-scaling.html
[282]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-1/igt@kms_cdclk@plane-scaling.html
* igt@kms_content_protection@atomic:
- shard-dg2: [SKIP][283] ([i915#9197]) -> [SKIP][284] ([i915#7118] / [i915#9424]) +1 other test skip
[283]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_content_protection@atomic.html
[284]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-4/igt@kms_content_protection@atomic.html
* igt@kms_content_protection@dp-mst-lic-type-0:
- shard-dg2: [SKIP][285] ([i915#3299]) -> [SKIP][286] ([i915#9197])
[285]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-7/igt@kms_content_protection@dp-mst-lic-type-0.html
[286]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_content_protection@dp-mst-lic-type-0.html
* igt@kms_content_protection@legacy:
- shard-dg2: [SKIP][287] ([i915#7118] / [i915#9424]) -> [SKIP][288] ([i915#9197])
[287]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-5/igt@kms_content_protection@legacy.html
[288]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_content_protection@legacy.html
* igt@kms_content_protection@lic-type-0:
- shard-dg2: [SKIP][289] ([i915#9424]) -> [SKIP][290] ([i915#9197])
[289]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_content_protection@lic-type-0.html
[290]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_content_protection@lic-type-0.html
* igt@kms_content_protection@mei-interface:
- shard-dg1: [SKIP][291] ([i915#9424]) -> [SKIP][292] ([i915#9433])
[291]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg1-15/igt@kms_content_protection@mei-interface.html
[292]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-13/igt@kms_content_protection@mei-interface.html
* igt@kms_cursor_crc@cursor-offscreen-32x10:
- shard-dg2: [SKIP][293] ([i915#9197]) -> [SKIP][294] ([i915#3555]) +4 other tests skip
[293]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_cursor_crc@cursor-offscreen-32x10.html
[294]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-4/igt@kms_cursor_crc@cursor-offscreen-32x10.html
* igt@kms_cursor_crc@cursor-onscreen-max-size:
- shard-dg2: [SKIP][295] ([i915#3555]) -> [SKIP][296] ([i915#9197]) +4 other tests skip
[295]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_cursor_crc@cursor-onscreen-max-size.html
[296]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_cursor_crc@cursor-onscreen-max-size.html
* igt@kms_cursor_crc@cursor-random-512x170:
- shard-dg2: [SKIP][297] ([i915#9197]) -> [SKIP][298] ([i915#11453]) +3 other tests skip
[297]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_cursor_crc@cursor-random-512x170.html
[298]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-4/igt@kms_cursor_crc@cursor-random-512x170.html
* igt@kms_cursor_crc@cursor-sliding-512x170:
- shard-dg2: [SKIP][299] ([i915#11453]) -> [SKIP][300] ([i915#9197])
[299]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-5/igt@kms_cursor_crc@cursor-sliding-512x170.html
[300]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_cursor_crc@cursor-sliding-512x170.html
* igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy:
- shard-dg2: [SKIP][301] ([i915#5354]) -> [SKIP][302] ([i915#9197]) +3 other tests skip
[301]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-5/igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy.html
[302]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy.html
* igt@kms_cursor_legacy@cursorb-vs-flipa-toggle:
- shard-dg2: [SKIP][303] ([i915#9197]) -> [SKIP][304] ([i915#5354]) +4 other tests skip
[303]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_cursor_legacy@cursorb-vs-flipa-toggle.html
[304]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-1/igt@kms_cursor_legacy@cursorb-vs-flipa-toggle.html
* igt@kms_dsc@dsc-with-bpc:
- shard-dg2: [SKIP][305] ([i915#3555] / [i915#3840]) -> [SKIP][306] ([i915#9197]) +1 other test skip
[305]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_dsc@dsc-with-bpc.html
[306]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_dsc@dsc-with-bpc.html
* igt@kms_dsc@dsc-with-bpc-formats:
- shard-dg2: [SKIP][307] ([i915#9197]) -> [SKIP][308] ([i915#3555] / [i915#3840])
[307]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_dsc@dsc-with-bpc-formats.html
[308]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-4/igt@kms_dsc@dsc-with-bpc-formats.html
* igt@kms_flip@plain-flip-fb-recreate-interruptible:
- shard-dg2: [FAIL][309] ([i915#2122]) -> [SKIP][310] ([i915#5354])
[309]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_flip@plain-flip-fb-recreate-interruptible.html
[310]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_flip@plain-flip-fb-recreate-interruptible.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling:
- shard-dg2: [SKIP][311] ([i915#2672] / [i915#3555]) -> [SKIP][312] ([i915#3555]) +1 other test skip
[311]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-7/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling.html
[312]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling:
- shard-dg2: [SKIP][313] ([i915#2672] / [i915#3555] / [i915#5190]) -> [SKIP][314] ([i915#3555] / [i915#5190])
[313]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling.html
[314]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling:
- shard-dg2: [SKIP][315] ([i915#3555]) -> [SKIP][316] ([i915#2672] / [i915#3555]) +1 other test skip
[315]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling.html
[316]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-1/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling:
- shard-dg2: [SKIP][317] ([i915#3555] / [i915#5190]) -> [SKIP][318] ([i915#2672] / [i915#3555] / [i915#5190])
[317]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling.html
[318]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-6/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-pwrite:
- shard-dg1: [SKIP][319] ([i915#4423]) -> [SKIP][320]
[319]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg1-14/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-pwrite.html
[320]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-14/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-render:
- shard-dg2: [SKIP][321] ([i915#3458]) -> [SKIP][322] ([i915#5354]) +9 other tests skip
[321]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-5/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-render.html
[322]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-blt:
- shard-dg2: [SKIP][323] ([i915#5354]) -> [SKIP][324] ([i915#3458]) +12 other tests skip
[323]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-blt.html
[324]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-1/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-wc:
- shard-dg2: [SKIP][325] ([i915#8708]) -> [SKIP][326] ([i915#5354]) +19 other tests skip
[325]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-wc.html
[326]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-plflip-blt:
- shard-dg2: [SKIP][327] ([i915#5354]) -> [SKIP][328] ([i915#10433] / [i915#3458]) +1 other test skip
[327]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-plflip-blt.html
[328]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc:
- shard-dg2: [SKIP][329] ([i915#5354]) -> [SKIP][330] ([i915#8708]) +17 other tests skip
[329]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc.html
[330]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary:
- shard-dg2: [SKIP][331] ([i915#10433] / [i915#3458]) -> [SKIP][332] ([i915#5354]) +2 other tests skip
[331]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html
[332]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html
* igt@kms_hdr@invalid-metadata-sizes:
- shard-dg2: [SKIP][333] ([i915#9197]) -> [SKIP][334] ([i915#3555] / [i915#8228])
[333]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_hdr@invalid-metadata-sizes.html
[334]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-1/igt@kms_hdr@invalid-metadata-sizes.html
* igt@kms_hdr@static-swap:
- shard-dg2: [SKIP][335] ([i915#3555] / [i915#8228]) -> [SKIP][336] ([i915#9197])
[335]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_hdr@static-swap.html
[336]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_hdr@static-swap.html
* igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
- shard-rkl: [SKIP][337] ([i915#4070] / [i915#4816]) -> [SKIP][338] ([i915#4816])
[337]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-rkl-1/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
[338]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-rkl-4/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
* igt@kms_panel_fitting@atomic-fastset:
- shard-dg2: [SKIP][339] ([i915#6301]) -> [SKIP][340] ([i915#9197])
[339]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_panel_fitting@atomic-fastset.html
[340]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_panel_fitting@atomic-fastset.html
* igt@kms_plane_lowres@tiling-y:
- shard-dg2: [SKIP][341] ([i915#8821]) -> [SKIP][342] ([i915#9197])
[341]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_plane_lowres@tiling-y.html
[342]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_plane_lowres@tiling-y.html
* igt@kms_plane_multiple@tiling-y:
- shard-dg2: [SKIP][343] ([i915#9197]) -> [SKIP][344] ([i915#8806])
[343]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_plane_multiple@tiling-y.html
[344]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-4/igt@kms_plane_multiple@tiling-y.html
* igt@kms_plane_scaling@intel-max-src-size:
- shard-dg2: [SKIP][345] ([i915#6953] / [i915#9423]) -> [SKIP][346] ([i915#6953] / [i915#8152] / [i915#9423])
[345]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-7/igt@kms_plane_scaling@intel-max-src-size.html
[346]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_plane_scaling@intel-max-src-size.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling:
- shard-dg2: [SKIP][347] ([i915#12247] / [i915#9423]) -> [SKIP][348] ([i915#12247] / [i915#8152] / [i915#9423])
[347]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-7/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling.html
[348]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-d:
- shard-dg2: [SKIP][349] ([i915#12247]) -> [SKIP][350] ([i915#12247] / [i915#8152]) +1 other test skip
[349]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-7/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-d.html
[350]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-d.html
* igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25:
- shard-dg2: [SKIP][351] ([i915#12247] / [i915#6953] / [i915#8152] / [i915#9423]) -> [SKIP][352] ([i915#12247] / [i915#6953] / [i915#9423])
[351]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25.html
[352]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-4/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25:
- shard-dg2: [SKIP][353] ([i915#12247] / [i915#3555] / [i915#8152] / [i915#9423]) -> [SKIP][354] ([i915#12247] / [i915#3555] / [i915#9423])
[353]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25.html
[354]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-6/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-d:
- shard-dg2: [SKIP][355] ([i915#12247] / [i915#8152]) -> [SKIP][356] ([i915#12247]) +1 other test skip
[355]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-d.html
[356]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-6/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-d.html
* igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25:
- shard-dg2: [SKIP][357] ([i915#12247] / [i915#6953] / [i915#9423]) -> [SKIP][358] ([i915#12247] / [i915#6953] / [i915#8152] / [i915#9423])
[357]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25.html
[358]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25.html
* igt@kms_psr2_sf@fbc-pr-overlay-plane-update-sf-dmg-area:
- shard-dg1: [SKIP][359] ([i915#11520]) -> [SKIP][360] ([i915#11520] / [i915#4423])
[359]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg1-13/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-sf-dmg-area.html
[360]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-15/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-sf-dmg-area.html
* igt@kms_psr@fbc-psr2-dpms:
- shard-dg1: [SKIP][361] ([i915#1072] / [i915#4423] / [i915#9732]) -> [SKIP][362] ([i915#1072] / [i915#9732])
[361]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg1-19/igt@kms_psr@fbc-psr2-dpms.html
[362]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg1-12/igt@kms_psr@fbc-psr2-dpms.html
* igt@kms_rotation_crc@primary-rotation-270:
- shard-dg2: [SKIP][363] ([i915#11131]) -> [SKIP][364] ([i915#9197])
[363]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-4/igt@kms_rotation_crc@primary-rotation-270.html
[364]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-2/igt@kms_rotation_crc@primary-rotation-270.html
* igt@kms_vrr@negative-basic:
- shard-dg2: [SKIP][365] ([i915#9197]) -> [SKIP][366] ([i915#3555] / [i915#9906])
[365]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15483/shard-dg2-2/igt@kms_vrr@negative-basic.html
[366]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/shard-dg2-4/igt@kms_vrr@negative-basic.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[IGT#2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/2
[i915#10131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10131
[i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
[i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
[i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
[i915#10656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10656
[i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
[i915#10887]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10887
[i915#11131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11131
[i915#11453]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11453
[i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
[i915#11521]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11521
[i915#11616]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11616
[i915#11808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11808
[i915#11859]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11859
[i915#11980]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11980
[i915#12027]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12027
[i915#12177]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12177
[i915#12231]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12231
[i915#12247]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12247
[i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
[i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
[i915#1839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1839
[i915#1849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1849
[i915#1982]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1982
[i915#2065]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2065
[i915#2122]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2122
[i915#2346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2346
[i915#2434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2434
[i915#2435]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2435
[i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437
[i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
[i915#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587
[i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
[i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
[i915#2842]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2842
[i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
[i915#2876]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2876
[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#3361]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3361
[i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
[i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
[i915#3558]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3558
[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#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804
[i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
[i915#3966]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3966
[i915#4070]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4070
[i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
[i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
[i915#4087]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4087
[i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
[i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
[i915#4387]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4387
[i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423
[i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
[i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
[i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
[i915#4767]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4767
[i915#4816]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4816
[i915#4818]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4818
[i915#4839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4839
[i915#4854]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4854
[i915#5138]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5138
[i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
[i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
[i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289
[i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
[i915#5784]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5784
[i915#5956]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5956
[i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
[i915#6113]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6113
[i915#6230]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6230
[i915#6245]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6245
[i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301
[i915#6335]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6335
[i915#6344]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6344
[i915#6493]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6493
[i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
[i915#6590]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6590
[i915#6944]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6944
[i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953
[i915#7091]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7091
[i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118
[i915#7213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7213
[i915#7294]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7294
[i915#7297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7297
[i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
[i915#7790]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7790
[i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
[i915#7984]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7984
[i915#8152]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8152
[i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
[i915#8292]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8292
[i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
[i915#8414]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8414
[i915#8623]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8623
[i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
[i915#8709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8709
[i915#8806]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8806
[i915#8809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8809
[i915#8821]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8821
[i915#8825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8825
[i915#9053]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9053
[i915#9067]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9067
[i915#9196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9196
[i915#9197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9197
[i915#9293]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9293
[i915#9311]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9311
[i915#9337]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9337
[i915#9340]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9340
[i915#9412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9412
[i915#9423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9423
[i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424
[i915#9433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9433
[i915#9519]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9519
[i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683
[i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685
[i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
[i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
[i915#9781]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9781
[i915#9809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9809
[i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812
[i915#9820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9820
[i915#9878]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9878
[i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906
[i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917
[i915#9979]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9979
Build changes
-------------
* Linux: CI_DRM_15483 -> Patchwork_139493v4
CI-20190529: 20190529
CI_DRM_15483: b147208bee50e8d141c39532f8d2c467b3d1df7f @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8051: c2efcb5f207eebb0c19106f27b310f61ded6f11d @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_139493v4: b147208bee50e8d141c39532f8d2c467b3d1df7f @ git://anongit.freedesktop.org/gfx-ci/linux
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139493v4/index.html
[-- Attachment #2: Type: text/html, Size: 117914 bytes --]
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 8/8] drm/client: s/unsigned int i/int i/
2024-10-07 7:43 ` Thomas Zimmermann
@ 2024-10-08 19:12 ` Ville Syrjälä
2024-10-09 14:32 ` Jani Nikula
0 siblings, 1 reply; 28+ messages in thread
From: Ville Syrjälä @ 2024-10-08 19:12 UTC (permalink / raw)
To: Thomas Zimmermann; +Cc: dri-devel, intel-gfx
On Mon, Oct 07, 2024 at 09:43:47AM +0200, Thomas Zimmermann wrote:
> Hi
>
> Am 03.10.24 um 13:33 schrieb Ville Syrjala:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > Replace the 'unsigned int i' footguns with plain old signed
> > int. Avoids accidents if/when someone decides they need
> > to iterate backwards.
>
> Why are signed types preferable here?
If you iterate backwards you typically write
for (i = max; i >= 0; i--) {...}
and i>=0 is always true for unsigned types.
Another danger is doing any kind of arithmetic
with 'i' and expecting a signed result.
Based on my experience in getting burned by C integer
promotion/converison rules a good rule of thumb is to
always use just "int" unless there is a very good
reason for not doing so (eg. if the thing is a bitmask
or some kind of other thing where negative values
can never ever come up).
Also IIRC there was a Linus rant about "unsigned int i"
but I can't find it now.
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 4/8] drm/client: Make copies of modes
2024-10-07 7:36 ` [PATCH " Thomas Zimmermann
@ 2024-10-08 19:33 ` Ville Syrjälä
2024-10-10 19:28 ` Ville Syrjälä
0 siblings, 1 reply; 28+ messages in thread
From: Ville Syrjälä @ 2024-10-08 19:33 UTC (permalink / raw)
To: Thomas Zimmermann; +Cc: dri-devel, intel-gfx
On Mon, Oct 07, 2024 at 09:36:13AM +0200, Thomas Zimmermann wrote:
> Hi
>
> Am 03.10.24 um 13:33 schrieb Ville Syrjala:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > drm_client_firmware_config() is currently picking up the current
> > mode of the crtc via the legacy crtc->mode, which is not supposed
> > to be used by atomic drivers at all. We can't simply switch over
> > to the proper crtc->state->mode because we drop the crtc->mutex
> > (which protects crtc->state) before the mode gets used.
> >
> > The most straightforward solution to extend the lifetime of
> > modes[] seem to be to make full copies of the modes instead
> > of just storing pointers. We do have to replace the NULL checks
> > with something else though. Checking that mode->clock!=0
> > should be sufficient.
> >
> > And with this we can undo also commit 3eadd887dbac
> > ("drm/client:Fully protect modes[] with dev->mode_config.mutex")
> > as the lifetime of modes[] no longer has anything to do with
> > that lock.
>
> I think it would be a lot better to first build that mode list while
> holding the mutex, and afterwards copy the resulting modes before
> releasing the lock. The code below is convoluted with drm_mode_copy().
My first thought was to make copies but still keep track
of pointers. That idea was a complete disaster because you
now had to carefully free the modes on the list.
I then considred some kind of double list approach, but that
too seemed more complicated/confusing than the (IMO fairly
straightforward) apporach I ended up with. I'd prefer to reduce
the nummber of arrays this thing uses rather than increase them.
>
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> > drivers/gpu/drm/drm_client_modeset.c | 80 +++++++++++++++-------------
> > 1 file changed, 43 insertions(+), 37 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
> > index 888323137a6a..d413e119db3f 100644
> > --- a/drivers/gpu/drm/drm_client_modeset.c
> > +++ b/drivers/gpu/drm/drm_client_modeset.c
> > @@ -265,10 +265,15 @@ static void drm_client_connectors_enabled(struct drm_connector *connectors[],
> > enabled[i] = drm_connector_enabled(connectors[i], false);
> > }
> >
> > +static bool mode_valid(const struct drm_display_mode *mode)
> > +{
> > + return mode->clock != 0;
>
> A mode's clock isn't always known and not all drivers might set it
> correctly. At least in simpledrm/ofdrm, we have to make up a clock value
> for the firmware framebuffer. Otherwise some of our userspace would oops.
>
> The test for clock != 0 makes sense, but it's maybe the wrong place to
> do this. Would a test for hdisplay/vdisplay != 0 work instead?
That would work as well. drm_mode_validate_basic() rejects
everything with clock/hdisplay/vdisplay==0.
>
> > +}
> > +
> > static bool drm_client_target_cloned(struct drm_device *dev,
> > struct drm_connector *connectors[],
> > unsigned int connector_count,
> > - const struct drm_display_mode *modes[],
> > + struct drm_display_mode modes[],
> > struct drm_client_offset offsets[],
> > bool enabled[], int width, int height)
> > {
> > @@ -296,15 +301,16 @@ static bool drm_client_target_cloned(struct drm_device *dev,
> > for (i = 0; i < connector_count; i++) {
> > if (!enabled[i])
> > continue;
> > - modes[i] = drm_connector_pick_cmdline_mode(connectors[i]);
> > - if (!modes[i]) {
> > +
> > + drm_mode_copy(&modes[i], drm_connector_pick_cmdline_mode(connectors[i]));
> > + if (!mode_valid(&modes[i])) {
>
> You're copying and only then test for validity?
I thought drm_mode_copy() is a nop for NULL. Turns out I was wrong,
hence the v2.
For this specific case I suppose one could also write something like
if (whatever_mode())
drm_mode_copy(&modes[i], whatever_mode());
here, but having to repeat oneself is not so great.
We could of course avoid that with
mode = whatever_mode();
if (mode)
drm_mode_copy(&modes[i], mode);
with the downside of needing yet another local
variable.
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 4/8] drm/client: Make copies of modes
2024-10-03 11:33 ` [PATCH 4/8] drm/client: Make copies of modes Ville Syrjala
` (2 preceding siblings ...)
2024-10-07 7:36 ` [PATCH " Thomas Zimmermann
@ 2024-10-09 14:09 ` kernel test robot
3 siblings, 0 replies; 28+ messages in thread
From: kernel test robot @ 2024-10-09 14:09 UTC (permalink / raw)
To: Ville Syrjala; +Cc: oe-lkp, lkp, dri-devel, intel-gfx, oliver.sang
hi, Ville Syrjala,
we noticed there is a v2 for this commit
https://lore.kernel.org/all/20241003181553.8891-1-ville.syrjala@linux.intel.com/
but bot failed to analyze the patch mail structure and re-assemble it with
other patches in this serial to form a new branch (which need manual efforts).
so we just made this report out FYI. in case you are sure the issue should be
addressed by v2, please just ignore. if you want us to test v2, please let us
know. thanks
Hello,
kernel test robot noticed "Oops:general_protection_fault,probably_for_non-canonical_address#:#[##]PREEMPT_SMP_KASAN_PTI" on:
commit: 2cc919cccbb5d887534545618d696db4ec5fb691 ("[PATCH 4/8] drm/client: Make copies of modes")
url: https://github.com/intel-lab-lkp/linux/commits/Ville-Syrjala/drm-client-Constify-modes/20241004-061843
base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link: https://lore.kernel.org/all/20241003113304.11700-5-ville.syrjala@linux.intel.com/
patch subject: [PATCH 4/8] drm/client: Make copies of modes
in testcase: boot
compiler: gcc-12
test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G
(please refer to attached dmesg/kmsg for entire log/backtrace)
+----------------------------------------------------------------------------------------------+------------+------------+
| | 40327b7031 | 2cc919cccb |
+----------------------------------------------------------------------------------------------+------------+------------+
| boot_successes | 15 | 0 |
| boot_failures | 0 | 16 |
| Oops:general_protection_fault,probably_for_non-canonical_address#:#[##]PREEMPT_SMP_KASAN_PTI | 0 | 16 |
| KASAN:null-ptr-deref_in_range[#-#] | 0 | 16 |
| RIP:drm_mode_copy[drm] | 0 | 16 |
| Kernel_panic-not_syncing:Fatal_exception | 0 | 16 |
+----------------------------------------------------------------------------------------------+------------+------------+
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <oliver.sang@intel.com>
| Closes: https://lore.kernel.org/oe-lkp/202410091649.1353a717-oliver.sang@intel.com
[ 12.729071][ T116] bochs-drm 0000:00:02.0: vgaarb: deactivate vga console
[ 12.733522][ T116] Console: switching to colour dummy device 80x25
[ 12.738211][ T116] [drm] Found bochs VGA, ID 0xb0c5.
[ 12.738603][ T116] [drm] Framebuffer size 16384 kB @ 0xfd000000, mmio @ 0xfebf0000.
[ 12.742172][ T116] [drm] Initialized bochs-drm 1.0.0 for 0000:00:02.0 on minor 0
[ 12.744751][ T116] Oops: general protection fault, probably for non-canonical address 0xdffffc0000000000: 0000 [#1] PREEMPT SMP KASAN PTI
[ 12.745622][ T116] KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007]
[ 12.746193][ T116] CPU: 1 UID: 0 PID: 116 Comm: udevd Not tainted 6.12.0-rc1-00311-g2cc919cccbb5 #2
[ 12.746817][ T116] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
[ 12.747510][ T116] RIP: 0010:drm_mode_copy (kbuild/src/consumer/drivers/gpu/drm/drm_modes.c:1422) drm
[ 12.748000][ T116] Code: 40 84 c6 0f 85 01 01 00 00 84 c9 0f 95 c2 0f 9e c0 84 c2 0f 85 f1 00 00 00 48 ba 00 00 00 00 00 fc ff df 48 89 e8 48 c1 e8 03 <0f> b6 0c 10 48 8d 45 77 48 89 c6 83 e0 07 48 c1 ee 03 0f b6 14 16
All code
========
0: 40 84 c6 test %al,%sil
3: 0f 85 01 01 00 00 jne 0x10a
9: 84 c9 test %cl,%cl
b: 0f 95 c2 setne %dl
e: 0f 9e c0 setle %al
11: 84 c2 test %al,%dl
13: 0f 85 f1 00 00 00 jne 0x10a
19: 48 ba 00 00 00 00 00 movabs $0xdffffc0000000000,%rdx
20: fc ff df
23: 48 89 e8 mov %rbp,%rax
26: 48 c1 e8 03 shr $0x3,%rax
2a:* 0f b6 0c 10 movzbl (%rax,%rdx,1),%ecx <-- trapping instruction
2e: 48 8d 45 77 lea 0x77(%rbp),%rax
32: 48 89 c6 mov %rax,%rsi
35: 83 e0 07 and $0x7,%eax
38: 48 c1 ee 03 shr $0x3,%rsi
3c: 0f b6 14 16 movzbl (%rsi,%rdx,1),%edx
Code starting with the faulting instruction
===========================================
0: 0f b6 0c 10 movzbl (%rax,%rdx,1),%ecx
4: 48 8d 45 77 lea 0x77(%rbp),%rax
8: 48 89 c6 mov %rax,%rsi
b: 83 e0 07 and $0x7,%eax
e: 48 c1 ee 03 shr $0x3,%rsi
12: 0f b6 14 16 movzbl (%rsi,%rdx,1),%edx
[ 12.749333][ T116] RSP: 0000:ffffc900007ff548 EFLAGS: 00010246
[ 12.749749][ T116] RAX: 0000000000000000 RBX: ffff8881819c6600 RCX: 0000000000000000
[ 12.750284][ T116] RDX: dffffc0000000000 RSI: 1ffff11030338c01 RDI: ffff8881819c6648
[ 12.750820][ T116] RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000001
[ 12.751354][ T116] R10: 0000000000000000 R11: dffffc0000000000 R12: 0000000000000000
[ 12.751889][ T116] R13: 0000000000000000 R14: 0000000000000001 R15: ffff8881819c6600
[ 12.752435][ T116] FS: 0000000000000000(0000) GS:ffff8883a8f00000(0063) knlGS:00000000f7cec740
[ 12.753057][ T116] CS: 0010 DS: 002b ES: 002b CR0: 0000000080050033
[ 12.753537][ T116] CR2: 00000000ffc27bf8 CR3: 0000000139596000 CR4: 00000000000406f0
[ 12.754112][ T116] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 12.754674][ T116] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 12.755239][ T116] Call Trace:
[ 12.755479][ T116] <TASK>
[ 12.755686][ T116] ? die_addr (kbuild/src/consumer/arch/x86/kernel/dumpstack.c:421 kbuild/src/consumer/arch/x86/kernel/dumpstack.c:460)
[ 12.755977][ T116] ? exc_general_protection (kbuild/src/consumer/arch/x86/kernel/traps.c:751 kbuild/src/consumer/arch/x86/kernel/traps.c:693)
[ 12.756372][ T116] ? asm_exc_general_protection (kbuild/src/consumer/arch/x86/include/asm/idtentry.h:617)
[ 12.756757][ T116] ? drm_mode_copy (kbuild/src/consumer/drivers/gpu/drm/drm_modes.c:1422) drm
The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20241009/202410091649.1353a717-oliver.sang@intel.com
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 8/8] drm/client: s/unsigned int i/int i/
2024-10-08 19:12 ` Ville Syrjälä
@ 2024-10-09 14:32 ` Jani Nikula
0 siblings, 0 replies; 28+ messages in thread
From: Jani Nikula @ 2024-10-09 14:32 UTC (permalink / raw)
To: Ville Syrjälä, Thomas Zimmermann; +Cc: dri-devel, intel-gfx
On Tue, 08 Oct 2024, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> On Mon, Oct 07, 2024 at 09:43:47AM +0200, Thomas Zimmermann wrote:
>> Hi
>>
>> Am 03.10.24 um 13:33 schrieb Ville Syrjala:
>> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> >
>> > Replace the 'unsigned int i' footguns with plain old signed
>> > int. Avoids accidents if/when someone decides they need
>> > to iterate backwards.
>>
>> Why are signed types preferable here?
>
> If you iterate backwards you typically write
>
> for (i = max; i >= 0; i--) {...}
>
> and i>=0 is always true for unsigned types.
>
> Another danger is doing any kind of arithmetic
> with 'i' and expecting a signed result.
>
> Based on my experience in getting burned by C integer
> promotion/converison rules a good rule of thumb is to
> always use just "int" unless there is a very good
> reason for not doing so (eg. if the thing is a bitmask
> or some kind of other thing where negative values
> can never ever come up).
Agreed.
An even worse antipattern is using u8 or u16 just because it's the
smallest type that is enough for the range or whatever. But then it ends
up being signed int arithmetic assigned back to the small unsigned type
anyway.
> Also IIRC there was a Linus rant about "unsigned int i"
> but I can't find it now.
Another summary at [1].
BR,
Jani.
[1] https://hamstergene.github.io/posts/2021-10-30-do-not-use-unsigned-for-nonnegativity/
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 4/8] drm/client: Make copies of modes
2024-10-08 19:33 ` Ville Syrjälä
@ 2024-10-10 19:28 ` Ville Syrjälä
0 siblings, 0 replies; 28+ messages in thread
From: Ville Syrjälä @ 2024-10-10 19:28 UTC (permalink / raw)
To: Thomas Zimmermann; +Cc: dri-devel, intel-gfx
On Tue, Oct 08, 2024 at 10:33:44PM +0300, Ville Syrjälä wrote:
> On Mon, Oct 07, 2024 at 09:36:13AM +0200, Thomas Zimmermann wrote:
> > Hi
> >
> > Am 03.10.24 um 13:33 schrieb Ville Syrjala:
> > > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > >
> > > drm_client_firmware_config() is currently picking up the current
> > > mode of the crtc via the legacy crtc->mode, which is not supposed
> > > to be used by atomic drivers at all. We can't simply switch over
> > > to the proper crtc->state->mode because we drop the crtc->mutex
> > > (which protects crtc->state) before the mode gets used.
> > >
> > > The most straightforward solution to extend the lifetime of
> > > modes[] seem to be to make full copies of the modes instead
> > > of just storing pointers. We do have to replace the NULL checks
> > > with something else though. Checking that mode->clock!=0
> > > should be sufficient.
> > >
> > > And with this we can undo also commit 3eadd887dbac
> > > ("drm/client:Fully protect modes[] with dev->mode_config.mutex")
> > > as the lifetime of modes[] no longer has anything to do with
> > > that lock.
> >
> > I think it would be a lot better to first build that mode list while
> > holding the mutex, and afterwards copy the resulting modes before
> > releasing the lock. The code below is convoluted with drm_mode_copy().
>
> My first thought was to make copies but still keep track
> of pointers. That idea was a complete disaster because you
> now had to carefully free the modes on the list.
>
> I then considred some kind of double list approach, but that
> too seemed more complicated/confusing than the (IMO fairly
> straightforward) apporach I ended up with. I'd prefer to reduce
> the nummber of arrays this thing uses rather than increase them.
Had another look at the double array approach, and still
tought the result would be quite disgusting.
So I think the only other viable option is to keep the single
array of pointers, and stick copies onto it. But that introduces
more ways to leak memory and/or access already freed memory.
I don't really like the extra complexity that this requires.
It'd perhaps be more palatable if the whole thing would be
redesigned to be more AoS instead of SoA...
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 28+ messages in thread
end of thread, other threads:[~2024-10-10 19:28 UTC | newest]
Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-03 11:32 [PATCH 0/8] drm/client: Stop using legacy crtc->mode and a bunch of cleanups Ville Syrjala
2024-10-03 11:32 ` [PATCH 1/8] drm/client: Constify modes Ville Syrjala
2024-10-04 23:59 ` kernel test robot
2024-10-05 0:19 ` kernel test robot
2024-10-03 11:32 ` [PATCH 2/8] drm/client: Use array notation for function arguments Ville Syrjala
2024-10-03 11:32 ` [PATCH 3/8] drm/client: Streamline mode selection debugs Ville Syrjala
2024-10-03 11:33 ` [PATCH 4/8] drm/client: Make copies of modes Ville Syrjala
2024-10-03 16:45 ` Ville Syrjälä
2024-10-03 18:15 ` [PATCH v2 " Ville Syrjala
2024-10-07 7:36 ` [PATCH " Thomas Zimmermann
2024-10-08 19:33 ` Ville Syrjälä
2024-10-10 19:28 ` Ville Syrjälä
2024-10-09 14:09 ` kernel test robot
2024-10-03 11:33 ` [PATCH 5/8] drm/client: Stop using the legacy crtc->mode Ville Syrjala
2024-10-03 18:16 ` [PATCH v2 " Ville Syrjala
2024-10-03 11:33 ` [PATCH 6/8] drm/client: s/new_crtc/crtc/ Ville Syrjala
2024-10-03 18:17 ` [PATCH v2 " Ville Syrjala
2024-10-03 11:33 ` [PATCH 7/8] drm/client: Move variables to tighter scope Ville Syrjala
2024-10-03 14:59 ` Ville Syrjälä
2024-10-03 11:33 ` [PATCH 8/8] drm/client: s/unsigned int i/int i/ Ville Syrjala
2024-10-07 7:43 ` Thomas Zimmermann
2024-10-08 19:12 ` Ville Syrjälä
2024-10-09 14:32 ` Jani Nikula
2024-10-03 17:57 ` ✗ Fi.CI.CHECKPATCH: warning for drm/client: Stop using legacy crtc->mode and a bunch of cleanups Patchwork
2024-10-03 18:07 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-10-03 21:40 ` ✗ Fi.CI.CHECKPATCH: warning for drm/client: Stop using legacy crtc->mode and a bunch of cleanups (rev4) Patchwork
2024-10-03 21:49 ` ✓ Fi.CI.BAT: success " Patchwork
2024-10-08 6:36 ` ✓ Fi.CI.IGT: " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox