* [PATCH v2 00/13] drm/i915/display: Add DC3CO support
@ 2026-04-22 16:26 Dibin Moolakadan Subrahmanian
2026-04-22 16:26 ` [PATCH v2 01/13] drm/i915/display: Remove TGL " Dibin Moolakadan Subrahmanian
` (14 more replies)
0 siblings, 15 replies; 27+ messages in thread
From: Dibin Moolakadan Subrahmanian @ 2026-04-22 16:26 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: animesh.manna, uma.shankar, suresh.kumar.kurmi
This series adds initial DC3CO support for display version 35+ and adds
debugfs visibility into DC3CO count/residency.
The series also includes required PSR/ALPM updates for DC3CO enablement.
This series is based on the CMTG enablement series currently under
review:
https://patchwork.freedesktop.org/series/157664/
DC3CO is not enabled by this series since power_domains->allowed_dc_mask
is not updated to include DC3CO.
TODO:
- CMTG restore on DC6 exit
- CMTG HWGB programming for DC3CO latencies
- Enable DC3CO in power_domains->allowed_dc_mask
Changes in v2:
- Move dc3co state from intel_atomic_state to display->power
- Squash cleanup and related patches to reduce series from 19 to 13
patches
Dibin Moolakadan Subrahmanian (13):
drm/i915/display: Remove TGL DC3CO support
drm/i915/display: Switch DC3Co enable from standalone bit to DC level
encoding
drm/i915/display: Use FIELD_PREP() for DC state enable bits
drm/i915/display: Add DC3CO DC_STATE enable/disable support
drm/i915/display: Add DC3CO support check and validate target DC state
drm/i915/display: Add HAS_DC3CO() macro
drm/i915/display: Add DC3CO eligibility computation
drm/i915/display: Store DC3CO eligibility in PSR state
drm/i915/display: PSR2: Set idle_frames to 0 for DC3CO
drm/i915/display: Enable DC3CO idle protocol in ALPM
drm/i915/display: PSR Add delayed work to exit DC3CO
drm/i915/display: Add helper to enable DC counter
drm/i915/display: Add DC3CO count and residency in dmc debugfs
drivers/gpu/drm/i915/display/intel_alpm.c | 6 +
drivers/gpu/drm/i915/display/intel_display.c | 92 ++++++-
drivers/gpu/drm/i915/display/intel_display.h | 1 -
.../gpu/drm/i915/display/intel_display_core.h | 3 +-
.../drm/i915/display/intel_display_device.h | 1 +
.../drm/i915/display/intel_display_power.c | 50 +++-
.../drm/i915/display/intel_display_power.h | 23 ++
.../i915/display/intel_display_power_well.c | 36 ++-
.../i915/display/intel_display_power_well.h | 1 +
.../gpu/drm/i915/display/intel_display_regs.h | 14 +-
.../drm/i915/display/intel_display_types.h | 7 +-
drivers/gpu/drm/i915/display/intel_dmc.c | 15 +-
drivers/gpu/drm/i915/display/intel_dmc_regs.h | 2 +
drivers/gpu/drm/i915/display/intel_dmc_wl.c | 2 +-
drivers/gpu/drm/i915/display/intel_psr.c | 230 +++++-------------
drivers/gpu/drm/i915/display/intel_psr_regs.h | 1 +
16 files changed, 266 insertions(+), 218 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 01/13] drm/i915/display: Remove TGL DC3CO support
2026-04-22 16:26 [PATCH v2 00/13] drm/i915/display: Add DC3CO support Dibin Moolakadan Subrahmanian
@ 2026-04-22 16:26 ` Dibin Moolakadan Subrahmanian
2026-04-22 16:26 ` [PATCH v2 02/13] drm/i915/display: Switch DC3Co enable from standalone bit to DC level encoding Dibin Moolakadan Subrahmanian
` (13 subsequent siblings)
14 siblings, 0 replies; 27+ messages in thread
From: Dibin Moolakadan Subrahmanian @ 2026-04-22 16:26 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: animesh.manna, uma.shankar, suresh.kumar.kurmi
Remove all Tiger Lake DC3CO-related functions from intel_psr.c and
intel_display_power_well.c, as the feature is not enabled and not used.
Also remove the TGL/DG1 DC3CO count debugfs entry from intel_dmc.c,
as DC3CO is not active on those platforms. A new debugfs entry for
Xe3LP will be added in a subsequent patch.
Remove the unused dc3co_exitline field from struct intel_psr and
struct intel_crtc_state, along with the corresponding EXITLINE register
read in intel_psr_get_config().
Changes in v2:
- Squash "Remove unused PSR dc3co_exitline field" and
"Remove unused dc3co_exitline from crtc_state" into this patch
Signed-off-by: Dibin Moolakadan Subrahmanian <dibin.moolakadan.subrahmanian@intel.com>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
---
.../i915/display/intel_display_power_well.c | 25 ---
.../drm/i915/display/intel_display_types.h | 3 -
drivers/gpu/drm/i915/display/intel_dmc.c | 6 -
drivers/gpu/drm/i915/display/intel_psr.c | 171 ------------------
4 files changed, 205 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display_power_well.c b/drivers/gpu/drm/i915/display/intel_display_power_well.c
index 6fbfd46461b0..a7c5290edec1 100644
--- a/drivers/gpu/drm/i915/display/intel_display_power_well.c
+++ b/drivers/gpu/drm/i915/display/intel_display_power_well.c
@@ -866,23 +866,6 @@ void gen9_set_dc_state(struct intel_display *display, u32 state)
power_domains->dc_state = val & mask;
}
-static void tgl_enable_dc3co(struct intel_display *display)
-{
- drm_dbg_kms(display->drm, "Enabling DC3CO\n");
- gen9_set_dc_state(display, DC_STATE_EN_DC3CO);
-}
-
-static void tgl_disable_dc3co(struct intel_display *display)
-{
- drm_dbg_kms(display->drm, "Disabling DC3CO\n");
- intel_de_rmw(display, DC_STATE_EN, DC_STATE_DC3CO_STATUS, 0);
- gen9_set_dc_state(display, DC_STATE_DISABLE);
- /*
- * Delay of 200us DC3CO Exit time B.Spec 49196
- */
- usleep_range(200, 210);
-}
-
static void assert_can_enable_dc5(struct intel_display *display)
{
enum i915_power_well_id high_pg;
@@ -1061,11 +1044,6 @@ void gen9_disable_dc_states(struct intel_display *display)
struct intel_cdclk_config cdclk_config = {};
u32 old_state = power_domains->dc_state;
- if (power_domains->target_dc_state == DC_STATE_EN_DC3CO) {
- tgl_disable_dc3co(display);
- return;
- }
-
if (HAS_DISPLAY(display)) {
intel_dmc_wl_get_noreg(display);
gen9_set_dc_state(display, DC_STATE_DISABLE);
@@ -1114,9 +1092,6 @@ static void gen9_dc_off_power_well_disable(struct intel_display *display,
return;
switch (power_domains->target_dc_state) {
- case DC_STATE_EN_DC3CO:
- tgl_enable_dc3co(display);
- break;
case DC_STATE_EN_UPTO_DC6:
skl_enable_dc6(display);
break;
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index c81916761850..fc283cc429ec 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1183,7 +1183,6 @@ struct intel_crtc_state {
bool pkg_c_latency_used;
/* Only used for state verification. */
enum intel_panel_replay_dsc_support panel_replay_dsc_support;
- u32 dc3co_exitline;
u16 su_y_granularity;
u8 active_non_psr_pipes;
u8 entry_setup_frames;
@@ -1775,9 +1774,7 @@ struct intel_psr {
bool source_panel_replay_support;
bool sink_panel_replay_support;
bool panel_replay_enabled;
- u32 dc3co_exitline;
u32 dc3co_exit_delay;
- struct delayed_work dc3co_work;
u8 entry_setup_frames;
u8 io_wake_lines;
diff --git a/drivers/gpu/drm/i915/display/intel_dmc.c b/drivers/gpu/drm/i915/display/intel_dmc.c
index 2104164e136e..8b5840116f64 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc.c
@@ -1647,19 +1647,13 @@ static int intel_dmc_debugfs_status_show(struct seq_file *m, void *unused)
DMC_VERSION_MINOR(dmc->version));
if (DISPLAY_VER(display) >= 12) {
- i915_reg_t dc3co_reg;
-
if (display->platform.dgfx || DISPLAY_VER(display) >= 14) {
- dc3co_reg = DG1_DMC_DEBUG3;
dc5_reg = DG1_DMC_DEBUG_DC5_COUNT;
} else {
- dc3co_reg = TGL_DMC_DEBUG3;
dc5_reg = TGL_DMC_DEBUG_DC5_COUNT;
dc6_reg = TGL_DMC_DEBUG_DC6_COUNT;
}
- seq_printf(m, "DC3CO count: %d\n",
- intel_de_read(display, dc3co_reg));
} else {
dc5_reg = display->platform.broxton ? BXT_DMC_DC3_DC5_COUNT :
SKL_DMC_DC3_DC5_COUNT;
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 63c19958a9e3..34e4a1ad609e 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -87,22 +87,6 @@
* issues the self-refresh re-enable code is done from a work queue, which
* must be correctly synchronized/cancelled when shutting down the pipe."
*
- * DC3CO (DC3 clock off)
- *
- * On top of PSR2, GEN12 adds a intermediate power savings state that turns
- * clock off automatically during PSR2 idle state.
- * The smaller overhead of DC3co entry/exit vs. the overhead of PSR2 deep sleep
- * entry/exit allows the HW to enter a low-power state even when page flipping
- * periodically (for instance a 30fps video playback scenario).
- *
- * Every time a flips occurs PSR2 will get out of deep sleep state(if it was),
- * so DC3CO is enabled and tgl_dc3co_disable_work is schedule to run after 6
- * frames, if no other flip occurs and the function above is executed, DC3CO is
- * disabled and PSR2 is configured to enter deep sleep, resetting again in case
- * of another flip.
- * Front buffer modifications do not trigger DC3CO activation on purpose as it
- * would bring a lot of complexity and most of the moderns systems will only
- * use page flips.
*/
/*
@@ -1207,108 +1191,6 @@ static void psr2_program_idle_frames(struct intel_dp *intel_dp,
EDP_PSR2_IDLE_FRAMES(idle_frames));
}
-static void tgl_psr2_enable_dc3co(struct intel_dp *intel_dp)
-{
- struct intel_display *display = to_intel_display(intel_dp);
-
- psr2_program_idle_frames(intel_dp, 0);
- intel_display_power_set_target_dc_state(display, DC_STATE_EN_DC3CO);
-}
-
-static void tgl_psr2_disable_dc3co(struct intel_dp *intel_dp)
-{
- struct intel_display *display = to_intel_display(intel_dp);
-
- intel_display_power_set_target_dc_state(display, DC_STATE_EN_UPTO_DC6);
- psr2_program_idle_frames(intel_dp, psr_compute_idle_frames(intel_dp));
-}
-
-static void tgl_dc3co_disable_work(struct work_struct *work)
-{
- struct intel_dp *intel_dp =
- container_of(work, typeof(*intel_dp), psr.dc3co_work.work);
-
- mutex_lock(&intel_dp->psr.lock);
- /* If delayed work is pending, it is not idle */
- if (delayed_work_pending(&intel_dp->psr.dc3co_work))
- goto unlock;
-
- tgl_psr2_disable_dc3co(intel_dp);
-unlock:
- mutex_unlock(&intel_dp->psr.lock);
-}
-
-static void tgl_disallow_dc3co_on_psr2_exit(struct intel_dp *intel_dp)
-{
- if (!intel_dp->psr.dc3co_exitline)
- return;
-
- cancel_delayed_work(&intel_dp->psr.dc3co_work);
- /* Before PSR2 exit disallow dc3co*/
- tgl_psr2_disable_dc3co(intel_dp);
-}
-
-static bool
-dc3co_is_pipe_port_compatible(struct intel_dp *intel_dp,
- struct intel_crtc_state *crtc_state)
-{
- struct intel_display *display = to_intel_display(intel_dp);
- struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
- enum pipe pipe = to_intel_crtc(crtc_state->uapi.crtc)->pipe;
- enum port port = dig_port->base.port;
-
- if (display->platform.alderlake_p || DISPLAY_VER(display) >= 14)
- return pipe <= PIPE_B && port <= PORT_B;
- else
- return pipe == PIPE_A && port == PORT_A;
-}
-
-static void
-tgl_dc3co_exitline_compute_config(struct intel_dp *intel_dp,
- struct intel_crtc_state *crtc_state)
-{
- struct intel_display *display = to_intel_display(intel_dp);
- const u32 crtc_vdisplay = crtc_state->uapi.adjusted_mode.crtc_vdisplay;
- struct i915_power_domains *power_domains = &display->power.domains;
- u32 exit_scanlines;
-
- /*
- * FIXME: Due to the changed sequence of activating/deactivating DC3CO,
- * disable DC3CO until the changed dc3co activating/deactivating sequence
- * is applied. B.Specs:49196
- */
- return;
-
- /*
- * DMC's DC3CO exit mechanism has an issue with Selective Fecth
- * TODO: when the issue is addressed, this restriction should be removed.
- */
- if (crtc_state->enable_psr2_sel_fetch)
- return;
-
- if (!(power_domains->allowed_dc_mask & DC_STATE_EN_DC3CO))
- return;
-
- if (!dc3co_is_pipe_port_compatible(intel_dp, crtc_state))
- return;
-
- /* Wa_16011303918:adl-p */
- if (intel_display_wa(display, INTEL_DISPLAY_WA_16011303918))
- return;
-
- /*
- * DC3CO Exit time 200us B.Spec 49196
- * PSR2 transcoder Early Exit scanlines = ROUNDUP(200 / line time) + 1
- */
- exit_scanlines =
- intel_usecs_to_scanlines(&crtc_state->uapi.adjusted_mode, 200) + 1;
-
- if (drm_WARN_ON(display->drm, exit_scanlines > crtc_vdisplay))
- return;
-
- crtc_state->dc3co_exitline = crtc_vdisplay - exit_scanlines;
-}
-
static bool intel_psr2_sel_fetch_config_valid(struct intel_dp *intel_dp,
struct intel_crtc_state *crtc_state)
{
@@ -1651,8 +1533,6 @@ static bool intel_psr2_config_valid(struct intel_dp *intel_dp,
return false;
}
- tgl_dc3co_exitline_compute_config(intel_dp, crtc_state);
-
return true;
}
@@ -1967,12 +1847,6 @@ void intel_psr_get_config(struct intel_encoder *encoder,
}
pipe_config->enable_psr2_su_region_et = intel_dp->psr.su_region_et_enabled;
-
- if (DISPLAY_VER(display) >= 12) {
- val = intel_de_read(display,
- TRANS_EXITLINE(display, cpu_transcoder));
- pipe_config->dc3co_exitline = REG_FIELD_GET(EXITLINE_MASK, val);
- }
unlock:
mutex_unlock(&intel_dp->psr.lock);
}
@@ -2100,16 +1974,6 @@ static void intel_psr_enable_source(struct intel_dp *intel_dp,
psr_irq_control(intel_dp);
- /*
- * TODO: if future platforms supports DC3CO in more than one
- * transcoder, EXITLINE will need to be unset when disabling PSR
- */
- if (intel_dp->psr.dc3co_exitline)
- intel_de_rmw(display,
- TRANS_EXITLINE(display, cpu_transcoder),
- EXITLINE_MASK,
- intel_dp->psr.dc3co_exitline << EXITLINE_SHIFT | EXITLINE_ENABLE);
-
if (HAS_PSR_HW_TRACKING(display) && HAS_PSR2_SEL_FETCH(display))
intel_de_rmw(display, CHICKEN_PAR1_1, IGNORE_PSR2_HW_TRACKING,
intel_dp->psr.psr2_sel_fetch_enabled ?
@@ -2209,7 +2073,6 @@ static void intel_psr_enable_locked(struct intel_dp *intel_dp,
/* DC5/DC6 requires at least 6 idle frames */
val = usecs_to_jiffies(intel_get_frame_time_us(crtc_state) * 6);
intel_dp->psr.dc3co_exit_delay = val;
- intel_dp->psr.dc3co_exitline = crtc_state->dc3co_exitline;
intel_dp->psr.psr2_sel_fetch_enabled = crtc_state->enable_psr2_sel_fetch;
intel_dp->psr.su_region_et_enabled = crtc_state->enable_psr2_su_region_et;
intel_dp->psr.psr2_sel_fetch_cff_enabled = false;
@@ -2288,8 +2151,6 @@ static void intel_psr_exit(struct intel_dp *intel_dp)
intel_de_rmw(display, TRANS_DP2_CTL(intel_dp->psr.transcoder),
TRANS_DP2_PANEL_REPLAY_ENABLE, 0);
} else if (intel_dp->psr.sel_update_enabled) {
- tgl_disallow_dc3co_on_psr2_exit(intel_dp);
-
val = intel_de_rmw(display,
EDP_PSR2_CTL(display, cpu_transcoder),
EDP_PSR2_ENABLE, 0);
@@ -2431,7 +2292,6 @@ void intel_psr_disable(struct intel_dp *intel_dp,
mutex_unlock(&intel_dp->psr.lock);
cancel_work_sync(&intel_dp->psr.work);
- cancel_delayed_work_sync(&intel_dp->psr.dc3co_work);
}
/**
@@ -2462,7 +2322,6 @@ void intel_psr_pause(struct intel_dp *intel_dp)
mutex_unlock(&psr->lock);
cancel_work_sync(&psr->work);
- cancel_delayed_work_sync(&psr->dc3co_work);
}
/**
@@ -3608,34 +3467,6 @@ void intel_psr_invalidate(struct intel_display *display,
mutex_unlock(&intel_dp->psr.lock);
}
}
-/*
- * When we will be completely rely on PSR2 S/W tracking in future,
- * intel_psr_flush() will invalidate and flush the PSR for ORIGIN_FLIP
- * event also therefore tgl_dc3co_flush_locked() require to be changed
- * accordingly in future.
- */
-static void
-tgl_dc3co_flush_locked(struct intel_dp *intel_dp, unsigned int frontbuffer_bits,
- enum fb_op_origin origin)
-{
- struct intel_display *display = to_intel_display(intel_dp);
-
- if (!intel_dp->psr.dc3co_exitline || !intel_dp->psr.sel_update_enabled ||
- !intel_dp->psr.active)
- return;
-
- /*
- * At every frontbuffer flush flip event modified delay of delayed work,
- * when delayed work schedules that means display has been idle.
- */
- if (!(frontbuffer_bits &
- INTEL_FRONTBUFFER_ALL_MASK(intel_dp->psr.pipe)))
- return;
-
- tgl_psr2_enable_dc3co(intel_dp);
- mod_delayed_work(display->wq.unordered, &intel_dp->psr.dc3co_work,
- intel_dp->psr.dc3co_exit_delay);
-}
static void _psr_flush_handle(struct intel_dp *intel_dp)
{
@@ -3722,7 +3553,6 @@ void intel_psr_flush(struct intel_display *display,
if (origin == ORIGIN_FLIP ||
(origin == ORIGIN_CURSOR_UPDATE &&
!intel_dp->psr.psr2_sel_fetch_enabled)) {
- tgl_dc3co_flush_locked(intel_dp, frontbuffer_bits, origin);
goto unlock;
}
@@ -3781,7 +3611,6 @@ void intel_psr_init(struct intel_dp *intel_dp)
intel_dp->psr.link_standby = connector->panel.vbt.psr.full_link;
INIT_WORK(&intel_dp->psr.work, intel_psr_work);
- INIT_DELAYED_WORK(&intel_dp->psr.dc3co_work, tgl_dc3co_disable_work);
mutex_init(&intel_dp->psr.lock);
}
--
2.43.0
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 02/13] drm/i915/display: Switch DC3Co enable from standalone bit to DC level encoding
2026-04-22 16:26 [PATCH v2 00/13] drm/i915/display: Add DC3CO support Dibin Moolakadan Subrahmanian
2026-04-22 16:26 ` [PATCH v2 01/13] drm/i915/display: Remove TGL " Dibin Moolakadan Subrahmanian
@ 2026-04-22 16:26 ` Dibin Moolakadan Subrahmanian
2026-04-22 16:26 ` [PATCH v2 03/13] drm/i915/display: Use FIELD_PREP() for DC state enable bits Dibin Moolakadan Subrahmanian
` (12 subsequent siblings)
14 siblings, 0 replies; 27+ messages in thread
From: Dibin Moolakadan Subrahmanian @ 2026-04-22 16:26 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: animesh.manna, uma.shankar, suresh.kumar.kurmi
On platforms prior to xe3, DC3CO was controlled via a standalone enable
bit. Starting with xe3, DC3CO is encoded as part of the existing
DC_STATE_EN_UPTO_DC* field.
No functional change, as DC3CO is not enabled on platforms prior to xe3.
Changes in v2:
- Update commit header (Uma Shankar)
Signed-off-by: Dibin Moolakadan Subrahmanian <dibin.moolakadan.subrahmanian@intel.com>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
---
drivers/gpu/drm/i915/display/intel_display_power.c | 6 +++---
drivers/gpu/drm/i915/display/intel_display_power_well.c | 4 ++--
drivers/gpu/drm/i915/display/intel_display_regs.h | 2 +-
drivers/gpu/drm/i915/display/intel_dmc_wl.c | 2 +-
4 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c b/drivers/gpu/drm/i915/display/intel_display_power.c
index 80ecf373fb19..77c32492caa1 100644
--- a/drivers/gpu/drm/i915/display/intel_display_power.c
+++ b/drivers/gpu/drm/i915/display/intel_display_power.c
@@ -267,7 +267,7 @@ sanitize_target_dc_state(struct intel_display *display,
static const u32 states[] = {
DC_STATE_EN_UPTO_DC6,
DC_STATE_EN_UPTO_DC5,
- DC_STATE_EN_DC3CO,
+ DC_STATE_EN_UPTO_DC3CO,
DC_STATE_DISABLE,
};
int i;
@@ -999,10 +999,10 @@ static u32 get_allowed_dc_mask(struct intel_display *display, int enable_dc)
switch (requested_dc) {
case 4:
- mask |= DC_STATE_EN_DC3CO | DC_STATE_EN_UPTO_DC6;
+ mask |= DC_STATE_EN_UPTO_DC3CO | DC_STATE_EN_UPTO_DC6;
break;
case 3:
- mask |= DC_STATE_EN_DC3CO | DC_STATE_EN_UPTO_DC5;
+ mask |= DC_STATE_EN_UPTO_DC3CO | DC_STATE_EN_UPTO_DC5;
break;
case 2:
mask |= DC_STATE_EN_UPTO_DC6;
diff --git a/drivers/gpu/drm/i915/display/intel_display_power_well.c b/drivers/gpu/drm/i915/display/intel_display_power_well.c
index a7c5290edec1..b5e6437c3d8d 100644
--- a/drivers/gpu/drm/i915/display/intel_display_power_well.c
+++ b/drivers/gpu/drm/i915/display/intel_display_power_well.c
@@ -772,7 +772,7 @@ static u32 gen9_dc_mask(struct intel_display *display)
mask = DC_STATE_EN_UPTO_DC5;
if (DISPLAY_VER(display) >= 12)
- mask |= DC_STATE_EN_DC3CO | DC_STATE_EN_UPTO_DC6
+ mask |= DC_STATE_EN_UPTO_DC3CO | DC_STATE_EN_UPTO_DC6
| DC_STATE_EN_DC9;
else if (DISPLAY_VER(display) == 11)
mask |= DC_STATE_EN_UPTO_DC6 | DC_STATE_EN_DC9;
@@ -1022,7 +1022,7 @@ static void bxt_verify_dpio_phy_power_wells(struct intel_display *display)
static bool gen9_dc_off_power_well_enabled(struct intel_display *display,
struct i915_power_well *power_well)
{
- return ((intel_de_read(display, DC_STATE_EN) & DC_STATE_EN_DC3CO) == 0 &&
+ return ((intel_de_read(display, DC_STATE_EN) & DC_STATE_EN_UPTO_DC3CO) == 0 &&
(intel_de_read(display, DC_STATE_EN) & DC_STATE_EN_UPTO_DC5_DC6_MASK) == 0);
}
diff --git a/drivers/gpu/drm/i915/display/intel_display_regs.h b/drivers/gpu/drm/i915/display/intel_display_regs.h
index dada8dc27ea4..2ad211da9157 100644
--- a/drivers/gpu/drm/i915/display/intel_display_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_display_regs.h
@@ -3039,13 +3039,13 @@ enum skl_power_gate {
/* GEN9 DC */
#define DC_STATE_EN _MMIO(0x45504)
#define DC_STATE_DISABLE 0
-#define DC_STATE_EN_DC3CO REG_BIT(30)
#define DC_STATE_DC3CO_STATUS REG_BIT(29)
#define HOLD_PHY_CLKREQ_PG1_LATCH REG_BIT(21)
#define HOLD_PHY_PG1_LATCH REG_BIT(20)
#define DC_STATE_EN_UPTO_DC5 (1 << 0)
#define DC_STATE_EN_DC9 (1 << 3)
#define DC_STATE_EN_UPTO_DC6 (2 << 0)
+#define DC_STATE_EN_UPTO_DC3CO (3 << 0)
#define DC_STATE_EN_UPTO_DC5_DC6_MASK 0x3
#define DC_STATE_DEBUG _MMIO(0x45520)
diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
index ddf1a1f1ebc3..13192531cd49 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
@@ -260,7 +260,7 @@ static bool intel_dmc_wl_check_range(struct intel_display *display,
* the DMC and requires a DC exit for proper access.
*/
switch (dc_state) {
- case DC_STATE_EN_DC3CO:
+ case DC_STATE_EN_UPTO_DC3CO:
ranges = xe3lpd_dc3co_dmc_ranges;
break;
case DC_STATE_EN_UPTO_DC5:
--
2.43.0
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 03/13] drm/i915/display: Use FIELD_PREP() for DC state enable bits
2026-04-22 16:26 [PATCH v2 00/13] drm/i915/display: Add DC3CO support Dibin Moolakadan Subrahmanian
2026-04-22 16:26 ` [PATCH v2 01/13] drm/i915/display: Remove TGL " Dibin Moolakadan Subrahmanian
2026-04-22 16:26 ` [PATCH v2 02/13] drm/i915/display: Switch DC3Co enable from standalone bit to DC level encoding Dibin Moolakadan Subrahmanian
@ 2026-04-22 16:26 ` Dibin Moolakadan Subrahmanian
2026-04-22 16:26 ` [PATCH v2 04/13] drm/i915/display: Add DC3CO DC_STATE enable/disable support Dibin Moolakadan Subrahmanian
` (11 subsequent siblings)
14 siblings, 0 replies; 27+ messages in thread
From: Dibin Moolakadan Subrahmanian @ 2026-04-22 16:26 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: animesh.manna, uma.shankar, suresh.kumar.kurmi
Replace open-coded shifts with REG_GENMASK() and REG_FIELD_PREP()
for the DC state enable field.
Suggested-by: Jani Nikula <jani.nikula@linux.intel.com>
Signed-off-by: Dibin Moolakadan Subrahmanian <dibin.moolakadan.subrahmanian@intel.com>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
---
drivers/gpu/drm/i915/display/intel_display_regs.h | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display_regs.h b/drivers/gpu/drm/i915/display/intel_display_regs.h
index 2ad211da9157..fa56cc506e3f 100644
--- a/drivers/gpu/drm/i915/display/intel_display_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_display_regs.h
@@ -3042,11 +3042,12 @@ enum skl_power_gate {
#define DC_STATE_DC3CO_STATUS REG_BIT(29)
#define HOLD_PHY_CLKREQ_PG1_LATCH REG_BIT(21)
#define HOLD_PHY_PG1_LATCH REG_BIT(20)
-#define DC_STATE_EN_UPTO_DC5 (1 << 0)
#define DC_STATE_EN_DC9 (1 << 3)
-#define DC_STATE_EN_UPTO_DC6 (2 << 0)
-#define DC_STATE_EN_UPTO_DC3CO (3 << 0)
-#define DC_STATE_EN_UPTO_DC5_DC6_MASK 0x3
+#define DC_STATE_EN_UPTO_DC5_DC6_MASK REG_GENMASK(1, 0)
+#define DC_STATE_EN_DISABLE REG_FIELD_PREP(DC_STATE_EN_UPTO_DC5_DC6_MASK, 0)
+#define DC_STATE_EN_UPTO_DC5 REG_FIELD_PREP(DC_STATE_EN_UPTO_DC5_DC6_MASK, 1)
+#define DC_STATE_EN_UPTO_DC6 REG_FIELD_PREP(DC_STATE_EN_UPTO_DC5_DC6_MASK, 2)
+#define DC_STATE_EN_UPTO_DC3CO REG_FIELD_PREP(DC_STATE_EN_UPTO_DC5_DC6_MASK, 3)
#define DC_STATE_DEBUG _MMIO(0x45520)
#define DC_STATE_DEBUG_MASK_CORES (1 << 0)
--
2.43.0
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 04/13] drm/i915/display: Add DC3CO DC_STATE enable/disable support
2026-04-22 16:26 [PATCH v2 00/13] drm/i915/display: Add DC3CO support Dibin Moolakadan Subrahmanian
` (2 preceding siblings ...)
2026-04-22 16:26 ` [PATCH v2 03/13] drm/i915/display: Use FIELD_PREP() for DC state enable bits Dibin Moolakadan Subrahmanian
@ 2026-04-22 16:26 ` Dibin Moolakadan Subrahmanian
2026-04-22 16:26 ` [PATCH v2 05/13] drm/i915/display: Add DC3CO support check and validate target DC state Dibin Moolakadan Subrahmanian
` (10 subsequent siblings)
14 siblings, 0 replies; 27+ messages in thread
From: Dibin Moolakadan Subrahmanian @ 2026-04-22 16:26 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: animesh.manna, uma.shankar, suresh.kumar.kurmi
Add DC3CO handling to the dc_off power well sequencing and disable the
DMC wakelock when exiting DC3CO.
BSpec: 75253
Signed-off-by: Dibin Moolakadan Subrahmanian <dibin.moolakadan.subrahmanian@intel.com>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
---
.../drm/i915/display/intel_display_power_well.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display_power_well.c b/drivers/gpu/drm/i915/display/intel_display_power_well.c
index b5e6437c3d8d..5e002d459e95 100644
--- a/drivers/gpu/drm/i915/display/intel_display_power_well.c
+++ b/drivers/gpu/drm/i915/display/intel_display_power_well.c
@@ -866,6 +866,13 @@ void gen9_set_dc_state(struct intel_display *display, u32 state)
power_domains->dc_state = val & mask;
}
+static void xe3lpd_enable_dc3co(struct intel_display *display)
+{
+ drm_dbg_kms(display->drm, "Enabling DC3CO\n");
+ intel_dmc_wl_enable(display, DC_STATE_EN_UPTO_DC3CO);
+ gen9_set_dc_state(display, DC_STATE_EN_UPTO_DC3CO);
+}
+
static void assert_can_enable_dc5(struct intel_display *display)
{
enum i915_power_well_id high_pg;
@@ -1054,9 +1061,13 @@ void gen9_disable_dc_states(struct intel_display *display)
}
if (old_state == DC_STATE_EN_UPTO_DC5 ||
- old_state == DC_STATE_EN_UPTO_DC6)
+ old_state == DC_STATE_EN_UPTO_DC6 ||
+ old_state == DC_STATE_EN_UPTO_DC3CO)
intel_dmc_wl_disable(display);
+ if (old_state == DC_STATE_EN_UPTO_DC3CO)
+ return;
+
intel_cdclk_get_cdclk(display, &cdclk_config);
/* Can't read out voltage_level so can't use intel_cdclk_changed() */
drm_WARN_ON(display->drm,
@@ -1092,6 +1103,9 @@ static void gen9_dc_off_power_well_disable(struct intel_display *display,
return;
switch (power_domains->target_dc_state) {
+ case DC_STATE_EN_UPTO_DC3CO:
+ xe3lpd_enable_dc3co(display);
+ break;
case DC_STATE_EN_UPTO_DC6:
skl_enable_dc6(display);
break;
--
2.43.0
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 05/13] drm/i915/display: Add DC3CO support check and validate target DC state
2026-04-22 16:26 [PATCH v2 00/13] drm/i915/display: Add DC3CO support Dibin Moolakadan Subrahmanian
` (3 preceding siblings ...)
2026-04-22 16:26 ` [PATCH v2 04/13] drm/i915/display: Add DC3CO DC_STATE enable/disable support Dibin Moolakadan Subrahmanian
@ 2026-04-22 16:26 ` Dibin Moolakadan Subrahmanian
2026-04-29 5:13 ` Manna, Animesh
2026-04-22 16:26 ` [PATCH v2 06/13] drm/i915/display: Add HAS_DC3CO() macro Dibin Moolakadan Subrahmanian
` (9 subsequent siblings)
14 siblings, 1 reply; 27+ messages in thread
From: Dibin Moolakadan Subrahmanian @ 2026-04-22 16:26 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: animesh.manna, uma.shankar, suresh.kumar.kurmi
Validate the requested target DC state against allowed_dc_mask in
intel_display_power_set_target_dc_state() to avoid programming
unsupported DC states.
Also add intel_display_power_dc3co_supported() helper to query DC3CO
support from allowed_dc_mask.
Changes in v2:
- Squash "Add helper to check DC3CO support" patch into this patch
Signed-off-by: Dibin Moolakadan Subrahmanian <dibin.moolakadan.subrahmanian@intel.com>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
---
drivers/gpu/drm/i915/display/intel_display_power.c | 14 ++++++++++++++
drivers/gpu/drm/i915/display/intel_display_power.h | 1 +
2 files changed, 15 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c b/drivers/gpu/drm/i915/display/intel_display_power.c
index 77c32492caa1..f626803bbd88 100644
--- a/drivers/gpu/drm/i915/display/intel_display_power.c
+++ b/drivers/gpu/drm/i915/display/intel_display_power.c
@@ -302,6 +302,13 @@ void intel_display_power_set_target_dc_state(struct intel_display *display,
struct i915_power_domains *power_domains = &display->power.domains;
mutex_lock(&power_domains->lock);
+
+ if ((state & power_domains->allowed_dc_mask) != state) {
+ drm_dbg_kms(display->drm,
+ "Rejecting DC state 0x%x (allowed mask 0x%x)\n",
+ state, power_domains->allowed_dc_mask);
+ goto unlock;
+ }
power_well = lookup_power_well(display, SKL_DISP_DC_OFF);
if (drm_WARN_ON(display->drm, !power_well))
@@ -358,6 +365,13 @@ u32 intel_display_power_get_current_dc_state(struct intel_display *display)
return current_dc_state;
}
+bool intel_display_power_dc3co_supported(struct intel_display *display)
+{
+ struct i915_power_domains *power_domains = &display->power.domains;
+
+ return (power_domains->allowed_dc_mask & DC_STATE_EN_UPTO_DC3CO) == DC_STATE_EN_UPTO_DC3CO;
+}
+
static void __async_put_domains_mask(struct i915_power_domains *power_domains,
struct intel_power_domain_mask *mask)
{
diff --git a/drivers/gpu/drm/i915/display/intel_display_power.h b/drivers/gpu/drm/i915/display/intel_display_power.h
index d616d5d09cbe..05880e9da89f 100644
--- a/drivers/gpu/drm/i915/display/intel_display_power.h
+++ b/drivers/gpu/drm/i915/display/intel_display_power.h
@@ -186,6 +186,7 @@ void intel_display_power_resume(struct intel_display *display);
void intel_display_power_set_target_dc_state(struct intel_display *display,
u32 state);
u32 intel_display_power_get_current_dc_state(struct intel_display *display);
+bool intel_display_power_dc3co_supported(struct intel_display *display);
bool intel_display_power_is_enabled(struct intel_display *display,
enum intel_display_power_domain domain);
--
2.43.0
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 06/13] drm/i915/display: Add HAS_DC3CO() macro
2026-04-22 16:26 [PATCH v2 00/13] drm/i915/display: Add DC3CO support Dibin Moolakadan Subrahmanian
` (4 preceding siblings ...)
2026-04-22 16:26 ` [PATCH v2 05/13] drm/i915/display: Add DC3CO support check and validate target DC state Dibin Moolakadan Subrahmanian
@ 2026-04-22 16:26 ` Dibin Moolakadan Subrahmanian
2026-04-27 3:00 ` Shankar, Uma
2026-04-22 16:26 ` [PATCH v2 07/13] drm/i915/display: Add DC3CO eligibility computation Dibin Moolakadan Subrahmanian
` (8 subsequent siblings)
14 siblings, 1 reply; 27+ messages in thread
From: Dibin Moolakadan Subrahmanian @ 2026-04-22 16:26 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: animesh.manna, uma.shankar, suresh.kumar.kurmi
Add HAS_DC3CO() to identify platforms supporting DC3CO.
DC3CO is supported from display version 35 onwards.
BSpec: 75253
Signed-off-by: Dibin Moolakadan Subrahmanian <dibin.moolakadan.subrahmanian@intel.com>
---
drivers/gpu/drm/i915/display/intel_display_device.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
index 074e3ba8fb77..7fd994d92ba9 100644
--- a/drivers/gpu/drm/i915/display/intel_display_device.h
+++ b/drivers/gpu/drm/i915/display/intel_display_device.h
@@ -159,6 +159,7 @@ struct intel_display_platforms {
#define HAS_CUR_FBC(__display) (!HAS_GMCH(__display) && IS_DISPLAY_VER(__display, 7, 13))
#define HAS_D12_PLANE_MINIMIZATION(__display) ((__display)->platform.rocketlake || (__display)->platform.alderlake_s)
#define HAS_DBUF_OVERLAP_DETECTION(__display) (DISPLAY_RUNTIME_INFO(__display)->has_dbuf_overlap_detection)
+#define HAS_DC3CO(__display) (DISPLAY_VER(__display) >= 35)
#define HAS_DDI(__display) (DISPLAY_INFO(__display)->has_ddi)
#define HAS_DISPLAY(__display) (DISPLAY_RUNTIME_INFO(__display)->pipe_mask != 0)
#define HAS_DMC(__display) (DISPLAY_RUNTIME_INFO(__display)->has_dmc)
--
2.43.0
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 07/13] drm/i915/display: Add DC3CO eligibility computation
2026-04-22 16:26 [PATCH v2 00/13] drm/i915/display: Add DC3CO support Dibin Moolakadan Subrahmanian
` (5 preceding siblings ...)
2026-04-22 16:26 ` [PATCH v2 06/13] drm/i915/display: Add HAS_DC3CO() macro Dibin Moolakadan Subrahmanian
@ 2026-04-22 16:26 ` Dibin Moolakadan Subrahmanian
2026-04-27 3:10 ` Shankar, Uma
2026-04-29 5:42 ` Manna, Animesh
2026-04-22 16:26 ` [PATCH v2 08/13] drm/i915/display: Store DC3CO eligibility in PSR state Dibin Moolakadan Subrahmanian
` (7 subsequent siblings)
14 siblings, 2 replies; 27+ messages in thread
From: Dibin Moolakadan Subrahmanian @ 2026-04-22 16:26 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: animesh.manna, uma.shankar, suresh.kumar.kurmi
Compute DC3CO eligibility during atomic_check based on
pipe/port constraints and runtime triggers and store
result in display->power.dc3co.
When DC3CO is allowed, request DC_STATE_EN_UPTO_DC3CO and
reduce the DC entry delay. Otherwise, retain the existing
delay and set default DC_STATE_EN_UPTO_DC6 .
Changes in v2:
- Move dc3co state from intel_atomic_state to display->power (Uma Shankar)
- Use #define bitmasks instead of enum for DC3CO triggers (Jani Nikula)
BSpec: 75253
Signed-off-by: Dibin Moolakadan Subrahmanian <dibin.moolakadan.subrahmanian@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 92 ++++++++++++++++++-
drivers/gpu/drm/i915/display/intel_display.h | 1 -
.../gpu/drm/i915/display/intel_display_core.h | 3 +-
.../drm/i915/display/intel_display_power.c | 30 ++++++
.../drm/i915/display/intel_display_power.h | 22 +++++
5 files changed, 141 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 674a4ece6d0f..de493d04a622 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -5870,6 +5870,69 @@ static bool intel_pipes_need_modeset(struct intel_atomic_state *state,
return false;
}
+static bool intel_dc3co_port_pipe_compatible(struct intel_dp *intel_dp,
+ const struct intel_crtc_state *crtc_state)
+{
+ struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
+ enum pipe pipe = to_intel_crtc(crtc_state->uapi.crtc)->pipe;
+ enum port port = dig_port->base.port;
+ int num_pipes = intel_crtc_num_joined_pipes(crtc_state);
+
+ return num_pipes == 1 && pipe <= PIPE_B && port <= PORT_B;
+}
+
+static void intel_dc3co_compute_state(struct intel_atomic_state *state)
+{
+ struct intel_display *display = to_intel_display(state);
+ struct intel_crtc *crtc;
+ struct intel_crtc_state *crtc_state;
+ struct intel_encoder *encoder;
+ struct intel_dp *intel_dp;
+ int active_pipes = 0;
+ u32 trigger = DC3CO_TRIGGER_NONE;
+
+ if (!HAS_DC3CO(display))
+ return;
+
+ for_each_intel_crtc(display->drm, crtc) {
+ trigger = DC3CO_TRIGGER_NONE;
+ crtc_state = intel_atomic_get_new_crtc_state(state, crtc);
+ if (!crtc_state)
+ crtc_state = intel_atomic_get_old_crtc_state(state, crtc);
+
+ if (!crtc_state || !crtc_state->hw.active)
+ continue;
+
+ active_pipes++;
+
+ if (active_pipes > 1)
+ goto done;
+
+ for_each_intel_encoder_mask(display->drm, encoder,
+ crtc_state->uapi.encoder_mask) {
+ if (encoder->type != INTEL_OUTPUT_EDP)
+ goto done;
+
+ intel_dp = enc_to_intel_dp(encoder);
+
+ if (!intel_dc3co_port_pipe_compatible(intel_dp, crtc_state))
+ goto done;
+ }
+
+ if (crtc_state->has_lobf)
+ trigger |= DC3CO_TRIGGER_LOBF;
+ if (crtc_state->has_panel_replay)
+ trigger |= DC3CO_TRIGGER_PANEL_REPLAY;
+ if (crtc_state->has_sel_update)
+ trigger |= DC3CO_TRIGGER_PSR2;
+ }
+
+done:
+ intel_display_power_dc3co_update(display, !!trigger, trigger);
+ drm_dbg_kms(display->drm, "DC3CO allowed=%d trigger=0x%x\n",
+ !!trigger, trigger);
+}
+
static int intel_atomic_check_joiner(struct intel_atomic_state *state,
struct intel_crtc *primary_crtc)
{
@@ -6544,6 +6607,7 @@ int intel_atomic_check(struct drm_device *dev,
if (ret)
goto fail;
+ intel_dc3co_compute_state(state);
for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state,
new_crtc_state, i) {
intel_color_assert_luts(new_crtc_state);
@@ -7415,6 +7479,7 @@ static void intel_atomic_commit_tail(struct intel_atomic_state *state)
struct intel_power_domain_mask put_domains[I915_MAX_PIPES] = {};
struct ref_tracker *wakeref = NULL;
int i;
+ int power_async_delay;
for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i)
intel_atomic_dsb_prepare(state, crtc);
@@ -7621,11 +7686,28 @@ static void intel_atomic_commit_tail(struct intel_atomic_state *state)
*/
intel_uncore_arm_unclaimed_mmio_detection(uncore);
}
- /*
- * Delay re-enabling DC states by 17 ms to avoid the off->on->off
- * toggling overhead at and above 60 FPS.
- */
- intel_display_power_put_async_delay(display, POWER_DOMAIN_DC_OFF, wakeref, 17);
+
+ if (intel_display_power_dc3co_allowed(display) &&
+ intel_display_power_dc3co_supported(display)) {
+ intel_display_power_set_target_dc_state(display, DC_STATE_EN_UPTO_DC3CO);
+ /*
+ * Use minimal re-enable delay to allow DC3CO entry on
+ * the next idle frame, unlike the 17ms guard needed to
+ * prevent DC5/DC6 toggling overhead at 60+ FPS.
+ */
+ power_async_delay = 1;
+ } else {
+ /*
+ * Delay re-enabling DC states by 17 ms to avoid the off->on->off
+ * toggling overhead at and above 60 FPS.
+ */
+ intel_display_power_set_target_dc_state(display, DC_STATE_EN_UPTO_DC6);
+ power_async_delay = 17;
+ }
+
+ intel_display_power_put_async_delay(display,
+ POWER_DOMAIN_DC_OFF, wakeref, power_async_delay);
+
intel_display_rpm_put(display, state->wakeref);
/*
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index 1e76a455d7c4..2795e4b9e799 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -521,5 +521,4 @@ bool assert_port_valid(struct intel_display *display, enum port port);
bool intel_scanout_needs_vtd_wa(struct intel_display *display);
int intel_crtc_num_joined_pipes(const struct intel_crtc_state *crtc_state);
-
#endif
diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
index c5a07090cba6..13e9b986b6fc 100644
--- a/drivers/gpu/drm/i915/display/intel_display_core.h
+++ b/drivers/gpu/drm/i915/display/intel_display_core.h
@@ -535,7 +535,8 @@ struct intel_display {
struct {
struct i915_power_domains domains;
-
+ /* DC3CO eligibility state */
+ struct intel_dc3co_state dc3co;
/* Shadow for DISPLAY_PHY_CONTROL which can't be safely read */
u32 chv_phy_control;
diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c b/drivers/gpu/drm/i915/display/intel_display_power.c
index f626803bbd88..ff1915be59c9 100644
--- a/drivers/gpu/drm/i915/display/intel_display_power.c
+++ b/drivers/gpu/drm/i915/display/intel_display_power.c
@@ -372,6 +372,35 @@ bool intel_display_power_dc3co_supported(struct intel_display *display)
return (power_domains->allowed_dc_mask & DC_STATE_EN_UPTO_DC3CO) == DC_STATE_EN_UPTO_DC3CO;
}
+void intel_display_power_dc3co_update(struct intel_display *display,
+ bool allowed, u32 trigger)
+{
+ struct intel_dc3co_state *dc3co = &display->power.dc3co;
+
+ if (!HAS_DC3CO(display))
+ return;
+
+ mutex_lock(&dc3co->lock);
+ dc3co->allowed = allowed;
+ dc3co->trigger = trigger;
+ mutex_unlock(&dc3co->lock);
+}
+
+bool intel_display_power_dc3co_allowed(struct intel_display *display)
+{
+ struct intel_dc3co_state *dc3co = &display->power.dc3co;
+ bool allowed;
+
+ if (!HAS_DC3CO(display))
+ return false;
+
+ mutex_lock(&dc3co->lock);
+ allowed = dc3co->allowed;
+ mutex_unlock(&dc3co->lock);
+
+ return allowed;
+}
+
static void __async_put_domains_mask(struct i915_power_domains *power_domains,
struct intel_power_domain_mask *mask)
{
@@ -1051,6 +1080,7 @@ int intel_power_domains_init(struct intel_display *display)
sanitize_target_dc_state(display, DC_STATE_EN_UPTO_DC6);
mutex_init(&power_domains->lock);
+ mutex_init(&display->power.dc3co.lock);
INIT_DELAYED_WORK(&power_domains->async_put_work,
intel_display_power_put_async_work);
diff --git a/drivers/gpu/drm/i915/display/intel_display_power.h b/drivers/gpu/drm/i915/display/intel_display_power.h
index 05880e9da89f..0b1a06f88ae5 100644
--- a/drivers/gpu/drm/i915/display/intel_display_power.h
+++ b/drivers/gpu/drm/i915/display/intel_display_power.h
@@ -131,6 +131,25 @@ struct intel_power_domain_mask {
DECLARE_BITMAP(bits, POWER_DOMAIN_NUM);
};
+/*
+ * DC3CO enabling triggers (bitmask).
+ * DC3CO may be enabled when at least one of these triggers is active.
+ * Additional constraints may still apply.
+ */
+#define DC3CO_TRIGGER_NONE (0)
+#define DC3CO_TRIGGER_PSR2 BIT(0)
+#define DC3CO_TRIGGER_LOBF BIT(1)
+#define DC3CO_TRIGGER_PANEL_REPLAY BIT(2)
+#define DC3CO_TRIGGER_ALL (DC3CO_TRIGGER_PSR2 | \
+ DC3CO_TRIGGER_LOBF | \
+ DC3CO_TRIGGER_PANEL_REPLAY)
+
+struct intel_dc3co_state {
+ struct mutex lock; /* Protects allowed and trigger fields */
+ bool allowed; /* DC3CO eligibility result */
+ u32 trigger; /* Bitmask of active DC3CO triggers */
+};
+
struct i915_power_domains {
/*
* Power wells needed for initialization at driver init and suspend
@@ -187,6 +206,9 @@ void intel_display_power_set_target_dc_state(struct intel_display *display,
u32 state);
u32 intel_display_power_get_current_dc_state(struct intel_display *display);
bool intel_display_power_dc3co_supported(struct intel_display *display);
+void intel_display_power_dc3co_update(struct intel_display *display,
+ bool allowed, u32 trigger);
+bool intel_display_power_dc3co_allowed(struct intel_display *display);
bool intel_display_power_is_enabled(struct intel_display *display,
enum intel_display_power_domain domain);
--
2.43.0
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 08/13] drm/i915/display: Store DC3CO eligibility in PSR state
2026-04-22 16:26 [PATCH v2 00/13] drm/i915/display: Add DC3CO support Dibin Moolakadan Subrahmanian
` (6 preceding siblings ...)
2026-04-22 16:26 ` [PATCH v2 07/13] drm/i915/display: Add DC3CO eligibility computation Dibin Moolakadan Subrahmanian
@ 2026-04-22 16:26 ` Dibin Moolakadan Subrahmanian
2026-04-27 3:11 ` Shankar, Uma
2026-04-22 16:26 ` [PATCH v2 09/13] drm/i915/display: PSR2: Set idle_frames to 0 for DC3CO Dibin Moolakadan Subrahmanian
` (6 subsequent siblings)
14 siblings, 1 reply; 27+ messages in thread
From: Dibin Moolakadan Subrahmanian @ 2026-04-22 16:26 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: animesh.manna, uma.shankar, suresh.kumar.kurmi
Store DC3CO eligibility in intel_dp->psr during
intel_psr_post_plane_update() so PSR configuration
can take DC3CO into account.
This will be used to control PSR2 parameters such as idle frames.
Changes in v2:
- Use intel_display_power_dc3co_allowed(display) instead
of intel_dc3co_allowed(state)
Signed-off-by: Dibin Moolakadan Subrahmanian <dibin.moolakadan.subrahmanian@intel.com>
---
drivers/gpu/drm/i915/display/intel_display_types.h | 2 ++
drivers/gpu/drm/i915/display/intel_psr.c | 4 ++++
2 files changed, 6 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index fc283cc429ec..28ab686b702a 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1769,6 +1769,8 @@ struct intel_psr {
ktime_t last_exit;
bool sink_not_reliable;
bool irq_aux_error;
+ /* DC3CO eligibility used to control PSR configuration */
+ bool dc3co_eligible;
u16 su_w_granularity;
u16 su_y_granularity;
bool source_panel_replay_support;
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 34e4a1ad609e..2e0478e3d560 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -2263,6 +2263,7 @@ static void intel_psr_disable_locked(struct intel_dp *intel_dp)
intel_dp->psr.psr2_sel_fetch_cff_enabled = false;
intel_dp->psr.active_non_psr_pipes = 0;
intel_dp->psr.pkg_c_latency_used = 0;
+ intel_dp->psr.dc3co_eligible = false;
}
/**
@@ -3095,6 +3096,9 @@ void intel_psr_post_plane_update(struct intel_atomic_state *state,
*/
intel_dp->psr.busy_frontbuffer_bits = 0;
+ intel_dp->psr.dc3co_eligible = intel_display_power_dc3co_allowed(display) &&
+ intel_display_power_dc3co_supported(display);
+
mutex_unlock(&psr->lock);
}
}
--
2.43.0
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 09/13] drm/i915/display: PSR2: Set idle_frames to 0 for DC3CO
2026-04-22 16:26 [PATCH v2 00/13] drm/i915/display: Add DC3CO support Dibin Moolakadan Subrahmanian
` (7 preceding siblings ...)
2026-04-22 16:26 ` [PATCH v2 08/13] drm/i915/display: Store DC3CO eligibility in PSR state Dibin Moolakadan Subrahmanian
@ 2026-04-22 16:26 ` Dibin Moolakadan Subrahmanian
2026-04-27 3:13 ` Shankar, Uma
2026-04-22 16:26 ` [PATCH v2 10/13] drm/i915/display: Enable DC3CO idle protocol in ALPM Dibin Moolakadan Subrahmanian
` (5 subsequent siblings)
14 siblings, 1 reply; 27+ messages in thread
From: Dibin Moolakadan Subrahmanian @ 2026-04-22 16:26 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: animesh.manna, uma.shankar, suresh.kumar.kurmi
Force idle_frames to 0 when DC3CO is eligible.
Changes in v2:
- Extend existing Wa_16025596647 condition
instead of adding a new if block (Uma Shankar)
BSpec: 75253
Signed-off-by: Dibin Moolakadan Subrahmanian <dibin.moolakadan.subrahmanian@intel.com>
---
drivers/gpu/drm/i915/display/intel_psr.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 2e0478e3d560..ff9ce7d2a5aa 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1069,10 +1069,11 @@ static void hsw_activate_psr2(struct intel_dp *intel_dp)
u32 psr_val = 0;
u8 idle_frames;
- /* Wa_16025596647 */
- if ((DISPLAY_VER(display) == 20 ||
- IS_DISPLAY_VERx100_STEP(display, 3000, STEP_A0, STEP_B0)) &&
- is_dc5_dc6_blocked(intel_dp) && intel_dp->psr.pkg_c_latency_used)
+ /* DC3CO / Wa_16025596647 */
+ if (intel_dp->psr.dc3co_eligible ||
+ ((DISPLAY_VER(display) == 20 ||
+ IS_DISPLAY_VERx100_STEP(display, 3000, STEP_A0, STEP_B0)) &&
+ is_dc5_dc6_blocked(intel_dp) && intel_dp->psr.pkg_c_latency_used))
idle_frames = 0;
else
idle_frames = psr_compute_idle_frames(intel_dp);
--
2.43.0
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 10/13] drm/i915/display: Enable DC3CO idle protocol in ALPM
2026-04-22 16:26 [PATCH v2 00/13] drm/i915/display: Add DC3CO support Dibin Moolakadan Subrahmanian
` (8 preceding siblings ...)
2026-04-22 16:26 ` [PATCH v2 09/13] drm/i915/display: PSR2: Set idle_frames to 0 for DC3CO Dibin Moolakadan Subrahmanian
@ 2026-04-22 16:26 ` Dibin Moolakadan Subrahmanian
2026-04-27 3:14 ` Shankar, Uma
2026-04-22 16:26 ` [PATCH v2 11/13] drm/i915/display: PSR Add delayed work to exit DC3CO Dibin Moolakadan Subrahmanian
` (4 subsequent siblings)
14 siblings, 1 reply; 27+ messages in thread
From: Dibin Moolakadan Subrahmanian @ 2026-04-22 16:26 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: animesh.manna, uma.shankar, suresh.kumar.kurmi
Add PR_ALPM_CTL_USE_DC3CO_IDLE_PROTOCOL bit definition and set it
when DC3CO is allowed.
Changes in v2:
- Squash "Define DC3CO idle protocol bit in PR_ALPM_CTL"
into this patch (Uma Shankar)
- Use intel_display_power_dc3co_allowed(display)
instead of intel_dc3co_allowed(state)
BSpec: 75253
Signed-off-by: Dibin Moolakadan Subrahmanian <dibin.moolakadan.subrahmanian@intel.com>
---
drivers/gpu/drm/i915/display/intel_alpm.c | 6 ++++++
drivers/gpu/drm/i915/display/intel_psr_regs.h | 1 +
2 files changed, 7 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index a7350ce8e716..6394d1568b54 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -389,6 +389,12 @@ static void lnl_alpm_configure(struct intel_dp *intel_dp,
if (crtc_state->disable_as_sdp_when_pr_active)
pr_alpm_ctl |= PR_ALPM_CTL_AS_SDP_TRANSMISSION_IN_ACTIVE_DISABLE;
+ if (intel_display_power_dc3co_allowed(display) &&
+ intel_display_power_dc3co_supported(display))
+ pr_alpm_ctl |= PR_ALPM_CTL_USE_DC3CO_IDLE_PROTOCOL;
+ else
+ pr_alpm_ctl &= ~PR_ALPM_CTL_USE_DC3CO_IDLE_PROTOCOL;
+
intel_de_write(display, PR_ALPM_CTL(display, cpu_transcoder),
pr_alpm_ctl);
}
diff --git a/drivers/gpu/drm/i915/display/intel_psr_regs.h b/drivers/gpu/drm/i915/display/intel_psr_regs.h
index 8afbf5a38335..16a9e3af198d 100644
--- a/drivers/gpu/drm/i915/display/intel_psr_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_psr_regs.h
@@ -268,6 +268,7 @@
#define _PR_ALPM_CTL_A 0x60948
#define PR_ALPM_CTL(dev_priv, tran) _MMIO_TRANS2(dev_priv, tran, _PR_ALPM_CTL_A)
+#define PR_ALPM_CTL_USE_DC3CO_IDLE_PROTOCOL BIT(7)
#define PR_ALPM_CTL_ALLOW_LINK_OFF_BETWEEN_AS_SDP_AND_SU BIT(6)
#define PR_ALPM_CTL_RFB_UPDATE_CONTROL BIT(5)
#define PR_ALPM_CTL_AS_SDP_TRANSMISSION_IN_ACTIVE_DISABLE BIT(4)
--
2.43.0
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 11/13] drm/i915/display: PSR Add delayed work to exit DC3CO
2026-04-22 16:26 [PATCH v2 00/13] drm/i915/display: Add DC3CO support Dibin Moolakadan Subrahmanian
` (9 preceding siblings ...)
2026-04-22 16:26 ` [PATCH v2 10/13] drm/i915/display: Enable DC3CO idle protocol in ALPM Dibin Moolakadan Subrahmanian
@ 2026-04-22 16:26 ` Dibin Moolakadan Subrahmanian
2026-04-27 3:15 ` Shankar, Uma
2026-04-22 16:26 ` [PATCH v2 12/13] drm/i915/display: Add helper to enable DC counter Dibin Moolakadan Subrahmanian
` (3 subsequent siblings)
14 siblings, 1 reply; 27+ messages in thread
From: Dibin Moolakadan Subrahmanian @ 2026-04-22 16:26 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: animesh.manna, uma.shankar, suresh.kumar.kurmi
For DC3CO, idle_frames is programmed to 0, so PSR does not
enter deep sleep. Add delayed work to schedule DC3CO exit
after an idle duration derived from frame time (minimum
equivalent of 6 frames).
The work is re-armed from the PSR flush path on relevant frontbuffer
activity. Once the display remains idle, DC3CO is disabled, idle frames
are reprogrammed to their normal value, and DC6 is enabled to allow
deeper power savings.
Changes in v2:
- Squash "PSR set idle frames while exit from DC3CO"
into this patch (Uma Shankar)
- Add cancel_delayed_work() in intel_psr_disable_locked()
before clearing dc3co_eligible (Uma Shankar)
Signed-off-by: Dibin Moolakadan Subrahmanian <dibin.moolakadan.subrahmanian@intel.com>
---
.../drm/i915/display/intel_display_types.h | 2 +
drivers/gpu/drm/i915/display/intel_psr.c | 50 +++++++++++++++++++
2 files changed, 52 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 28ab686b702a..fb5c12bb5b5c 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1771,6 +1771,8 @@ struct intel_psr {
bool irq_aux_error;
/* DC3CO eligibility used to control PSR configuration */
bool dc3co_eligible;
+ /* DC3CO disable work */
+ struct delayed_work dc3co_work;
u16 su_w_granularity;
u16 su_y_granularity;
bool source_panel_replay_support;
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index ff9ce7d2a5aa..36180206d3ad 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1728,6 +1728,51 @@ static bool intel_psr_needs_wa_18037818876(struct intel_dp *intel_dp,
!crtc_state->has_sel_update);
}
+static void psr2_dc3co_disable_locked(struct intel_dp *intel_dp)
+{
+ struct intel_display *display = to_intel_display(intel_dp);
+
+ if (intel_dp->psr.dc3co_eligible) {
+ intel_dp->psr.dc3co_eligible = false;
+ intel_display_power_set_target_dc_state(display, DC_STATE_EN_UPTO_DC6);
+ psr2_program_idle_frames(intel_dp, psr_compute_idle_frames(intel_dp));
+ }
+}
+
+static void psr2_dc3co_disable_work(struct work_struct *work)
+{
+ struct intel_dp *intel_dp =
+ container_of(work, typeof(*intel_dp), psr.dc3co_work.work);
+
+ mutex_lock(&intel_dp->psr.lock);
+ psr2_dc3co_disable_locked(intel_dp);
+ mutex_unlock(&intel_dp->psr.lock);
+}
+
+static void
+psr2_dc3co_flush_locked(struct intel_dp *intel_dp, unsigned int frontbuffer_bits,
+ enum fb_op_origin origin)
+{
+ struct intel_display *display = to_intel_display(intel_dp);
+
+ if (!intel_dp->psr.dc3co_eligible)
+ return;
+
+ if (!intel_dp->psr.sel_update_enabled ||
+ !intel_dp->psr.active)
+ return;
+ /*
+ * At every frontbuffer flush flip event modified delay of delayed work,
+ * when delayed work schedules that means display has been idle.
+ */
+ if (!(frontbuffer_bits &
+ INTEL_FRONTBUFFER_ALL_MASK(intel_dp->psr.pipe)))
+ return;
+
+ mod_delayed_work(display->wq.unordered, &intel_dp->psr.dc3co_work,
+ intel_dp->psr.dc3co_exit_delay);
+}
+
static
void intel_psr_set_non_psr_pipes(struct intel_dp *intel_dp,
struct intel_crtc_state *crtc_state)
@@ -2264,6 +2309,7 @@ static void intel_psr_disable_locked(struct intel_dp *intel_dp)
intel_dp->psr.psr2_sel_fetch_cff_enabled = false;
intel_dp->psr.active_non_psr_pipes = 0;
intel_dp->psr.pkg_c_latency_used = 0;
+ cancel_delayed_work(&intel_dp->psr.dc3co_work);
intel_dp->psr.dc3co_eligible = false;
}
@@ -2294,6 +2340,7 @@ void intel_psr_disable(struct intel_dp *intel_dp,
mutex_unlock(&intel_dp->psr.lock);
cancel_work_sync(&intel_dp->psr.work);
+ cancel_delayed_work_sync(&intel_dp->psr.dc3co_work);
}
/**
@@ -2324,6 +2371,7 @@ void intel_psr_pause(struct intel_dp *intel_dp)
mutex_unlock(&psr->lock);
cancel_work_sync(&psr->work);
+ cancel_delayed_work_sync(&psr->dc3co_work);
}
/**
@@ -3558,6 +3606,7 @@ void intel_psr_flush(struct intel_display *display,
if (origin == ORIGIN_FLIP ||
(origin == ORIGIN_CURSOR_UPDATE &&
!intel_dp->psr.psr2_sel_fetch_enabled)) {
+ psr2_dc3co_flush_locked(intel_dp, frontbuffer_bits, origin);
goto unlock;
}
@@ -3616,6 +3665,7 @@ void intel_psr_init(struct intel_dp *intel_dp)
intel_dp->psr.link_standby = connector->panel.vbt.psr.full_link;
INIT_WORK(&intel_dp->psr.work, intel_psr_work);
+ INIT_DELAYED_WORK(&intel_dp->psr.dc3co_work, psr2_dc3co_disable_work);
mutex_init(&intel_dp->psr.lock);
}
--
2.43.0
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 12/13] drm/i915/display: Add helper to enable DC counter
2026-04-22 16:26 [PATCH v2 00/13] drm/i915/display: Add DC3CO support Dibin Moolakadan Subrahmanian
` (10 preceding siblings ...)
2026-04-22 16:26 ` [PATCH v2 11/13] drm/i915/display: PSR Add delayed work to exit DC3CO Dibin Moolakadan Subrahmanian
@ 2026-04-22 16:26 ` Dibin Moolakadan Subrahmanian
2026-04-22 16:26 ` [PATCH v2 13/13] drm/i915/display: Add DC3CO count and residency in dmc debugfs Dibin Moolakadan Subrahmanian
` (2 subsequent siblings)
14 siblings, 0 replies; 27+ messages in thread
From: Dibin Moolakadan Subrahmanian @ 2026-04-22 16:26 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: animesh.manna, uma.shankar, suresh.kumar.kurmi
Add xe3lpd_enable_dc_count() to enable the DC_COUNT_EN register.
Also define DC_STATE_DC3CO_RESIDENCY to read DC3CO residency.
Needed to retrieve DC residency for DC3CO.
Signed-off-by: Dibin Moolakadan Subrahmanian <dibin.moolakadan.subrahmanian@intel.com>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
---
drivers/gpu/drm/i915/display/intel_display_power_well.c | 5 +++++
drivers/gpu/drm/i915/display/intel_display_power_well.h | 1 +
drivers/gpu/drm/i915/display/intel_display_regs.h | 5 +++++
drivers/gpu/drm/i915/display/intel_dmc.c | 3 +++
4 files changed, 14 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_display_power_well.c b/drivers/gpu/drm/i915/display/intel_display_power_well.c
index 5e002d459e95..16204b930adb 100644
--- a/drivers/gpu/drm/i915/display/intel_display_power_well.c
+++ b/drivers/gpu/drm/i915/display/intel_display_power_well.c
@@ -866,6 +866,11 @@ void gen9_set_dc_state(struct intel_display *display, u32 state)
power_domains->dc_state = val & mask;
}
+void xe3lpd_enable_dc_count(struct intel_display *display)
+{
+ intel_de_write(display, DC_COUNT_EN, DC_COUNT_EN_COUNTER_ENABLE);
+}
+
static void xe3lpd_enable_dc3co(struct intel_display *display)
{
drm_dbg_kms(display->drm, "Enabling DC3CO\n");
diff --git a/drivers/gpu/drm/i915/display/intel_display_power_well.h b/drivers/gpu/drm/i915/display/intel_display_power_well.h
index 8f5524da2d06..0ce64b894436 100644
--- a/drivers/gpu/drm/i915/display/intel_display_power_well.h
+++ b/drivers/gpu/drm/i915/display/intel_display_power_well.h
@@ -159,6 +159,7 @@ void gen9_set_dc_state(struct intel_display *display, u32 state);
void gen9_disable_dc_states(struct intel_display *display);
void bxt_enable_dc9(struct intel_display *display);
void bxt_disable_dc9(struct intel_display *display);
+void xe3lpd_enable_dc_count(struct intel_display *display);
extern const struct i915_power_well_ops i9xx_always_on_power_well_ops;
extern const struct i915_power_well_ops chv_pipe_power_well_ops;
diff --git a/drivers/gpu/drm/i915/display/intel_display_regs.h b/drivers/gpu/drm/i915/display/intel_display_regs.h
index fa56cc506e3f..b9d60ec09e4d 100644
--- a/drivers/gpu/drm/i915/display/intel_display_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_display_regs.h
@@ -3053,6 +3053,11 @@ enum skl_power_gate {
#define DC_STATE_DEBUG_MASK_CORES (1 << 0)
#define DC_STATE_DEBUG_MASK_MEMORY_UP (1 << 1)
+#define DC_COUNT_EN _MMIO(0x457B4)
+#define DC_COUNT_EN_COUNTER_ENABLE REG_BIT(31)
+
+#define DC_STATE_DC3CO_RESIDENCY _MMIO(0x457B8)
+
#define D_COMP_BDW _MMIO(0x138144)
/* Pipe WM_LINETIME - watermark line time */
diff --git a/drivers/gpu/drm/i915/display/intel_dmc.c b/drivers/gpu/drm/i915/display/intel_dmc.c
index 8b5840116f64..a85e2edcb894 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc.c
@@ -941,6 +941,9 @@ void intel_dmc_load_program(struct intel_display *display)
gen9_set_dc_state_debugmask(display);
+ if (DISPLAY_VER(display) >= 35)
+ xe3lpd_enable_dc_count(display);
+
pipedmc_clock_gating_wa(display, false);
}
--
2.43.0
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 13/13] drm/i915/display: Add DC3CO count and residency in dmc debugfs
2026-04-22 16:26 [PATCH v2 00/13] drm/i915/display: Add DC3CO support Dibin Moolakadan Subrahmanian
` (11 preceding siblings ...)
2026-04-22 16:26 ` [PATCH v2 12/13] drm/i915/display: Add helper to enable DC counter Dibin Moolakadan Subrahmanian
@ 2026-04-22 16:26 ` Dibin Moolakadan Subrahmanian
2026-04-22 22:06 ` ✓ i915.CI.BAT: success for drm/i915/display: Add DC3CO support (rev2) Patchwork
2026-04-23 4:59 ` ✗ i915.CI.Full: failure " Patchwork
14 siblings, 0 replies; 27+ messages in thread
From: Dibin Moolakadan Subrahmanian @ 2026-04-22 16:26 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: animesh.manna, uma.shankar, suresh.kumar.kurmi
Expose DC3CO count and residency for xe3lp platforms via debugfs.
Signed-off-by: Dibin Moolakadan Subrahmanian <dibin.moolakadan.subrahmanian@intel.com>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
---
drivers/gpu/drm/i915/display/intel_dmc.c | 8 +++++++-
drivers/gpu/drm/i915/display/intel_dmc_regs.h | 2 ++
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dmc.c b/drivers/gpu/drm/i915/display/intel_dmc.c
index a85e2edcb894..3cd960163d28 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc.c
@@ -1650,7 +1650,13 @@ static int intel_dmc_debugfs_status_show(struct seq_file *m, void *unused)
DMC_VERSION_MINOR(dmc->version));
if (DISPLAY_VER(display) >= 12) {
- if (display->platform.dgfx || DISPLAY_VER(display) >= 14) {
+ if (DISPLAY_VER(display) >= 35) {
+ seq_printf(m, "DC3CO count: %d\n",
+ intel_de_read(display, XE3P_DMC_DC3CO_COUNT));
+
+ seq_printf(m, "DC3CO residency: %d\n",
+ intel_de_read(display, DC_STATE_DC3CO_RESIDENCY));
+ } else if (display->platform.dgfx || DISPLAY_VER(display) >= 14) {
dc5_reg = DG1_DMC_DEBUG_DC5_COUNT;
} else {
dc5_reg = TGL_DMC_DEBUG_DC5_COUNT;
diff --git a/drivers/gpu/drm/i915/display/intel_dmc_regs.h b/drivers/gpu/drm/i915/display/intel_dmc_regs.h
index 38e342b45af0..1998549b6318 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_dmc_regs.h
@@ -531,6 +531,8 @@ enum pipedmc_event_id {
#define TGL_DMC_DEBUG3 _MMIO(0x101090)
#define DG1_DMC_DEBUG3 _MMIO(0x13415c)
+#define XE3P_DMC_DC3CO_COUNT _MMIO(0x8f05C)
+
#define DMC_WAKELOCK_CFG _MMIO(0x8F1B0)
#define DMC_WAKELOCK_CFG_ENABLE REG_BIT(31)
#define DMC_WAKELOCK1_CTL _MMIO(0x8F140)
--
2.43.0
^ permalink raw reply related [flat|nested] 27+ messages in thread
* ✓ i915.CI.BAT: success for drm/i915/display: Add DC3CO support (rev2)
2026-04-22 16:26 [PATCH v2 00/13] drm/i915/display: Add DC3CO support Dibin Moolakadan Subrahmanian
` (12 preceding siblings ...)
2026-04-22 16:26 ` [PATCH v2 13/13] drm/i915/display: Add DC3CO count and residency in dmc debugfs Dibin Moolakadan Subrahmanian
@ 2026-04-22 22:06 ` Patchwork
2026-04-23 4:59 ` ✗ i915.CI.Full: failure " Patchwork
14 siblings, 0 replies; 27+ messages in thread
From: Patchwork @ 2026-04-22 22:06 UTC (permalink / raw)
To: Dibin Moolakadan Subrahmanian; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 7222 bytes --]
== Series Details ==
Series: drm/i915/display: Add DC3CO support (rev2)
URL : https://patchwork.freedesktop.org/series/163939/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_18356 -> Patchwork_163939v2
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/index.html
Participating hosts (41 -> 40)
------------------------------
Additional (1): bat-adls-6
Missing (2): bat-dg2-13 fi-snb-2520m
Known issues
------------
Here are the changes found in Patchwork_163939v2 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@dmabuf@all-tests:
- bat-adls-6: NOTRUN -> [SKIP][1] ([i915#15931])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/bat-adls-6/igt@dmabuf@all-tests.html
* igt@gem_lmem_swapping@parallel-random-engines:
- bat-adls-6: NOTRUN -> [SKIP][2] ([i915#4613]) +3 other tests skip
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/bat-adls-6/igt@gem_lmem_swapping@parallel-random-engines.html
* igt@gem_tiled_pread_basic@basic:
- bat-adls-6: NOTRUN -> [SKIP][3] ([i915#15656])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/bat-adls-6/igt@gem_tiled_pread_basic@basic.html
* igt@i915_selftest@live@mman:
- bat-atsm-1: [PASS][4] -> [DMESG-FAIL][5] ([i915#14204])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/bat-atsm-1/igt@i915_selftest@live@mman.html
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/bat-atsm-1/igt@i915_selftest@live@mman.html
* igt@i915_selftest@live@workarounds:
- bat-dg2-14: [PASS][6] -> [DMESG-FAIL][7] ([i915#12061]) +1 other test dmesg-fail
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/bat-dg2-14/igt@i915_selftest@live@workarounds.html
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/bat-dg2-14/igt@i915_selftest@live@workarounds.html
- bat-mtlp-9: [PASS][8] -> [DMESG-FAIL][9] ([i915#12061]) +1 other test dmesg-fail
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/bat-mtlp-9/igt@i915_selftest@live@workarounds.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/bat-mtlp-9/igt@i915_selftest@live@workarounds.html
* igt@intel_hwmon@hwmon-read:
- bat-adls-6: NOTRUN -> [SKIP][10] ([i915#7707]) +1 other test skip
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/bat-adls-6/igt@intel_hwmon@hwmon-read.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
- bat-adls-6: NOTRUN -> [SKIP][11] ([i915#4103]) +1 other test skip
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/bat-adls-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
* igt@kms_dsc@dsc-basic:
- bat-adls-6: NOTRUN -> [SKIP][12] ([i915#3555] / [i915#3840])
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/bat-adls-6/igt@kms_dsc@dsc-basic.html
* igt@kms_force_connector_basic@force-load-detect:
- bat-adls-6: NOTRUN -> [SKIP][13]
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/bat-adls-6/igt@kms_force_connector_basic@force-load-detect.html
* igt@kms_pm_backlight@basic-brightness:
- bat-adls-6: NOTRUN -> [SKIP][14] ([i915#5354])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/bat-adls-6/igt@kms_pm_backlight@basic-brightness.html
* igt@kms_psr@psr-primary-mmap-gtt:
- bat-adls-6: NOTRUN -> [SKIP][15] ([i915#1072] / [i915#9732]) +3 other tests skip
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/bat-adls-6/igt@kms_psr@psr-primary-mmap-gtt.html
* igt@kms_setmode@basic-clone-single-crtc:
- bat-adls-6: NOTRUN -> [SKIP][16] ([i915#3555])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/bat-adls-6/igt@kms_setmode@basic-clone-single-crtc.html
* igt@prime_vgem@basic-fence-read:
- bat-adls-6: NOTRUN -> [SKIP][17] ([i915#3291]) +2 other tests skip
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/bat-adls-6/igt@prime_vgem@basic-fence-read.html
#### Possible fixes ####
* igt@i915_selftest@live:
- bat-mtlp-8: [DMESG-FAIL][18] ([i915#12061]) -> [PASS][19] +1 other test pass
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/bat-mtlp-8/igt@i915_selftest@live.html
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/bat-mtlp-8/igt@i915_selftest@live.html
- bat-dg2-8: [DMESG-FAIL][20] ([i915#12061]) -> [PASS][21] +1 other test pass
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/bat-dg2-8/igt@i915_selftest@live.html
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/bat-dg2-8/igt@i915_selftest@live.html
* igt@i915_selftest@live@workarounds:
- bat-arls-5: [DMESG-FAIL][22] ([i915#12061]) -> [PASS][23] +1 other test pass
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/bat-arls-5/igt@i915_selftest@live@workarounds.html
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/bat-arls-5/igt@i915_selftest@live@workarounds.html
#### Warnings ####
* igt@i915_selftest@live:
- bat-atsm-1: [DMESG-FAIL][24] ([i915#12061]) -> [DMESG-FAIL][25] ([i915#12061] / [i915#14204])
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/bat-atsm-1/igt@i915_selftest@live.html
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/bat-atsm-1/igt@i915_selftest@live.html
[i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
[i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
[i915#14204]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14204
[i915#15656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15656
[i915#15931]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15931
[i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
[i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
[i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
[i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
[i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
[i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
[i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
[i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
Build changes
-------------
* Linux: CI_DRM_18356 -> Patchwork_163939v2
CI-20190529: 20190529
CI_DRM_18356: 9917a06970fd6775b7b4259be6cca21cb4e2b165 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8870: 1aba4b364b6dbdf7926cc78501e7281d5176b029 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_163939v2: 9917a06970fd6775b7b4259be6cca21cb4e2b165 @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/index.html
[-- Attachment #2: Type: text/html, Size: 8830 bytes --]
^ permalink raw reply [flat|nested] 27+ messages in thread
* ✗ i915.CI.Full: failure for drm/i915/display: Add DC3CO support (rev2)
2026-04-22 16:26 [PATCH v2 00/13] drm/i915/display: Add DC3CO support Dibin Moolakadan Subrahmanian
` (13 preceding siblings ...)
2026-04-22 22:06 ` ✓ i915.CI.BAT: success for drm/i915/display: Add DC3CO support (rev2) Patchwork
@ 2026-04-23 4:59 ` Patchwork
14 siblings, 0 replies; 27+ messages in thread
From: Patchwork @ 2026-04-23 4:59 UTC (permalink / raw)
To: Dibin Moolakadan Subrahmanian; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 93297 bytes --]
== Series Details ==
Series: drm/i915/display: Add DC3CO support (rev2)
URL : https://patchwork.freedesktop.org/series/163939/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_18356_full -> Patchwork_163939v2_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_163939v2_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_163939v2_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 (10 -> 10)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_163939v2_full:
### IGT changes ###
#### Possible regressions ####
* igt@kms_cursor_legacy@cursor-vs-flip-toggle:
- shard-glk: [PASS][1] -> [FAIL][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-glk4/igt@kms_cursor_legacy@cursor-vs-flip-toggle.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk9/igt@kms_cursor_legacy@cursor-vs-flip-toggle.html
* igt@kms_dirtyfb@fbc-dirtyfb-ioctl:
- shard-dg1: [PASS][3] -> [FAIL][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-dg1-14/igt@kms_dirtyfb@fbc-dirtyfb-ioctl.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg1-12/igt@kms_dirtyfb@fbc-dirtyfb-ioctl.html
* igt@kms_dirtyfb@fbc-dirtyfb-ioctl@a-hdmi-a-3:
- shard-dg1: NOTRUN -> [FAIL][5]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg1-12/igt@kms_dirtyfb@fbc-dirtyfb-ioctl@a-hdmi-a-3.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-tglu: [PASS][6] -> [ABORT][7] +1 other test abort
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-tglu-8/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-9/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@d-hdmi-a1:
- shard-tglu: [PASS][8] -> [DMESG-WARN][9] +1 other test dmesg-warn
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-tglu-8/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-hdmi-a1.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-9/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-hdmi-a1.html
#### Warnings ####
* igt@kms_pm_dc@dc3co-vpb-simulation:
- shard-mtlp: [SKIP][10] ([i915#15740]) -> [SKIP][11]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-mtlp-3/igt@kms_pm_dc@dc3co-vpb-simulation.html
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-mtlp-6/igt@kms_pm_dc@dc3co-vpb-simulation.html
New tests
---------
New tests have been introduced between CI_DRM_18356_full and Patchwork_163939v2_full:
### New IGT tests (6) ###
* igt@kms_flip@2x-flip-vs-cursor-legacy:
- Statuses :
- Exec time: [None] s
* igt@kms_flip@4-tiled-32bpp-rotate-270:
- Statuses :
- Exec time: [None] s
* igt@kms_flip@bad-fd-to-handle:
- Statuses :
- Exec time: [None] s
* igt@kms_flip@crc-sprite-planes-basic-4-tiled-dg2-mc-ccs:
- Statuses :
- Exec time: [None] s
* igt@kms_flip@cursorb-vs-flipa-atomic-transitions:
- Statuses :
- Exec time: [None] s
* igt@kms_flip@semaphore:
- Statuses :
- Exec time: [None] s
Known issues
------------
Here are the changes found in Patchwork_163939v2_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@api_intel_bb@crc32:
- shard-tglu: NOTRUN -> [SKIP][12] ([i915#6230])
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-4/igt@api_intel_bb@crc32.html
* igt@device_reset@cold-reset-bound:
- shard-rkl: NOTRUN -> [SKIP][13] ([i915#11078])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@device_reset@cold-reset-bound.html
* igt@gem_ccs@block-multicopy-compressed:
- shard-rkl: NOTRUN -> [SKIP][14] ([i915#9323])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-8/igt@gem_ccs@block-multicopy-compressed.html
* igt@gem_ccs@suspend-resume@tile4-compressed-compfmt0-smem-lmem0:
- shard-dg2: NOTRUN -> [INCOMPLETE][15] ([i915#12392] / [i915#13356])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg2-3/igt@gem_ccs@suspend-resume@tile4-compressed-compfmt0-smem-lmem0.html
* igt@gem_create@create-ext-set-pat:
- shard-tglu-1: NOTRUN -> [SKIP][16] ([i915#8562])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@gem_create@create-ext-set-pat.html
* igt@gem_ctx_isolation@preservation-s3:
- shard-rkl: [PASS][17] -> [INCOMPLETE][18] ([i915#13356]) +3 other tests incomplete
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-3/igt@gem_ctx_isolation@preservation-s3.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@gem_ctx_isolation@preservation-s3.html
* igt@gem_ctx_sseu@invalid-sseu:
- shard-tglu: NOTRUN -> [SKIP][19] ([i915#280])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@gem_ctx_sseu@invalid-sseu.html
* igt@gem_exec_balancer@parallel:
- shard-rkl: NOTRUN -> [SKIP][20] ([i915#4525]) +1 other test skip
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-8/igt@gem_exec_balancer@parallel.html
* igt@gem_exec_big@single:
- shard-tglu: NOTRUN -> [FAIL][21] ([i915#15816])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@gem_exec_big@single.html
* igt@gem_exec_capture@capture-recoverable:
- shard-tglu-1: NOTRUN -> [SKIP][22] ([i915#6344])
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@gem_exec_capture@capture-recoverable.html
* igt@gem_exec_reloc@basic-gtt-wc-noreloc:
- shard-rkl: NOTRUN -> [SKIP][23] ([i915#3281]) +5 other tests skip
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-8/igt@gem_exec_reloc@basic-gtt-wc-noreloc.html
* igt@gem_lmem_swapping@massive:
- shard-tglu-1: NOTRUN -> [SKIP][24] ([i915#4613])
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@gem_lmem_swapping@massive.html
* igt@gem_lmem_swapping@smem-oom:
- shard-glk: NOTRUN -> [SKIP][25] ([i915#4613])
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk5/igt@gem_lmem_swapping@smem-oom.html
* igt@gem_lmem_swapping@verify-ccs:
- shard-rkl: NOTRUN -> [SKIP][26] ([i915#4613]) +2 other tests skip
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-8/igt@gem_lmem_swapping@verify-ccs.html
* igt@gem_lmem_swapping@verify-random:
- shard-tglu: NOTRUN -> [SKIP][27] ([i915#4613])
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@gem_lmem_swapping@verify-random.html
* igt@gem_media_vme:
- shard-tglu-1: NOTRUN -> [SKIP][28] ([i915#284])
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@gem_media_vme.html
* igt@gem_pwrite@basic-exhaustion:
- shard-glk11: NOTRUN -> [WARN][29] ([i915#14702] / [i915#2658])
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk11/igt@gem_pwrite@basic-exhaustion.html
- shard-tglu: NOTRUN -> [WARN][30] ([i915#2658])
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@gem_pwrite@basic-exhaustion.html
* igt@gem_pxp@hw-rejects-pxp-buffer:
- shard-tglu: NOTRUN -> [SKIP][31] ([i915#13398])
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@gem_pxp@hw-rejects-pxp-buffer.html
* igt@gem_set_tiling_vs_blt@untiled-to-tiled:
- shard-rkl: NOTRUN -> [SKIP][32] ([i915#8411]) +1 other test skip
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-7/igt@gem_set_tiling_vs_blt@untiled-to-tiled.html
* igt@gem_tiled_partial_pwrite_pread@writes:
- shard-dg1: NOTRUN -> [SKIP][33] ([i915#4077])
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg1-14/igt@gem_tiled_partial_pwrite_pread@writes.html
* igt@gem_tiled_pread_pwrite:
- shard-rkl: NOTRUN -> [SKIP][34] ([i915#3282]) +1 other test skip
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-7/igt@gem_tiled_pread_pwrite.html
* igt@gem_userptr_blits@readonly-unsync:
- shard-tglu-1: NOTRUN -> [SKIP][35] ([i915#3297]) +1 other test skip
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@gem_userptr_blits@readonly-unsync.html
* igt@gem_workarounds@suspend-resume:
- shard-glk: NOTRUN -> [INCOMPLETE][36] ([i915#13356] / [i915#14586])
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk4/igt@gem_workarounds@suspend-resume.html
* igt@gen7_exec_parse@oacontrol-tracking:
- shard-tglu: NOTRUN -> [SKIP][37] +36 other tests skip
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@gen7_exec_parse@oacontrol-tracking.html
* igt@gen9_exec_parse@batch-without-end:
- shard-tglu: NOTRUN -> [SKIP][38] ([i915#2527] / [i915#2856])
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-4/igt@gen9_exec_parse@batch-without-end.html
* igt@gen9_exec_parse@bb-large:
- shard-tglu-1: NOTRUN -> [SKIP][39] ([i915#2527] / [i915#2856]) +1 other test skip
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@gen9_exec_parse@bb-large.html
* igt@gen9_exec_parse@bb-oversize:
- shard-rkl: NOTRUN -> [SKIP][40] ([i915#2527]) +2 other tests skip
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-8/igt@gen9_exec_parse@bb-oversize.html
* igt@i915_module_load@resize-bar:
- shard-tglu: NOTRUN -> [SKIP][41] ([i915#6412])
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@i915_module_load@resize-bar.html
* igt@i915_pm_freq_api@freq-suspend:
- shard-tglu-1: NOTRUN -> [SKIP][42] ([i915#8399])
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@i915_pm_freq_api@freq-suspend.html
* igt@i915_pm_rc6_residency@rc6-fence:
- shard-tglu: [PASS][43] -> [WARN][44] ([i915#13790] / [i915#2681]) +1 other test warn
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-tglu-6/igt@i915_pm_rc6_residency@rc6-fence.html
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-5/igt@i915_pm_rc6_residency@rc6-fence.html
* igt@i915_pm_rpm@system-suspend-devices:
- shard-rkl: [PASS][45] -> [ABORT][46] ([i915#15060])
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@i915_pm_rpm@system-suspend-devices.html
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-1/igt@i915_pm_rpm@system-suspend-devices.html
* igt@i915_suspend@basic-s3-without-i915:
- shard-glk: NOTRUN -> [INCOMPLETE][47] ([i915#4817])
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk2/igt@i915_suspend@basic-s3-without-i915.html
* igt@i915_suspend@forcewake:
- shard-glk10: NOTRUN -> [INCOMPLETE][48] ([i915#4817])
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk10/igt@i915_suspend@forcewake.html
* igt@intel_hwmon@hwmon-read:
- shard-tglu: NOTRUN -> [SKIP][49] ([i915#7707])
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-4/igt@intel_hwmon@hwmon-read.html
* igt@kms_async_flips@alternate-sync-async-flip@pipe-a-hdmi-a-2:
- shard-glk: [PASS][50] -> [FAIL][51] ([i915#14888]) +4 other tests fail
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-glk3/igt@kms_async_flips@alternate-sync-async-flip@pipe-a-hdmi-a-2.html
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk3/igt@kms_async_flips@alternate-sync-async-flip@pipe-a-hdmi-a-2.html
* igt@kms_atomic@plane-primary-overlay-mutable-zpos:
- shard-tglu: NOTRUN -> [SKIP][52] ([i915#9531])
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html
* igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-3:
- shard-dg2: [PASS][53] -> [FAIL][54] ([i915#5956]) +1 other test fail
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-dg2-6/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-3.html
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg2-5/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-3.html
* igt@kms_big_fb@4-tiled-16bpp-rotate-0:
- shard-rkl: NOTRUN -> [SKIP][55] ([i915#5286]) +4 other tests skip
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-7/igt@kms_big_fb@4-tiled-16bpp-rotate-0.html
- shard-tglu-1: NOTRUN -> [SKIP][56] ([i915#5286]) +2 other tests skip
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_big_fb@4-tiled-16bpp-rotate-0.html
* igt@kms_big_fb@4-tiled-64bpp-rotate-180:
- shard-mtlp: [PASS][57] -> [FAIL][58] ([i915#15733] / [i915#5138])
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-mtlp-8/igt@kms_big_fb@4-tiled-64bpp-rotate-180.html
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-mtlp-2/igt@kms_big_fb@4-tiled-64bpp-rotate-180.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180:
- shard-tglu: NOTRUN -> [SKIP][59] ([i915#5286]) +1 other test skip
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180.html
* igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip:
- shard-tglu: NOTRUN -> [SKIP][60] ([i915#3828])
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip.html
* igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180-hflip:
- shard-rkl: NOTRUN -> [SKIP][61] ([i915#3828])
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-8/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180-hflip.html
* igt@kms_big_fb@x-tiled-32bpp-rotate-270:
- shard-rkl: NOTRUN -> [SKIP][62] ([i915#3638])
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html
* igt@kms_big_fb@yf-tiled-64bpp-rotate-180:
- shard-glk: NOTRUN -> [SKIP][63] +191 other tests skip
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk5/igt@kms_big_fb@yf-tiled-64bpp-rotate-180.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-rkl: NOTRUN -> [SKIP][64] +10 other tests skip
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-8/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_ccs@bad-aux-stride-y-tiled-ccs@pipe-c-hdmi-a-1:
- shard-tglu: NOTRUN -> [SKIP][65] ([i915#6095]) +34 other tests skip
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-4/igt@kms_ccs@bad-aux-stride-y-tiled-ccs@pipe-c-hdmi-a-1.html
* igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs-cc@pipe-d-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][66] ([i915#10307] / [i915#10434] / [i915#6095]) +2 other tests skip
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg2-4/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs-cc@pipe-d-hdmi-a-1.html
* igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][67] ([i915#6095]) +71 other tests skip
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-3/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2.html
* igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-c-hdmi-a-2:
- shard-glk10: NOTRUN -> [SKIP][68] +32 other tests skip
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk10/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-c-hdmi-a-2.html
* igt@kms_ccs@crc-primary-basic-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][69] ([i915#6095]) +23 other tests skip
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg2-1/igt@kms_ccs@crc-primary-basic-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-3.html
* igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs:
- shard-tglu-1: NOTRUN -> [SKIP][70] ([i915#12313]) +1 other test skip
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-primary-basic-y-tiled-gen12-mc-ccs@pipe-a-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][71] ([i915#6095]) +115 other tests skip
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg1-19/igt@kms_ccs@crc-primary-basic-y-tiled-gen12-mc-ccs@pipe-a-hdmi-a-4.html
* igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-mc-ccs@pipe-a-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][72] ([i915#10307] / [i915#6095]) +56 other tests skip
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg2-4/igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-mc-ccs@pipe-a-hdmi-a-1.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-1:
- shard-tglu-1: NOTRUN -> [SKIP][73] ([i915#6095]) +29 other tests skip
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-1.html
* igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs:
- shard-glk10: NOTRUN -> [INCOMPLETE][74] ([i915#15582]) +1 other test incomplete
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk10/igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs.html
* igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs@pipe-c-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][75] ([i915#14098] / [i915#6095]) +42 other tests skip
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-3/igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs@pipe-c-hdmi-a-2.html
* igt@kms_cdclk@mode-transition-all-outputs:
- shard-tglu: NOTRUN -> [SKIP][76] ([i915#3742])
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@kms_cdclk@mode-transition-all-outputs.html
* igt@kms_cdclk@plane-scaling@pipe-c-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][77] ([i915#13783]) +3 other tests skip
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg2-5/igt@kms_cdclk@plane-scaling@pipe-c-hdmi-a-3.html
* igt@kms_chamelium_audio@hdmi-audio-edid:
- shard-tglu: NOTRUN -> [SKIP][78] ([i915#11151] / [i915#7828]) +3 other tests skip
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-4/igt@kms_chamelium_audio@hdmi-audio-edid.html
* igt@kms_chamelium_frames@hdmi-crc-multiple:
- shard-rkl: NOTRUN -> [SKIP][79] ([i915#11151] / [i915#7828]) +6 other tests skip
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_chamelium_frames@hdmi-crc-multiple.html
* igt@kms_chamelium_hpd@vga-hpd-fast:
- shard-tglu-1: NOTRUN -> [SKIP][80] ([i915#11151] / [i915#7828]) +2 other tests skip
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_chamelium_hpd@vga-hpd-fast.html
* igt@kms_content_protection@atomic:
- shard-tglu-1: NOTRUN -> [SKIP][81] ([i915#15865]) +1 other test skip
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_content_protection@atomic.html
* igt@kms_content_protection@dp-mst-lic-type-1:
- shard-tglu: NOTRUN -> [SKIP][82] ([i915#15330] / [i915#3116] / [i915#3299]) +1 other test skip
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@kms_content_protection@dp-mst-lic-type-1.html
* igt@kms_content_protection@srm:
- shard-rkl: NOTRUN -> [SKIP][83] ([i915#15865]) +1 other test skip
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-8/igt@kms_content_protection@srm.html
* igt@kms_cursor_crc@cursor-offscreen-512x512:
- shard-rkl: NOTRUN -> [SKIP][84] ([i915#13049]) +1 other test skip
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-8/igt@kms_cursor_crc@cursor-offscreen-512x512.html
* igt@kms_cursor_crc@cursor-onscreen-512x512:
- shard-tglu-1: NOTRUN -> [SKIP][85] ([i915#13049]) +1 other test skip
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_cursor_crc@cursor-onscreen-512x512.html
* igt@kms_cursor_crc@cursor-random-256x85@pipe-a-hdmi-a-2:
- shard-rkl: NOTRUN -> [FAIL][86] ([i915#13566])
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-3/igt@kms_cursor_crc@cursor-random-256x85@pipe-a-hdmi-a-2.html
* igt@kms_cursor_crc@cursor-sliding-max-size:
- shard-tglu: NOTRUN -> [SKIP][87] ([i915#3555]) +1 other test skip
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-4/igt@kms_cursor_crc@cursor-sliding-max-size.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
- shard-glk: NOTRUN -> [FAIL][88] ([i915#15804]) +1 other test fail
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk5/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
* igt@kms_cursor_legacy@flip-vs-cursor-varying-size:
- shard-glk: [PASS][89] -> [FAIL][90] ([i915#15804])
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-glk4/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk9/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html
* igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot:
- shard-rkl: NOTRUN -> [SKIP][91] ([i915#9067])
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-7/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html
- shard-tglu-1: NOTRUN -> [SKIP][92] ([i915#9067])
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
- shard-tglu-1: NOTRUN -> [SKIP][93] ([i915#4103])
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html
* igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1:
- shard-rkl: NOTRUN -> [SKIP][94] ([i915#3804])
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1.html
* igt@kms_dp_aux_dev@basic:
- shard-tglu: NOTRUN -> [SKIP][95] ([i915#1257])
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-4/igt@kms_dp_aux_dev@basic.html
* igt@kms_dsc@dsc-fractional-bpp:
- shard-tglu: NOTRUN -> [SKIP][96] ([i915#3840])
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@kms_dsc@dsc-fractional-bpp.html
* igt@kms_dsc@dsc-fractional-bpp-with-bpc:
- shard-tglu-1: NOTRUN -> [SKIP][97] ([i915#3840])
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html
* igt@kms_fbcon_fbt@fbc-suspend:
- shard-glk: NOTRUN -> [INCOMPLETE][98] ([i915#9878])
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk5/igt@kms_fbcon_fbt@fbc-suspend.html
* igt@kms_fbcon_fbt@psr:
- shard-tglu-1: NOTRUN -> [SKIP][99] ([i915#3469])
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_fbcon_fbt@psr.html
* igt@kms_feature_discovery@chamelium:
- shard-tglu: NOTRUN -> [SKIP][100] ([i915#2065] / [i915#4854])
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-4/igt@kms_feature_discovery@chamelium.html
* igt@kms_feature_discovery@dp-mst:
- shard-tglu-1: NOTRUN -> [SKIP][101] ([i915#9337])
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_feature_discovery@dp-mst.html
* igt@kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible:
- shard-tglu-1: NOTRUN -> [SKIP][102] ([i915#3637] / [i915#9934]) +1 other test skip
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible.html
* igt@kms_flip@2x-flip-vs-fences-interruptible:
- shard-rkl: NOTRUN -> [SKIP][103] ([i915#9934]) +1 other test skip
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-8/igt@kms_flip@2x-flip-vs-fences-interruptible.html
* igt@kms_flip@2x-plain-flip-interruptible:
- shard-tglu: NOTRUN -> [SKIP][104] ([i915#3637] / [i915#9934]) +3 other tests skip
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@kms_flip@2x-plain-flip-interruptible.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling:
- shard-tglu: NOTRUN -> [SKIP][105] ([i915#15643]) +2 other tests skip
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling:
- shard-tglu-1: NOTRUN -> [SKIP][106] ([i915#15643]) +3 other tests skip
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
- shard-rkl: NOTRUN -> [SKIP][107] ([i915#15643]) +2 other tests skip
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-8/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-gtt:
- shard-rkl: NOTRUN -> [SKIP][108] ([i915#1825]) +24 other tests skip
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-8/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary:
- shard-dg1: [PASS][109] -> [DMESG-WARN][110] ([i915#4423]) +1 other test dmesg-warn
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-dg1-14/igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary.html
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg1-15/igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary.html
* igt@kms_frontbuffer_tracking@fbc-suspend:
- shard-glk: NOTRUN -> [INCOMPLETE][111] ([i915#10056])
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk6/igt@kms_frontbuffer_tracking@fbc-suspend.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-rte:
- shard-rkl: NOTRUN -> [SKIP][112] ([i915#15102] / [i915#3023]) +11 other tests skip
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-8/igt@kms_frontbuffer_tracking@fbcpsr-1p-rte.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt:
- shard-tglu-1: NOTRUN -> [SKIP][113] +28 other tests skip
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-blt:
- shard-tglu: NOTRUN -> [SKIP][114] ([i915#15102]) +9 other tests skip
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-4/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-blt.html
* igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-mmap-wc:
- shard-rkl: NOTRUN -> [SKIP][115] ([i915#15102]) +2 other tests skip
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary:
- shard-tglu-1: NOTRUN -> [SKIP][116] ([i915#15102]) +8 other tests skip
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html
* igt@kms_hdr@bpc-switch:
- shard-tglu: NOTRUN -> [SKIP][117] ([i915#3555] / [i915#8228])
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@kms_hdr@bpc-switch.html
* igt@kms_joiner@basic-force-big-joiner:
- shard-tglu: NOTRUN -> [SKIP][118] ([i915#15459])
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@kms_joiner@basic-force-big-joiner.html
* igt@kms_joiner@basic-max-non-joiner:
- shard-tglu-1: NOTRUN -> [SKIP][119] ([i915#13688])
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_joiner@basic-max-non-joiner.html
* igt@kms_joiner@basic-ultra-joiner:
- shard-tglu: NOTRUN -> [SKIP][120] ([i915#15458])
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-4/igt@kms_joiner@basic-ultra-joiner.html
* igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier-source-clamping:
- shard-tglu-1: NOTRUN -> [SKIP][121] ([i915#15709])
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier-source-clamping.html
* igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier:
- shard-tglu: NOTRUN -> [SKIP][122] ([i915#15709])
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier.html
* igt@kms_plane@pixel-format-x-tiled-modifier@pipe-a-plane-7:
- shard-tglu: NOTRUN -> [SKIP][123] ([i915#15608]) +1 other test skip
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-4/igt@kms_plane@pixel-format-x-tiled-modifier@pipe-a-plane-7.html
* igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier:
- shard-rkl: NOTRUN -> [SKIP][124] ([i915#15709]) +3 other tests skip
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-8/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier.html
* igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier@pipe-b-plane-7:
- shard-tglu-1: NOTRUN -> [SKIP][125] ([i915#15608]) +1 other test skip
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier@pipe-b-plane-7.html
* igt@kms_plane@plane-panning-bottom-right-suspend:
- shard-glk11: NOTRUN -> [INCOMPLETE][126] ([i915#13026]) +1 other test incomplete
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk11/igt@kms_plane@plane-panning-bottom-right-suspend.html
* igt@kms_plane_alpha_blend@alpha-opaque-fb:
- shard-glk11: NOTRUN -> [FAIL][127] ([i915#10647] / [i915#12169])
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk11/igt@kms_plane_alpha_blend@alpha-opaque-fb.html
* igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-hdmi-a-1:
- shard-glk11: NOTRUN -> [FAIL][128] ([i915#10647]) +1 other test fail
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk11/igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-hdmi-a-1.html
* igt@kms_plane_alpha_blend@alpha-transparent-fb:
- shard-glk: NOTRUN -> [FAIL][129] ([i915#10647] / [i915#12177])
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk3/igt@kms_plane_alpha_blend@alpha-transparent-fb.html
* igt@kms_plane_alpha_blend@alpha-transparent-fb@pipe-a-hdmi-a-1:
- shard-glk: NOTRUN -> [FAIL][130] ([i915#10647]) +1 other test fail
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk3/igt@kms_plane_alpha_blend@alpha-transparent-fb@pipe-a-hdmi-a-1.html
* igt@kms_plane_lowres@tiling-4:
- shard-tglu-1: NOTRUN -> [SKIP][131] ([i915#3555]) +2 other tests skip
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_plane_lowres@tiling-4.html
* igt@kms_plane_lowres@tiling-yf:
- shard-rkl: NOTRUN -> [SKIP][132] ([i915#3555]) +3 other tests skip
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_plane_lowres@tiling-yf.html
* igt@kms_plane_multiple@2x-tiling-none:
- shard-tglu: NOTRUN -> [SKIP][133] ([i915#13958])
[133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@kms_plane_multiple@2x-tiling-none.html
* igt@kms_plane_scaling@plane-upscale-20x20-with-rotation@pipe-c:
- shard-tglu: NOTRUN -> [SKIP][134] ([i915#15329]) +4 other tests skip
[134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@kms_plane_scaling@plane-upscale-20x20-with-rotation@pipe-c.html
* igt@kms_pm_backlight@basic-brightness:
- shard-tglu: NOTRUN -> [SKIP][135] ([i915#9812])
[135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@kms_pm_backlight@basic-brightness.html
* igt@kms_pm_backlight@fade:
- shard-rkl: NOTRUN -> [SKIP][136] ([i915#5354])
[136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-8/igt@kms_pm_backlight@fade.html
* igt@kms_pm_dc@dc9-dpms:
- shard-tglu: NOTRUN -> [SKIP][137] ([i915#15739])
[137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-4/igt@kms_pm_dc@dc9-dpms.html
* igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
- shard-rkl: NOTRUN -> [SKIP][138] ([i915#15073]) +1 other test skip
[138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
* igt@kms_pm_rpm@modeset-lpsp-stress:
- shard-dg1: [PASS][139] -> [SKIP][140] ([i915#15073]) +1 other test skip
[139]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-dg1-15/igt@kms_pm_rpm@modeset-lpsp-stress.html
[140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg1-19/igt@kms_pm_rpm@modeset-lpsp-stress.html
* igt@kms_pm_rpm@modeset-non-lpsp-stress:
- shard-rkl: [PASS][141] -> [SKIP][142] ([i915#15073]) +3 other tests skip
[141]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
[142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
* igt@kms_pm_rpm@system-suspend-modeset:
- shard-glk11: NOTRUN -> [INCOMPLETE][143] ([i915#10553])
[143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk11/igt@kms_pm_rpm@system-suspend-modeset.html
* igt@kms_prime@basic-crc-hybrid:
- shard-rkl: NOTRUN -> [SKIP][144] ([i915#6524])
[144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-7/igt@kms_prime@basic-crc-hybrid.html
- shard-tglu-1: NOTRUN -> [SKIP][145] ([i915#6524])
[145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_prime@basic-crc-hybrid.html
* igt@kms_prime@d3hot:
- shard-tglu: NOTRUN -> [SKIP][146] ([i915#6524])
[146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-4/igt@kms_prime@d3hot.html
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf:
- shard-tglu-1: NOTRUN -> [SKIP][147] ([i915#11520]) +4 other tests skip
[147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-sf:
- shard-glk10: NOTRUN -> [SKIP][148] ([i915#11520])
[148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk10/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-sf.html
* igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf:
- shard-glk11: NOTRUN -> [SKIP][149] ([i915#11520]) +1 other test skip
[149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk11/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area:
- shard-rkl: NOTRUN -> [SKIP][150] ([i915#11520]) +7 other tests skip
[150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area.html
* igt@kms_psr2_sf@psr2-overlay-primary-update-sf-dmg-area:
- shard-glk: NOTRUN -> [SKIP][151] ([i915#11520]) +2 other tests skip
[151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk4/igt@kms_psr2_sf@psr2-overlay-primary-update-sf-dmg-area.html
* igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area-big-fb:
- shard-tglu: NOTRUN -> [SKIP][152] ([i915#11520]) +3 other tests skip
[152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-4/igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area-big-fb.html
* igt@kms_psr@fbc-psr-primary-render:
- shard-glk11: NOTRUN -> [SKIP][153] +116 other tests skip
[153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk11/igt@kms_psr@fbc-psr-primary-render.html
* igt@kms_psr@pr-cursor-plane-onoff:
- shard-tglu-1: NOTRUN -> [SKIP][154] ([i915#9732]) +9 other tests skip
[154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_psr@pr-cursor-plane-onoff.html
* igt@kms_psr@psr-cursor-plane-move:
- shard-rkl: NOTRUN -> [SKIP][155] ([i915#1072] / [i915#9732]) +12 other tests skip
[155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-8/igt@kms_psr@psr-cursor-plane-move.html
* igt@kms_psr@psr2-sprite-mmap-gtt:
- shard-tglu: NOTRUN -> [SKIP][156] ([i915#9732]) +9 other tests skip
[156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-7/igt@kms_psr@psr2-sprite-mmap-gtt.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
- shard-tglu: NOTRUN -> [SKIP][157] ([i915#5289])
[157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-4/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-glk10: NOTRUN -> [FAIL][158] ([i915#10959])
[158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk10/igt@kms_tiled_display@basic-test-pattern.html
* igt@kms_vblank@ts-continuation-suspend:
- shard-glk: NOTRUN -> [INCOMPLETE][159] ([i915#12276]) +1 other test incomplete
[159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk3/igt@kms_vblank@ts-continuation-suspend.html
* igt@kms_vrr@max-min:
- shard-tglu: NOTRUN -> [SKIP][160] ([i915#9906])
[160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-4/igt@kms_vrr@max-min.html
* igt@kms_vrr@seamless-rr-switch-drrs:
- shard-rkl: NOTRUN -> [SKIP][161] ([i915#9906])
[161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-7/igt@kms_vrr@seamless-rr-switch-drrs.html
* igt@kms_vrr@seamless-rr-switch-vrr:
- shard-tglu-1: NOTRUN -> [SKIP][162] ([i915#9906]) +1 other test skip
[162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@kms_vrr@seamless-rr-switch-vrr.html
* igt@perf_pmu@rc6@other-idle-gt0:
- shard-rkl: NOTRUN -> [SKIP][163] ([i915#8516])
[163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-7/igt@perf_pmu@rc6@other-idle-gt0.html
- shard-tglu-1: NOTRUN -> [SKIP][164] ([i915#8516])
[164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@perf_pmu@rc6@other-idle-gt0.html
* igt@prime_vgem@basic-write:
- shard-rkl: NOTRUN -> [SKIP][165] ([i915#3291] / [i915#3708])
[165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@prime_vgem@basic-write.html
* igt@sriov_basic@bind-unbind-vf@vf-4:
- shard-tglu: NOTRUN -> [FAIL][166] ([i915#12910]) +9 other tests fail
[166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-4/igt@sriov_basic@bind-unbind-vf@vf-4.html
* igt@sriov_basic@enable-vfs-bind-unbind-each@numvfs-2:
- shard-tglu-1: NOTRUN -> [FAIL][167] ([i915#12910]) +8 other tests fail
[167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-tglu-1/igt@sriov_basic@enable-vfs-bind-unbind-each@numvfs-2.html
#### Possible fixes ####
* igt@gem_ccs@suspend-resume@xmajor-compressed-compfmt0-smem-lmem0:
- shard-dg2: [INCOMPLETE][168] ([i915#12392] / [i915#13356]) -> [PASS][169]
[168]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-dg2-3/igt@gem_ccs@suspend-resume@xmajor-compressed-compfmt0-smem-lmem0.html
[169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg2-3/igt@gem_ccs@suspend-resume@xmajor-compressed-compfmt0-smem-lmem0.html
* igt@gem_ctx_freq@sysfs@gt0:
- shard-dg2: [FAIL][170] ([i915#9561]) -> [PASS][171] +1 other test pass
[170]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-dg2-8/igt@gem_ctx_freq@sysfs@gt0.html
[171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg2-4/igt@gem_ctx_freq@sysfs@gt0.html
* igt@gem_exec_big@single:
- shard-mtlp: [FAIL][172] ([i915#15871]) -> [PASS][173]
[172]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-mtlp-7/igt@gem_exec_big@single.html
[173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-mtlp-4/igt@gem_exec_big@single.html
* igt@gem_exec_endless@dispatch@bcs0:
- shard-dg1: [TIMEOUT][174] ([i915#3778]) -> [PASS][175] +1 other test pass
[174]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-dg1-19/igt@gem_exec_endless@dispatch@bcs0.html
[175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg1-14/igt@gem_exec_endless@dispatch@bcs0.html
* igt@gem_exec_suspend@basic-s3:
- shard-glk: [INCOMPLETE][176] ([i915#13196] / [i915#13356]) -> [PASS][177] +1 other test pass
[176]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-glk8/igt@gem_exec_suspend@basic-s3.html
[177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk5/igt@gem_exec_suspend@basic-s3.html
* igt@gen9_exec_parse@allowed-single:
- shard-glk: [ABORT][178] ([i915#5566]) -> [PASS][179]
[178]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-glk8/igt@gen9_exec_parse@allowed-single.html
[179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-glk2/igt@gen9_exec_parse@allowed-single.html
* igt@i915_suspend@forcewake:
- shard-rkl: [INCOMPLETE][180] ([i915#4817]) -> [PASS][181]
[180]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@i915_suspend@forcewake.html
[181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@i915_suspend@forcewake.html
* igt@kms_async_flips@alternate-sync-async-flip-atomic:
- shard-dg1: [FAIL][182] ([i915#14888]) -> [PASS][183]
[182]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-dg1-15/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
[183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg1-13/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
* igt@kms_cursor_crc@cursor-sliding-128x42:
- shard-rkl: [FAIL][184] ([i915#13566]) -> [PASS][185] +1 other test pass
[184]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-8/igt@kms_cursor_crc@cursor-sliding-128x42.html
[185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-4/igt@kms_cursor_crc@cursor-sliding-128x42.html
* igt@kms_frontbuffer_tracking@fbc-indfb-scaledprimary:
- shard-dg2: [FAIL][186] ([i915#15389] / [i915#6880]) -> [PASS][187]
[186]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-dg2-7/igt@kms_frontbuffer_tracking@fbc-indfb-scaledprimary.html
[187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg2-8/igt@kms_frontbuffer_tracking@fbc-indfb-scaledprimary.html
* igt@kms_hdr@bpc-switch:
- shard-rkl: [SKIP][188] ([i915#3555] / [i915#8228]) -> [PASS][189]
[188]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-5/igt@kms_hdr@bpc-switch.html
[189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-1/igt@kms_hdr@bpc-switch.html
* igt@kms_pm_rpm@dpms-lpsp:
- shard-dg2: [SKIP][190] ([i915#15073]) -> [PASS][191] +2 other tests pass
[190]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-dg2-8/igt@kms_pm_rpm@dpms-lpsp.html
[191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg2-4/igt@kms_pm_rpm@dpms-lpsp.html
- shard-dg1: [SKIP][192] ([i915#15073]) -> [PASS][193] +2 other tests pass
[192]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-dg1-19/igt@kms_pm_rpm@dpms-lpsp.html
[193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg1-14/igt@kms_pm_rpm@dpms-lpsp.html
* igt@kms_pm_rpm@i2c:
- shard-dg1: [DMESG-WARN][194] ([i915#4423]) -> [PASS][195] +2 other tests pass
[194]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-dg1-16/igt@kms_pm_rpm@i2c.html
[195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg1-17/igt@kms_pm_rpm@i2c.html
* igt@kms_pm_rpm@modeset-non-lpsp:
- shard-rkl: [SKIP][196] ([i915#15073]) -> [PASS][197]
[196]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-8/igt@kms_pm_rpm@modeset-non-lpsp.html
[197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-4/igt@kms_pm_rpm@modeset-non-lpsp.html
* igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-2:
- shard-rkl: [INCOMPLETE][198] ([i915#12276]) -> [PASS][199] +1 other test pass
[198]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-2.html
[199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-7/igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-2.html
* igt@perf@blocking:
- shard-mtlp: [FAIL][200] ([i915#10538]) -> [PASS][201] +1 other test pass
[200]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-mtlp-6/igt@perf@blocking.html
[201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-mtlp-5/igt@perf@blocking.html
#### Warnings ####
* igt@device_reset@unbind-cold-reset-rebind:
- shard-rkl: [SKIP][202] ([i915#11078] / [i915#14544]) -> [SKIP][203] ([i915#11078])
[202]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@device_reset@unbind-cold-reset-rebind.html
[203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@device_reset@unbind-cold-reset-rebind.html
* igt@gem_bad_reloc@negative-reloc:
- shard-rkl: [SKIP][204] ([i915#14544] / [i915#3281]) -> [SKIP][205] ([i915#3281]) +1 other test skip
[204]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@gem_bad_reloc@negative-reloc.html
[205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@gem_bad_reloc@negative-reloc.html
* igt@gem_ccs@block-copy-compressed:
- shard-rkl: [SKIP][206] ([i915#14544] / [i915#3555] / [i915#9323]) -> [SKIP][207] ([i915#3555] / [i915#9323])
[206]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@gem_ccs@block-copy-compressed.html
[207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@gem_ccs@block-copy-compressed.html
* igt@gem_ccs@suspend-resume:
- shard-rkl: [SKIP][208] ([i915#14544] / [i915#9323]) -> [SKIP][209] ([i915#9323])
[208]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@gem_ccs@suspend-resume.html
[209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@gem_ccs@suspend-resume.html
* igt@gem_close_race@multigpu-basic-threads:
- shard-rkl: [SKIP][210] ([i915#7697]) -> [SKIP][211] ([i915#14544] / [i915#7697])
[210]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@gem_close_race@multigpu-basic-threads.html
[211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@gem_close_race@multigpu-basic-threads.html
* igt@gem_create@create-ext-set-pat:
- shard-rkl: [SKIP][212] ([i915#8562]) -> [SKIP][213] ([i915#14544] / [i915#8562])
[212]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-3/igt@gem_create@create-ext-set-pat.html
[213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@gem_create@create-ext-set-pat.html
* igt@gem_exec_balancer@parallel-balancer:
- shard-rkl: [SKIP][214] ([i915#14544] / [i915#4525]) -> [SKIP][215] ([i915#4525]) +1 other test skip
[214]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@gem_exec_balancer@parallel-balancer.html
[215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@gem_exec_balancer@parallel-balancer.html
* igt@gem_exec_balancer@parallel-ordering:
- shard-rkl: [SKIP][216] ([i915#4525]) -> [SKIP][217] ([i915#14544] / [i915#4525])
[216]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@gem_exec_balancer@parallel-ordering.html
[217]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@gem_exec_balancer@parallel-ordering.html
* igt@gem_exec_reloc@basic-cpu-read-active:
- shard-rkl: [SKIP][218] ([i915#3281]) -> [SKIP][219] ([i915#14544] / [i915#3281]) +3 other tests skip
[218]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-3/igt@gem_exec_reloc@basic-cpu-read-active.html
[219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@gem_exec_reloc@basic-cpu-read-active.html
* igt@gem_lmem_swapping@heavy-verify-random:
- shard-rkl: [SKIP][220] ([i915#14544] / [i915#4613]) -> [SKIP][221] ([i915#4613])
[220]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@gem_lmem_swapping@heavy-verify-random.html
[221]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@gem_lmem_swapping@heavy-verify-random.html
* igt@gem_lmem_swapping@random-engines:
- shard-rkl: [SKIP][222] ([i915#4613]) -> [SKIP][223] ([i915#14544] / [i915#4613]) +2 other tests skip
[222]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-3/igt@gem_lmem_swapping@random-engines.html
[223]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@gem_lmem_swapping@random-engines.html
* igt@gem_media_vme:
- shard-rkl: [SKIP][224] ([i915#284]) -> [SKIP][225] ([i915#14544] / [i915#284])
[224]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-3/igt@gem_media_vme.html
[225]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@gem_media_vme.html
* igt@gem_pread@uncached:
- shard-rkl: [SKIP][226] ([i915#3282]) -> [SKIP][227] ([i915#14544] / [i915#3282])
[226]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-3/igt@gem_pread@uncached.html
[227]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@gem_pread@uncached.html
* igt@gem_readwrite@read-write:
- shard-rkl: [SKIP][228] ([i915#14544] / [i915#3282]) -> [SKIP][229] ([i915#3282])
[228]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@gem_readwrite@read-write.html
[229]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@gem_readwrite@read-write.html
* igt@gem_set_tiling_vs_blt@tiled-to-untiled:
- shard-rkl: [SKIP][230] ([i915#14544] / [i915#8411]) -> [SKIP][231] ([i915#8411]) +1 other test skip
[230]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html
[231]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html
* igt@gem_tiled_pread_basic@basic:
- shard-rkl: [SKIP][232] ([i915#14544] / [i915#15656]) -> [SKIP][233] ([i915#15656])
[232]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@gem_tiled_pread_basic@basic.html
[233]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@gem_tiled_pread_basic@basic.html
* igt@gem_userptr_blits@unsync-unmap:
- shard-rkl: [SKIP][234] ([i915#14544] / [i915#3297]) -> [SKIP][235] ([i915#3297])
[234]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@gem_userptr_blits@unsync-unmap.html
[235]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@gem_userptr_blits@unsync-unmap.html
* igt@gen9_exec_parse@bb-secure:
- shard-rkl: [SKIP][236] ([i915#2527]) -> [SKIP][237] ([i915#14544] / [i915#2527]) +2 other tests skip
[236]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-3/igt@gen9_exec_parse@bb-secure.html
[237]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@gen9_exec_parse@bb-secure.html
* igt@gen9_exec_parse@bb-start-far:
- shard-rkl: [SKIP][238] ([i915#14544] / [i915#2527]) -> [SKIP][239] ([i915#2527]) +1 other test skip
[238]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@gen9_exec_parse@bb-start-far.html
[239]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@gen9_exec_parse@bb-start-far.html
* igt@i915_pm_freq_api@freq-basic-api:
- shard-rkl: [SKIP][240] ([i915#8399]) -> [SKIP][241] ([i915#14544] / [i915#8399]) +1 other test skip
[240]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@i915_pm_freq_api@freq-basic-api.html
[241]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@i915_pm_freq_api@freq-basic-api.html
* igt@i915_power@sanity:
- shard-rkl: [SKIP][242] ([i915#7984]) -> [SKIP][243] ([i915#14544] / [i915#7984])
[242]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-3/igt@i915_power@sanity.html
[243]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@i915_power@sanity.html
* igt@i915_query@test-query-geometry-subslices:
- shard-rkl: [SKIP][244] ([i915#5723]) -> [SKIP][245] ([i915#14544] / [i915#5723])
[244]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@i915_query@test-query-geometry-subslices.html
[245]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@i915_query@test-query-geometry-subslices.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip:
- shard-rkl: [SKIP][246] ([i915#14544] / [i915#5286]) -> [SKIP][247] ([i915#5286]) +1 other test skip
[246]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip.html
[247]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip.html
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
- shard-rkl: [SKIP][248] ([i915#5286]) -> [SKIP][249] ([i915#14544] / [i915#5286]) +2 other tests skip
[248]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-3/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
[249]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
* igt@kms_big_fb@linear-32bpp-rotate-90:
- shard-rkl: [SKIP][250] ([i915#3638]) -> [SKIP][251] ([i915#14544] / [i915#3638]) +1 other test skip
[250]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@kms_big_fb@linear-32bpp-rotate-90.html
[251]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_big_fb@linear-32bpp-rotate-90.html
* igt@kms_big_fb@linear-64bpp-rotate-270:
- shard-rkl: [SKIP][252] ([i915#14544] / [i915#3638]) -> [SKIP][253] ([i915#3638])
[252]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_big_fb@linear-64bpp-rotate-270.html
[253]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_big_fb@linear-64bpp-rotate-270.html
* igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip:
- shard-rkl: [SKIP][254] ([i915#14544] / [i915#3828]) -> [SKIP][255] ([i915#3828])
[254]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip.html
[255]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip.html
* igt@kms_big_fb@yf-tiled-16bpp-rotate-180:
- shard-rkl: [SKIP][256] -> [SKIP][257] ([i915#14544]) +6 other tests skip
[256]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@kms_big_fb@yf-tiled-16bpp-rotate-180.html
[257]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_big_fb@yf-tiled-16bpp-rotate-180.html
* igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs:
- shard-rkl: [SKIP][258] ([i915#12313] / [i915#14544]) -> [SKIP][259] ([i915#12313])
[258]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs.html
[259]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-7/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-mc-ccs:
- shard-rkl: [SKIP][260] ([i915#14098] / [i915#6095]) -> [SKIP][261] ([i915#14098] / [i915#14544] / [i915#6095]) +17 other tests skip
[260]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-3/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-mc-ccs.html
[261]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-mc-ccs.html
* igt@kms_ccs@crc-primary-rotation-180-y-tiled-ccs:
- shard-rkl: [SKIP][262] ([i915#14098] / [i915#14544] / [i915#6095]) -> [SKIP][263] ([i915#14098] / [i915#6095]) +5 other tests skip
[262]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_ccs@crc-primary-rotation-180-y-tiled-ccs.html
[263]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_ccs@crc-primary-rotation-180-y-tiled-ccs.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
- shard-rkl: [SKIP][264] ([i915#12805] / [i915#14544]) -> [SKIP][265] ([i915#12805])
[264]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
[265]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-2:
- shard-rkl: [SKIP][266] ([i915#14544] / [i915#6095]) -> [SKIP][267] ([i915#6095])
[266]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-2.html
[267]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-7/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-2.html
* igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-a-hdmi-a-2:
- shard-rkl: [SKIP][268] ([i915#6095]) -> [SKIP][269] ([i915#14544] / [i915#6095]) +15 other tests skip
[268]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-a-hdmi-a-2.html
[269]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-a-hdmi-a-2.html
* igt@kms_chamelium_edid@hdmi-edid-read:
- shard-rkl: [SKIP][270] ([i915#11151] / [i915#7828]) -> [SKIP][271] ([i915#11151] / [i915#14544] / [i915#7828]) +4 other tests skip
[270]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-3/igt@kms_chamelium_edid@hdmi-edid-read.html
[271]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_chamelium_edid@hdmi-edid-read.html
* igt@kms_chamelium_edid@hdmi-edid-stress-resolution-non-4k:
- shard-rkl: [SKIP][272] ([i915#11151] / [i915#14544] / [i915#7828]) -> [SKIP][273] ([i915#11151] / [i915#7828]) +3 other tests skip
[272]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_chamelium_edid@hdmi-edid-stress-resolution-non-4k.html
[273]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_chamelium_edid@hdmi-edid-stress-resolution-non-4k.html
* igt@kms_content_protection@atomic-dpms:
- shard-rkl: [SKIP][274] ([i915#14544] / [i915#15865]) -> [SKIP][275] ([i915#15865])
[274]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_content_protection@atomic-dpms.html
[275]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_content_protection@atomic-dpms.html
* igt@kms_content_protection@content-type-change:
- shard-rkl: [SKIP][276] ([i915#15865]) -> [SKIP][277] ([i915#14544] / [i915#15865])
[276]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@kms_content_protection@content-type-change.html
[277]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_content_protection@content-type-change.html
* igt@kms_content_protection@dp-mst-lic-type-0:
- shard-rkl: [SKIP][278] ([i915#15330] / [i915#3116]) -> [SKIP][279] ([i915#14544] / [i915#15330] / [i915#3116])
[278]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-3/igt@kms_content_protection@dp-mst-lic-type-0.html
[279]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_content_protection@dp-mst-lic-type-0.html
* igt@kms_content_protection@mei-interface:
- shard-dg1: [SKIP][280] ([i915#15865]) -> [SKIP][281] ([i915#9433])
[280]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-dg1-14/igt@kms_content_protection@mei-interface.html
[281]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg1-12/igt@kms_content_protection@mei-interface.html
* igt@kms_content_protection@uevent:
- shard-dg1: [SKIP][282] ([i915#15865]) -> [SKIP][283] ([i915#15865] / [i915#4423])
[282]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-dg1-17/igt@kms_content_protection@uevent.html
[283]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg1-18/igt@kms_content_protection@uevent.html
* igt@kms_cursor_crc@cursor-random-512x170:
- shard-rkl: [SKIP][284] ([i915#13049]) -> [SKIP][285] ([i915#13049] / [i915#14544])
[284]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@kms_cursor_crc@cursor-random-512x170.html
[285]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_cursor_crc@cursor-random-512x170.html
* igt@kms_cursor_crc@cursor-sliding-32x10:
- shard-rkl: [SKIP][286] ([i915#3555]) -> [SKIP][287] ([i915#14544] / [i915#3555]) +2 other tests skip
[286]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@kms_cursor_crc@cursor-sliding-32x10.html
[287]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_cursor_crc@cursor-sliding-32x10.html
* igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy:
- shard-rkl: [SKIP][288] ([i915#14544]) -> [SKIP][289] +6 other tests skip
[288]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html
[289]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html
* igt@kms_display_modes@extended-mode-basic:
- shard-rkl: [SKIP][290] ([i915#13691]) -> [SKIP][291] ([i915#13691] / [i915#14544])
[290]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-3/igt@kms_display_modes@extended-mode-basic.html
[291]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_display_modes@extended-mode-basic.html
* igt@kms_dp_link_training@non-uhbr-mst:
- shard-rkl: [SKIP][292] ([i915#13749] / [i915#14544]) -> [SKIP][293] ([i915#13749])
[292]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_dp_link_training@non-uhbr-mst.html
[293]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_dp_link_training@non-uhbr-mst.html
* igt@kms_dsc@dsc-fractional-bpp-with-bpc:
- shard-rkl: [SKIP][294] ([i915#14544] / [i915#3840]) -> [SKIP][295] ([i915#3840])
[294]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html
[295]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-7/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html
* igt@kms_dsc@dsc-with-bpc-formats:
- shard-rkl: [SKIP][296] ([i915#3555] / [i915#3840]) -> [SKIP][297] ([i915#14544] / [i915#3555] / [i915#3840])
[296]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@kms_dsc@dsc-with-bpc-formats.html
[297]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_dsc@dsc-with-bpc-formats.html
* igt@kms_fbcon_fbt@fbc-suspend:
- shard-rkl: [ABORT][298] ([i915#15132]) -> [INCOMPLETE][299] ([i915#9878])
[298]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-1/igt@kms_fbcon_fbt@fbc-suspend.html
[299]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-3/igt@kms_fbcon_fbt@fbc-suspend.html
* igt@kms_fbcon_fbt@psr-suspend:
- shard-rkl: [SKIP][300] ([i915#3955]) -> [SKIP][301] ([i915#14544] / [i915#3955]) +1 other test skip
[300]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@kms_fbcon_fbt@psr-suspend.html
[301]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_fbcon_fbt@psr-suspend.html
* igt@kms_flip@2x-blocking-wf_vblank:
- shard-rkl: [SKIP][302] ([i915#9934]) -> [SKIP][303] ([i915#14544] / [i915#9934]) +2 other tests skip
[302]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@kms_flip@2x-blocking-wf_vblank.html
[303]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_flip@2x-blocking-wf_vblank.html
* igt@kms_flip@2x-dpms-vs-vblank-race-interruptible:
- shard-rkl: [SKIP][304] ([i915#14544] / [i915#9934]) -> [SKIP][305] ([i915#9934])
[304]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_flip@2x-dpms-vs-vblank-race-interruptible.html
[305]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_flip@2x-dpms-vs-vblank-race-interruptible.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
- shard-rkl: [SKIP][306] ([i915#15643]) -> [SKIP][307] ([i915#14544] / [i915#15643])
[306]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-3/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html
[307]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling:
- shard-rkl: [SKIP][308] ([i915#14544] / [i915#15643]) -> [SKIP][309] ([i915#15643])
[308]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling.html
[309]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt:
- shard-rkl: [SKIP][310] ([i915#14544] / [i915#1825]) -> [SKIP][311] ([i915#1825]) +8 other tests skip
[310]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt.html
[311]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc:
- shard-rkl: [SKIP][312] ([i915#1825]) -> [SKIP][313] ([i915#14544] / [i915#1825]) +15 other tests skip
[312]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-3/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc.html
[313]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite:
- shard-dg2: [SKIP][314] ([i915#10433] / [i915#15102] / [i915#3458]) -> [SKIP][315] ([i915#15102] / [i915#3458]) +2 other tests skip
[314]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite.html
[315]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg2-1/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary:
- shard-rkl: [SKIP][316] ([i915#15102] / [i915#3023]) -> [SKIP][317] ([i915#14544] / [i915#15102] / [i915#3023]) +12 other tests skip
[316]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-3/igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary.html
[317]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary.html
* igt@kms_frontbuffer_tracking@fbcpsr-suspend:
- shard-dg2: [SKIP][318] ([i915#15102] / [i915#3458]) -> [SKIP][319] ([i915#10433] / [i915#15102] / [i915#3458]) +3 other tests skip
[318]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-dg2-8/igt@kms_frontbuffer_tracking@fbcpsr-suspend.html
[319]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-suspend.html
* igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-mmap-gtt:
- shard-rkl: [SKIP][320] ([i915#15102]) -> [SKIP][321] ([i915#14544] / [i915#15102])
[320]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-mmap-gtt.html
[321]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-render:
- shard-rkl: [SKIP][322] ([i915#14544] / [i915#15102]) -> [SKIP][323] ([i915#15102])
[322]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-render.html
[323]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render:
- shard-rkl: [SKIP][324] ([i915#14544] / [i915#15102] / [i915#3023]) -> [SKIP][325] ([i915#15102] / [i915#3023]) +7 other tests skip
[324]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render.html
[325]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render.html
* igt@kms_joiner@basic-force-ultra-joiner:
- shard-rkl: [SKIP][326] ([i915#15458]) -> [SKIP][327] ([i915#14544] / [i915#15458])
[326]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@kms_joiner@basic-force-ultra-joiner.html
[327]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_joiner@basic-force-ultra-joiner.html
* igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier-source-clamping:
- shard-rkl: [SKIP][328] ([i915#15709]) -> [SKIP][329] ([i915#14544] / [i915#15709]) +1 other test skip
[328]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier-source-clamping.html
[329]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier-source-clamping.html
* igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier-source-clamping:
- shard-rkl: [SKIP][330] ([i915#14544] / [i915#15709]) -> [SKIP][331] ([i915#15709])
[330]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier-source-clamping.html
[331]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier-source-clamping.html
* igt@kms_plane_multiple@2x-tiling-y:
- shard-rkl: [SKIP][332] ([i915#13958]) -> [SKIP][333] ([i915#13958] / [i915#14544])
[332]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-3/igt@kms_plane_multiple@2x-tiling-y.html
[333]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_plane_multiple@2x-tiling-y.html
* igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b:
- shard-rkl: [SKIP][334] ([i915#15329]) -> [SKIP][335] ([i915#14544] / [i915#15329]) +3 other tests skip
[334]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b.html
[335]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b.html
* igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-c:
- shard-rkl: [SKIP][336] ([i915#14544] / [i915#15329]) -> [SKIP][337] ([i915#15329]) +3 other tests skip
[336]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-c.html
[337]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-c.html
* igt@kms_pm_backlight@fade-with-suspend:
- shard-rkl: [SKIP][338] ([i915#5354]) -> [SKIP][339] ([i915#14544] / [i915#5354])
[338]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@kms_pm_backlight@fade-with-suspend.html
[339]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_pm_backlight@fade-with-suspend.html
* igt@kms_pm_lpsp@kms-lpsp:
- shard-rkl: [SKIP][340] ([i915#3828]) -> [SKIP][341] ([i915#9340])
[340]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-5/igt@kms_pm_lpsp@kms-lpsp.html
[341]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-4/igt@kms_pm_lpsp@kms-lpsp.html
- shard-dg1: [SKIP][342] ([i915#9340]) -> [SKIP][343] ([i915#3828])
[342]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-dg1-13/igt@kms_pm_lpsp@kms-lpsp.html
[343]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-dg1-15/igt@kms_pm_lpsp@kms-lpsp.html
* igt@kms_pm_rpm@package-g7:
- shard-rkl: [SKIP][344] ([i915#15403]) -> [SKIP][345] ([i915#14544] / [i915#15403])
[344]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@kms_pm_rpm@package-g7.html
[345]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_pm_rpm@package-g7.html
* igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-exceed-sf:
- shard-rkl: [SKIP][346] ([i915#11520]) -> [SKIP][347] ([i915#11520] / [i915#14544]) +2 other tests skip
[346]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-3/igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-exceed-sf.html
[347]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area:
- shard-rkl: [SKIP][348] ([i915#11520] / [i915#14544]) -> [SKIP][349] ([i915#11520])
[348]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area.html
[349]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area.html
* igt@kms_psr2_su@page_flip-nv12:
- shard-rkl: [SKIP][350] ([i915#14544] / [i915#9683]) -> [SKIP][351] ([i915#9683])
[350]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_psr2_su@page_flip-nv12.html
[351]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_psr2_su@page_flip-nv12.html
* igt@kms_psr@psr2-cursor-mmap-gtt:
- shard-rkl: [SKIP][352] ([i915#1072] / [i915#9732]) -> [SKIP][353] ([i915#1072] / [i915#14544] / [i915#9732]) +12 other tests skip
[352]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-3/igt@kms_psr@psr2-cursor-mmap-gtt.html
[353]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_psr@psr2-cursor-mmap-gtt.html
* igt@kms_psr@psr2-primary-mmap-gtt:
- shard-rkl: [SKIP][354] ([i915#1072] / [i915#14544] / [i915#9732]) -> [SKIP][355] ([i915#1072] / [i915#9732]) +5 other tests skip
[354]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-6/igt@kms_psr@psr2-primary-mmap-gtt.html
[355]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-5/igt@kms_psr@psr2-primary-mmap-gtt.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
- shard-rkl: [SKIP][356] ([i915#5289]) -> [SKIP][357] ([i915#14544] / [i915#5289])
[356]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
[357]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
* igt@kms_vrr@flipline:
- shard-rkl: [SKIP][358] ([i915#15243] / [i915#3555]) -> [SKIP][359] ([i915#14544] / [i915#15243] / [i915#3555])
[358]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@kms_vrr@flipline.html
[359]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@kms_vrr@flipline.html
* igt@perf_pmu@module-unload:
- shard-mtlp: [INCOMPLETE][360] ([i915#13520]) -> [ABORT][361] ([i915#15778])
[360]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-mtlp-4/igt@perf_pmu@module-unload.html
[361]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-mtlp-6/igt@perf_pmu@module-unload.html
* igt@prime_vgem@fence-write-hang:
- shard-rkl: [SKIP][362] ([i915#3708]) -> [SKIP][363] ([i915#14544] / [i915#3708])
[362]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@prime_vgem@fence-write-hang.html
[363]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@prime_vgem@fence-write-hang.html
* igt@sriov_basic@enable-vfs-autoprobe-off:
- shard-rkl: [SKIP][364] ([i915#9917]) -> [SKIP][365] ([i915#14544] / [i915#9917])
[364]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18356/shard-rkl-7/igt@sriov_basic@enable-vfs-autoprobe-off.html
[365]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_163939v2/shard-rkl-6/igt@sriov_basic@enable-vfs-autoprobe-off.html
[i915#10056]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10056
[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#10538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10538
[i915#10553]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10553
[i915#10647]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10647
[i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
[i915#10959]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10959
[i915#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078
[i915#11151]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11151
[i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
[i915#12169]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12169
[i915#12177]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12177
[i915#12276]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12276
[i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
[i915#12392]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12392
[i915#1257]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1257
[i915#12805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12805
[i915#12910]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12910
[i915#13026]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13026
[i915#13049]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13049
[i915#13196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13196
[i915#13356]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13356
[i915#13398]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13398
[i915#13520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13520
[i915#13566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13566
[i915#13688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13688
[i915#13691]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13691
[i915#13749]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13749
[i915#13783]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13783
[i915#13790]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13790
[i915#13958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13958
[i915#14098]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14098
[i915#14544]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14544
[i915#14586]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14586
[i915#14702]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14702
[i915#14888]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14888
[i915#15060]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15060
[i915#15073]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15073
[i915#15102]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15102
[i915#15132]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15132
[i915#15243]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15243
[i915#15329]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15329
[i915#15330]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15330
[i915#15389]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15389
[i915#15403]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15403
[i915#15458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15458
[i915#15459]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15459
[i915#15582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15582
[i915#15608]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15608
[i915#15643]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15643
[i915#15656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15656
[i915#15709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15709
[i915#15733]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15733
[i915#15739]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15739
[i915#15740]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15740
[i915#15778]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15778
[i915#15804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15804
[i915#15816]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15816
[i915#15865]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15865
[i915#15871]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15871
[i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
[i915#2065]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2065
[i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
[i915#2658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2658
[i915#2681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2681
[i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
[i915#284]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/284
[i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
[i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023
[i915#3116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3116
[i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
[i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
[i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
[i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
[i915#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299
[i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
[i915#3469]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3469
[i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
[i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
[i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
[i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
[i915#3742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3742
[i915#3778]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3778
[i915#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804
[i915#3828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3828
[i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
[i915#3955]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3955
[i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
[i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
[i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423
[i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
[i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
[i915#4817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4817
[i915#4854]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4854
[i915#5138]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5138
[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#5566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5566
[i915#5723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5723
[i915#5956]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5956
[i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
[i915#6230]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6230
[i915#6344]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6344
[i915#6412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6412
[i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
[i915#6880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6880
[i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
[i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
[i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
[i915#7984]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7984
[i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
[i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399
[i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
[i915#8516]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8516
[i915#8562]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8562
[i915#9067]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9067
[i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
[i915#9337]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9337
[i915#9340]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9340
[i915#9433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9433
[i915#9531]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9531
[i915#9561]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9561
[i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683
[i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
[i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812
[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#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934
Build changes
-------------
* Linux: CI_DRM_18356 -> Patchwork_163939v2
CI-20190529: 20190529
CI_DRM_18356: 9917a06970fd6775b7b4259be6cca21cb4e2b165 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8870: 1aba4b364b6dbdf7926cc78501e7281d5176b029 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_163939v2: 9917a06970fd6775b7b4259be6cca21cb4e2b165 @ 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_163939v2/index.html
[-- Attachment #2: Type: text/html, Size: 123635 bytes --]
^ permalink raw reply [flat|nested] 27+ messages in thread
* RE: [PATCH v2 06/13] drm/i915/display: Add HAS_DC3CO() macro
2026-04-22 16:26 ` [PATCH v2 06/13] drm/i915/display: Add HAS_DC3CO() macro Dibin Moolakadan Subrahmanian
@ 2026-04-27 3:00 ` Shankar, Uma
0 siblings, 0 replies; 27+ messages in thread
From: Shankar, Uma @ 2026-04-27 3:00 UTC (permalink / raw)
To: Dibin Moolakadan Subrahmanian, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: Manna, Animesh, Kurmi, Suresh Kumar
> -----Original Message-----
> From: Dibin Moolakadan Subrahmanian
> <dibin.moolakadan.subrahmanian@intel.com>
> Sent: Wednesday, April 22, 2026 9:56 PM
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: Manna, Animesh <animesh.manna@intel.com>; Shankar, Uma
> <uma.shankar@intel.com>; Kurmi, Suresh Kumar
> <suresh.kumar.kurmi@intel.com>
> Subject: [PATCH v2 06/13] drm/i915/display: Add HAS_DC3CO() macro
>
> Add HAS_DC3CO() to identify platforms supporting DC3CO.
> DC3CO is supported from display version 35 onwards.
Looks Good to me.
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
> BSpec: 75253
> Signed-off-by: Dibin Moolakadan Subrahmanian
> <dibin.moolakadan.subrahmanian@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display_device.h | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h
> b/drivers/gpu/drm/i915/display/intel_display_device.h
> index 074e3ba8fb77..7fd994d92ba9 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_device.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_device.h
> @@ -159,6 +159,7 @@ struct intel_display_platforms {
> #define HAS_CUR_FBC(__display) (!HAS_GMCH(__display) &&
> IS_DISPLAY_VER(__display, 7, 13))
> #define HAS_D12_PLANE_MINIMIZATION(__display) ((__display)-
> >platform.rocketlake || (__display)->platform.alderlake_s)
> #define HAS_DBUF_OVERLAP_DETECTION(__display)
> (DISPLAY_RUNTIME_INFO(__display)->has_dbuf_overlap_detection)
> +#define HAS_DC3CO(__display) (DISPLAY_VER(__display) >= 35)
> #define HAS_DDI(__display) (DISPLAY_INFO(__display)->has_ddi)
> #define HAS_DISPLAY(__display)
> (DISPLAY_RUNTIME_INFO(__display)->pipe_mask != 0)
> #define HAS_DMC(__display) (DISPLAY_RUNTIME_INFO(__display)-
> >has_dmc)
> --
> 2.43.0
^ permalink raw reply [flat|nested] 27+ messages in thread
* RE: [PATCH v2 07/13] drm/i915/display: Add DC3CO eligibility computation
2026-04-22 16:26 ` [PATCH v2 07/13] drm/i915/display: Add DC3CO eligibility computation Dibin Moolakadan Subrahmanian
@ 2026-04-27 3:10 ` Shankar, Uma
2026-04-27 6:06 ` Dibin Moolakadan Subrahmanian
2026-04-29 5:42 ` Manna, Animesh
1 sibling, 1 reply; 27+ messages in thread
From: Shankar, Uma @ 2026-04-27 3:10 UTC (permalink / raw)
To: Dibin Moolakadan Subrahmanian, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: Manna, Animesh, Kurmi, Suresh Kumar
> -----Original Message-----
> From: Dibin Moolakadan Subrahmanian
> <dibin.moolakadan.subrahmanian@intel.com>
> Sent: Wednesday, April 22, 2026 9:56 PM
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: Manna, Animesh <animesh.manna@intel.com>; Shankar, Uma
> <uma.shankar@intel.com>; Kurmi, Suresh Kumar
> <suresh.kumar.kurmi@intel.com>
> Subject: [PATCH v2 07/13] drm/i915/display: Add DC3CO eligibility computation
>
> Compute DC3CO eligibility during atomic_check based on pipe/port constraints
> and runtime triggers and store result in display->power.dc3co.
>
> When DC3CO is allowed, request DC_STATE_EN_UPTO_DC3CO and reduce the
> DC entry delay. Otherwise, retain the existing delay and set default
> DC_STATE_EN_UPTO_DC6 .
>
> Changes in v2:
> - Move dc3co state from intel_atomic_state to display->power (Uma Shankar)
> - Use #define bitmasks instead of enum for DC3CO triggers (Jani Nikula)
>
> BSpec: 75253
> Signed-off-by: Dibin Moolakadan Subrahmanian
> <dibin.moolakadan.subrahmanian@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 92 ++++++++++++++++++-
> drivers/gpu/drm/i915/display/intel_display.h | 1 -
> .../gpu/drm/i915/display/intel_display_core.h | 3 +-
> .../drm/i915/display/intel_display_power.c | 30 ++++++
> .../drm/i915/display/intel_display_power.h | 22 +++++
> 5 files changed, 141 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index 674a4ece6d0f..de493d04a622 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -5870,6 +5870,69 @@ static bool intel_pipes_need_modeset(struct
> intel_atomic_state *state,
> return false;
> }
>
> +static bool intel_dc3co_port_pipe_compatible(struct intel_dp *intel_dp,
> + const struct intel_crtc_state
> *crtc_state) {
> + struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
> + enum pipe pipe = to_intel_crtc(crtc_state->uapi.crtc)->pipe;
> + enum port port = dig_port->base.port;
> + int num_pipes = intel_crtc_num_joined_pipes(crtc_state);
> +
> + return num_pipes == 1 && pipe <= PIPE_B && port <= PORT_B; }
> +
> +static void intel_dc3co_compute_state(struct intel_atomic_state *state)
> +{
> + struct intel_display *display = to_intel_display(state);
> + struct intel_crtc *crtc;
> + struct intel_crtc_state *crtc_state;
> + struct intel_encoder *encoder;
> + struct intel_dp *intel_dp;
> + int active_pipes = 0;
> + u32 trigger = DC3CO_TRIGGER_NONE;
> +
> + if (!HAS_DC3CO(display))
> + return;
> +
> + for_each_intel_crtc(display->drm, crtc) {
> + trigger = DC3CO_TRIGGER_NONE;
> + crtc_state = intel_atomic_get_new_crtc_state(state, crtc);
> + if (!crtc_state)
> + crtc_state = intel_atomic_get_old_crtc_state(state, crtc);
> +
> + if (!crtc_state || !crtc_state->hw.active)
> + continue;
> +
> + active_pipes++;
> +
> + if (active_pipes > 1)
> + goto done;
> +
> + for_each_intel_encoder_mask(display->drm, encoder,
> + crtc_state->uapi.encoder_mask) {
> + if (encoder->type != INTEL_OUTPUT_EDP)
> + goto done;
> +
> + intel_dp = enc_to_intel_dp(encoder);
> +
> + if (!intel_dc3co_port_pipe_compatible(intel_dp,
> crtc_state))
> + goto done;
> + }
> +
> + if (crtc_state->has_lobf)
> + trigger |= DC3CO_TRIGGER_LOBF;
> + if (crtc_state->has_panel_replay)
> + trigger |= DC3CO_TRIGGER_PANEL_REPLAY;
> + if (crtc_state->has_sel_update)
> + trigger |= DC3CO_TRIGGER_PSR2;
These values will get updated even if active pipe count is 2. Please check once.
With this fixed,
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
Note: Would be good to get feedback from Imre as well.
> + }
> +
> +done:
> + intel_display_power_dc3co_update(display, !!trigger, trigger);
> + drm_dbg_kms(display->drm, "DC3CO allowed=%d trigger=0x%x\n",
> + !!trigger, trigger);
> +}
> +
> static int intel_atomic_check_joiner(struct intel_atomic_state *state,
> struct intel_crtc *primary_crtc) { @@ -6544,6
> +6607,7 @@ int intel_atomic_check(struct drm_device *dev,
> if (ret)
> goto fail;
>
> + intel_dc3co_compute_state(state);
> for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state,
> new_crtc_state, i) {
> intel_color_assert_luts(new_crtc_state);
> @@ -7415,6 +7479,7 @@ static void intel_atomic_commit_tail(struct
> intel_atomic_state *state)
> struct intel_power_domain_mask put_domains[I915_MAX_PIPES] = {};
> struct ref_tracker *wakeref = NULL;
> int i;
> + int power_async_delay;
>
> for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i)
> intel_atomic_dsb_prepare(state, crtc); @@ -7621,11 +7686,28
> @@ static void intel_atomic_commit_tail(struct intel_atomic_state *state)
> */
> intel_uncore_arm_unclaimed_mmio_detection(uncore);
> }
> - /*
> - * Delay re-enabling DC states by 17 ms to avoid the off->on->off
> - * toggling overhead at and above 60 FPS.
> - */
> - intel_display_power_put_async_delay(display,
> POWER_DOMAIN_DC_OFF, wakeref, 17);
> +
> + if (intel_display_power_dc3co_allowed(display) &&
> + intel_display_power_dc3co_supported(display)) {
> + intel_display_power_set_target_dc_state(display,
> DC_STATE_EN_UPTO_DC3CO);
> + /*
> + * Use minimal re-enable delay to allow DC3CO entry on
> + * the next idle frame, unlike the 17ms guard needed to
> + * prevent DC5/DC6 toggling overhead at 60+ FPS.
> + */
> + power_async_delay = 1;
> + } else {
> + /*
> + * Delay re-enabling DC states by 17 ms to avoid the off->on->off
> + * toggling overhead at and above 60 FPS.
> + */
> + intel_display_power_set_target_dc_state(display,
> DC_STATE_EN_UPTO_DC6);
> + power_async_delay = 17;
> + }
> +
> + intel_display_power_put_async_delay(display,
> + POWER_DOMAIN_DC_OFF, wakeref,
> power_async_delay);
> +
> intel_display_rpm_put(display, state->wakeref);
>
> /*
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h
> b/drivers/gpu/drm/i915/display/intel_display.h
> index 1e76a455d7c4..2795e4b9e799 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -521,5 +521,4 @@ bool assert_port_valid(struct intel_display *display, enum
> port port);
>
> bool intel_scanout_needs_vtd_wa(struct intel_display *display); int
> intel_crtc_num_joined_pipes(const struct intel_crtc_state *crtc_state);
> -
> #endif
> diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h
> b/drivers/gpu/drm/i915/display/intel_display_core.h
> index c5a07090cba6..13e9b986b6fc 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_core.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
> @@ -535,7 +535,8 @@ struct intel_display {
>
> struct {
> struct i915_power_domains domains;
> -
> + /* DC3CO eligibility state */
> + struct intel_dc3co_state dc3co;
> /* Shadow for DISPLAY_PHY_CONTROL which can't be safely
> read */
> u32 chv_phy_control;
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c
> b/drivers/gpu/drm/i915/display/intel_display_power.c
> index f626803bbd88..ff1915be59c9 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_power.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
> @@ -372,6 +372,35 @@ bool intel_display_power_dc3co_supported(struct
> intel_display *display)
> return (power_domains->allowed_dc_mask &
> DC_STATE_EN_UPTO_DC3CO) == DC_STATE_EN_UPTO_DC3CO; }
>
> +void intel_display_power_dc3co_update(struct intel_display *display,
> + bool allowed, u32 trigger)
> +{
> + struct intel_dc3co_state *dc3co = &display->power.dc3co;
> +
> + if (!HAS_DC3CO(display))
> + return;
> +
> + mutex_lock(&dc3co->lock);
> + dc3co->allowed = allowed;
> + dc3co->trigger = trigger;
> + mutex_unlock(&dc3co->lock);
> +}
> +
> +bool intel_display_power_dc3co_allowed(struct intel_display *display) {
> + struct intel_dc3co_state *dc3co = &display->power.dc3co;
> + bool allowed;
> +
> + if (!HAS_DC3CO(display))
> + return false;
> +
> + mutex_lock(&dc3co->lock);
> + allowed = dc3co->allowed;
> + mutex_unlock(&dc3co->lock);
> +
> + return allowed;
> +}
> +
> static void __async_put_domains_mask(struct i915_power_domains
> *power_domains,
> struct intel_power_domain_mask *mask) {
> @@ -1051,6 +1080,7 @@ int intel_power_domains_init(struct intel_display
> *display)
> sanitize_target_dc_state(display, DC_STATE_EN_UPTO_DC6);
>
> mutex_init(&power_domains->lock);
> + mutex_init(&display->power.dc3co.lock);
>
> INIT_DELAYED_WORK(&power_domains->async_put_work,
> intel_display_power_put_async_work);
> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.h
> b/drivers/gpu/drm/i915/display/intel_display_power.h
> index 05880e9da89f..0b1a06f88ae5 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_power.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_power.h
> @@ -131,6 +131,25 @@ struct intel_power_domain_mask {
> DECLARE_BITMAP(bits, POWER_DOMAIN_NUM); };
>
> +/*
> + * DC3CO enabling triggers (bitmask).
> + * DC3CO may be enabled when at least one of these triggers is active.
> + * Additional constraints may still apply.
> + */
> +#define DC3CO_TRIGGER_NONE (0)
> +#define DC3CO_TRIGGER_PSR2 BIT(0)
> +#define DC3CO_TRIGGER_LOBF BIT(1)
> +#define DC3CO_TRIGGER_PANEL_REPLAY BIT(2)
> +#define DC3CO_TRIGGER_ALL (DC3CO_TRIGGER_PSR2 | \
> + DC3CO_TRIGGER_LOBF | \
> + DC3CO_TRIGGER_PANEL_REPLAY)
> +
> +struct intel_dc3co_state {
> + struct mutex lock; /* Protects allowed and trigger fields */
> + bool allowed; /* DC3CO eligibility result */
> + u32 trigger; /* Bitmask of active DC3CO triggers */ };
> +
> struct i915_power_domains {
> /*
> * Power wells needed for initialization at driver init and suspend @@ -
> 187,6 +206,9 @@ void intel_display_power_set_target_dc_state(struct
> intel_display *display,
> u32 state);
> u32 intel_display_power_get_current_dc_state(struct intel_display *display); bool
> intel_display_power_dc3co_supported(struct intel_display *display);
> +void intel_display_power_dc3co_update(struct intel_display *display,
> + bool allowed, u32 trigger);
> +bool intel_display_power_dc3co_allowed(struct intel_display *display);
>
> bool intel_display_power_is_enabled(struct intel_display *display,
> enum intel_display_power_domain domain);
> --
> 2.43.0
^ permalink raw reply [flat|nested] 27+ messages in thread
* RE: [PATCH v2 08/13] drm/i915/display: Store DC3CO eligibility in PSR state
2026-04-22 16:26 ` [PATCH v2 08/13] drm/i915/display: Store DC3CO eligibility in PSR state Dibin Moolakadan Subrahmanian
@ 2026-04-27 3:11 ` Shankar, Uma
0 siblings, 0 replies; 27+ messages in thread
From: Shankar, Uma @ 2026-04-27 3:11 UTC (permalink / raw)
To: Dibin Moolakadan Subrahmanian, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: Manna, Animesh, Kurmi, Suresh Kumar
> -----Original Message-----
> From: Dibin Moolakadan Subrahmanian
> <dibin.moolakadan.subrahmanian@intel.com>
> Sent: Wednesday, April 22, 2026 9:56 PM
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: Manna, Animesh <animesh.manna@intel.com>; Shankar, Uma
> <uma.shankar@intel.com>; Kurmi, Suresh Kumar
> <suresh.kumar.kurmi@intel.com>
> Subject: [PATCH v2 08/13] drm/i915/display: Store DC3CO eligibility in PSR state
>
> Store DC3CO eligibility in intel_dp->psr during
> intel_psr_post_plane_update() so PSR configuration can take DC3CO into
> account.
>
> This will be used to control PSR2 parameters such as idle frames.
Looks Good to me.
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
> Changes in v2:
> - Use intel_display_power_dc3co_allowed(display) instead
> of intel_dc3co_allowed(state)
>
> Signed-off-by: Dibin Moolakadan Subrahmanian
> <dibin.moolakadan.subrahmanian@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display_types.h | 2 ++
> drivers/gpu/drm/i915/display/intel_psr.c | 4 ++++
> 2 files changed, 6 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index fc283cc429ec..28ab686b702a 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1769,6 +1769,8 @@ struct intel_psr {
> ktime_t last_exit;
> bool sink_not_reliable;
> bool irq_aux_error;
> + /* DC3CO eligibility used to control PSR configuration */
> + bool dc3co_eligible;
> u16 su_w_granularity;
> u16 su_y_granularity;
> bool source_panel_replay_support;
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
> b/drivers/gpu/drm/i915/display/intel_psr.c
> index 34e4a1ad609e..2e0478e3d560 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -2263,6 +2263,7 @@ static void intel_psr_disable_locked(struct intel_dp
> *intel_dp)
> intel_dp->psr.psr2_sel_fetch_cff_enabled = false;
> intel_dp->psr.active_non_psr_pipes = 0;
> intel_dp->psr.pkg_c_latency_used = 0;
> + intel_dp->psr.dc3co_eligible = false;
> }
>
> /**
> @@ -3095,6 +3096,9 @@ void intel_psr_post_plane_update(struct
> intel_atomic_state *state,
> */
> intel_dp->psr.busy_frontbuffer_bits = 0;
>
> + intel_dp->psr.dc3co_eligible =
> intel_display_power_dc3co_allowed(display) &&
> + intel_display_power_dc3co_supported(display);
> +
> mutex_unlock(&psr->lock);
> }
> }
> --
> 2.43.0
^ permalink raw reply [flat|nested] 27+ messages in thread
* RE: [PATCH v2 09/13] drm/i915/display: PSR2: Set idle_frames to 0 for DC3CO
2026-04-22 16:26 ` [PATCH v2 09/13] drm/i915/display: PSR2: Set idle_frames to 0 for DC3CO Dibin Moolakadan Subrahmanian
@ 2026-04-27 3:13 ` Shankar, Uma
0 siblings, 0 replies; 27+ messages in thread
From: Shankar, Uma @ 2026-04-27 3:13 UTC (permalink / raw)
To: Dibin Moolakadan Subrahmanian, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: Manna, Animesh, Kurmi, Suresh Kumar
> -----Original Message-----
> From: Dibin Moolakadan Subrahmanian
> <dibin.moolakadan.subrahmanian@intel.com>
> Sent: Wednesday, April 22, 2026 9:56 PM
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: Manna, Animesh <animesh.manna@intel.com>; Shankar, Uma
> <uma.shankar@intel.com>; Kurmi, Suresh Kumar
> <suresh.kumar.kurmi@intel.com>
> Subject: [PATCH v2 09/13] drm/i915/display: PSR2: Set idle_frames to 0 for
> DC3CO
>
> Force idle_frames to 0 when DC3CO is eligible.
>
> Changes in v2:
> - Extend existing Wa_16025596647 condition
> instead of adding a new if block (Uma Shankar)
Looks Good to me.
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
> BSpec: 75253
> Signed-off-by: Dibin Moolakadan Subrahmanian
> <dibin.moolakadan.subrahmanian@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_psr.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
> b/drivers/gpu/drm/i915/display/intel_psr.c
> index 2e0478e3d560..ff9ce7d2a5aa 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -1069,10 +1069,11 @@ static void hsw_activate_psr2(struct intel_dp
> *intel_dp)
> u32 psr_val = 0;
> u8 idle_frames;
>
> - /* Wa_16025596647 */
> - if ((DISPLAY_VER(display) == 20 ||
> - IS_DISPLAY_VERx100_STEP(display, 3000, STEP_A0, STEP_B0))
> &&
> - is_dc5_dc6_blocked(intel_dp) && intel_dp->psr.pkg_c_latency_used)
> + /* DC3CO / Wa_16025596647 */
> + if (intel_dp->psr.dc3co_eligible ||
> + ((DISPLAY_VER(display) == 20 ||
> + IS_DISPLAY_VERx100_STEP(display, 3000, STEP_A0, STEP_B0))
> &&
> + is_dc5_dc6_blocked(intel_dp) && intel_dp->psr.pkg_c_latency_used))
> idle_frames = 0;
> else
> idle_frames = psr_compute_idle_frames(intel_dp);
> --
> 2.43.0
^ permalink raw reply [flat|nested] 27+ messages in thread
* RE: [PATCH v2 10/13] drm/i915/display: Enable DC3CO idle protocol in ALPM
2026-04-22 16:26 ` [PATCH v2 10/13] drm/i915/display: Enable DC3CO idle protocol in ALPM Dibin Moolakadan Subrahmanian
@ 2026-04-27 3:14 ` Shankar, Uma
0 siblings, 0 replies; 27+ messages in thread
From: Shankar, Uma @ 2026-04-27 3:14 UTC (permalink / raw)
To: Dibin Moolakadan Subrahmanian, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: Manna, Animesh, Kurmi, Suresh Kumar
> -----Original Message-----
> From: Dibin Moolakadan Subrahmanian
> <dibin.moolakadan.subrahmanian@intel.com>
> Sent: Wednesday, April 22, 2026 9:56 PM
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: Manna, Animesh <animesh.manna@intel.com>; Shankar, Uma
> <uma.shankar@intel.com>; Kurmi, Suresh Kumar
> <suresh.kumar.kurmi@intel.com>
> Subject: [PATCH v2 10/13] drm/i915/display: Enable DC3CO idle protocol in ALPM
>
> Add PR_ALPM_CTL_USE_DC3CO_IDLE_PROTOCOL bit definition and set it
> when DC3CO is allowed.
Looks Good to me.
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
> Changes in v2:
> - Squash "Define DC3CO idle protocol bit in PR_ALPM_CTL"
> into this patch (Uma Shankar)
> - Use intel_display_power_dc3co_allowed(display)
> instead of intel_dc3co_allowed(state)
>
> BSpec: 75253
> Signed-off-by: Dibin Moolakadan Subrahmanian
> <dibin.moolakadan.subrahmanian@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_alpm.c | 6 ++++++
> drivers/gpu/drm/i915/display/intel_psr_regs.h | 1 +
> 2 files changed, 7 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c
> b/drivers/gpu/drm/i915/display/intel_alpm.c
> index a7350ce8e716..6394d1568b54 100644
> --- a/drivers/gpu/drm/i915/display/intel_alpm.c
> +++ b/drivers/gpu/drm/i915/display/intel_alpm.c
> @@ -389,6 +389,12 @@ static void lnl_alpm_configure(struct intel_dp *intel_dp,
> if (crtc_state->disable_as_sdp_when_pr_active)
> pr_alpm_ctl |=
> PR_ALPM_CTL_AS_SDP_TRANSMISSION_IN_ACTIVE_DISABLE;
>
> + if (intel_display_power_dc3co_allowed(display) &&
> + intel_display_power_dc3co_supported(display))
> + pr_alpm_ctl |=
> PR_ALPM_CTL_USE_DC3CO_IDLE_PROTOCOL;
> + else
> + pr_alpm_ctl &=
> ~PR_ALPM_CTL_USE_DC3CO_IDLE_PROTOCOL;
> +
> intel_de_write(display, PR_ALPM_CTL(display,
> cpu_transcoder),
> pr_alpm_ctl);
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_psr_regs.h
> b/drivers/gpu/drm/i915/display/intel_psr_regs.h
> index 8afbf5a38335..16a9e3af198d 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr_regs.h
> +++ b/drivers/gpu/drm/i915/display/intel_psr_regs.h
> @@ -268,6 +268,7 @@
>
> #define _PR_ALPM_CTL_A 0x60948
> #define PR_ALPM_CTL(dev_priv, tran) _MMIO_TRANS2(dev_priv, tran,
> _PR_ALPM_CTL_A)
> +#define PR_ALPM_CTL_USE_DC3CO_IDLE_PROTOCOL
> BIT(7)
> #define PR_ALPM_CTL_ALLOW_LINK_OFF_BETWEEN_AS_SDP_AND_SU
> BIT(6)
> #define PR_ALPM_CTL_RFB_UPDATE_CONTROL
> BIT(5)
> #define PR_ALPM_CTL_AS_SDP_TRANSMISSION_IN_ACTIVE_DISABLE
> BIT(4)
> --
> 2.43.0
^ permalink raw reply [flat|nested] 27+ messages in thread
* RE: [PATCH v2 11/13] drm/i915/display: PSR Add delayed work to exit DC3CO
2026-04-22 16:26 ` [PATCH v2 11/13] drm/i915/display: PSR Add delayed work to exit DC3CO Dibin Moolakadan Subrahmanian
@ 2026-04-27 3:15 ` Shankar, Uma
0 siblings, 0 replies; 27+ messages in thread
From: Shankar, Uma @ 2026-04-27 3:15 UTC (permalink / raw)
To: Dibin Moolakadan Subrahmanian, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: Manna, Animesh, Kurmi, Suresh Kumar
> -----Original Message-----
> From: Dibin Moolakadan Subrahmanian
> <dibin.moolakadan.subrahmanian@intel.com>
> Sent: Wednesday, April 22, 2026 9:56 PM
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: Manna, Animesh <animesh.manna@intel.com>; Shankar, Uma
> <uma.shankar@intel.com>; Kurmi, Suresh Kumar
> <suresh.kumar.kurmi@intel.com>
> Subject: [PATCH v2 11/13] drm/i915/display: PSR Add delayed work to exit
> DC3CO
>
> For DC3CO, idle_frames is programmed to 0, so PSR does not enter deep sleep.
> Add delayed work to schedule DC3CO exit after an idle duration derived from
> frame time (minimum equivalent of 6 frames).
>
> The work is re-armed from the PSR flush path on relevant frontbuffer activity.
> Once the display remains idle, DC3CO is disabled, idle frames are reprogrammed
> to their normal value, and DC6 is enabled to allow deeper power savings.
>
> Changes in v2:
> - Squash "PSR set idle frames while exit from DC3CO"
> into this patch (Uma Shankar)
> - Add cancel_delayed_work() in intel_psr_disable_locked()
> before clearing dc3co_eligible (Uma Shankar)
Looks Good to me.
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
> Signed-off-by: Dibin Moolakadan Subrahmanian
> <dibin.moolakadan.subrahmanian@intel.com>
> ---
> .../drm/i915/display/intel_display_types.h | 2 +
> drivers/gpu/drm/i915/display/intel_psr.c | 50 +++++++++++++++++++
> 2 files changed, 52 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 28ab686b702a..fb5c12bb5b5c 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1771,6 +1771,8 @@ struct intel_psr {
> bool irq_aux_error;
> /* DC3CO eligibility used to control PSR configuration */
> bool dc3co_eligible;
> + /* DC3CO disable work */
> + struct delayed_work dc3co_work;
> u16 su_w_granularity;
> u16 su_y_granularity;
> bool source_panel_replay_support;
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
> b/drivers/gpu/drm/i915/display/intel_psr.c
> index ff9ce7d2a5aa..36180206d3ad 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -1728,6 +1728,51 @@ static bool intel_psr_needs_wa_18037818876(struct
> intel_dp *intel_dp,
> !crtc_state->has_sel_update);
> }
>
> +static void psr2_dc3co_disable_locked(struct intel_dp *intel_dp) {
> + struct intel_display *display = to_intel_display(intel_dp);
> +
> + if (intel_dp->psr.dc3co_eligible) {
> + intel_dp->psr.dc3co_eligible = false;
> + intel_display_power_set_target_dc_state(display,
> DC_STATE_EN_UPTO_DC6);
> + psr2_program_idle_frames(intel_dp,
> psr_compute_idle_frames(intel_dp));
> + }
> +}
> +
> +static void psr2_dc3co_disable_work(struct work_struct *work) {
> + struct intel_dp *intel_dp =
> + container_of(work, typeof(*intel_dp), psr.dc3co_work.work);
> +
> + mutex_lock(&intel_dp->psr.lock);
> + psr2_dc3co_disable_locked(intel_dp);
> + mutex_unlock(&intel_dp->psr.lock);
> +}
> +
> +static void
> +psr2_dc3co_flush_locked(struct intel_dp *intel_dp, unsigned int frontbuffer_bits,
> + enum fb_op_origin origin)
> +{
> + struct intel_display *display = to_intel_display(intel_dp);
> +
> + if (!intel_dp->psr.dc3co_eligible)
> + return;
> +
> + if (!intel_dp->psr.sel_update_enabled ||
> + !intel_dp->psr.active)
> + return;
> + /*
> + * At every frontbuffer flush flip event modified delay of delayed work,
> + * when delayed work schedules that means display has been idle.
> + */
> + if (!(frontbuffer_bits &
> + INTEL_FRONTBUFFER_ALL_MASK(intel_dp->psr.pipe)))
> + return;
> +
> + mod_delayed_work(display->wq.unordered, &intel_dp->psr.dc3co_work,
> + intel_dp->psr.dc3co_exit_delay);
> +}
> +
> static
> void intel_psr_set_non_psr_pipes(struct intel_dp *intel_dp,
> struct intel_crtc_state *crtc_state) @@ -2264,6
> +2309,7 @@ static void intel_psr_disable_locked(struct intel_dp *intel_dp)
> intel_dp->psr.psr2_sel_fetch_cff_enabled = false;
> intel_dp->psr.active_non_psr_pipes = 0;
> intel_dp->psr.pkg_c_latency_used = 0;
> + cancel_delayed_work(&intel_dp->psr.dc3co_work);
> intel_dp->psr.dc3co_eligible = false;
> }
>
> @@ -2294,6 +2340,7 @@ void intel_psr_disable(struct intel_dp *intel_dp,
>
> mutex_unlock(&intel_dp->psr.lock);
> cancel_work_sync(&intel_dp->psr.work);
> + cancel_delayed_work_sync(&intel_dp->psr.dc3co_work);
> }
>
> /**
> @@ -2324,6 +2371,7 @@ void intel_psr_pause(struct intel_dp *intel_dp)
> mutex_unlock(&psr->lock);
>
> cancel_work_sync(&psr->work);
> + cancel_delayed_work_sync(&psr->dc3co_work);
> }
>
> /**
> @@ -3558,6 +3606,7 @@ void intel_psr_flush(struct intel_display *display,
> if (origin == ORIGIN_FLIP ||
> (origin == ORIGIN_CURSOR_UPDATE &&
> !intel_dp->psr.psr2_sel_fetch_enabled)) {
> + psr2_dc3co_flush_locked(intel_dp, frontbuffer_bits,
> origin);
> goto unlock;
> }
>
> @@ -3616,6 +3665,7 @@ void intel_psr_init(struct intel_dp *intel_dp)
> intel_dp->psr.link_standby = connector->panel.vbt.psr.full_link;
>
> INIT_WORK(&intel_dp->psr.work, intel_psr_work);
> + INIT_DELAYED_WORK(&intel_dp->psr.dc3co_work,
> psr2_dc3co_disable_work);
> mutex_init(&intel_dp->psr.lock);
> }
>
> --
> 2.43.0
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v2 07/13] drm/i915/display: Add DC3CO eligibility computation
2026-04-27 3:10 ` Shankar, Uma
@ 2026-04-27 6:06 ` Dibin Moolakadan Subrahmanian
0 siblings, 0 replies; 27+ messages in thread
From: Dibin Moolakadan Subrahmanian @ 2026-04-27 6:06 UTC (permalink / raw)
To: Shankar, Uma, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: Manna, Animesh, Kurmi, Suresh Kumar, imre.deak
On 27-04-2026 08:40, Shankar, Uma wrote:
>
>> -----Original Message-----
>> From: Dibin Moolakadan Subrahmanian
>> <dibin.moolakadan.subrahmanian@intel.com>
>> Sent: Wednesday, April 22, 2026 9:56 PM
>> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
>> Cc: Manna, Animesh <animesh.manna@intel.com>; Shankar, Uma
>> <uma.shankar@intel.com>; Kurmi, Suresh Kumar
>> <suresh.kumar.kurmi@intel.com>
>> Subject: [PATCH v2 07/13] drm/i915/display: Add DC3CO eligibility computation
>>
>> Compute DC3CO eligibility during atomic_check based on pipe/port constraints
>> and runtime triggers and store result in display->power.dc3co.
>>
>> When DC3CO is allowed, request DC_STATE_EN_UPTO_DC3CO and reduce the
>> DC entry delay. Otherwise, retain the existing delay and set default
>> DC_STATE_EN_UPTO_DC6 .
>>
>> Changes in v2:
>> - Move dc3co state from intel_atomic_state to display->power (Uma Shankar)
>> - Use #define bitmasks instead of enum for DC3CO triggers (Jani Nikula)
>>
>> BSpec: 75253
>> Signed-off-by: Dibin Moolakadan Subrahmanian
>> <dibin.moolakadan.subrahmanian@intel.com>
>> ---
>> drivers/gpu/drm/i915/display/intel_display.c | 92 ++++++++++++++++++-
>> drivers/gpu/drm/i915/display/intel_display.h | 1 -
>> .../gpu/drm/i915/display/intel_display_core.h | 3 +-
>> .../drm/i915/display/intel_display_power.c | 30 ++++++
>> .../drm/i915/display/intel_display_power.h | 22 +++++
>> 5 files changed, 141 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
>> b/drivers/gpu/drm/i915/display/intel_display.c
>> index 674a4ece6d0f..de493d04a622 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display.c
>> @@ -5870,6 +5870,69 @@ static bool intel_pipes_need_modeset(struct
>> intel_atomic_state *state,
>> return false;
>> }
>>
>> +static bool intel_dc3co_port_pipe_compatible(struct intel_dp *intel_dp,
>> + const struct intel_crtc_state
>> *crtc_state) {
>> + struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
>> + enum pipe pipe = to_intel_crtc(crtc_state->uapi.crtc)->pipe;
>> + enum port port = dig_port->base.port;
>> + int num_pipes = intel_crtc_num_joined_pipes(crtc_state);
>> +
>> + return num_pipes == 1 && pipe <= PIPE_B && port <= PORT_B; }
>> +
>> +static void intel_dc3co_compute_state(struct intel_atomic_state *state)
>> +{
>> + struct intel_display *display = to_intel_display(state);
>> + struct intel_crtc *crtc;
>> + struct intel_crtc_state *crtc_state;
>> + struct intel_encoder *encoder;
>> + struct intel_dp *intel_dp;
>> + int active_pipes = 0;
>> + u32 trigger = DC3CO_TRIGGER_NONE;
>> +
>> + if (!HAS_DC3CO(display))
>> + return;
>> +
>> + for_each_intel_crtc(display->drm, crtc) {
>> + trigger = DC3CO_TRIGGER_NONE;
>> + crtc_state = intel_atomic_get_new_crtc_state(state, crtc);
>> + if (!crtc_state)
>> + crtc_state = intel_atomic_get_old_crtc_state(state, crtc);
>> +
>> + if (!crtc_state || !crtc_state->hw.active)
>> + continue;
>> +
>> + active_pipes++;
>> +
>> + if (active_pipes > 1)
>> + goto done;
>> +
>> + for_each_intel_encoder_mask(display->drm, encoder,
>> + crtc_state->uapi.encoder_mask) {
>> + if (encoder->type != INTEL_OUTPUT_EDP)
>> + goto done;
>> +
>> + intel_dp = enc_to_intel_dp(encoder);
>> +
>> + if (!intel_dc3co_port_pipe_compatible(intel_dp,
>> crtc_state))
>> + goto done;
>> + }
>> +
>> + if (crtc_state->has_lobf)
>> + trigger |= DC3CO_TRIGGER_LOBF;
>> + if (crtc_state->has_panel_replay)
>> + trigger |= DC3CO_TRIGGER_PANEL_REPLAY;
>> + if (crtc_state->has_sel_update)
>> + trigger |= DC3CO_TRIGGER_PSR2;
> These values will get updated even if active pipe count is 2. Please check once.
trigger is initialized with DC3CO_TRIGGER_NONE at the beginning for loop.
For the second active pipe, trigger will be set to DC3CO_TRIGGER_NONE
and the loop will break before trigger update here.
>
> With this fixed,
> Reviewed-by: Uma Shankar <uma.shankar@intel.com>
>
> Note: Would be good to get feedback from Imre as well.
ok.
>
>> + }
>> +
>> +done:
>> + intel_display_power_dc3co_update(display, !!trigger, trigger);
>> + drm_dbg_kms(display->drm, "DC3CO allowed=%d trigger=0x%x\n",
>> + !!trigger, trigger);
>> +}
>> +
>> static int intel_atomic_check_joiner(struct intel_atomic_state *state,
>> struct intel_crtc *primary_crtc) { @@ -6544,6
>> +6607,7 @@ int intel_atomic_check(struct drm_device *dev,
>> if (ret)
>> goto fail;
>>
>> + intel_dc3co_compute_state(state);
>> for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state,
>> new_crtc_state, i) {
>> intel_color_assert_luts(new_crtc_state);
>> @@ -7415,6 +7479,7 @@ static void intel_atomic_commit_tail(struct
>> intel_atomic_state *state)
>> struct intel_power_domain_mask put_domains[I915_MAX_PIPES] = {};
>> struct ref_tracker *wakeref = NULL;
>> int i;
>> + int power_async_delay;
>>
>> for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i)
>> intel_atomic_dsb_prepare(state, crtc); @@ -7621,11 +7686,28
>> @@ static void intel_atomic_commit_tail(struct intel_atomic_state *state)
>> */
>> intel_uncore_arm_unclaimed_mmio_detection(uncore);
>> }
>> - /*
>> - * Delay re-enabling DC states by 17 ms to avoid the off->on->off
>> - * toggling overhead at and above 60 FPS.
>> - */
>> - intel_display_power_put_async_delay(display,
>> POWER_DOMAIN_DC_OFF, wakeref, 17);
>> +
>> + if (intel_display_power_dc3co_allowed(display) &&
>> + intel_display_power_dc3co_supported(display)) {
>> + intel_display_power_set_target_dc_state(display,
>> DC_STATE_EN_UPTO_DC3CO);
>> + /*
>> + * Use minimal re-enable delay to allow DC3CO entry on
>> + * the next idle frame, unlike the 17ms guard needed to
>> + * prevent DC5/DC6 toggling overhead at 60+ FPS.
>> + */
>> + power_async_delay = 1;
>> + } else {
>> + /*
>> + * Delay re-enabling DC states by 17 ms to avoid the off->on->off
>> + * toggling overhead at and above 60 FPS.
>> + */
>> + intel_display_power_set_target_dc_state(display,
>> DC_STATE_EN_UPTO_DC6);
>> + power_async_delay = 17;
>> + }
>> +
>> + intel_display_power_put_async_delay(display,
>> + POWER_DOMAIN_DC_OFF, wakeref,
>> power_async_delay);
>> +
>> intel_display_rpm_put(display, state->wakeref);
>>
>> /*
>> diff --git a/drivers/gpu/drm/i915/display/intel_display.h
>> b/drivers/gpu/drm/i915/display/intel_display.h
>> index 1e76a455d7c4..2795e4b9e799 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display.h
>> +++ b/drivers/gpu/drm/i915/display/intel_display.h
>> @@ -521,5 +521,4 @@ bool assert_port_valid(struct intel_display *display, enum
>> port port);
>>
>> bool intel_scanout_needs_vtd_wa(struct intel_display *display); int
>> intel_crtc_num_joined_pipes(const struct intel_crtc_state *crtc_state);
>> -
>> #endif
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h
>> b/drivers/gpu/drm/i915/display/intel_display_core.h
>> index c5a07090cba6..13e9b986b6fc 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_core.h
>> +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
>> @@ -535,7 +535,8 @@ struct intel_display {
>>
>> struct {
>> struct i915_power_domains domains;
>> -
>> + /* DC3CO eligibility state */
>> + struct intel_dc3co_state dc3co;
>> /* Shadow for DISPLAY_PHY_CONTROL which can't be safely
>> read */
>> u32 chv_phy_control;
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c
>> b/drivers/gpu/drm/i915/display/intel_display_power.c
>> index f626803bbd88..ff1915be59c9 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_power.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
>> @@ -372,6 +372,35 @@ bool intel_display_power_dc3co_supported(struct
>> intel_display *display)
>> return (power_domains->allowed_dc_mask &
>> DC_STATE_EN_UPTO_DC3CO) == DC_STATE_EN_UPTO_DC3CO; }
>>
>> +void intel_display_power_dc3co_update(struct intel_display *display,
>> + bool allowed, u32 trigger)
>> +{
>> + struct intel_dc3co_state *dc3co = &display->power.dc3co;
>> +
>> + if (!HAS_DC3CO(display))
>> + return;
>> +
>> + mutex_lock(&dc3co->lock);
>> + dc3co->allowed = allowed;
>> + dc3co->trigger = trigger;
>> + mutex_unlock(&dc3co->lock);
>> +}
>> +
>> +bool intel_display_power_dc3co_allowed(struct intel_display *display) {
>> + struct intel_dc3co_state *dc3co = &display->power.dc3co;
>> + bool allowed;
>> +
>> + if (!HAS_DC3CO(display))
>> + return false;
>> +
>> + mutex_lock(&dc3co->lock);
>> + allowed = dc3co->allowed;
>> + mutex_unlock(&dc3co->lock);
>> +
>> + return allowed;
>> +}
>> +
>> static void __async_put_domains_mask(struct i915_power_domains
>> *power_domains,
>> struct intel_power_domain_mask *mask) {
>> @@ -1051,6 +1080,7 @@ int intel_power_domains_init(struct intel_display
>> *display)
>> sanitize_target_dc_state(display, DC_STATE_EN_UPTO_DC6);
>>
>> mutex_init(&power_domains->lock);
>> + mutex_init(&display->power.dc3co.lock);
>>
>> INIT_DELAYED_WORK(&power_domains->async_put_work,
>> intel_display_power_put_async_work);
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.h
>> b/drivers/gpu/drm/i915/display/intel_display_power.h
>> index 05880e9da89f..0b1a06f88ae5 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_power.h
>> +++ b/drivers/gpu/drm/i915/display/intel_display_power.h
>> @@ -131,6 +131,25 @@ struct intel_power_domain_mask {
>> DECLARE_BITMAP(bits, POWER_DOMAIN_NUM); };
>>
>> +/*
>> + * DC3CO enabling triggers (bitmask).
>> + * DC3CO may be enabled when at least one of these triggers is active.
>> + * Additional constraints may still apply.
>> + */
>> +#define DC3CO_TRIGGER_NONE (0)
>> +#define DC3CO_TRIGGER_PSR2 BIT(0)
>> +#define DC3CO_TRIGGER_LOBF BIT(1)
>> +#define DC3CO_TRIGGER_PANEL_REPLAY BIT(2)
>> +#define DC3CO_TRIGGER_ALL (DC3CO_TRIGGER_PSR2 | \
>> + DC3CO_TRIGGER_LOBF | \
>> + DC3CO_TRIGGER_PANEL_REPLAY)
>> +
>> +struct intel_dc3co_state {
>> + struct mutex lock; /* Protects allowed and trigger fields */
>> + bool allowed; /* DC3CO eligibility result */
>> + u32 trigger; /* Bitmask of active DC3CO triggers */ };
>> +
>> struct i915_power_domains {
>> /*
>> * Power wells needed for initialization at driver init and suspend @@ -
>> 187,6 +206,9 @@ void intel_display_power_set_target_dc_state(struct
>> intel_display *display,
>> u32 state);
>> u32 intel_display_power_get_current_dc_state(struct intel_display *display); bool
>> intel_display_power_dc3co_supported(struct intel_display *display);
>> +void intel_display_power_dc3co_update(struct intel_display *display,
>> + bool allowed, u32 trigger);
>> +bool intel_display_power_dc3co_allowed(struct intel_display *display);
>>
>> bool intel_display_power_is_enabled(struct intel_display *display,
>> enum intel_display_power_domain domain);
>> --
>> 2.43.0
^ permalink raw reply [flat|nested] 27+ messages in thread
* RE: [PATCH v2 05/13] drm/i915/display: Add DC3CO support check and validate target DC state
2026-04-22 16:26 ` [PATCH v2 05/13] drm/i915/display: Add DC3CO support check and validate target DC state Dibin Moolakadan Subrahmanian
@ 2026-04-29 5:13 ` Manna, Animesh
2026-04-29 7:31 ` Dibin Moolakadan Subrahmanian
0 siblings, 1 reply; 27+ messages in thread
From: Manna, Animesh @ 2026-04-29 5:13 UTC (permalink / raw)
To: Dibin Moolakadan Subrahmanian, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: Shankar, Uma, Kurmi, Suresh Kumar
> -----Original Message-----
> From: Dibin Moolakadan Subrahmanian
> <dibin.moolakadan.subrahmanian@intel.com>
> Sent: Wednesday, April 22, 2026 9:56 PM
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: Manna, Animesh <animesh.manna@intel.com>; Shankar, Uma
> <uma.shankar@intel.com>; Kurmi, Suresh Kumar
> <suresh.kumar.kurmi@intel.com>
> Subject: [PATCH v2 05/13] drm/i915/display: Add DC3CO support check and
> validate target DC state
>
> Validate the requested target DC state against allowed_dc_mask in
> intel_display_power_set_target_dc_state() to avoid programming
> unsupported DC states.
>
> Also add intel_display_power_dc3co_supported() helper to query DC3CO
> support from allowed_dc_mask.
>
> Changes in v2:
> - Squash "Add helper to check DC3CO support" patch into this patch
>
> Signed-off-by: Dibin Moolakadan Subrahmanian
> <dibin.moolakadan.subrahmanian@intel.com>
> Reviewed-by: Uma Shankar <uma.shankar@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display_power.c | 14 ++++++++++++++
> drivers/gpu/drm/i915/display/intel_display_power.h | 1 +
> 2 files changed, 15 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c
> b/drivers/gpu/drm/i915/display/intel_display_power.c
> index 77c32492caa1..f626803bbd88 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_power.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
> @@ -302,6 +302,13 @@ void
> intel_display_power_set_target_dc_state(struct intel_display *display,
> struct i915_power_domains *power_domains = &display-
> >power.domains;
>
> mutex_lock(&power_domains->lock);
> +
> + if ((state & power_domains->allowed_dc_mask) != state) {
> + drm_dbg_kms(display->drm,
> + "Rejecting DC state 0x%x (allowed mask 0x%x)\n",
> + state, power_domains->allowed_dc_mask);
> + goto unlock;
> + }
> power_well = lookup_power_well(display, SKL_DISP_DC_OFF);
>
> if (drm_WARN_ON(display->drm, !power_well)) @@ -358,6 +365,13
> @@ u32 intel_display_power_get_current_dc_state(struct intel_display
> *display)
> return current_dc_state;
> }
>
> +bool intel_display_power_dc3co_supported(struct intel_display *display)
> +{
> + struct i915_power_domains *power_domains = &display-
> >power.domains;
> +
> + return (power_domains->allowed_dc_mask &
> DC_STATE_EN_UPTO_DC3CO) ==
> +DC_STATE_EN_UPTO_DC3CO; }
> +
allowed_dc_mask is not set in this patch series, which I presume will be based on HAS_DC3CO() check.
Could not differentiate between intel_display_power_dc3co_supported() and HAS_DC3CO() and both are dependent only on DISPLAY_VER() like if platform is supporting or not.
Regards,
Animesh
> static void __async_put_domains_mask(struct i915_power_domains
> *power_domains,
> struct intel_power_domain_mask *mask)
> { diff --git a/drivers/gpu/drm/i915/display/intel_display_power.h
> b/drivers/gpu/drm/i915/display/intel_display_power.h
> index d616d5d09cbe..05880e9da89f 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_power.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_power.h
> @@ -186,6 +186,7 @@ void intel_display_power_resume(struct intel_display
> *display); void intel_display_power_set_target_dc_state(struct intel_display
> *display,
> u32 state);
> u32 intel_display_power_get_current_dc_state(struct intel_display
> *display);
> +bool intel_display_power_dc3co_supported(struct intel_display
> +*display);
>
> bool intel_display_power_is_enabled(struct intel_display *display,
> enum intel_display_power_domain
> domain);
> --
> 2.43.0
^ permalink raw reply [flat|nested] 27+ messages in thread
* RE: [PATCH v2 07/13] drm/i915/display: Add DC3CO eligibility computation
2026-04-22 16:26 ` [PATCH v2 07/13] drm/i915/display: Add DC3CO eligibility computation Dibin Moolakadan Subrahmanian
2026-04-27 3:10 ` Shankar, Uma
@ 2026-04-29 5:42 ` Manna, Animesh
2026-04-29 7:05 ` Dibin Moolakadan Subrahmanian
1 sibling, 1 reply; 27+ messages in thread
From: Manna, Animesh @ 2026-04-29 5:42 UTC (permalink / raw)
To: Dibin Moolakadan Subrahmanian, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: Shankar, Uma, Kurmi, Suresh Kumar
> -----Original Message-----
> From: Dibin Moolakadan Subrahmanian
> <dibin.moolakadan.subrahmanian@intel.com>
> Sent: Wednesday, April 22, 2026 9:56 PM
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: Manna, Animesh <animesh.manna@intel.com>; Shankar, Uma
> <uma.shankar@intel.com>; Kurmi, Suresh Kumar
> <suresh.kumar.kurmi@intel.com>
> Subject: [PATCH v2 07/13] drm/i915/display: Add DC3CO eligibility
> computation
>
> Compute DC3CO eligibility during atomic_check based on pipe/port
> constraints and runtime triggers and store result in display->power.dc3co.
>
> When DC3CO is allowed, request DC_STATE_EN_UPTO_DC3CO and reduce
> the DC entry delay. Otherwise, retain the existing delay and set default
> DC_STATE_EN_UPTO_DC6 .
>
> Changes in v2:
> - Move dc3co state from intel_atomic_state to display->power (Uma
> Shankar)
> - Use #define bitmasks instead of enum for DC3CO triggers (Jani Nikula)
>
> BSpec: 75253
> Signed-off-by: Dibin Moolakadan Subrahmanian
> <dibin.moolakadan.subrahmanian@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 92 ++++++++++++++++++-
> drivers/gpu/drm/i915/display/intel_display.h | 1 -
> .../gpu/drm/i915/display/intel_display_core.h | 3 +-
> .../drm/i915/display/intel_display_power.c | 30 ++++++
> .../drm/i915/display/intel_display_power.h | 22 +++++
> 5 files changed, 141 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index 674a4ece6d0f..de493d04a622 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -5870,6 +5870,69 @@ static bool intel_pipes_need_modeset(struct
> intel_atomic_state *state,
> return false;
> }
>
> +static bool intel_dc3co_port_pipe_compatible(struct intel_dp *intel_dp,
> + const struct intel_crtc_state
> *crtc_state) {
> + struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
> + enum pipe pipe = to_intel_crtc(crtc_state->uapi.crtc)->pipe;
> + enum port port = dig_port->base.port;
> + int num_pipes = intel_crtc_num_joined_pipes(crtc_state);
> +
> + return num_pipes == 1 && pipe <= PIPE_B && port <= PORT_B; }
> +
> +static void intel_dc3co_compute_state(struct intel_atomic_state *state)
> +{
> + struct intel_display *display = to_intel_display(state);
> + struct intel_crtc *crtc;
> + struct intel_crtc_state *crtc_state;
> + struct intel_encoder *encoder;
> + struct intel_dp *intel_dp;
> + int active_pipes = 0;
> + u32 trigger = DC3CO_TRIGGER_NONE;
> +
> + if (!HAS_DC3CO(display))
> + return;
> +
> + for_each_intel_crtc(display->drm, crtc) {
> + trigger = DC3CO_TRIGGER_NONE;
> + crtc_state = intel_atomic_get_new_crtc_state(state, crtc);
> + if (!crtc_state)
> + crtc_state = intel_atomic_get_old_crtc_state(state,
> crtc);
New crtc_state is overwritten with old_crtc_state and used below. Not clear about the need of new_crtc_state.
Maybe good to explain with a code comment how new_crtc_state and old_crtc_state used in this function.
Better to keep separate variable new_crtc_state/old_crtc_sate and use as per need.
> +
> + if (!crtc_state || !crtc_state->hw.active)
> + continue;
> +
> + active_pipes++;
> +
> + if (active_pipes > 1)
> + goto done;
> +
> + for_each_intel_encoder_mask(display->drm, encoder,
> + crtc_state->uapi.encoder_mask) {
> + if (encoder->type != INTEL_OUTPUT_EDP)
> + goto done;
intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP) can be used which will use crtc_state and the above looping can be avoided.
> +
> + intel_dp = enc_to_intel_dp(encoder);
> +
> + if (!intel_dc3co_port_pipe_compatible(intel_dp,
> crtc_state))
> + goto done;
> + }
> +
> + if (crtc_state->has_lobf)
> + trigger |= DC3CO_TRIGGER_LOBF;
> + if (crtc_state->has_panel_replay)
> + trigger |= DC3CO_TRIGGER_PANEL_REPLAY;
> + if (crtc_state->has_sel_update)
> + trigger |= DC3CO_TRIGGER_PSR2;
> + }
> +
> +done:
> + intel_display_power_dc3co_update(display, !!trigger, trigger);
Not sure the usage of !!trigger, maybe just pass the trigger and if it is not zero then set the allowed inside intel_display_power_dc3co_update().
Regards,
Animesh
> + drm_dbg_kms(display->drm, "DC3CO allowed=%d trigger=0x%x\n",
> + !!trigger, trigger);
> +}
> +
> static int intel_atomic_check_joiner(struct intel_atomic_state *state,
> struct intel_crtc *primary_crtc) { @@ -
> 6544,6 +6607,7 @@ int intel_atomic_check(struct drm_device *dev,
> if (ret)
> goto fail;
>
> + intel_dc3co_compute_state(state);
> for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state,
> new_crtc_state, i) {
> intel_color_assert_luts(new_crtc_state);
> @@ -7415,6 +7479,7 @@ static void intel_atomic_commit_tail(struct
> intel_atomic_state *state)
> struct intel_power_domain_mask put_domains[I915_MAX_PIPES] =
> {};
> struct ref_tracker *wakeref = NULL;
> int i;
> + int power_async_delay;
>
> for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i)
> intel_atomic_dsb_prepare(state, crtc); @@ -7621,11
> +7686,28 @@ static void intel_atomic_commit_tail(struct intel_atomic_state
> *state)
> */
> intel_uncore_arm_unclaimed_mmio_detection(uncore);
> }
> - /*
> - * Delay re-enabling DC states by 17 ms to avoid the off->on->off
> - * toggling overhead at and above 60 FPS.
> - */
> - intel_display_power_put_async_delay(display,
> POWER_DOMAIN_DC_OFF, wakeref, 17);
> +
> + if (intel_display_power_dc3co_allowed(display) &&
> + intel_display_power_dc3co_supported(display)) {
> + intel_display_power_set_target_dc_state(display,
> DC_STATE_EN_UPTO_DC3CO);
> + /*
> + * Use minimal re-enable delay to allow DC3CO entry on
> + * the next idle frame, unlike the 17ms guard needed to
> + * prevent DC5/DC6 toggling overhead at 60+ FPS.
> + */
> + power_async_delay = 1;
> + } else {
> + /*
> + * Delay re-enabling DC states by 17 ms to avoid the off->on-
> >off
> + * toggling overhead at and above 60 FPS.
> + */
> + intel_display_power_set_target_dc_state(display,
> DC_STATE_EN_UPTO_DC6);
> + power_async_delay = 17;
> + }
> +
> + intel_display_power_put_async_delay(display,
> + POWER_DOMAIN_DC_OFF,
> wakeref, power_async_delay);
> +
> intel_display_rpm_put(display, state->wakeref);
>
> /*
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h
> b/drivers/gpu/drm/i915/display/intel_display.h
> index 1e76a455d7c4..2795e4b9e799 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -521,5 +521,4 @@ bool assert_port_valid(struct intel_display *display,
> enum port port);
>
> bool intel_scanout_needs_vtd_wa(struct intel_display *display); int
> intel_crtc_num_joined_pipes(const struct intel_crtc_state *crtc_state);
> -
> #endif
> diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h
> b/drivers/gpu/drm/i915/display/intel_display_core.h
> index c5a07090cba6..13e9b986b6fc 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_core.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
> @@ -535,7 +535,8 @@ struct intel_display {
>
> struct {
> struct i915_power_domains domains;
> -
> + /* DC3CO eligibility state */
> + struct intel_dc3co_state dc3co;
> /* Shadow for DISPLAY_PHY_CONTROL which can't be safely
> read */
> u32 chv_phy_control;
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c
> b/drivers/gpu/drm/i915/display/intel_display_power.c
> index f626803bbd88..ff1915be59c9 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_power.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
> @@ -372,6 +372,35 @@ bool intel_display_power_dc3co_supported(struct
> intel_display *display)
> return (power_domains->allowed_dc_mask &
> DC_STATE_EN_UPTO_DC3CO) == DC_STATE_EN_UPTO_DC3CO; }
>
> +void intel_display_power_dc3co_update(struct intel_display *display,
> + bool allowed, u32 trigger)
> +{
> + struct intel_dc3co_state *dc3co = &display->power.dc3co;
> +
> + if (!HAS_DC3CO(display))
> + return;
> +
> + mutex_lock(&dc3co->lock);
> + dc3co->allowed = allowed;
> + dc3co->trigger = trigger;
> + mutex_unlock(&dc3co->lock);
> +}
> +
> +bool intel_display_power_dc3co_allowed(struct intel_display *display) {
> + struct intel_dc3co_state *dc3co = &display->power.dc3co;
> + bool allowed;
> +
> + if (!HAS_DC3CO(display))
> + return false;
> +
> + mutex_lock(&dc3co->lock);
> + allowed = dc3co->allowed;
> + mutex_unlock(&dc3co->lock);
> +
> + return allowed;
> +}
> +
> static void __async_put_domains_mask(struct i915_power_domains
> *power_domains,
> struct intel_power_domain_mask *mask)
> { @@ -1051,6 +1080,7 @@ int intel_power_domains_init(struct intel_display
> *display)
> sanitize_target_dc_state(display, DC_STATE_EN_UPTO_DC6);
>
> mutex_init(&power_domains->lock);
> + mutex_init(&display->power.dc3co.lock);
>
> INIT_DELAYED_WORK(&power_domains->async_put_work,
> intel_display_power_put_async_work);
> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.h
> b/drivers/gpu/drm/i915/display/intel_display_power.h
> index 05880e9da89f..0b1a06f88ae5 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_power.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_power.h
> @@ -131,6 +131,25 @@ struct intel_power_domain_mask {
> DECLARE_BITMAP(bits, POWER_DOMAIN_NUM); };
>
> +/*
> + * DC3CO enabling triggers (bitmask).
> + * DC3CO may be enabled when at least one of these triggers is active.
> + * Additional constraints may still apply.
> + */
> +#define DC3CO_TRIGGER_NONE (0)
> +#define DC3CO_TRIGGER_PSR2 BIT(0)
> +#define DC3CO_TRIGGER_LOBF BIT(1)
> +#define DC3CO_TRIGGER_PANEL_REPLAY BIT(2)
> +#define DC3CO_TRIGGER_ALL (DC3CO_TRIGGER_PSR2 | \
> + DC3CO_TRIGGER_LOBF | \
> + DC3CO_TRIGGER_PANEL_REPLAY)
> +
> +struct intel_dc3co_state {
> + struct mutex lock; /* Protects allowed and trigger fields */
> + bool allowed; /* DC3CO eligibility result */
> + u32 trigger; /* Bitmask of active DC3CO triggers */ };
> +
> struct i915_power_domains {
> /*
> * Power wells needed for initialization at driver init and suspend
> @@ -187,6 +206,9 @@ void intel_display_power_set_target_dc_state(struct
> intel_display *display,
> u32 state);
> u32 intel_display_power_get_current_dc_state(struct intel_display
> *display); bool intel_display_power_dc3co_supported(struct intel_display
> *display);
> +void intel_display_power_dc3co_update(struct intel_display *display,
> + bool allowed, u32 trigger);
> +bool intel_display_power_dc3co_allowed(struct intel_display *display);
>
> bool intel_display_power_is_enabled(struct intel_display *display,
> enum intel_display_power_domain
> domain);
> --
> 2.43.0
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v2 07/13] drm/i915/display: Add DC3CO eligibility computation
2026-04-29 5:42 ` Manna, Animesh
@ 2026-04-29 7:05 ` Dibin Moolakadan Subrahmanian
0 siblings, 0 replies; 27+ messages in thread
From: Dibin Moolakadan Subrahmanian @ 2026-04-29 7:05 UTC (permalink / raw)
To: Manna, Animesh, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: Shankar, Uma, Kurmi, Suresh Kumar
On 29-04-2026 11:12, Manna, Animesh wrote:
>
>> -----Original Message-----
>> From: Dibin Moolakadan Subrahmanian
>> <dibin.moolakadan.subrahmanian@intel.com>
>> Sent: Wednesday, April 22, 2026 9:56 PM
>> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
>> Cc: Manna, Animesh <animesh.manna@intel.com>; Shankar, Uma
>> <uma.shankar@intel.com>; Kurmi, Suresh Kumar
>> <suresh.kumar.kurmi@intel.com>
>> Subject: [PATCH v2 07/13] drm/i915/display: Add DC3CO eligibility
>> computation
>>
>> Compute DC3CO eligibility during atomic_check based on pipe/port
>> constraints and runtime triggers and store result in display->power.dc3co.
>>
>> When DC3CO is allowed, request DC_STATE_EN_UPTO_DC3CO and reduce
>> the DC entry delay. Otherwise, retain the existing delay and set default
>> DC_STATE_EN_UPTO_DC6 .
>>
>> Changes in v2:
>> - Move dc3co state from intel_atomic_state to display->power (Uma
>> Shankar)
>> - Use #define bitmasks instead of enum for DC3CO triggers (Jani Nikula)
>>
>> BSpec: 75253
>> Signed-off-by: Dibin Moolakadan Subrahmanian
>> <dibin.moolakadan.subrahmanian@intel.com>
>> ---
>> drivers/gpu/drm/i915/display/intel_display.c | 92 ++++++++++++++++++-
>> drivers/gpu/drm/i915/display/intel_display.h | 1 -
>> .../gpu/drm/i915/display/intel_display_core.h | 3 +-
>> .../drm/i915/display/intel_display_power.c | 30 ++++++
>> .../drm/i915/display/intel_display_power.h | 22 +++++
>> 5 files changed, 141 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
>> b/drivers/gpu/drm/i915/display/intel_display.c
>> index 674a4ece6d0f..de493d04a622 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display.c
>> @@ -5870,6 +5870,69 @@ static bool intel_pipes_need_modeset(struct
>> intel_atomic_state *state,
>> return false;
>> }
>>
>> +static bool intel_dc3co_port_pipe_compatible(struct intel_dp *intel_dp,
>> + const struct intel_crtc_state
>> *crtc_state) {
>> + struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
>> + enum pipe pipe = to_intel_crtc(crtc_state->uapi.crtc)->pipe;
>> + enum port port = dig_port->base.port;
>> + int num_pipes = intel_crtc_num_joined_pipes(crtc_state);
>> +
>> + return num_pipes == 1 && pipe <= PIPE_B && port <= PORT_B; }
>> +
>> +static void intel_dc3co_compute_state(struct intel_atomic_state *state)
>> +{
>> + struct intel_display *display = to_intel_display(state);
>> + struct intel_crtc *crtc;
>> + struct intel_crtc_state *crtc_state;
>> + struct intel_encoder *encoder;
>> + struct intel_dp *intel_dp;
>> + int active_pipes = 0;
>> + u32 trigger = DC3CO_TRIGGER_NONE;
>> +
>> + if (!HAS_DC3CO(display))
>> + return;
>> +
>> + for_each_intel_crtc(display->drm, crtc) {
>> + trigger = DC3CO_TRIGGER_NONE;
>> + crtc_state = intel_atomic_get_new_crtc_state(state, crtc);
>> + if (!crtc_state)
>> + crtc_state = intel_atomic_get_old_crtc_state(state,
>> crtc);
> New crtc_state is overwritten with old_crtc_state and used below. Not clear about the need of new_crtc_state.
> Maybe good to explain with a code comment how new_crtc_state and old_crtc_state used in this function.
> Better to keep separate variable new_crtc_state/old_crtc_sate and use as per need.
>
The assignment from old_crtc_state occurs only if intel_atomic_get_new_crtc_state() returns NULL.
For the DC3CO 'allow' decision must consider 'untouched' pipes as well.
This design maintains a single variable to simplify the unified evaluation logic.
I can add comment if needed.
>> +
>> + if (!crtc_state || !crtc_state->hw.active)
>> + continue;
>> +
>> + active_pipes++;
>> +
>> + if (active_pipes > 1)
>> + goto done;
>> +
>> + for_each_intel_encoder_mask(display->drm, encoder,
>> + crtc_state->uapi.encoder_mask) {
>> + if (encoder->type != INTEL_OUTPUT_EDP)
>> + goto done;
> intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP) can be used which will use crtc_state and the above looping can be avoided.
>
>> +
>> + intel_dp = enc_to_intel_dp(encoder);
>> +
>> + if (!intel_dc3co_port_pipe_compatible(intel_dp,
>> crtc_state))
>> + goto done;
>> + }
>> +
>> + if (crtc_state->has_lobf)
>> + trigger |= DC3CO_TRIGGER_LOBF;
>> + if (crtc_state->has_panel_replay)
>> + trigger |= DC3CO_TRIGGER_PANEL_REPLAY;
>> + if (crtc_state->has_sel_update)
>> + trigger |= DC3CO_TRIGGER_PSR2;
>> + }
>> +
>> +done:
>> + intel_display_power_dc3co_update(display, !!trigger, trigger);
> Not sure the usage of !!trigger, maybe just pass the trigger and if it is not zero then set the allowed inside intel_display_power_dc3co_update().
The use of !!trigger is intentional.
It's commonly used in the kernel to normalize a bitmask to a boolean.
>
> Regards,
> Animesh
>
>> + drm_dbg_kms(display->drm, "DC3CO allowed=%d trigger=0x%x\n",
>> + !!trigger, trigger);
>> +}
>> +
>> static int intel_atomic_check_joiner(struct intel_atomic_state *state,
>> struct intel_crtc *primary_crtc) { @@ -
>> 6544,6 +6607,7 @@ int intel_atomic_check(struct drm_device *dev,
>> if (ret)
>> goto fail;
>>
>> + intel_dc3co_compute_state(state);
>> for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state,
>> new_crtc_state, i) {
>> intel_color_assert_luts(new_crtc_state);
>> @@ -7415,6 +7479,7 @@ static void intel_atomic_commit_tail(struct
>> intel_atomic_state *state)
>> struct intel_power_domain_mask put_domains[I915_MAX_PIPES] =
>> {};
>> struct ref_tracker *wakeref = NULL;
>> int i;
>> + int power_async_delay;
>>
>> for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i)
>> intel_atomic_dsb_prepare(state, crtc); @@ -7621,11
>> +7686,28 @@ static void intel_atomic_commit_tail(struct intel_atomic_state
>> *state)
>> */
>> intel_uncore_arm_unclaimed_mmio_detection(uncore);
>> }
>> - /*
>> - * Delay re-enabling DC states by 17 ms to avoid the off->on->off
>> - * toggling overhead at and above 60 FPS.
>> - */
>> - intel_display_power_put_async_delay(display,
>> POWER_DOMAIN_DC_OFF, wakeref, 17);
>> +
>> + if (intel_display_power_dc3co_allowed(display) &&
>> + intel_display_power_dc3co_supported(display)) {
>> + intel_display_power_set_target_dc_state(display,
>> DC_STATE_EN_UPTO_DC3CO);
>> + /*
>> + * Use minimal re-enable delay to allow DC3CO entry on
>> + * the next idle frame, unlike the 17ms guard needed to
>> + * prevent DC5/DC6 toggling overhead at 60+ FPS.
>> + */
>> + power_async_delay = 1;
>> + } else {
>> + /*
>> + * Delay re-enabling DC states by 17 ms to avoid the off->on-
>>> off
>> + * toggling overhead at and above 60 FPS.
>> + */
>> + intel_display_power_set_target_dc_state(display,
>> DC_STATE_EN_UPTO_DC6);
>> + power_async_delay = 17;
>> + }
>> +
>> + intel_display_power_put_async_delay(display,
>> + POWER_DOMAIN_DC_OFF,
>> wakeref, power_async_delay);
>> +
>> intel_display_rpm_put(display, state->wakeref);
>>
>> /*
>> diff --git a/drivers/gpu/drm/i915/display/intel_display.h
>> b/drivers/gpu/drm/i915/display/intel_display.h
>> index 1e76a455d7c4..2795e4b9e799 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display.h
>> +++ b/drivers/gpu/drm/i915/display/intel_display.h
>> @@ -521,5 +521,4 @@ bool assert_port_valid(struct intel_display *display,
>> enum port port);
>>
>> bool intel_scanout_needs_vtd_wa(struct intel_display *display); int
>> intel_crtc_num_joined_pipes(const struct intel_crtc_state *crtc_state);
>> -
>> #endif
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h
>> b/drivers/gpu/drm/i915/display/intel_display_core.h
>> index c5a07090cba6..13e9b986b6fc 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_core.h
>> +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
>> @@ -535,7 +535,8 @@ struct intel_display {
>>
>> struct {
>> struct i915_power_domains domains;
>> -
>> + /* DC3CO eligibility state */
>> + struct intel_dc3co_state dc3co;
>> /* Shadow for DISPLAY_PHY_CONTROL which can't be safely
>> read */
>> u32 chv_phy_control;
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c
>> b/drivers/gpu/drm/i915/display/intel_display_power.c
>> index f626803bbd88..ff1915be59c9 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_power.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
>> @@ -372,6 +372,35 @@ bool intel_display_power_dc3co_supported(struct
>> intel_display *display)
>> return (power_domains->allowed_dc_mask &
>> DC_STATE_EN_UPTO_DC3CO) == DC_STATE_EN_UPTO_DC3CO; }
>>
>> +void intel_display_power_dc3co_update(struct intel_display *display,
>> + bool allowed, u32 trigger)
>> +{
>> + struct intel_dc3co_state *dc3co = &display->power.dc3co;
>> +
>> + if (!HAS_DC3CO(display))
>> + return;
>> +
>> + mutex_lock(&dc3co->lock);
>> + dc3co->allowed = allowed;
>> + dc3co->trigger = trigger;
>> + mutex_unlock(&dc3co->lock);
>> +}
>> +
>> +bool intel_display_power_dc3co_allowed(struct intel_display *display) {
>> + struct intel_dc3co_state *dc3co = &display->power.dc3co;
>> + bool allowed;
>> +
>> + if (!HAS_DC3CO(display))
>> + return false;
>> +
>> + mutex_lock(&dc3co->lock);
>> + allowed = dc3co->allowed;
>> + mutex_unlock(&dc3co->lock);
>> +
>> + return allowed;
>> +}
>> +
>> static void __async_put_domains_mask(struct i915_power_domains
>> *power_domains,
>> struct intel_power_domain_mask *mask)
>> { @@ -1051,6 +1080,7 @@ int intel_power_domains_init(struct intel_display
>> *display)
>> sanitize_target_dc_state(display, DC_STATE_EN_UPTO_DC6);
>>
>> mutex_init(&power_domains->lock);
>> + mutex_init(&display->power.dc3co.lock);
>>
>> INIT_DELAYED_WORK(&power_domains->async_put_work,
>> intel_display_power_put_async_work);
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.h
>> b/drivers/gpu/drm/i915/display/intel_display_power.h
>> index 05880e9da89f..0b1a06f88ae5 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_power.h
>> +++ b/drivers/gpu/drm/i915/display/intel_display_power.h
>> @@ -131,6 +131,25 @@ struct intel_power_domain_mask {
>> DECLARE_BITMAP(bits, POWER_DOMAIN_NUM); };
>>
>> +/*
>> + * DC3CO enabling triggers (bitmask).
>> + * DC3CO may be enabled when at least one of these triggers is active.
>> + * Additional constraints may still apply.
>> + */
>> +#define DC3CO_TRIGGER_NONE (0)
>> +#define DC3CO_TRIGGER_PSR2 BIT(0)
>> +#define DC3CO_TRIGGER_LOBF BIT(1)
>> +#define DC3CO_TRIGGER_PANEL_REPLAY BIT(2)
>> +#define DC3CO_TRIGGER_ALL (DC3CO_TRIGGER_PSR2 | \
>> + DC3CO_TRIGGER_LOBF | \
>> + DC3CO_TRIGGER_PANEL_REPLAY)
>> +
>> +struct intel_dc3co_state {
>> + struct mutex lock; /* Protects allowed and trigger fields */
>> + bool allowed; /* DC3CO eligibility result */
>> + u32 trigger; /* Bitmask of active DC3CO triggers */ };
>> +
>> struct i915_power_domains {
>> /*
>> * Power wells needed for initialization at driver init and suspend
>> @@ -187,6 +206,9 @@ void intel_display_power_set_target_dc_state(struct
>> intel_display *display,
>> u32 state);
>> u32 intel_display_power_get_current_dc_state(struct intel_display
>> *display); bool intel_display_power_dc3co_supported(struct intel_display
>> *display);
>> +void intel_display_power_dc3co_update(struct intel_display *display,
>> + bool allowed, u32 trigger);
>> +bool intel_display_power_dc3co_allowed(struct intel_display *display);
>>
>> bool intel_display_power_is_enabled(struct intel_display *display,
>> enum intel_display_power_domain
>> domain);
>> --
>> 2.43.0
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH v2 05/13] drm/i915/display: Add DC3CO support check and validate target DC state
2026-04-29 5:13 ` Manna, Animesh
@ 2026-04-29 7:31 ` Dibin Moolakadan Subrahmanian
0 siblings, 0 replies; 27+ messages in thread
From: Dibin Moolakadan Subrahmanian @ 2026-04-29 7:31 UTC (permalink / raw)
To: Manna, Animesh, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Cc: Shankar, Uma, Kurmi, Suresh Kumar
On 29-04-2026 10:43, Manna, Animesh wrote:
>
>> -----Original Message-----
>> From: Dibin Moolakadan Subrahmanian
>> <dibin.moolakadan.subrahmanian@intel.com>
>> Sent: Wednesday, April 22, 2026 9:56 PM
>> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
>> Cc: Manna, Animesh <animesh.manna@intel.com>; Shankar, Uma
>> <uma.shankar@intel.com>; Kurmi, Suresh Kumar
>> <suresh.kumar.kurmi@intel.com>
>> Subject: [PATCH v2 05/13] drm/i915/display: Add DC3CO support check and
>> validate target DC state
>>
>> Validate the requested target DC state against allowed_dc_mask in
>> intel_display_power_set_target_dc_state() to avoid programming
>> unsupported DC states.
>>
>> Also add intel_display_power_dc3co_supported() helper to query DC3CO
>> support from allowed_dc_mask.
>>
>> Changes in v2:
>> - Squash "Add helper to check DC3CO support" patch into this patch
>>
>> Signed-off-by: Dibin Moolakadan Subrahmanian
>> <dibin.moolakadan.subrahmanian@intel.com>
>> Reviewed-by: Uma Shankar <uma.shankar@intel.com>
>> ---
>> drivers/gpu/drm/i915/display/intel_display_power.c | 14 ++++++++++++++
>> drivers/gpu/drm/i915/display/intel_display_power.h | 1 +
>> 2 files changed, 15 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c
>> b/drivers/gpu/drm/i915/display/intel_display_power.c
>> index 77c32492caa1..f626803bbd88 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_power.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
>> @@ -302,6 +302,13 @@ void
>> intel_display_power_set_target_dc_state(struct intel_display *display,
>> struct i915_power_domains *power_domains = &display-
>>> power.domains;
>> mutex_lock(&power_domains->lock);
>> +
>> + if ((state & power_domains->allowed_dc_mask) != state) {
>> + drm_dbg_kms(display->drm,
>> + "Rejecting DC state 0x%x (allowed mask 0x%x)\n",
>> + state, power_domains->allowed_dc_mask);
>> + goto unlock;
>> + }
>> power_well = lookup_power_well(display, SKL_DISP_DC_OFF);
>>
>> if (drm_WARN_ON(display->drm, !power_well)) @@ -358,6 +365,13
>> @@ u32 intel_display_power_get_current_dc_state(struct intel_display
>> *display)
>> return current_dc_state;
>> }
>>
>> +bool intel_display_power_dc3co_supported(struct intel_display *display)
>> +{
>> + struct i915_power_domains *power_domains = &display-
>>> power.domains;
>> +
>> + return (power_domains->allowed_dc_mask &
>> DC_STATE_EN_UPTO_DC3CO) ==
>> +DC_STATE_EN_UPTO_DC3CO; }
>> +
> allowed_dc_mask is not set in this patch series, which I presume will be based on HAS_DC3CO() check.
> Could not differentiate between intel_display_power_dc3co_supported() and HAS_DC3CO() and both are dependent only on DISPLAY_VER() like if platform is supporting or not.
HAS_DC3CO() checks for the HW capablity.
intel_display_power_dc3co_supported() checks if dc3co is supported at runtime.
it check DC3CO against power_domains->allowed_dc_mask which is assigned at in intel_power_domains_init()
based on params.enable_dc , allowing the feature to be controlled via module parameters.
> Regards,
> Animesh
>
>> static void __async_put_domains_mask(struct i915_power_domains
>> *power_domains,
>> struct intel_power_domain_mask *mask)
>> { diff --git a/drivers/gpu/drm/i915/display/intel_display_power.h
>> b/drivers/gpu/drm/i915/display/intel_display_power.h
>> index d616d5d09cbe..05880e9da89f 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_power.h
>> +++ b/drivers/gpu/drm/i915/display/intel_display_power.h
>> @@ -186,6 +186,7 @@ void intel_display_power_resume(struct intel_display
>> *display); void intel_display_power_set_target_dc_state(struct intel_display
>> *display,
>> u32 state);
>> u32 intel_display_power_get_current_dc_state(struct intel_display
>> *display);
>> +bool intel_display_power_dc3co_supported(struct intel_display
>> +*display);
>>
>> bool intel_display_power_is_enabled(struct intel_display *display,
>> enum intel_display_power_domain
>> domain);
>> --
>> 2.43.0
^ permalink raw reply [flat|nested] 27+ messages in thread
end of thread, other threads:[~2026-04-29 7:32 UTC | newest]
Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-22 16:26 [PATCH v2 00/13] drm/i915/display: Add DC3CO support Dibin Moolakadan Subrahmanian
2026-04-22 16:26 ` [PATCH v2 01/13] drm/i915/display: Remove TGL " Dibin Moolakadan Subrahmanian
2026-04-22 16:26 ` [PATCH v2 02/13] drm/i915/display: Switch DC3Co enable from standalone bit to DC level encoding Dibin Moolakadan Subrahmanian
2026-04-22 16:26 ` [PATCH v2 03/13] drm/i915/display: Use FIELD_PREP() for DC state enable bits Dibin Moolakadan Subrahmanian
2026-04-22 16:26 ` [PATCH v2 04/13] drm/i915/display: Add DC3CO DC_STATE enable/disable support Dibin Moolakadan Subrahmanian
2026-04-22 16:26 ` [PATCH v2 05/13] drm/i915/display: Add DC3CO support check and validate target DC state Dibin Moolakadan Subrahmanian
2026-04-29 5:13 ` Manna, Animesh
2026-04-29 7:31 ` Dibin Moolakadan Subrahmanian
2026-04-22 16:26 ` [PATCH v2 06/13] drm/i915/display: Add HAS_DC3CO() macro Dibin Moolakadan Subrahmanian
2026-04-27 3:00 ` Shankar, Uma
2026-04-22 16:26 ` [PATCH v2 07/13] drm/i915/display: Add DC3CO eligibility computation Dibin Moolakadan Subrahmanian
2026-04-27 3:10 ` Shankar, Uma
2026-04-27 6:06 ` Dibin Moolakadan Subrahmanian
2026-04-29 5:42 ` Manna, Animesh
2026-04-29 7:05 ` Dibin Moolakadan Subrahmanian
2026-04-22 16:26 ` [PATCH v2 08/13] drm/i915/display: Store DC3CO eligibility in PSR state Dibin Moolakadan Subrahmanian
2026-04-27 3:11 ` Shankar, Uma
2026-04-22 16:26 ` [PATCH v2 09/13] drm/i915/display: PSR2: Set idle_frames to 0 for DC3CO Dibin Moolakadan Subrahmanian
2026-04-27 3:13 ` Shankar, Uma
2026-04-22 16:26 ` [PATCH v2 10/13] drm/i915/display: Enable DC3CO idle protocol in ALPM Dibin Moolakadan Subrahmanian
2026-04-27 3:14 ` Shankar, Uma
2026-04-22 16:26 ` [PATCH v2 11/13] drm/i915/display: PSR Add delayed work to exit DC3CO Dibin Moolakadan Subrahmanian
2026-04-27 3:15 ` Shankar, Uma
2026-04-22 16:26 ` [PATCH v2 12/13] drm/i915/display: Add helper to enable DC counter Dibin Moolakadan Subrahmanian
2026-04-22 16:26 ` [PATCH v2 13/13] drm/i915/display: Add DC3CO count and residency in dmc debugfs Dibin Moolakadan Subrahmanian
2026-04-22 22:06 ` ✓ i915.CI.BAT: success for drm/i915/display: Add DC3CO support (rev2) Patchwork
2026-04-23 4:59 ` ✗ i915.CI.Full: failure " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox