* [PATCH v3 0/2] drm/i915/display: Enable system cache support for FBC
@ 2025-11-23 16:01 Vinod Govindapillai
2025-11-23 16:01 ` [PATCH v3 1/2] drm/i915/display: Use a sub-struct for fbc operations in intel_display Vinod Govindapillai
` (3 more replies)
0 siblings, 4 replies; 12+ messages in thread
From: Vinod Govindapillai @ 2025-11-23 16:01 UTC (permalink / raw)
To: intel-xe, intel-gfx
Cc: vinod.govindapillai, matthew.d.roper, gustavo.sousa,
ville.syrjala, jani.nikula
Use system cacheability configuration register to assign a reserved
area in system cache for FBC
Vinod Govindapillai (2):
drm/i915/display: Use a sub-struct for fbc operations in intel_display
drm/i915/xe3p_lpd: Enable display use of system cache for FBC
drivers/gpu/drm/i915/display/i9xx_plane.c | 2 +-
.../gpu/drm/i915/display/intel_display_core.h | 8 +-
.../drm/i915/display/intel_display_device.h | 1 +
drivers/gpu/drm/i915/display/intel_fbc.c | 99 ++++++++++++++++++-
drivers/gpu/drm/i915/display/intel_fbc_regs.h | 10 ++
.../drm/i915/display/skl_universal_plane.c | 2 +-
6 files changed, 116 insertions(+), 6 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v3 1/2] drm/i915/display: Use a sub-struct for fbc operations in intel_display
2025-11-23 16:01 [PATCH v3 0/2] drm/i915/display: Enable system cache support for FBC Vinod Govindapillai
@ 2025-11-23 16:01 ` Vinod Govindapillai
2025-11-24 10:54 ` Jani Nikula
2025-11-23 16:01 ` [PATCH v3 2/2] drm/i915/xe3p_lpd: Enable display use of system cache for FBC Vinod Govindapillai
` (2 subsequent siblings)
3 siblings, 1 reply; 12+ messages in thread
From: Vinod Govindapillai @ 2025-11-23 16:01 UTC (permalink / raw)
To: intel-xe, intel-gfx
Cc: vinod.govindapillai, matthew.d.roper, gustavo.sousa,
ville.syrjala, jani.nikula
As FBC can utilze the system cache in xe3p_lpd onwards, we need
a way to track which fbc instance is utilizing this cache. So we
would need to extend the intel_display with such a functionality.
Introduce a new fbc substruct and move the current fbc instance
array into that. Then the following patch can utilize this to
introduce functionaity to configure and track the system cache
usage by the fbc instance.
Suggested-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
---
drivers/gpu/drm/i915/display/i9xx_plane.c | 2 +-
drivers/gpu/drm/i915/display/intel_display_core.h | 5 ++++-
drivers/gpu/drm/i915/display/intel_fbc.c | 6 +++---
drivers/gpu/drm/i915/display/skl_universal_plane.c | 2 +-
4 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/i9xx_plane.c b/drivers/gpu/drm/i915/display/i9xx_plane.c
index 51ccc6bd5f21..2c40bc632b3d 100644
--- a/drivers/gpu/drm/i915/display/i9xx_plane.c
+++ b/drivers/gpu/drm/i915/display/i9xx_plane.c
@@ -134,7 +134,7 @@ static struct intel_fbc *i9xx_plane_fbc(struct intel_display *display,
enum i9xx_plane_id i9xx_plane)
{
if (i9xx_plane_has_fbc(display, i9xx_plane))
- return display->fbc[INTEL_FBC_A];
+ return display->fbc.instances[INTEL_FBC_A];
else
return NULL;
}
diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
index 9b36654b593d..58325f530670 100644
--- a/drivers/gpu/drm/i915/display/intel_display_core.h
+++ b/drivers/gpu/drm/i915/display/intel_display_core.h
@@ -398,6 +398,10 @@ struct intel_display {
const struct dram_info *info;
} dram;
+ struct {
+ struct intel_fbc *instances[I915_MAX_FBCS];
+ } fbc;
+
struct {
/* list of fbdev register on this device */
struct intel_fbdev *fbdev;
@@ -615,7 +619,6 @@ struct intel_display {
struct drm_dp_tunnel_mgr *dp_tunnel_mgr;
struct intel_audio audio;
struct intel_dpll_global dpll;
- struct intel_fbc *fbc[I915_MAX_FBCS];
struct intel_frontbuffer_tracking fb_tracking;
struct intel_hotplug hotplug;
struct intel_opregion *opregion;
diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
index d9cab25d414a..dcdfcff80de3 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -69,7 +69,7 @@
#define for_each_intel_fbc(__display, __fbc, __fbc_id) \
for_each_fbc_id((__display), (__fbc_id)) \
- for_each_if((__fbc) = (__display)->fbc[(__fbc_id)])
+ for_each_if((__fbc) = (__display)->fbc.instances[(__fbc_id)])
struct intel_fbc_funcs {
void (*activate)(struct intel_fbc *fbc);
@@ -2211,7 +2211,7 @@ void intel_fbc_init(struct intel_display *display)
display->params.enable_fbc);
for_each_fbc_id(display, fbc_id)
- display->fbc[fbc_id] = intel_fbc_create(display, fbc_id);
+ display->fbc.instances[fbc_id] = intel_fbc_create(display, fbc_id);
}
/**
@@ -2330,7 +2330,7 @@ void intel_fbc_debugfs_register(struct intel_display *display)
{
struct intel_fbc *fbc;
- fbc = display->fbc[INTEL_FBC_A];
+ fbc = display->fbc.instances[INTEL_FBC_A];
if (fbc)
intel_fbc_debugfs_add(fbc, display->drm->debugfs_root);
}
diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
index 89c8003ccfe7..48af74963e74 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -2444,7 +2444,7 @@ static struct intel_fbc *skl_plane_fbc(struct intel_display *display,
enum intel_fbc_id fbc_id = skl_fbc_id_for_pipe(pipe);
if (skl_plane_has_fbc(display, fbc_id, plane_id))
- return display->fbc[fbc_id];
+ return display->fbc.instances[fbc_id];
else
return NULL;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v3 2/2] drm/i915/xe3p_lpd: Enable display use of system cache for FBC
2025-11-23 16:01 [PATCH v3 0/2] drm/i915/display: Enable system cache support for FBC Vinod Govindapillai
2025-11-23 16:01 ` [PATCH v3 1/2] drm/i915/display: Use a sub-struct for fbc operations in intel_display Vinod Govindapillai
@ 2025-11-23 16:01 ` Vinod Govindapillai
2025-11-24 11:27 ` Jani Nikula
2025-11-24 16:25 ` Jani Nikula
2025-11-24 22:55 ` ✓ i915.CI.BAT: success for drm/i915/display: Enable system cache support " Patchwork
2025-11-25 3:21 ` ✗ i915.CI.Full: failure " Patchwork
3 siblings, 2 replies; 12+ messages in thread
From: Vinod Govindapillai @ 2025-11-23 16:01 UTC (permalink / raw)
To: intel-xe, intel-gfx
Cc: vinod.govindapillai, matthew.d.roper, gustavo.sousa,
ville.syrjala, jani.nikula
One of the FBC instances can utilize the reserved area of SoC
level cache for the fbc transactions to benefit reduced memory
system power especially in idle scenarios. Reserved area of the
system cache can be assigned to an fbc instance by configuring
the cacheability configuration register with offset of the
compressed frame buffer in stolen memoty of that fbc. There is
a limit to this reserved area which is programmable and for
xe3p_lpd the limit is defined as 2MB.
v2: - better to track fbc sys cache usage from intel_display level,
sanitize the cacheability config register on probe (Matt)
- limit this for integrated graphics solutions, confirmed that
no default value set for cache range by hw (Gustavo)
v3: - changes related to the use of fbc substruct in intel_display
- use intel_de_write() instead of intel_rmw() by hardcoding the
default value fields
Bspec: 68881, 74722
Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
---
.../gpu/drm/i915/display/intel_display_core.h | 3 +
.../drm/i915/display/intel_display_device.h | 1 +
drivers/gpu/drm/i915/display/intel_fbc.c | 93 +++++++++++++++++++
drivers/gpu/drm/i915/display/intel_fbc_regs.h | 10 ++
4 files changed, 107 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
index 58325f530670..f557c9293d33 100644
--- a/drivers/gpu/drm/i915/display/intel_display_core.h
+++ b/drivers/gpu/drm/i915/display/intel_display_core.h
@@ -400,6 +400,9 @@ struct intel_display {
struct {
struct intel_fbc *instances[I915_MAX_FBCS];
+
+ /* xe3p_lpd+ : FBC instance utlizing the system cache */
+ enum intel_fbc_id sys_cache_id;
} fbc;
struct {
diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
index b559ef43d547..b74cb69ccc85 100644
--- a/drivers/gpu/drm/i915/display/intel_display_device.h
+++ b/drivers/gpu/drm/i915/display/intel_display_device.h
@@ -173,6 +173,7 @@ struct intel_display_platforms {
#define HAS_DSC_MST(__display) (DISPLAY_VER(__display) >= 12 && HAS_DSC(__display))
#define HAS_FBC(__display) (DISPLAY_RUNTIME_INFO(__display)->fbc_mask != 0)
#define HAS_FBC_DIRTY_RECT(__display) (DISPLAY_VER(__display) >= 30)
+#define HAS_FBC_SYS_CACHE(__display) (DISPLAY_VER(__display) >= 35 && !(__display)->platform.dgfx)
#define HAS_FPGA_DBG_UNCLAIMED(__display) (DISPLAY_INFO(__display)->has_fpga_dbg)
#define HAS_FW_BLC(__display) (DISPLAY_VER(__display) >= 3)
#define HAS_GMBUS_BURST_READ(__display) (DISPLAY_VER(__display) >= 10 || (__display)->platform.kabylake)
diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
index dcdfcff80de3..d7e913792518 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -71,6 +71,10 @@
for_each_fbc_id((__display), (__fbc_id)) \
for_each_if((__fbc) = (__display)->fbc.instances[(__fbc_id)])
+#define SYS_CACHE_FBC_INSTANCE_NONE I915_MAX_FBCS
+#define IS_SYS_CACHE_FBC_INSTANCE_NONE(__display) ((__display)->fbc.sys_cache_id == SYS_CACHE_FBC_INSTANCE_NONE)
+#define IS_SYS_CACHE_FBC_INSTANCE_EQUALS(__display, id) ((__display)->fbc.sys_cache_id == (id))
+
struct intel_fbc_funcs {
void (*activate)(struct intel_fbc *fbc);
void (*deactivate)(struct intel_fbc *fbc);
@@ -941,6 +945,79 @@ static void intel_fbc_program_workarounds(struct intel_fbc *fbc)
fbc_compressor_clkgate_disable_wa(fbc, true);
}
+static void xe3p_lpd_fbc_set_sys_cache_fbc_id(struct intel_display *display,
+ enum intel_fbc_id fbc_id)
+{
+ display->fbc.sys_cache_id = fbc_id;
+}
+
+static void xe3p_lpd_fbc_commit_sys_cache_usage(struct intel_display *display,
+ u32 reg)
+{
+ intel_de_write(display, XE3P_LPD_FBC_SYS_CACHE_USAGE_CFG, reg);
+}
+
+static int xe3p_lpd_fbc_get_cache_limit(void)
+{
+ /* Default 2MB for xe3p_lpd */
+ return 2 * 1024 * 1024;
+}
+
+static void xe3p_lpd_fbc_clear_sys_cache_usage(struct intel_display *display)
+{
+ /* Clear all the fields except the default fields */
+ u32 default_fields = FBC_SYS_CACHE_READ_ENABLE;
+
+ xe3p_lpd_fbc_commit_sys_cache_usage(display, default_fields);
+
+ /* Mark that no FBC instance utilize the system cache */
+ xe3p_lpd_fbc_set_sys_cache_fbc_id(display, SYS_CACHE_FBC_INSTANCE_NONE);
+}
+
+static void xe3p_lpd_fbc_set_sys_cache_usage(const struct intel_fbc *fbc)
+{
+ struct intel_display *display = fbc->display;
+ /* limit to be configured to the register in 64k byte chunks */
+ int range = xe3p_lpd_fbc_get_cache_limit() / (64 * 1024);
+ /* offset to be configured to the register in 4K byte chunks */
+ int offset = i915_gem_stolen_node_offset(fbc->compressed_fb) / (4 * 1024);
+ /* Cache read enable is enabled by default */
+ u32 usage = FBC_SYS_CACHE_TAG_USE_RES_SPACE |
+ FBC_SYS_CACHEABLE_RANGE(range) |
+ FBC_SYS_CACHE_START_BASE(offset) |
+ FBC_SYS_CACHE_READ_ENABLE;
+
+ lockdep_assert_held(&fbc->lock);
+
+ xe3p_lpd_fbc_commit_sys_cache_usage(display, usage);
+
+ xe3p_lpd_fbc_set_sys_cache_fbc_id(display, fbc->id);
+}
+
+static void xe3p_lpd_fbc_update_sys_cache_usage(const struct intel_fbc *fbc,
+ bool set)
+{
+ struct intel_display *display = fbc->display;
+
+ lockdep_assert_held(&fbc->lock);
+
+ /* system cache for fbc already reserved */
+ if (set && !IS_SYS_CACHE_FBC_INSTANCE_NONE(display))
+ return;
+
+ /* cannot clear if "fbc" did not reserve the cache */
+ if (!set && !IS_SYS_CACHE_FBC_INSTANCE_EQUALS(display, fbc->id))
+ return;
+
+ if (set)
+ xe3p_lpd_fbc_set_sys_cache_usage(fbc);
+ else
+ xe3p_lpd_fbc_clear_sys_cache_usage(display);
+
+ drm_dbg_kms(display->drm, "System cacheability usage for FBC[%d] %s\n",
+ fbc->id, set ? "configured" : "cleared");
+}
+
static void __intel_fbc_cleanup_cfb(struct intel_fbc *fbc)
{
if (WARN_ON(intel_fbc_hw_is_active(fbc)))
@@ -967,6 +1044,9 @@ void intel_fbc_cleanup(struct intel_display *display)
kfree(fbc);
}
+
+ if (HAS_FBC_SYS_CACHE(display))
+ xe3p_lpd_fbc_clear_sys_cache_usage(display);
}
static bool i8xx_fbc_stride_is_valid(const struct intel_plane_state *plane_state)
@@ -1780,6 +1860,9 @@ static void __intel_fbc_disable(struct intel_fbc *fbc)
__intel_fbc_cleanup_cfb(fbc);
+ if (HAS_FBC_SYS_CACHE(display))
+ xe3p_lpd_fbc_update_sys_cache_usage(fbc, false);
+
/* wa_18038517565 Enable DPFC clock gating after FBC disable */
if (display->platform.dg2 || DISPLAY_VER(display) >= 14)
fbc_compressor_clkgate_disable_wa(fbc, false);
@@ -1972,6 +2055,9 @@ static void __intel_fbc_enable(struct intel_atomic_state *state,
intel_fbc_program_workarounds(fbc);
intel_fbc_program_cfb(fbc);
+
+ if (HAS_FBC_SYS_CACHE(display))
+ xe3p_lpd_fbc_update_sys_cache_usage(fbc, true);
}
/**
@@ -2212,6 +2298,9 @@ void intel_fbc_init(struct intel_display *display)
for_each_fbc_id(display, fbc_id)
display->fbc.instances[fbc_id] = intel_fbc_create(display, fbc_id);
+
+ /* Mark that no FBC instance is using the system cache */
+ xe3p_lpd_fbc_set_sys_cache_fbc_id(display, SYS_CACHE_FBC_INSTANCE_NONE);
}
/**
@@ -2231,6 +2320,10 @@ void intel_fbc_sanitize(struct intel_display *display)
if (intel_fbc_hw_is_active(fbc))
intel_fbc_hw_deactivate(fbc);
}
+
+ /* Ensure the sys cache usage register gets cleared */
+ if (HAS_FBC_SYS_CACHE(display))
+ xe3p_lpd_fbc_clear_sys_cache_usage(display);
}
static int intel_fbc_debugfs_status_show(struct seq_file *m, void *unused)
diff --git a/drivers/gpu/drm/i915/display/intel_fbc_regs.h b/drivers/gpu/drm/i915/display/intel_fbc_regs.h
index b1d0161a3196..d2d889fa4bed 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_fbc_regs.h
@@ -126,4 +126,14 @@
#define FBC_REND_NUKE REG_BIT(2)
#define FBC_REND_CACHE_CLEAN REG_BIT(1)
+#define XE3P_LPD_FBC_SYS_CACHE_USAGE_CFG _MMIO(0x1344E0)
+#define FBC_SYS_CACHE_START_BASE_MASK REG_GENMASK(31, 16)
+#define FBC_SYS_CACHE_START_BASE(base) REG_FIELD_PREP(FBC_SYS_CACHE_START_BASE_MASK, (base))
+#define FBC_SYS_CACHEABLE_RANGE_MASK REG_GENMASK(15, 4)
+#define FBC_SYS_CACHEABLE_RANGE(range) REG_FIELD_PREP(FBC_SYS_CACHEABLE_RANGE_MASK, (range))
+#define FBC_SYS_CACHE_TAG_MASK REG_GENMASK(3, 2)
+#define FBC_SYS_CACHE_TAG_DONT_CACHE REG_FIELD_PREP(FBC_SYS_CACHE_TAG_MASK, 0)
+#define FBC_SYS_CACHE_TAG_USE_RES_SPACE REG_FIELD_PREP(FBC_SYS_CACHE_TAG_MASK, 3)
+#define FBC_SYS_CACHE_READ_ENABLE REG_BIT(0)
+
#endif /* __INTEL_FBC_REGS__ */
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v3 1/2] drm/i915/display: Use a sub-struct for fbc operations in intel_display
2025-11-23 16:01 ` [PATCH v3 1/2] drm/i915/display: Use a sub-struct for fbc operations in intel_display Vinod Govindapillai
@ 2025-11-24 10:54 ` Jani Nikula
0 siblings, 0 replies; 12+ messages in thread
From: Jani Nikula @ 2025-11-24 10:54 UTC (permalink / raw)
To: Vinod Govindapillai, intel-xe, intel-gfx
Cc: vinod.govindapillai, matthew.d.roper, gustavo.sousa,
ville.syrjala
On Sun, 23 Nov 2025, Vinod Govindapillai <vinod.govindapillai@intel.com> wrote:
> As FBC can utilze the system cache in xe3p_lpd onwards, we need
*utilize
> a way to track which fbc instance is utilizing this cache. So we
> would need to extend the intel_display with such a functionality.
> Introduce a new fbc substruct and move the current fbc instance
> array into that. Then the following patch can utilize this to
> introduce functionaity to configure and track the system cache
> usage by the fbc instance.
In general, please don't refer to "patches" in commit messages. Just
consider reading this commit message a year from now, wondering what
"the following patch" might refer to.
No need to resend for this.
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> Suggested-by: Jani Nikula <jani.nikula@intel.com>
> Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
> ---
> drivers/gpu/drm/i915/display/i9xx_plane.c | 2 +-
> drivers/gpu/drm/i915/display/intel_display_core.h | 5 ++++-
> drivers/gpu/drm/i915/display/intel_fbc.c | 6 +++---
> drivers/gpu/drm/i915/display/skl_universal_plane.c | 2 +-
> 4 files changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/i9xx_plane.c b/drivers/gpu/drm/i915/display/i9xx_plane.c
> index 51ccc6bd5f21..2c40bc632b3d 100644
> --- a/drivers/gpu/drm/i915/display/i9xx_plane.c
> +++ b/drivers/gpu/drm/i915/display/i9xx_plane.c
> @@ -134,7 +134,7 @@ static struct intel_fbc *i9xx_plane_fbc(struct intel_display *display,
> enum i9xx_plane_id i9xx_plane)
> {
> if (i9xx_plane_has_fbc(display, i9xx_plane))
> - return display->fbc[INTEL_FBC_A];
> + return display->fbc.instances[INTEL_FBC_A];
> else
> return NULL;
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
> index 9b36654b593d..58325f530670 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_core.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
> @@ -398,6 +398,10 @@ struct intel_display {
> const struct dram_info *info;
> } dram;
>
> + struct {
> + struct intel_fbc *instances[I915_MAX_FBCS];
> + } fbc;
> +
> struct {
> /* list of fbdev register on this device */
> struct intel_fbdev *fbdev;
> @@ -615,7 +619,6 @@ struct intel_display {
> struct drm_dp_tunnel_mgr *dp_tunnel_mgr;
> struct intel_audio audio;
> struct intel_dpll_global dpll;
> - struct intel_fbc *fbc[I915_MAX_FBCS];
> struct intel_frontbuffer_tracking fb_tracking;
> struct intel_hotplug hotplug;
> struct intel_opregion *opregion;
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
> index d9cab25d414a..dcdfcff80de3 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> @@ -69,7 +69,7 @@
>
> #define for_each_intel_fbc(__display, __fbc, __fbc_id) \
> for_each_fbc_id((__display), (__fbc_id)) \
> - for_each_if((__fbc) = (__display)->fbc[(__fbc_id)])
> + for_each_if((__fbc) = (__display)->fbc.instances[(__fbc_id)])
>
> struct intel_fbc_funcs {
> void (*activate)(struct intel_fbc *fbc);
> @@ -2211,7 +2211,7 @@ void intel_fbc_init(struct intel_display *display)
> display->params.enable_fbc);
>
> for_each_fbc_id(display, fbc_id)
> - display->fbc[fbc_id] = intel_fbc_create(display, fbc_id);
> + display->fbc.instances[fbc_id] = intel_fbc_create(display, fbc_id);
> }
>
> /**
> @@ -2330,7 +2330,7 @@ void intel_fbc_debugfs_register(struct intel_display *display)
> {
> struct intel_fbc *fbc;
>
> - fbc = display->fbc[INTEL_FBC_A];
> + fbc = display->fbc.instances[INTEL_FBC_A];
> if (fbc)
> intel_fbc_debugfs_add(fbc, display->drm->debugfs_root);
> }
> diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
> index 89c8003ccfe7..48af74963e74 100644
> --- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
> +++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
> @@ -2444,7 +2444,7 @@ static struct intel_fbc *skl_plane_fbc(struct intel_display *display,
> enum intel_fbc_id fbc_id = skl_fbc_id_for_pipe(pipe);
>
> if (skl_plane_has_fbc(display, fbc_id, plane_id))
> - return display->fbc[fbc_id];
> + return display->fbc.instances[fbc_id];
> else
> return NULL;
> }
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 2/2] drm/i915/xe3p_lpd: Enable display use of system cache for FBC
2025-11-23 16:01 ` [PATCH v3 2/2] drm/i915/xe3p_lpd: Enable display use of system cache for FBC Vinod Govindapillai
@ 2025-11-24 11:27 ` Jani Nikula
2025-11-24 13:32 ` Govindapillai, Vinod
2025-11-24 16:25 ` Jani Nikula
1 sibling, 1 reply; 12+ messages in thread
From: Jani Nikula @ 2025-11-24 11:27 UTC (permalink / raw)
To: Vinod Govindapillai, intel-xe, intel-gfx
Cc: vinod.govindapillai, matthew.d.roper, gustavo.sousa,
ville.syrjala
On Sun, 23 Nov 2025, Vinod Govindapillai <vinod.govindapillai@intel.com> wrote:
> One of the FBC instances can utilize the reserved area of SoC
> level cache for the fbc transactions to benefit reduced memory
> system power especially in idle scenarios. Reserved area of the
> system cache can be assigned to an fbc instance by configuring
> the cacheability configuration register with offset of the
> compressed frame buffer in stolen memoty of that fbc. There is
> a limit to this reserved area which is programmable and for
> xe3p_lpd the limit is defined as 2MB.
>
> v2: - better to track fbc sys cache usage from intel_display level,
> sanitize the cacheability config register on probe (Matt)
> - limit this for integrated graphics solutions, confirmed that
> no default value set for cache range by hw (Gustavo)
>
> v3: - changes related to the use of fbc substruct in intel_display
> - use intel_de_write() instead of intel_rmw() by hardcoding the
> default value fields
>
I think overall the implementation feels a bit overwhelming. I mean
there are so many functions, so many checks, to the point of being
excessive.
Some comments inline.
> Bspec: 68881, 74722
> Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
> ---
> .../gpu/drm/i915/display/intel_display_core.h | 3 +
> .../drm/i915/display/intel_display_device.h | 1 +
> drivers/gpu/drm/i915/display/intel_fbc.c | 93 +++++++++++++++++++
> drivers/gpu/drm/i915/display/intel_fbc_regs.h | 10 ++
> 4 files changed, 107 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
> index 58325f530670..f557c9293d33 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_core.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
> @@ -400,6 +400,9 @@ struct intel_display {
>
> struct {
> struct intel_fbc *instances[I915_MAX_FBCS];
> +
> + /* xe3p_lpd+ : FBC instance utlizing the system cache */
Please no space before :, *utilizing
> + enum intel_fbc_id sys_cache_id;
> } fbc;
>
> struct {
> diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
> index b559ef43d547..b74cb69ccc85 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_device.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_device.h
> @@ -173,6 +173,7 @@ struct intel_display_platforms {
> #define HAS_DSC_MST(__display) (DISPLAY_VER(__display) >= 12 && HAS_DSC(__display))
> #define HAS_FBC(__display) (DISPLAY_RUNTIME_INFO(__display)->fbc_mask != 0)
> #define HAS_FBC_DIRTY_RECT(__display) (DISPLAY_VER(__display) >= 30)
> +#define HAS_FBC_SYS_CACHE(__display) (DISPLAY_VER(__display) >= 35 && !(__display)->platform.dgfx)
> #define HAS_FPGA_DBG_UNCLAIMED(__display) (DISPLAY_INFO(__display)->has_fpga_dbg)
> #define HAS_FW_BLC(__display) (DISPLAY_VER(__display) >= 3)
> #define HAS_GMBUS_BURST_READ(__display) (DISPLAY_VER(__display) >= 10 || (__display)->platform.kabylake)
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
> index dcdfcff80de3..d7e913792518 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> @@ -71,6 +71,10 @@
> for_each_fbc_id((__display), (__fbc_id)) \
> for_each_if((__fbc) = (__display)->fbc.instances[(__fbc_id)])
>
> +#define SYS_CACHE_FBC_INSTANCE_NONE I915_MAX_FBCS
> +#define IS_SYS_CACHE_FBC_INSTANCE_NONE(__display) ((__display)->fbc.sys_cache_id == SYS_CACHE_FBC_INSTANCE_NONE)
The only user of this has !IS_SYS_CACHE_FBC_INSTANCE_NONE(display)
i.e. "if not none".
Would be more useful to check if it's "set" or "valid", and avoid the
double negative. And use a shorter name. Maybe a static inline function.
But I'm not even sure the display->fbc.sys_cache_id needs to be
abstracted away. It's not a complicated thing, and, more importantly,
it's all within the same file. If outside access was needed, yes,
abstract, but here, not convinced.
Maybe:
if (fbc_sys_cache_id_valid(display->fbc.sys_cache_id))
I also don't think *all* of these functions should be prefixed with
xe3p_lpd_ because that's a monster, and makes all of this difficult to
read.
> +#define IS_SYS_CACHE_FBC_INSTANCE_EQUALS(__display, id) ((__display)->fbc.sys_cache_id == (id))
I think this feels cumbersome. Why not just check
if (display->fbc.sys_cache_id == id)
inline, and it's obvious?
> +
> struct intel_fbc_funcs {
> void (*activate)(struct intel_fbc *fbc);
> void (*deactivate)(struct intel_fbc *fbc);
> @@ -941,6 +945,79 @@ static void intel_fbc_program_workarounds(struct intel_fbc *fbc)
> fbc_compressor_clkgate_disable_wa(fbc, true);
> }
>
> +static void xe3p_lpd_fbc_set_sys_cache_fbc_id(struct intel_display *display,
> + enum intel_fbc_id fbc_id)
> +{
> + display->fbc.sys_cache_id = fbc_id;
> +}
Again, I'm not sure if this function is really needed. Just inline?
> +
> +static void xe3p_lpd_fbc_commit_sys_cache_usage(struct intel_display *display,
> + u32 reg)
> +{
> + intel_de_write(display, XE3P_LPD_FBC_SYS_CACHE_USAGE_CFG, reg);
> +}
Not sure if this is needed. Just inline?
> +
> +static int xe3p_lpd_fbc_get_cache_limit(void)
> +{
> + /* Default 2MB for xe3p_lpd */
> + return 2 * 1024 * 1024;
> +}
Ditto. Especially odd how this multiplies and the user the divides by 64
* 1024.
> +
> +static void xe3p_lpd_fbc_clear_sys_cache_usage(struct intel_display *display)
> +{
> + /* Clear all the fields except the default fields */
> + u32 default_fields = FBC_SYS_CACHE_READ_ENABLE;
> +
> + xe3p_lpd_fbc_commit_sys_cache_usage(display, default_fields);
> +
> + /* Mark that no FBC instance utilize the system cache */
> + xe3p_lpd_fbc_set_sys_cache_fbc_id(display, SYS_CACHE_FBC_INSTANCE_NONE);
> +}
My point above is that this function only calls wrappers and really does
nothing itself. It's too many layers for a simple thing.
fbc_sys_cache_disable()?
> +
> +static void xe3p_lpd_fbc_set_sys_cache_usage(const struct intel_fbc *fbc)
> +{
> + struct intel_display *display = fbc->display;
> + /* limit to be configured to the register in 64k byte chunks */
> + int range = xe3p_lpd_fbc_get_cache_limit() / (64 * 1024);
> + /* offset to be configured to the register in 4K byte chunks */
> + int offset = i915_gem_stolen_node_offset(fbc->compressed_fb) / (4 * 1024);
> + /* Cache read enable is enabled by default */
> + u32 usage = FBC_SYS_CACHE_TAG_USE_RES_SPACE |
> + FBC_SYS_CACHEABLE_RANGE(range) |
> + FBC_SYS_CACHE_START_BASE(offset) |
> + FBC_SYS_CACHE_READ_ENABLE;
> +
> + lockdep_assert_held(&fbc->lock);
> +
> + xe3p_lpd_fbc_commit_sys_cache_usage(display, usage);
> +
> + xe3p_lpd_fbc_set_sys_cache_fbc_id(display, fbc->id);
> +}
Ditto.
fbc_sys_cache_enable()?
> +
> +static void xe3p_lpd_fbc_update_sys_cache_usage(const struct intel_fbc *fbc,
> + bool set)
> +{
> + struct intel_display *display = fbc->display;
> +
> + lockdep_assert_held(&fbc->lock);
> +
> + /* system cache for fbc already reserved */
> + if (set && !IS_SYS_CACHE_FBC_INSTANCE_NONE(display))
> + return;
> +
> + /* cannot clear if "fbc" did not reserve the cache */
> + if (!set && !IS_SYS_CACHE_FBC_INSTANCE_EQUALS(display, fbc->id))
> + return;
> +
> + if (set)
> + xe3p_lpd_fbc_set_sys_cache_usage(fbc);
> + else
> + xe3p_lpd_fbc_clear_sys_cache_usage(display);
> +
> + drm_dbg_kms(display->drm, "System cacheability usage for FBC[%d] %s\n",
> + fbc->id, set ? "configured" : "cleared");
> +}
Most of this function is two separate paths based on the parameter. I
think it would benefit from actually being two separate functions. So
why not just merge this with xe3p_lpd_fbc_set_sys_cache_usage() and
xe3p_lpd_fbc_clear_sys_cache_usage()?
> +
> static void __intel_fbc_cleanup_cfb(struct intel_fbc *fbc)
> {
> if (WARN_ON(intel_fbc_hw_is_active(fbc)))
> @@ -967,6 +1044,9 @@ void intel_fbc_cleanup(struct intel_display *display)
>
> kfree(fbc);
> }
> +
> + if (HAS_FBC_SYS_CACHE(display))
> + xe3p_lpd_fbc_clear_sys_cache_usage(display);
I don't think this should check for HAS_FBC_SYS_CACHE(). I think
internally the function being called should check if sys cache has been
set. And make sure it's only set on where it's available.
> }
>
> static bool i8xx_fbc_stride_is_valid(const struct intel_plane_state *plane_state)
> @@ -1780,6 +1860,9 @@ static void __intel_fbc_disable(struct intel_fbc *fbc)
>
> __intel_fbc_cleanup_cfb(fbc);
>
> + if (HAS_FBC_SYS_CACHE(display))
> + xe3p_lpd_fbc_update_sys_cache_usage(fbc, false);
> +
Ditto. I'm also not sure why some places call the version with params,
and some others the version without params.
> /* wa_18038517565 Enable DPFC clock gating after FBC disable */
> if (display->platform.dg2 || DISPLAY_VER(display) >= 14)
> fbc_compressor_clkgate_disable_wa(fbc, false);
> @@ -1972,6 +2055,9 @@ static void __intel_fbc_enable(struct intel_atomic_state *state,
>
> intel_fbc_program_workarounds(fbc);
> intel_fbc_program_cfb(fbc);
> +
> + if (HAS_FBC_SYS_CACHE(display))
> + xe3p_lpd_fbc_update_sys_cache_usage(fbc, true);
xe3p_lpd_fbc_update_sys_cache_usage() is the function that should check
for HAS_FBC_SYS_CACHE() in one place.
Well, maybe it should be renamed fbc_sys_cache_enable().
> }
>
> /**
> @@ -2212,6 +2298,9 @@ void intel_fbc_init(struct intel_display *display)
>
> for_each_fbc_id(display, fbc_id)
> display->fbc.instances[fbc_id] = intel_fbc_create(display, fbc_id);
> +
> + /* Mark that no FBC instance is using the system cache */
> + xe3p_lpd_fbc_set_sys_cache_fbc_id(display, SYS_CACHE_FBC_INSTANCE_NONE);
> }
>
> /**
> @@ -2231,6 +2320,10 @@ void intel_fbc_sanitize(struct intel_display *display)
> if (intel_fbc_hw_is_active(fbc))
> intel_fbc_hw_deactivate(fbc);
> }
> +
> + /* Ensure the sys cache usage register gets cleared */
> + if (HAS_FBC_SYS_CACHE(display))
> + xe3p_lpd_fbc_clear_sys_cache_usage(display);
Ditto about checking for valid sys cache inside, not
HAS_FBC_SYS_CACHE().
> }
>
> static int intel_fbc_debugfs_status_show(struct seq_file *m, void *unused)
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc_regs.h b/drivers/gpu/drm/i915/display/intel_fbc_regs.h
> index b1d0161a3196..d2d889fa4bed 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc_regs.h
> +++ b/drivers/gpu/drm/i915/display/intel_fbc_regs.h
> @@ -126,4 +126,14 @@
> #define FBC_REND_NUKE REG_BIT(2)
> #define FBC_REND_CACHE_CLEAN REG_BIT(1)
>
> +#define XE3P_LPD_FBC_SYS_CACHE_USAGE_CFG _MMIO(0x1344E0)
> +#define FBC_SYS_CACHE_START_BASE_MASK REG_GENMASK(31, 16)
> +#define FBC_SYS_CACHE_START_BASE(base) REG_FIELD_PREP(FBC_SYS_CACHE_START_BASE_MASK, (base))
> +#define FBC_SYS_CACHEABLE_RANGE_MASK REG_GENMASK(15, 4)
> +#define FBC_SYS_CACHEABLE_RANGE(range) REG_FIELD_PREP(FBC_SYS_CACHEABLE_RANGE_MASK, (range))
> +#define FBC_SYS_CACHE_TAG_MASK REG_GENMASK(3, 2)
> +#define FBC_SYS_CACHE_TAG_DONT_CACHE REG_FIELD_PREP(FBC_SYS_CACHE_TAG_MASK, 0)
> +#define FBC_SYS_CACHE_TAG_USE_RES_SPACE REG_FIELD_PREP(FBC_SYS_CACHE_TAG_MASK, 3)
> +#define FBC_SYS_CACHE_READ_ENABLE REG_BIT(0)
> +
> #endif /* __INTEL_FBC_REGS__ */
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 2/2] drm/i915/xe3p_lpd: Enable display use of system cache for FBC
2025-11-24 11:27 ` Jani Nikula
@ 2025-11-24 13:32 ` Govindapillai, Vinod
2025-11-24 16:23 ` Jani Nikula
0 siblings, 1 reply; 12+ messages in thread
From: Govindapillai, Vinod @ 2025-11-24 13:32 UTC (permalink / raw)
To: intel-xe@lists.freedesktop.org, Nikula, Jani,
intel-gfx@lists.freedesktop.org
Cc: Sousa, Gustavo, Roper, Matthew D, Syrjala, Ville
Hi Jani,
Thanks for the input.. replies inline...
On Mon, 2025-11-24 at 13:27 +0200, Jani Nikula wrote:
> On Sun, 23 Nov 2025, Vinod Govindapillai
> <vinod.govindapillai@intel.com> wrote:
> > One of the FBC instances can utilize the reserved area of SoC
> > level cache for the fbc transactions to benefit reduced memory
> > system power especially in idle scenarios. Reserved area of the
> > system cache can be assigned to an fbc instance by configuring
> > the cacheability configuration register with offset of the
> > compressed frame buffer in stolen memoty of that fbc. There is
> > a limit to this reserved area which is programmable and for
> > xe3p_lpd the limit is defined as 2MB.
> >
> > v2: - better to track fbc sys cache usage from intel_display level,
> > sanitize the cacheability config register on probe (Matt)
> > - limit this for integrated graphics solutions, confirmed that
> > no default value set for cache range by hw (Gustavo)
> >
> > v3: - changes related to the use of fbc substruct in intel_display
> > - use intel_de_write() instead of intel_rmw() by hardcoding the
> > default value fields
> >
>
> I think overall the implementation feels a bit overwhelming. I mean
> there are so many functions, so many checks, to the point of being
> excessive.
>
> Some comments inline.
>
> > Bspec: 68881, 74722
> > Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
> > ---
> > .../gpu/drm/i915/display/intel_display_core.h | 3 +
> > .../drm/i915/display/intel_display_device.h | 1 +
> > drivers/gpu/drm/i915/display/intel_fbc.c | 93
> > +++++++++++++++++++
> > drivers/gpu/drm/i915/display/intel_fbc_regs.h | 10 ++
> > 4 files changed, 107 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h
> > b/drivers/gpu/drm/i915/display/intel_display_core.h
> > index 58325f530670..f557c9293d33 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display_core.h
> > +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
> > @@ -400,6 +400,9 @@ struct intel_display {
> >
> > struct {
> > struct intel_fbc *instances[I915_MAX_FBCS];
> > +
> > + /* xe3p_lpd+ : FBC instance utlizing the system
> > cache */
>
> Please no space before :, *utilizing
>
> > + enum intel_fbc_id sys_cache_id;
> > } fbc;
> >
> > struct {
> > diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h
> > b/drivers/gpu/drm/i915/display/intel_display_device.h
> > index b559ef43d547..b74cb69ccc85 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display_device.h
> > +++ b/drivers/gpu/drm/i915/display/intel_display_device.h
> > @@ -173,6 +173,7 @@ struct intel_display_platforms {
> > #define HAS_DSC_MST(__display) (DISPLAY_VER(__display) >=
> > 12 && HAS_DSC(__display))
> > #define
> > HAS_FBC(__display) (DISPLAY_RUNTIME_INFO(__display)->fbc_mask != 0)
> > #define HAS_FBC_DIRTY_RECT(__display) (DISPLAY_VER(__display) >=
> > 30)
> > +#define HAS_FBC_SYS_CACHE(__display) (DISPLAY_VER(__display) >=
> > 35 && !(__display)->platform.dgfx)
> > #define
> > HAS_FPGA_DBG_UNCLAIMED(__display) (DISPLAY_INFO(__display)->has_fpga_dbg)
> > #define HAS_FW_BLC(__display) (DISPLAY_VER(__display) >=
> > 3)
> > #define
> > HAS_GMBUS_BURST_READ(__display) (DISPLAY_VER(__display) >= 10 || (__display)->platform.kabylake)
> > diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c
> > b/drivers/gpu/drm/i915/display/intel_fbc.c
> > index dcdfcff80de3..d7e913792518 100644
> > --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> > +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> > @@ -71,6 +71,10 @@
> > for_each_fbc_id((__display), (__fbc_id)) \
> > for_each_if((__fbc) = (__display)-
> > >fbc.instances[(__fbc_id)])
> >
> > +#define
> > SYS_CACHE_FBC_INSTANCE_NONE I915_MAX_FBCS
> > +#define
> > IS_SYS_CACHE_FBC_INSTANCE_NONE(__display) ((__display)->fbc.sys_cache_id==SYS_CACHE_FBC_INSTANCE_NONE)
>
> The only user of this has !IS_SYS_CACHE_FBC_INSTANCE_NONE(display)
> i.e. "if not none".
>
> Would be more useful to check if it's "set" or "valid", and avoid the
> double negative. And use a shorter name. Maybe a static inline
> function.
>
> But I'm not even sure the display->fbc.sys_cache_id needs to be
> abstracted away. It's not a complicated thing, and, more importantly,
> it's all within the same file. If outside access was needed, yes,
> abstract, but here, not convinced.
>
> Maybe:
>
> if (fbc_sys_cache_id_valid(display->fbc.sys_cache_id))
>
> I also don't think *all* of these functions should be prefixed with
> xe3p_lpd_ because that's a monster, and makes all of this difficult
> to
> read.
>
> > +#define IS_SYS_CACHE_FBC_INSTANCE_EQUALS(__display,
> > id) ((__display)->fbc.sys_cache_id == (id))
>
> I think this feels cumbersome. Why not just check
>
> if (display->fbc.sys_cache_id == id)
>
> inline, and it's obvious?
>
> > +
> > struct intel_fbc_funcs {
> > void (*activate)(struct intel_fbc *fbc);
> > void (*deactivate)(struct intel_fbc *fbc);
> > @@ -941,6 +945,79 @@ static void
> > intel_fbc_program_workarounds(struct intel_fbc *fbc)
> > fbc_compressor_clkgate_disable_wa(fbc, true);
> > }
> >
> > +static void xe3p_lpd_fbc_set_sys_cache_fbc_id(struct intel_display
> > *display,
> > + enum intel_fbc_id
> > fbc_id)
> > +{
> > + display->fbc.sys_cache_id = fbc_id;
> > +}
>
> Again, I'm not sure if this function is really needed. Just inline?
Ack for the above suggestions. About the function naming, yeah it is
indeed bit complex, but was following the functions names being
followed in this file. Should it be prefixed with nvl /intel or just
fbc? instead? Any suggestion?
>
> > +
> > +static void xe3p_lpd_fbc_commit_sys_cache_usage(struct
> > intel_display *display,
> > + u32 reg)
> > +{
> > + intel_de_write(display, XE3P_LPD_FBC_SYS_CACHE_USAGE_CFG,
> > reg);
> > +}
>
> Not sure if this is needed. Just inline?
Two paths update this register - setting up the cache for a fbc and
clearing it. Also soon there is going to be a workaround implemented
which we need to disable the read cache enable bit which is set on by
default. So I was thinking of intercept here and apply the wa
if (intel_display_wa(display, xxxx))
reg &= ~FBC_SYS_CACHE_READ_ENABLE;
>
> > +
> > +static int xe3p_lpd_fbc_get_cache_limit(void)
> > +{
> > + /* Default 2MB for xe3p_lpd */
> > + return 2 * 1024 * 1024;
> > +}
>
> Ditto. Especially odd how this multiplies and the user the divides by
> 64
> * 1024.
Initially from HAS my understanding was that this was supposed to be
set by a pre-os fw and driver dont modify this field. And this can
change per platform. But from the recent logs fro, these fields are set
as 0 and has to be programmed by the driver. (I am clarifying this with
the HW team). Anyway, this need to be variated per platform. In some
other component such 2MB was hard coded like this. So thought of
adopting that. Any suggestion?
> > +
> > +static void xe3p_lpd_fbc_clear_sys_cache_usage(struct
> > intel_display *display)
> > +{
> > + /* Clear all the fields except the default fields */
> > + u32 default_fields = FBC_SYS_CACHE_READ_ENABLE;
> > +
> > + xe3p_lpd_fbc_commit_sys_cache_usage(display,
> > default_fields);
> > +
> > + /* Mark that no FBC instance utilize the system cache */
> > + xe3p_lpd_fbc_set_sys_cache_fbc_id(display,
> > SYS_CACHE_FBC_INSTANCE_NONE);
> > +}
>
> My point above is that this function only calls wrappers and really
> does
> nothing itself. It's too many layers for a simple thing.
>
> fbc_sys_cache_disable()?
>
> > +
> > +static void xe3p_lpd_fbc_set_sys_cache_usage(const struct
> > intel_fbc *fbc)
> > +{
> > + struct intel_display *display = fbc->display;
> > + /* limit to be configured to the register in 64k byte
> > chunks */
> > + int range = xe3p_lpd_fbc_get_cache_limit() / (64 * 1024);
> > + /* offset to be configured to the register in 4K byte
> > chunks */
> > + int offset = i915_gem_stolen_node_offset(fbc-
> > >compressed_fb) / (4 * 1024);
> > + /* Cache read enable is enabled by default */
> > + u32 usage = FBC_SYS_CACHE_TAG_USE_RES_SPACE |
> > + FBC_SYS_CACHEABLE_RANGE(range) |
> > + FBC_SYS_CACHE_START_BASE(offset) |
> > + FBC_SYS_CACHE_READ_ENABLE;
> > +
> > + lockdep_assert_held(&fbc->lock);
> > +
> > + xe3p_lpd_fbc_commit_sys_cache_usage(display, usage);
> > +
> > + xe3p_lpd_fbc_set_sys_cache_fbc_id(display, fbc->id);
> > +}
>
> Ditto.
>
> fbc_sys_cache_enable()?
>
> > +
> > +static void xe3p_lpd_fbc_update_sys_cache_usage(const struct
> > intel_fbc *fbc,
> > + bool set)
> > +{
> > + struct intel_display *display = fbc->display;
> > +
> > + lockdep_assert_held(&fbc->lock);
> > +
> > + /* system cache for fbc already reserved */
> > + if (set && !IS_SYS_CACHE_FBC_INSTANCE_NONE(display))
> > + return;
> > +
> > + /* cannot clear if "fbc" did not reserve the cache */
> > + if (!set && !IS_SYS_CACHE_FBC_INSTANCE_EQUALS(display,
> > fbc->id))
> > + return;
> > +
> > + if (set)
> > + xe3p_lpd_fbc_set_sys_cache_usage(fbc);
> > + else
> > + xe3p_lpd_fbc_clear_sys_cache_usage(display);
> > +
> > + drm_dbg_kms(display->drm, "System cacheability usage for
> > FBC[%d] %s\n",
> > + fbc->id, set ? "configured" : "cleared");
> > +}
>
> Most of this function is two separate paths based on the parameter. I
> think it would benefit from actually being two separate functions. So
> why not just merge this with xe3p_lpd_fbc_set_sys_cache_usage() and
> xe3p_lpd_fbc_clear_sys_cache_usage()?
Actually there are three paths to update this register (two separate
path to clear this register)
1. As part of enable FBC - depends on the fbc instance (with fbc mutex
taken). If sys_cache is not reserved by any other instance.
2. As part of disable FBC - depends on the fbc instance to avoid
clearing if this fbc didnt reserve the cache space. (with fbc mutex
taken)
3. Clear this register as part of sanitize call (upon setup_hw_state()
calls upon probe and resume) and intel_fbc_cleanup() upon module
removal. Not depend on the fbc instance.
So something like this make sense?
fbc_program_sys_cache(u32 reg)
{
intel_de_write(reg)
}
fbc_sys_cache_reset(display)
{
if (!HAS_FBC_SYS_CACHE())
return
fbc_program_sys_cache(0)
fbc.sys_cache_id = SYS_CACHE_FBC_INSTANCE_NONE
}
fbc_sys_cache_disable(fbc)
{
if (!HAS_FBC_SYS_CACHE())
return
if (fbc.sys_cache_id != fbc->id)
return;
fbc_sys_cache_reset(display)
}
fbc_sys_cache_enable(fbc)
{
if (!HAS_FBC_SYS_CACHE())
return
if (fbc.sys_cache_id != SYS_CACHE_FBC_INSTANCE_NONE)
return;
fbc_program_sys_cache(val)
fbc.sys_cache_id = fbc-->id
}
intel_fbc_enable() will call fbc_sys_cache_enable(fbc)
__intel_fbc_disable() will call fbc_sys_cache_disable(fbc)
and
intel_fbc_cleanup() and intel_fbc_sanitize() will call
fbc_sys_cache_reset(display) as a general cleanup for this register.
>
> > +
> > static void __intel_fbc_cleanup_cfb(struct intel_fbc *fbc)
> > {
> > if (WARN_ON(intel_fbc_hw_is_active(fbc)))
> > @@ -967,6 +1044,9 @@ void intel_fbc_cleanup(struct intel_display
> > *display)
> >
> > kfree(fbc);
> > }
> > +
> > + if (HAS_FBC_SYS_CACHE(display))
> > + xe3p_lpd_fbc_clear_sys_cache_usage(display);
>
> I don't think this should check for HAS_FBC_SYS_CACHE(). I think
> internally the function being called should check if sys cache has
> been
> set. And make sure it's only set on where it's available.
>
> > }
> >
> > static bool i8xx_fbc_stride_is_valid(const struct
> > intel_plane_state *plane_state)
> > @@ -1780,6 +1860,9 @@ static void __intel_fbc_disable(struct
> > intel_fbc *fbc)
> >
> > __intel_fbc_cleanup_cfb(fbc);
> >
> > + if (HAS_FBC_SYS_CACHE(display))
> > + xe3p_lpd_fbc_update_sys_cache_usage(fbc, false);
> > +
>
> Ditto. I'm also not sure why some places call the version with
> params,
> and some others the version without params.
>
> > /* wa_18038517565 Enable DPFC clock gating after FBC
> > disable */
> > if (display->platform.dg2 || DISPLAY_VER(display) >= 14)
> > fbc_compressor_clkgate_disable_wa(fbc, false);
> > @@ -1972,6 +2055,9 @@ static void __intel_fbc_enable(struct
> > intel_atomic_state *state,
> >
> > intel_fbc_program_workarounds(fbc);
> > intel_fbc_program_cfb(fbc);
> > +
> > + if (HAS_FBC_SYS_CACHE(display))
> > + xe3p_lpd_fbc_update_sys_cache_usage(fbc, true);
>
> xe3p_lpd_fbc_update_sys_cache_usage() is the function that should
> check
> for HAS_FBC_SYS_CACHE() in one place.
>
> Well, maybe it should be renamed fbc_sys_cache_enable().
>
> > }
> >
> > /**
> > @@ -2212,6 +2298,9 @@ void intel_fbc_init(struct intel_display
> > *display)
> >
> > for_each_fbc_id(display, fbc_id)
> > display->fbc.instances[fbc_id] =
> > intel_fbc_create(display, fbc_id);
> > +
> > + /* Mark that no FBC instance is using the system cache */
> > + xe3p_lpd_fbc_set_sys_cache_fbc_id(display,
> > SYS_CACHE_FBC_INSTANCE_NONE);
> > }
> >
> > /**
> > @@ -2231,6 +2320,10 @@ void intel_fbc_sanitize(struct intel_display
> > *display)
> > if (intel_fbc_hw_is_active(fbc))
> > intel_fbc_hw_deactivate(fbc);
> > }
> > +
> > + /* Ensure the sys cache usage register gets cleared */
> > + if (HAS_FBC_SYS_CACHE(display))
> > + xe3p_lpd_fbc_clear_sys_cache_usage(display);
>
> Ditto about checking for valid sys cache inside, not
> HAS_FBC_SYS_CACHE().
>
> > }
> >
> > static int intel_fbc_debugfs_status_show(struct seq_file *m, void
> > *unused)
> > diff --git a/drivers/gpu/drm/i915/display/intel_fbc_regs.h
> > b/drivers/gpu/drm/i915/display/intel_fbc_regs.h
> > index b1d0161a3196..d2d889fa4bed 100644
> > --- a/drivers/gpu/drm/i915/display/intel_fbc_regs.h
> > +++ b/drivers/gpu/drm/i915/display/intel_fbc_regs.h
> > @@ -126,4 +126,14 @@
> > #define FBC_REND_NUKE REG_BIT(2)
> > #define FBC_REND_CACHE_CLEAN REG_BIT(1)
> >
> > +#define XE3P_LPD_FBC_SYS_CACHE_USAGE_CFG _MMIO(0x1344E0)
> > +#define
> > FBC_SYS_CACHE_START_BASE_MASK REG_GENMASK(31, 16)
> > +#define
> > FBC_SYS_CACHE_START_BASE(base) REG_FIELD_PREP(FBC_SYS_CACHE_START_BASE_MASK,(base))
> > +#define FBC_SYS_CACHEABLE_RANGE_MASK REG_GENMASK(15, 4)
> > +#define
> > FBC_SYS_CACHEABLE_RANGE(range) REG_FIELD_PREP(FBC_SYS_CACHEABLE_RANGE_MASK,(range))
> > +#define FBC_SYS_CACHE_TAG_MASK REG_GENMASK(3, 2)
> > +#define
> > FBC_SYS_CACHE_TAG_DONT_CACHE REG_FIELD_PREP(FBC_SYS_CACHE_TAG_MASK,0)
> > +#define
> > FBC_SYS_CACHE_TAG_USE_RES_SPACE REG_FIELD_PREP(FBC_SYS_CACHE_TAG_MASK,3)
> > +#define FBC_SYS_CACHE_READ_ENABLE REG_BIT(0)
> > +
> > #endif /* __INTEL_FBC_REGS__ */
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 2/2] drm/i915/xe3p_lpd: Enable display use of system cache for FBC
2025-11-24 13:32 ` Govindapillai, Vinod
@ 2025-11-24 16:23 ` Jani Nikula
0 siblings, 0 replies; 12+ messages in thread
From: Jani Nikula @ 2025-11-24 16:23 UTC (permalink / raw)
To: Govindapillai, Vinod, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org
Cc: Sousa, Gustavo, Roper, Matthew D, Syrjala, Ville
On Mon, 24 Nov 2025, "Govindapillai, Vinod" <vinod.govindapillai@intel.com> wrote:
> Hi Jani,
>
> Thanks for the input.. replies inline...
>
> On Mon, 2025-11-24 at 13:27 +0200, Jani Nikula wrote:
>> On Sun, 23 Nov 2025, Vinod Govindapillai
>> <vinod.govindapillai@intel.com> wrote:
>> > One of the FBC instances can utilize the reserved area of SoC
>> > level cache for the fbc transactions to benefit reduced memory
>> > system power especially in idle scenarios. Reserved area of the
>> > system cache can be assigned to an fbc instance by configuring
>> > the cacheability configuration register with offset of the
>> > compressed frame buffer in stolen memoty of that fbc. There is
>> > a limit to this reserved area which is programmable and for
>> > xe3p_lpd the limit is defined as 2MB.
>> >
>> > v2: - better to track fbc sys cache usage from intel_display level,
>> > sanitize the cacheability config register on probe (Matt)
>> > - limit this for integrated graphics solutions, confirmed that
>> > no default value set for cache range by hw (Gustavo)
>> >
>> > v3: - changes related to the use of fbc substruct in intel_display
>> > - use intel_de_write() instead of intel_rmw() by hardcoding the
>> > default value fields
>> >
>>
>> I think overall the implementation feels a bit overwhelming. I mean
>> there are so many functions, so many checks, to the point of being
>> excessive.
>>
>> Some comments inline.
>>
>> > Bspec: 68881, 74722
>> > Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
>> > ---
>> > .../gpu/drm/i915/display/intel_display_core.h | 3 +
>> > .../drm/i915/display/intel_display_device.h | 1 +
>> > drivers/gpu/drm/i915/display/intel_fbc.c | 93
>> > +++++++++++++++++++
>> > drivers/gpu/drm/i915/display/intel_fbc_regs.h | 10 ++
>> > 4 files changed, 107 insertions(+)
>> >
>> > diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h
>> > b/drivers/gpu/drm/i915/display/intel_display_core.h
>> > index 58325f530670..f557c9293d33 100644
>> > --- a/drivers/gpu/drm/i915/display/intel_display_core.h
>> > +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
>> > @@ -400,6 +400,9 @@ struct intel_display {
>> >
>> > struct {
>> > struct intel_fbc *instances[I915_MAX_FBCS];
>> > +
>> > + /* xe3p_lpd+ : FBC instance utlizing the system
>> > cache */
>>
>> Please no space before :, *utilizing
>>
>> > + enum intel_fbc_id sys_cache_id;
>> > } fbc;
>> >
>> > struct {
>> > diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h
>> > b/drivers/gpu/drm/i915/display/intel_display_device.h
>> > index b559ef43d547..b74cb69ccc85 100644
>> > --- a/drivers/gpu/drm/i915/display/intel_display_device.h
>> > +++ b/drivers/gpu/drm/i915/display/intel_display_device.h
>> > @@ -173,6 +173,7 @@ struct intel_display_platforms {
>> > #define HAS_DSC_MST(__display) (DISPLAY_VER(__display) >=
>> > 12 && HAS_DSC(__display))
>> > #define
>> > HAS_FBC(__display) (DISPLAY_RUNTIME_INFO(__display)->fbc_mask != 0)
>> > #define HAS_FBC_DIRTY_RECT(__display) (DISPLAY_VER(__display) >=
>> > 30)
>> > +#define HAS_FBC_SYS_CACHE(__display) (DISPLAY_VER(__display) >=
>> > 35 && !(__display)->platform.dgfx)
>> > #define
>> > HAS_FPGA_DBG_UNCLAIMED(__display) (DISPLAY_INFO(__display)->has_fpga_dbg)
>> > #define HAS_FW_BLC(__display) (DISPLAY_VER(__display) >=
>> > 3)
>> > #define
>> > HAS_GMBUS_BURST_READ(__display) (DISPLAY_VER(__display) >= 10 || (__display)->platform.kabylake)
>> > diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c
>> > b/drivers/gpu/drm/i915/display/intel_fbc.c
>> > index dcdfcff80de3..d7e913792518 100644
>> > --- a/drivers/gpu/drm/i915/display/intel_fbc.c
>> > +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
>> > @@ -71,6 +71,10 @@
>> > for_each_fbc_id((__display), (__fbc_id)) \
>> > for_each_if((__fbc) = (__display)-
>> > >fbc.instances[(__fbc_id)])
>> >
>> > +#define
>> > SYS_CACHE_FBC_INSTANCE_NONE I915_MAX_FBCS
>> > +#define
>> > IS_SYS_CACHE_FBC_INSTANCE_NONE(__display) ((__display)->fbc.sys_cache_id==SYS_CACHE_FBC_INSTANCE_NONE)
>>
>> The only user of this has !IS_SYS_CACHE_FBC_INSTANCE_NONE(display)
>> i.e. "if not none".
>>
>> Would be more useful to check if it's "set" or "valid", and avoid the
>> double negative. And use a shorter name. Maybe a static inline
>> function.
>>
>> But I'm not even sure the display->fbc.sys_cache_id needs to be
>> abstracted away. It's not a complicated thing, and, more importantly,
>> it's all within the same file. If outside access was needed, yes,
>> abstract, but here, not convinced.
>>
>> Maybe:
>>
>> if (fbc_sys_cache_id_valid(display->fbc.sys_cache_id))
>>
>> I also don't think *all* of these functions should be prefixed with
>> xe3p_lpd_ because that's a monster, and makes all of this difficult
>> to
>> read.
>>
>> > +#define IS_SYS_CACHE_FBC_INSTANCE_EQUALS(__display,
>> > id) ((__display)->fbc.sys_cache_id == (id))
>>
>> I think this feels cumbersome. Why not just check
>>
>> if (display->fbc.sys_cache_id == id)
>>
>> inline, and it's obvious?
>>
>> > +
>> > struct intel_fbc_funcs {
>> > void (*activate)(struct intel_fbc *fbc);
>> > void (*deactivate)(struct intel_fbc *fbc);
>> > @@ -941,6 +945,79 @@ static void
>> > intel_fbc_program_workarounds(struct intel_fbc *fbc)
>> > fbc_compressor_clkgate_disable_wa(fbc, true);
>> > }
>> >
>> > +static void xe3p_lpd_fbc_set_sys_cache_fbc_id(struct intel_display
>> > *display,
>> > + enum intel_fbc_id
>> > fbc_id)
>> > +{
>> > + display->fbc.sys_cache_id = fbc_id;
>> > +}
>>
>> Again, I'm not sure if this function is really needed. Just inline?
>
> Ack for the above suggestions. About the function naming, yeah it is
> indeed bit complex, but was following the functions names being
> followed in this file. Should it be prefixed with nvl /intel or just
> fbc? instead? Any suggestion?
I would honestly just go with fbc_sys_cache_ for all of them. We don't
have to prefix everything in the world with a platform that started a
new feature.
It's different when you deviate from existing functionality for a
platform, and need different implementations for different platforms.
>
>>
>> > +
>> > +static void xe3p_lpd_fbc_commit_sys_cache_usage(struct
>> > intel_display *display,
>> > + u32 reg)
>> > +{
>> > + intel_de_write(display, XE3P_LPD_FBC_SYS_CACHE_USAGE_CFG,
>> > reg);
>> > +}
>>
>> Not sure if this is needed. Just inline?
>
> Two paths update this register - setting up the cache for a fbc and
> clearing it. Also soon there is going to be a workaround implemented
> which we need to disable the read cache enable bit which is set on by
> default. So I was thinking of intercept here and apply the wa
>
> if (intel_display_wa(display, xxxx))
> reg &= ~FBC_SYS_CACHE_READ_ENABLE;
>
>>
>> > +
>> > +static int xe3p_lpd_fbc_get_cache_limit(void)
>> > +{
>> > + /* Default 2MB for xe3p_lpd */
>> > + return 2 * 1024 * 1024;
>> > +}
>>
>> Ditto. Especially odd how this multiplies and the user the divides by
>> 64
>> * 1024.
>
> Initially from HAS my understanding was that this was supposed to be
> set by a pre-os fw and driver dont modify this field. And this can
> change per platform. But from the recent logs fro, these fields are set
> as 0 and has to be programmed by the driver. (I am clarifying this with
> the HW team). Anyway, this need to be variated per platform. In some
> other component such 2MB was hard coded like this. So thought of
> adopting that. Any suggestion?
Okay. But if the function needs to do platform deviation, you'll need to
pass display to it.
>
>
>> > +
>> > +static void xe3p_lpd_fbc_clear_sys_cache_usage(struct
>> > intel_display *display)
>> > +{
>> > + /* Clear all the fields except the default fields */
>> > + u32 default_fields = FBC_SYS_CACHE_READ_ENABLE;
>> > +
>> > + xe3p_lpd_fbc_commit_sys_cache_usage(display,
>> > default_fields);
>> > +
>> > + /* Mark that no FBC instance utilize the system cache */
>> > + xe3p_lpd_fbc_set_sys_cache_fbc_id(display,
>> > SYS_CACHE_FBC_INSTANCE_NONE);
>> > +}
>>
>> My point above is that this function only calls wrappers and really
>> does
>> nothing itself. It's too many layers for a simple thing.
>>
>> fbc_sys_cache_disable()?
>>
>> > +
>> > +static void xe3p_lpd_fbc_set_sys_cache_usage(const struct
>> > intel_fbc *fbc)
>> > +{
>> > + struct intel_display *display = fbc->display;
>> > + /* limit to be configured to the register in 64k byte
>> > chunks */
>> > + int range = xe3p_lpd_fbc_get_cache_limit() / (64 * 1024);
>> > + /* offset to be configured to the register in 4K byte
>> > chunks */
>> > + int offset = i915_gem_stolen_node_offset(fbc-
>> > >compressed_fb) / (4 * 1024);
>> > + /* Cache read enable is enabled by default */
>> > + u32 usage = FBC_SYS_CACHE_TAG_USE_RES_SPACE |
>> > + FBC_SYS_CACHEABLE_RANGE(range) |
>> > + FBC_SYS_CACHE_START_BASE(offset) |
>> > + FBC_SYS_CACHE_READ_ENABLE;
>> > +
>> > + lockdep_assert_held(&fbc->lock);
>> > +
>> > + xe3p_lpd_fbc_commit_sys_cache_usage(display, usage);
>> > +
>> > + xe3p_lpd_fbc_set_sys_cache_fbc_id(display, fbc->id);
>> > +}
>>
>> Ditto.
>>
>> fbc_sys_cache_enable()?
>>
>> > +
>> > +static void xe3p_lpd_fbc_update_sys_cache_usage(const struct
>> > intel_fbc *fbc,
>> > + bool set)
>> > +{
>> > + struct intel_display *display = fbc->display;
>> > +
>> > + lockdep_assert_held(&fbc->lock);
>> > +
>> > + /* system cache for fbc already reserved */
>> > + if (set && !IS_SYS_CACHE_FBC_INSTANCE_NONE(display))
>> > + return;
>> > +
>> > + /* cannot clear if "fbc" did not reserve the cache */
>> > + if (!set && !IS_SYS_CACHE_FBC_INSTANCE_EQUALS(display,
>> > fbc->id))
>> > + return;
>> > +
>> > + if (set)
>> > + xe3p_lpd_fbc_set_sys_cache_usage(fbc);
>> > + else
>> > + xe3p_lpd_fbc_clear_sys_cache_usage(display);
>> > +
>> > + drm_dbg_kms(display->drm, "System cacheability usage for
>> > FBC[%d] %s\n",
>> > + fbc->id, set ? "configured" : "cleared");
>> > +}
>>
>> Most of this function is two separate paths based on the parameter. I
>> think it would benefit from actually being two separate functions. So
>> why not just merge this with xe3p_lpd_fbc_set_sys_cache_usage() and
>> xe3p_lpd_fbc_clear_sys_cache_usage()?
>
> Actually there are three paths to update this register (two separate
> path to clear this register)
>
> 1. As part of enable FBC - depends on the fbc instance (with fbc mutex
> taken). If sys_cache is not reserved by any other instance.
>
> 2. As part of disable FBC - depends on the fbc instance to avoid
> clearing if this fbc didnt reserve the cache space. (with fbc mutex
> taken)
>
> 3. Clear this register as part of sanitize call (upon setup_hw_state()
> calls upon probe and resume) and intel_fbc_cleanup() upon module
> removal. Not depend on the fbc instance.
Shouldn't fbc have been disabled by the time of module removal? I think
the per fbc disable should've been called already, no?
I think you could add a drm_WARN_ON(fbc.sys_cache_id !=
SYS_CACHE_FBC_INSTANCE_NONE) in the module removal path instead.
Btw that could also be renamed FBC_SYS_CACHE_ID_NONE or something.
> So something like this make sense?
>
> fbc_program_sys_cache(u32 reg)
> {
> intel_de_write(reg)
> }
I'm personally not a fan of "program" in pretty much any function
naming. What does it mean to program something? Isn't the whole driver
programming the hardare?
Just fbc_sys_cache_write()?
> fbc_sys_cache_reset(display)
> {
> if (!HAS_FBC_SYS_CACHE())
> return
>
> fbc_program_sys_cache(0)
> fbc.sys_cache_id = SYS_CACHE_FBC_INSTANCE_NONE
> }
>
> fbc_sys_cache_disable(fbc)
> {
> if (!HAS_FBC_SYS_CACHE())
> return
You don't need this check, because...
>
> if (fbc.sys_cache_id != fbc->id)
> return;
...this will catch the same conditions.
>
> fbc_sys_cache_reset(display)
> }
>
> fbc_sys_cache_enable(fbc)
> {
> if (!HAS_FBC_SYS_CACHE())
> return
>
> if (fbc.sys_cache_id != SYS_CACHE_FBC_INSTANCE_NONE)
> return;
>
> fbc_program_sys_cache(val)
>
> fbc.sys_cache_id = fbc-->id
> }
>
> intel_fbc_enable() will call fbc_sys_cache_enable(fbc)
>
> __intel_fbc_disable() will call fbc_sys_cache_disable(fbc)
>
> and
>
> intel_fbc_cleanup() and intel_fbc_sanitize() will call
> fbc_sys_cache_reset(display) as a general cleanup for this register.
Overall sounds better, but I'll probably need to see the patches to
grasp it.
The fbc debugfs should also have the info on whether the instance is
using the sys cache.
BR,
Jani.
>
>
>
>>
>> > +
>> > static void __intel_fbc_cleanup_cfb(struct intel_fbc *fbc)
>> > {
>> > if (WARN_ON(intel_fbc_hw_is_active(fbc)))
>> > @@ -967,6 +1044,9 @@ void intel_fbc_cleanup(struct intel_display
>> > *display)
>> >
>> > kfree(fbc);
>> > }
>> > +
>> > + if (HAS_FBC_SYS_CACHE(display))
>> > + xe3p_lpd_fbc_clear_sys_cache_usage(display);
>>
>> I don't think this should check for HAS_FBC_SYS_CACHE(). I think
>> internally the function being called should check if sys cache has
>> been
>> set. And make sure it's only set on where it's available.
>>
>> > }
>> >
>> > static bool i8xx_fbc_stride_is_valid(const struct
>> > intel_plane_state *plane_state)
>> > @@ -1780,6 +1860,9 @@ static void __intel_fbc_disable(struct
>> > intel_fbc *fbc)
>> >
>> > __intel_fbc_cleanup_cfb(fbc);
>> >
>> > + if (HAS_FBC_SYS_CACHE(display))
>> > + xe3p_lpd_fbc_update_sys_cache_usage(fbc, false);
>> > +
>>
>> Ditto. I'm also not sure why some places call the version with
>> params,
>> and some others the version without params.
>>
>> > /* wa_18038517565 Enable DPFC clock gating after FBC
>> > disable */
>> > if (display->platform.dg2 || DISPLAY_VER(display) >= 14)
>> > fbc_compressor_clkgate_disable_wa(fbc, false);
>> > @@ -1972,6 +2055,9 @@ static void __intel_fbc_enable(struct
>> > intel_atomic_state *state,
>> >
>> > intel_fbc_program_workarounds(fbc);
>> > intel_fbc_program_cfb(fbc);
>> > +
>> > + if (HAS_FBC_SYS_CACHE(display))
>> > + xe3p_lpd_fbc_update_sys_cache_usage(fbc, true);
>>
>> xe3p_lpd_fbc_update_sys_cache_usage() is the function that should
>> check
>> for HAS_FBC_SYS_CACHE() in one place.
>>
>> Well, maybe it should be renamed fbc_sys_cache_enable().
>>
>> > }
>> >
>> > /**
>> > @@ -2212,6 +2298,9 @@ void intel_fbc_init(struct intel_display
>> > *display)
>> >
>> > for_each_fbc_id(display, fbc_id)
>> > display->fbc.instances[fbc_id] =
>> > intel_fbc_create(display, fbc_id);
>> > +
>> > + /* Mark that no FBC instance is using the system cache */
>> > + xe3p_lpd_fbc_set_sys_cache_fbc_id(display,
>> > SYS_CACHE_FBC_INSTANCE_NONE);
>> > }
>> >
>> > /**
>> > @@ -2231,6 +2320,10 @@ void intel_fbc_sanitize(struct intel_display
>> > *display)
>> > if (intel_fbc_hw_is_active(fbc))
>> > intel_fbc_hw_deactivate(fbc);
>> > }
>> > +
>> > + /* Ensure the sys cache usage register gets cleared */
>> > + if (HAS_FBC_SYS_CACHE(display))
>> > + xe3p_lpd_fbc_clear_sys_cache_usage(display);
>>
>> Ditto about checking for valid sys cache inside, not
>> HAS_FBC_SYS_CACHE().
>>
>> > }
>> >
>> > static int intel_fbc_debugfs_status_show(struct seq_file *m, void
>> > *unused)
>> > diff --git a/drivers/gpu/drm/i915/display/intel_fbc_regs.h
>> > b/drivers/gpu/drm/i915/display/intel_fbc_regs.h
>> > index b1d0161a3196..d2d889fa4bed 100644
>> > --- a/drivers/gpu/drm/i915/display/intel_fbc_regs.h
>> > +++ b/drivers/gpu/drm/i915/display/intel_fbc_regs.h
>> > @@ -126,4 +126,14 @@
>> > #define FBC_REND_NUKE REG_BIT(2)
>> > #define FBC_REND_CACHE_CLEAN REG_BIT(1)
>> >
>> > +#define XE3P_LPD_FBC_SYS_CACHE_USAGE_CFG _MMIO(0x1344E0)
>> > +#define
>> > FBC_SYS_CACHE_START_BASE_MASK REG_GENMASK(31, 16)
>> > +#define
>> > FBC_SYS_CACHE_START_BASE(base) REG_FIELD_PREP(FBC_SYS_CACHE_START_BASE_MASK,(base))
>> > +#define FBC_SYS_CACHEABLE_RANGE_MASK REG_GENMASK(15, 4)
>> > +#define
>> > FBC_SYS_CACHEABLE_RANGE(range) REG_FIELD_PREP(FBC_SYS_CACHEABLE_RANGE_MASK,(range))
>> > +#define FBC_SYS_CACHE_TAG_MASK REG_GENMASK(3, 2)
>> > +#define
>> > FBC_SYS_CACHE_TAG_DONT_CACHE REG_FIELD_PREP(FBC_SYS_CACHE_TAG_MASK,0)
>> > +#define
>> > FBC_SYS_CACHE_TAG_USE_RES_SPACE REG_FIELD_PREP(FBC_SYS_CACHE_TAG_MASK,3)
>> > +#define FBC_SYS_CACHE_READ_ENABLE REG_BIT(0)
>> > +
>> > #endif /* __INTEL_FBC_REGS__ */
>>
>
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 2/2] drm/i915/xe3p_lpd: Enable display use of system cache for FBC
2025-11-23 16:01 ` [PATCH v3 2/2] drm/i915/xe3p_lpd: Enable display use of system cache for FBC Vinod Govindapillai
2025-11-24 11:27 ` Jani Nikula
@ 2025-11-24 16:25 ` Jani Nikula
2025-11-25 8:56 ` Govindapillai, Vinod
1 sibling, 1 reply; 12+ messages in thread
From: Jani Nikula @ 2025-11-24 16:25 UTC (permalink / raw)
To: Vinod Govindapillai, intel-xe, intel-gfx
Cc: vinod.govindapillai, matthew.d.roper, gustavo.sousa,
ville.syrjala
On Sun, 23 Nov 2025, Vinod Govindapillai <vinod.govindapillai@intel.com> wrote:
> One of the FBC instances can utilize the reserved area of SoC
> level cache for the fbc transactions to benefit reduced memory
> system power especially in idle scenarios. Reserved area of the
> system cache can be assigned to an fbc instance by configuring
> the cacheability configuration register with offset of the
> compressed frame buffer in stolen memoty of that fbc. There is
> a limit to this reserved area which is programmable and for
> xe3p_lpd the limit is defined as 2MB.
>
> v2: - better to track fbc sys cache usage from intel_display level,
> sanitize the cacheability config register on probe (Matt)
> - limit this for integrated graphics solutions, confirmed that
> no default value set for cache range by hw (Gustavo)
>
> v3: - changes related to the use of fbc substruct in intel_display
> - use intel_de_write() instead of intel_rmw() by hardcoding the
> default value fields
Overall issue: The fbc mutexes are per fbc instance, but nothing
protects display->fbc.sys_cache_id.
BR,
Jani.
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 12+ messages in thread
* ✓ i915.CI.BAT: success for drm/i915/display: Enable system cache support for FBC
2025-11-23 16:01 [PATCH v3 0/2] drm/i915/display: Enable system cache support for FBC Vinod Govindapillai
2025-11-23 16:01 ` [PATCH v3 1/2] drm/i915/display: Use a sub-struct for fbc operations in intel_display Vinod Govindapillai
2025-11-23 16:01 ` [PATCH v3 2/2] drm/i915/xe3p_lpd: Enable display use of system cache for FBC Vinod Govindapillai
@ 2025-11-24 22:55 ` Patchwork
2025-11-25 3:21 ` ✗ i915.CI.Full: failure " Patchwork
3 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2025-11-24 22:55 UTC (permalink / raw)
To: Govindapillai, Vinod; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 2754 bytes --]
== Series Details ==
Series: drm/i915/display: Enable system cache support for FBC
URL : https://patchwork.freedesktop.org/series/157945/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_17579 -> Patchwork_157945v1
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/index.html
Participating hosts (45 -> 44)
------------------------------
Missing (1): fi-snb-2520m
Known issues
------------
Here are the changes found in Patchwork_157945v1 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@i915_selftest@live@workarounds:
- bat-adlp-9: [PASS][1] -> [ABORT][2] ([i915#14365]) +1 other test abort
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/bat-adlp-9/igt@i915_selftest@live@workarounds.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/bat-adlp-9/igt@i915_selftest@live@workarounds.html
#### Possible fixes ####
* igt@i915_selftest@live@workarounds:
- bat-arls-5: [DMESG-FAIL][3] ([i915#12061]) -> [PASS][4] +1 other test pass
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/bat-arls-5/igt@i915_selftest@live@workarounds.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/bat-arls-5/igt@i915_selftest@live@workarounds.html
- bat-dg2-9: [DMESG-FAIL][5] ([i915#12061]) -> [PASS][6] +1 other test pass
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/bat-dg2-9/igt@i915_selftest@live@workarounds.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/bat-dg2-9/igt@i915_selftest@live@workarounds.html
- bat-mtlp-9: [DMESG-FAIL][7] ([i915#12061]) -> [PASS][8] +1 other test pass
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/bat-mtlp-9/igt@i915_selftest@live@workarounds.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/bat-mtlp-9/igt@i915_selftest@live@workarounds.html
[i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
[i915#14365]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14365
Build changes
-------------
* Linux: CI_DRM_17579 -> Patchwork_157945v1
CI-20190529: 20190529
CI_DRM_17579: ed157ca0caebebe3af6d38ca0fb64a403c84ce77 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8636: 254cd102396ff95d61f2ebe49fc09128878bf483 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_157945v1: ed157ca0caebebe3af6d38ca0fb64a403c84ce77 @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/index.html
[-- Attachment #2: Type: text/html, Size: 3528 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* ✗ i915.CI.Full: failure for drm/i915/display: Enable system cache support for FBC
2025-11-23 16:01 [PATCH v3 0/2] drm/i915/display: Enable system cache support for FBC Vinod Govindapillai
` (2 preceding siblings ...)
2025-11-24 22:55 ` ✓ i915.CI.BAT: success for drm/i915/display: Enable system cache support " Patchwork
@ 2025-11-25 3:21 ` Patchwork
3 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2025-11-25 3:21 UTC (permalink / raw)
To: Govindapillai, Vinod; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 65487 bytes --]
== Series Details ==
Series: drm/i915/display: Enable system cache support for FBC
URL : https://patchwork.freedesktop.org/series/157945/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_17579_full -> Patchwork_157945v1_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_157945v1_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_157945v1_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_157945v1_full:
### IGT changes ###
#### Possible regressions ####
* igt@gem_ctx_isolation@preservation-s3:
- shard-tglu-1: NOTRUN -> [ABORT][1] +2 other tests abort
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@gem_ctx_isolation@preservation-s3.html
* igt@gem_exec_suspend@basic-s0:
- shard-mtlp: [PASS][2] -> [ABORT][3] +4 other tests abort
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-mtlp-3/igt@gem_exec_suspend@basic-s0.html
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-mtlp-5/igt@gem_exec_suspend@basic-s0.html
* igt@gem_softpin@noreloc-s3:
- shard-dg2: [PASS][4] -> [ABORT][5]
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-dg2-7/igt@gem_softpin@noreloc-s3.html
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg2-8/igt@gem_softpin@noreloc-s3.html
* igt@gem_workarounds@suspend-resume:
- shard-tglu: [PASS][6] -> [ABORT][7] +1 other test abort
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-tglu-3/igt@gem_workarounds@suspend-resume.html
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-9/igt@gem_workarounds@suspend-resume.html
- shard-glk10: NOTRUN -> [ABORT][8] +3 other tests abort
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-glk10/igt@gem_workarounds@suspend-resume.html
* igt@gem_workarounds@suspend-resume-fd:
- shard-tglu: NOTRUN -> [ABORT][9]
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-6/igt@gem_workarounds@suspend-resume-fd.html
* igt@i915_suspend@basic-s3-without-i915:
- shard-snb: [PASS][10] -> [ABORT][11]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-snb6/igt@i915_suspend@basic-s3-without-i915.html
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-snb5/igt@i915_suspend@basic-s3-without-i915.html
- shard-dg1: [PASS][12] -> [ABORT][13]
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-dg1-12/igt@i915_suspend@basic-s3-without-i915.html
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg1-18/igt@i915_suspend@basic-s3-without-i915.html
* igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a3:
- shard-dg1: NOTRUN -> [ABORT][14] +3 other tests abort
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg1-12/igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a3.html
* igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-1:
- shard-dg2: NOTRUN -> [ABORT][15] +2 other tests abort
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg2-4/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-1.html
* igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-2:
- shard-rkl: NOTRUN -> [ABORT][16] +1 other test abort
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-7/igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-2.html
* igt@kms_vblank@ts-continuation-suspend@pipe-b-hdmi-a-1:
- shard-snb: NOTRUN -> [ABORT][17]
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-snb5/igt@kms_vblank@ts-continuation-suspend@pipe-b-hdmi-a-1.html
#### Warnings ####
* igt@i915_suspend@debugfs-reader:
- shard-glk: [INCOMPLETE][18] ([i915#4817]) -> [ABORT][19]
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-glk6/igt@i915_suspend@debugfs-reader.html
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-glk1/igt@i915_suspend@debugfs-reader.html
* igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b:
- shard-mtlp: [INCOMPLETE][20] ([i915#13026]) -> [ABORT][21]
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-mtlp-2/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b.html
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-mtlp-2/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b.html
New tests
---------
New tests have been introduced between CI_DRM_17579_full and Patchwork_157945v1_full:
### New IGT tests (6) ###
* igt@gem_lmem_evict@dontneed-evict-race:
- Statuses :
- Exec time: [None] s
* igt@i915_pm_rps@fbc-1p-primscrn-shrfb-pgflip-blt:
- Statuses :
- Exec time: [None] s
* igt@i915_pm_rps@seamless-rr-switch-virtual:
- Statuses :
- Exec time: [None] s
* igt@i915_pm_rps@wait-forked-busy:
- Statuses :
- Exec time: [None] s
* igt@kms_feature_discovery@display-1x:
- Statuses :
- Exec time: [None] s
* igt@syncobj_wait@wait-zero-handles:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
Known issues
------------
Here are the changes found in Patchwork_157945v1_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_ccs@block-multicopy-inplace:
- shard-tglu-1: NOTRUN -> [SKIP][22] ([i915#3555] / [i915#9323])
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@gem_ccs@block-multicopy-inplace.html
* igt@gem_ccs@ctrl-surf-copy-new-ctx:
- shard-tglu: NOTRUN -> [SKIP][23] ([i915#9323])
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-6/igt@gem_ccs@ctrl-surf-copy-new-ctx.html
* igt@gem_ctx_sseu@invalid-sseu:
- shard-tglu: NOTRUN -> [SKIP][24] ([i915#280])
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-6/igt@gem_ctx_sseu@invalid-sseu.html
* igt@gem_eio@hibernate:
- shard-tglu: NOTRUN -> [ABORT][25] ([i915#7975])
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@gem_eio@hibernate.html
* igt@gem_exec_balancer@parallel-contexts:
- shard-tglu: NOTRUN -> [SKIP][26] ([i915#4525])
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@gem_exec_balancer@parallel-contexts.html
* igt@gem_lmem_swapping@heavy-verify-multi-ccs:
- shard-tglu: NOTRUN -> [SKIP][27] ([i915#4613])
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-6/igt@gem_lmem_swapping@heavy-verify-multi-ccs.html
* igt@gem_lmem_swapping@heavy-verify-random-ccs:
- shard-rkl: NOTRUN -> [SKIP][28] ([i915#4613]) +1 other test skip
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-3/igt@gem_lmem_swapping@heavy-verify-random-ccs.html
* igt@gem_lmem_swapping@parallel-random-verify:
- shard-tglu-1: NOTRUN -> [SKIP][29] ([i915#4613]) +1 other test skip
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@gem_lmem_swapping@parallel-random-verify.html
* igt@gem_pread@self:
- shard-rkl: NOTRUN -> [SKIP][30] ([i915#3282])
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-3/igt@gem_pread@self.html
* igt@gem_userptr_blits@readonly-unsync:
- shard-tglu: NOTRUN -> [SKIP][31] ([i915#3297])
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-6/igt@gem_userptr_blits@readonly-unsync.html
* igt@gen7_exec_parse@load-register-reg:
- shard-tglu: NOTRUN -> [SKIP][32] +22 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-6/igt@gen7_exec_parse@load-register-reg.html
* igt@gen9_exec_parse@allowed-all:
- shard-tglu-1: NOTRUN -> [SKIP][33] ([i915#2527] / [i915#2856])
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@gen9_exec_parse@allowed-all.html
* igt@gen9_exec_parse@basic-rejected:
- shard-rkl: NOTRUN -> [SKIP][34] ([i915#2527])
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-3/igt@gen9_exec_parse@basic-rejected.html
* igt@gen9_exec_parse@bb-start-far:
- shard-tglu: NOTRUN -> [SKIP][35] ([i915#2527] / [i915#2856])
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@gen9_exec_parse@bb-start-far.html
* igt@i915_pm_freq_mult@media-freq@gt0:
- shard-tglu: NOTRUN -> [SKIP][36] ([i915#6590]) +1 other test skip
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@i915_pm_freq_mult@media-freq@gt0.html
* igt@i915_pm_rps@reset:
- shard-snb: [PASS][37] -> [INCOMPLETE][38] ([i915#13729] / [i915#13821])
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-snb1/igt@i915_pm_rps@reset.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-snb7/igt@i915_pm_rps@reset.html
* igt@i915_selftest@live@workarounds:
- shard-dg2: [PASS][39] -> [DMESG-FAIL][40] ([i915#12061]) +1 other test dmesg-fail
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-dg2-5/igt@i915_selftest@live@workarounds.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg2-11/igt@i915_selftest@live@workarounds.html
* igt@intel_hwmon@hwmon-write:
- shard-tglu: NOTRUN -> [SKIP][41] ([i915#7707])
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@intel_hwmon@hwmon-write.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-tglu: NOTRUN -> [SKIP][42] ([i915#5286]) +2 other tests skip
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
- shard-tglu-1: NOTRUN -> [SKIP][43] ([i915#5286]) +2 other tests skip
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
- shard-mtlp: [PASS][44] -> [FAIL][45] ([i915#5138])
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-mtlp-3/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-mtlp-7/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip:
- shard-rkl: NOTRUN -> [SKIP][46] +2 other tests skip
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-3/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
* igt@kms_ccs@bad-aux-stride-yf-tiled-ccs@pipe-a-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][47] ([i915#10307] / [i915#6095]) +49 other tests skip
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg2-1/igt@kms_ccs@bad-aux-stride-yf-tiled-ccs@pipe-a-hdmi-a-3.html
* igt@kms_ccs@bad-pixel-format-yf-tiled-ccs@pipe-c-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][48] ([i915#14098] / [i915#6095]) +22 other tests skip
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-4/igt@kms_ccs@bad-pixel-format-yf-tiled-ccs@pipe-c-hdmi-a-2.html
* igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-a-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][49] ([i915#6095]) +43 other tests skip
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-7/igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-a-hdmi-a-2.html
* igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs:
- shard-rkl: NOTRUN -> [SKIP][50] ([i915#12313])
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-3/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][51] ([i915#6095]) +35 other tests skip
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg1-18/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-4.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs:
- shard-tglu: NOTRUN -> [SKIP][52] ([i915#12313])
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-6/igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc@pipe-d-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][53] ([i915#6095]) +3 other tests skip
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg2-4/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc@pipe-d-hdmi-a-1.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-a-hdmi-a-2:
- shard-glk: NOTRUN -> [INCOMPLETE][54] ([i915#12796] / [i915#14694]) +1 other test incomplete
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-glk3/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-a-hdmi-a-2.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][55] ([i915#14544] / [i915#6095]) +3 other tests skip
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-2.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs@pipe-c-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][56] ([i915#14098] / [i915#14544] / [i915#6095]) +1 other test skip
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs@pipe-c-hdmi-a-2.html
* igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][57] ([i915#10307] / [i915#10434] / [i915#6095]) +1 other test skip
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg2-4/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-1.html
* igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs@pipe-b-hdmi-a-1:
- shard-tglu-1: NOTRUN -> [SKIP][58] ([i915#6095]) +19 other tests skip
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs@pipe-b-hdmi-a-1.html
* igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs-cc:
- shard-tglu: NOTRUN -> [SKIP][59] ([i915#6095]) +34 other tests skip
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs-cc.html
* igt@kms_cdclk@mode-transition@pipe-d-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][60] ([i915#13781]) +3 other tests skip
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg2-4/igt@kms_cdclk@mode-transition@pipe-d-hdmi-a-1.html
* igt@kms_chamelium_audio@dp-audio-edid:
- shard-tglu-1: NOTRUN -> [SKIP][61] ([i915#11151] / [i915#7828]) +2 other tests skip
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@kms_chamelium_audio@dp-audio-edid.html
* igt@kms_chamelium_frames@hdmi-cmp-planar-formats:
- shard-rkl: NOTRUN -> [SKIP][62] ([i915#11151] / [i915#7828])
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-3/igt@kms_chamelium_frames@hdmi-cmp-planar-formats.html
* igt@kms_chamelium_hpd@vga-hpd-without-ddc:
- shard-tglu: NOTRUN -> [SKIP][63] ([i915#11151] / [i915#7828]) +4 other tests skip
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-6/igt@kms_chamelium_hpd@vga-hpd-without-ddc.html
* igt@kms_content_protection@atomic-dpms@pipe-a-dp-3:
- shard-dg2: NOTRUN -> [FAIL][64] ([i915#7173])
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg2-11/igt@kms_content_protection@atomic-dpms@pipe-a-dp-3.html
* igt@kms_content_protection@dp-mst-lic-type-1:
- shard-tglu-1: NOTRUN -> [SKIP][65] ([i915#3116] / [i915#3299])
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@kms_content_protection@dp-mst-lic-type-1.html
* igt@kms_content_protection@lic-type-0:
- shard-tglu: NOTRUN -> [SKIP][66] ([i915#6944] / [i915#9424])
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@kms_content_protection@lic-type-0.html
* igt@kms_content_protection@lic-type-1:
- shard-tglu-1: NOTRUN -> [SKIP][67] ([i915#6944] / [i915#9424])
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@kms_content_protection@lic-type-1.html
* igt@kms_cursor_crc@cursor-offscreen-max-size:
- shard-tglu-1: NOTRUN -> [SKIP][68] ([i915#3555]) +1 other test skip
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@kms_cursor_crc@cursor-offscreen-max-size.html
* igt@kms_cursor_crc@cursor-onscreen-32x32:
- shard-tglu: NOTRUN -> [SKIP][69] ([i915#3555])
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@kms_cursor_crc@cursor-onscreen-32x32.html
* igt@kms_cursor_crc@cursor-random-32x10:
- shard-rkl: NOTRUN -> [SKIP][70] ([i915#3555])
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-3/igt@kms_cursor_crc@cursor-random-32x10.html
* igt@kms_cursor_crc@cursor-random-512x170:
- shard-tglu: NOTRUN -> [SKIP][71] ([i915#13049])
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-6/igt@kms_cursor_crc@cursor-random-512x170.html
* igt@kms_cursor_crc@cursor-sliding-256x85:
- shard-rkl: [PASS][72] -> [FAIL][73] ([i915#13566])
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-7/igt@kms_cursor_crc@cursor-sliding-256x85.html
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-8/igt@kms_cursor_crc@cursor-sliding-256x85.html
* igt@kms_cursor_crc@cursor-sliding-256x85@pipe-a-hdmi-a-1:
- shard-rkl: NOTRUN -> [FAIL][74] ([i915#13566])
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-8/igt@kms_cursor_crc@cursor-sliding-256x85@pipe-a-hdmi-a-1.html
* igt@kms_cursor_crc@cursor-suspend:
- shard-glk: NOTRUN -> [INCOMPLETE][75] ([i915#12358] / [i915#14152] / [i915#7882])
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-glk1/igt@kms_cursor_crc@cursor-suspend.html
* igt@kms_cursor_crc@cursor-suspend@pipe-a-hdmi-a-1:
- shard-glk: NOTRUN -> [INCOMPLETE][76] ([i915#12358] / [i915#14152])
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-glk1/igt@kms_cursor_crc@cursor-suspend@pipe-a-hdmi-a-1.html
* igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot:
- shard-tglu: NOTRUN -> [SKIP][77] ([i915#9067])
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-6/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html
* igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][78] ([i915#3804])
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-4/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-2.html
* igt@kms_dp_link_training@non-uhbr-mst:
- shard-tglu: NOTRUN -> [SKIP][79] ([i915#13749])
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@kms_dp_link_training@non-uhbr-mst.html
* igt@kms_dsc@dsc-with-bpc-formats:
- shard-tglu: NOTRUN -> [SKIP][80] ([i915#3555] / [i915#3840])
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@kms_dsc@dsc-with-bpc-formats.html
* igt@kms_feature_discovery@display-2x:
- shard-tglu-1: NOTRUN -> [SKIP][81] ([i915#1839])
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@kms_feature_discovery@display-2x.html
* igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible:
- shard-rkl: NOTRUN -> [SKIP][82] ([i915#9934]) +3 other tests skip
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-3/igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible.html
* igt@kms_flip@2x-modeset-vs-vblank-race:
- shard-glk10: NOTRUN -> [SKIP][83] +75 other tests skip
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-glk10/igt@kms_flip@2x-modeset-vs-vblank-race.html
* igt@kms_flip@2x-nonexisting-fb-interruptible:
- shard-tglu: NOTRUN -> [SKIP][84] ([i915#3637] / [i915#9934]) +4 other tests skip
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@kms_flip@2x-nonexisting-fb-interruptible.html
* igt@kms_flip@2x-plain-flip-ts-check-interruptible:
- shard-tglu-1: NOTRUN -> [SKIP][85] ([i915#3637] / [i915#9934]) +2 other tests skip
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@kms_flip@2x-plain-flip-ts-check-interruptible.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode:
- shard-tglu: NOTRUN -> [SKIP][86] ([i915#2587] / [i915#2672]) +3 other tests skip
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-6/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling:
- shard-tglu-1: NOTRUN -> [SKIP][87] ([i915#2587] / [i915#2672] / [i915#3555])
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode:
- shard-tglu-1: NOTRUN -> [SKIP][88] ([i915#2587] / [i915#2672])
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling:
- shard-rkl: NOTRUN -> [SKIP][89] ([i915#2672] / [i915#3555])
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-3/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling@pipe-a-valid-mode:
- shard-rkl: NOTRUN -> [SKIP][90] ([i915#2672])
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-3/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling:
- shard-tglu: NOTRUN -> [SKIP][91] ([i915#2672] / [i915#3555]) +3 other tests skip
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-6/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-cpu:
- shard-tglu-1: NOTRUN -> [SKIP][92] +20 other tests skip
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-plflip-blt:
- shard-rkl: NOTRUN -> [SKIP][93] ([i915#1825]) +8 other tests skip
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-3/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-mmap-gtt:
- shard-tglu-1: NOTRUN -> [SKIP][94] ([i915#15102]) +6 other tests skip
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw:
- shard-rkl: NOTRUN -> [SKIP][95] ([i915#15102] / [i915#3023]) +2 other tests skip
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-3/igt@kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw.html
* igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-wc:
- shard-tglu: NOTRUN -> [SKIP][96] ([i915#15102]) +13 other tests skip
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-wc.html
* igt@kms_hdr@static-toggle:
- shard-dg2: [PASS][97] -> [SKIP][98] ([i915#3555] / [i915#8228])
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-dg2-11/igt@kms_hdr@static-toggle.html
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg2-1/igt@kms_hdr@static-toggle.html
* igt@kms_hdr@static-toggle-suspend:
- shard-tglu: NOTRUN -> [SKIP][99] ([i915#3555] / [i915#8228])
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-6/igt@kms_hdr@static-toggle-suspend.html
* igt@kms_joiner@basic-ultra-joiner:
- shard-tglu: NOTRUN -> [SKIP][100] ([i915#12339])
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@kms_joiner@basic-ultra-joiner.html
* igt@kms_joiner@invalid-modeset-big-joiner:
- shard-tglu: NOTRUN -> [SKIP][101] ([i915#10656])
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-6/igt@kms_joiner@invalid-modeset-big-joiner.html
* igt@kms_joiner@invalid-modeset-force-big-joiner:
- shard-dg2: [PASS][102] -> [SKIP][103] ([i915#10656] / [i915#12388])
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-dg2-11/igt@kms_joiner@invalid-modeset-force-big-joiner.html
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg2-1/igt@kms_joiner@invalid-modeset-force-big-joiner.html
* igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
- shard-rkl: NOTRUN -> [SKIP][104] ([i915#1839] / [i915#4816])
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-3/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
* igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-hdmi-a-2:
- shard-rkl: NOTRUN -> [INCOMPLETE][105] ([i915#13476])
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-7/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-hdmi-a-2.html
* igt@kms_pipe_stress@stress-xrgb8888-4tiled:
- shard-tglu: NOTRUN -> [SKIP][106] ([i915#14712])
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@kms_pipe_stress@stress-xrgb8888-4tiled.html
* igt@kms_plane@plane-panning-bottom-right-suspend:
- shard-glk: NOTRUN -> [INCOMPLETE][107] ([i915#13026]) +1 other test incomplete
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-glk5/igt@kms_plane@plane-panning-bottom-right-suspend.html
* igt@kms_plane_multiple@2x-tiling-none:
- shard-tglu-1: NOTRUN -> [SKIP][108] ([i915#13958])
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@kms_plane_multiple@2x-tiling-none.html
* igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-c:
- shard-tglu: NOTRUN -> [SKIP][109] ([i915#12247]) +9 other tests skip
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-c.html
* igt@kms_pm_lpsp@screens-disabled:
- shard-tglu: NOTRUN -> [SKIP][110] ([i915#8430])
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@kms_pm_lpsp@screens-disabled.html
* igt@kms_prime@basic-modeset-hybrid:
- shard-tglu: NOTRUN -> [SKIP][111] ([i915#6524])
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@kms_prime@basic-modeset-hybrid.html
* igt@kms_psr2_sf@fbc-pr-cursor-plane-update-sf:
- shard-tglu: NOTRUN -> [SKIP][112] ([i915#11520]) +2 other tests skip
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@kms_psr2_sf@fbc-pr-cursor-plane-update-sf.html
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf:
- shard-rkl: NOTRUN -> [SKIP][113] ([i915#11520])
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-3/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf:
- shard-glk10: NOTRUN -> [SKIP][114] ([i915#11520]) +1 other test skip
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-glk10/igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf.html
* igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf:
- shard-tglu-1: NOTRUN -> [SKIP][115] ([i915#11520]) +1 other test skip
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf.html
* igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area:
- shard-glk: NOTRUN -> [SKIP][116] ([i915#11520])
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-glk3/igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area.html
* igt@kms_psr2_su@page_flip-p010:
- shard-rkl: NOTRUN -> [SKIP][117] ([i915#9683])
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-3/igt@kms_psr2_su@page_flip-p010.html
* igt@kms_psr@fbc-pr-sprite-render:
- shard-tglu: NOTRUN -> [SKIP][118] ([i915#9732]) +8 other tests skip
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-6/igt@kms_psr@fbc-pr-sprite-render.html
* igt@kms_psr@fbc-psr-sprite-plane-onoff:
- shard-rkl: NOTRUN -> [SKIP][119] ([i915#1072] / [i915#9732]) +1 other test skip
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-3/igt@kms_psr@fbc-psr-sprite-plane-onoff.html
* igt@kms_psr@fbc-psr2-sprite-mmap-gtt:
- shard-tglu-1: NOTRUN -> [SKIP][120] ([i915#9732]) +5 other tests skip
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@kms_psr@fbc-psr2-sprite-mmap-gtt.html
* igt@kms_psr@psr2-dpms:
- shard-glk: NOTRUN -> [SKIP][121] +16 other tests skip
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-glk3/igt@kms_psr@psr2-dpms.html
* igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
- shard-tglu-1: NOTRUN -> [SKIP][122] ([i915#9685])
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
* igt@kms_rotation_crc@primary-4-tiled-reflect-x-180:
- shard-tglu: NOTRUN -> [SKIP][123] ([i915#5289])
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@kms_rotation_crc@primary-4-tiled-reflect-x-180.html
* igt@kms_sharpness_filter@filter-scaler-upscale:
- shard-tglu: NOTRUN -> [SKIP][124] ([i915#15232]) +2 other tests skip
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-5/igt@kms_sharpness_filter@filter-scaler-upscale.html
* igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-2:
- shard-glk: NOTRUN -> [INCOMPLETE][125] ([i915#12276])
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-glk1/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-2.html
* igt@kms_vblank@ts-continuation-dpms-suspend@pipe-c-hdmi-a-2:
- shard-rkl: NOTRUN -> [INCOMPLETE][126] ([i915#12276])
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-c-hdmi-a-2.html
* igt@kms_vrr@flip-basic-fastset:
- shard-rkl: NOTRUN -> [SKIP][127] ([i915#9906])
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-3/igt@kms_vrr@flip-basic-fastset.html
* igt@kms_vrr@seamless-rr-switch-virtual:
- shard-tglu-1: NOTRUN -> [SKIP][128] ([i915#9906])
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@kms_vrr@seamless-rr-switch-virtual.html
* igt@kms_writeback@writeback-fb-id-xrgb2101010:
- shard-tglu-1: NOTRUN -> [SKIP][129] ([i915#2437] / [i915#9412])
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-1/igt@kms_writeback@writeback-fb-id-xrgb2101010.html
#### Possible fixes ####
* igt@gem_ctx_isolation@preservation-s3@rcs0:
- shard-mtlp: [ABORT][130] -> [PASS][131] +1 other test pass
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-mtlp-8/igt@gem_ctx_isolation@preservation-s3@rcs0.html
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-mtlp-6/igt@gem_ctx_isolation@preservation-s3@rcs0.html
* igt@gem_exec_suspend@basic-s0@smem:
- shard-tglu: [ABORT][132] -> [PASS][133] +1 other test pass
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-tglu-6/igt@gem_exec_suspend@basic-s0@smem.html
[133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-tglu-6/igt@gem_exec_suspend@basic-s0@smem.html
* igt@gem_softpin@noreloc-s3:
- shard-dg1: [ABORT][134] -> [PASS][135]
[134]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-dg1-14/igt@gem_softpin@noreloc-s3.html
[135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg1-15/igt@gem_softpin@noreloc-s3.html
* igt@i915_suspend@basic-s2idle-without-i915:
- shard-rkl: [ABORT][136] -> [PASS][137]
[136]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-3/igt@i915_suspend@basic-s2idle-without-i915.html
[137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-3/igt@i915_suspend@basic-s2idle-without-i915.html
* igt@kms_dither@fb-8bpc-vs-panel-8bpc:
- shard-dg2: [SKIP][138] ([i915#3555]) -> [PASS][139]
[138]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-dg2-6/igt@kms_dither@fb-8bpc-vs-panel-8bpc.html
[139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg2-11/igt@kms_dither@fb-8bpc-vs-panel-8bpc.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt:
- shard-dg2: [FAIL][140] ([i915#6880]) -> [PASS][141]
[140]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt.html
[141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg2-11/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt.html
* igt@kms_hdr@static-toggle:
- shard-rkl: [SKIP][142] ([i915#3555] / [i915#8228]) -> [PASS][143]
[142]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-5/igt@kms_hdr@static-toggle.html
[143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-1/igt@kms_hdr@static-toggle.html
* igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b:
- shard-rkl: [INCOMPLETE][144] ([i915#14412]) -> [PASS][145]
[144]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b.html
[145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b.html
* igt@kms_pm_rpm@modeset-non-lpsp:
- shard-rkl: [SKIP][146] ([i915#15073]) -> [PASS][147]
[146]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-5/igt@kms_pm_rpm@modeset-non-lpsp.html
[147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-1/igt@kms_pm_rpm@modeset-non-lpsp.html
* igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-1:
- shard-glk: [ABORT][148] -> [PASS][149]
[148]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-glk6/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-1.html
[149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-glk1/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-1.html
* igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-1:
- shard-snb: [ABORT][150] -> [PASS][151]
[150]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-snb7/igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-1.html
[151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-snb5/igt@kms_vblank@ts-continuation-suspend@pipe-a-hdmi-a-1.html
#### Warnings ####
* igt@api_intel_bb@object-reloc-purge-cache:
- shard-rkl: [SKIP][152] ([i915#14544] / [i915#8411]) -> [SKIP][153] ([i915#8411])
[152]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@api_intel_bb@object-reloc-purge-cache.html
[153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@api_intel_bb@object-reloc-purge-cache.html
* igt@gem_exec_suspend@basic-s0@smem:
- shard-dg2: [ABORT][154] -> [INCOMPLETE][155] ([i915#13356]) +1 other test incomplete
[154]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-dg2-11/igt@gem_exec_suspend@basic-s0@smem.html
[155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg2-7/igt@gem_exec_suspend@basic-s0@smem.html
* igt@gem_lmem_swapping@parallel-random:
- shard-rkl: [SKIP][156] ([i915#14544] / [i915#4613]) -> [SKIP][157] ([i915#4613])
[156]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@gem_lmem_swapping@parallel-random.html
[157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@gem_lmem_swapping@parallel-random.html
* igt@gem_madvise@dontneed-before-pwrite:
- shard-rkl: [SKIP][158] ([i915#14544] / [i915#3282]) -> [SKIP][159] ([i915#3282])
[158]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@gem_madvise@dontneed-before-pwrite.html
[159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@gem_madvise@dontneed-before-pwrite.html
* igt@gem_set_tiling_vs_blt@untiled-to-tiled:
- shard-rkl: [SKIP][160] ([i915#8411]) -> [SKIP][161] ([i915#14544] / [i915#8411])
[160]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-2/igt@gem_set_tiling_vs_blt@untiled-to-tiled.html
[161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@gem_set_tiling_vs_blt@untiled-to-tiled.html
* igt@gem_userptr_blits@create-destroy-unsync:
- shard-rkl: [SKIP][162] ([i915#14544] / [i915#3297]) -> [SKIP][163] ([i915#3297])
[162]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@gem_userptr_blits@create-destroy-unsync.html
[163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@gem_userptr_blits@create-destroy-unsync.html
* igt@gem_userptr_blits@invalid-mmap-offset-unsync:
- shard-rkl: [SKIP][164] ([i915#3297]) -> [SKIP][165] ([i915#14544] / [i915#3297])
[164]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-2/igt@gem_userptr_blits@invalid-mmap-offset-unsync.html
[165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@gem_userptr_blits@invalid-mmap-offset-unsync.html
* igt@gen9_exec_parse@batch-invalid-length:
- shard-rkl: [SKIP][166] ([i915#14544] / [i915#2527]) -> [SKIP][167] ([i915#2527])
[166]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@gen9_exec_parse@batch-invalid-length.html
[167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@gen9_exec_parse@batch-invalid-length.html
* igt@i915_pm_freq_api@freq-suspend@gt0:
- shard-dg2: [ABORT][168] -> [INCOMPLETE][169] ([i915#13356] / [i915#13820]) +1 other test incomplete
[168]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-dg2-8/igt@i915_pm_freq_api@freq-suspend@gt0.html
[169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg2-6/igt@i915_pm_freq_api@freq-suspend@gt0.html
* igt@i915_power@sanity:
- shard-rkl: [SKIP][170] ([i915#7984]) -> [SKIP][171] ([i915#14544] / [i915#7984])
[170]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-2/igt@i915_power@sanity.html
[171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@i915_power@sanity.html
* igt@i915_query@test-query-geometry-subslices:
- shard-rkl: [SKIP][172] ([i915#5723]) -> [SKIP][173] ([i915#14544] / [i915#5723])
[172]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-2/igt@i915_query@test-query-geometry-subslices.html
[173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@i915_query@test-query-geometry-subslices.html
* igt@kms_big_fb@4-tiled-64bpp-rotate-270:
- shard-rkl: [SKIP][174] ([i915#14544] / [i915#5286]) -> [SKIP][175] ([i915#5286])
[174]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@kms_big_fb@4-tiled-64bpp-rotate-270.html
[175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@kms_big_fb@4-tiled-64bpp-rotate-270.html
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
- shard-rkl: [SKIP][176] ([i915#5286]) -> [SKIP][177] ([i915#14544] / [i915#5286])
[176]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-2/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
[177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
* igt@kms_big_fb@x-tiled-16bpp-rotate-90:
- shard-rkl: [SKIP][178] ([i915#3638]) -> [SKIP][179] ([i915#14544] / [i915#3638]) +1 other test skip
[178]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-2/igt@kms_big_fb@x-tiled-16bpp-rotate-90.html
[179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@kms_big_fb@x-tiled-16bpp-rotate-90.html
* igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc:
- shard-rkl: [SKIP][180] ([i915#14098] / [i915#14544] / [i915#6095]) -> [SKIP][181] ([i915#14098] / [i915#6095]) +2 other tests skip
[180]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc.html
[181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-mc-ccs:
- shard-dg1: [SKIP][182] ([i915#6095]) -> [SKIP][183] ([i915#4423] / [i915#6095]) +1 other test skip
[182]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-dg1-12/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-mc-ccs.html
[183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg1-12/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-mc-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc:
- shard-rkl: [SKIP][184] ([i915#14098] / [i915#6095]) -> [SKIP][185] ([i915#14098] / [i915#14544] / [i915#6095]) +1 other test skip
[184]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-2/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc.html
[185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc.html
* igt@kms_cdclk@mode-transition:
- shard-rkl: [SKIP][186] ([i915#3742]) -> [SKIP][187] ([i915#14544] / [i915#3742])
[186]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-2/igt@kms_cdclk@mode-transition.html
[187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@kms_cdclk@mode-transition.html
* igt@kms_chamelium_color@ctm-green-to-red:
- shard-rkl: [SKIP][188] -> [SKIP][189] ([i915#14544]) +3 other tests skip
[188]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-2/igt@kms_chamelium_color@ctm-green-to-red.html
[189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@kms_chamelium_color@ctm-green-to-red.html
* igt@kms_chamelium_frames@hdmi-crc-multiple:
- shard-rkl: [SKIP][190] ([i915#11151] / [i915#7828]) -> [SKIP][191] ([i915#11151] / [i915#14544] / [i915#7828])
[190]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-2/igt@kms_chamelium_frames@hdmi-crc-multiple.html
[191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@kms_chamelium_frames@hdmi-crc-multiple.html
* igt@kms_chamelium_frames@hdmi-crc-single:
- shard-rkl: [SKIP][192] ([i915#11151] / [i915#14544] / [i915#7828]) -> [SKIP][193] ([i915#11151] / [i915#7828]) +2 other tests skip
[192]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@kms_chamelium_frames@hdmi-crc-single.html
[193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@kms_chamelium_frames@hdmi-crc-single.html
* igt@kms_content_protection@atomic-dpms:
- shard-dg2: [SKIP][194] ([i915#7118] / [i915#9424]) -> [FAIL][195] ([i915#7173])
[194]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-dg2-6/igt@kms_content_protection@atomic-dpms.html
[195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg2-11/igt@kms_content_protection@atomic-dpms.html
* igt@kms_content_protection@dp-mst-lic-type-1:
- shard-rkl: [SKIP][196] ([i915#3116]) -> [SKIP][197] ([i915#14544] / [i915#3116])
[196]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-2/igt@kms_content_protection@dp-mst-lic-type-1.html
[197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@kms_content_protection@dp-mst-lic-type-1.html
* igt@kms_content_protection@legacy:
- shard-dg2: [FAIL][198] ([i915#7173]) -> [SKIP][199] ([i915#7118] / [i915#9424])
[198]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-dg2-11/igt@kms_content_protection@legacy.html
[199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg2-1/igt@kms_content_protection@legacy.html
* igt@kms_content_protection@lic-type-0:
- shard-dg2: [FAIL][200] ([i915#7173]) -> [SKIP][201] ([i915#9424])
[200]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-dg2-11/igt@kms_content_protection@lic-type-0.html
[201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-dg2-4/igt@kms_content_protection@lic-type-0.html
* igt@kms_cursor_crc@cursor-offscreen-32x32:
- shard-rkl: [SKIP][202] ([i915#14544] / [i915#3555]) -> [SKIP][203] ([i915#3555])
[202]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@kms_cursor_crc@cursor-offscreen-32x32.html
[203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@kms_cursor_crc@cursor-offscreen-32x32.html
* igt@kms_cursor_legacy@cursora-vs-flipb-toggle:
- shard-rkl: [SKIP][204] ([i915#14544]) -> [SKIP][205] +2 other tests skip
[204]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@kms_cursor_legacy@cursora-vs-flipb-toggle.html
[205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@kms_cursor_legacy@cursora-vs-flipb-toggle.html
* igt@kms_dsc@dsc-fractional-bpp:
- shard-rkl: [SKIP][206] ([i915#14544] / [i915#3840]) -> [SKIP][207] ([i915#3840])
[206]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@kms_dsc@dsc-fractional-bpp.html
[207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@kms_dsc@dsc-fractional-bpp.html
* igt@kms_flip@2x-flip-vs-modeset-vs-hang:
- shard-rkl: [SKIP][208] ([i915#9934]) -> [SKIP][209] ([i915#14544] / [i915#9934]) +2 other tests skip
[208]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-2/igt@kms_flip@2x-flip-vs-modeset-vs-hang.html
[209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@kms_flip@2x-flip-vs-modeset-vs-hang.html
* igt@kms_flip@2x-flip-vs-suspend:
- shard-glk: [INCOMPLETE][210] ([i915#12745] / [i915#4839] / [i915#6113]) -> [INCOMPLETE][211] ([i915#12745] / [i915#4839])
[210]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-glk3/igt@kms_flip@2x-flip-vs-suspend.html
[211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-glk9/igt@kms_flip@2x-flip-vs-suspend.html
* igt@kms_flip@2x-flip-vs-suspend@ab-hdmi-a1-hdmi-a2:
- shard-glk: [INCOMPLETE][212] ([i915#4839] / [i915#6113]) -> [INCOMPLETE][213] ([i915#4839])
[212]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-glk3/igt@kms_flip@2x-flip-vs-suspend@ab-hdmi-a1-hdmi-a2.html
[213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-glk9/igt@kms_flip@2x-flip-vs-suspend@ab-hdmi-a1-hdmi-a2.html
* igt@kms_flip@2x-wf_vblank-ts-check-interruptible:
- shard-rkl: [SKIP][214] ([i915#14544] / [i915#9934]) -> [SKIP][215] ([i915#9934])
[214]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@kms_flip@2x-wf_vblank-ts-check-interruptible.html
[215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@kms_flip@2x-wf_vblank-ts-check-interruptible.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling:
- shard-rkl: [SKIP][216] ([i915#14544] / [i915#2672] / [i915#3555]) -> [SKIP][217] ([i915#2672] / [i915#3555])
[216]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling.html
[217]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling@pipe-a-valid-mode:
- shard-rkl: [SKIP][218] ([i915#14544] / [i915#2672]) -> [SKIP][219] ([i915#2672])
[218]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling@pipe-a-valid-mode.html
[219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling@pipe-a-valid-mode.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-msflip-blt:
- shard-rkl: [SKIP][220] ([i915#1825]) -> [SKIP][221] ([i915#14544] / [i915#1825]) +9 other tests skip
[220]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-msflip-blt.html
[221]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-msflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-cpu:
- shard-rkl: [SKIP][222] ([i915#14544] / [i915#1825]) -> [SKIP][223] ([i915#1825]) +4 other tests skip
[222]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-cpu.html
[223]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-blt:
- shard-rkl: [SKIP][224] ([i915#15102]) -> [SKIP][225] ([i915#14544] / [i915#15102]) +1 other test skip
[224]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-2/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-blt.html
[225]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@psr-rgb101010-draw-render:
- shard-rkl: [SKIP][226] ([i915#14544] / [i915#15102] / [i915#3023]) -> [SKIP][227] ([i915#15102] / [i915#3023]) +2 other tests skip
[226]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-render.html
[227]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-render.html
* igt@kms_joiner@basic-force-big-joiner:
- shard-rkl: [SKIP][228] ([i915#12388]) -> [SKIP][229] ([i915#12388] / [i915#14544])
[228]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-2/igt@kms_joiner@basic-force-big-joiner.html
[229]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@kms_joiner@basic-force-big-joiner.html
* igt@kms_panel_fitting@atomic-fastset:
- shard-rkl: [SKIP][230] ([i915#6301]) -> [SKIP][231] ([i915#14544] / [i915#6301])
[230]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-2/igt@kms_panel_fitting@atomic-fastset.html
[231]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@kms_panel_fitting@atomic-fastset.html
* igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf:
- shard-rkl: [SKIP][232] ([i915#11520]) -> [SKIP][233] ([i915#11520] / [i915#14544])
[232]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-2/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf.html
[233]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf.html
* igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf:
- shard-rkl: [SKIP][234] ([i915#11520] / [i915#14544]) -> [SKIP][235] ([i915#11520]) +1 other test skip
[234]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf.html
[235]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf.html
* igt@kms_psr@fbc-psr-sprite-blt:
- shard-rkl: [SKIP][236] ([i915#1072] / [i915#14544] / [i915#9732]) -> [SKIP][237] ([i915#1072] / [i915#9732]) +3 other tests skip
[236]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@kms_psr@fbc-psr-sprite-blt.html
[237]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@kms_psr@fbc-psr-sprite-blt.html
* igt@kms_psr@psr2-cursor-plane-move:
- shard-rkl: [SKIP][238] ([i915#1072] / [i915#9732]) -> [SKIP][239] ([i915#1072] / [i915#14544] / [i915#9732]) +2 other tests skip
[238]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-2/igt@kms_psr@psr2-cursor-plane-move.html
[239]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@kms_psr@psr2-cursor-plane-move.html
* igt@kms_sharpness_filter@filter-scaler-downscale:
- shard-rkl: [SKIP][240] ([i915#14544] / [i915#15232]) -> [SKIP][241] ([i915#15232])
[240]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@kms_sharpness_filter@filter-scaler-downscale.html
[241]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@kms_sharpness_filter@filter-scaler-downscale.html
* igt@kms_sharpness_filter@invalid-filter-with-scaler:
- shard-rkl: [SKIP][242] ([i915#15232]) -> [SKIP][243] ([i915#14544] / [i915#15232])
[242]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-2/igt@kms_sharpness_filter@invalid-filter-with-scaler.html
[243]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-6/igt@kms_sharpness_filter@invalid-filter-with-scaler.html
* igt@kms_vblank@ts-continuation-dpms-suspend:
- shard-glk: [ABORT][244] -> [INCOMPLETE][245] ([i915#12276])
[244]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-glk6/igt@kms_vblank@ts-continuation-dpms-suspend.html
[245]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-glk1/igt@kms_vblank@ts-continuation-dpms-suspend.html
* igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all:
- shard-rkl: [SKIP][246] ([i915#14544] / [i915#9917]) -> [SKIP][247] ([i915#9917])
[246]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17579/shard-rkl-6/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html
[247]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_157945v1/shard-rkl-5/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html
[i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
[i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
[i915#10656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10656
[i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
[i915#11151]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11151
[i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
[i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
[i915#12247]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12247
[i915#12276]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12276
[i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
[i915#12339]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12339
[i915#12358]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12358
[i915#12388]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12388
[i915#12745]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12745
[i915#12796]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12796
[i915#13026]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13026
[i915#13049]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13049
[i915#13356]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13356
[i915#13476]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13476
[i915#13566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13566
[i915#13729]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13729
[i915#13749]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13749
[i915#13781]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13781
[i915#13820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13820
[i915#13821]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13821
[i915#13958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13958
[i915#14098]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14098
[i915#14152]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14152
[i915#14412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14412
[i915#14544]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14544
[i915#14694]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14694
[i915#14712]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14712
[i915#15073]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15073
[i915#15102]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15102
[i915#15232]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15232
[i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
[i915#1839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1839
[i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437
[i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
[i915#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587
[i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
[i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
[i915#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#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
[i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
[i915#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299
[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#3742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3742
[i915#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804
[i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
[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#4816]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4816
[i915#4817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4817
[i915#4839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4839
[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#5723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5723
[i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
[i915#6113]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6113
[i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301
[i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
[i915#6590]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6590
[i915#6880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6880
[i915#6944]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6944
[i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118
[i915#7173]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7173
[i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
[i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
[i915#7882]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7882
[i915#7975]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7975
[i915#7984]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7984
[i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
[i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
[i915#8430]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8430
[i915#9067]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9067
[i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
[i915#9412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9412
[i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424
[i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683
[i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685
[i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
[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_17579 -> Patchwork_157945v1
CI-20190529: 20190529
CI_DRM_17579: ed157ca0caebebe3af6d38ca0fb64a403c84ce77 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8636: 254cd102396ff95d61f2ebe49fc09128878bf483 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_157945v1: ed157ca0caebebe3af6d38ca0fb64a403c84ce77 @ 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_157945v1/index.html
[-- Attachment #2: Type: text/html, Size: 85548 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 2/2] drm/i915/xe3p_lpd: Enable display use of system cache for FBC
2025-11-24 16:25 ` Jani Nikula
@ 2025-11-25 8:56 ` Govindapillai, Vinod
2025-11-25 9:21 ` Jani Nikula
0 siblings, 1 reply; 12+ messages in thread
From: Govindapillai, Vinod @ 2025-11-25 8:56 UTC (permalink / raw)
To: intel-xe@lists.freedesktop.org, Nikula, Jani,
intel-gfx@lists.freedesktop.org
Cc: Sousa, Gustavo, Roper, Matthew D, Syrjala, Ville
On Mon, 2025-11-24 at 18:25 +0200, Jani Nikula wrote:
> On Sun, 23 Nov 2025, Vinod Govindapillai
> <vinod.govindapillai@intel.com> wrote:
> > One of the FBC instances can utilize the reserved area of SoC
> > level cache for the fbc transactions to benefit reduced memory
> > system power especially in idle scenarios. Reserved area of the
> > system cache can be assigned to an fbc instance by configuring
> > the cacheability configuration register with offset of the
> > compressed frame buffer in stolen memoty of that fbc. There is
> > a limit to this reserved area which is programmable and for
> > xe3p_lpd the limit is defined as 2MB.
> >
> > v2: - better to track fbc sys cache usage from intel_display level,
> > sanitize the cacheability config register on probe (Matt)
> > - limit this for integrated graphics solutions, confirmed that
> > no default value set for cache range by hw (Gustavo)
> >
> > v3: - changes related to the use of fbc substruct in intel_display
> > - use intel_de_write() instead of intel_rmw() by hardcoding the
> > default value fields
>
> Overall issue: The fbc mutexes are per fbc instance, but nothing
> protects display->fbc.sys_cache_id.
The places where this sys_cache_id can be changed to a valid fbc
instance id + fbc cfb offset are protected by the fbc mutex as part of
intel_fbc_enable and intel_fbc_disable. That's is what I was mentioning
in my prev reply. And the places where this sys cache usage register
reset happens is outside the fbc context - where sanitize and remove
module gets called. I don't see a need to update the fbc.sys_cache_id
from anywhere else.
BR
Vinod
>
> BR,
> Jani.
>
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 2/2] drm/i915/xe3p_lpd: Enable display use of system cache for FBC
2025-11-25 8:56 ` Govindapillai, Vinod
@ 2025-11-25 9:21 ` Jani Nikula
0 siblings, 0 replies; 12+ messages in thread
From: Jani Nikula @ 2025-11-25 9:21 UTC (permalink / raw)
To: Govindapillai, Vinod, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org
Cc: Sousa, Gustavo, Roper, Matthew D, Syrjala, Ville
On Tue, 25 Nov 2025, "Govindapillai, Vinod" <vinod.govindapillai@intel.com> wrote:
> On Mon, 2025-11-24 at 18:25 +0200, Jani Nikula wrote:
>> On Sun, 23 Nov 2025, Vinod Govindapillai
>> <vinod.govindapillai@intel.com> wrote:
>> > One of the FBC instances can utilize the reserved area of SoC
>> > level cache for the fbc transactions to benefit reduced memory
>> > system power especially in idle scenarios. Reserved area of the
>> > system cache can be assigned to an fbc instance by configuring
>> > the cacheability configuration register with offset of the
>> > compressed frame buffer in stolen memoty of that fbc. There is
>> > a limit to this reserved area which is programmable and for
>> > xe3p_lpd the limit is defined as 2MB.
>> >
>> > v2: - better to track fbc sys cache usage from intel_display level,
>> > sanitize the cacheability config register on probe (Matt)
>> > - limit this for integrated graphics solutions, confirmed that
>> > no default value set for cache range by hw (Gustavo)
>> >
>> > v3: - changes related to the use of fbc substruct in intel_display
>> > - use intel_de_write() instead of intel_rmw() by hardcoding the
>> > default value fields
>>
>> Overall issue: The fbc mutexes are per fbc instance, but nothing
>> protects display->fbc.sys_cache_id.
>
> The places where this sys_cache_id can be changed to a valid fbc
> instance id + fbc cfb offset are protected by the fbc mutex as part of
> intel_fbc_enable and intel_fbc_disable. That's is what I was mentioning
> in my prev reply. And the places where this sys cache usage register
> reset happens is outside the fbc context - where sanitize and remove
> module gets called. I don't see a need to update the fbc.sys_cache_id
> from anywhere else.
That's not the point. Each FBC instance has its own mutex. Two FBC
instance mutexes could be held at the same time. I don't think this is
the case during enable/disable, though. But the point remains, the
instance mutex can't protect something that's not part of the instance.
BR,
Jani.
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2025-11-25 9:21 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-23 16:01 [PATCH v3 0/2] drm/i915/display: Enable system cache support for FBC Vinod Govindapillai
2025-11-23 16:01 ` [PATCH v3 1/2] drm/i915/display: Use a sub-struct for fbc operations in intel_display Vinod Govindapillai
2025-11-24 10:54 ` Jani Nikula
2025-11-23 16:01 ` [PATCH v3 2/2] drm/i915/xe3p_lpd: Enable display use of system cache for FBC Vinod Govindapillai
2025-11-24 11:27 ` Jani Nikula
2025-11-24 13:32 ` Govindapillai, Vinod
2025-11-24 16:23 ` Jani Nikula
2025-11-24 16:25 ` Jani Nikula
2025-11-25 8:56 ` Govindapillai, Vinod
2025-11-25 9:21 ` Jani Nikula
2025-11-24 22:55 ` ✓ i915.CI.BAT: success for drm/i915/display: Enable system cache support " Patchwork
2025-11-25 3:21 ` ✗ 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;
as well as URLs for NNTP newsgroup(s).